diff --git a/F2.latest.js b/F2.latest.js index 4e29d088..b190be95 100644 --- a/F2.latest.js +++ b/F2.latest.js @@ -1,24 +1,24 @@ -/*! F2 - v1.4.0 - 10-09-2014 - See below for copyright and license */ +/*! F2 - v1.4.0 - 12-12-2014 - See below for copyright and license */ !function(exports){if(!exports.F2||exports.F2_TESTING_MODE){/*! - JSON.org requires the following notice to accompany json2: + JSON.org requires the following notice to accompany json2: - Copyright (c) 2002 JSON.org + Copyright (c) 2002 JSON.org - http://json.org + http://json.org - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - The Software shall be used for Good, not Evil. + The Software shall be used for Good, not Evil. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. -*/ + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + */ "object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(a){return 10>a?"0"+a:a}function quote(a){return escapable.lastIndex=0,escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return"string"==typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function str(a,b){var c,d,e,f,g,h=gap,i=b[a];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(a)),"function"==typeof rep&&(i=rep.call(b,a,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,g=[],"[object Array]"===Object.prototype.toString.apply(i)){for(f=i.length,c=0;f>c;c+=1)g[c]=str(c,i)||"null";return e=0===g.length?"[]":gap?"[\n"+gap+g.join(",\n"+gap)+"\n"+h+"]":"["+g.join(",")+"]",gap=h,e}if(rep&&"object"==typeof rep)for(f=rep.length,c=0;f>c;c+=1)"string"==typeof rep[c]&&(d=rep[c],e=str(d,i),e&&g.push(quote(d)+(gap?": ":":")+e));else for(d in i)Object.prototype.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&g.push(quote(d)+(gap?": ":":")+e));return e=0===g.length?"{}":gap?"{\n"+gap+g.join(",\n"+gap)+"\n"+h+"}":"{"+g.join(",")+"}",gap=h,e}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;"function"!=typeof JSON.stringify&&(JSON.stringify=function(a,b,c){var d;if(gap="",indent="","number"==typeof c)for(d=0;c>d;d+=1)indent+=" ";else"string"==typeof c&&(indent=c);if(rep=b,b&&"function"!=typeof b&&("object"!=typeof b||"number"!=typeof b.length))throw new Error("JSON.stringify");return str("",{"":a})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&"object"==typeof e)for(c in e)Object.prototype.hasOwnProperty.call(e,c)&&(d=walk(e,c),void 0!==d?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;if(text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}(),/*! * jQuery JavaScript Library v1.11.1 * http://jquery.com/ @@ -33,22 +33,22 @@ * Date: 2014-05-01T17:42Z */ function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function c(a){var b=a.length,c=eb.type(a);return"function"===c||eb.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}function d(a,b,c){if(eb.isFunction(b))return eb.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return eb.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(mb.test(b))return eb.filter(b,a,c);b=eb.filter(b,a)}return eb.grep(a,function(a){return eb.inArray(a,b)>=0!==c})}function e(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function f(a){var b=ub[a]={};return eb.each(a.match(tb)||[],function(a,c){b[c]=!0}),b}function g(){ob.addEventListener?(ob.removeEventListener("DOMContentLoaded",h,!1),a.removeEventListener("load",h,!1)):(ob.detachEvent("onreadystatechange",h),a.detachEvent("onload",h))}function h(){(ob.addEventListener||"load"===event.type||"complete"===ob.readyState)&&(g(),eb.ready())}function i(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(zb,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:yb.test(c)?eb.parseJSON(c):c}catch(e){}eb.data(a,b,c)}else c=void 0}return c}function j(a){var b;for(b in a)if(("data"!==b||!eb.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function k(a,b,c,d){if(eb.acceptData(a)){var e,f,g=eb.expando,h=a.nodeType,i=h?eb.cache:a,j=h?a[g]:a[g]&&g;if(j&&i[j]&&(d||i[j].data)||void 0!==c||"string"!=typeof b)return j||(j=h?a[g]=W.pop()||eb.guid++:g),i[j]||(i[j]=h?{}:{toJSON:eb.noop}),("object"==typeof b||"function"==typeof b)&&(d?i[j]=eb.extend(i[j],b):i[j].data=eb.extend(i[j].data,b)),f=i[j],d||(f.data||(f.data={}),f=f.data),void 0!==c&&(f[eb.camelCase(b)]=c),"string"==typeof b?(e=f[b],null==e&&(e=f[eb.camelCase(b)])):e=f,e}}function l(a,b,c){if(eb.acceptData(a)){var d,e,f=a.nodeType,g=f?eb.cache:a,h=f?a[eb.expando]:eb.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){eb.isArray(b)?b=b.concat(eb.map(b,eb.camelCase)):b in d?b=[b]:(b=eb.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;for(;e--;)delete d[b[e]];if(c?!j(d):!eb.isEmptyObject(d))return}(c||(delete g[h].data,j(g[h])))&&(f?eb.cleanData([a],!0):cb.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}function m(){return!0}function n(){return!1}function o(){try{return ob.activeElement}catch(a){}}function p(a){var b=Kb.split("|"),c=a.createDocumentFragment();if(c.createElement)for(;b.length;)c.createElement(b.pop());return c}function q(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==xb?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==xb?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||eb.nodeName(d,b)?f.push(d):eb.merge(f,q(d,b));return void 0===b||b&&eb.nodeName(a,b)?eb.merge([a],f):f}function r(a){Eb.test(a.type)&&(a.defaultChecked=a.checked)}function s(a,b){return eb.nodeName(a,"table")&&eb.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function t(a){return a.type=(null!==eb.find.attr(a,"type"))+"/"+a.type,a}function u(a){var b=Vb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function v(a,b){for(var c,d=0;null!=(c=a[d]);d++)eb._data(c,"globalEval",!b||eb._data(b[d],"globalEval"))}function w(a,b){if(1===b.nodeType&&eb.hasData(a)){var c,d,e,f=eb._data(a),g=eb._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)eb.event.add(b,c,h[c][d])}g.data&&(g.data=eb.extend({},g.data))}}function x(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!cb.noCloneEvent&&b[eb.expando]){e=eb._data(b);for(d in e.events)eb.removeEvent(b,d,e.handle);b.removeAttribute(eb.expando)}"script"===c&&b.text!==a.text?(t(b).text=a.text,u(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),cb.html5Clone&&a.innerHTML&&!eb.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Eb.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}function y(b,c){var d,e=eb(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:eb.css(e[0],"display");return e.detach(),f}function z(a){var b=ob,c=_b[a];return c||(c=y(a,b),"none"!==c&&c||($b=($b||eb(" - -

In getting to this point, you've only scratched the surface of F2 containers and apps. Continue reading and understanding the F2 spec to build exactly the financial solutions that our customers want.

- -
-

Sample Apps and Container

-

Good news! In the project repo on GitHub, you will find a basic container along with a number of sample apps which demonstrate functionality far beyond the basic app above. Once you clone or download the project repository, open the sample container by pointing your browser at:

-

http://localhost/F2/examples/

-

These examples are also available in a separate archive if you don't want to download the entire repository.

-

-Download F2 Examples -

- -
-
-

Configuration

-

It is assumed you will be developing F2 apps locally and have a localhost setup. The URLs mentioned in this specification also assume you have configured your F2 apps to run at http://localhost/F2/. The examples provided as part of the project repository demonstrate apps written in different languages (PHP, JavaScript, C#). While it is not a requirement you have a web server configured on your computer, it will certainly allow you to more deeply explore the sample apps.

-

To better understand F2 and the role of apps, you need to understand the role of the container. If you haven’t already, read more about containers in the Framework.

-

To get started working with or developing containers, browse to the documentation for developing the container.

-

Ready to start coding?

-

-Developing F2 Apps F2.js SDK Reference -

- -
-
- -
-

App Design

-

Design considerations are an important first step when creating a new app. Content can range from news to research to multimedia, and content should be presented using Progressive Enhancement, Mobile First and Responsive Design methodologies. That is to say multimedia content, for example, should be shown plugin-free (using HTML5 video or audio elements) for capable browsers and fallback to Flash-based players for browsers that do not yet support HTML5 related technologies. (VideoJS is good example of open-source JavaScript and CSS "that makes it easier to work with and build on HTML5 video, today.")

-

If App Developers embed URLs back to their own websites or to third party sites, URLs must be opened in a new window as to not interrupt the experience of someone using the container. If authentication is required on an App Developer's site, this can be accomplished with pass-through authentication using encrypted URLs as discussed in Single Sign On.

-
-

Choices

-

In order to ensure that apps built using F2 are successful, they must be accessible. As such, F2 made choices for which open-source libraries and frameworks would be leveraged to reduce the level of effort across F2 adopters.

-

Read more about those choices in the Framework.

-

Ultimately, the responsibility of app design falls on either the Container or App Developer. In many cases, Container Developers will provide App Developers will visual designs, style guides or other assets required to ensure apps have the form and function for a given container. Container Developers may also provide CSS for App Developers to adhere to—which should be easy since F2 enforces a consistent HTML structure across all containers and apps.

-
-
-
-
-

Developing F2 Apps

-

Let's take a close look at how to build an F2 app. We'll explain how to get an F2 AppID, what the AppManifest is all about, what output format your app needs to support, how the contents of the AppContent.html property work, and the two hooks for adding form and function to your app: scripts and styles.

-

Before opening your editor, read the configuration assumptions.

-
-

F2 AppID

-

To develop an F2 app, you need a unique identifier called an AppID. This AppID will be unique to your app across the entire open financial framework ecosystem. The format of the AppID looks like this: com_companyName_appName, where the companyName "namespace" is your company name and appName is the name of your app.

-

As an example, your AppID could look like this:

-

com_acmecorp_watchlist

-

If you built more than one app while working at Acme Corporation, you could create more AppIDs. All of these are valid:

- -

To guarantee uniqueness, we have provided an AppID generation service that allows you to customize your AppID.

-

Get Your F2 AppID Now »

-
-
-

Setting Up Your Project

-

Once you have your AppID, start by setting up your project. You will need at least one file: the App Manifest. Create a new file called manifest.js. Also, chances are you'll want custom styling and functionality, so go ahead and create appclass.js (for your app logic) and app.css for your CSS. Your project folder should look like this:

-
-
-
-

Helper Download the F2 examples or read about setting up a basic container and app in Getting Started.

-
-
-

App Manifest

-

For an app to be considered F2-capable, it must first have this basic structure—called the App Manifest—represented in JSON:

+ }); +

Note For more information about the + AppConfig, read up on them + in Container Development: App Integration.

+
+
+

Testing the Basics

+ +

Now with a basic container and a basic app, combine these two for a working example. Press + Result in this jsfiddle.

+ + +

In getting to this point, you've only scratched the surface of F2 containers and apps. + Continue reading and understanding the F2 spec to build exactly the financial solutions that + our customers want.

+
+
+

Sample Apps and Container

+ +

Good news! In the project repo + on GitHub, you will find a basic container along with a number of sample apps which + demonstrate functionality far beyond the basic app above. Once you clone or download the + project repository, open the sample container by pointing your browser at:

+ +

http://localhost/F2/examples/

+ +

These examples are also available in a separate archive if you don't want to download the + entire repository.

+ +

+ Download + F2 Examples +

+ +
+
+

Configuration

+ +

It is assumed you will be developing F2 apps locally and have a localhost setup. + The URLs mentioned in this specification also assume you have configured your F2 apps to run + at http://localhost/F2/. The examples provided as part of the project + repository demonstrate apps written in different languages (PHP, JavaScript, C#). While it + is not a requirement you have a web server configured on your computer, it will certainly + allow you to more deeply explore the sample apps.

+ +

To better understand F2 and the role of apps, you need to understand the role of the + container. If you haven’t already, read more about containers + in the Framework.

+ +

To get started working with or developing containers, browse to the documentation for developing the container.

+ +

Ready to start coding?

+ +

+ Developing F2 Apps F2.js SDK Reference +

+ +
+
+
+
+

App Design

+ +

Design considerations are an important first step when creating a new app. Content can range from + news to research to multimedia, and content should be presented using Progressive + Enhancement, Mobile First and Responsive Design + methodologies. That is to say multimedia content, for example, should be shown plugin-free + (using HTML5 video or audio elements) for capable browsers and fallback to Flash-based players + for browsers that do not yet support HTML5 related technologies. (VideoJS + is good example of open-source JavaScript and CSS "that makes it easier to work with and + build on HTML5 video, today.")

+ +

If App Developers embed URLs back to their own websites or to third party sites, URLs must be + opened in a new window as to not interrupt the experience of someone using the container. If + authentication is required on an App Developer's site, this can be accomplished with + pass-through authentication using encrypted URLs as discussed in Single + Sign On.

+
+

Choices

+ +

In order to ensure that apps built using F2 are successful, they must be accessible. As such, + F2 made choices for which open-source libraries and frameworks would be leveraged to reduce + the level of effort across F2 adopters.

+ +

Read more about those choices in the Framework.

+ +

Ultimately, the responsibility of app design falls on either the Container or App Developer. + In many cases, Container Developers will provide App Developers will visual designs, style + guides or other assets required to ensure apps have the form and function for a given + container. Container Developers may also provide CSS for App Developers + to adhere to—which should be easy since F2 enforces a consistent HTML structure across + all containers and apps.

+
+
+
+
+

Developing F2 Apps

+ +

Let's take a close look at how to build an F2 app. We'll explain how to get an F2 AppID, what the + AppManifest is all about, what output format your app needs to support, how the + contents of the AppContent.html property work, and the two hooks for adding form + and function to your app: scripts and styles.

+ +

Before opening your editor, read the configuration assumptions.

+
+

F2 AppID

+ +

To develop an F2 app, you need a unique identifier called an AppID. This + AppID will be unique to your app across the entire open financial framework + ecosystem. The format of the AppID looks like this: com_companyName_appName, + where the companyName "namespace" is your company name and appName + is the name of your app.

+ +

As an example, your AppID could look like this:

+ +

com_acmecorp_watchlist

+ +

If you built more than one app while working at Acme Corporation, you could create more + AppIDs. All of these are valid:

+ +

To guarantee uniqueness, we have provided an AppID generation service that allows you to + customize your AppID.

+ +

Get Your F2 AppID Now + »

+
+
+

Setting Up Your Project

+ +

Once you have your AppID, start by setting up your project. You will need at least one file: + the App Manifest. Create a new file called manifest.js. Also, + chances are you'll want custom styling and functionality, so go ahead and create appclass.js + (for your app logic) and app.css for your CSS. Your project folder should look + like this:

+
+ +
+
+

Helper Download + the F2 examples or read about setting up a basic container and + app in Getting Started.

+
+
+

App Manifest

+ +

For an app to be considered F2-capable, it must first have this basic structure—called the + App Manifest—represented in JSON:

{
-    "inlineScripts":[],  
-    "scripts":[],    
-    "styles":[],     
+    "inlineScripts":[],
+    "scripts":[],
+    "styles":[],
     "apps":[{
-            "data":{},
-            "html":"",
-            "status":""
+    "data":{},
+    "html":"",
+    "status":""
     }]
-}
-

The App Manifest can be generated by the server-side code of your choice or be written-by-hand in your favorite text editor. In the GitHub repository, there are apps written in JavaScript, PHP, and C# to serve as examples to get you started.

-

When it's complete (using the examples further below), the App Manifest looks like this:

+ } +

The App Manifest can be generated by the + server-side code of your choice or be written-by-hand in your favorite text editor. In the + GitHub repository, there are apps written in + JavaScript, PHP, and C# to serve as examples to get you started.

+ +

When it's complete (using the examples further below), the App Manifest looks like this:

F2_jsonpCallback_com_companyname_appname({
     "inlineScripts":["(function(){ var foo = bar; doSomething(); })()"],
     "scripts":[
-        "http://www.domain.com/js/appclass.js"
-    ],   
+    "http://www.domain.com/js/appclass.js"
+    ],
     "styles":[
-        "http://www.domain.com/css/app.css"
-    ],   
+    "http://www.domain.com/css/app.css"
+    ],
     "apps":[{
-            "data":{ 
-                foo: "bar",
-                value: 12345
-            },
-            "html":"<div class=\"sunrise\">Hello world.</div>",
-            "status":"good"
+    "data":{
+    foo: "bar",
+    value: 12345
+    },
+    "html":"<div class=\"sunrise\">Hello world.</div>",
+    "status":"good"
     }]
-})
-

Let's break the App Manifest object down and look at each property (in reverse order to keep it fun).

-

Note The AppID created in the Developer Center and specified in the AppManifest will get automatically lowercased by F2 when integrated on a container.

-
-
-

Apps

-

The apps property is an array of AppContent objects. Each AppContent object contains three properties:

-
    -
  1. html
  2. -
  3. data
  4. -
  5. status
  6. -
-
-

html

-

The html property contains the view of your app represented in (optionally encoded) HTML. While you can modify the way your app appears or functions within the container, the html property is what the container will show when it registers your app and displays its contents for the first time.

-

Example:

-
"html": "<div class=\"sunrise\">Hello world.</div>"
-

The optionally encoded version of the html example above is:

-
"html": "%3Cdiv%20class%3D%22sunrise%22%3EHello%20world.%3C%2Fdiv%3E"
-
-
-

data

-

The data property exists to support the placement of arbitrary data needing to be passed along with the app. This field is optional.

-

Example:

-
"data": { 
+    })
+

Let's break the App Manifest object down and look at each property (in reverse order to keep + it fun).

+ +

Note The AppID created in the Developer + Center and specified in the AppManifest will get automatically lowercased + by F2 when integrated on a + container.

+
+
+

Apps

+ +

The apps property is an array of AppContent objects. Each AppContent + object contains three properties:

+
    +
  1. html
  2. +
  3. data
  4. +
  5. status
  6. +
+
+

html

+ +

The html property contains the view of your app represented in (optionally + encoded) HTML. While you can modify the way your app appears or functions within the + container, the html property is what the container will show when it registers your app and + displays its contents for the first time.

+ +

Example:

+
"html":
+                                "<div class=\"sunrise\">Hello world.</div>"
+

The optionally encoded version of the html example above is:

+
"html":
+                                "%3Cdiv%20class%3D%22sunrise%22%3EHello%20world.%3C%2Fdiv%3E"
+
+
+

data

+ +

The data property exists to support the placement of arbitrary data needing + to be passed along with the app. This field is optional.

+ +

Example:

+
"data": {
     foo: "bar",
     value: 12345
-}
-
-
-

status

-

The status property allows app developers to communicate a server-side arbitrary status code to itself or to the container. This field is optional.

-

Example:

-
"status": "good"
-
-
-
-

Styles

-

The styles property is an array of URLs. The styles array refers to any CSS files needed by the app so it will be displayed properly on the container. The externally-referenced CSS files should be fully-qualified, including a protocol.

-

Example:

+ } +
+
+

status

+ +

The status property allows app developers to communicate a server-side + arbitrary status code to itself or to the container. This field is optional. +

+ +

Example:

+
"status":
+                                "good"
+
+
+
+

Styles

+ +

The styles property is an array of URLs. The styles array refers to + any CSS files needed by the app so it will be displayed properly on the container. The + externally-referenced CSS files should be fully-qualified, including a protocol.

+ +

Example:

"styles": [
     "http://www.domain.com/css/app.css"
-]
-

In the case when multiple stylesheetes are needed, simply add to the array as shown in this example:

+ ] +

In the case when multiple stylesheetes are needed, simply add to the array as shown in this + example:

"styles": [
     "http://www.domain.com/css/app.css",
     "http://www.domain.com/css/app-responsive.css"
-]
-

Read more about CSS and namespacing inside your app.

-

Note URLs referenced in the Scripts and Styles arrays are loaded synchronously by F2.js, so be sure to order your scripts properly.

-
-
-

Scripts

-

The scripts property is an array of URLs. The scripts array refers to any JavaScript files needed by the app so that it will function correctly on the container. The externally-referenced JS files should be fully-qualified.

-

Example:

+ ] +

Read more about CSS and namespacing inside your app.

+ +

Note URLs referenced in the Scripts and Styles arrays + are loaded synchronously by F2.js, so be sure to order your scripts properly.

+
+
+

Scripts

+ +

The scripts property is an array of URLs. The scripts array refers + to any JavaScript files needed by the app so that it will function correctly on the + container. The externally-referenced JS files should be fully-qualified.

+ +

Example:

"scripts": [
     "http://www.domain.com/js/appclass.js"
-]
-

In the case when multiple scripts are needed, simply add to the array as shown in this example:

+ ] +

In the case when multiple scripts are needed, simply add to the array as shown in this + example:

"scripts": [
     "http://www.domain.com/js/lib.js",
     "http://www.domain.com/js/appclass.js"
-]
-

Read more about JavaScript and namespacing inside your app.

-

Note URLs referenced in the Scripts and Styles arrays are loaded synchronously by F2.js, so be sure to order your scripts properly.

-
-
-

Inline Scripts

-

The inlineScripts property is an array of strings. The inlineScripts array can include any JavaScript code needed by the app that cannot be included in your App Class. The contents of the inlineScripts array will be evaluated as JavaScript (using eval()) when all scripts have finished loading.

-

Example:

-
"inlineScripts": [
+    ]
+

Read more about JavaScript and namespacing inside your app.

+ +

Note URLs referenced in the Scripts and Styles arrays + are loaded synchronously by F2.js, so be sure to order your scripts properly.

+
+
+

Inline Scripts

+ +

The inlineScripts property is an array of strings. The + inlineScripts array can include any JavaScript code needed by the app that cannot + be included in your App Class. The contents of the inlineScripts + array will be evaluated as JavaScript (using eval()) when all + scripts have finished loading.

+ +

Example:

+
"inlineScripts":
+    [
     "(function(){ var foo = bar; doSomething(); })()"
-]
-
-

-About Inline Scripts -

-

-While the use of inlineScripts is supported by F2's App Manifest, it is not recommended for use. There are many reasons for this, the main one is to avoid cluttering the global namespace. Developers should make every attempt to put their JavaScript code inside their App Class. -

-
+ ] +
+

+ About Inline Scripts +

-

Read more about JavaScript and namespacing inside your app.

-

Note URLs referenced in the Scripts and Styles arrays are loaded synchronously by F2.js, so be sure to order your scripts properly.

-
-
-

Sample App Manifest

-

If we use the examples above, our AppManifest would look like this:

+

+ While the use of inlineScripts is supported by F2's App Manifest, it is not + recommended for use. There are many reasons for this, the main one is to avoid + cluttering the global namespace. Developers should make every attempt to put their + JavaScript code inside their App Class. +

+ + +

Read more about JavaScript and namespacing inside your app.

+ +

Note URLs referenced in the Scripts and Styles arrays + are loaded synchronously by F2.js, so be sure to order your scripts properly.

+
+
+

Sample App Manifest

+ +

If we use the examples above, our AppManifest would look like this:

F2_jsonpCallback_com_companyname_appname({
     "inlineScripts":["(function(){ var foo = bar; doSomething(); })()"],
     "scripts":[
-        "http://www.domain.com/js/appclass.js"
-    ],   
+    "http://www.domain.com/js/appclass.js"
+    ],
     "styles":[
-        "http://www.domain.com/css/app.css"
-    ],   
+    "http://www.domain.com/css/app.css"
+    ],
     "apps":[{
-            "data":{ 
-                foo: "bar",
-                value: 12345
-            },
-            "html":"<div class=\"sunrise\">Hello world.</div>",
-            "status":"good"
+    "data":{
+    foo: "bar",
+    value: 12345
+    },
+    "html":"<div class=\"sunrise\">Hello world.</div>",
+    "status":"good"
     }]
-})
-

Note You may have noticed the presence of the function name F2_jsonpCallback_com_companyname_appname on the first line of the example above. That function name is the callback and is explained in App Manifest Response.

-
-
-

App Manifest Response

-

OK, so you know about F2 apps and you're ready to write your own App Manifest. To go from zero to something, download the F2 examples. Once you have your AppManifest defined (or at least stubbed out), there's one important detail you need to know now—the App Manifest response format.

-

As part of F2, containers register apps—typically hosted on different domains—using JSONP. This means F2 App Manifest files must provide a JSONP callback function. (If you don't know what JSONP is or how it works, we recommend reading what Remy Sharp has to say about it.)

-

For security reasons, the App Manifest JSONP callback function must be a specific, reliable, and testable format. F2 has defined that using a combination of a string and your unique F2 AppID. The JSONP callback function name looks like this:

-

F2_jsonpCallback_<AppID>

-

When applied, the final (bare bones) App Manifest file looks like this example (where com_companyname_appname is your AppID):

+ }) +

Note You may have noticed the presence of the function + name F2_jsonpCallback_com_companyname_appname on the first line of the example + above. That function name is the callback and is explained in App Manifest Response.

+
+
+

App Manifest Response

+ +

OK, so you know about F2 apps and you're ready to write your own App Manifest. To go from + zero to something, download the F2 + examples. Once you have your AppManifest defined (or at least stubbed + out), there's one important detail you need to know now—the App Manifest response format. +

+ +

As part of F2, containers register apps—typically hosted on different domains—using JSONP. + This means F2 App Manifest files must provide a JSONP callback function. + (If you don't know what JSONP is or how it works, we recommend reading what Remy Sharp has to + say about it.)

+ +

For security reasons, the App Manifest JSONP callback function must be a specific, reliable, + and testable format. F2 has defined that using a combination of a string and your unique F2 + AppID. The JSONP callback function name looks like this:

+ +

F2_jsonpCallback_<AppID>

+ +

When applied, the final (bare bones) App Manifest file looks like this example (where com_companyname_appname + is your AppID):

//manifest.js
-F2_jsonpCallback_com_companyname_appname({
+    F2_jsonpCallback_com_companyname_appname({
     "scripts":[
-        "http://www.domain.com/js/appclass.js"
-    ],   
+    "http://www.domain.com/js/appclass.js"
+    ],
     "styles":[
-        "http://www.domain.com/css/app.css"
-    ],   
+    "http://www.domain.com/css/app.css"
+    ],
     "apps":[{
-            "html":"<div class=\"sunrise\">Hello world.</div>"
+    "html":"<div class=\"sunrise\">Hello world.</div>"
     }]
-})
-

Note The JSONP callback function name will not be passed from the container using a traditional querystring parameter (HTTP GET), so you must configure this correctly for your app to appear on a container. This means you have to hard-code it in your AppManifest.

-

Note The AppID created in the Developer Center will get automatically lowercased by F2 when integrated on a container.

-
-
-

App HTML

-

While it isn't required, it's expected every F2 app has HTML. The only catch is that the HTML isn't provided by the app itself but rather passed to the container via the app's AppManifest. Here are the steps for getting your app HTML into your AppContent.html property:

-
    -
  1. Develop the web page or module or widget or component or portlet that will be your app.
  2. -
  3. Take all the contents of it—that is, the HTML—and encode it. (This step is optional.)
  4. -
  5. Put the (optionally encoded) result in the html property of your AppContent object within your App Manifest file's App object.
  6. -
-

Wait, what? Check out this example below or browse to example apps on GitHub:

-

Step 1.

-
<div class="sunrise">Hello world.</div>
-

Step 2. Encoded HTML. (Optional)

-
%3Cdiv%20class%3D%22sunrise%22%3EHello%20world.%3C%2Fdiv%3E
-

Step 3. App Manifest file.

+ }) +

Note The JSONP callback function name will not + be passed from the container using a traditional querystring parameter (HTTP GET), so you + must configure this correctly for your app to appear on a container. This means you have to + hard-code it in your AppManifest.

+ +

Note The AppID created in the Developer + Center will get automatically lowercased by F2 when integrated on a container.

+
+
+

App HTML

+ +

While it isn't required, it's expected every F2 app has HTML. The only catch is that the HTML + isn't provided by the app itself but rather passed to the container via the app's AppManifest. + Here are the steps for getting your app HTML into your AppContent.html + property:

+
    +
  1. Develop the web page or module or widget or component or portlet that will be your + app. +
  2. +
  3. Take all the contents of it—that is, the HTML—and encode it. (This step is + optional.)
  4. +
  5. Put the (optionally encoded) result in the html property of your AppContent + object within your App Manifest file's App object. +
  6. +
+

Wait, what? Check out this example below or browse to example apps on + GitHub:

+ +

Step 1.

+
<div class="sunrise">Hello
+                            world.</div>
+

Step 2. Encoded HTML. (Optional)

+
%3Cdiv%20class%3D%22sunrise%22%3EHello%20world.%3C%2Fdiv%3E
+

Step 3. App Manifest file.

{
     ...
     "apps":[{
-        "html": "<div class=\"sunrise\">Hello world.</div>"
-        ...
+    "html": "<div class=\"sunrise\">Hello world.</div>"
+    ...
     }]
-}
-

Note You are not required to encode the app HTML, so follow steps 2 and 3 above omitting the encoding step.

-
-

Automatic Consistency

-

F2 uses and recommends Bootstrap for Container and App Developers to benefit from a consistent HTML and CSS structure regardless of who developed the F2 component. This way, Container Developers can write CSS they know will style F2 apps without engaging with the app developer to ensure compatability.

-

This also means App Developers must adhere to Bootstrap's scaffolding guidelines as defined on their website.

-

An example two-column layout using Bootstrap-specifed markup:

-
<div class="row">
-  <div class="span4">...</div>
-  <div class="span8">...</div>
-</div>
-

The .span4 and .span8 provide two columns in the 12-column grid.

-

Note Read more about Creating a Common Look and Feel with F2.

-
-
-
-

Scripts & Styles

-

Once your app is on the container, chances are you'll want it to actually do something. As an app developer, it is entirely up to you to write your own stylesheets and javascript code to add form and function to your app. F2's standardized App Manifest provides hooks for your CSS and scripts to get onto the container—just use the scripts and styles arrays detailed above in the App Manifest.

-
-
-

Styles

-

Including your own CSS in the styles array of the App Manifest opens the door to the potential of unexpected display issues. Therefore, as an app developer, you are required to properly namespace your CSS selectors and declarations. For the details on writing correctly namespaced code, read the namespacing docs.

-

It is recommended you include your app styles in a file named app.css.

-
-
-

Scripts

-
-

App Class

-

While it isn't required, it's expected all F2 apps will ship with javascript. This code should be included in an appclass.js file as shown in Setting Up Your Project. The F2.Apps property is a namespace for app developers to place the javascript class that is used to initialize their app. The javascript classes should be namepaced with the F2.App.AppID. It is recommended that the code be placed in a closure to help keep the global namespace clean.

-

For more information on F2.Apps, browse over to the F2.js SDK docs.

-

To make it even easier to build F2 apps and for faster app loading by the container, the F2.js SDK provides automatic JavaScript method execution at appropriate times during F2.registerApps() (and the internal _loadApps() method). If the class has an init() function, it will be called automatically during execution of F2's registerApps() method.

-

We recommend—and have samples below for—two different patterns for writing your appclass.js code: prototypal inheritence or the module pattern.

-
-
-

Arguments

-

When F2's registerApps() method is called by the container, F2 passes three arguments to your App Class: appConfig, appContent and root. The SDK documentation details the contents of each arg and these should be familiar because appConfig contains your app's meta, appContent contains your html, data and status properties, and root is the outermost DOM element in which your app exists on the container. The root argument provides your App Class code your app's parent (root) element for faster DOM traversal.

-

Example:

+ } +

Note You are not required to encode the app HTML, so + follow steps 2 and 3 above omitting the encoding step.

+
+

Automatic Consistency

+ +

F2 uses and recommends Bootstrap for + Container and App Developers to benefit from a consistent HTML and CSS structure + regardless of who developed the F2 component. This way, Container Developers can write + CSS they know will style F2 apps without engaging with the app developer to + ensure compatability.

+ +

This also means App Developers must adhere to Bootstrap's scaffolding + guidelines as defined on their website.

+ +

An example two-column layout using Bootstrap-specifed markup:

+
<div class="row">
+    <div class="span4">...</div>
+    <div class="span8">...</div>
+    </div>
+

The .span4 and .span8 provide two columns in the 12-column + grid.

+ +

Note Read more about Creating a + Common Look and Feel with F2.

+
+
+
+

Scripts & Styles

+ +

Once your app is on the container, chances are you'll want it to actually do something. As an + app developer, it is entirely up to you to write your own stylesheets and javascript code to + add form and function to your app. F2's standardized App Manifest provides hooks for your + CSS and scripts to get onto the container—just use the scripts and + styles arrays detailed above in the App Manifest. +

+
+
+

Styles

+ +

Including your own CSS in the styles array of the App Manifest opens the door to + the potential of unexpected display issues. Therefore, as an app developer, you are required + to properly namespace your CSS selectors and declarations. For the details on writing + correctly namespaced code, read the namespacing docs.

+ +

It is recommended you include your app styles in a file named app.css.

+
+
+

Scripts

+
+

App Class

+ +

While it isn't required, it's expected all F2 apps will ship with javascript. This code + should be included in an appclass.js file as shown in Setting Up Your Project. The + F2.Apps property is a namespace for app developers to place the javascript + class that is used to initialize their app. The javascript classes should be namepaced + with the F2.App.AppID. It is recommended that the code be placed in a + closure to help keep the global namespace clean.

+ +

For more information on F2.Apps, browse + over to the F2.js SDK docs.

+ +

To make it even easier to build F2 apps and for faster app loading by the container, the + F2.js SDK provides automatic JavaScript method execution at appropriate times during + F2.registerApps() (and the internal _loadApps() method). If + the class has an init() function, it will be called automatically during + execution of F2's registerApps() method.

+ +

We recommend—and have samples below for—two different patterns for writing your appclass.js + code: prototypal inheritence or the module pattern.

+
+
+

Arguments

+ +

When F2's registerApps() method is called by the container, F2 passes three + arguments to your App Class: appConfig, appContent and root. + The SDK documentation details the contents of each arg and these should be familiar + because appConfig contains your app's meta, appContent contains your + html, data and status properties, and root is the outermost + DOM element in which your app exists on the container. The root argument + provides your App Class code your app's parent (root) element for faster DOM traversal. +

+ +

Example:

//appclass.js snippet
-...
+    ...
     var App_Class = function(appConfig, appContent, root) {
-...
-
-
-

Prototypal Inheritance Pattern

-

We won't even begin to talk about or describe this fantastic design pattern simply because Douglas Crockford has already written all about it.

-

An example of an App Class using prototypal inheritance inside a closure is below. Note the inclusion of the App_Class.prototype.init() function—which will be called automatically during app load—and the trailing parentheses, (), which are responsible for automatic function execution. Thanks to the closure, the App_Class is returned and assigned to F2.Apps["com_companyname_appname"].

-
F2.Apps["com_companyname_appname"] = (function() {
+    ...
+
+
+

Prototypal Inheritance Pattern

+ +

We won't even begin to talk about or describe this fantastic design pattern simply + because Douglas Crockford has + already written all + about it.

+ +

An example of an App Class using prototypal inheritance inside a closure is + below. Note the inclusion of the App_Class.prototype.init() function—which + will be called automatically during app load—and the trailing + parentheses, (), which are responsible for automatic function + execution. Thanks to the closure, the App_Class is returned and + assigned to F2.Apps["com_companyname_appname"].

+
F2.Apps["com_companyname_appname"] = (function() {
     var App_Class = function(appConfig, appContent, root) {
-        // constructor
+    // constructor
     }
 
     App_Class.prototype.init = function() {
-        // perform init actions
+    // perform init actions
     }
 
     return App_Class;
-})();
-
-
-

Module Pattern

-

As an alternative to the prototypal inheritance pattern above, appclass.js code could be written following the module pattern shown in the example below. Note the inclusion of an init() function—which will be called automatically during app load—and the exclusion of the closure and trailing parentheses present in the example using prototypal inheritance above.

-
F2.Apps["com_companyname_appname"] = function(appConfig, appContent, root) {
-   return {
-       init:function() {
-           // perform init actions
-       }
-   };
-};
-
-
-

Patterns, Eh

-

Of course, you don't have to use either one of these patterns in your appclass.js file. What you do have to use is a function. That is to say the value assigned to F2.Apps["com_companyname_appname"] by your App Class code must be a function. Within F2's registerApps() method, the new operator is used which produces an object and new instance of your app.

-
-
-Important! -
-

-In the absence of a function in your appclass.js, F2 will be unable to load your app on a container. -

-
+ })(); +
+
+

Module Pattern

-

If you don't want to think about any of this and would rather just start coding, download the F2 examples.

-
-
-
-
-
-

Namespacing

-

F2 is a web integration framework which means apps are inherently insecure—at least those non-secure apps. Following this spec, App Developers must avoid CSS collisions and JavaScript namespace issues to provide users with the best possible experience.

-

Note Continue reading for more specifics about secure apps.

-
-

Namespacing CSS

-

As discussed in Developing F2 Apps: F2 AppID, to develop an F2 app, you need a unique identifier called an AppID. This AppID will be unique to your app across the entire open financial framework ecosystem. The format of the AppID looks like this: com_companyName_appName, where the companyName "namespace" is your company name and appName is the name of your app.

-

When Container Developers register apps, F2.js draws each app as defined by the ContainerConfig. Before the app is added to the container DOM, F2 automatically wraps an outer HTML element—with the AppID used as a class—around the rendered app.

-

This example shows app HTML after it has been drawn on the container. Note the com_companyName_appName classname.

-
<div class="f2-app-container com_companyName_appName">
+                            

As an alternative to the prototypal inheritance pattern above, appclass.js + code could be written following the module pattern shown in the example below. Note the + inclusion of an init() function—which will be called automatically during + app load—and the exclusion of the closure and trailing parentheses present in + the example using prototypal inheritance above.

+
F2.Apps["com_companyname_appname"] = function(appConfig, appContent, root) {
+    return {
+    init:function() {
+    // perform init actions
+    }
+    };
+    };
+
+
+

Patterns, Eh

+ +

Of course, you don't have to use either one of these patterns in your + appclass.js file. What you do have to use is a + function. That is to say the value assigned to F2.Apps["com_companyname_appname"] + by your App Class code must be a function. Within F2's + registerApps() method, the new operator is used which produces + an object and new instance of your app.

+ +
+
+ Important! +
+ +

+ In the absence of a function in your appclass.js, F2 will be unable to + load your app on a container. +

+
+ +

If you don't want to think about any of this and would rather just start coding, download the F2 examples.

+
+
+
+
+
+

Namespacing

+ +

F2 is a web integration framework which means apps are inherently insecure—at least + those non-secure apps. Following this spec, App Developers must avoid CSS collisions + and JavaScript namespace issues to provide users with the best possible experience.

+ +

Note Continue reading for more specifics about + secure apps.

+
+

Namespacing CSS

+ +

As discussed in Developing F2 Apps: F2 AppID, to develop an F2 app, + you need a unique identifier called an AppID. This AppID will be unique to your app across + the entire open financial framework ecosystem. The format of the AppID looks like this: + com_companyName_appName, where the companyName "namespace" + is your company name and appName is the name of your app.

+ +

When Container Developers register + apps, F2.js draws each app as defined by the ContainerConfig. Before the app + is added to the container DOM, F2 automatically wraps an outer HTML element—with the AppID + used as a class—around the rendered app.

+ +

This example shows app HTML after it has been drawn on the container. Note the com_companyName_appName + classname.

+
<div class="f2-app-container com_companyName_appName">
     ...
-</div>
-

To avoid styling conflicts or other display issues related to app-provided style sheets, App Developers must namespace their CSS selectors. Fortunately, this is quite easy.

-

Every selector in app-provided style sheets must look like this:

-
.com_companyName_appName p {
+    </div>
+

To avoid styling conflicts or other display issues related to app-provided style sheets, + App Developers must namespace their CSS selectors. Fortunately, this is + quite easy.

+ +

Every selector in app-provided style sheets must look like this:

+
.com_companyName_appName p {
     padding:5px;
-}
+    }
 
-.com_companyName_appName .alert {
+    .com_companyName_appName .alert {
     color:red;
-}
-

Note .com_companyName_appName is prefixed on both p and .alert selectors.

-

While the CSS cascade will assign more points to IDs and while prefixing F2 AppIDs on CSS selectors isn't required, it is recommended.

-
.com_companyName_appName #notice {
+    }
+

Note .com_companyName_appName is prefixed on both p and .alert + selectors.

+ +

While the CSS + cascade will assign more points to IDs and while prefixing F2 AppIDs on CSS selectors + isn't required, it is recommended.

+
.com_companyName_appName #notice {
     background-color:yellow;
-}
-

Note App Developers should familiarize themselves with CSS namespacing rules for Container Developers. They are largely the same with a couple notable additions.

-
-

About CSS Resets

-

It is a common web development practice to use CSS resets, and it is likely both Container and App Developers will use them. Since there are many ways to normalize built-in browser stylesheets, including Normalize.css which is used by Bootstrap, Container and App Developers must namespace their CSS reset selectors.

-
-
-

About Bootstrap 3

-

Important F2 continues to leverage Bootstrap as the means to achieve consistent HTML & CSS structures—and therefore seamless styling—between containers and apps. F2 has not upgraded to Bootstrap 3, the latest officially-supported Bootstrap version is 2.3.2. Read the blog post for more information on using Bootstrap 3 today.

-
-
-
-

Keeping JavaScript Clean

-

Adhering to one of the OpenAjax Alliance goals, F2 also promotes the concept of an uncluttered global javascript namespace. For Container and App Developers alike, this means following this spec closely and ensuring javascript code is contained inside closures or is extended as a new namespace on F2.

-

To ensure javascript bundled with F2 apps executes in a javascript closure, follow the guidelines for the appclass.js file and one of the two patterns described (prototypal inheritance or module).

-

The F2.js SDK was designed with extensibility in mind and therefore custom logic can be added on the F2 namespace.

-

Example:

-
F2.extend('YourPluginName', (function(){
+    }
+

Note App Developers should familiarize themselves with CSS namespacing rules for Container + Developers. They are largely the same with a couple notable additions.

+
+

About CSS Resets

+ +

It is a common web development practice to use CSS resets, and it is likely + both Container and App Developers will use them. Since there are many ways to normalize + built-in browser stylesheets, including Normalize.css which is used + by Bootstrap, Container and App Developers must namespace their CSS reset selectors.

+
+
+

About Bootstrap 3

+ +

Important F2 continues to leverage Bootstrap + as the means to achieve consistent HTML & CSS structures—and therefore seamless + styling—between containers and apps. F2 has not upgraded to Bootstrap 3, the latest officially-supported Bootstrap version is + 2.3.2. Read the blog + post for more information on using Bootstrap 3 today.

+
+
+
+

Keeping JavaScript Clean

+ +

Adhering to one of the OpenAjax Alliance goals, F2 + also promotes the concept of an uncluttered global javascript namespace. For Container and + App Developers alike, this means following this spec closely and ensuring javascript code is + contained inside closures or is + extended as a new namespace on F2.

+ +

To ensure javascript bundled with F2 apps executes in a javascript closure, follow the guidelines for the appclass.js file and + one of the two patterns described (prototypal inheritance or module).

+ +

The F2.js SDK was designed with extensibility in mind and + therefore custom logic can be added on the F2 namespace.

+ +

Example:

+
F2.extend('YourPluginName', (function(){
     return {
-        doSomething: function(){
-            F2.log("Something has been done.");
-        }
+    doSomething: function(){
+    F2.log("Something has been done.");
+    }
     };
-})());
-

For more information, read Extending F2.

-
-
-
-
-

Context

-
-

What is Context?

-

Apps are capable of sharing "context" with the container and other nearby apps. All apps have context which means the app "knows" who is using it and the content it contains. It is aware of an individual's data entitlements and user information that the container is requested to share (name, email, company, etc).

-

This means if a user wants to create a ticker-focused container so they can keep a close eye on shares of Proctor & Gamble, the container can send "symbol context" to any listening apps that are smart enough to refresh when ticker symbol PG is entered in the container's search box.

-

While apps can have context themselves, the responsibility for managing context switching or context passing falls on the container. The container assumes the role of a traffic cop—managing which data goes where. By using JavaScript events, the container can listen for events sent by apps and likewise apps can listen for events sent by the container. To provide a layer of security, this means apps cannot communicate directly with other apps on their own; apps must communicate via an F2 container to other apps since the container controls the F2.Events API.

-

Read more in the Framework.

-

Let's look at some code.

-
-
-

Container-to-App Context

-

In this example, the container broadcasts, or emits, a javascript event defined in F2.Events.Constants. The F2.Events.emit() method accepts two arguments: the event name and an optional data object.

-
F2.Events.emit(
-    F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, 
-    { 
-        symbol: "AAPL", 
-        name: "Apple, Inc." 
+    })());
+

For more information, read Extending F2.

+
+
+
+
+

Context

+
+

What is Context?

+ +

Apps are capable of sharing "context" with the container and other nearby apps. All + apps have context which means the app "knows" who is using it and the content it + contains. It is aware of an individual's data entitlements and user information that the + container is requested to share (name, email, company, etc).

+ +

This means if a user wants to create a ticker-focused container so they can keep a close eye + on shares of Proctor & Gamble, the container can send "symbol context" to any + listening apps that are smart enough to refresh when ticker symbol PG is entered in the + container's search box.

+ +

While apps can have context themselves, the responsibility for managing context switching or + context passing falls on the container. The container assumes the role of a traffic + cop—managing which data goes where. By using JavaScript events, the container can listen for + events sent by apps and likewise apps can listen for events sent by the container. To + provide a layer of security, this means apps cannot communicate directly with other apps on + their own; apps must communicate via an F2 container to other apps since the container + controls the F2.Events API.

+ +

Read more in the Framework.

+ +

Let's look at some code.

+
+
+

Container-to-App Context

+ +

In this example, the container broadcasts, or emits, a javascript event defined in F2.Events.Constants. + The F2.Events.emit() method accepts two arguments: the event name and an + optional data object.

+
F2.Events.emit(
+    F2.Constants.Events.CONTAINER_SYMBOL_CHANGE,
+    {
+    symbol: "AAPL",
+    name: "Apple, Inc."
     }
-);
-

To listen to the F2.Constants.Events.CONTAINER_SYMBOL_CHANGE event inside your F2 app, you can use this code to trigger an alert dialog with the symbol:

-
F2.Events.on(
-    F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, 
+    );
+

To listen to the F2.Constants.Events.CONTAINER_SYMBOL_CHANGE event inside your + F2 app, you can use this code to trigger an alert dialog with the symbol:

+
F2.Events.on(
+    F2.Constants.Events.CONTAINER_SYMBOL_CHANGE,
     function(data){
-        F2.log("The symbol was changed to " + data.symbol);
+    F2.log("The symbol was changed to " + data.symbol);
     }
-);
-

The F2.Events.on() method accepts the event name and listener function as arguments. Read the SDK for more information.

-

Note For a full list of support event types, browse to the SDK for F2.Constants.Events.

-
-
-

Container-to-App Context (Server)

-

Often times containers will want to send context to apps during app registration. This is possible through the AppConfig.context property. This property can contain any javascript object—a string, a number, an array or an object.

+ );
+

The F2.Events.on() method accepts the event name and listener function as + arguments. Read the SDK for more information.

+ +

Note For a full list of support event types, browse to the SDK for + F2.Constants.Events.

+
+
+

Container-to-App Context (Server)

+ +

Often times containers will want to send context to apps during app registration. This is possible + through the AppConfig.context property. This property can contain + any javascript object—a string, a number, an array or an object.

//define app config
-var _appConfigs = [
+    var _appConfigs = [
     {
-        appId: "com_acmecorp_news",
-        description: "Acme Corp News",
-        manifestUrl: "http://www.acme.com/apps/news-manifest.js",
-        name: "Acme News App",
-        context: {
-            sessionId: myApp.sessionId,
-            someArray: [value1,value2]
-        }
+    appId: "com_acmecorp_news",
+    description: "Acme Corp News",
+    manifestUrl: "http://www.acme.com/apps/news-manifest.js",
+    name: "Acme News App",
+    context: {
+    sessionId: myApp.sessionId,
+    someArray: [value1,value2]
     }
-];
-

When F2.registerApps() is called, the appConfig is serialized and appended to the app's manifest URL. The serialized object converts to stringified JSON:

-
{"appId":"com_acmecorp_news","description":"Acme Corp News","manifestUrl":"http://www.acme.com/apps/news-manifest.js","name":"Acme News App","context":{"sessionId":"12345", "someArray":["value1","value2"]}}
-

The appConfig object is sent to the server using the params querystring name as shown in the example below. This is the complete app manifest request sent by F2.registerApps() with the appConfig URL-encoded, of course:

-
http://www.acme.com/apps/news-manifest.js?params=%7B%22appId%22%3A%22com_acmecorp_news%22%2C%22description%22%3A%22Acme%20Corp%20News%22%2C%22manifestUrl%22%3A%22http%3A%2F%2Fwww.acme.com%2Fapps%2Fnews-manifest.js%22%2C%22name%22%3A%22Acme%20News%20App%22%2C%22context%22%3A%7B%22sessionId%22%3A%2212345%22%2C%20%22someArray%22%3A%5B%22value1%22%2C%22value2%22%5D%7D%7D
-

This demonstrates complete flexibility of passing arbitrary context values from the container to any F2 app.

-

Important To receive context from a container during app initialization, F2 App Developers are required to build object deserialization for the params value into their app code.

-

Note It is possible to override the AppManifest request and, among other things, change the default HTTP method from GET to POST. This is useful in a scenario when the serialized AppConfig exceeds the maximum URL length or when AppConfig.context contains secure information necessitating a POST. Read more about overriding the AppManifest request.

-
-
-

App-to-Container Context

-

In this example, your app emits an event indicating a user is looking at a different stock ticker within your app. Using F2.Events.emit() in your code, your app broadcasts the new symbol. As with container-to-app context passing, the F2.Events.emit() method accepts two arguments: the event name and an optional data object.

-
F2.Events.emit(
-    F2.Constants.Events.APP_SYMBOL_CHANGE, 
-    { 
-        symbol: "MSFT", 
-        name: "Microsoft, Inc." 
     }
-);
-

The container would need to listen to your app's broadcasted F2.Constants.Events.APP_SYMBOL_CHANGE event using code like this:

-
F2.Events.on(
-    F2.Constants.Events.APP_SYMBOL_CHANGE, 
+    ];
+

When F2.registerApps() is called, the appConfig is serialized and + appended to the app's manifest URL. The serialized object converts to stringified JSON:

+
{"appId":"com_acmecorp_news","description":"Acme Corp News","manifestUrl":"http://www.acme.com/apps/news-manifest.js","name":"Acme News App","context":{"sessionId":"12345", "someArray":["value1","value2"]}}
+

The appConfig object is sent to the server using the params + querystring name as shown in the example below. This is the complete app manifest request + sent by F2.registerApps() with the appConfig URL-encoded, of + course:

+
http://www.acme.com/apps/news-manifest.js?params=%7B%22appId%22%3A%22com_acmecorp_news%22%2C%22description%22%3A%22Acme%20Corp%20News%22%2C%22manifestUrl%22%3A%22http%3A%2F%2Fwww.acme.com%2Fapps%2Fnews-manifest.js%22%2C%22name%22%3A%22Acme%20News%20App%22%2C%22context%22%3A%7B%22sessionId%22%3A%2212345%22%2C%20%22someArray%22%3A%5B%22value1%22%2C%22value2%22%5D%7D%7D
+

This demonstrates complete flexibility of passing arbitrary context values from the container + to any F2 app.

+ +

Important To receive context from a container + during app initialization, F2 App Developers are required to build object deserialization + for the params value into their app code.

+ +

Note It is possible to override the AppManifest + request and, among other things, change the default HTTP method from GET to + POST. This is useful in a scenario when the serialized AppConfig + exceeds the maximum URL length or when AppConfig.context contains secure + information necessitating a POST. Read more about + overriding the AppManifest request.

+
+
+

App-to-Container Context

+ +

In this example, your app emits an event indicating a user is looking at a different stock + ticker within your app. Using F2.Events.emit() in your code, your app + broadcasts the new symbol. As with container-to-app context passing, the F2.Events.emit() + method accepts two arguments: the event name and an optional data object.

+
F2.Events.emit(
+    F2.Constants.Events.APP_SYMBOL_CHANGE,
+    {
+    symbol: "MSFT",
+    name: "Microsoft, Inc."
+    }
+    );
+

The container would need to listen to your app's broadcasted F2.Constants.Events.APP_SYMBOL_CHANGE + event using code like this:

+
F2.Events.on(
+    F2.Constants.Events.APP_SYMBOL_CHANGE,
     function(data){
-        F2.log("The symbol was changed to " + data.symbol);
+    F2.log("The symbol was changed to " + data.symbol);
     }
-);
-

Note For a full list of support event types, browse to the SDK for F2.Constants.Events.

-
-
-

App-to-App Context

-

Apps can also pass context between apps. If there are two or more apps on a container with similar context and the ability to receive messages (yes, through event listeners, context receiving is opt-in), apps can communicate with each other. To communicate with another app, each app will have to know the event name along with the type of data being passed. Let's take a look.

-

Within "App 1", context is sent using F2.Events.emit():

-
F2.Events.emit(
+    );
+

Note For a full list of support event types, browse to the SDK for + F2.Constants.Events.

+
+
+

App-to-App Context

+ +

Apps can also pass context between apps. If there are two or more apps on a container with + similar context and the ability to receive messages (yes, through event listeners, context + receiving is opt-in), apps can communicate with each other. To communicate with another app, + each app will have to know the event name along with the type of data being passed. Let's + take a look.

+ +

Within "App 1", context is sent using F2.Events.emit():

+
F2.Events.emit(
     "buy_stock", //custom event name
-    { 
-        symbol: "GOOG", 
-        name: "Google Inc",
-        price: 682.68,
-        isAvailableToPurchase: true,
-        orderType: "Market Order"
+    {
+    symbol: "GOOG",
+    name: "Google Inc",
+    price: 682.68,
+    isAvailableToPurchase: true,
+    orderType: "Market Order"
     }
-);
-

Within "App 2", context is received using F2.Events.on():

-
F2.Events.on(
-    "buy_stock", 
+    );
+

Within "App 2", context is received using F2.Events.on():

+
F2.Events.on(
+    "buy_stock",
     function(data){
-        if (data.isAvailableToPurchase){
-            F2.log("Trade ticket order for " + data.symbol + " at $" + data.price);
-        } else {
-            F2.log("This stock is not available for purchase.")
-        }
+    if (data.isAvailableToPurchase){
+    F2.log("Trade ticket order for " +
+    data.symbol + " at $" + data.price);
+    } else {
+    F2.log("This stock is not available for purchase.")
+    }
     }
-);
-
-
-

More Complex Context

-

The examples above demonstrate simple Context objects. In the event more complex data and/or data types are needed, F2 Context can support any JavaScript object—a string, a number, a function, an array or an object.

-

This is an example Context object demonstrating arbitrary JavaScript objects:

-
F2.Events.emit(
+    );
+
+
+

More Complex Context

+ +

The examples above demonstrate simple Context objects. In the event more complex + data and/or data types are needed, F2 Context can support any JavaScript object—a string, a + number, a function, an array or an object.

+ +

This is an example Context object demonstrating arbitrary JavaScript objects:

+
F2.Events.emit(
     "example_event", //custom event name
-    { 
-        //number
-        price: 100,
-        //string
-        name: 'John Smith',
-        //function
-        callback: function(){
-            F2.log('Callback!');
-        },
-        //array
-        watchlist: ['AAPL','MSFT','GE'],
-        //object
-        userInfo: {
-            name: 'John Smith',
-            title: 'Managing Director',
-            groups: ['Alpha','Beta'],
-            sessionId: 1234567890
-        }
+    {
+    //number
+    price: 100,
+    //string
+    name: 'John Smith',
+    //function
+    callback: function(){
+    F2.log('Callback!');
+    },
+    //array
+    watchlist: ['AAPL','MSFT','GE'],
+    //object
+    userInfo: {
+    name: 'John Smith',
+    title: 'Managing Director',
+    groups: ['Alpha','Beta'],
+    sessionId: 1234567890
     }
-);
-

If two apps want to communicate data for populating a trade ticket and execute a callback, appclass.js code might look like this:

-
F2.Events.emit(
+    }
+    );
+

If two apps want to communicate data for populating a trade ticket and execute a + callback, appclass.js code might look like this:

+
F2.Events.emit(
     "buy_stock", //custom event name
-    { 
-        symbol: "GOOG", 
-        name: "Google Inc",
-        price: 682.68,
-        isAvailableToPurchase: true,
-        orderType: "Market Order",
-        //define callback
-        callback: function(data){
-            alert('Trade ticket populated');
-        }
+    {
+    symbol: "GOOG",
+    name: "Google Inc",
+    price: 682.68,
+    isAvailableToPurchase: true,
+    orderType: "Market Order",
+    //define callback
+    callback: function(data){
+    alert('Trade ticket populated');
     }
-);
-

The F2 app listening for the buy_stock event would fire the callback function.

-
F2.Events.on(
-    "buy_stock", 
+    }
+    );
+

The F2 app listening for the buy_stock event would fire the + callback function.

+
F2.Events.on(
+    "buy_stock",
     function(data){
-        F2.log("Trade ticket order for " + data.symbol + " at $" + data.price);
-        //..populate the trade ticket...
-        //fire the callback
-        if (typeof data.callback === 'function'){
-            data.callback();
-        }
+    F2.log("Trade ticket order for " +
+    data.symbol + " at $" + data.price);
+    //..populate the trade ticket...
+    //fire the callback
+    if (typeof data.callback === 'function'){
+    data.callback();
     }
-);
-
-
-

Types of Context

-

Context is a term used to describe the state of an F2 container and its apps. At the same time, Context is also the information passed from Container-to-App or from App-to-App or from App-to-Container. In the examples shown above, two types of context were shown: symbol and trade ticket context. It is important to realize F2.js allows client-side messaging between third parties using a collection of arbitrary name-value pairs. This provides the utmost flexibility and affords Container Developers the option to define context within their container.

-
-

Universal F2 Instrument ID

-

Said another way, while { symbol:"AAPL", name: "Apple, Inc" } can be used to communicate symbol context, developers could also use { symbol: "123456789" } to identify Apple, Inc. The latter is more likely given not all apps would programmatically understand AAPL but—given symbol lookup services—would understand 123456789 as the universal F2 identifier for Apple, Inc. It is clear Container and App Developers alike would prefer to communicate with a guaranteed-to-never-change universal ID for all instrument types across all asset classes.

-

F2 will be providing lookup web services in future releases that provide universal F2 identifiers for container and app providers. These lookup services will not just be limited to symbols. Further details will be forthcoming as the F2 specification evolves.

-
-
-
-
-
-

Secure Apps

-

F2 fully supports secure apps. A secure app is one that exists inside an iframe on a container and is hosted on a different domain. The F2.js SDK provides developers with seamless handling of Context, UI and the other F2 APIs whether or not an app is secure. This means app developers do not have to code apps any differently if an app is secure.

-

An app is defined as "secure" in the AppConfig. Creating the AppConfig is something that is done when apps are registered on the Developer Center.

-

Noting the isSecure property, the AppConfig looks like this:

+ } + ); +
+
+

Types of Context

+ +

Context is a term used to describe the state of an F2 container and its apps. At the same + time, Context is also the information passed from Container-to-App + or from App-to-App or from App-to-Container. In the examples shown above, + two types of context were shown: symbol and trade ticket context. It is important to realize + F2.js allows client-side messaging between third parties using a collection of arbitrary + name-value pairs. This provides the utmost flexibility and affords Container Developers the + option to define context within their container.

+
+

Universal F2 Instrument ID

+ +

Said another way, while { symbol:"AAPL", name: "Apple, Inc" + } can be used to communicate symbol context, developers could also use { + symbol: "123456789" } to identify Apple, Inc. The latter is more likely + given not all apps would programmatically understand AAPL but—given symbol + lookup services—would understand 123456789 as the universal F2 + identifier for Apple, Inc. It is clear Container and App Developers alike would prefer + to communicate with a guaranteed-to-never-change universal ID for all instrument types + across all asset classes.

+ +

F2 will be providing lookup web services in future releases that provide universal F2 + identifiers for container and app providers. These lookup services will not just be + limited to symbols. Further details will be forthcoming as the F2 specification + evolves.

+
+
+
+ +
+

Secure Apps

+ +

F2 fully supports secure apps. A secure app is one that exists inside an iframe on a + container and is hosted on a different domain. The F2.js SDK provides developers with + seamless handling of Context, UI and the other F2 APIs whether or not an app is secure. This + means app developers do not have to code apps any differently if an app is secure.

+ +

An app is defined as "secure" in the AppConfig. Creating the + AppConfig is something that is done when apps are registered on the Developer Center.

+ +

Noting the isSecure property, the AppConfig looks like this:

{
     "appId": "com_f2_demo",
     "description": "A demo F2 app.",
@@ -758,209 +1263,379 @@ 

Secure Apps

"manifestUrl": "manifest.js", "name": "F2 App", "isSecure": true //secure boolean -}
-

To see examples of secure apps, fork F2 on GitHub and point your browser at:

-

http://localhost/F2/examples/container/

-

The example container runs sample apps—defined in sampleApps.js—and that's where you'll find the isSecure flag defined in some of the AppConfig objects.

-
-
-
-

Container Integration

-

Good news! The container is responsible for loading its apps, and as long as you've followed F2's standard for App Manifests and have a working—and tested—app, you're pretty much done.

-

If you're curious about how containers load apps, browse to the F2.js SDK registerApps() method or read Container Development.

-
-

Testing Your App

-

When you cloned the F2 GitHub repo you also got an example F2 container for your app development and testing. Open the project repository and navigate to ~/F2/examples/container to find them or to jump-start your testing, point your browser at:

-

http://localhost/F2/examples/container/

-

If you open ~/F2/examples/container/js/sampleApps.js in your text editor, you'll find a list of sample F2 apps broken down by programming language. Simply modify this file to your liking and add your app anywhere in the appropriate array (JavaScript, PHP or C#). The configuration is comprised of F2.AppConfig properties, and the following are the minimum required properties.

+ } +

To see examples of secure apps, fork F2 on GitHub and + point your browser at:

+ +

http://localhost/F2/examples/container/

+ +

The example container runs sample apps—defined in sampleApps.js—and that's where + you'll find the isSecure flag defined in some of the AppConfig + objects.

+
+
+
+

Container Integration

+ +

Good news! The container is responsible for loading its apps, and as long as you've followed F2's + standard for App Manifests and have a working—and tested—app, you're + pretty much done.

+ +

If you're curious about how containers load apps, browse to the F2.js SDK registerApps() + method or read Container + Development.

+
+

Testing Your App

+ +

When you cloned the F2 GitHub repo + you also got an example F2 container for your app development and testing. Open the project + repository and navigate to ~/F2/examples/container to find them or to + jump-start your testing, point your browser at:

+ +

http://localhost/F2/examples/container/

+ +

If you open ~/F2/examples/container/js/sampleApps.js in your text editor, you'll + find a list of sample F2 apps broken down by programming language. Simply modify this file + to your liking and add your app anywhere in the appropriate array (JavaScript, PHP or C#). + The configuration is comprised of F2.AppConfig properties, and the following + are the minimum required properties.

{
     appId: "com_companyName_appName",
     manifestUrl: "http://www.domain.com/manifest.js"
-}
-

For full details on these F2.AppConfig properties and all the others, browse the F2.js SDK documentation.

-
-
-
-
-

F2 UI

-

There are some utility methods provided within F2.js in the UI namespace. These helpers are for controlling layout, showing (or hiding) loading spinners, modals, managing views within your app, and more.

-
-

Basics

-

While there are numerous utility methods in F2.UI, we will focus on a couple important ones here such as updateHeight() and showMask(). The F2.UI methods are passed as an instance to each F2 app's App Class on the appConfig argument. The instance of F2.UI gets added to the appConfig object at runtime, and is available in appclass.js as appConfig.ui.

-

Example:

+ } +

For full details on these F2.AppConfig properties and all the others, browse the F2.js SDK documentation.

+
+
+
+
+

F2 UI

+ +

There are some utility methods provided within F2.js in the UI namespace. These + helpers are for controlling layout, showing (or hiding) loading spinners, modals, managing views + within your app, and more.

+
+

Basics

+ +

While there are numerous utility methods in F2.UI, we + will focus on a couple important ones here such as updateHeight() and showMask(). + The F2.UI methods are passed as an instance to each F2 app's App Class on the + appConfig argument. The instance of F2.UI gets added to the appConfig + object at runtime, and is available in appclass.js as appConfig.ui. +

+ +

Example:

//appclass.js snippet
-var App_Class = function (appConfig, appContent, root) {
+    var App_Class = function (appConfig, appContent, root) {
     this.appConfig = appConfig;
     this.appContent = appContent;
-    this.ui = appConfig.ui; //F2.UI instance
+    this.ui = appConfig.ui; //F2.UI instance
     this.$root = $(root);
-}
-
-

Adding or Removing DOM Elements in Your App

-

As the layout inside your app changes, your app should update or refresh its height on the container. This is particularly important for those secure apps inside iframes. To handle this, F2.js provides a updateHeight() method you should call anytime a DOM element is added or removed from within an app.

-

Assuming the example above is used, the this.ui property holds the instance of appConfig.ui.

+ } +
+

Adding or Removing DOM Elements in Your App

+ +

As the layout inside your app changes, your app should update or refresh its height on + the container. This is particularly important for those secure apps inside iframes. To + handle this, F2.js provides a updateHeight() method you should call + anytime a DOM element is added or removed from within an app.

+ +

Assuming the example above is used, the this.ui property holds the instance + of appConfig.ui.

//appclass.js snippet
-...
+    ...
     //user deletes row
     $(".row").remove();
 
     //call updateHeight method
     this.ui.updateHeight();
-...
-
-
-

Showing or Hiding Loading Spinners

-

Apps can show loading spinners—or "masks"—when they are being loaded by a container or afterwards when making data requests. Container Developers configure the UI.Mask as discussed in the SDK F2.ContainerConfig.UI.Mask docs, therefore it is simple for app developers to call showMask().

-

To show a loading spinner when making an ajax request within an app:

+ ... +
+
+

Showing or Hiding Loading Spinners

+ +

Apps can show loading spinners—or "masks"—when they are being loaded by a + container or afterwards when making data requests. Container Developers configure the + UI.Mask as discussed in the SDK F2.ContainerConfig.UI.Mask + docs, therefore it is simple for app developers to call showMask().

+ +

To show a loading spinner when making an ajax request within an app:

//appclass.js snippet
-...
+    ...
     //show loading
-    this.ui.showMask(this.root,true);
+    this.ui.showMask(this.root,true);
 
     //app makes data request
     $.ajax({
-        url: "../data.json"
+    url: "../data.json"
     }).done(function(jqxhr){
-        F2.log(jqxhr);
-        //hide loading
-        this.ui.hideMask(this.root);
+    F2.log(jqxhr);
+    //hide loading
+    this.ui.hideMask(this.root);
     });
-...
-

The showMask() method takes two arguments: a DOM element where to show the mask and a boolean indicating whether or not to show a spinning graphic.

-

If you do not want to show a spinning graphic, simply pass false to the showMask() method. A mask without a spinner is useful in the case when you want to "lock" the view from user interaction.

+ ... +

The showMask() method takes two arguments: a DOM element where to show the + mask and a boolean indicating whether or not to show a spinning graphic.

+ +

If you do not want to show a spinning graphic, simply pass false to the + showMask() method. A mask without a spinner is useful in the case when you + want to "lock" the view from user interaction.

//appclass.js snippet
-...
+    ...
     //show mask, no spinner
-    this.ui.showMask(this.root,false);
-...
-

For full details, read about F2.UI in the SDK.

-
-
-

Changing the App Title

-

To update the title of an app in the app's chrome (as defined by the container in F2.ContainerConfig.appRender), very simply pass a string to the setTitle() method.

+ this.ui.showMask(this.root,false); + ... +

For full details, read about F2.UI in the SDK.

+
+
+

Changing the App Title

+ +

To update the title of an app in the app's chrome (as defined by the container in + F2.ContainerConfig.appRender), very simply pass a string to the + setTitle() method.

//appclass.js snippet
-...
+    ...
     this.ui.setTitle("Chart for MSFT");
-...
-
-
-
-

F2.UI.Modals

-

F2.js provides two methods in F2.UI for modal dialogs. F2 uses and recommends Bootstrap for many reasons, and taking advantage of Bootstrap's modals was an easy choice.

-

For full details on F2.UI.Modals and the two types of modals (alert and confirm), read the SDK docs.

-

Usage is simple:

+ ... +
+
+
+

F2.UI.Modals

+ +

F2.js provides two methods in F2.UI for modal dialogs. F2 uses and recommends Bootstrap for many reasons, and taking + advantage of Bootstrap's + modals was an easy choice.

+ +

For full details on F2.UI.Modals and the two types of modals (alert and confirm), + read the SDK docs.

+ +

Usage is simple:

//appclass.js snippet
-...
-    this.ui.Modals.alert("A message to display in a modal.");
-...
-

You can optionally provide a callback to be fired when the user closes the modal.

+ ... + this.ui.Modals.alert("A message to display in a modal."); + ... +

You can optionally provide a callback to be fired when the user closes the modal.

//appclass.js snippet
-...
-    this.ui.Modals.alert("A message to display in a modal.", function(){
-        F2.log("Modal closed!");
+    ...
+    this.ui.Modals.alert("A message to display in a modal.", function(){
+    F2.log("Modal closed!");
     });
-...
-

Additionally, there is a confirm modal.

+ ... +

Additionally, there is a confirm modal.

//appclass.js snippet
-...
-    this.ui.Modals.confirm(
-        "A message to display in a confirmation modal.", 
-        function(){
-            F2.log("OK clicked");
-        },
-        function(){
-            F2.log("Cancel clicked");
-        }
+    ...
+    this.ui.Modals.confirm(
+    "A message to display in a confirmation modal.",
+    function(){
+    F2.log("OK clicked");
+    },
+    function(){
+    F2.log("Cancel clicked");
+    }
     );
-...
-
-
-

F2.UI.Views

-

Adding and managing views within an F2 app is considered an advanced topic. If your app only needs a single view, you don't have to worry about reading this part of the F2 spec.

-

F2 apps can have one or more views. Every app will have at least one "home" view, while others will include views for settings, help or about. Inside the F2.js SDK, we've included support for views and the list can be extended by the container provider.

-

Note If the container doesn't support all the views you need inside your app, you will need to coordinate those additions with the container provider.

-
-

Setting Up Views

-

Once you've determined the views you'd like to include in your app, the view should be specified by applying the F2.Constants.Css.APPVIEW classname to the containing DOM Element. A data- attribute should be added to the element as well which defines what view type is represented. Bootstrap's hide class should be applied to views that are hidden on startup.

-

To setup a single view in your app, use this HTML on your app's outermost element noting the use of the f2-app-view classname and the data-f2-view attribute.

-
<div class='f2-app-view' data-f2-view='home'>
+    ...
+
+
+

F2.UI.Views

+ +

Adding and managing views within an F2 app is considered an advanced topic. + If your app only needs a single view, you don't have to worry about reading this part of the + F2 spec.

+ +

F2 apps can have one or more views. Every app will have at least one "home" view, + while others will include views for settings, help or about. Inside the F2.js SDK, we've included support for views and + the list can be extended by the container provider.

+ +

Note If the container doesn't support all the views you need + inside your app, you will need to coordinate those additions with the container provider. +

+
+

Setting Up Views

+ +

Once you've determined the views you'd like to include in your app, the view should be + specified by applying the F2.Constants.Css.APPVIEW classname to the + containing DOM Element. A data- attribute should be added to the element as + well which defines what view type is represented. Bootstrap's hide class + should be applied to views that are hidden on startup.

+ +

To setup a single view in your app, use this HTML on your app's outermost element noting + the use of the f2-app-view classname and the data-f2-view + attribute.

+
<div class='f2-app-view' data-f2-view='home'>
     ...
-</div>
-

To setup multiple views in your app, write HTML like this noting the use the f2-app-view and hide classnames as well as the data-f2-view attributes.

-
<div class='f2-app-view' data-f2-view='home'>
+    </div>
+

To setup multiple views in your app, write HTML like this noting the use the f2-app-view + and hide classnames as well as the data-f2-view attributes. +

+
<div class='f2-app-view' data-f2-view='home'>
     ...
-</div>
-<div class='f2-app-view hide' data-f2-view='about'>
+    </div>
+    <div class='f2-app-view hide' data-f2-view='about'>
     ...
-</div>
-

For details on F2.Constants.Css.APPVIEW, browse to the SDK docs.

-
-
-

Controlling View State

-

The F2.UI namespace provides an API for developers to manage F2 app View state.

-

To programmatically change a View in javascript:

-
appConfig.ui.Views.change(F2.Constants.Views.HOME);
-

Note When appConfig.ui.Views.change() is called, the hide classname is automatically added or removed by F2.js depending on the visibility of the view. Read more in the SDK docs.

-

In F2 app HTML, you can use a combination of CSS classnames and data- attributes to provide UI elements making it easy for users to navigate between Views.

-

For example, an app has two views: "home" and "about". On the "home" View, a button allows the user to navigate to the "about" view. In the presence of the classname f2-app-view-trigger and the data-f2-view data attribute, F2.js automatically adds a javascript event to the button.

-
<div class="f2-app-view" data-f2-view="home">
+    </div>
+

For details on F2.Constants.Css.APPVIEW, browse to the SDK + docs.

+
+
+

Controlling View State

+ +

The F2.UI namespace provides an API for developers to manage F2 app View + state.

+ +

To programmatically change a View in javascript:

+
appConfig.ui.Views.change(F2.Constants.Views.HOME);
+

Note When appConfig.ui.Views.change() + is called, the hide classname is automatically added or removed by F2.js + depending on the visibility of the view. Read more in the SDK + docs.

+ +

In F2 app HTML, you can use a combination of CSS classnames and data- + attributes to provide UI elements making it easy for users to navigate between Views. +

+ +

For example, an app has two views: "home" and "about". On the "home" + View, a button allows the user to navigate to the "about" view. In the + presence of the classname f2-app-view-trigger and the + data-f2-view data attribute, F2.js automatically adds a javascript event to + the button.

+
<div class="f2-app-view" data-f2-view="home">
     <!--use 'data-f2-view' to switch to the "about" View-->
-    <button class="btn f2-app-view-trigger" data-f2-view="about">Show About View</button>
-</div>
-

To get back to the "home" View from the "about" View:

-
<div class="f2-app-view" data-f2-view="about">
+    <button class="btn f2-app-view-trigger" data-f2-view="about">Show
+    About View</button>
+    </div>
+

To get back to the "home" View from the "about" View:

+
<div class="f2-app-view" data-f2-view="about">
     ...
-    <button class="btn f2-app-view-trigger" data-f2-view="home">&laquo; Back Home</button>
+    <button class="btn f2-app-view-trigger" data-f2-view="home">&laquo; Back Home</button>
     ...
-</div>
-
-
-

Listening to App View Changes

-

You shouldn't be surprised to know F2.js contains event triggers for handling app View changes. To listen for View changes inside F2 app javascript code:

-
appConfig.ui.Views.change(function(view){
+    </div>
+
+
+

Listening to App View Changes

+ +

You shouldn't be surprised to know F2.js contains event triggers for handling app View + changes. To listen for View changes inside F2 app javascript code:

+
appConfig.ui.Views.change(function(view){
     F2.log("View changed to ", view);
-});
-

For details on F2.UI.Views, browse to the SDK docs and for details on F2.Constants.Views, head over to the F2.Constants docs.

-
-
-
-
-
-

Entitlements

-

User or content entitlements are the responsibility of the App Developer. Many apps will need to be decoupled from the content that they need. This could include apps like research aggregation, news filtering, streaming market data, etc. Similarly to how companies build their own websites today with their own authentication and access (or content) entitlements, F2 apps are no different.

-

Further details around app entitlements will be forthcoming as the F2 specification evolves.

-
-
-
-

Single Sign-On

-

Single sign-on (SSO) is a shared responsibility between the Container and App Developer. In some cases, containers will want all of its apps to be authenticated seamlessly for users;that will be negotiated between Container and App Developers. For the purposes of this documentation, it is assumed Container Developers will build and host their container access authentication.

-

Once a user is authenticated on the container, how is the user then authenticated with all of the apps? Encrypted URLs.*

-

Note The Container Developer is free to utilize any app authentication method they deem fit. Container Developers and app developers will need to work together to finalize the authentication details.

-
-

Using Encrypted URLs

-

Implementing SSO using encrypted URLs is a simple and straight-forward authentication mechanism for securing cross-domain multi-provider apps. To guarantee security between the Container and App Developer, secure API contracts must be negotiated. This includes, but is not limited to, the choice of cryptographic algorithm (such as AES) and the exchange of public keys.

-

When the container provider calls F2.registerApps(), custom logic should be added to append encrypted user credentials—on a need-to-know basis—to each app requiring authentication.

-

Read more in Developing F2 Containers.

-
-
-

Considerations

-

Authentication is a critical part of any container-app relationship. There are a plethora of SSO implementations and there are many considerations for both Container and App Developers alike.

-

Further details around container and app single sign-on will be forthcoming as the F2 specification evolves.

-
-
-
- - - - -
- - - - + }); +

For details on F2.UI.Views, browse + to the SDK docs and for details on F2.Constants.Views, head over to the F2.Constants docs. +

+
+
+
+ +
+

Entitlements

+ +

User or content entitlements are the responsibility of the App Developer. Many apps will need to + be decoupled from the content that they need. This could include apps like research aggregation, + news filtering, streaming market data, etc. Similarly to how companies build their own websites + today with their own authentication and access (or content) entitlements, F2 apps are no + different.

+ +

Further details around app entitlements will be forthcoming as the F2 specification + evolves.

+
+
+
+

Single Sign-On

+ +

Single sign-on (SSO) is a shared responsibility between the Container and App Developer. In some + cases, containers will want all of its apps to be authenticated seamlessly for users;that will + be negotiated between Container and App Developers. For the purposes of this documentation, it + is assumed Container Developers will build and host their container access authentication.

+ +

Once a user is authenticated on the container, how is the user then authenticated with all of the + apps? Encrypted URLs.*

+ +

Note The Container Developer is free to utilize any app authentication + method they deem fit. Container Developers and app developers will need to work together to + finalize the authentication details.

+
+

Using Encrypted URLs

+ +

Implementing SSO using encrypted URLs is a simple and straight-forward authentication + mechanism for securing cross-domain multi-provider apps. To guarantee security between the + Container and App Developer, secure API contracts must be negotiated. This includes, but is + not limited to, the choice of cryptographic algorithm (such as AES) and the + exchange of public keys.

+ +

When the container provider calls F2.registerApps(), custom logic should be + added to append encrypted user credentials—on a need-to-know basis—to each app + requiring authentication.

+ +

Read more in Developing F2 Containers.

+
+
+

Considerations

+ +

Authentication is a critical part of any container-app relationship. There are a plethora of + SSO implementations and there are many considerations for both Container and App Developers + alike.

+ +

Further details around container and app single sign-on will be forthcoming as the F2 + specification evolves.

+
+
+
+ + + + + + + +
+ + + + + diff --git a/docs/container-development.html b/docs/container-development.html index 11b3e0ea..f6a81545 100644 --- a/docs/container-development.html +++ b/docs/container-development.html @@ -1,1039 +1,1825 @@ - F2 - Container Development - - - - - - - - - - - - - - - - - - - - - - - + F2 - Container Development + + + + + + + + + + + + + + + + + + + + + + +
-
-
- -
- -
-
-
-

Container Development

-
-

-The container is the foundation of any F2-enabled solution. By leveraging the F2.js SDK, Container Providers offer a consistent and reliable mechanism for all App Developers to load their apps on that container regardless of where it is hosted, who developed it, or what back-end stack it uses. You can read more about the framework, download the project on GitHub or get started below. The latest version of F2 is 1.3.3. -

- -
-
-

Version 2

-
- -The F2 Team is working on a major revision to the F2 framework. Visit the project on GitHub to review the revisions draft, the F2.js code and v2 Issues. -
+
+
+ +
+ + +
+
+
+

Container Development

+
+

+ The container is the foundation of any F2-enabled solution. By leveraging the F2.js SDK, Container Providers offer a consistent and reliable + mechanism for all App Developers to load their apps on that container regardless of where it is + hosted, who developed it, or what back-end stack it uses. You can read + more about the framework, download the + project on GitHub or get started below. The latest version of F2 is + 1.3.3. +

-
-
-

Get Started

-

To help you get started building an F2 container, review the documentation and examples below. To jump start your F2 container or app development, download the F2 example container and apps.

-

-Download F2 Examples -

- -
-

Basic Container

-

To begin, you do not need to build (or compile) F2 as described in the readme on GitHub. Simply download F2.js and Bootstrap, and ensure you're properly configured for continuing with the documentation.

-

-Download F2.js Download Bootstrap -

- -

Setup a basic container HTML template (or add F2.js to an existing website):

+
+
+

Version 2

+ +
+ + The F2 Team is working on a major revision to the F2 framework. Visit the project on GitHub to + review the revisions draft, the F2.js code and v2 Issues. +
+ +
+
+

Get Started

+ +

To help you get started building an F2 container, review the documentation and examples below. To + jump start your F2 container or app development, download the F2 example container and apps.

+ +

+ Download F2 + Examples +

+ +
+

Basic Container

+ +

To begin, you do not need to build (or compile) F2 as described in the readme on GitHub. + Simply download F2.js and Bootstrap, and ensure + you're properly configured for continuing with the + documentation.

+ +

+ Download + F2.js Download Bootstrap +

+ +

Setup a basic container HTML template (or add F2.js to an existing website):

<!DOCTYPE html>
     <head>
-        <title>F2 Container</title>
-        <link rel="stylesheet" href="/path/to/your/bootstrap.css">
+    <title>F2 Container</title>
+    <link rel="stylesheet" href="/path/to/your/bootstrap.css">
     </head>
     <body>
-        <script src="/path/to/your/F2.js"></script>
+    <script src="/path/to/your/F2.js"></script>
     </body>
-</html>
-

Note In developing a more advanced container, the HTML document's body element would contain additional markup and allow for specific positioning or placement of apps. Additionally, more advanced containers could introduce features and functionality to their apps in the form of authentication APIs, streaming data feeds, federated search, etc. All containers must follow the F2 design guidelines.

-
-
-

Basic AppConfig

+ </html> +

Note In developing a more advanced container, the HTML + document's body element would contain additional markup and allow for specific positioning or placement of apps. + Additionally, more advanced containers could introduce features and functionality to their + apps in the form of authentication APIs, streaming data feeds, federated search, etc. All + containers must follow the F2 design guidelines.

+
+
+

Basic AppConfig

var _appConfig = {
     appId: 'com_openf2_examples_javascript_helloworld',
     manifestUrl: 'http://docs.openf2.org/demos/apps/JavaScript/HelloWorld/manifest.js'
-};
- 
-$(function(){
+    };
+
+    $(function(){
     F2.init();
     F2.registerApps(_appConfig);
-});
-

Note For more information about the AppConfig, read up on them in App Integration.

-
-
-

Testing the Basics

-

Now with a basic container and a basic app, combine these two for a working example. Press Result in this jsfiddle.

- - -

In getting to this point, you've only scratched the surface of F2 containers and apps. Continue reading and understanding the F2 spec to build exactly the financial solutions that our customers want.

-
-
-

Sample Apps and Container

-

Good news! In the project repo on GitHub, you will find a basic container along with a number of sample apps which demonstrate functionality far beyond the basic app above. Once you clone or download the project repository, open the sample container by pointing your browser at:

-

http://localhost/F2/examples/

-

These examples are also available in a separate archive if you don't want to download the entire repository.

-

-Download F2 Examples -

- -
-
-

Configuration

-

It is assumed you will be developing an F2 container locally and have a localhost setup. The URLs mentioned in this specification also assume you have configured your F2 container to run at http://localhost/F2/. The examples provided as part of the project repository demonstrate apps written in different languages (PHP, JavaScript, C#). While it is not a requirement you have a web server configured on your computer, it will certainly allow you to more deeply explore the sample apps.

-

To better understand F2 and the role of containers, you need to understand the role of apps. If you haven’t already, read more about apps in the Framework.

-

To get started working with or developing apps, browse to the documentation for developing apps.

-

Ready to start coding?

-

-Developing F2 Containers F2.js SDK Reference -

- -
-
-
-
-

Container Design

-

Design considerations are an important first step when creating a new container. Content can range from news to research to multimedia, and content should be presented using Progressive Enhancement, Mobile First and Responsive Design methodologies. That is to say multimedia content, for example, should be shown plugin-free (using HTML5 video or audio elements) for capable browsers and fallback to Flash-based players for browsers that do not yet support HTML5 related technologies. (VideoJS is good example of open-source JavaScript and CSS "that makes it easier to work with and build on HTML5 video, today.")

-

If App Developers embed URLs back to their own websites or to third party sites, URLs must be opened in a new window as to not interrupt the experience of someone using the container. If authentication is required on an App Developer's site, this can be accomplished with pass-through authentication using encrypted URLs as discussed in Single Sign On.

-
-

Choices

-

In order to ensure that containers built using F2 are successful, they must be accessible. As such, F2 made choices for which open-source libraries and frameworks would be leveraged to reduce the level of effort across F2 adopters.

-

Read more about those choices in the Framework.

-

Ultimately, the responsibility of app design falls on either the Container or App Developer or both. In many cases, Container Developers will provide App Developers will visual designs, style guides or other assets required to ensure apps have the form and function for a given container. Container Developers may also provide CSS for App Developers to adhere to—which should be easy since F2 enforces a consistent HTML structure across all containers and apps. In other cases, Container and App Developers may never know each other and it's important everyone strictly adheres to the guidelines set forth in this documentation.

-
-
-
-
-

Developing F2 Containers

-

A container is a browser-based web application which brings F2 apps together onto a seamless user interface. It can also provide data and user context to its apps in the form of request-response web services or streaming data feeds.

-
-

Including the F2 SDK

-

For a webpage to be considered an F2 container, it must first include the F2.js JavaScript SDK. This is as simple as downloading the F2 project from GitHub and adding a script tag to the page.

-
<script src="/path/to/your/f2.js"></script>
-

You will find a basic container in the project repo on GitHub along with a number of sample apps. Once the script tag has been added, it is up to the Container Developer to configure and customize the container. The first step is getting a ContainerID.

-
-
-

F2 ContainerID

-

To develop a production F2 container, you need a unique identifier called a ContainerID. This ContainerID will be unique to your container across the entire open financial framework ecosystem. The format of the ContainerID looks like this: com_container_companyName_containerName, where the companyName "namespace" is your company name and containerName is the name of your container.

-

As an example, your ContainerID could look like this:

-

com_container_acmecorp_watchlist

-

If you built more than one container while working at Acme Corporation, you could create more ContainerIDs. All of these are valid:

-
    -
  • com_container_acmecorp_activetrader
  • -
  • com_container_acmecorp_retail
  • -
  • com_container_acmecorp_mobilestreamer
  • -
-

To guarantee uniqueness, we will provide a ContainerID generation service that allows customization of your ContainerID in the Developer Center.

-
-
-

Setting Up Your Project

-

Once you have your ContainerID, start by setting up your container project. You will need at least one configuration in addition to an HTML page: the app configs. (In the GitHub repository, an example is found in /examples/container/js/sampleApps.js.) This doesn't need to be a static javascript file like sampleApps.js but the structure and format of the app configs is important.

-
-
-

Container Config

-

The F2.js JavaScript SDK provides an API for providers to configure their containers. Every container must be setup using ContainerConfig and the methods available, however if the F2 defaults are acceptable, the ContainerConfig is not required.

-

To initialize a container using F2 defaults, call this function:

-
F2.init();
-

To initialize a container with a ContainerConfig, use:

-
F2.init({
+    });
+

Note For more information about the + AppConfig, read up on them in App Integration.

+
+
+

Testing the Basics

+ +

Now with a basic container and a basic app, combine these two for a working example. Press + Result in this jsfiddle.

+ + +

In getting to this point, you've only scratched the surface of F2 containers and apps. + Continue reading and understanding the F2 spec to build exactly the financial solutions that + our customers want.

+
+
+

Sample Apps and Container

+ +

Good news! In the project repo + on GitHub, you will find a basic container along with a number of sample apps which + demonstrate functionality far beyond the basic app above. Once you clone or download the + project repository, open the sample container by pointing your browser at:

+ +

http://localhost/F2/examples/

+ +

These examples are also available in a separate archive if you don't want to download the + entire repository.

+ +

+ Download + F2 Examples +

+ +
+
+

Configuration

+ +

It is assumed you will be developing an F2 container locally and have a + localhost setup. The URLs mentioned in this specification also assume you have + configured your F2 container to run at http://localhost/F2/. The examples + provided as part of the project repository demonstrate apps written in different languages + (PHP, JavaScript, C#). While it is not a requirement you have a web server configured on + your computer, it will certainly allow you to more deeply explore the sample apps.

+ +

To better understand F2 and the role of containers, you need to understand the role of apps. + If you haven’t already, read more about apps in the + Framework.

+ +

To get started working with or developing apps, browse to the documentation + for developing apps.

+ +

Ready to start coding?

+ +

+ Developing F2 + Containers F2.js SDK Reference +

+ +
+
+
+
+

Container Design

+ +

Design considerations are an important first step when creating a new container. Content can + range from news to research to multimedia, and content should be presented using Progressive + Enhancement, Mobile First and Responsive Design + methodologies. That is to say multimedia content, for example, should be shown plugin-free + (using HTML5 video or audio elements) for capable browsers and fallback to Flash-based players + for browsers that do not yet support HTML5 related technologies. (VideoJS + is good example of open-source JavaScript and CSS "that makes it easier to work with and + build on HTML5 video, today.")

+ +

If App Developers embed URLs back to their own websites or to third party sites, URLs must be + opened in a new window as to not interrupt the experience of someone using the container. If + authentication is required on an App Developer's site, this can be accomplished with + pass-through authentication using encrypted URLs as discussed in Single + Sign On.

+
+

Choices

+ +

In order to ensure that containers built using F2 are successful, they must be accessible. As + such, F2 made choices for which open-source libraries and frameworks would be leveraged to + reduce the level of effort across F2 adopters.

+ +

Read more about those choices in the Framework.

+ +

Ultimately, the responsibility of app design falls on either the Container or App Developer + or both. In many cases, Container Developers will provide App Developers will visual + designs, style guides or other assets required to ensure apps have the form and function for + a given container. Container Developers may also provide CSS for App Developers + to adhere to—which should be easy since F2 enforces a consistent HTML structure across + all containers and apps. In other cases, Container and App Developers may never know + each other and it's important everyone strictly adheres to the guidelines set forth in this + documentation.

+
+
+
+
+

Developing F2 Containers

+ +

A container is a browser-based web application which brings F2 apps together onto a seamless user + interface. It can also provide data and user context to its apps in the form of request-response + web services or streaming data feeds.

+
+

Including the F2 SDK

+ +

For a webpage to be considered an F2 container, it must first include the F2.js JavaScript SDK. This is as simple as downloading the F2 project from GitHub and adding a + script tag to the page.

+
<script src="/path/to/your/f2.js"></script>
+

You will find a basic container in the project repo on GitHub + along with a number of sample apps. Once the script tag has been added, it is up to the + Container Developer to configure and customize the container. The first step is getting a + ContainerID.

+
+
+

F2 ContainerID

+ +

To develop a production F2 container, you need a unique identifier called a ContainerID. This + ContainerID will be unique to your container across the entire open financial + framework ecosystem. The format of the ContainerID looks like this: com_container_companyName_containerName, + where the companyName "namespace" is your company name and containerName + is the name of your container.

+ +

As an example, your ContainerID could look like this:

+ +

com_container_acmecorp_watchlist

+ +

If you built more than one container while working at Acme Corporation, you could create more + ContainerIDs. All of these are valid:

+
    +
  • com_container_acmecorp_activetrader
  • +
  • com_container_acmecorp_retail
  • +
  • com_container_acmecorp_mobilestreamer
  • +
+

To guarantee uniqueness, we will provide a ContainerID generation service that allows + customization of your ContainerID in the Developer + Center.

+
+
+

Setting Up Your Project

+ +

Once you have your ContainerID, start by setting up your container project. You will need at + least one configuration in addition to an HTML page: the app configs. (In the GitHub + repository, an + example is found in /examples/container/js/sampleApps.js.) This doesn't + need to be a static javascript file like sampleApps.js but the structure and + format of the app configs is important.

+
+
+

Container Config

+ +

The F2.js JavaScript SDK provides an API for providers to + configure their containers. Every container must be setup using ContainerConfig + and the methods available, however if + the F2 defaults are acceptable, the ContainerConfig is not required.

+ +

To initialize a container using F2 defaults, call this function:

+
F2.init();
+

To initialize a container with a ContainerConfig, use:

+
F2.init({
     UI: {},
     xhr: function(){},
-    supportedViews: []  
-});
-

Review all of the ContainerConfig properties in the reference documentation.

-

To see a more detailed example of F2.init(), look at the sample container javascript in the F2 repo on GitHub.

-
-

Debug Mode

-

To enable debug mode in a container, use the following property in F2.init(). Setting debugMode: true adds additional logging, resource cache busting, etc. For obvious reasons, this property should only be used in a development environment.

-
F2.init({
-   debugMode: true 
-});
-
-
-

AppRender, BeforeAppRender, AfterAppRender

-

The appRender(), beforeAppRender(), and afterAppRender() methods were deprecated in F2 version 1.2 in favor of F2.AppHandlers. Upgrading to F2 1.2 will not break existing containers using any of these methods as they are still present in the SDK.

-

For more information, see AppHandlers for App Layout.

-
-
-

Setting Up a Loading GIF

-

Container Developers have the opportunity to customize some user interface (UI) elements which propagate to the App Developers' toolkit in F2.js. One of those is F2.UI.Mask. The Mask object contains configuration defaults for the F2.UI.showMask() and F2.UI.hideMask() methods.

-

An example of setting the mask in F2.init():

-
F2.init({
+    supportedViews: []
+    });
+

Review all of the ContainerConfig properties in the reference documentation.

+ +

To see a more detailed example of F2.init(), look + at the sample container javascript in the F2 repo on GitHub.

+
+

Debug Mode

+ +

To enable debug mode in a container, use the following property in F2.init(). + Setting debugMode: true adds additional logging, resource cache busting, + etc. For obvious reasons, this property should only be used in a development + environment.

+
F2.init({
+    debugMode: true
+    });
+
+
+

AppRender, BeforeAppRender, AfterAppRender

+ +

The appRender(), beforeAppRender(), and + afterAppRender() methods were deprecated in F2 version 1.2 in favor of F2.AppHandlers. Upgrading to + F2 1.2 will not break existing containers using any of these methods as they are still + present in the SDK.

+ +

For more information, see AppHandlers for App + Layout.

+
+
+

Setting Up a Loading GIF

+ +

Container Developers have the opportunity to customize some user interface (UI) elements + which propagate to the App Developers' toolkit in F2.js. One of those is F2.UI.Mask. + The Mask object contains configuration defaults for the F2.UI.showMask() + and F2.UI.hideMask() methods.

+ +

An example of setting the mask in F2.init():

+
F2.init({
     UI:{
-        Mask:{
-            loadingIcon:'./img/spinner.gif',
-            backgroundColor: '#fff',
-            opacity: 0.5
-        }
+    Mask:{
+    loadingIcon:'./img/spinner.gif',
+    backgroundColor: '#fff',
+    opacity: 0.5
+    }
     }
-});
-

Included in the F2.UI.Mask configuration object are the following properties: backgroundColor, loadingIcon, opacity, useClasses, and zIndex. Each of these F2.UI.Mask properties is detailed in the F2.js SDK docs.

-

For more information on F2.UI, browse to the F2.js SDK docs.

-
-
-

Override the AppManifest Request

-

Occasionally Container Developers need more granular control over the AppManifest request mechanism in F2.js. The manifest request process—intentionally obscured from developers through the F2.registerApps() API—is handled by a simple ajax call to an HTTP endpoint. (F2 relies on jQuery.ajax() for this.) In version 1.3.3 of F2, the AppManifest request can be overridden in the Container Config.

-

Note The AppManifest endpoint is configured in the manifestUrl property within each AppConfig.

-

The following example demonstrates how the xhr property of the ContainerConfig is used to override F2.js.

-
F2.init({
+    });
+

Included in the F2.UI.Mask configuration object are the following + properties: backgroundColor, loadingIcon, opacity, + useClasses, and zIndex. Each of these F2.UI.Mask + properties is detailed in the + F2.js SDK docs.

+ +

For more information on F2.UI, browse to + the F2.js SDK docs.

+
+
+

Override the AppManifest Request

+ +

Occasionally Container Developers need more granular control over the + AppManifest request mechanism in F2.js. The manifest request process—intentionally + obscured from developers through the F2.registerApps() API—is handled by a + simple ajax call to an HTTP endpoint. (F2 relies on jQuery.ajax() for + this.) In version 1.3.3 of F2, the AppManifest request can be overridden in + the Container Config.

+ +

Note The AppManifest endpoint is + configured in the manifestUrl property within each AppConfig.

+ +

The following example demonstrates how the xhr property of the ContainerConfig + is used to override F2.js.

+
F2.init({
     xhr: function(url, appConfigs, success, error, complete) {
-        $.ajax({
-            url: url,
-            type: 'POST',
-            data: {
-                params: F2.stringify(appConfigs, F2.appConfigReplacer)
-            },
-            jsonp: false, // do not put 'callback=' in the query string
-            jsonpCallback: F2.Constants.JSONP_CALLBACK + appConfigs[0].appId, // Unique function name
-            dataType: 'json',
-            success: function(appManifest) {
-                // custom success logic
-                success(appManifest); // fire success callback
-            },
-            error: function() {
-                // custom error logic
-                error(); // fire error callback
-            },
-            complete: function() {
-                // custom complete logic
-                complete(); // fire complete callback
-            }
-        });
+    $.ajax({
+    url: url,
+    type: 'POST',
+    data: {
+    params: F2.stringify(appConfigs, F2.appConfigReplacer)
+    },
+    jsonp: false, // do not put 'callback=' in the query string
+    jsonpCallback: F2.Constants.JSONP_CALLBACK + appConfigs[0].appId, // Unique function name
+    dataType: 'json',
+    success: function(appManifest) {
+    // custom success logic
+    success(appManifest); // fire success callback
+    },
+    error: function() {
+    // custom error logic
+    error(); // fire error callback
+    },
+    complete: function() {
+    // custom complete logic
+    complete(); // fire complete callback
+    }
+    });
     }
-});
-
-
-

Extending XHR

-

The F2.ContainerConfig.xhr property has two additional customizable properties available: dataType and type.

-
-
DataType
-

The dataType property allows the container to override the request data type (JSON or JSONP) that is used for the request. Using JSON as a dataType is only available for F2 apps running on the same domain as the container.

-
F2.init({
+    });
+
+
+

Extending XHR

+ +

The F2.ContainerConfig.xhr property has two additional customizable + properties available: dataType and type.

+
+
DataType
+ +

The dataType property allows the container to override the request data + type (JSON or JSONP) that is used for the request. Using JSON as a + dataType is only available for F2 apps running on the same domain as + the container.

+
F2.init({
     xhr: {
-        dataType: function(url) {
-            return F2.isLocalRequest(url) ? 'json' : 'jsonp';
-        }
+    dataType: function(url) {
+    return F2.isLocalRequest(url) ? 'json' : 'jsonp';
+    }
     }
-});
-
-
-
Type
-

The type property allows the container to override the request method that is used (similar to the type parameter to jQuery.ajax()). Since HTTP POST is not supported on JSONP requests, using POST as a type is only available for F2 apps using JSON and are therefore running on the same base domain as the container.

-
F2.init({
+    });
+
+
+
Type
+ +

The type property allows the container to override the request method + that is used (similar to the type + parameter to jQuery.ajax()). Since HTTP POST is not supported on JSONP + requests, using POST as a type is only available for F2 apps using JSON + and are therefore running on the same base domain as the container.

+
F2.init({
     xhr: {
-        type: function(url) {
-            return F2.isLocalRequest(url) ? 'POST' : 'GET';
-        }
+    type: function(url) {
+    return F2.isLocalRequest(url) ? 'POST' : 'GET';
     }
-});
-

For more information on F2.ContainerConfig.xhr, browse to the F2.js SDK docs.

-
-
-
-

Override the Request for App Dependencies

-

Occasionally Container Developers need more granular control over the request mechanism in F2.js for AppManifest-defined dependencies. The current dependency request process is handled by the straightforward createElement('script') and createStyleSheet() statements for scripts and styles, respectively. In version 1.3.3 of F2, the app dependency request can be overridden in the ContainerConfig.

-
-
Override the Script Loader
-

As defined in the AppManifest, each F2 App can have script file dependencies. These are defined as URLs in the AppManifest.scripts property (type array). The script loader can be replaced with any script loading mechanism such as those found in RequireJS, jQuery or HeadJS.

-

To override the script loader, assign a function to loadScripts in F2.init as shown below. The function is passed scripts (array) and callback (function) which needs to be called when all scripts have been loaded.

-
F2.init({
+    }
+    });
+

For more information on F2.ContainerConfig.xhr, browse to the F2.js SDK docs. +

+
+
+
+

Override the Request for App Dependencies

+ +

Occasionally Container Developers need more granular control over the request mechanism + in F2.js for AppManifest-defined dependencies. The current dependency + request process is handled by the straightforward createElement('script') + and createStyleSheet() statements for scripts and styles, respectively. In + version 1.3.3 of F2, the app dependency request can be overridden in the ContainerConfig. +

+
+
Override the Script Loader
+ +

As defined in the AppManifest, each F2 App can have script file + dependencies. These are defined as + URLs in the AppManifest.scripts property (type array). The + script loader can be replaced with any script loading mechanism such as those found + in RequireJS, jQuery or HeadJS.

+ +

To override the script loader, assign a function to loadScripts in + F2.init as shown below. The function is passed scripts + (array) and callback (function) which needs to be called when all + scripts have been loaded.

+
F2.init({
     loadScripts: function(scripts,callback){
-        //perform script loading
-        callback();
+    //perform script loading
+    callback();
     }
-});
-

The following example demonstrates using HeadJS to load script dependencies:

-
F2.init({
+    });
+

The following example demonstrates using HeadJS to load script + dependencies:

+
F2.init({
     loadStyles: function(scripts,callback){
-        head.load(scripts, function(){
-            callback();
-        });
+    head.load(scripts, function(){
+    callback();
+    });
     }
-});
-

Important The callback function must be executed on completion of the script loading so F2 can continue registering apps.

-
-
-
Override the Stylesheet Loader
-

As defined in the AppManifest, each F2 App can have stylesheet file dependencies. These are defined as URLs in the AppManifest.styles property. The stylesheet loader can be replaced with any stylesheet loading mechanism such as those found in HeadJS or LazyLoad.

-

To override the stylesheet loader, assign a function to loadStyles in F2.init as shown below. The function is passed styles (array) and callback (function) which needs to be called when all stylesheets have been loaded.

-
F2.init({
+    });
+

Important The callback + function must be executed on completion of the script loading so F2 can continue + registering apps.

+
+
+
Override the Stylesheet Loader
+ +

As defined in the AppManifest, each F2 App can have stylesheet file + dependencies. These are defined as + URLs in the AppManifest.styles property. The stylesheet loader + can be replaced with any stylesheet loading mechanism such as those found in HeadJS or LazyLoad.

+ +

To override the stylesheet loader, assign a function to loadStyles in + F2.init as shown below. The function is passed styles + (array) and callback (function) which needs to be called when all + stylesheets have been loaded.

+
F2.init({
     loadStyles: function(styles,callback){
-        //perform stylesheet loading
-        callback();
+    //perform stylesheet loading
+    callback();
     }
-});
-

The following example demonstrates using HeadJS to load stylesheet dependencies:

-
F2.init({
+    });
+

The following example demonstrates using HeadJS to load stylesheet + dependencies:

+
F2.init({
     loadStyles: function(styles,callback){
-        head.load(styles, function(){
-            callback();
-        });
+    head.load(styles, function(){
+    callback();
+    });
     }
-});
-

Important The callback function must be executed on completion of the stylesheet loading so F2 can continue registering apps.

-
-
-
Override the Inline Script Loader
-

As defined in the AppManifest, each F2 App can have inline script dependencies. These are defined as strings in the AppManifest.inlineScripts property (type array). The inline script evaluator can be replaced with any script evaluator, however, it is expected Container Developers will not require an alternative to the eval currently in use.

-

To override the inline script evaluator, assign a function to loadInlineScripts in F2.init as shown below. The function is passed inlines (array) and callback (function) which needs to be called when all inline scripts have been evaluated.

-
F2.init({
+    });
+

Important The callback + function must be executed on completion of the stylesheet loading so F2 can continue + registering apps.

+
+
+
Override the Inline Script Loader
+ +

As defined in the AppManifest, each F2 App can have inline script + dependencies. These are defined as + strings in the AppManifest.inlineScripts property (type array). + The inline script evaluator can be replaced with any script evaluator, however, it + is expected Container Developers will not require an alternative to the + eval currently in use.

+ +

To override the inline script evaluator, assign a function to + loadInlineScripts in F2.init as shown below. The function + is passed inlines (array) and callback (function) which + needs to be called when all inline scripts have been evaluated.

+
F2.init({
     loadInlineScripts: function(inlines,callback){
-        //perform inline script evaluation
-        callback();
+    //perform inline script evaluation
+    callback();
     }
-});
-

Important The callback function must be executed on completion of the script loading so F2 can continue registering apps.

-

Note This Container Config option was added not because it is expected Container Developers will need or use it but rather to prevent unnecessary scripting in the script override config option.

-
-
-
-

Supported Views

-

F2 Container Developers should define which app views their container supports. This is set in the supportedViews property of the ContainerConfig using F2.Constants.Views.

-
F2.init({
-    supportedViews: [F2.Constants.Views.HOME, F2.Constants.Views.SETTINGS, F2.Constants.Views.REMOVE]
-});
-

Note Every F2 app has a home view (whether defined by the App Developer or not). This means if no views are provided by the App Developer, a home view is automatically added to appConfig.views during the app registration process inside F2.

-
-
-

Secure Apps

-

For information about how to configure secure apps (i.e., load 3rd party apps in an isolated iframe) on a container, read about Secure Apps.

-
-
-

Container Templates

-

If you're looking for sample container HTML template code, jump to the Get Started section.

-
-
-
-
-
-

App Integration

-

There are two ways of integrating apps on a container: requesting apps on-demand (via HTTP) or by linking pre-loaded apps. Requesting apps on-demand when the container loads is the traditional way of integrating apps with F2. Incorporating apps which have been pre-fetched or are otherwise already on the container when it loads is an alternative method. The following sections describe both of these methods in detail.

-

The process of loading apps on a container occurs by using a method called F2.registerApps(). The Container Developer must call this method—which accepts two arguments: one required, one optional— after F2.init() is called. If this method isn't called, no apps can be loaded on the container.

-

The two arguments provided to registerApps() are an array of AppConfig objects and, optionally, an array of AppManifest objects. As F2.js parses each AppConfig, the apps are validated, hydrated with some additional properties, and saved in browser memory on the container. Regardless of where the container's AppConfig object is defined (hard-coded or via API), integrating apps is a simple process.

-
-

AppConfigs

-

Before continuing, let's discuss the AppConfig. The container-provided app configurations are represented simply as an array of AppConfig objects. These could be configured statically or fetched from an F2 Registry API. AppConfig objects contain app meta data—including the manifestUrl—provided by the App Developer when an app is registered in the Developer Center.

-

An example AppConfig object from an individual app:

+ }); +

Important The callback + function must be executed on completion of the script loading so F2 can continue + registering apps.

+ +

Note This Container Config option was added not + because it is expected Container Developers will need or use it but rather to + prevent unnecessary scripting in the script override config + option.

+
+
+
+

Supported Views

+ +

F2 Container Developers should define which app + views their container supports. This is set in the supportedViews + property of the ContainerConfig using F2.Constants.Views. +

+
F2.init({
+    supportedViews: [F2.Constants.Views.HOME,
+    F2.Constants.Views.SETTINGS, F2.Constants.Views.REMOVE]
+    });
+

Note Every F2 app has a home view + (whether defined by the App Developer or not). This means if no views are provided by + the App Developer, a home view is automatically added to appConfig.views + during the app registration process inside F2.

+
+
+

Secure Apps

+ +

For information about how to configure secure apps (i.e., load 3rd party apps in an + isolated iframe) on a container, read about Secure + Apps.

+
+
+

Container Templates

+ +

If you're looking for sample container HTML template code, jump to the Get Started section.

+
+
+
+
+
+

App Integration

+ +

There are two ways of integrating apps on a container: requesting + apps on-demand (via HTTP) or by linking pre-loaded + apps. Requesting apps on-demand when the container loads is the traditional way of + integrating apps with F2. Incorporating apps which have been pre-fetched or are otherwise + already on the container when it loads is an alternative method. The following sections describe + both of these methods in detail.

+ +

The process of loading apps on a container occurs by using a method called F2.registerApps(). + The Container Developer must call this method—which accepts + two arguments: one required, one optional— after F2.init() is called. If this + method isn't called, no apps can be loaded on the container.

+ +

The two arguments provided to registerApps() are an array of AppConfig + objects and, optionally, an array of AppManifest objects. As F2.js parses each + AppConfig, the apps are validated, hydrated with some additional properties, and + saved in browser memory on the container. Regardless of where the container's + AppConfig object is defined (hard-coded or via API), integrating apps is a simple + process.

+
+

AppConfigs

+ +

Before continuing, let's discuss the AppConfig. The container-provided app + configurations are represented simply as an array of AppConfig objects. These could be + configured statically or fetched from an F2 Registry API. AppConfig objects + contain app meta data—including the manifestUrl—provided by the App Developer + when an app is registered in the Developer Center. +

+ +

An example AppConfig object from an individual app:

{
     appId: "com_companyName_appName",
     manifestUrl: "http://www.domain.com/manifest.js",
     name: "App name",
     context: {
-        data: [1,2,3,4,5]
+    data: [1,2,3,4,5]
     }
-}
-

An example array of AppConfig objects for a collection of apps:

+ } +

An example array of AppConfig objects for a collection of apps:

[
     {
-        appId: "com_companyName_appName",
-        manifestUrl: "http://www.domain.com/manifest.js",
-        name: "App name",
-        context: {
-            data: [1,2,3,4,5]
-        }
+    appId: "com_companyName_appName",
+    manifestUrl: "http://www.domain.com/manifest.js",
+    name: "App name",
+    context: {
+    data: [1,2,3,4,5]
+    }
     },
     {
-        appId: "com_companyName_appName2",
-        manifestUrl: "http://www.domain.com/manifest2.js",
-        name: "App2 name",
-        context: {
-            name: 'value'
-        }
+    appId: "com_companyName_appName2",
+    manifestUrl: "http://www.domain.com/manifest2.js",
+    name: "App2 name",
+    context: {
+    name: 'value'
+    }
     },
     {
-        appId: "com_companyName_appName3",
-        manifestUrl: "http://www.domain.com/manifest3.js",
-        name: "App3 name",
-        context: {
-            status: 'ok'
-        }
+    appId: "com_companyName_appName3",
+    manifestUrl: "http://www.domain.com/manifest3.js",
+    name: "App3 name",
+    context: {
+    status: 'ok'
+    }
     },
-];
-
-
-

Requesting Apps On-Demand

-

Requesting apps on-demand when the container loads is the traditional way of integrating apps with F2. For the purposes of this example, we will use an example news app from OpenF2.org.

-

Let's look at some container code.

-
-

Static App Configuration

-

First, we define the AppConfig in a hard-coded _appConfig variable. This example demonstrates only a single app; if there were multiple apps, _appConfig would be an array of objects versus an object literal. Secondly, when the document is ready, F2.init() is called and subsequently F2.registerApps() with the single argument.

- - -

This javascript code will insert the example news app into the container's <body>. Press Result in the jsfiddle above to try this demo.

-

Note If more granular control is needed for app placement, use F2.AppHandlers functionality. Read about that in AppHandlers for App Layout.

-
-
-

Dynamic App Configuration

-

As an alternative to static app configuration shown above, the _appConfig variable could be assigned the result of an API call to the F2 Registry. The Registry API response is designed to match the structure of the AppConfig for passing the JSON straight through to F2 in your code. Whether your app configuration JSON comes from the F2 Registry or your own database is irrelevant; the process is identically the same as shown in this example.

- - -

About this jsfiddle To simulate an ajax request, this example uses jsfiddle's echo feature. Simply replace the getAppConfigs function with your own ajax request and ignore the echoData variable.

-
-
-
-

Batch Requesting Apps

-

F2 supports batch requesting of multiple apps hosted on the same domain. The default app registration process sends a single outbound HTTP request for each app registered with F2. For example, when registering five apps, five HTTP requests would be made for each app's AppManifest. Implementing the same five apps using a batch request would result in only a single HTTP request thus greatly speeding up page performance.

-

Implementing F2 container code for apps to be requested in a batch is as simple as setting the AppConfig.enableBatchRequests property to true. The only additional requirement is that the apps to-be-batched must have the same AppConfig.manifestUrl value. That is, the batched apps must be on the same domain.

-
-

Example

- - -

Open your browser developer tools to see the single HTTP request to http://www.openf2.org/Examples/Apps. You could modify this jsFiddle and set one of the AppConfig enableBatchRequests to false. Then re-run the code to see two HTTP requests sent in your developer tools.

-
-

-Important -

- -The params querystring value for both batch-requested and non-batch-requested apps is a serialized collection of AppConfigs. In a scenario when many apps are batch-requested it would be possible to quickly reach the maximum HTTP GET character limit. In IE that limit is 2048 characters, it is longer in more modern browsers. To work around this issue, F2 recommends either configuring HTTP POST if the container and apps are on the same domain or by implementing CORS. -
+ ]; +
+
+

Requesting Apps On-Demand

+ +

Requesting apps on-demand when the container loads is the traditional way of integrating apps + with F2. For the purposes of this example, we will use an example news app from OpenF2.org.

+ +

Let's look at some container code.

+
+

Static App Configuration

+ +

First, we define the AppConfig in a hard-coded + _appConfig variable. This example demonstrates only a single app; if there + were multiple apps, _appConfig would be an array of objects versus an + object literal. Secondly, when the document is ready, F2.init() is called + and subsequently F2.registerApps() with the single argument.

+ + +

This javascript code will insert the example news app into the container's <body>. + Press Result in the jsfiddle above to try this demo.

+ +

Note If more granular control is needed for app + placement, use F2.AppHandlers functionality. Read about that in AppHandlers for App Layout.

+
+
+

Dynamic App Configuration

+ +

As an alternative to static app configuration shown above, the _appConfig + variable could be assigned the result of an API call to the F2 Registry. The Registry API response is + designed to match the structure of the AppConfig for passing the JSON + straight through to F2 in your code. Whether your app configuration JSON comes from the + F2 Registry or your own database is irrelevant; the process is identically the same as + shown in this example.

+ + +

About this jsfiddle To simulate an ajax request, + this example uses jsfiddle's echo + feature. Simply replace the getAppConfigs function with your own + ajax request and ignore the echoData variable.

+
+
+
+

Batch Requesting Apps

+ +

F2 supports batch requesting of multiple apps hosted on the same domain. The default app + registration process sends a single outbound HTTP request for each app registered + with F2. For example, when registering five apps, five HTTP requests would be made for each + app's AppManifest. Implementing the same five apps using a batch request would + result in only a single HTTP request thus greatly speeding up page performance.

+ +

Implementing F2 container code for apps to be requested in a batch is as simple as setting + the AppConfig.enableBatchRequests property to true. The only + additional requirement is that the apps to-be-batched must have the same AppConfig.manifestUrl + value. That is, the batched apps must be on the same domain.

+
+

Example

+ -

Note For more information about the AppConfig, read up on them at the top of App Integration.

-
-
-
-

Registering Pre-Loaded Apps

-

Incorporating apps which have been pre-loaded or are otherwise already on the container when it loads is an alternative method to integrating F2 apps. This method is useful when the container is being constructed on the server-side (at run-time or on a schedule) and F2 functionality is desired. To use pre-loaded apps, the Container Developer is required to make a request to each app's AppManifest and its dependencies before the page is rendered.

-

For the following example, let's assume you have a web page composed on the server and all of its HTML is delivered to the browser in one payload. This page also has at least one widget (or component) you'd like to register with F2.js.

-
-

1. Setup Container

-

To use pre-loaded apps, a web page with a placeholder element for the apps is required. This simple (and empty) web page features a div#news_app.span12 which serves as that placeholder or "root" element.

+

Open your browser developer tools to see the single HTTP request to http://www.openf2.org/Examples/Apps. + You could modify this jsFiddle and set one of the AppConfig enableBatchRequests + to false. Then re-run the code to see two HTTP requests sent in + your developer tools.

+ +
+

+ Important +

+ + The params querystring value for both batch-requested and + non-batch-requested apps is a serialized + collection of AppConfigs. In a scenario when many apps are batch-requested it would + be possible to quickly reach the maximum HTTP GET character limit. In IE that limit is 2048 + characters, it is longer in more modern browsers. To work around this issue, F2 + recommends either configuring HTTP POST + if the container and apps are on the same domain or by implementing CORS. +
+ +

Note For more information about the + AppConfig, read up on them at the top of App + Integration.

+
+
+
+

Registering Pre-Loaded Apps

+ +

Incorporating apps which have been pre-loaded or are otherwise already on the container when + it loads is an alternative method to integrating F2 apps. This method is useful when the + container is being constructed on the server-side (at run-time or on a schedule) and F2 + functionality is desired. To use pre-loaded apps, the Container Developer is required to + make a request to each app's AppManifest and its dependencies before + the page is rendered.

+ +

For the following example, let's assume you have a web page composed on the server and all of + its HTML is delivered to the browser in one payload. This page also has at least one widget + (or component) you'd like to register with F2.js.

+
+

1. Setup Container

+ +

To use pre-loaded apps, a web page with a placeholder element for the apps is required. + This simple (and empty) web page features a div#news_app.span12 which + serves as that placeholder or "root" element.

<!DOCTYPE html>
     <head>
-        <title>F2 Container</title>
-        <link rel="stylesheet" href="/path/to/your/bootstrap.css">
+    <title>F2 Container</title>
+    <link rel="stylesheet" href="/path/to/your/bootstrap.css">
     </head>
     <body>
-        <div class="container">
-            <div class="row">
-                <div class="span12" id="news_app">
-                    <!--app goes here-->
-                </div>
-            </div>
-        </div>
-        <script src="/path/to/your/F2.js"></script>
+    <div class="container">
+    <div class="row">
+    <div class="span12" id="news_app">
+    <!--app goes here-->
+    </div>
+    </div>
+    </div>
+    <script src="/path/to/your/F2.js"></script>
     </body>
-</html>
-
-
-

2. Request AppManifest

-

Next, make a server-side request to the news app's AppManifest—the URL is found in manifestUrl—and capture the resulting JSON. Each AppManifest contains scripts, style sheets and HTML (more about the AppManifest). The market news app's AppManifest looks like this:

+ </html> +
+
+

2. Request AppManifest

+ +

Next, make a server-side request to the news app's AppManifest—the URL is + found in manifestUrl—and capture the resulting JSON. Each + AppManifest contains scripts, style sheets and HTML (more about the AppManifest). + The market news app's AppManifest looks like this:

{
-   "apps":[{
-         "data":{},
-         "html": "<div data-module-name=\"MarketNewsApp\">...</div>",
+    "apps":[{
+    "data":{},
+    "html": "<div data-module-name=\"MarketNewsApp\">...</div>",
     }],
-   "scripts":[
-      "http://www.openf2.org/js/main.js"
-   ],
-   "styles":[
-      "http://www.openf2.org/css/site.css"
-   ]
-}
-

Note Parts of this AppManifest were intentionally removed for legibility, including the required JSONP function name (F2_jsonpCallback_com_openf2_examples_csharp_marketnews). The full AppManifest is available on OpenF2.org.

-
-
-Performance Tip -
- -Container Developers can use the AppConfig and pre-loaded AppManifest (from step 2 above) in conjunction with F2.registerApps() to speed up the loading of F2 containers. For more information, browse to Combining AppConfig and AppManifest. -
+ "scripts":[ + "http://www.openf2.org/js/main.js" + ], + "styles":[ + "http://www.openf2.org/css/site.css" + ] + } +

Note Parts of this AppManifest were + intentionally removed for legibility, including the required JSONP function name (F2_jsonpCallback_com_openf2_examples_csharp_marketnews). + The full AppManifest is available + on OpenF2.org.

+ +
+
+ Performance Tip +
-
-
-

3. Add App to Container

-

You're almost there. Next, embed the news app's html, scripts and styles. The F2 app is inserted into .row > .span12 following Bootstrap's scaffolding guidelines. The styles were appended to the head and the scripts were appended to the body (in this case just one URL for each).

+ Container Developers can use the AppConfig and pre-loaded + AppManifest (from step 2 above) in conjunction with + F2.registerApps() to speed up the loading of F2 containers. For more + information, browse to Combining + AppConfig and AppManifest. +
+ + +
+

3. Add App to Container

+ +

You're almost there. Next, embed the news app's html, scripts + and styles. The F2 app is inserted into .row > .span12 + following Bootstrap's + scaffolding guidelines. The styles were appended to the + head and the scripts were appended to the body + (in this case just one URL for each).

<!DOCTYPE html>
     <head>
-        <title>F2 Container</title>
-        <link rel="stylesheet" href="/path/to/your/bootstrap.css">
-        <link rel="stylesheet" href="http://www.openf2.org/css/site.css">
+    <title>F2 Container</title>
+    <link rel="stylesheet" href="/path/to/your/bootstrap.css">
+    <link rel="stylesheet" href="http://www.openf2.org/css/site.css">
     </head>
     <body>
-        <div class="container">
-            <div class="row">
-                <div class="span12" id="news_app">
-                    <div data-module-name="MarketNewsApp" id="news_app">...</div>
-                </div>
-            </div>
-        </div>
-        <script src="/path/to/your/F2.js"></script>
-        <script src="http://www.openf2.org/js/main.js"></script>
+    <div class="container">
+    <div class="row">
+    <div class="span12" id="news_app">
+    <div data-module-name="MarketNewsApp" id="news_app">...</div>
+    </div>
+    </div>
+    </div>
+    <script src="/path/to/your/F2.js"></script>
+    <script src="http://www.openf2.org/js/main.js"></script>
     </body>
-</html>
-

The example news app is now part of the web page and everything should be functioning properly. The final step is to register the app with F2.

-
-
-

4. Assign Root Element to AppConfig

-

To use pre-loaded apps, an additional property is required on the AppConfig object. It is called root and can be either a CSS selector string or a DOM element. Regardless of type, F2 will parse the value of root and it must return an existing in-page DOM element. Furthermore, the value of root must represent a unique DOM element as each app needs its own containing, or root, element.

+ </html> +

The example news app is now part of the web page and everything should be functioning + properly. The final step is to register the app with F2.

+
+
+

4. Assign Root Element to AppConfig

+ +

To use pre-loaded apps, an additional property is required on the AppConfig + object. It is called root and can be either a CSS selector string + or a DOM element. Regardless of type, F2 will parse the value of + root and it must return an existing in-page DOM element. Furthermore, the + value of root must represent a unique DOM element as each app + needs its own containing, or root, element.

var _appConfig = {
     appId: 'com_openf2_examples_csharp_marketnews',
     description: 'Example News',
     manifestUrl: 'http://www.openf2.org/Examples/Apps',
     name: 'Example News',
-    root: document.getElementById('news_app')
-};
-

Both of these are valid values for the root property.

-

Using JavaScript:

+ root: document.getElementById('news_app') + }; +

Both of these are valid values for the root property.

+ +

Using JavaScript:

{
-    root: document.getElementById('news_app')
-}
-

Using a CSS selector string:

+ root: document.getElementById('news_app') + } +

Using a CSS selector string:

{
     root: '#news_app'
-}
-

F2.js uses jQuery internally to parse the value of the root property and, in turn, jQuery relies on the Sizzle javascript selector library. If a CSS selector string is assigned to root, it must be a valid CSS 3 selector supported by Sizzle. Refer to the Sizzle documentation for more details.

-
-
-

5. Register App

-

Since you started with the AppConfig and now have the AppManifest from step 2 along with an HTML page containing the embedded app, all that remains is a simple call to F2. Registering pre-loaded apps with F2.js means passing the ammended AppConfig as shown in the example below.

+ } +

F2.js uses jQuery internally to parse the value of the root property and, in + turn, jQuery relies on the Sizzle javascript selector + library. If a CSS selector string is assigned to root, it must be a + valid CSS 3 selector supported by Sizzle. Refer to the Sizzle + documentation for more details.

+
+
+

5. Register App

+ +

Since you started with the AppConfig and now have the + AppManifest from step 2 along with an HTML page containing the embedded + app, all that remains is a simple call to F2. Registering pre-loaded apps with F2.js + means passing the ammended AppConfig as shown in the example below.

var _appConfig = {
     appId: 'com_openf2_examples_csharp_marketnews',
     description: 'Example News',
     manifestUrl: 'http://www.openf2.org/Examples/Apps',
     name: 'Example News',
-    root: document.getElementById('news_app')
-};
+    root: document.getElementById('news_app')
+    };
 
-$(function(){
+    $(function(){
     F2.init();
     F2.registerApps(_appConfig);
-});
-

The web page and pre-loaded news app is a fully F2-enabled container. Rejoice!

-
- -
-

Combining AppConfig and AppManifest

-

Container Developers can use the AppConfig and pre-loaded AppManifest (from step 2 above) in conjunction with F2.registerApps() to speed up the loading of F2 containers. The F2.registerApps() API supports two arguments: appConfigs and appManifests. The former is an array of F2.AppConfig objects and the latter is an array of F2.AppManifest objects. The appManifests array must be the same length as the appConfigs array that is used as the first argument. This can be useful if apps are loaded on the server-side and passed down to the client.

-

In the following example, the AppManifest was pre-loaded and stored in the _appManifest variable.

+ }); +

The web page and pre-loaded news app is a fully F2-enabled container. Rejoice!

+
+ +
+

Combining AppConfig and AppManifest

+ +

Container Developers can use the AppConfig and pre-loaded + AppManifest (from step 2 above) in + conjunction with F2.registerApps() to speed up the loading of F2 containers. + The F2.registerApps() API + supports two arguments: appConfigs and appManifests. The + former is an array of F2.AppConfig + objects and the latter is an array of F2.AppManifest objects. + The appManifests array must be the same length as the appConfigs + array that is used as the first argument. This can be useful if apps are loaded on the + server-side and passed down to the client.

+ +

In the following example, the AppManifest was pre-loaded and stored in the + _appManifest variable.

var _appConfig = {
     appId: 'com_openf2_examples_csharp_marketnews',
     description: 'Example News',
     manifestUrl: 'http://www.openf2.org/Examples/Apps',
     name: 'Example News',
-    root: document.getElementById('news_app')
-};
+    root: document.getElementById('news_app')
+    };
 
-var _appManifest = {
-   "apps":[{
-         "data":{},
-         "html": "<div data-module-name=\"MarketNewsApp\">...</div>",
+    var _appManifest = {
+    "apps":[{
+    "data":{},
+    "html": "<div data-module-name=\"MarketNewsApp\">...</div>",
     }],
-   "scripts":[
-      "http://www.openf2.org/js/main.js"
-   ],
-   "styles":[
-      "http://www.openf2.org/css/site.css"
-   ]
-};
-
-$(function(){
+    "scripts":[
+    "http://www.openf2.org/js/main.js"
+    ],
+    "styles":[
+    "http://www.openf2.org/css/site.css"
+    ]
+    };
+
+    $(function(){
     F2.init();
     F2.registerApps(_appConfig,_appManifest);
-});
-

Important The F2.registerApps() API supports both an array of objects and object literals for each argument. Internally, F2.js converts the value of each argument into an array using concatenation ([].concat()). If arrays of objects are used (when there are more than one app on the container), the _appConfig and _appManifest arrays must be of equal length, and the object at each index must be a parallel reference. This means the AppConfig and AppManifest for the sample news app used above must be in _appConfig[0] and _appManifest[0].

-
-
- -
-

AppHandlers for App Layout

-

New functionality called F2.AppHandlers was added in F2 1.2, and the conversation about this collection of features occurred in #38 on GitHub. The new AppHandlers functionality provides Container Developers a higher level of control over configuring app rendering and interaction.

-

-The addition of F2.AppHandlers replaces the previous ContainerConfig properties beforeAppRender, appRender, and afterAppRender. These methods were deprecated—but not removed—in version 1.2. They will be permanently removed in a future version of F2. -

- -

-Starting with F2 version 1.2, AppHandlers is the preferred method for Container Developers to manage app layout. -

- -

The AppHandlers functionality provides an event-based system for Container Developers' web applications. The addition of a collection of constants in F2.Constants.AppHandlers shows the primitive set of event types (or hooks) available to developers, including hooks such as appCreateRoot, appRenderAfter, appDestroyAfter and more. (Review the complete F2.Constants.AppHandlers collection in the F2.js SDK documentation.)

-

Using AppHandlers is as simple as attaching an event handler function to be executed at the appropriate time as determined by the order of operations in F2. To do this there are three functions available on F2.AppHandlers: getToken, on, and off. We'll review the token concept first as a token is the required first argument in on and off.

-
-

AppHandler Tokens

-

A new feature has been added to F2 as part of AppHandlers: the event token. The token is designed to be used only by Container Developers to ensure the AppHandlers listeners are only called by their applications, and aren't accessible to App Developers' code. Container Developers should create a variable for this token in their JavaScript and encapsulate it inside a closure as shown in the example below.

+ }); +

Important The F2.registerApps() API + supports both an array of objects and object literals for each argument. Internally, F2.js + converts the value of each argument into an array using concatenation + ([].concat()). If arrays of objects are used (when there are more than one app + on the container), the _appConfig and _appManifest arrays must be + of equal length, and the object at each index must be a parallel reference. This means the + AppConfig and AppManifest for the sample news app used above must + be in _appConfig[0] and _appManifest[0].

+
+
+
+
+

AppHandlers for App Layout

+ +

New functionality called F2.AppHandlers was added in F2 1.2, and the conversation + about this collection of features occurred in #38 + on GitHub. The new AppHandlers functionality provides Container Developers a higher + level of control over configuring app rendering and interaction.

+ +

+ The addition of F2.AppHandlers replaces the previous ContainerConfig + properties beforeAppRender, appRender, and afterAppRender. + These methods were deprecated—but not removed—in version 1.2. They will be permanently removed + in a future version of F2. +

+ +

+ Starting with F2 version 1.2, AppHandlers is the preferred method for Container + Developers to manage app layout. +

+ +

The AppHandlers functionality provides an event-based system for Container + Developers' web applications. The addition of a collection of constants in F2.Constants.AppHandlers + shows the primitive set of event types (or hooks) available to developers, including hooks such + as appCreateRoot, appRenderAfter, appDestroyAfter and + more. (Review the complete F2.Constants.AppHandlers collection in the F2.js SDK documentation.)

+ +

Using AppHandlers is as simple as attaching an event handler function to be executed + at the appropriate time as determined by the order of operations in F2. To do this there are + three functions available on F2.AppHandlers: getToken, on, + and off. We'll review the token concept first as a token is the required first + argument in on and off.

+
+

AppHandler Tokens

+ +

A new feature has been added to F2 as part of AppHandlers: the event token. The + token is designed to be used only by Container Developers to ensure the + AppHandlers listeners are only called by their applications, and aren't + accessible to App Developers' code. Container Developers should create a variable for this + token in their JavaScript and encapsulate it inside a closure as shown in the example below. +

(function(){
-    var token = F2.AppHandlers.getToken(); 
+    var token = F2.AppHandlers.getToken();
     console.log(token);
     //outputs a GUID like 'ce2e7aae-04fa-96a3-edd7-be67e99937b4'
-});
-

Important The getToken() function can only be called one-time. It self-destructs to protect the token for Container Developers and therefore Container Developers must call F2.AppHandlers.getToken() and store its return value before any F2 apps are registered with the container.

-
-
-

Default App Layout

-

In the unlikely event a Container Developer wishes to append all apps to the <body> element, no configuration is required. Simply add this code to the container:

-
F2.init();
-F2.registerApps(appConfig);
-

Appending apps to the <body> is the default app rendering behavior of F2.

-
-
-

Custom App Layout

-

F2 AppHandlers provide event handlers for customized app layout using F2.AppHandlers.on() and F2.AppHandlers.off(). The use of on and off require both a token and an event type as arguments. The event types, defined as constants in F2.Constants.AppHandlers, are:

-
    -
  • appCreateRoot
  • -
  • appDestroy
  • -
  • appDestroyAfter
  • -
  • appDestroyBefore
  • -
  • appRender
  • -
  • appRenderAfter
  • -
  • appRenderBefore
  • -
-

Review the complete F2.Constants.AppHandlers collection and their purpose in the F2.js SDK documentation. The order of operations is detailed in F2.AppHandlers.

-
-

Appending an App to a DOM Element

-

There are many uses for AppHandlers in Container Developers' applications and they are detailed—including plenty of examples—in the F2.js SDK documentation. Before jumping to that section of the docs, let's look at one of the more common uses for AppHandlers: targeting the placement of an app into a specific DOM element.

-

In the following example, the app will be appended to the #my_sidebar DOM element on the container.

-
var _token = F2.AppHandlers.getToken(),
+    });
+

Important The getToken() function can + only be called one-time. It self-destructs to protect the token for Container Developers and + therefore Container Developers must call F2.AppHandlers.getToken() and store + its return value before any F2 apps are registered with the container.

+
+
+

Default App Layout

+ +

In the unlikely event a Container Developer wishes to append all apps to the <body> + element, no configuration is required. Simply add this code to the container:

+
F2.init();
+    F2.registerApps(appConfig);
+

Appending apps to the <body> is the default app rendering behavior of F2. +

+
+
+

Custom App Layout

+ +

F2 AppHandlers provide event handlers for customized app layout using F2.AppHandlers.on() + and F2.AppHandlers.off(). The use of on and off + require both a token and an event type as arguments. The + event types, defined as constants in F2.Constants.AppHandlers, are:

+
    +
  • appCreateRoot
  • +
  • appDestroy
  • +
  • appDestroyAfter
  • +
  • appDestroyBefore
  • +
  • appRender
  • +
  • appRenderAfter
  • +
  • appRenderBefore
  • +
+

Review the complete F2.Constants.AppHandlers collection and their purpose in the F2.js SDK documentation. The + order of operations is detailed in F2.AppHandlers. +

+
+

Appending an App to a DOM Element

+ +

There are many uses for AppHandlers in Container Developers' applications + and they are detailed—including plenty of examples—in the F2.js SDK documentation. Before + jumping to that section of the docs, let's look at one of the more common uses for + AppHandlers: targeting the placement of an app into a specific DOM element. +

+ +

In the following example, the app will be appended to the #my_sidebar DOM + element on the container.

+
var _token = F2.AppHandlers.getToken(),
     _appConfig = {
-        appId: 'com_example_app',
-        manifestUrl: '/manifest.js'
+    appId: 'com_example_app',
+    manifestUrl: '/manifest.js'
     };
 
-F2.init();
-F2.AppHandlers.on(_token, 'appRender', document.getElementById('my_sidebar'));
-F2.registerApps(_appConfig);
-

F2 will insert html from the AppManifest inside the specified DOM element. The resulting HTML will look like this after registerApps is called. Take note F2.js adds three class names to the app's outermost element (f2-app, f2-app-container, and com_example_app for the appId).

-
<div id="my_sidebar">
+    F2.init();
+    F2.AppHandlers.on(_token, 'appRender', document.getElementById('my_sidebar'));
+    F2.registerApps(_appConfig);
+

F2 will insert html from the AppManifest inside the specified + DOM element. The resulting HTML will look like this after registerApps is + called. Take note F2.js adds three class names to the app's outermost element (f2-app, + f2-app-container, and com_example_app for the + appId).

+
<div id="my_sidebar">
     <!--HTML defined in AppManifest inserted here-->
-    <div class="f2-app f2-app-container com_example_app">
-        <div class="f2-app-view" data-f2-view="home">
-            <p>Hello World!</p>
-        </div>
+    <div class="f2-app f2-app-container com_example_app">
+    <div class="f2-app-view" data-f2-view="home">
+    <p>Hello World!</p>
     </div>
-</div>
-

Note The original html in this example app manifest is available here.

-

The jsfiddle below demonstrates a Hello World example using the appRender event type and a DOM element as the third argument in on.

- - -
-
-

Placing Apps in Separate Locations

-

Here is a slightly more complicated example of the appRender event coupled with appCreateRoot to place two apps in two separate DOM elements.

- - -
-
-

More AppHandlers

-

There are numerous examples shown on the Properties tab of F2.Constants.AppHandlers. These demonstrate more advanced use of F2.AppHandlers and aim to provide Container Developers demonstrable low-level control over the life-cycle of app rendering.

-
-
-
-
-
-

Namespacing

-

F2 is a web integration framework which means apps are inherently insecure—at least those non-secure apps. Following this spec, App Developers must avoid CSS collisions and JavaScript namespace issues to provide users with the best possible experience.

-

Note Continue reading for more specifics about secure apps.

-
-

Namespacing CSS

-

As discussed in Developing F2 Containers: F2 ContainerID, to develop an F2 container, you need a unique identifier called an ContainerID. This ContainerID will be unique to your container across the entire open financial framework ecosystem. The format of the ContainerID looks like this: com_container_companyName_containerName, where the companyName "namespace" is your company name and containerName is the name of your container.

-

To avoid styling conflicts or other display issues related to injecting app-provided style sheets into your container when F2.registerApps() is called, App Developers must namespace their CSS selectors. While there are strict rules for App Developers, the same is true for Container Developers. This is especially true when nesting multiple F2 apps inside an existing container where that container already has a CSS framework in place. (This is often called the "mutliple container" issue, and a conversation about existing problems and enhancements to F2.js is being discussed in #37 and #38.)

-

In the event there are multiple containers, every CSS selector in container-provided style sheets must be properly namespaced. The CSS files bundled with the example containers in the F2 project on GitHub demonstrate this concept, and we have included a readme for how to use a LESS compiler to automate the namespacing of Bootstrap's CSS.

-

In this simple example, container-provided CSS should be namespaced as shown below.

-
.com_container_companyName_containerName p {
+    </div>
+    </div>
+

Note The original html in this example + app manifest is available + here.

+ +

The jsfiddle below demonstrates a Hello World example using the appRender + event type and a DOM element as the third argument in on.

+ + +
+
+

Placing Apps in Separate Locations

+ +

Here is a slightly more complicated example of the appRender event coupled + with appCreateRoot to place two apps in two separate DOM elements.

+ + +
+
+

More AppHandlers

+ +

There are numerous examples shown on the Properties tab of F2.Constants.AppHandlers. + These demonstrate more advanced use of F2.AppHandlers and aim to provide + Container Developers demonstrable low-level control over the life-cycle of app + rendering.

+
+
+
+
+
+

Namespacing

+ +

F2 is a web integration framework which means apps are inherently insecure—at least + those non-secure apps. Following this spec, App Developers must avoid CSS collisions + and JavaScript namespace issues to provide users with the best possible experience.

+ +

Note Continue reading for more specifics about + secure apps.

+
+

Namespacing CSS

+ +

As discussed in Developing F2 Containers: F2 ContainerID, to + develop an F2 container, you need a unique identifier called an ContainerID. This + ContainerID will be unique to your container across the entire open financial framework + ecosystem. The format of the ContainerID looks like this: com_container_companyName_containerName, + where the companyName "namespace" is your company name and containerName + is the name of your container.

+ +

To avoid styling conflicts or other display issues related to injecting app-provided style + sheets into your container when F2.registerApps() is called, App Developers must namespace their CSS selectors. + While there are strict rules for App Developers, the same is true for Container + Developers. This is especially true when nesting multiple F2 apps inside an + existing container where that container already has a CSS framework in place. (This is often + called the "mutliple container" issue, and a conversation about existing problems + and enhancements to F2.js is being discussed in #37 and #38.)

+ +

In the event there are multiple containers, every CSS selector in container-provided style + sheets must be properly namespaced. The CSS files + bundled with the example containers in the F2 project on GitHub demonstrate this + concept, and we have included a readme + for how to use a LESS compiler to automate the namespacing of Bootstrap's CSS.

+ +

In this simple example, container-provided CSS should be namespaced as shown below.

+
.com_container_companyName_containerName p {
     padding:5px;
-}
+    }
 
-.com_container_companyName_containerName .alert {
+    .com_container_companyName_containerName .alert {
     color:red;
-}
-

Note .com_container_companyName_containerName is prefixed on both p and .alert selectors.

-

While the CSS cascade will assign more points to IDs and while prefixing F2 ContainerIDs on CSS selectors isn't required, it is recommended.

-
.com_container_companyName_containerName #notice {
+    }
+

Note .com_container_companyName_containerName is prefixed on both p + and .alert selectors.

+ +

While the CSS + cascade will assign more points to IDs and while prefixing F2 ContainerIDs on CSS + selectors isn't required, it is recommended.

+
.com_container_companyName_containerName #notice {
     background-color:yellow;
-}
-
-

About CSS Resets

-

It is a common web development practice to use CSS resets, and it is likely both Container and App Developers will use them. Since there are many ways to normalize built-in browser stylesheets, including Normalize.css which is used by Bootstrap, Container and App Developers must namespace their CSS reset selectors.

-
-
-

About Bootstrap 3

-

Important F2 continues to leverage Bootstrap as the means to achieve consistent HTML & CSS structures—and therefore seamless styling—between containers and apps. F2 has not upgraded to Bootstrap 3, the latest officially-supported Bootstrap version is 2.3.2. Read the blog post for more information on using Bootstrap 3 today.

-
-
-
-

Keeping JavaScript Clean

-

Adhering to one of the OpenAjax Alliance goals, F2 also promotes the concept of an uncluttered global javascript namespace. For Container and App Developers alike, this means following this spec closely and ensuring javascript code is contained inside closures or is extended as a new namespace on F2.

-

The F2.js SDK was designed with extensibility in mind and therefore custom logic can be added on the F2 namespace.

-

Example:

-
F2.extend('YourPluginName', (function(){
+    }
+
+

About CSS Resets

+ +

It is a common web development practice to use CSS resets, and it is likely + both Container and App Developers will use them. Since there are many ways to normalize + built-in browser stylesheets, including Normalize.css which is used + by Bootstrap, Container and App Developers must namespace their CSS reset selectors.

+
+
+

About Bootstrap 3

+ +

Important F2 continues to leverage Bootstrap + as the means to achieve consistent HTML & CSS structures—and therefore seamless + styling—between containers and apps. F2 has not upgraded to Bootstrap 3, the latest officially-supported Bootstrap version is + 2.3.2. Read the blog + post for more information on using Bootstrap 3 today.

+
+
+
+

Keeping JavaScript Clean

+ +

Adhering to one of the OpenAjax Alliance goals, F2 + also promotes the concept of an uncluttered global javascript namespace. For Container and + App Developers alike, this means following this spec closely and ensuring javascript code is + contained inside closures or is + extended as a new namespace on F2.

+ +

The F2.js SDK was designed with extensibility in mind and therefore custom logic can be added + on the F2 namespace.

+ +

Example:

+
F2.extend('YourPluginName', (function(){
     return {
-        doSomething: function(){
-            F2.log("Something has been done.");
-        }
+    doSomething: function(){
+    F2.log("Something has been done.");
+    }
     };
-})());
-

For more information, read Extending F2.

-
-
-
-
-

Context

-

Apps are capable of sharing "context" with the container and other nearby apps. All apps have context which means the app "knows" who is using it and the content it contains. It is aware of an individual's data entitlements and user information that the container is requested to share (name, email, company, etc).

-

This means if a user wants to create a ticker-focused container so they can keep a close eye on shares of Proctor & Gamble, the container can send "symbol context" to any listening apps that are smart enough to refresh when ticker symbol PG is entered in the container's search box.

-

While apps can have context themselves, the responsibility for managing context switching or context passing falls on the container. The container assumes the role of a traffic cop—managing which data goes where. By using JavaScript events, the container can listen for events sent by apps and likewise apps can listen for events sent by the container. To provide a layer of security, this means apps cannot communicate directly with other apps on their own; apps must communicate via an F2 container to other apps since the container controls the F2.Events API.

-

Read more in the Framework.

-
-

How to use Context

-

Each container will be responsible for hosting the F2.js JavaScript SDK. The F2 SDK not only provides the consistent mechanism app developers have come to expect for loading their apps on the container, but also contains an event API for handling context.

-

Important It is important to note that while apps can have context themselves, the responsibility for managing context switching or context passing falls on the container. The container assumes the role of a traffic cop—managing which data goes where. By using JavaScript events, the container can listen for events sent by apps and likewise apps can listen for events sent by the container. This means apps cannot communicate directly with other apps on their own; apps communicate via the container to other apps since the container controls the F2.Events API.

-

Let's look at some code.

-
-
-

Container-to-App Context

-

In this example, the container broadcasts, or emits, a javascript event defined in F2.Events.Constants. The F2.Events.emit() method accepts two arguments: the event name and an optional data object.

-
F2.Events.emit(
-    F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, 
-    { 
-        symbol: "AAPL", 
-        name: "Apple, Inc." 
+    })());
+

For more information, read Extending F2.

+
+
+
+
+

Context

+ +

Apps are capable of sharing "context" with the container and other nearby apps. All + apps have context which means the app "knows" who is using it and the content it + contains. It is aware of an individual's data entitlements and user information that the + container is requested to share (name, email, company, etc).

+ +

This means if a user wants to create a ticker-focused container so they can keep a close eye on + shares of Proctor & Gamble, the container can send "symbol context" to any + listening apps that are smart enough to refresh when ticker symbol PG is entered in the + container's search box.

+ +

While apps can have context themselves, the responsibility for managing context switching or + context passing falls on the container. The container assumes the role of a traffic cop—managing + which data goes where. By using JavaScript events, the container can listen for events sent by + apps and likewise apps can listen for events sent by the container. To provide a layer of + security, this means apps cannot communicate directly with other apps on their own; apps must + communicate via an F2 container to other apps since the container controls the F2.Events API.

+ +

Read more in the Framework.

+
+

How to use Context

+ +

Each container will be responsible for hosting the F2.js JavaScript + SDK. The F2 SDK not only provides the consistent mechanism app developers have come to + expect for loading their apps on the container, but also contains an event API for handling context.

+ +

Important It is important to note that while apps + can have context themselves, the responsibility for managing context switching or context + passing falls on the container. The container assumes the role of a traffic cop—managing + which data goes where. By using JavaScript events, the container can listen for events sent + by apps and likewise apps can listen for events sent by the container. This means apps + cannot communicate directly with other apps on their own; apps communicate via + the container to other apps since the container controls the F2.Events API.

+ +

Let's look at some code.

+
+
+

Container-to-App Context

+ +

In this example, the container broadcasts, or emits, a javascript event defined in F2.Events.Constants. + The F2.Events.emit() method accepts two arguments: the event name and an + optional data object.

+
F2.Events.emit(
+    F2.Constants.Events.CONTAINER_SYMBOL_CHANGE,
+    {
+    symbol: "AAPL",
+    name: "Apple, Inc."
     }
-);
-

To listen to the F2.Constants.Events.CONTAINER_SYMBOL_CHANGE event inside your F2 app, you can use this code to trigger an alert dialog with the symbol:

-
F2.Events.on(
-    F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, 
+    );
+

To listen to the F2.Constants.Events.CONTAINER_SYMBOL_CHANGE event inside your + F2 app, you can use this code to trigger an alert dialog with the symbol:

+
F2.Events.on(
+    F2.Constants.Events.CONTAINER_SYMBOL_CHANGE,
     function(data){
-        F2.log("The symbol was changed to " + data.symbol);
+    F2.log("The symbol was changed to " + data.symbol);
     }
-);
-

The F2.Events.on() method accepts the event name and listener function as arguments. Read the SDK for more information.

-

Note For a full list of support event types, browse to the SDK for F2.Constants.Events.

-
-
-

Container-to-App Context (Server)

-

Often times containers will want to send context to apps during app registration. This is possible through the AppConfig.context property. This property can contain any javascript object—a string, a number, an array or an object.

+ ); +

The F2.Events.on() method accepts the event name and listener function as + arguments. Read the SDK for more information.

+ +

Note For a full list of support event types, browse to the SDK for + F2.Constants.Events.

+
+
+

Container-to-App Context (Server)

+ +

Often times containers will want to send context to apps during app registration. This is possible + through the AppConfig.context property. This property can contain + any javascript object—a string, a number, an array or an object.

//define app config
-var _appConfigs = [
+    var _appConfigs = [
     {
-        appId: "com_acmecorp_news",
-        description: "Acme Corp News",
-        manifestUrl: "http://www.acme.com/apps/news-manifest.js",
-        name: "Acme News App",
-        context: {
-            sessionId: myApp.sessionId,
-            someArray: [value1,value2]
-        }
+    appId: "com_acmecorp_news",
+    description: "Acme Corp News",
+    manifestUrl: "http://www.acme.com/apps/news-manifest.js",
+    name: "Acme News App",
+    context: {
+    sessionId: myApp.sessionId,
+    someArray: [value1,value2]
     }
-];
-

When F2.registerApps() is called, the appConfig is serialized and posted to the app's manifest URL. The serialized object converts to stringified JSON:

-
{"appId":"com_acmecorp_news","description":"Acme Corp News","manifestUrl":"http://www.acme.com/apps/news-manifest.js","name":"Acme News App","context":{"sessionId":"12345", "someArray":["value1","value2"]}}
-

The appConfig object is sent to the server using the params querystring name as shown in the example below. This is the complete app manifest request sent by F2.registerApps() with the appConfig URL-encoded, of course:

-
http://www.acme.com/apps/news-manifest.js?params=%7B%22appId%22%3A%22com_acmecorp_news%22%2C%22description%22%3A%22Acme%20Corp%20News%22%2C%22manifestUrl%22%3A%22http%3A%2F%2Fwww.acme.com%2Fapps%2Fnews-manifest.js%22%2C%22name%22%3A%22Acme%20News%20App%22%2C%22context%22%3A%7B%22sessionId%22%3A%2212345%22%2C%20%22someArray%22%3A%5B%22value1%22%2C%22value2%22%5D%7D%7D
-

This demonstrates complete flexibility of passing arbitrary context values from the container to any F2 app.

-
-
-

App-to-Container Context

-

In this example, your app emits an event indicating a user is looking at a different stock ticker within your app. Using F2.Events.emit() in your code, your app broadcasts the new symbol. As with container-to-app context passing, the F2.Events.emit() method accepts two arguments: the event name and an optional data object.

-
F2.Events.emit(
-    F2.Constants.Events.APP_SYMBOL_CHANGE, 
-    { 
-        symbol: "MSFT", 
-        name: "Microsoft, Inc." 
     }
-);
-

The container would need to listen to your app's broadcasted F2.Constants.Events.APP_SYMBOL_CHANGE event using code like this:

-
F2.Events.on(
-    F2.Constants.Events.APP_SYMBOL_CHANGE, 
+    ];
+

When F2.registerApps() is called, the appConfig is serialized and + posted to the app's manifest URL. The serialized object converts to stringified JSON:

+
{"appId":"com_acmecorp_news","description":"Acme Corp News","manifestUrl":"http://www.acme.com/apps/news-manifest.js","name":"Acme News App","context":{"sessionId":"12345", "someArray":["value1","value2"]}}
+

The appConfig object is sent to the server using the params + querystring name as shown in the example below. This is the complete app manifest request + sent by F2.registerApps() with the appConfig URL-encoded, of + course:

+
http://www.acme.com/apps/news-manifest.js?params=%7B%22appId%22%3A%22com_acmecorp_news%22%2C%22description%22%3A%22Acme%20Corp%20News%22%2C%22manifestUrl%22%3A%22http%3A%2F%2Fwww.acme.com%2Fapps%2Fnews-manifest.js%22%2C%22name%22%3A%22Acme%20News%20App%22%2C%22context%22%3A%7B%22sessionId%22%3A%2212345%22%2C%20%22someArray%22%3A%5B%22value1%22%2C%22value2%22%5D%7D%7D
+

This demonstrates complete flexibility of passing arbitrary context values from the container + to any F2 app.

+
+
+

App-to-Container Context

+ +

In this example, your app emits an event indicating a user is looking at a different stock + ticker within your app. Using F2.Events.emit() in your code, your app + broadcasts the new symbol. As with container-to-app context passing, the F2.Events.emit() + method accepts two arguments: the event name and an optional data object.

+
F2.Events.emit(
+    F2.Constants.Events.APP_SYMBOL_CHANGE,
+    {
+    symbol: "MSFT",
+    name: "Microsoft, Inc."
+    }
+    );
+

The container would need to listen to your app's broadcasted F2.Constants.Events.APP_SYMBOL_CHANGE + event using code like this:

+
F2.Events.on(
+    F2.Constants.Events.APP_SYMBOL_CHANGE,
     function(data){
-        F2.log("The symbol was changed to " + data.symbol);
+    F2.log("The symbol was changed to " + data.symbol);
     }
-);
-

Note For a full list of support event types, browse to the SDK for F2.Constants.Events.

-
-
-

App-to-App Context

-

Apps can also pass context between apps. If there are two or more apps on a container with similar context and the ability to receive messages (yes, through event listeners, context receiving is opt-in), apps can communicate with each other. To communicate with another app, each app will have to know the event name along with the type of data being passed. Let's take a look.

-

Within "App 1", context is sent using F2.Events.emit():

-
F2.Events.emit(
+    );
+

Note For a full list of support event types, browse to the SDK for + F2.Constants.Events.

+
+
+

App-to-App Context

+ +

Apps can also pass context between apps. If there are two or more apps on a container with + similar context and the ability to receive messages (yes, through event listeners, context + receiving is opt-in), apps can communicate with each other. To communicate with another app, + each app will have to know the event name along with the type of data being passed. Let's + take a look.

+ +

Within "App 1", context is sent using F2.Events.emit():

+
F2.Events.emit(
     "buy_stock", //custom event name
-    { 
-        symbol: "GOOG", 
-        name: "Google Inc",
-        price: 682.68,
-        isAvailableToPurchase: true,
-        orderType: "Market Order"
+    {
+    symbol: "GOOG",
+    name: "Google Inc",
+    price: 682.68,
+    isAvailableToPurchase: true,
+    orderType: "Market Order"
     }
-);
-

Within "App 2", context is received using F2.Events.on():

-
F2.Events.on(
-    "buy_stock", 
+    );
+

Within "App 2", context is received using F2.Events.on():

+
F2.Events.on(
+    "buy_stock",
     function(data){
-        if (data.isAvailableToPurchase){
-            F2.log("Trade ticket order for " + data.symbol + " at $" + data.price);
-        } else {
-            F2.log("This stock is not available for purchase.")
-        }
+    if (data.isAvailableToPurchase){
+    F2.log("Trade ticket order for " +
+    data.symbol + " at $" + data.price);
+    } else {
+    F2.log("This stock is not available for purchase.")
     }
-);
-
-
-

More Complex Context

-

The examples above demonstrate simple Context objects. In the event more complex data and/or data types are needed, F2 Context can support any JavaScript object—a string, a number, a function, an array or an object.

-

This is an example Context object demonstrating arbitrary JavaScript objects:

-
F2.Events.emit(
+    }
+    );
+
+
+

More Complex Context

+ +

The examples above demonstrate simple Context objects. In the event more complex + data and/or data types are needed, F2 Context can support any JavaScript object—a string, a + number, a function, an array or an object.

+ +

This is an example Context object demonstrating arbitrary JavaScript objects:

+
F2.Events.emit(
     "example_event", //custom event name
-    { 
-        //number
-        price: 100,
-        //string
-        name: 'John Smith',
-        //function
-        callback: function(){
-            F2.log('Callback!');
-        },
-        //array
-        watchlist: ['AAPL','MSFT','GE'],
-        //object
-        userInfo: {
-            name: 'John Smith',
-            title: 'Managing Director',
-            groups: ['Alpha','Beta'],
-            sessionId: 1234567890
-        }
+    {
+    //number
+    price: 100,
+    //string
+    name: 'John Smith',
+    //function
+    callback: function(){
+    F2.log('Callback!');
+    },
+    //array
+    watchlist: ['AAPL','MSFT','GE'],
+    //object
+    userInfo: {
+    name: 'John Smith',
+    title: 'Managing Director',
+    groups: ['Alpha','Beta'],
+    sessionId: 1234567890
+    }
     }
-);
-

If two apps want to communicate data for populating a trade ticket and execute a callback, appclass.js code might look like this:

-
F2.Events.emit(
+    );
+

If two apps want to communicate data for populating a trade ticket and execute a + callback, appclass.js code might look like this:

+
F2.Events.emit(
     "buy_stock", //custom event name
-    { 
-        symbol: "GOOG", 
-        name: "Google Inc",
-        price: 682.68,
-        isAvailableToPurchase: true,
-        orderType: "Market Order",
-        //define callback
-        callback: function(data){
-            alert('Trade ticket populated');
-        }
+    {
+    symbol: "GOOG",
+    name: "Google Inc",
+    price: 682.68,
+    isAvailableToPurchase: true,
+    orderType: "Market Order",
+    //define callback
+    callback: function(data){
+    alert('Trade ticket populated');
+    }
     }
-);
-

The F2 app listening for the buy_stock event would fire the callback function.

-
F2.Events.on(
-    "buy_stock", 
+    );
+

The F2 app listening for the buy_stock event would fire the + callback function.

+
F2.Events.on(
+    "buy_stock",
     function(data){
-        F2.log("Trade ticket order for " + data.symbol + " at $" + data.price);
-        //..populate the trade ticket...
-        //fire the callback
-        if (typeof data.callback === 'function'){
-            data.callback();
-        }
+    F2.log("Trade ticket order for " +
+    data.symbol + " at $" + data.price);
+    //..populate the trade ticket...
+    //fire the callback
+    if (typeof data.callback === 'function'){
+    data.callback();
+    }
     }
-);
-
-
-

Types of Context

-

Context is a term used to describe the state of an F2 container and its apps. At the same time, context is also the information passed from Container-to-App or from App-to-App or from App-to-Container. In the examples shown above, two types of context were shown: symbol and trade ticket context. It is important to realize F2.js allows client-side messaging between third parties using a collection of arbitrary name-value pairs. This provides the utmost flexibility and affords container providers the option to define context within their container.

-
-

Universal F2 Instrument ID

-

Said another way, while { symbol:"AAPL", name: "Apple, Inc" } can be used to communicate symbol context, developers could also use { symbol: "123456789" } to identify Apple, Inc. The latter is more likely given not all apps would programmatically understand AAPL but—given symbol lookup services—would understand 123456789 as the universal F2 identifier for Apple, Inc. It is clear Container and App Developers alike would prefer to communicate with a guaranteed-to-never-change universal ID for all instrument types across all asset classes. Further details will be forthcoming as the F2 specification evolves.

-
-
-
-
-
-

Secure Apps

-

Security is a fundamental requirement of any F2 container and many F2 apps. With that in mind, the integration of secure apps on a container requires more attention and effort. The process of app integration remains largely the same for integrating secure apps with one significant addition: a second container.

-

To support a secured container environment, one of the choices made when writing this specification was the inclusion of an open-source cross-domain in-browser secure messaging library. For this, F2 relies on easyXDM. EasyXDM helps front-end developers safely work around the Same Origin Policy using browser-supported techniques without compromising the user experience. For all browsers, the easyXDM transport stack offers bi-directionality, reliability, queueing and sender-verification.

-
-

Container Config

-

The process of configuring an F2 container to be secure is identical to that of an unsecure container. As such, every container must be setup using ContainerConfig and the methods available.

-

In the secure container's $(document).ready(), add the F2.init():

-
$(document).ready(function(){
+    );
+
+
+

Types of Context

+ +

Context is a term used to describe the state of an F2 container and its apps. At the same + time, context is also the information passed from Container-to-App + or from App-to-App or from App-to-Container. In the examples shown above, + two types of context were shown: symbol and trade ticket context. It is important to realize + F2.js allows client-side messaging between third parties using a + collection of arbitrary name-value pairs. This provides the utmost flexibility and affords + container providers the option to define context within their container.

+
+

Universal F2 Instrument ID

+ +

Said another way, while { symbol:"AAPL", name: "Apple, Inc" + } can be used to communicate symbol context, developers could also use { + symbol: "123456789" } to identify Apple, Inc. The latter is more likely + given not all apps would programmatically understand AAPL but—given symbol + lookup services—would understand 123456789 as the universal F2 + identifier for Apple, Inc. It is clear Container and App Developers alike would prefer + to communicate with a guaranteed-to-never-change universal ID for all instrument types + across all asset classes. Further details will be forthcoming as the F2 + specification evolves.

+
+
+
+
+
+

Secure Apps

+ +

Security is a fundamental requirement of any F2 container and many F2 apps. With that in mind, + the integration of secure apps on a container requires more attention and effort. The process of + app integration remains largely the same for integrating secure + apps with one significant addition: a second container.

+ +

To support a secured container environment, one of the choices + made when writing this specification was the inclusion of an open-source cross-domain in-browser + secure messaging library. For this, F2 relies on easyXDM. EasyXDM helps front-end + developers safely work around the Same + Origin Policy using browser-supported techniques without compromising the user + experience. For all browsers, the easyXDM transport stack offers bi-directionality, reliability, + queueing and sender-verification.

+
+

Container Config

+ +

The process of configuring an F2 container to be secure is + identical to that of an unsecure container. As such, every container must be setup using + ContainerConfig and the methods + available.

+ +

In the secure container's $(document).ready(), add the F2.init(): +

+
$(document).ready(function(){
     F2.init({
-        //define ContainerConfig properties
-        appRender: function(appConfig, html){ ... },
-        beforeAppRender: function(appConfig, html){ ... },
-        afterAppRender: function(appConfig){ ... }
+    //define ContainerConfig properties
+    appRender: function(appConfig, html){ ... },
+    beforeAppRender: function(appConfig, html){ ... },
+    afterAppRender: function(appConfig){ ... }
     });
-});
-

For secure containers, an additional property must be set on the ContainerConfig within F2.init(). Assuiming the container is hosted at https://www.domain.com/container, the following config would be appropriate:

-
$(document).ready(function(){
+    });
+

For secure containers, an additional property must be set on the ContainerConfig + within F2.init(). Assuiming the container is hosted at https://www.domain.com/container, + the following config would be appropriate:

+
$(document).ready(function(){
     F2.init({
-        //define ContainerConfig properties
-        appRender: function(appConfig, html){ ... },
-        beforeAppRender: function(appConfig, html){ ... },
-        afterAppRender: function(appConfig){ ... },
-        secureAppPagePath: "https://secure.domain.com/container" //define secure page path
+    //define ContainerConfig properties
+    appRender: function(appConfig, html){ ... },
+    beforeAppRender: function(appConfig, html){ ... },
+    afterAppRender: function(appConfig){ ... },
+    secureAppPagePath: "https://secure.domain.com/container"
+    //define secure page path
     });
-});
-

This secureAppPagePath property allows the container to specify which page is used when loading secure apps. To guarantee security, the page must reside on a different domain than the parent container.

-

Important Therefore Container Developers need two containers: one non-secure (parent), one secure (child). The parent container can follow the basic template style and must call F2.init() and F2.registerApps() appropriately. Per the above, it must also define the secureAppPagePath property in its ContainerConfig. To see a working container, browse to the examples in the project repo on GitHub.

-

Since it will be loaded in an iframe and like its parent, the secure child container must also include a copy of the F2.js SDK. Additionally, it must also call F2.init() with a unique ContainerConfig.

-
F2.init({
+    });
+

This secureAppPagePath property allows the container to specify which page is + used when loading secure apps. To guarantee security, the page must reside on a + different domain than the parent container.

+ +

Important Therefore Container Developers need two + containers: one non-secure (parent), one secure (child). The parent container can follow the + basic template style and must call + F2.init() and F2.registerApps() appropriately. Per the above, it + must also define the secureAppPagePath property in its + ContainerConfig. To see a working container, browse to the examples in the project repo on + GitHub.

+ +

Since it will be loaded in an iframe and like its parent, the secure child container must + also include a copy of the F2.js SDK. Additionally, it must also + call F2.init() with a unique ContainerConfig.

+
F2.init({
     appRender:function(appConfig, html) {
-        return [
-            '<div class="span4">',
-                html,
-            '</div>'
-        ].join('');
+    return [
+    '<div class="span4">',
+    html,
+    '</div>'
+    ].join('');
     },
     afterAppRender:function(appConfig, html) { ... },
 
     //now set this property to true to tell F2 this is the secure child frame.
     isSecureAppPage:true
-});
-

When the parent container calls registerApps(), F2 looks at each AppConfig for the isSecure bool. If the property is set to true, F2 inserts the secure app inside an iframe and instantiates the easyXDM transport stack. To see a working secure container, browse to the examples in the project repo on GitHub.

-
-
-
-
-

Utilities

-

The F2.js JavaScript SDK provides utility methods for Container Developers. These are available within the F2 namespace and complete details are in the Reference documentation.

-
-
-
-

F2 UI

-

There are some utility methods provided within F2.js in the UI namespace. These helpers are for controlling layout, showing (or hiding) loading spinners, modals, managing views within apps, and more. To see which UI helpers are available to App Developers, read about F2.UI for apps.

-

For Container Developers, the use of F2's UI is more than likely limited to customizing the design aesthetic (CSS) and configuring the UI properties.

-

For complete details on F2.UI, browse to the SDK docs.

-
-
-
-

Entitlements

-

User or content entitlements are the responsibility of the App developer. Many apps will need to be decoupled from the content that they need. This could include apps like research aggregation, news filtering, streaming market data, etc. Similarly to how companies build their own websites today with their own authentication and access (or content) entitlements, F2 apps are no different.

-

Further details around app entitlements will be forthcoming as the F2 specification evolves.

-
-
-
-

Single Sign-On

-

Single sign-on (SSO) will be a shared responsibility between the Container and App Developer. In some cases, containers will want all its apps to be authenticated seamlessly for users, and that will have to be negotiated between Container and App Developers. For the purposes of this documentation, it is assumed Container Developers will build and host authentication for access to their container(s).

-

Once a user is authenticated on the container, how is the user then authenticated with all of the apps? Encrypted URLs.*

-

Note The Container Developer is free to utilize any app authentication method they deem fit. Container Developers and App Developers will need to work together to finalize the authentication details.

-
-

Using Encrypted URLs

-

Implementing SSO using encrypted URLs is a simple and straight-forward authentication mechanism for securing cross-domain multi-provider apps. To guarantee security between the Container and App Developers, secure API contracts must be negotiated. This includes, but is not limited to, the choice of cryptographic algorithm (such as AES) and the exchange of public keys.

-

When the Container Developer calls F2.registerApps(), custom logic should be added to append encrypted user credentials—on a need-to-know basis—to each app requiring authentication.

-
-
-

Considerations

-

Authentication is a critical part of any container-app relationship. There are a plethora of SSO implementations and there are many considerations for both Container and App Developers alike.

-

Further details around container and app single sign-on will be forthcoming as the F2 specification evolves.

-
-
-
-
-
-
- -
- - - - + }); +

When the parent container calls registerApps(), F2 looks at each + AppConfig for the isSecure bool. If the property is set to true, + F2 inserts the secure app inside an iframe and instantiates the easyXDM transport stack. To + see a working secure container, browse to + the examples in the project repo on GitHub.

+
+ + +
+

Utilities

+ +

The F2.js JavaScript SDK provides utility methods for Container + Developers. These are available within the F2 namespace and complete details are in + the Reference documentation.

+
+
+
+

F2 UI

+ +

There are some utility methods provided within F2.js in the UI namespace. These + helpers are for controlling layout, showing (or hiding) loading spinners, modals, managing views + within apps, and more. To see which UI helpers are available to App Developers, read about F2.UI for apps.

+ +

For Container Developers, the use of F2's UI is more than likely limited to + customizing the design aesthetic (CSS) and configuring the UI + properties.

+ +

For complete details on F2.UI, browse to the SDK + docs.

+
+
+
+

Entitlements

+ +

User or content entitlements are the responsibility of the App developer. Many apps will need to + be decoupled from the content that they need. This could include apps like research aggregation, + news filtering, streaming market data, etc. Similarly to how companies build their own websites + today with their own authentication and access (or content) entitlements, F2 apps are no + different.

+ +

Further details around app entitlements will be forthcoming as the F2 specification + evolves.

+
+
+
+

Single Sign-On

+ +

Single sign-on (SSO) will be a shared responsibility between the Container and App Developer. In + some cases, containers will want all its apps to be authenticated seamlessly for users, and that + will have to be negotiated between Container and App Developers. For the purposes of this + documentation, it is assumed Container Developers will build and host authentication for access + to their container(s).

+ +

Once a user is authenticated on the container, how is the user then authenticated with all of the + apps? Encrypted URLs.*

+ +

Note The Container Developer is free to utilize any app authentication + method they deem fit. Container Developers and App Developers will need to work together to + finalize the authentication details.

+
+

Using Encrypted URLs

+ +

Implementing SSO using encrypted URLs is a simple and straight-forward authentication + mechanism for securing cross-domain multi-provider apps. To guarantee security between the + Container and App Developers, secure API contracts must be negotiated. This includes, but is + not limited to, the choice of cryptographic algorithm (such as AES) and the + exchange of public keys.

+ +

When the Container Developer calls F2.registerApps(), custom logic should be + added to append encrypted user credentials—on a need-to-know basis—to each app + requiring authentication.

+
+
+

Considerations

+ +

Authentication is a critical part of any container-app relationship. There are a plethora of + SSO implementations and there are many considerations for both Container and App Developers + alike.

+ +

Further details around container and app single sign-on will be forthcoming as the F2 + specification evolves.

+
+
+
+ + + + + + + +
+ + + + + diff --git a/docs/css/F2.Docs.css b/docs/css/F2.Docs.css index 3144c02c..2f0fcfd0 100644 --- a/docs/css/F2.Docs.css +++ b/docs/css/F2.Docs.css @@ -1,1144 +1,9536 @@ -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} -audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} -audio:not([controls]){display:none;} -html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} -a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -a:hover,a:active{outline:0;} -sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} -sup{top:-0.5em;} -sub{bottom:-0.25em;} -img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} -#map_canvas img{max-width:none;} -button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} -button,input{*overflow:visible;line-height:normal;} -button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} -button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} -input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} -input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} -textarea{overflow:auto;vertical-align:top;} -.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -body{margin:0;font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;font-size:14px;line-height:20px;color:#333333;background-color:#ffffff;} -a{color:#0a6199;text-decoration:none;} -a:hover{color:#053351;text-decoration:underline;} -.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);} -.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -[class*="span"]{float:left;min-height:1px;margin-left:20px;} -.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -[class*="span"]{float:left;min-height:1px;margin-left:20px;} -.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} -.row-fluid .span12{width:100%;*width:99.94680851063829%;} -.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} -.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} -.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} -.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} -.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} -.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} -.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} -.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} -.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} -.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} -.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} -.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} -.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} -.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} -.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} -.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} -.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} -.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} -.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} -.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} -.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} -.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} -.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} -.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} -.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} -.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} -.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} -.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} -.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} -.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} -.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} -.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} -.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} -.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} -.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} -.row-fluid .span12{width:100%;*width:99.94680851063829%;} -.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} -.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} -.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} -.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} -.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} -.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} -.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} -.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} -.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} -.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} -.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} -.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} -.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} -.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} -.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} -.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} -.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} -.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} -.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} -.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} -.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} -.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} -.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} -.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} -.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} -.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} -.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} -.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} -.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} -.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} -.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} -.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} -.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} -.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} -.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} -[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;} -[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;} -.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} -.container-fluid:after{clear:both;} -.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} -.container-fluid:after{clear:both;} -.openf2Header{background-color:#f0f0f0;} -body.openf2{background:transparent url("../img/footerNoise.png") repeat;} -body.f2Developer{background:transparent url("../img/footerNoise.png") repeat;} -body.letterPage{background:transparent url("../img/footerNoise.png") repeat;} -body .mainContainer{background-color:#ffffff;padding:0;margin-top:0;}body .mainContainer .AppRegistrationForm{min-height:300px;padding:20px;background:url("../img/F2TopShadowBorder.png") top no-repeat;} -body .mainContainer .noiseWrap{background:transparent url("../img/footerNoise.png") repeat;} -body .mainContainer .letter{background-color:transparent;background:url("../img/F2TopShadowBorder.png") top no-repeat;padding-bottom:20px;}body .mainContainer .letter .letterWrapper{margin-top:30px;background:url("../img/F2LetterImage.png") center no-repeat;}body .mainContainer .letter .letterWrapper .letterContent{width:875px;height:890px;margin:auto;}body .mainContainer .letter .letterWrapper .letterContent .date{text-align:right;} -body .mainContainer .letter .letterWrapper .letterContent .first{padding-top:80px;} -body .mainContainer .letter .letterWrapper .letterContent .row{padding-left:100px;} -body .mainContainer .letter p{color:#727272;margin-bottom:15px;font-size:14px;text-shadow:0px 1px #ffffff;} -body .mainContainer .letter .signature{background:url("../img/F2Signature.png") center no-repeat;padding:30px 20px;} -body .mainContainer .description{z-index:2;background:url("../img/F2TopShadowBorder.png") top no-repeat;background-color:#ffffff;position:relative;height:665px;}body .mainContainer .description .letterLink{padding-top:10px;} -body .mainContainer .description p{margin-bottom:0;line-height:1.5em;color:#535353;font-weight:200;font-size:17px;} -body .mainContainer .description p.F2Indent{padding-left:10px;font-size:12px;} -body .mainContainer .description p.F2Indent a{color:#535353;} -body .mainContainer .description h2:first-child{margin-top:0;padding-top:50px;font-size:35px;margin-bottom:30px;line-height:1.25em;} -body .mainContainer .description h2,body .mainContainer .description h3{color:#0a6199;margin-bottom:0;line-height:1;} -body .mainContainer .description h3:first-child{margin-top:30px;} -body .mainContainer .description h3 a{color:#0a6199;} -body .mainContainer .description .overview h2,body .mainContainer .description .overview h3{color:#ffffff;} -body .mainContainer .description .mainBGImg{z-index:-1;position:absolute;top:0;left:0;margin:0;list-style:none;width:100%;}body .mainContainer .description .mainBGImg li div.img{height:665px;width:100%;} -body .mainContainer .description .ImgIpad{background:url("../img/F2_iPad.jpg") no-repeat center;} -body .mainContainer .description .ImgIscreens{background:url("../img/F2_iScreens.jpg") no-repeat center;} -body .mainContainer .description .ImgIphone{background:url("../img/F2_iPhone.jpg") no-repeat center;} -body .mainContainer .description .mainBGControl{margin:30px 0 0 0;list-style:none;text-align:center;padding:10px 0;}body .mainContainer .description .mainBGControl li{display:inline-block;} -body .mainContainer .description .mainBGControl li a{background:url("../img/bgControlDot.png") no-repeat center;padding:10px;} -body .mainContainer .description .mainBGControl .selected a{background:url("../img/bgControlDotSelected.png") no-repeat center;} -body .mainContainer .overview{background-color:#ffffff;background-color:#53585b;background-image:-moz-linear-gradient(top, #575d61, #4d5052);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#575d61), to(#4d5052));background-image:-webkit-linear-gradient(top, #575d61, #4d5052);background-image:-o-linear-gradient(top, #575d61, #4d5052);background-image:linear-gradient(to bottom, #575d61, #4d5052);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff575d61', endColorstr='#ff4d5052', GradientType=0);}body .mainContainer .overview h2{text-align:center;margin-bottom:20px;color:#ffffff;} -body .mainContainer .overview .container{background:url("../img/F2TopShadowBorder.png") top no-repeat;} -body .mainContainer .overview .row{padding:50px 0;} -body .mainContainer .overview .F2SunBullet{background:url("../img/F2SunIcon.png") center no-repeat;padding:10px;} -body .mainContainer .overview .bulletPoints ul{list-style:none;}body .mainContainer .overview .bulletPoints ul li{padding-left:22px;background:url("../img/F2SunIcon.png") left top no-repeat;} -body .mainContainer .overview .bulletPoints .span4{margin-left:5px;} -body .mainContainer .overview .f2OverviewSummary{font-style:italic;} -body .mainContainer .overview .interactiveDisplay{background:transparent;}body .mainContainer .overview .interactiveDisplay .carousel-inner{height:430px;} -body .mainContainer .overview .interactiveDisplay .carousel .item{background:url("../img/bankeoSprite.png") no-repeat;height:430px;max-width:570px;} -body .mainContainer .overview .interactiveDisplay .carousel .euro{background-position:-55px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .sp500{background-position:-685px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .ft{background-position:-1325px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .research{background-position:-1965px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .stockPicks{background-position:-2615px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .reuters{background-position:-3255px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .video{background-position:-3895px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .search{background-position:-4555px -34px;} -body .mainContainer .overview .photoControl{list-style:none;text-align:center;padding:10px 0;}body .mainContainer .overview .photoControl li{display:inline-block;cursor:pointer;} -body .mainContainer .overview .photoControl li a{background:url("../img/dot.png") no-repeat center;padding:13px;} -body .mainContainer .overview .photoControl .selected a{background:url("../img/dotSelected.png") no-repeat center;} -body .mainContainer .overview .captions{list-style:none;text-align:center;padding:10px 0;}body .mainContainer .overview .captions li{display:none;} -body .mainContainer .overview .captions li.selected{display:inline-block;} -body .mainContainer .overview p{color:#ffffff;margin-bottom:20px;font-size:14px;} -body .mainContainer .exampleContent{padding-top:40px;}body .mainContainer .exampleContent #exampleAppContainer a{color:#417777;} -body .mainContainer .exampleContent #exampleAppContainer footer{background:transparent;} -body .mainContainer .exampleCaptions p{padding:0 0 40px 0;color:#6c6c6c;background:url("../img/smallShadowDivider.png") bottom no-repeat;} -body .mainContainer .exampleControls{position:relative;margin:0;padding:20px 0;text-align:center;}body .mainContainer .exampleControls .arrow{height:25px;width:13px;cursor:pointer;position:absolute;top:15px;} -body .mainContainer .exampleControls .leftArrow{background:url("../img/LeftArrow.png") center no-repeat;left:0;} -body .mainContainer .exampleControls .rightArrow{background:url("../img/RightArrow.png") center no-repeat;right:0;} -body .mainContainer .exampleControls ul{margin:0;list-style:none;}body .mainContainer .exampleControls ul li{display:inline-block;} -body .mainContainer .exampleControls ul li a{background:url("../img/bgControlDot.png") no-repeat center;padding:10px;} -body .mainContainer .exampleControls ul .selected a{background:url("../img/bgControlDotSelected.png") no-repeat center;} -body .mainContainer footer{background:url("../img/footerNoise.png") repeat;color:#bfc7ce;}body .mainContainer footer .container{background:url("../img/bottomBorderFade.png") top no-repeat;} -body .mainContainer footer h1,body .mainContainer footer h2,body .mainContainer footer h3,body .mainContainer footer h4,body .mainContainer footer h5,body .mainContainer footer h6{font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;} -body .mainContainer footer h5{line-height:10px;font-size:12px;} -body .mainContainer footer .diskIcon{background:url("../img/diskIcon.png") no-repeat center;padding:50px 75px;} -body .mainContainer footer .docIcon{background:url("../img/docIcon.png") no-repeat center;padding:50px 75px;} -body .mainContainer footer .span6{padding:15px 0;margin-top:20px;} -body .mainContainer footer .pull-left h2{line-height:20px;} -body .mainContainer footer a{text-decoration:none;color:#bfc7ce;} -body .mainContainer footer a.releaseNotes{text-decoration:underline;} -body .mainContainer footer .version{padding:0 10px;font-size:46px;} -body .mainContainer footer .socialWrap{background:url("../img/bottomBorderFade.png") bottom no-repeat;padding-bottom:40px;} -body .mainContainer footer .social{padding:20px 0 10px 0;} -body .mainContainer footer .span12{text-align:center;color:#3b4044;margin-bottom:10px;} -.footerLogoDark{background:url("../img/F2FooterLogoDark.png") center no-repeat;height:24px;} -.footerLogoLight{background:url("../img/F2FooterLogoLight.png") center no-repeat;height:23px;} -.examplePage{background:url("../img/F2TopShadowBorder.png") top no-repeat;background-color:#ffffff;padding-bottom:50px;} -.F2DottedLine{width:100%;border-bottom:1px dotted #ffffff;} -@font-face{font-family:'rokkittregular';src:url('rokkitt-webfont.eot');src:local('☺'), url('rokkitt-webfont.woff') format('woff'),url('rokkitt-webfont.ttf') format('truetype'),url('rokkitt-webfont.svg#rokkittregular') format('svg');font-weight:normal;font-style:normal;}p{margin:0 0 10px;font-size:14px;} -.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px;} -small{font-size:85%;} -strong{font-weight:bold;} -em{font-style:italic;} -cite{font-style:normal;} -.muted{color:#999999;} -.text-warning{color:#c09853;} -.text-error{color:#b94a48;} -.text-info{color:#3a87ad;} -.text-success{color:#468847;} -h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:rokkittregular;font-weight:normal;line-height:1;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;} -h1{font-size:36px;line-height:40px;} -h2{font-size:30px;line-height:30px;} -h3{font-size:24px;line-height:40px;} -h4{font-size:20px;line-height:20px;} -h5{font-size:16px;line-height:20px;} -h6{font-size:14px;line-height:20px;} -h1 small{font-size:24px;} -h2 small{font-size:18px;} -h3 small{font-size:14px;} -h4 small{font-size:14px;} -.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;} -ul,ol{padding:0;margin:0 0 10px 25px;} -ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} -li{line-height:20px;} -ul.unstyled,ol.unstyled{margin-left:0;list-style:none;} -dl{margin-bottom:20px;} -dt,dd{line-height:20px;} -dt{font-weight:bold;} -dd{margin-left:10px;} -.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} -.dl-horizontal:after{clear:both;} -.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} -.dl-horizontal:after{clear:both;} -.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} -.dl-horizontal dd{margin-left:180px;} -hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;} -abbr[title]{cursor:help;border-bottom:1px dotted #999999;} -abbr.initialism{font-size:90%;text-transform:uppercase;} -blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px;} -blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} -blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} -blockquote.pull-right small:before{content:'';} -blockquote.pull-right small:after{content:'\00A0 \2014';} -q:before,q:after,blockquote:before,blockquote:after{content:"";} -address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;} -code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;} -pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;} -pre code{padding:0;color:inherit;background-color:transparent;border:0;} -.pre-scrollable{max-height:340px;overflow-y:scroll;} -a code{border-color:#e1e1e8 !important;} -form{margin:0 0 20px;} -fieldset{padding:0;margin:0;border:0;} -legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;} -label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px;} -input,button,select,textarea{font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;} -label{display:block;margin-bottom:5px;} -select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:9px;font-size:14px;line-height:20px;color:#555555;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -input,textarea,.uneditable-input{width:206px;} -textarea{height:auto;} -textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);} -input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;cursor:pointer;} -input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;} -select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;} -select{width:220px;border:1px solid #cccccc;background-color:#ffffff;} -select[multiple],select[size]{height:auto;} -select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} -.uneditable-input{overflow:hidden;white-space:nowrap;} -.uneditable-textarea{width:auto;height:auto;} -input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} -input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} -input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} -input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} -input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} -input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} -.radio,.checkbox{min-height:18px;padding-left:18px;} -.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;} -.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} -.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;} -.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} -.input-mini{width:60px;} -.input-small{width:90px;} -.input-medium{width:150px;} -.input-large{width:210px;} -.input-xlarge{width:270px;} -.input-xxlarge{width:530px;} -input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;} -.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;} -input,textarea,.uneditable-input{margin-left:0;} -.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} -input.span12,textarea.span12,.uneditable-input.span12{width:926px;} -input.span11,textarea.span11,.uneditable-input.span11{width:846px;} -input.span10,textarea.span10,.uneditable-input.span10{width:766px;} -input.span9,textarea.span9,.uneditable-input.span9{width:686px;} -input.span8,textarea.span8,.uneditable-input.span8{width:606px;} -input.span7,textarea.span7,.uneditable-input.span7{width:526px;} -input.span6,textarea.span6,.uneditable-input.span6{width:446px;} -input.span5,textarea.span5,.uneditable-input.span5{width:366px;} -input.span4,textarea.span4,.uneditable-input.span4{width:286px;} -input.span3,textarea.span3,.uneditable-input.span3{width:206px;} -input.span2,textarea.span2,.uneditable-input.span2{width:126px;} -input.span1,textarea.span1,.uneditable-input.span1{width:46px;} -input,textarea,.uneditable-input{margin-left:0;} -.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} -input.span12,textarea.span12,.uneditable-input.span12{width:926px;} -input.span11,textarea.span11,.uneditable-input.span11{width:846px;} -input.span10,textarea.span10,.uneditable-input.span10{width:766px;} -input.span9,textarea.span9,.uneditable-input.span9{width:686px;} -input.span8,textarea.span8,.uneditable-input.span8{width:606px;} -input.span7,textarea.span7,.uneditable-input.span7{width:526px;} -input.span6,textarea.span6,.uneditable-input.span6{width:446px;} -input.span5,textarea.span5,.uneditable-input.span5{width:366px;} -input.span4,textarea.span4,.uneditable-input.span4{width:286px;} -input.span3,textarea.span3,.uneditable-input.span3{width:206px;} -input.span2,textarea.span2,.uneditable-input.span2{width:126px;} -input.span1,textarea.span1,.uneditable-input.span1{width:46px;} -.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} -.controls-row:after{clear:both;} -.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} -.controls-row:after{clear:both;} -.controls-row [class*="span"]{float:left;} -input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;} -input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;} -.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} -.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} -.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;} -.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} -.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} -.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} -.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;} -.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} -.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} -.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} -.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;} -.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} -.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} -.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} -.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;} -.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} -.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} -.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} -.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;} -.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} -.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} -.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} -.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;} -.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} -.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} -.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} -.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;} -.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} -.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} -.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} -.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;} -.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} -input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} -.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} -.form-actions:after{clear:both;} -.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} -.form-actions:after{clear:both;} -.help-block,.help-inline{color:#595959;} -.help-block{display:block;margin-bottom:10px;} -.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;} -.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;font-size:14px;vertical-align:top;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;} -.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;} -.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;} -.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;} -.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-append .add-on,.input-append .btn{margin-left:-1px;} -.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} -.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} -.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} -.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} -.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;} -.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;} -.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;} -.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;} -.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;} -.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;} -.control-group{margin-bottom:10px;} -legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;} -.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} -.form-horizontal .control-group:after{clear:both;} -.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} -.form-horizontal .control-group:after{clear:both;} -.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;} -.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;} -.form-horizontal .help-block{margin-bottom:0;} -.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block{margin-top:10px;} -.form-horizontal .form-actions{padding-left:180px;} -table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} -.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} -.table th{font-weight:bold;} -.table thead th{vertical-align:bottom;} -.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} -.table tbody+tbody{border-top:2px solid #dddddd;} -.table-condensed th,.table-condensed td{padding:4px 5px;} -.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;} -.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} -.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;} -.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px;} -.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child,.table-bordered tfoot:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;} -.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child,.table-bordered tfoot:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;} -.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;} -.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topleft:4px;} -.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} -.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5;} -table [class*=span],.row-fluid table [class*=span]{display:table-cell;float:none;margin-left:0;} -.table .span1{float:none;width:44px;margin-left:0;} -.table .span2{float:none;width:124px;margin-left:0;} -.table .span3{float:none;width:204px;margin-left:0;} -.table .span4{float:none;width:284px;margin-left:0;} -.table .span5{float:none;width:364px;margin-left:0;} -.table .span6{float:none;width:444px;margin-left:0;} -.table .span7{float:none;width:524px;margin-left:0;} -.table .span8{float:none;width:604px;margin-left:0;} -.table .span9{float:none;width:684px;margin-left:0;} -.table .span10{float:none;width:764px;margin-left:0;} -.table .span11{float:none;width:844px;margin-left:0;} -.table .span12{float:none;width:924px;margin-left:0;} -.table .span13{float:none;width:1004px;margin-left:0;} -.table .span14{float:none;width:1084px;margin-left:0;} -.table .span15{float:none;width:1164px;margin-left:0;} -.table .span16{float:none;width:1244px;margin-left:0;} -.table .span17{float:none;width:1324px;margin-left:0;} -.table .span18{float:none;width:1404px;margin-left:0;} -.table .span19{float:none;width:1484px;margin-left:0;} -.table .span20{float:none;width:1564px;margin-left:0;} -.table .span21{float:none;width:1644px;margin-left:0;} -.table .span22{float:none;width:1724px;margin-left:0;} -.table .span23{float:none;width:1804px;margin-left:0;} -.table .span24{float:none;width:1884px;margin-left:0;} -.table tbody tr.success td{background-color:#dff0d8;} -.table tbody tr.error td{background-color:#f2dede;} -.table tbody tr.warning td{background-color:#fcf8e3;} -.table tbody tr.info td{background-color:#d9edf7;} -.table-hover tbody tr.success:hover td{background-color:#d0e9c6;} -.table-hover tbody tr.error:hover td{background-color:#ebcccc;} -.table-hover tbody tr.warning:hover td{background-color:#faf2cc;} -.table-hover tbody tr.info:hover td{background-color:#c4e3f3;} -[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;} -.icon-white,.nav-tabs>.active>a>[class^="icon-"],.nav-tabs>.active>a>[class*=" icon-"],.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");} -.icon-glass{background-position:0 0;} -.icon-music{background-position:-24px 0;} -.icon-search{background-position:-48px 0;} -.icon-envelope{background-position:-72px 0;} -.icon-heart{background-position:-96px 0;} -.icon-star{background-position:-120px 0;} -.icon-star-empty{background-position:-144px 0;} -.icon-user{background-position:-168px 0;} -.icon-film{background-position:-192px 0;} -.icon-th-large{background-position:-216px 0;} -.icon-th{background-position:-240px 0;} -.icon-th-list{background-position:-264px 0;} -.icon-ok{background-position:-288px 0;} -.icon-remove{background-position:-312px 0;} -.icon-zoom-in{background-position:-336px 0;} -.icon-zoom-out{background-position:-360px 0;} -.icon-off{background-position:-384px 0;} -.icon-signal{background-position:-408px 0;} -.icon-cog{background-position:-432px 0;} -.icon-trash{background-position:-456px 0;} -.icon-home{background-position:0 -24px;} -.icon-file{background-position:-24px -24px;} -.icon-time{background-position:-48px -24px;} -.icon-road{background-position:-72px -24px;} -.icon-download-alt{background-position:-96px -24px;} -.icon-download{background-position:-120px -24px;} -.icon-upload{background-position:-144px -24px;} -.icon-inbox{background-position:-168px -24px;} -.icon-play-circle{background-position:-192px -24px;} -.icon-repeat{background-position:-216px -24px;} -.icon-refresh{background-position:-240px -24px;} -.icon-list-alt{background-position:-264px -24px;} -.icon-lock{background-position:-287px -24px;} -.icon-flag{background-position:-312px -24px;} -.icon-headphones{background-position:-336px -24px;} -.icon-volume-off{background-position:-360px -24px;} -.icon-volume-down{background-position:-384px -24px;} -.icon-volume-up{background-position:-408px -24px;} -.icon-qrcode{background-position:-432px -24px;} -.icon-barcode{background-position:-456px -24px;} -.icon-tag{background-position:0 -48px;} -.icon-tags{background-position:-25px -48px;} -.icon-book{background-position:-48px -48px;} -.icon-bookmark{background-position:-72px -48px;} -.icon-print{background-position:-96px -48px;} -.icon-camera{background-position:-120px -48px;} -.icon-font{background-position:-144px -48px;} -.icon-bold{background-position:-167px -48px;} -.icon-italic{background-position:-192px -48px;} -.icon-text-height{background-position:-216px -48px;} -.icon-text-width{background-position:-240px -48px;} -.icon-align-left{background-position:-264px -48px;} -.icon-align-center{background-position:-288px -48px;} -.icon-align-right{background-position:-312px -48px;} -.icon-align-justify{background-position:-336px -48px;} -.icon-list{background-position:-360px -48px;} -.icon-indent-left{background-position:-384px -48px;} -.icon-indent-right{background-position:-408px -48px;} -.icon-facetime-video{background-position:-432px -48px;} -.icon-picture{background-position:-456px -48px;} -.icon-pencil{background-position:0 -72px;} -.icon-map-marker{background-position:-24px -72px;} -.icon-adjust{background-position:-48px -72px;} -.icon-tint{background-position:-72px -72px;} -.icon-edit{background-position:-96px -72px;} -.icon-share{background-position:-120px -72px;} -.icon-check{background-position:-144px -72px;} -.icon-move{background-position:-168px -72px;} -.icon-step-backward{background-position:-192px -72px;} -.icon-fast-backward{background-position:-216px -72px;} -.icon-backward{background-position:-240px -72px;} -.icon-play{background-position:-264px -72px;} -.icon-pause{background-position:-288px -72px;} -.icon-stop{background-position:-312px -72px;} -.icon-forward{background-position:-336px -72px;} -.icon-fast-forward{background-position:-360px -72px;} -.icon-step-forward{background-position:-384px -72px;} -.icon-eject{background-position:-408px -72px;} -.icon-chevron-left{background-position:-432px -72px;} -.icon-chevron-right{background-position:-456px -72px;} -.icon-plus-sign{background-position:0 -96px;} -.icon-minus-sign{background-position:-24px -96px;} -.icon-remove-sign{background-position:-48px -96px;} -.icon-ok-sign{background-position:-72px -96px;} -.icon-question-sign{background-position:-96px -96px;} -.icon-info-sign{background-position:-120px -96px;} -.icon-screenshot{background-position:-144px -96px;} -.icon-remove-circle{background-position:-168px -96px;} -.icon-ok-circle{background-position:-192px -96px;} -.icon-ban-circle{background-position:-216px -96px;} -.icon-arrow-left{background-position:-240px -96px;} -.icon-arrow-right{background-position:-264px -96px;} -.icon-arrow-up{background-position:-289px -96px;} -.icon-arrow-down{background-position:-312px -96px;} -.icon-share-alt{background-position:-336px -96px;} -.icon-resize-full{background-position:-360px -96px;} -.icon-resize-small{background-position:-384px -96px;} -.icon-plus{background-position:-408px -96px;} -.icon-minus{background-position:-433px -96px;} -.icon-asterisk{background-position:-456px -96px;} -.icon-exclamation-sign{background-position:0 -120px;} -.icon-gift{background-position:-24px -120px;} -.icon-leaf{background-position:-48px -120px;} -.icon-fire{background-position:-72px -120px;} -.icon-eye-open{background-position:-96px -120px;} -.icon-eye-close{background-position:-120px -120px;} -.icon-warning-sign{background-position:-144px -120px;} -.icon-plane{background-position:-168px -120px;} -.icon-calendar{background-position:-192px -120px;} -.icon-random{background-position:-216px -120px;width:16px;} -.icon-comment{background-position:-240px -120px;} -.icon-magnet{background-position:-264px -120px;} -.icon-chevron-up{background-position:-288px -120px;} -.icon-chevron-down{background-position:-313px -119px;} -.icon-retweet{background-position:-336px -120px;} -.icon-shopping-cart{background-position:-360px -120px;} -.icon-folder-close{background-position:-384px -120px;} -.icon-folder-open{background-position:-408px -120px;width:16px;} -.icon-resize-vertical{background-position:-432px -119px;} -.icon-resize-horizontal{background-position:-456px -118px;} -.icon-hdd{background-position:0 -144px;} -.icon-bullhorn{background-position:-24px -144px;} -.icon-bell{background-position:-48px -144px;} -.icon-certificate{background-position:-72px -144px;} -.icon-thumbs-up{background-position:-96px -144px;} -.icon-thumbs-down{background-position:-120px -144px;} -.icon-hand-right{background-position:-144px -144px;} -.icon-hand-left{background-position:-168px -144px;} -.icon-hand-up{background-position:-192px -144px;} -.icon-hand-down{background-position:-216px -144px;} -.icon-circle-arrow-right{background-position:-240px -144px;} -.icon-circle-arrow-left{background-position:-264px -144px;} -.icon-circle-arrow-up{background-position:-288px -144px;} -.icon-circle-arrow-down{background-position:-312px -144px;} -.icon-globe{background-position:-336px -144px;} -.icon-wrench{background-position:-360px -144px;} -.icon-tasks{background-position:-384px -144px;} -.icon-filter{background-position:-408px -144px;} -.icon-briefcase{background-position:-432px -144px;} -.icon-fullscreen{background-position:-456px -144px;} -.dropup,.dropdown{position:relative;} -.dropdown-toggle{*margin-bottom:-3px;} -.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} -.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";} -.dropdown .caret{margin-top:8px;margin-left:2px;} -.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;} -.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -.dropdown-menu a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;} -.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{text-decoration:none;color:#ffffff;background-color:#0a6199;background-color:#095b8f;background-image:-moz-linear-gradient(top, #0a6199, #085281);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281));background-image:-webkit-linear-gradient(top, #0a6199, #085281);background-image:-o-linear-gradient(top, #0a6199, #085281);background-image:linear-gradient(to bottom, #0a6199, #085281);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0);} -.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;outline:0;background-color:#0a6199;background-color:#095b8f;background-image:-moz-linear-gradient(top, #0a6199, #085281);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281));background-image:-webkit-linear-gradient(top, #0a6199, #085281);background-image:-o-linear-gradient(top, #0a6199, #085281);background-image:linear-gradient(to bottom, #0a6199, #085281);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0);} -.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999999;} -.dropdown-menu .disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;} -.open{*z-index:1000;}.open>.dropdown-menu{display:block;} -.pull-right>.dropdown-menu{right:0;left:auto;} -.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";} -.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;} -.dropdown-submenu{position:relative;} -.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} -.dropdown-submenu:hover>.dropdown-menu{display:block;} -.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;} -.dropdown-submenu:hover>a:after{border-left-color:#ffffff;} -.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;} -.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} -.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;} -.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;} -.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);} -button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} -.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 14px;margin-bottom:0;font-size:14px;line-height:20px;*line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} -.btn:active,.btn.active{background-color:#cccccc \9;} -.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} -.btn:active,.btn.active{background-color:#cccccc \9;} -.btn:first-child{*margin-left:0;} -.btn:first-child{*margin-left:0;} -.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} -.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);} -.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn-large{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} -.btn-large [class^="icon-"]{margin-top:2px;} -.btn-small{padding:3px 9px;font-size:12px;line-height:18px;} -.btn-small [class^="icon-"]{margin-top:0;} -.btn-mini{padding:2px 6px;font-size:11px;line-height:17px;} -.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -.btn-block+.btn-block{margin-top:5px;} -input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;} -.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);} -.btn{border-color:#c5c5c5;border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);} -.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0a4e99;background-image:-moz-linear-gradient(top, #0a6199, #0a3199);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#0a3199));background-image:-webkit-linear-gradient(top, #0a6199, #0a3199);background-image:-o-linear-gradient(top, #0a6199, #0a3199);background-image:linear-gradient(to bottom, #0a6199, #0a3199);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff0a3199', GradientType=0);border-color:#0a3199 #0a3199 #051a51;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0a3199;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0a3199;*background-color:#082a81;} -.btn-primary:active,.btn-primary.active{background-color:#072269 \9;} -.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0a3199;*background-color:#082a81;} -.btn-primary:active,.btn-primary.active{background-color:#072269 \9;} -.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} -.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} -.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} -.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} -.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} -.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} -.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} -.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} -.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} -.btn-success:active,.btn-success.active{background-color:#408140 \9;} -.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} -.btn-success:active,.btn-success.active{background-color:#408140 \9;} -.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} -.btn-info:active,.btn-info.active{background-color:#24748c \9;} -.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} -.btn-info:active,.btn-info.active{background-color:#24748c \9;} -.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} -.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} -.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} -.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} -.btn-primaryAlt{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#2869a6;background-image:-moz-linear-gradient(top, #2a6fb0, #246097);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#2a6fb0), to(#246097));background-image:-webkit-linear-gradient(top, #2a6fb0, #246097);background-image:-o-linear-gradient(top, #2a6fb0, #246097);background-image:linear-gradient(to bottom, #2a6fb0, #246097);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a6fb0', endColorstr='#ff246097', GradientType=0);border-color:#246097 #246097 #153959;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#246097;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primaryAlt:hover,.btn-primaryAlt:focus,.btn-primaryAlt:active,.btn-primaryAlt.active,.btn-primaryAlt.disabled,.btn-primaryAlt[disabled]{color:#ffffff;background-color:#246097;*background-color:#1f5382;} -.btn-primaryAlt:active,.btn-primaryAlt.active{background-color:#1a466e \9;} -.btn-primaryAlt:hover,.btn-primaryAlt:focus,.btn-primaryAlt:active,.btn-primaryAlt.active,.btn-primaryAlt.disabled,.btn-primaryAlt[disabled]{color:#ffffff;background-color:#246097;*background-color:#1f5382;} -.btn-primaryAlt:active,.btn-primaryAlt.active{background-color:#1a466e \9;} -button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} -button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;} -button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;} -button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;} -.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn-link{border-color:transparent;cursor:pointer;color:#0a6199;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-link:hover{color:#053351;text-decoration:underline;background-color:transparent;} -.btn-link[disabled]:hover{color:#333333;text-decoration:none;} -.btn-group{position:relative;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;} -.btn-group:first-child{*margin-left:0;} -.btn-group+.btn-group{margin-left:5px;} -.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;} -.btn-toolbar .btn+.btn,.btn-toolbar .btn-group+.btn,.btn-toolbar .btn+.btn-group{margin-left:5px;} -.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-group>.btn+.btn{margin-left:-1px;} -.btn-group>.btn,.btn-group>.dropdown-menu{font-size:14px;} -.btn-group>.btn-mini{font-size:11px;} -.btn-group>.btn-small{font-size:12px;} -.btn-group>.btn-large{font-size:16px;} -.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} -.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} -.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} -.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;} -.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} -.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:5px;*padding-bottom:5px;} -.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;} -.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;} -.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;} -.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);} -.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;} -.btn-group.open .btn-primary.dropdown-toggle{background-color:#0a3199;} -.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;} -.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;} -.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;} -.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;} -.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;} -.btn .caret{margin-top:8px;margin-left:0;} -.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px;} -.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;} -.dropup .btn-large .caret{border-bottom:5px solid #000000;border-top:0;} -.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;} -.btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-group-vertical .btn+.btn{margin-left:0;margin-top:-1px;} -.btn-group-vertical .btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} -.btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} -.btn-group-vertical .btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;} -.btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} -.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853;} -.alert h4{margin:0;} -.alert h5{font-size:20px;} -.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;} -.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;} -.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;} -.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;} -.alert-block{padding-top:14px;padding-bottom:14px;} -.alert-block>p,.alert-block>ul{margin-bottom:0;} -.alert-block p+p{margin-top:5px;} -.nav{margin-left:0;margin-bottom:20px;list-style:none;} -.nav>li>a{display:block;} -.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;} -.nav>.pull-right{float:right;} -.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;} -.nav li+.nav-header{margin-top:9px;} -.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;} -.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} -.nav-list>li>a{padding:3px 15px;} -.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0a6199;} -.nav-list [class^="icon-"]{margin-right:2px;} -.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} -.nav-tabs:after,.nav-pills:after{clear:both;} -.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} -.nav-tabs:after,.nav-pills:after{clear:both;} -.nav-tabs>li,.nav-pills>li{float:left;} -.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} -.nav-tabs{border-bottom:1px solid #ddd;} -.nav-tabs>li{margin-bottom:-1px;} -.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;} -.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} -.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} -.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0a6199;} -.nav-stacked>li{float:none;} -.nav-stacked>li>a{margin-right:0;} -.nav-tabs.nav-stacked{border-bottom:0;} -.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} -.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;} -.nav-pills.nav-stacked>li>a{margin-bottom:3px;} -.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} -.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} -.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.nav .dropdown-toggle .caret{border-top-color:#0a6199;border-bottom-color:#0a6199;margin-top:6px;} -.nav .dropdown-toggle:hover .caret{border-top-color:#053351;border-bottom-color:#053351;} -.nav-tabs .dropdown-toggle .caret{margin-top:8px;} -.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;} -.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} -.nav>.dropdown.active>a:hover{cursor:pointer;} -.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;} -.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);} -.tabs-stacked .open>a:hover{border-color:#999999;} -.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} -.tabbable:after{clear:both;} -.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} -.tabbable:after{clear:both;} -.tab-content{overflow:auto;} -.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;} -.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} -.tab-content>.active,.pill-content>.active{display:block;} -.tabs-below>.nav-tabs{border-top:1px solid #ddd;} -.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;} -.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;} -.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd;} -.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;} -.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} -.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;} -.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} -.tabs-left>.nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} -.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} -.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;} -.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} -.tabs-right>.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} -.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} -.nav>.disabled>a{color:#999999;} -.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;} -.navbar{overflow:visible;margin-bottom:0;color:#777777;*position:relative;*z-index:2;} -.navbar-inner{min-height:75px;background:#f0f0f0;*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} -.navbar-inner:after{clear:both;} -.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} -.navbar-inner:after{clear:both;} -.navbar .container{width:auto;} -.nav-collapse.collapse{height:auto;} -.navbar .brand{float:left;display:block;padding:30px 30px 10px 30px;margin-top:15px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;text-indent:-9000px;background:transparent url("../img/F2_logo.png") top left no-repeat;}.navbar .brand:hover{text-decoration:none;} -.navbar-text{margin-bottom:0;line-height:75px;color:#737373;font-size:13px;letter-spacing:1px;} -.navbar-link{color:#777777;}.navbar-link:hover{color:#333333;} -.navbar .divider-vertical{height:10px;margin:33px 0 0 0;border-left:1px solid #a5a5a5;border-right:1px solid #a5a5a5;} -.navbar .tagline-divider{float:left;border-left:1px solid #B2BBC3;height:30px;margin:20px 20px 0 20px;} -.navbar .btn,.navbar .btn-group{margin-top:22.5px;} -.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0;} -.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} -.navbar-form:after{clear:both;} -.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} -.navbar-form:after{clear:both;} -.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:22.5px;} -.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;} -.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} -.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;} -.navbar-search{position:relative;float:left;margin-top:22.5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.navbar-static-top{position:static;width:100%;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;} -.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;} -.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;} -.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.navbar-fixed-top{top:0;} -.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-bottom:1px solid #dcdcdc;} -.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);} -.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} -.navbar .nav.pull-right{float:right;margin-right:0;} -.navbar .nav>li{float:left;} -.navbar .nav>li>a{float:none;padding:27.5px 10px 27.5px;color:#6c6c6c;text-decoration:none;text-shadow:0 1px 0 #ffffff;font-size:14px;} -.navbar .nav .dropdown-toggle .caret{margin-top:8px;} -.navbar .nav>li>.gitHubLink{font-size:16px;color:#3e6296;} -.navbar .nav>li.ghWrapResp{display:none;visibility:hidden;height:0;border:0 none;} -.navbar .nav>li>.gitHubLink strong{font-family:rokkittregular;font-size:17px;} -.navbar .nav>li>a>.onDecoration{border-top:1px solid #999999;border-bottom:1px solid #999999;color:#999999;font-size:10px;font-weight:bold;} -.navbar .nav>li>a>.F2VersionIndicator{position:absolute;top:50%;right:10px;font-size:10px;padding-top:3px;color:#6c6c6c;} -.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;} -.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;font-weight:bold;} -.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background:transparent none;border:0 none;box-shadow:none;} -.navbar .btn-navbar .icon-bar{display:block;width:40px;height:2px;background-color:#9da6ac;border-top:1px solid #666c70;border-bottom:2px solid #fff;} -.btn-navbar .icon-bar+.icon-bar{margin-top:3px;} -.navbar .icon-triangleDown{width:0;height:0;border-left:6.5px solid transparent;border-right:6.5px solid transparent;border-top:6.5px solid #9da6ac;} -.navbar .icon-triangleRight{width:0;height:0;border-top:6.5px solid transparent;border-bottom:6.5px solid transparent;border-left:6.5px solid #9da6ac;} -.nav-collapse .icon-triangleDown,.icon-triangleRight{display:none;} -.nav.navinset{width:0;height:0;display:none;visibility:hidden;} -.navbarmini .navbar-fixed-top .navbar-inner{min-height:28px;-webkit-box-shadow:0 0 0 rgba(0, 0, 0, 0);-moz-box-shadow:0 0 0 rgba(0, 0, 0, 0);box-shadow:0 0 0 rgba(0, 0, 0, 0);} -.navbarmini .navbar-fixed-top .brand{padding:4px 10px 9px;margin-top:7px;font-size:20px;font-weight:200;background-image:url("../img/mini_f2_logo.png");} -.navbarmini .navbar-fixed-top .tagline-divider{height:10px;margin:9px 12px 0 12px;} -.navbarmini .navbar-fixed-top .navbar-text{line-height:28px;font-size:10px;} -.navbarmini .navbar-fixed-top .divider-vertical{margin-top:8px;} -.navbarmini .navbar-fixed-top .nav>li>a{padding:4px 10px 4px;font-size:12px;} -.navbarmini .navbar-fixed-top .nav>li>.gitHubLink{font-size:14px;} -.navbarmini .navbar-fixed-top .nav>li>.gitHubLink strong{font-size:15px;} -.navbarmini .navbar-fixed-top .navbar .nav>li>a>.onDecoration{font-size:9px;} -.navbarmini .navbar-fixed-top .nav>li>a>.F2VersionIndicator{position:static;top:auto;left:auto;padding-left:5px;} -@media only screen and (-webkit-min-device-pixel-ratio:2){.navbar .navbar-inner .brand{background-size:56px 37px;background-image:url("../img/F2_logoRetina.png");} .navbarmini .navbar-fixed-top .brand{background-size:18px 13px;background-image:url("../img/mini_f2_logo_2x.png");}}.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} -.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} -.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;} -.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;} -.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;} -.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;} -.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} -.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;} -.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;} -.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} -.navbar-inverse{color:#999999;}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;} -.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#ffffff;} -.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;} -.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;} -.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover{color:#ffffff;} -.navbar-inverse .divider-vertical{border-left-color:#a5a5a5;border-right-color:#a5a5a5;} -.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;} -.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;} -.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} -.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} -.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} -.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} -.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} -.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;} -.breadcrumb .divider{padding:0 5px;color:#ccc;} -.breadcrumb .active{color:#999999;} -.pagination{height:40px;margin:20px 0;} -.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} -.pagination ul>li{display:inline;} -.pagination ul>li>a,.pagination ul>li>span{float:left;padding:0 14px;line-height:38px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;} -.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;} -.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;} -.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999999;background-color:transparent;cursor:default;} -.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -.pagination-centered{text-align:center;} -.pagination-right{text-align:right;} -.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;} -.pager:after{clear:both;} -.pager:before,.pager:after{display:table;content:"";line-height:0;} -.pager:after{clear:both;} -.pager li{display:inline;} -.pager a,.pager span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.pager a:hover{text-decoration:none;background-color:#f5f5f5;} -.pager .next a,.pager .next span{float:right;} -.pager .previous a{float:left;} -.pager .disabled a,.pager .disabled a:hover,.pager .disabled span{color:#999999;background-color:#fff;cursor:default;} -.modal-open .modal .dropdown-menu{z-index:2050;} -.modal-open .modal .dropdown.open{*z-index:2050;} -.modal-open .modal .popover{z-index:2060;} -.modal-open .modal .tooltip{z-index:2080;} -.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} -.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} -.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} -.modal.fade.in{top:50%;} -.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} -.modal-header h3{margin:0;line-height:30px;} -.modal-body{overflow-y:auto;max-height:400px;padding:15px;} -.modal-form{margin-bottom:0;} -.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} -.modal-footer:after{clear:both;} -.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} -.modal-footer:after{clear:both;} -.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;} -.modal-footer .btn-group .btn+.btn{margin-left:-1px;} -.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} -.tooltip.top{margin-top:-3px;} -.tooltip.right{margin-left:3px;} -.tooltip.bottom{margin-top:3px;} -.tooltip.left{margin-left:-3px;} -.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} -.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} -.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} -.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} -.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} -.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-bottom:10px;} -.popover.right{margin-left:10px;} -.popover.bottom{margin-top:10px;} -.popover.left{margin-right:10px;} -.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} -.popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} -.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} -.popover .arrow:after{content:"";z-index:-1;} -.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} -.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} -.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} -.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} -.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} -.thumbnails:after{clear:both;} -.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} -.thumbnails:after{clear:both;} -.row-fluid .thumbnails{margin-left:0;} -.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;} -.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;} -a.thumbnail:hover{border-color:#0a6199;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} -.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} -.thumbnail .caption{padding:9px;color:#555555;} -.label,.badge{font-size:11.844px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;} -.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;} -a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} -.label-important,.badge-important{background-color:#b94a48;} -.label-important[href],.badge-important[href]{background-color:#953b39;} -.label-warning,.badge-warning{background-color:#f89406;} -.label-warning[href],.badge-warning[href]{background-color:#c67605;} -.label-success,.badge-success{background-color:#468847;} -.label-success[href],.badge-success[href]{background-color:#356635;} -.label-info,.badge-info{background-color:#3a87ad;} -.label-info[href],.badge-info[href]{background-color:#2d6987;} -.label-inverse,.badge-inverse{background-color:#333333;} -.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} -.btn .label,.btn .badge{position:relative;top:-1px;} -.btn-mini .label,.btn-mini .badge{top:0;} -@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} -.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);} -.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} -.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} -.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);} -.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);} -.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);} -.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);} -.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.accordion{margin-bottom:20px;} -.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.accordion-heading{border-bottom:0;} -.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} -.accordion-toggle{cursor:pointer;} -.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} -.carousel{position:relative;margin-bottom:20px;line-height:1;} -.carousel-inner{overflow:hidden;width:100%;position:relative;} -.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} -.carousel .item>img{display:block;line-height:1;} -.carousel .active,.carousel .next,.carousel .prev{display:block;} -.carousel .active{left:0;} -.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;} -.carousel .next{left:100%;} -.carousel .prev{left:-100%;} -.carousel .next.left,.carousel .prev.right{left:0;} -.carousel .active.left{left:-100%;} -.carousel .active.right{left:100%;} -.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} -.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} -.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);} -.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;} -.carousel-caption h4{margin:0 0 5px;} -.carousel-caption p{margin-bottom:0;} -.hero-unit{padding:60px;margin-bottom:30px;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;} -.hero-unit p{font-size:18px;font-weight:200;line-height:30px;color:inherit;} -.pull-right{float:right;} -.pull-left{float:left;} -.hide{display:none;} -.show{display:block;} -.invisible{visibility:hidden;} -.affix{position:fixed;} -.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -.hidden{display:none;visibility:hidden;} -.visible-phone{display:none !important;} -.visible-tablet{display:none !important;} -.hidden-desktop{display:none !important;} -.visible-desktop{display:inherit !important;} -@media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .row-fluid .thumbnails{margin-left:0;} .openf2 .mainContainer .description .span6{width:490px;} .openf2 .mainContainer .description h2:first-child{margin-top:0;font-size:40px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description .mainBGControl{margin-top:7px;}}@media (min-width:980px) and (max-width:1199px){.openf2 .mainContainer .slideshow{opacity:1;filter:alpha(opacity=100);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer footer .diskIcon{padding-right:50px;} .openf2 .mainContainer footer .docIcon{padding-right:50px;} .openf2 .mainContainer footer .socialWrap .span4{width:490px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span7{width:670px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span2{width:140px;padding-left:5px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{padding:30px 35px;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} body .mainContainer{padding-top:0;} .openf2 .mainContainer .span6{width:490px;} .openf2 .mainContainer .description .slideshow{opacity:0.2;filter:alpha(opacity=20);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer .description h2:first-child{margin-top:0;padding-top:50px;font-size:40px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description .mainBGControl{margin-top:7px;} .openf2 .mainContainer .overview .bulletPoints{width:350px;} .openf2 .mainContainer .overview .span12 p.f2OverviewSummary{margin-left:130px;} .openf2 .mainContainer footer .span6{float:none;margin:auto;} .openf2 .mainContainer footer .span6+.span6{padding-left:20px;} .openf2 .mainContainer footer .span6 a.pull-right{float:none;} .openf2 .mainContainer footer .socialWrap .span4{width:100%;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .span7{width:630px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span2{width:140px;padding-left:5px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:40px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{padding:30px 35px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:50px;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} body.openf2{padding-left:0;padding-right:0;} .openf2 .mainContainer .description{padding:0 20px;}.openf2 .mainContainer .description .slideshow{opacity:0.2;filter:alpha(opacity=20);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer .description .mainBGControl{display:none;} .openf2 .mainContainer .description h2:first-child{margin-top:0;font-size:40px;padding-top:50px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .overview .container{padding:10px;}.openf2 .mainContainer .overview .container .f2OverviewSummary{margin-left:10px;} .openf2 .mainContainer footer .row .span6{padding:0;width:400px;margin:20px auto;}.openf2 .mainContainer footer .row .span6 h1{font-size:20px;} .openf2 .mainContainer footer .row .span6 h2{font-size:18px;} .openf2 .mainContainer footer .row .span6 a.pull-right{float:none;} .openf2 .mainContainer footer .socialWrap .span4{width:400px;margin:auto;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{width:100%;height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:10px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:40px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{background-position:left;} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} .container-fluid{padding:0;} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} .dl-horizontal dd{margin-left:0;} .container{width:auto;} .row-fluid{width:100%;} .row,.thumbnails{margin-left:0;} .thumbnails>li{float:none;margin-left:0;} [class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} .controls-row [class*="span"]+[class*="span"]{margin-left:0;} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;}.modal.fade.in{top:auto;}}@media (max-width:480px){.lead{font-size:18px;line-height:23px;} .nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:20px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{top:10px;left:10px;right:10px;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:480px){.icon-bookmark{display:none;} .openf2 .mainContainer .description{padding:0 20px;}.openf2 .mainContainer .description h2:first-child{font-size:24px;padding-top:30px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description h3{font-size:20px;} .openf2 .mainContainer .description p{font-size:14px;} .openf2 .mainContainer .overview .container{padding:10px;}.openf2 .mainContainer .overview .container .f2OverviewSummary{margin-left:10px;} .openf2 .mainContainer footer .row{text-align:center;}.openf2 .mainContainer footer .row .pull-left,.openf2 .mainContainer footer .row .pull-right{float:none;} .openf2 .mainContainer footer .row .span6{width:100%;} .openf2 .mainContainer footer .socialWrap .span4{width:100%;} .openf2 .mainContainer footer h1{font-size:20px;} .openf2 .mainContainer footer h2{font-size:18px;} .openf2 .mainContainer footer .diskIcon,.openf2 .mainContainer footer .docIcon{display:none;} .openf2 .mainContainer footer .span5{margin-top:0;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{width:100%;height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:10px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:10px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top,.navbar-fixed-bottom{position:static;} .navbar-fixed-bottom{margin-top:20px;} .openf2Header{margin-bottom:20px;} .openf2 .openf2Header{margin-bottom:0;padding-left:20px;padding-right:20px;} .navbar .container{width:auto;padding:0;} .navbar .brand{margin-left:20px;} .openf2 .navbar .brand{margin-left:0;} .navbarmini .navbar-fixed-top .brand{padding:30px 30px 10px 30px;margin-top:20px;background:transparent url("../img/F2_logo.png") top left no-repeat;} .nav-collapse{clear:both;} .nav-collapse.collapse.in{background:#d8d8d8;-webkit-box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;-moz-box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;} .nav-collapse .icon-triangleDown{display:inline-block;margin-top:4px;} .nav-collapse .nav.navinset{width:auto;height:auto;display:block;visibility:visible;margin:0;} .nav-collapse .nav{float:none;margin:0 0 5px;} .nav-collapse .nav>li:first-child{padding-top:5px;} .nav-collapse .nav>li{float:none;border-bottom:1px solid #cac9c9;border-top:1px solid #e2e2e2;} .navbarmini .navbar-fixed-top .nav-collapse .nav>li>a{margin-bottom:2px;padding:9px 15px;} .nav-collapse .nav>.divider-vertical{display:none;} .nav-collapse .nav .nav-header{color:#777777;text-shadow:none;} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777777;} .nav-collapse .dropdown-menu a{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;} .nav-collapse .nav.navinset>li{border-bottom-color:#c0bebe;border-top-color:#adadad;} .nav-collapse .nav.navinset>li:first-child{padding-top:0;} .nav-collapse .nav.navinset>li>a{background-color:#b5b5b5;margin:0;color:#333;text-shadow:none;} .navbarmini .nav-collapse .nav.navinset>li>a{margin:0;padding-left:25px;} .nav-collapse .nav.navinset>li>a:hover,.nav-collapse .nav.navinset>li>a.active{background-color:#00609c;color:#ffffff;} .nav-collapse .nav>li>a>.F2VersionIndicator{top:auto;bottom:0;left:120px;} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} .nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#d8d8d8;} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111111;} .nav-collapse.in .btn-group{margin-top:5px;padding:0;} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} .nav-collapse .dropdown-menu .divider{display:none;} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111111;border-bottom-color:#111111;} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} .navbar .btn-navbar{display:block;margin-right:20px;} .openf2 .navbar .btn-navbar{margin-right:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .navbar .nav>li.ghWrap{border:0 none;display:none;} .navbar .nav>li.ghWrapResp{display:block;visibility:visible;height:auto;border:0 none;} .navbarmini .navbar-fixed-top .navbar-text,.openf2 .navbar-inner .navbar-text{line-height:75px;font-size:13px;margin-top:2px;-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;} .navbarmini .navbar-fixed-top .tagline-divider,.openf2 .navbar-inner .tagline-divider{height:38px;margin:20px 20px 0 20px;-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;}}@media (min-width:979px) and (-webkit-min-device-pixel-ratio:2){.navbarmini .navbar-fixed-top .brand{background-size:18px 13px;background-image:url("../img/mini_f2_logo_2x.png");}}@media (max-width:979px) and (-webkit-min-device-pixel-ratio:2){.navbarmini .navbar-fixed-top .brand{background-image:url("../img/F2_logoRetina.png");background-size:56px 37px;}}@media (min-width:480px) and (max-width:767px){.tagline-divider,.navbar-text{display:block !important;}}@media (max-width:767px){.tagline-divider,.navbar-text{display:none;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@-webkit-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-moz-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-o-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-ms-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-webkit-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-moz-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-o-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-ms-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}.navbar-docs{background:#fff none;border-bottom:1px solid #a7a7a7;-webkit-box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);-moz-box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;} -.navbar-docs .container{margin-bottom:0;} -.navbar-docs .container .row{margin-bottom:0;} -.navbar-docs ul{margin:0;width:100%;} -.navbar-docs li{height:38px;width:33.33333333333333%;float:left;text-align:center;} -.navbar-docs a,.navbar-docs a:visited{height:38px;width:100%;line-height:38px;display:block;font-size:19px;font-family:rokkittregular;text-transform:uppercase;letter-spacing:0.2em;} -.navbar-docs a:hover,.navbar-docs a:active,.navbar-docs a.active{background-color:#f3f3f3;text-decoration:none;} -.navbar-docs .basics{border-top:3px solid #005f9c;color:#005f9c;} -.navbar-docs .basics a{border-left:1px solid #e2e2e2;color:#005f9c;} -.navbar-docs .dev{border-top:3px solid #b1e27e;} -.navbar-docs .dev a{border-left:1px solid #e2e2e2;border-right:1px solid #e2e2e2;color:#b1e27e;} -.navbar-docs .ref{border-top:3px solid #fabb5d;} -.navbar-docs .ref a{border-right:1px solid #e2e2e2;color:#fabb5d;} -@media (min-width:768px) and (max-width:979px){.navbar-docs{display:none;visibility:hidden;}}@media (max-width:767px){.navbar-docs{display:none;visibility:hidden;}}.navbar-docs-sections{background-color:#292929;margin:0;} -.navbar-docs-sections [data-toggle]{border-bottom:2px solid #0a6199;color:#9da6ac;display:block;font-weight:bold;line-height:32px;text-align:center;text-decoration:none;} -.navbar-docs-sections [data-toggle] span{margin-top:5px;} -.navbar-docs-sections{display:none;visibility:hidden;} -@media (max-width:979px){.navbar-docs-sections{display:block;visibility:visible;}}body{padding-top:90px;} -.container .row{margin-bottom:20px;} -.container .span9{padding-bottom:100px;} -pre{font-size:12px;} -pre.prettyprint{padding:8px;background-color:#F7F7F9;border:1px solid #E1E1E8;} -h1.title{margin-top:0;} -.level2,.level3{padding-top:87px;} -.level3{padding-top:82px;} -.level4{margin-top:30px;} -section>hr{margin:40px 0 0;} -#docs section h2,#docs section h3,#docs section h4,#docs section h5,#docs section h6{position:relative;} -section .docs-anchor{padding-left:12px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0;opacity:0.2;filter:alpha(opacity=20);margin-top:2px;} -.nav-list{margin-top:9px;border-top:3px solid #737373;padding-left:15px;padding-right:15px;} -.nav-list>li{position:relative;} -.nav-list>li>a{font-family:rokkittregular;font-size:19px;} -.nav-list>li>ul a{font-size:17px;padding:4px 0 4px 15px;} -.nav-list>li>a:hover{background:none;color:#0a6199;} -.nav-list .nav-list{border-top:none;margin-top:0;} -.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:none;} -.nav-list>li>a{padding:8px 15px;color:#333;} -.nav-list>li>ul a{color:#737373;} -.nav-list>.active>a,.nav-list>.active>a:hover{color:#0a6199;text-shadow:none;background:none;} -.nav-list [class^="icon-"]{margin-right:2px;} -.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -#toc{min-height:1px;} -.nav-list,.nav-list.affix,.nav-list.affix-bottom{width:190px;} -@media (min-width:1200px){.nav-list,.nav-list.affix,.nav-list.affix-bottom{width:240px;} .nav-list>li>ul a{font-size:19px;} .nav-list>li>a{font-size:20px;}}@media (max-width:979px){body{padding-top:0;} #toc{display:none;} .container .span9{width:724px;} .level2{padding-top:20px;} .level3{padding-top:5px;} .level4{margin-top:20px;}}@media (max-width:767px){.container .span9{width:100%;}}.nav-list.affix{margin-bottom:70px;} -footer small{font-size:12px;} -footer .pull-right{text-align:right;} +article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { + display: block; +} + +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, a:active { + outline: 0; +} + +sub, sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + max-width: 100%; + width: auto \9; + height: auto; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img { + max-width: none; +} + +button, input, select, textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, input[type="button"], input[type="reset"], input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, .clearfix:after { + display: table; + content: ""; + line-height: 0; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0a6199; + text-decoration: none; +} + +a:hover { + color: #053351; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, .row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, .row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.container-fluid:after { + clear: both; +} + +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.container-fluid:after { + clear: both; +} + +.openf2Header { + background-color: #f0f0f0; +} + +body.openf2 { + background: transparent url("../img/footerNoise.png") repeat; +} + +body.f2Developer { + background: transparent url("../img/footerNoise.png") repeat; +} + +body.letterPage { + background: transparent url("../img/footerNoise.png") repeat; +} + +body .mainContainer { + background-color: #ffffff; + padding: 0; + margin-top: 0; +} + +body .mainContainer .AppRegistrationForm { + min-height: 300px; + padding: 20px; + background: url("../img/F2TopShadowBorder.png") top no-repeat; +} + +body .mainContainer .noiseWrap { + background: transparent url("../img/footerNoise.png") repeat; +} + +body .mainContainer .letter { + background-color: transparent; + background: url("../img/F2TopShadowBorder.png") top no-repeat; + padding-bottom: 20px; +} + +body .mainContainer .letter .letterWrapper { + margin-top: 30px; + background: url("../img/F2LetterImage.png") center no-repeat; +} + +body .mainContainer .letter .letterWrapper .letterContent { + width: 875px; + height: 890px; + margin: auto; +} + +body .mainContainer .letter .letterWrapper .letterContent .date { + text-align: right; +} + +body .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 80px; +} + +body .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 100px; +} + +body .mainContainer .letter p { + color: #727272; + margin-bottom: 15px; + font-size: 14px; + text-shadow: 0px 1px #ffffff; +} + +body .mainContainer .letter .signature { + background: url("../img/F2Signature.png") center no-repeat; + padding: 30px 20px; +} + +body .mainContainer .description { + z-index: 2; + background: url("../img/F2TopShadowBorder.png") top no-repeat; + background-color: #ffffff; + position: relative; + height: 665px; +} + +body .mainContainer .description .letterLink { + padding-top: 10px; +} + +body .mainContainer .description p { + margin-bottom: 0; + line-height: 1.5em; + color: #535353; + font-weight: 200; + font-size: 17px; +} + +body .mainContainer .description p.F2Indent { + padding-left: 10px; + font-size: 12px; +} + +body .mainContainer .description p.F2Indent a { + color: #535353; +} + +body .mainContainer .description h2:first-child { + margin-top: 0; + padding-top: 50px; + font-size: 35px; + margin-bottom: 30px; + line-height: 1.25em; +} + +body .mainContainer .description h2, body .mainContainer .description h3 { + color: #0a6199; + margin-bottom: 0; + line-height: 1; +} + +body .mainContainer .description h3:first-child { + margin-top: 30px; +} + +body .mainContainer .description h3 a { + color: #0a6199; +} + +body .mainContainer .description .overview h2, body .mainContainer .description .overview h3 { + color: #ffffff; +} + +body .mainContainer .description .mainBGImg { + z-index: -1; + position: absolute; + top: 0; + left: 0; + margin: 0; + list-style: none; + width: 100%; +} + +body .mainContainer .description .mainBGImg li div.img { + height: 665px; + width: 100%; +} + +body .mainContainer .description .ImgIpad { + background: url("../img/F2_iPad.jpg") no-repeat center; +} + +body .mainContainer .description .ImgIscreens { + background: url("../img/F2_iScreens.jpg") no-repeat center; +} + +body .mainContainer .description .ImgIphone { + background: url("../img/F2_iPhone.jpg") no-repeat center; +} + +body .mainContainer .description .mainBGControl { + margin: 30px 0 0 0; + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .description .mainBGControl li { + display: inline-block; +} + +body .mainContainer .description .mainBGControl li a { + background: url("../img/bgControlDot.png") no-repeat center; + padding: 10px; +} + +body .mainContainer .description .mainBGControl .selected a { + background: url("../img/bgControlDotSelected.png") no-repeat center; +} + +body .mainContainer .overview { + background-color: #ffffff; + background-color: #53585b; + background-image: -moz-linear-gradient(top, #575d61, #4d5052); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#575d61), to(#4d5052)); + background-image: -webkit-linear-gradient(top, #575d61, #4d5052); + background-image: -o-linear-gradient(top, #575d61, #4d5052); + background-image: linear-gradient(to bottom, #575d61, #4d5052); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff575d61', endColorstr='#ff4d5052', GradientType=0); +} + +body .mainContainer .overview h2 { + text-align: center; + margin-bottom: 20px; + color: #ffffff; +} + +body .mainContainer .overview .container { + background: url("../img/F2TopShadowBorder.png") top no-repeat; +} + +body .mainContainer .overview .row { + padding: 50px 0; +} + +body .mainContainer .overview .F2SunBullet { + background: url("../img/F2SunIcon.png") center no-repeat; + padding: 10px; +} + +body .mainContainer .overview .bulletPoints ul { + list-style: none; +} + +body .mainContainer .overview .bulletPoints ul li { + padding-left: 22px; + background: url("../img/F2SunIcon.png") left top no-repeat; +} + +body .mainContainer .overview .bulletPoints .span4 { + margin-left: 5px; +} + +body .mainContainer .overview .f2OverviewSummary { + font-style: italic; +} + +body .mainContainer .overview .interactiveDisplay { + background: transparent; +} + +body .mainContainer .overview .interactiveDisplay .carousel-inner { + height: 430px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .item { + background: url("../img/bankeoSprite.png") no-repeat; + height: 430px; + max-width: 570px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .euro { + background-position: -55px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .sp500 { + background-position: -685px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .ft { + background-position: -1325px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .research { + background-position: -1965px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .stockPicks { + background-position: -2615px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .reuters { + background-position: -3255px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .video { + background-position: -3895px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .search { + background-position: -4555px -34px; +} + +body .mainContainer .overview .photoControl { + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .overview .photoControl li { + display: inline-block; + cursor: pointer; +} + +body .mainContainer .overview .photoControl li a { + background: url("../img/dot.png") no-repeat center; + padding: 13px; +} + +body .mainContainer .overview .photoControl .selected a { + background: url("../img/dotSelected.png") no-repeat center; +} + +body .mainContainer .overview .captions { + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .overview .captions li { + display: none; +} + +body .mainContainer .overview .captions li.selected { + display: inline-block; +} + +body .mainContainer .overview p { + color: #ffffff; + margin-bottom: 20px; + font-size: 14px; +} + +body .mainContainer .exampleContent { + padding-top: 40px; +} + +body .mainContainer .exampleContent #exampleAppContainer a { + color: #417777; +} + +body .mainContainer .exampleContent #exampleAppContainer footer { + background: transparent; +} + +body .mainContainer .exampleCaptions p { + padding: 0 0 40px 0; + color: #6c6c6c; + background: url("../img/smallShadowDivider.png") bottom no-repeat; +} + +body .mainContainer .exampleControls { + position: relative; + margin: 0; + padding: 20px 0; + text-align: center; +} + +body .mainContainer .exampleControls .arrow { + height: 25px; + width: 13px; + cursor: pointer; + position: absolute; + top: 15px; +} + +body .mainContainer .exampleControls .leftArrow { + background: url("../img/LeftArrow.png") center no-repeat; + left: 0; +} + +body .mainContainer .exampleControls .rightArrow { + background: url("../img/RightArrow.png") center no-repeat; + right: 0; +} + +body .mainContainer .exampleControls ul { + margin: 0; + list-style: none; +} + +body .mainContainer .exampleControls ul li { + display: inline-block; +} + +body .mainContainer .exampleControls ul li a { + background: url("../img/bgControlDot.png") no-repeat center; + padding: 10px; +} + +body .mainContainer .exampleControls ul .selected a { + background: url("../img/bgControlDotSelected.png") no-repeat center; +} + +body .mainContainer footer { + background: url("../img/footerNoise.png") repeat; + color: #bfc7ce; +} + +body .mainContainer footer .container { + background: url("../img/bottomBorderFade.png") top no-repeat; +} + +body .mainContainer footer h1, body .mainContainer footer h2, body .mainContainer footer h3, body .mainContainer footer h4, body .mainContainer footer h5, body .mainContainer footer h6 { + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; +} + +body .mainContainer footer h5 { + line-height: 10px; + font-size: 12px; +} + +body .mainContainer footer .diskIcon { + background: url("../img/diskIcon.png") no-repeat center; + padding: 50px 75px; +} + +body .mainContainer footer .docIcon { + background: url("../img/docIcon.png") no-repeat center; + padding: 50px 75px; +} + +body .mainContainer footer .span6 { + padding: 15px 0; + margin-top: 20px; +} + +body .mainContainer footer .pull-left h2 { + line-height: 20px; +} + +body .mainContainer footer a { + text-decoration: none; + color: #bfc7ce; +} + +body .mainContainer footer a.releaseNotes { + text-decoration: underline; +} + +body .mainContainer footer .version { + padding: 0 10px; + font-size: 46px; +} + +body .mainContainer footer .socialWrap { + background: url("../img/bottomBorderFade.png") bottom no-repeat; + padding-bottom: 40px; +} + +body .mainContainer footer .social { + padding: 20px 0 10px 0; +} + +body .mainContainer footer .span12 { + text-align: center; + color: #3b4044; + margin-bottom: 10px; +} + +.footerLogoDark { + background: url("../img/F2FooterLogoDark.png") center no-repeat; + height: 24px; +} + +.footerLogoLight { + background: url("../img/F2FooterLogoLight.png") center no-repeat; + height: 23px; +} + +.examplePage { + background: url("../img/F2TopShadowBorder.png") top no-repeat; + background-color: #ffffff; + padding-bottom: 50px; +} + +.F2DottedLine { + width: 100%; + border-bottom: 1px dotted #ffffff; +} + +@font-face { + font-family: 'rokkittregular'; + src: url('rokkitt-webfont.eot'); + src: local('☺'), url('rokkitt-webfont.woff') format('woff'), url('rokkitt-webfont.ttf') format('truetype'), url('rokkitt-webfont.svg#rokkittregular') format('svg'); + font-weight: normal; + font-style: normal; +} + +p { + margin: 0 0 10px; + font-size: 14px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +.text-warning { + color: #c09853; +} + +.text-error { + color: #b94a48; +} + +.text-info { + color: #3a87ad; +} + +.text-success { + color: #468847; +} + +h1, h2, h3, h4, h5, h6 { + margin: 10px 0; + font-family: rokkittregular; + font-weight: normal; + line-height: 1; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1 { + font-size: 36px; + line-height: 40px; +} + +h2 { + font-size: 30px; + line-height: 30px; +} + +h3 { + font-size: 24px; + line-height: 40px; +} + +h4 { + font-size: 20px; + line-height: 20px; +} + +h5 { + font-size: 16px; + line-height: 20px; +} + +h6 { + font-size: 14px; + line-height: 20px; +} + +h1 small { + font-size: 24px; +} + +h2 small { + font-size: 18px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, ul ol, ol ol, ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 20px; +} + +dt, dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, .dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal:before, .dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, q:after, blockquote:before, blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +a code { + border-color: #e1e1e8 !important; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, input, button, select, textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, button, select, textarea { + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 9px; + font-size: 14px; + line-height: 20px; + color: #555555; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +input, textarea, .uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear .2s, box-shadow linear .2s; + -moz-transition: border linear .2s, box-shadow linear .2s; + -o-transition: border linear .2s, box-shadow linear .2s; + transition: border linear .2s, box-shadow linear .2s; +} + +textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], input[type="checkbox"] { + margin: 4px 0 0; + *margin-top: 0; + margin-top: 1px \9; + line-height: normal; + cursor: pointer; +} + +input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { + width: auto; +} + +select, input[type="file"] { + height: 30px; + *margin-top: 4px; + line-height: 30px; +} + +select { + width: 220px; + border: 1px solid #cccccc; + background-color: #ffffff; +} + +select[multiple], select[size] { + height: auto; +} + +select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, .uneditable-textarea { + color: #999999; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { + color: #999999; +} + +input:-moz-placeholder, textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, .checkbox { + min-height: 18px; + padding-left: 18px; +} + +.radio input[type="radio"], .checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +.controls > .radio:first-child, .controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, .checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, textarea, .uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, textarea.span12, .uneditable-input.span12 { + width: 926px; +} + +input.span11, textarea.span11, .uneditable-input.span11 { + width: 846px; +} + +input.span10, textarea.span10, .uneditable-input.span10 { + width: 766px; +} + +input.span9, textarea.span9, .uneditable-input.span9 { + width: 686px; +} + +input.span8, textarea.span8, .uneditable-input.span8 { + width: 606px; +} + +input.span7, textarea.span7, .uneditable-input.span7 { + width: 526px; +} + +input.span6, textarea.span6, .uneditable-input.span6 { + width: 446px; +} + +input.span5, textarea.span5, .uneditable-input.span5 { + width: 366px; +} + +input.span4, textarea.span4, .uneditable-input.span4 { + width: 286px; +} + +input.span3, textarea.span3, .uneditable-input.span3 { + width: 206px; +} + +input.span2, textarea.span2, .uneditable-input.span2 { + width: 126px; +} + +input.span1, textarea.span1, .uneditable-input.span1 { + width: 46px; +} + +input, textarea, .uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, textarea.span12, .uneditable-input.span12 { + width: 926px; +} + +input.span11, textarea.span11, .uneditable-input.span11 { + width: 846px; +} + +input.span10, textarea.span10, .uneditable-input.span10 { + width: 766px; +} + +input.span9, textarea.span9, .uneditable-input.span9 { + width: 686px; +} + +input.span8, textarea.span8, .uneditable-input.span8 { + width: 606px; +} + +input.span7, textarea.span7, .uneditable-input.span7 { + width: 526px; +} + +input.span6, textarea.span6, .uneditable-input.span6 { + width: 446px; +} + +input.span5, textarea.span5, .uneditable-input.span5 { + width: 366px; +} + +input.span4, textarea.span4, .uneditable-input.span4 { + width: 286px; +} + +input.span3, textarea.span3, .uneditable-input.span3 { + width: 206px; +} + +input.span2, textarea.span2, .uneditable-input.span2 { + width: 126px; +} + +input.span1, textarea.span1, .uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, .controls-row:after { + display: table; + content: ""; + line-height: 0; +} + +.controls-row:after { + clear: both; +} + +.controls-row:before, .controls-row:after { + display: table; + content: ""; + line-height: 0; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"] { + float: left; +} + +input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, .control-group.error select, .control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, .control-group.error select, .control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; +} + +.control-group.success input, .control-group.success select, .control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; +} + +.control-group.success input, .control-group.success select, .control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, .control-group.info select, .control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +.control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, .control-group.info select, .control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, .form-actions:after { + display: table; + content: ""; + line-height: 0; +} + +.form-actions:after { + clear: both; +} + +.form-actions:before, .form-actions:after { + display: table; + content: ""; + line-height: 0; +} + +.form-actions:after { + clear: both; +} + +.help-block, .help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding-left: 5px; +} + +.input-append, .input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} + +.input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + font-size: 14px; + vertical-align: top; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-append input:focus, .input-prepend input:focus, .input-append select:focus, .input-prepend select:focus, .input-append .uneditable-input:focus, .input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, .input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, .input-prepend .add-on, .input-append .btn, .input-prepend .btn { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, .input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, .input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, .input-prepend .btn:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append input, .input-append select, .input-append .uneditable-input { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append .add-on, .input-append .btn { + margin-left: -1px; +} + +.input-append .add-on:last-child, .input-append .btn:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.form-search .input-append .search-query, .form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append { + display: inline-block; + *display: inline; + *zoom: 1; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .hide, .form-inline .hide, .form-horizontal .hide { + display: none; +} + +.form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, .table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, .table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, .table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, .table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child, .table-bordered tfoot:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child, .table-bordered tfoot:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover td, .table-hover tbody tr:hover th { + background-color: #f5f5f5; +} + +table [class*=span], .row-fluid table [class*=span] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +.table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +.table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +.table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +.table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +.table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +.table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +.table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +.table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +.table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +.table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +.table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + +.table tbody tr.success td { + background-color: #dff0d8; +} + +.table tbody tr.error td { + background-color: #f2dede; +} + +.table tbody tr.warning td { + background-color: #fcf8e3; +} + +.table tbody tr.info td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} + +[class^="icon-"], [class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; + margin-top: 1px; +} + +.icon-white, .nav-tabs > .active > a > [class^="icon-"], .nav-tabs > .active > a > [class*=" icon-"], .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + background-position: -216px -120px; + width: 16px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + background-position: -408px -120px; + width: 16px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, .dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, .open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-submenu:hover > a { + text-decoration: none; + color: #ffffff; + background-color: #0a6199; + background-color: #095b8f; + background-image: -moz-linear-gradient(top, #0a6199, #085281); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281)); + background-image: -webkit-linear-gradient(top, #0a6199, #085281); + background-image: -o-linear-gradient(top, #0a6199, #085281); + background-image: linear-gradient(to bottom, #0a6199, #085281); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0); +} + +.dropdown-menu .active > a, .dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #0a6199; + background-color: #095b8f; + background-image: -moz-linear-gradient(top, #0a6199, #085281); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281)); + background-image: -webkit-linear-gradient(top, #0a6199, #085281); + background-image: -o-linear-gradient(top, #0a6199, #085281); + background-image: linear-gradient(to bottom, #0a6199, #085281); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0); +} + +.dropdown-menu .disabled > a, .dropdown-menu .disabled > a:hover { + color: #999999; +} + +.dropdown-menu .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, .navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} + +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + *zoom: 1; + padding: 4px 14px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + *line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e6e6e6; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + border: 1px solid #bbbbbb; + *border: 0; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *margin-left: .3em; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, .btn.active { + background-color: #cccccc \9; +} + +.btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, .btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + *background-color: #d9d9d9; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, .btn:active { + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, .btn[disabled] { + cursor: default; + background-color: #e6e6e6; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 9px 14px; + font-size: 16px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.btn-large [class^="icon-"] { + margin-top: 2px; +} + +.btn-small { + padding: 3px 9px; + font-size: 12px; + line-height: 18px; +} + +.btn-small [class^="icon-"] { + margin-top: 0; +} + +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 17px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0a4e99; + background-image: -moz-linear-gradient(top, #0a6199, #0a3199); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#0a3199)); + background-image: -webkit-linear-gradient(top, #0a6199, #0a3199); + background-image: -o-linear-gradient(top, #0a6199, #0a3199); + background-image: linear-gradient(to bottom, #0a6199, #0a3199); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff0a3199', GradientType=0); + border-color: #0a3199 #0a3199 #051a51; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0a3199; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { + color: #ffffff; + background-color: #0a3199; + *background-color: #082a81; +} + +.btn-primary:active, .btn-primary.active { + background-color: #072269 \9; +} + +.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { + color: #ffffff; + background-color: #0a3199; + *background-color: #082a81; +} + +.btn-primary:active, .btn-primary.active { + background-color: #072269 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #f89406; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} + +.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #bd362f; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} + +.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #51a351; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} + +.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #2f96b4; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} + +.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #222222; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, .btn-inverse.active { + background-color: #080808 \9; +} + +.btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, .btn-inverse.active { + background-color: #080808 \9; +} + +.btn-primaryAlt { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #2869a6; + background-image: -moz-linear-gradient(top, #2a6fb0, #246097); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2a6fb0), to(#246097)); + background-image: -webkit-linear-gradient(top, #2a6fb0, #246097); + background-image: -o-linear-gradient(top, #2a6fb0, #246097); + background-image: linear-gradient(to bottom, #2a6fb0, #246097); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a6fb0', endColorstr='#ff246097', GradientType=0); + border-color: #246097 #246097 #153959; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #246097; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primaryAlt:hover, .btn-primaryAlt:focus, .btn-primaryAlt:active, .btn-primaryAlt.active, .btn-primaryAlt.disabled, .btn-primaryAlt[disabled] { + color: #ffffff; + background-color: #246097; + *background-color: #1f5382; +} + +.btn-primaryAlt:active, .btn-primaryAlt.active { + background-color: #1a466e \9; +} + +.btn-primaryAlt:hover, .btn-primaryAlt:focus, .btn-primaryAlt:active, .btn-primaryAlt.active, .btn-primaryAlt.disabled, .btn-primaryAlt[disabled] { + color: #ffffff; + background-color: #246097; + *background-color: #1f5382; +} + +.btn-primaryAlt:active, .btn-primaryAlt.active { + background-color: #1a466e \9; +} + +button.btn, input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, .btn-link:active, .btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + border-color: transparent; + cursor: pointer; + color: #0a6199; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover { + color: #053351; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + font-size: 0; + vertical-align: middle; + white-space: nowrap; + *margin-left: .3em; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + font-size: 0; + margin-top: 10px; + margin-bottom: 10px; +} + +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + *zoom: 1; +} + +.btn-toolbar .btn + .btn, .btn-toolbar .btn-group + .btn, .btn-toolbar .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, .btn-group > .dropdown-menu { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 11px; +} + +.btn-group > .btn-small { + font-size: 12px; +} + +.btn-group > .btn-large { + font-size: 16px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} + +.btn-group > .btn:last-child, .btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} + +.btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} + +.btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + *padding-top: 5px; + *padding-bottom: 5px; +} + +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; + *padding-top: 2px; + *padding-bottom: 2px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + *padding-top: 7px; + *padding-bottom: 7px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0a3199; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-mini .caret, .btn-small .caret, .btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; +} + +.dropup .btn-large .caret { + border-bottom: 5px solid #000000; + border-top: 0; +} + +.btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + *zoom: 1; +} + +.btn-group-vertical .btn { + display: block; + float: none; + width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical .btn + .btn { + margin-left: 0; + margin-top: -1px; +} + +.btn-group-vertical .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert h5 { + font-size: 20px; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #468847; +} + +.alert-danger, .alert-error { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} + +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, .alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-left: 0; + margin-bottom: 20px; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, .nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, .nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0a6199; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, .nav-pills { + *zoom: 1; +} + +.nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { + display: table; + content: ""; + line-height: 0; +} + +.nav-tabs:after, .nav-pills:after { + clear: both; +} + +.nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { + display: table; + content: ""; + line-height: 0; +} + +.nav-tabs:after, .nav-pills:after { + clear: both; +} + +.nav-tabs > li, .nav-pills > li { + float: left; +} + +.nav-tabs > li > a, .nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, .nav-tabs > .active > a:hover { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, .nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0a6199; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + border-top-color: #0a6199; + border-bottom-color: #0a6199; + margin-top: 6px; +} + +.nav .dropdown-toggle:hover .caret { + border-top-color: #053351; + border-bottom-color: #053351; +} + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, .tabbable:after { + display: table; + content: ""; + line-height: 0; +} + +.tabbable:after { + clear: both; +} + +.tabbable:before, .tabbable:after { + display: table; + content: ""; + line-height: 0; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, .pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, .pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-bottom-color: transparent; + border-top-color: #ddd; +} + +.tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} + +.navbar { + overflow: visible; + margin-bottom: 0; + color: #777777; + *position: relative; + *z-index: 2; +} + +.navbar-inner { + min-height: 75px; + background: #f0f0f0; + *zoom: 1; +} + +.navbar-inner:before, .navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-inner:after { + clear: both; +} + +.navbar-inner:before, .navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; +} + +.navbar .brand { + float: left; + display: block; + padding: 30px 30px 10px 30px; + margin-top: 15px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; + text-indent: -9000px; + background: transparent url("../img/F2_logo.png") top left no-repeat; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 75px; + color: #737373; + font-size: 13px; + letter-spacing: 1px; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover { + color: #333333; +} + +.navbar .divider-vertical { + height: 10px; + margin: 33px 0 0 0; + border-left: 1px solid #a5a5a5; + border-right: 1px solid #a5a5a5; +} + +.navbar .tagline-divider { + float: left; + border-left: 1px solid #B2BBC3; + height: 30px; + margin: 20px 20px 0 20px; +} + +.navbar .btn, .navbar .btn-group { + margin-top: 22.5px; +} + +.navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { + margin-top: 22.5px; +} + +.navbar-form input, .navbar-form select, .navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, .navbar-form .input-prepend { + margin-top: 6px; + white-space: nowrap; +} + +.navbar-form .input-append input, .navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 22.5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + margin-bottom: 0; + padding: 4px 14px; + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + width: 100%; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, .navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { + border-bottom: 1px solid #dcdcdc; +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 27.5px 10px 27.5px; + color: #6c6c6c; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; + font-size: 14px; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > .gitHubLink { + font-size: 16px; + color: #3e6296; +} + +.navbar .nav > li.ghWrapResp { + display: none; + visibility: hidden; + height: 0; + border: 0 none; +} + +.navbar .nav > li > .gitHubLink strong { + font-family: rokkittregular; + font-size: 17px; +} + +.navbar .nav > li > a > .onDecoration { + border-top: 1px solid #999999; + border-bottom: 1px solid #999999; + color: #999999; + font-size: 10px; + font-weight: bold; +} + +.navbar .nav > li > a > .F2VersionIndicator { + position: absolute; + top: 50%; + right: 10px; + font-size: 10px; + padding-top: 3px; + color: #6c6c6c; +} + +.navbar .nav > li > a:focus, .navbar .nav > li > a:hover { + background-color: transparent; + color: #333333; + text-decoration: none; +} + +.navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + font-weight: bold; +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + background: transparent none; + border: 0 none; + box-shadow: none; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 40px; + height: 2px; + background-color: #9da6ac; + border-top: 1px solid #666c70; + border-bottom: 2px solid #fff; +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .icon-triangleDown { + width: 0; + height: 0; + border-left: 6.5px solid transparent; + border-right: 6.5px solid transparent; + border-top: 6.5px solid #9da6ac; +} + +.navbar .icon-triangleRight { + width: 0; + height: 0; + border-top: 6.5px solid transparent; + border-bottom: 6.5px solid transparent; + border-left: 6.5px solid #9da6ac; +} + +.nav-collapse .icon-triangleDown, .icon-triangleRight { + display: none; +} + +.nav.navinset { + width: 0; + height: 0; + display: none; + visibility: hidden; +} + +.navbarmini .navbar-fixed-top .navbar-inner { + min-height: 28px; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); +} + +.navbarmini .navbar-fixed-top .brand { + padding: 4px 10px 9px; + margin-top: 7px; + font-size: 20px; + font-weight: 200; + background-image: url("../img/mini_f2_logo.png"); +} + +.navbarmini .navbar-fixed-top .tagline-divider { + height: 10px; + margin: 9px 12px 0 12px; +} + +.navbarmini .navbar-fixed-top .navbar-text { + line-height: 28px; + font-size: 10px; +} + +.navbarmini .navbar-fixed-top .divider-vertical { + margin-top: 8px; +} + +.navbarmini .navbar-fixed-top .nav > li > a { + padding: 4px 10px 4px; + font-size: 12px; +} + +.navbarmini .navbar-fixed-top .nav > li > .gitHubLink { + font-size: 14px; +} + +.navbarmini .navbar-fixed-top .nav > li > .gitHubLink strong { + font-size: 15px; +} + +.navbarmini .navbar-fixed-top .navbar .nav > li > a > .onDecoration { + font-size: 9px; +} + +.navbarmini .navbar-fixed-top .nav > li > a > .F2VersionIndicator { + position: static; + top: auto; + left: auto; + padding-left: 5px; +} + +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .navbar .navbar-inner .brand { + background-size: 56px 37px; + background-image: url("../img/F2_logoRetina.png"); + } + + .navbarmini .navbar-fixed-top .brand { + background-size: 18px 13px; + background-image: url("../img/mini_f2_logo_2x.png"); + } +} + +.navbar .nav > li > .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} + +.navbar .nav > li > .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + border-bottom: 0; + bottom: -7px; + top: auto; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + border-top: 6px solid #ffffff; + border-bottom: 0; + bottom: -6px; + top: auto; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #e5e5e5; + color: #555555; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} + +.navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { + left: auto; + right: 12px; +} + +.navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { + left: auto; + right: 13px; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse { + color: #999999; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); + border-color: #252525; +} + +.navbar-inverse .brand, .navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover { + color: #ffffff; +} + +.navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { + background-color: transparent; + color: #ffffff; +} + +.navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-left-color: #a5a5a5; + border-right-color: #a5a5a5; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #111111; + color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #040404; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb li { + display: inline-block; + *display: inline; + *zoom: 1; + text-shadow: 0 1px 0 #ffffff; +} + +.breadcrumb .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb .active { + color: #999999; +} + +.pagination { + height: 40px; + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, .pagination ul > li > span { + float: left; + padding: 0 14px; + line-height: 38px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, .pagination ul > .active > a, .pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, .pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover { + color: #999999; + background-color: transparent; + cursor: default; +} + +.pagination ul > li:first-child > a, .pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.pagination ul > li:last-child > a, .pagination ul > li:last-child > span { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pager { + margin: 20px 0; + list-style: none; + text-align: center; + *zoom: 1; +} + +.pager:before, .pager:after { + display: table; + content: ""; + line-height: 0; +} + +.pager:after { + clear: both; +} + +.pager:before, .pager:after { + display: table; + content: ""; + line-height: 0; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager a, .pager span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next a, .pager .next span { + float: right; +} + +.pager .previous a { + float: left; +} + +.pager .disabled a, .pager .disabled a:hover, .pager .disabled span { + color: #999999; + background-color: #fff; + cursor: default; +} + +.modal-open .modal .dropdown-menu { + z-index: 2050; +} + +.modal-open .modal .dropdown.open { + *z-index: 2050; +} + +.modal-open .modal .popover { + z-index: 2060; +} + +.modal-open .modal .tooltip { + z-index: 2080; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, .modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + overflow: auto; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} + +.modal.fade.in { + top: 50%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + overflow-y: auto; + max-height: 400px; + padding: 15px; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} + +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; + line-height: 0; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; + line-height: 0; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -3px; +} + +.tooltip.right { + margin-left: 3px; +} + +.tooltip.bottom { + margin-top: 3px; +} + +.tooltip.left { + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + background-color: #ffffff; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} + +.popover.top { + margin-bottom: 10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-right: 10px; +} + +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover-content p, .popover-content ul, .popover-content ol { + margin-bottom: 0; +} + +.popover .arrow, .popover .arrow:after { + position: absolute; + display: inline-block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow:after { + content: ""; + z-index: -1; +} + +.popover.top .arrow { + bottom: -10px; + left: 50%; + margin-left: -10px; + border-width: 10px 10px 0; + border-top-color: #ffffff; +} + +.popover.top .arrow:after { + border-width: 11px 11px 0; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -1px; + left: -11px; +} + +.popover.right .arrow { + top: 50%; + left: -10px; + margin-top: -10px; + border-width: 10px 10px 10px 0; + border-right-color: #ffffff; +} + +.popover.right .arrow:after { + border-width: 11px 11px 11px 0; + border-right-color: rgba(0, 0, 0, 0.25); + bottom: -11px; + left: -1px; +} + +.popover.bottom .arrow { + top: -10px; + left: 50%; + margin-left: -10px; + border-width: 0 10px 10px; + border-bottom-color: #ffffff; +} + +.popover.bottom .arrow:after { + border-width: 0 11px 11px; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -1px; + left: -11px; +} + +.popover.left .arrow { + top: 50%; + right: -10px; + margin-top: -10px; + border-width: 10px 0 10px 10px; + border-left-color: #ffffff; +} + +.popover.left .arrow:after { + border-width: 11px 0 11px 11px; + border-left-color: rgba(0, 0, 0, 0.25); + bottom: -11px; + right: -1px; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; + line-height: 0; +} + +.thumbnails:after { + clear: both; +} + +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; + line-height: 0; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { + border-color: #0a6199; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.label, .badge { + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, .badge-important { + background-color: #b94a48; +} + +.label-important[href], .badge-important[href] { + background-color: #953b39; +} + +.label-warning, .badge-warning { + background-color: #f89406; +} + +.label-warning[href], .badge-warning[href] { + background-color: #c67605; +} + +.label-success, .badge-success { + background-color: #468847; +} + +.label-success[href], .badge-success[href] { + background-color: #356635; +} + +.label-info, .badge-info { + background-color: #3a87ad; +} + +.label-info[href], .badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, .badge-inverse { + background-color: #333333; +} + +.label-inverse[href], .badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, .btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, .btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, .progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, .progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, .progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, .progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, .progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, .progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, .progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, .progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} + +.carousel .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel .item > img { + display: block; + line-height: 1; +} + +.carousel .active, .carousel .next, .carousel .prev { + display: block; +} + +.carousel .active { + left: 0; +} + +.carousel .next, .carousel .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel .next { + left: 100%; +} + +.carousel .prev { + left: -100%; +} + +.carousel .next.left, .carousel .prev.right { + left: 0; +} + +.carousel .active.left { + left: -100%; +} + +.carousel .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + left: auto; + right: 15px; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, .carousel-caption p { + color: #ffffff; + line-height: 20px; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + color: inherit; + letter-spacing: -1px; +} + +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, .clearfix:after { + display: table; + content: ""; + line-height: 0; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + + .visible-desktop { + display: none !important; + } + + .visible-tablet { + display: inherit !important; + } + + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + + .visible-desktop { + display: none !important; + } + + .visible-phone { + display: inherit !important; + } + + .hidden-phone { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 1170px; + } + + .span12 { + width: 1170px; + } + + .span11 { + width: 1070px; + } + + .span10 { + width: 970px; + } + + .span9 { + width: 870px; + } + + .span8 { + width: 770px; + } + + .span7 { + width: 670px; + } + + .span6 { + width: 570px; + } + + .span5 { + width: 470px; + } + + .span4 { + width: 370px; + } + + .span3 { + width: 270px; + } + + .span2 { + width: 170px; + } + + .span1 { + width: 70px; + } + + .offset12 { + margin-left: 1230px; + } + + .offset11 { + margin-left: 1130px; + } + + .offset10 { + margin-left: 1030px; + } + + .offset9 { + margin-left: 930px; + } + + .offset8 { + margin-left: 830px; + } + + .offset7 { + margin-left: 730px; + } + + .offset6 { + margin-left: 630px; + } + + .offset5 { + margin-left: 530px; + } + + .offset4 { + margin-left: 430px; + } + + .offset3 { + margin-left: 330px; + } + + .offset2 { + margin-left: 230px; + } + + .offset1 { + margin-left: 130px; + } + + .row { + margin-left: -30px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 1170px; + } + + .span12 { + width: 1170px; + } + + .span11 { + width: 1070px; + } + + .span10 { + width: 970px; + } + + .span9 { + width: 870px; + } + + .span8 { + width: 770px; + } + + .span7 { + width: 670px; + } + + .span6 { + width: 570px; + } + + .span5 { + width: 470px; + } + + .span4 { + width: 370px; + } + + .span3 { + width: 270px; + } + + .span2 { + width: 170px; + } + + .span1 { + width: 70px; + } + + .offset12 { + margin-left: 1230px; + } + + .offset11 { + margin-left: 1130px; + } + + .offset10 { + margin-left: 1030px; + } + + .offset9 { + margin-left: 930px; + } + + .offset8 { + margin-left: 830px; + } + + .offset7 { + margin-left: 730px; + } + + .offset6 { + margin-left: 630px; + } + + .offset5 { + margin-left: 530px; + } + + .offset4 { + margin-left: 430px; + } + + .offset3 { + margin-left: 330px; + } + + .offset2 { + margin-left: 230px; + } + + .offset1 { + margin-left: 130px; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1156px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1056px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 956px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 856px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 756px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 656px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 556px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 456px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 356px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 256px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 156px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 56px; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1156px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1056px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 956px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 856px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 756px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 656px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 556px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 456px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 356px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 256px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 156px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 56px; + } + + .thumbnails { + margin-left: -30px; + } + + .thumbnails > li { + margin-left: 30px; + } + + .row-fluid .thumbnails { + margin-left: 0; + } + + .openf2 .mainContainer .description .span6 { + width: 490px; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + font-size: 40px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description .mainBGControl { + margin-top: 7px; + } +} + +@media (min-width: 980px) and (max-width: 1199px) { + .openf2 .mainContainer .slideshow { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer footer .diskIcon { + padding-right: 50px; + } + + .openf2 .mainContainer footer .docIcon { + padding-right: 50px; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 490px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span7 { + width: 670px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span2 { + width: 140px; + padding-left: 5px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + padding: 30px 35px; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 724px; + } + + .span12 { + width: 724px; + } + + .span11 { + width: 662px; + } + + .span10 { + width: 600px; + } + + .span9 { + width: 538px; + } + + .span8 { + width: 476px; + } + + .span7 { + width: 414px; + } + + .span6 { + width: 352px; + } + + .span5 { + width: 290px; + } + + .span4 { + width: 228px; + } + + .span3 { + width: 166px; + } + + .span2 { + width: 104px; + } + + .span1 { + width: 42px; + } + + .offset12 { + margin-left: 764px; + } + + .offset11 { + margin-left: 702px; + } + + .offset10 { + margin-left: 640px; + } + + .offset9 { + margin-left: 578px; + } + + .offset8 { + margin-left: 516px; + } + + .offset7 { + margin-left: 454px; + } + + .offset6 { + margin-left: 392px; + } + + .offset5 { + margin-left: 330px; + } + + .offset4 { + margin-left: 268px; + } + + .offset3 { + margin-left: 206px; + } + + .offset2 { + margin-left: 144px; + } + + .offset1 { + margin-left: 82px; + } + + .row { + margin-left: -20px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 724px; + } + + .span12 { + width: 724px; + } + + .span11 { + width: 662px; + } + + .span10 { + width: 600px; + } + + .span9 { + width: 538px; + } + + .span8 { + width: 476px; + } + + .span7 { + width: 414px; + } + + .span6 { + width: 352px; + } + + .span5 { + width: 290px; + } + + .span4 { + width: 228px; + } + + .span3 { + width: 166px; + } + + .span2 { + width: 104px; + } + + .span1 { + width: 42px; + } + + .offset12 { + margin-left: 764px; + } + + .offset11 { + margin-left: 702px; + } + + .offset10 { + margin-left: 640px; + } + + .offset9 { + margin-left: 578px; + } + + .offset8 { + margin-left: 516px; + } + + .offset7 { + margin-left: 454px; + } + + .offset6 { + margin-left: 392px; + } + + .offset5 { + margin-left: 330px; + } + + .offset4 { + margin-left: 268px; + } + + .offset3 { + margin-left: 206px; + } + + .offset2 { + margin-left: 144px; + } + + .offset1 { + margin-left: 82px; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 710px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 648px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 586px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 524px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 462px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 400px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 338px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 276px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 214px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 152px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 90px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 28px; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 710px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 648px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 586px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 524px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 462px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 400px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 338px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 276px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 214px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 152px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 90px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 28px; + } + + body .mainContainer { + padding-top: 0; + } + + .openf2 .mainContainer .span6 { + width: 490px; + } + + .openf2 .mainContainer .description .slideshow { + opacity: 0.2; + filter: alpha(opacity=20); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + padding-top: 50px; + font-size: 40px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description .mainBGControl { + margin-top: 7px; + } + + .openf2 .mainContainer .overview .bulletPoints { + width: 350px; + } + + .openf2 .mainContainer .overview .span12 p.f2OverviewSummary { + margin-left: 130px; + } + + .openf2 .mainContainer footer .span6 { + float: none; + margin: auto; + } + + .openf2 .mainContainer footer .span6 + .span6 { + padding-left: 20px; + } + + .openf2 .mainContainer footer .span6 a.pull-right { + float: none; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 100%; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span7 { + width: 630px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span2 { + width: 140px; + padding-left: 5px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 40px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + padding: 30px 35px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 50px; + } +} + +@media (max-width: 767px) { + body { + padding-left: 20px; + padding-right: 20px; + } + + body.openf2 { + padding-left: 0; + padding-right: 0; + } + + .openf2 .mainContainer .description { + padding: 0 20px; + } + + .openf2 .mainContainer .description .slideshow { + opacity: 0.2; + filter: alpha(opacity=20); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer .description .mainBGControl { + display: none; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + font-size: 40px; + padding-top: 50px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .overview .container { + padding: 10px; + } + + .openf2 .mainContainer .overview .container .f2OverviewSummary { + margin-left: 10px; + } + + .openf2 .mainContainer footer .row .span6 { + padding: 0; + width: 400px; + margin: 20px auto; + } + + .openf2 .mainContainer footer .row .span6 h1 { + font-size: 20px; + } + + .openf2 .mainContainer footer .row .span6 h2 { + font-size: 18px; + } + + .openf2 .mainContainer footer .row .span6 a.pull-right { + float: none; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 400px; + margin: auto; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + width: 100%; + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 10px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 40px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + background-position: left; + } + + .navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top { + margin-left: -20px; + margin-right: -20px; + } + + .container-fluid { + padding: 0; + } + + .dl-horizontal dt { + float: none; + clear: none; + width: auto; + text-align: left; + } + + .dl-horizontal dd { + margin-left: 0; + } + + .container { + width: auto; + } + + .row-fluid { + width: 100%; + } + + .row, .thumbnails { + margin-left: 0; + } + + .thumbnails > li { + float: none; + margin-left: 0; + } + + [class*="span"], .row-fluid [class*="span"] { + float: none; + display: block; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .span12, .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .input-large, .input-xlarge, .input-xxlarge, input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .input-prepend input, .input-append input, .input-prepend input[class*="span"], .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + + .modal { + position: fixed; + top: 20px; + left: 20px; + right: 20px; + width: auto; + margin: 0; + } + + .modal.fade.in { + top: auto; + } +} + +@media (max-width: 480px) { + .lead { + font-size: 18px; + line-height: 23px; + } + + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + + .page-header h1 small { + display: block; + line-height: 20px; + } + + input[type="checkbox"], input[type="radio"] { + border: 1px solid #ccc; + } + + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + + .form-horizontal .controls { + margin-left: 0; + } + + .form-horizontal .control-list { + padding-top: 0; + } + + .form-horizontal .form-actions { + padding-left: 10px; + padding-right: 10px; + } + + .modal { + top: 10px; + left: 10px; + right: 10px; + } + + .modal-header .close { + padding: 10px; + margin: -10px; + } + + .carousel-caption { + position: static; + } +} + +@media (max-width: 480px) { + .icon-bookmark { + display: none; + } + + .openf2 .mainContainer .description { + padding: 0 20px; + } + + .openf2 .mainContainer .description h2:first-child { + font-size: 24px; + padding-top: 30px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description h3 { + font-size: 20px; + } + + .openf2 .mainContainer .description p { + font-size: 14px; + } + + .openf2 .mainContainer .overview .container { + padding: 10px; + } + + .openf2 .mainContainer .overview .container .f2OverviewSummary { + margin-left: 10px; + } + + .openf2 .mainContainer footer .row { + text-align: center; + } + + .openf2 .mainContainer footer .row .pull-left, .openf2 .mainContainer footer .row .pull-right { + float: none; + } + + .openf2 .mainContainer footer .row .span6 { + width: 100%; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 100%; + } + + .openf2 .mainContainer footer h1 { + font-size: 20px; + } + + .openf2 .mainContainer footer h2 { + font-size: 18px; + } + + .openf2 .mainContainer footer .diskIcon, .openf2 .mainContainer footer .docIcon { + display: none; + } + + .openf2 .mainContainer footer .span5 { + margin-top: 0; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + width: 100%; + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 10px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 10px; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + + .navbar-fixed-top, .navbar-fixed-bottom { + position: static; + } + + .navbar-fixed-bottom { + margin-top: 20px; + } + + .openf2Header { + margin-bottom: 20px; + } + + .openf2 .openf2Header { + margin-bottom: 0; + padding-left: 20px; + padding-right: 20px; + } + + .navbar .container { + width: auto; + padding: 0; + } + + .navbar .brand { + margin-left: 20px; + } + + .openf2 .navbar .brand { + margin-left: 0; + } + + .navbarmini .navbar-fixed-top .brand { + padding: 30px 30px 10px 30px; + margin-top: 20px; + background: transparent url("../img/F2_logo.png") top left no-repeat; + } + + .nav-collapse { + clear: both; + } + + .nav-collapse.collapse.in { + background: #d8d8d8; + -webkit-box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + -moz-box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + } + + .nav-collapse .icon-triangleDown { + display: inline-block; + margin-top: 4px; + } + + .nav-collapse .nav.navinset { + width: auto; + height: auto; + display: block; + visibility: visible; + margin: 0; + } + + .nav-collapse .nav { + float: none; + margin: 0 0 5px; + } + + .nav-collapse .nav > li:first-child { + padding-top: 5px; + } + + .nav-collapse .nav > li { + float: none; + border-bottom: 1px solid #cac9c9; + border-top: 1px solid #e2e2e2; + } + + .navbarmini .navbar-fixed-top .nav-collapse .nav > li > a { + margin-bottom: 2px; + padding: 9px 15px; + } + + .nav-collapse .nav > .divider-vertical { + display: none; + } + + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + + .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + } + + .nav-collapse .dropdown-menu a { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + } + + .nav-collapse .nav.navinset > li { + border-bottom-color: #c0bebe; + border-top-color: #adadad; + } + + .nav-collapse .nav.navinset > li:first-child { + padding-top: 0; + } + + .nav-collapse .nav.navinset > li > a { + background-color: #b5b5b5; + margin: 0; + color: #333; + text-shadow: none; + } + + .navbarmini .nav-collapse .nav.navinset > li > a { + margin: 0; + padding-left: 25px; + } + + .nav-collapse .nav.navinset > li > a:hover, .nav-collapse .nav.navinset > li > a.active { + background-color: #00609c; + color: #ffffff; + } + + .nav-collapse .nav > li > a > .F2VersionIndicator { + top: auto; + bottom: 0; + left: 120px; + } + + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + + .nav-collapse .nav > li > a:hover, .nav-collapse .dropdown-menu a:hover { + background-color: #d8d8d8; + } + + .navbar-inverse .nav-collapse .nav > li > a:hover, .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #111111; + } + + .nav-collapse.in .btn-group { + margin-top: 5px; + padding: 0; + } + + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: block; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + + .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { + display: none; + } + + .nav-collapse .dropdown-menu .divider { + display: none; + } + + .nav-collapse .nav > li > .dropdown-menu:before, .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + + .nav-collapse .navbar-form, .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + + .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + + .nav-collapse, .nav-collapse.collapse { + overflow: hidden; + height: 0; + } + + .navbar .btn-navbar { + display: block; + margin-right: 20px; + } + + .openf2 .navbar .btn-navbar { + margin-right: 0; + } + + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } + + .navbar .nav > li.ghWrap { + border: 0 none; + display: none; + } + + .navbar .nav > li.ghWrapResp { + display: block; + visibility: visible; + height: auto; + border: 0 none; + } + + .navbarmini .navbar-fixed-top .navbar-text, .openf2 .navbar-inner .navbar-text { + line-height: 75px; + font-size: 13px; + margin-top: 2px; + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; + } + + .navbarmini .navbar-fixed-top .tagline-divider, .openf2 .navbar-inner .tagline-divider { + height: 38px; + margin: 20px 20px 0 20px; + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; + } +} + +@media (min-width: 979px) and (-webkit-min-device-pixel-ratio: 2) { + .navbarmini .navbar-fixed-top .brand { + background-size: 18px 13px; + background-image: url("../img/mini_f2_logo_2x.png"); + } +} + +@media (max-width: 979px) and (-webkit-min-device-pixel-ratio: 2) { + .navbarmini .navbar-fixed-top .brand { + background-image: url("../img/F2_logoRetina.png"); + background-size: 56px 37px; + } +} + +@media (min-width: 480px) and (max-width: 767px) { + .tagline-divider, .navbar-text { + display: block !important; + } +} + +@media (max-width: 767px) { + .tagline-divider, .navbar-text { + display: none; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-moz-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-o-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-ms-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-moz-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-o-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-ms-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +.navbar-docs { + background: #fff none; + border-bottom: 1px solid #a7a7a7; + -webkit-box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; +} + +.navbar-docs .container { + margin-bottom: 0; +} + +.navbar-docs .container .row { + margin-bottom: 0; +} + +.navbar-docs ul { + margin: 0; + width: 100%; +} + +.navbar-docs li { + height: 38px; + width: 33.33333333333333%; + float: left; + text-align: center; +} + +.navbar-docs a, .navbar-docs a:visited { + height: 38px; + width: 100%; + line-height: 38px; + display: block; + font-size: 19px; + font-family: rokkittregular; + text-transform: uppercase; + letter-spacing: 0.2em; +} + +.navbar-docs a:hover, .navbar-docs a:active, .navbar-docs a.active { + background-color: #f3f3f3; + text-decoration: none; +} + +.navbar-docs .basics { + border-top: 3px solid #005f9c; + color: #005f9c; +} + +.navbar-docs .basics a { + border-left: 1px solid #e2e2e2; + color: #005f9c; +} + +.navbar-docs .dev { + border-top: 3px solid #b1e27e; +} + +.navbar-docs .dev a { + border-left: 1px solid #e2e2e2; + border-right: 1px solid #e2e2e2; + color: #b1e27e; +} + +.navbar-docs .ref { + border-top: 3px solid #fabb5d; +} + +.navbar-docs .ref a { + border-right: 1px solid #e2e2e2; + color: #fabb5d; +} + +@media (min-width: 768px) and (max-width: 979px) { + .navbar-docs { + display: none; + visibility: hidden; + } +} + +@media (max-width: 767px) { + .navbar-docs { + display: none; + visibility: hidden; + } +} + +.navbar-docs-sections { + background-color: #292929; + margin: 0; +} + +.navbar-docs-sections [data-toggle] { + border-bottom: 2px solid #0a6199; + color: #9da6ac; + display: block; + font-weight: bold; + line-height: 32px; + text-align: center; + text-decoration: none; +} + +.navbar-docs-sections [data-toggle] span { + margin-top: 5px; +} + +.navbar-docs-sections { + display: none; + visibility: hidden; +} + +@media (max-width: 979px) { + .navbar-docs-sections { + display: block; + visibility: visible; + } +} + +body { + padding-top: 90px; +} + +.container .row { + margin-bottom: 20px; +} + +.container .span9 { + padding-bottom: 100px; +} + +pre { + font-size: 12px; +} + +pre.prettyprint { + padding: 8px; + background-color: #F7F7F9; + border: 1px solid #E1E1E8; +} + +h1.title { + margin-top: 0; +} + +.level2, .level3 { + padding-top: 87px; +} + +.level3 { + padding-top: 82px; +} + +.level4 { + margin-top: 30px; +} + +section > hr { + margin: 40px 0 0; +} + +#docs section h2, #docs section h3, #docs section h4, #docs section h5, #docs section h6 { + position: relative; +} + +section .docs-anchor { + padding-left: 12px; + margin-left: -30px; + cursor: pointer; + position: absolute; + top: 0; + left: 0; + bottom: 0; + opacity: 0.2; + filter: alpha(opacity=20); + margin-top: 2px; +} + +.nav-list { + margin-top: 9px; + border-top: 3px solid #737373; + padding-left: 15px; + padding-right: 15px; +} + +.nav-list > li { + position: relative; +} + +.nav-list > li > a { + font-family: rokkittregular; + font-size: 19px; +} + +.nav-list > li > ul a { + font-size: 17px; + padding: 4px 0 4px 15px; +} + +.nav-list > li > a:hover { + background: none; + color: #0a6199; +} + +.nav-list .nav-list { + border-top: none; + margin-top: 0; +} + +.nav-list > li > a, .nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: none; +} + +.nav-list > li > a { + padding: 8px 15px; + color: #333; +} + +.nav-list > li > ul a { + color: #737373; +} + +.nav-list > .active > a, .nav-list > .active > a:hover { + color: #0a6199; + text-shadow: none; + background: none; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +#toc { + min-height: 1px; +} + +.nav-list, .nav-list.affix, .nav-list.affix-bottom { + width: 190px; +} + +@media (min-width: 1200px) { + .nav-list, .nav-list.affix, .nav-list.affix-bottom { + width: 240px; + } + + .nav-list > li > ul a { + font-size: 19px; + } + + .nav-list > li > a { + font-size: 20px; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + + #toc { + display: none; + } + + .container .span9 { + width: 724px; + } + + .level2 { + padding-top: 20px; + } + + .level3 { + padding-top: 5px; + } + + .level4 { + margin-top: 20px; + } +} + +@media (max-width: 767px) { + .container .span9 { + width: 100%; + } +} + +.nav-list.affix { + margin-bottom: 70px; +} + +footer small { + font-size: 12px; +} + +footer .pull-right { + text-align: right; +} diff --git a/docs/css/F2.Sdk.css b/docs/css/F2.Sdk.css index b16c8d0d..dc078896 100644 --- a/docs/css/F2.Sdk.css +++ b/docs/css/F2.Sdk.css @@ -1,1175 +1,9716 @@ -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} -audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} -audio:not([controls]){display:none;} -html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} -a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -a:hover,a:active{outline:0;} -sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} -sup{top:-0.5em;} -sub{bottom:-0.25em;} -img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} -#map_canvas img{max-width:none;} -button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} -button,input{*overflow:visible;line-height:normal;} -button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} -button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} -input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} -input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} -textarea{overflow:auto;vertical-align:top;} -.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -body{margin:0;font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;font-size:14px;line-height:20px;color:#333333;background-color:#ffffff;} -a{color:#0a6199;text-decoration:none;} -a:hover{color:#053351;text-decoration:underline;} -.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);} -.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -[class*="span"]{float:left;min-height:1px;margin-left:20px;} -.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -[class*="span"]{float:left;min-height:1px;margin-left:20px;} -.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} -.row-fluid .span12{width:100%;*width:99.94680851063829%;} -.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} -.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} -.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} -.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} -.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} -.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} -.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} -.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} -.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} -.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} -.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} -.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} -.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} -.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} -.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} -.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} -.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} -.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} -.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} -.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} -.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} -.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} -.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} -.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} -.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} -.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} -.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} -.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} -.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} -.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} -.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} -.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} -.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} -.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} -.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} -.row-fluid .span12{width:100%;*width:99.94680851063829%;} -.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} -.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} -.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} -.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} -.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} -.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} -.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} -.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} -.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} -.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} -.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} -.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} -.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} -.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} -.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} -.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} -.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} -.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} -.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} -.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} -.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} -.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} -.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} -.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} -.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} -.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} -.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} -.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} -.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} -.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} -.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} -.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} -.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} -.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} -.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} -[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;} -[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;} -.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} -.container-fluid:after{clear:both;} -.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} -.container-fluid:after{clear:both;} -.openf2Header{background-color:#f0f0f0;} -body.openf2{background:transparent url("../img/footerNoise.png") repeat;} -body.f2Developer{background:transparent url("../img/footerNoise.png") repeat;} -body.letterPage{background:transparent url("../img/footerNoise.png") repeat;} -body .mainContainer{background-color:#ffffff;padding:0;margin-top:0;}body .mainContainer .AppRegistrationForm{min-height:300px;padding:20px;background:url("../img/F2TopShadowBorder.png") top no-repeat;} -body .mainContainer .noiseWrap{background:transparent url("../img/footerNoise.png") repeat;} -body .mainContainer .letter{background-color:transparent;background:url("../img/F2TopShadowBorder.png") top no-repeat;padding-bottom:20px;}body .mainContainer .letter .letterWrapper{margin-top:30px;background:url("../img/F2LetterImage.png") center no-repeat;}body .mainContainer .letter .letterWrapper .letterContent{width:875px;height:890px;margin:auto;}body .mainContainer .letter .letterWrapper .letterContent .date{text-align:right;} -body .mainContainer .letter .letterWrapper .letterContent .first{padding-top:80px;} -body .mainContainer .letter .letterWrapper .letterContent .row{padding-left:100px;} -body .mainContainer .letter p{color:#727272;margin-bottom:15px;font-size:14px;text-shadow:0px 1px #ffffff;} -body .mainContainer .letter .signature{background:url("../img/F2Signature.png") center no-repeat;padding:30px 20px;} -body .mainContainer .description{z-index:2;background:url("../img/F2TopShadowBorder.png") top no-repeat;background-color:#ffffff;position:relative;height:665px;}body .mainContainer .description .letterLink{padding-top:10px;} -body .mainContainer .description p{margin-bottom:0;line-height:1.5em;color:#535353;font-weight:200;font-size:17px;} -body .mainContainer .description p.F2Indent{padding-left:10px;font-size:12px;} -body .mainContainer .description p.F2Indent a{color:#535353;} -body .mainContainer .description h2:first-child{margin-top:0;padding-top:50px;font-size:35px;margin-bottom:30px;line-height:1.25em;} -body .mainContainer .description h2,body .mainContainer .description h3{color:#0a6199;margin-bottom:0;line-height:1;} -body .mainContainer .description h3:first-child{margin-top:30px;} -body .mainContainer .description h3 a{color:#0a6199;} -body .mainContainer .description .overview h2,body .mainContainer .description .overview h3{color:#ffffff;} -body .mainContainer .description .mainBGImg{z-index:-1;position:absolute;top:0;left:0;margin:0;list-style:none;width:100%;}body .mainContainer .description .mainBGImg li div.img{height:665px;width:100%;} -body .mainContainer .description .ImgIpad{background:url("../img/F2_iPad.jpg") no-repeat center;} -body .mainContainer .description .ImgIscreens{background:url("../img/F2_iScreens.jpg") no-repeat center;} -body .mainContainer .description .ImgIphone{background:url("../img/F2_iPhone.jpg") no-repeat center;} -body .mainContainer .description .mainBGControl{margin:30px 0 0 0;list-style:none;text-align:center;padding:10px 0;}body .mainContainer .description .mainBGControl li{display:inline-block;} -body .mainContainer .description .mainBGControl li a{background:url("../img/bgControlDot.png") no-repeat center;padding:10px;} -body .mainContainer .description .mainBGControl .selected a{background:url("../img/bgControlDotSelected.png") no-repeat center;} -body .mainContainer .overview{background-color:#ffffff;background-color:#53585b;background-image:-moz-linear-gradient(top, #575d61, #4d5052);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#575d61), to(#4d5052));background-image:-webkit-linear-gradient(top, #575d61, #4d5052);background-image:-o-linear-gradient(top, #575d61, #4d5052);background-image:linear-gradient(to bottom, #575d61, #4d5052);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff575d61', endColorstr='#ff4d5052', GradientType=0);}body .mainContainer .overview h2{text-align:center;margin-bottom:20px;color:#ffffff;} -body .mainContainer .overview .container{background:url("../img/F2TopShadowBorder.png") top no-repeat;} -body .mainContainer .overview .row{padding:50px 0;} -body .mainContainer .overview .F2SunBullet{background:url("../img/F2SunIcon.png") center no-repeat;padding:10px;} -body .mainContainer .overview .bulletPoints ul{list-style:none;}body .mainContainer .overview .bulletPoints ul li{padding-left:22px;background:url("../img/F2SunIcon.png") left top no-repeat;} -body .mainContainer .overview .bulletPoints .span4{margin-left:5px;} -body .mainContainer .overview .f2OverviewSummary{font-style:italic;} -body .mainContainer .overview .interactiveDisplay{background:transparent;}body .mainContainer .overview .interactiveDisplay .carousel-inner{height:430px;} -body .mainContainer .overview .interactiveDisplay .carousel .item{background:url("../img/bankeoSprite.png") no-repeat;height:430px;max-width:570px;} -body .mainContainer .overview .interactiveDisplay .carousel .euro{background-position:-55px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .sp500{background-position:-685px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .ft{background-position:-1325px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .research{background-position:-1965px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .stockPicks{background-position:-2615px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .reuters{background-position:-3255px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .video{background-position:-3895px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .search{background-position:-4555px -34px;} -body .mainContainer .overview .photoControl{list-style:none;text-align:center;padding:10px 0;}body .mainContainer .overview .photoControl li{display:inline-block;cursor:pointer;} -body .mainContainer .overview .photoControl li a{background:url("../img/dot.png") no-repeat center;padding:13px;} -body .mainContainer .overview .photoControl .selected a{background:url("../img/dotSelected.png") no-repeat center;} -body .mainContainer .overview .captions{list-style:none;text-align:center;padding:10px 0;}body .mainContainer .overview .captions li{display:none;} -body .mainContainer .overview .captions li.selected{display:inline-block;} -body .mainContainer .overview p{color:#ffffff;margin-bottom:20px;font-size:14px;} -body .mainContainer .exampleContent{padding-top:40px;}body .mainContainer .exampleContent #exampleAppContainer a{color:#417777;} -body .mainContainer .exampleContent #exampleAppContainer footer{background:transparent;} -body .mainContainer .exampleCaptions p{padding:0 0 40px 0;color:#6c6c6c;background:url("../img/smallShadowDivider.png") bottom no-repeat;} -body .mainContainer .exampleControls{position:relative;margin:0;padding:20px 0;text-align:center;}body .mainContainer .exampleControls .arrow{height:25px;width:13px;cursor:pointer;position:absolute;top:15px;} -body .mainContainer .exampleControls .leftArrow{background:url("../img/LeftArrow.png") center no-repeat;left:0;} -body .mainContainer .exampleControls .rightArrow{background:url("../img/RightArrow.png") center no-repeat;right:0;} -body .mainContainer .exampleControls ul{margin:0;list-style:none;}body .mainContainer .exampleControls ul li{display:inline-block;} -body .mainContainer .exampleControls ul li a{background:url("../img/bgControlDot.png") no-repeat center;padding:10px;} -body .mainContainer .exampleControls ul .selected a{background:url("../img/bgControlDotSelected.png") no-repeat center;} -body .mainContainer footer{background:url("../img/footerNoise.png") repeat;color:#bfc7ce;}body .mainContainer footer .container{background:url("../img/bottomBorderFade.png") top no-repeat;} -body .mainContainer footer h1,body .mainContainer footer h2,body .mainContainer footer h3,body .mainContainer footer h4,body .mainContainer footer h5,body .mainContainer footer h6{font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;} -body .mainContainer footer h5{line-height:10px;font-size:12px;} -body .mainContainer footer .diskIcon{background:url("../img/diskIcon.png") no-repeat center;padding:50px 75px;} -body .mainContainer footer .docIcon{background:url("../img/docIcon.png") no-repeat center;padding:50px 75px;} -body .mainContainer footer .span6{padding:15px 0;margin-top:20px;} -body .mainContainer footer .pull-left h2{line-height:20px;} -body .mainContainer footer a{text-decoration:none;color:#bfc7ce;} -body .mainContainer footer a.releaseNotes{text-decoration:underline;} -body .mainContainer footer .version{padding:0 10px;font-size:46px;} -body .mainContainer footer .socialWrap{background:url("../img/bottomBorderFade.png") bottom no-repeat;padding-bottom:40px;} -body .mainContainer footer .social{padding:20px 0 10px 0;} -body .mainContainer footer .span12{text-align:center;color:#3b4044;margin-bottom:10px;} -.footerLogoDark{background:url("../img/F2FooterLogoDark.png") center no-repeat;height:24px;} -.footerLogoLight{background:url("../img/F2FooterLogoLight.png") center no-repeat;height:23px;} -.examplePage{background:url("../img/F2TopShadowBorder.png") top no-repeat;background-color:#ffffff;padding-bottom:50px;} -.F2DottedLine{width:100%;border-bottom:1px dotted #ffffff;} -@font-face{font-family:'rokkittregular';src:url('rokkitt-webfont.eot');src:local('☺'), url('rokkitt-webfont.woff') format('woff'),url('rokkitt-webfont.ttf') format('truetype'),url('rokkitt-webfont.svg#rokkittregular') format('svg');font-weight:normal;font-style:normal;}p{margin:0 0 10px;font-size:14px;} -.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px;} -small{font-size:85%;} -strong{font-weight:bold;} -em{font-style:italic;} -cite{font-style:normal;} -.muted{color:#999999;} -.text-warning{color:#c09853;} -.text-error{color:#b94a48;} -.text-info{color:#3a87ad;} -.text-success{color:#468847;} -h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:rokkittregular;font-weight:normal;line-height:1;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;} -h1{font-size:36px;line-height:40px;} -h2{font-size:30px;line-height:30px;} -h3{font-size:24px;line-height:40px;} -h4{font-size:20px;line-height:20px;} -h5{font-size:16px;line-height:20px;} -h6{font-size:14px;line-height:20px;} -h1 small{font-size:24px;} -h2 small{font-size:18px;} -h3 small{font-size:14px;} -h4 small{font-size:14px;} -.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;} -ul,ol{padding:0;margin:0 0 10px 25px;} -ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} -li{line-height:20px;} -ul.unstyled,ol.unstyled{margin-left:0;list-style:none;} -dl{margin-bottom:20px;} -dt,dd{line-height:20px;} -dt{font-weight:bold;} -dd{margin-left:10px;} -.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} -.dl-horizontal:after{clear:both;} -.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} -.dl-horizontal:after{clear:both;} -.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} -.dl-horizontal dd{margin-left:180px;} -hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;} -abbr[title]{cursor:help;border-bottom:1px dotted #999999;} -abbr.initialism{font-size:90%;text-transform:uppercase;} -blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px;} -blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} -blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} -blockquote.pull-right small:before{content:'';} -blockquote.pull-right small:after{content:'\00A0 \2014';} -q:before,q:after,blockquote:before,blockquote:after{content:"";} -address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;} -code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;} -pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;} -pre code{padding:0;color:inherit;background-color:transparent;border:0;} -.pre-scrollable{max-height:340px;overflow-y:scroll;} -a code{border-color:#e1e1e8 !important;} -form{margin:0 0 20px;} -fieldset{padding:0;margin:0;border:0;} -legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;} -label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px;} -input,button,select,textarea{font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;} -label{display:block;margin-bottom:5px;} -select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:9px;font-size:14px;line-height:20px;color:#555555;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -input,textarea,.uneditable-input{width:206px;} -textarea{height:auto;} -textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);} -input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;cursor:pointer;} -input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;} -select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;} -select{width:220px;border:1px solid #cccccc;background-color:#ffffff;} -select[multiple],select[size]{height:auto;} -select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} -.uneditable-input{overflow:hidden;white-space:nowrap;} -.uneditable-textarea{width:auto;height:auto;} -input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} -input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} -input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} -input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} -input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} -input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} -.radio,.checkbox{min-height:18px;padding-left:18px;} -.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;} -.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} -.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;} -.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} -.input-mini{width:60px;} -.input-small{width:90px;} -.input-medium{width:150px;} -.input-large{width:210px;} -.input-xlarge{width:270px;} -.input-xxlarge{width:530px;} -input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;} -.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;} -input,textarea,.uneditable-input{margin-left:0;} -.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} -input.span12,textarea.span12,.uneditable-input.span12{width:926px;} -input.span11,textarea.span11,.uneditable-input.span11{width:846px;} -input.span10,textarea.span10,.uneditable-input.span10{width:766px;} -input.span9,textarea.span9,.uneditable-input.span9{width:686px;} -input.span8,textarea.span8,.uneditable-input.span8{width:606px;} -input.span7,textarea.span7,.uneditable-input.span7{width:526px;} -input.span6,textarea.span6,.uneditable-input.span6{width:446px;} -input.span5,textarea.span5,.uneditable-input.span5{width:366px;} -input.span4,textarea.span4,.uneditable-input.span4{width:286px;} -input.span3,textarea.span3,.uneditable-input.span3{width:206px;} -input.span2,textarea.span2,.uneditable-input.span2{width:126px;} -input.span1,textarea.span1,.uneditable-input.span1{width:46px;} -input,textarea,.uneditable-input{margin-left:0;} -.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} -input.span12,textarea.span12,.uneditable-input.span12{width:926px;} -input.span11,textarea.span11,.uneditable-input.span11{width:846px;} -input.span10,textarea.span10,.uneditable-input.span10{width:766px;} -input.span9,textarea.span9,.uneditable-input.span9{width:686px;} -input.span8,textarea.span8,.uneditable-input.span8{width:606px;} -input.span7,textarea.span7,.uneditable-input.span7{width:526px;} -input.span6,textarea.span6,.uneditable-input.span6{width:446px;} -input.span5,textarea.span5,.uneditable-input.span5{width:366px;} -input.span4,textarea.span4,.uneditable-input.span4{width:286px;} -input.span3,textarea.span3,.uneditable-input.span3{width:206px;} -input.span2,textarea.span2,.uneditable-input.span2{width:126px;} -input.span1,textarea.span1,.uneditable-input.span1{width:46px;} -.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} -.controls-row:after{clear:both;} -.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} -.controls-row:after{clear:both;} -.controls-row [class*="span"]{float:left;} -input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;} -input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;} -.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} -.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} -.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;} -.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} -.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} -.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} -.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;} -.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} -.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} -.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} -.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;} -.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} -.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} -.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} -.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;} -.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} -.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} -.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} -.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;} -.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} -.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} -.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} -.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;} -.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} -.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} -.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} -.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;} -.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} -.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} -.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} -.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;} -.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} -input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} -.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} -.form-actions:after{clear:both;} -.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} -.form-actions:after{clear:both;} -.help-block,.help-inline{color:#595959;} -.help-block{display:block;margin-bottom:10px;} -.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;} -.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;font-size:14px;vertical-align:top;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;} -.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;} -.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;} -.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;} -.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-append .add-on,.input-append .btn{margin-left:-1px;} -.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} -.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} -.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} -.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} -.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;} -.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;} -.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;} -.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;} -.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;} -.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;} -.control-group{margin-bottom:10px;} -legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;} -.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} -.form-horizontal .control-group:after{clear:both;} -.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} -.form-horizontal .control-group:after{clear:both;} -.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;} -.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;} -.form-horizontal .help-block{margin-bottom:0;} -.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block{margin-top:10px;} -.form-horizontal .form-actions{padding-left:180px;} -table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} -.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} -.table th{font-weight:bold;} -.table thead th{vertical-align:bottom;} -.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} -.table tbody+tbody{border-top:2px solid #dddddd;} -.table-condensed th,.table-condensed td{padding:4px 5px;} -.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;} -.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} -.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;} -.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px;} -.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child,.table-bordered tfoot:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;} -.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child,.table-bordered tfoot:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;} -.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;} -.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topleft:4px;} -.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} -.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5;} -table [class*=span],.row-fluid table [class*=span]{display:table-cell;float:none;margin-left:0;} -.table .span1{float:none;width:44px;margin-left:0;} -.table .span2{float:none;width:124px;margin-left:0;} -.table .span3{float:none;width:204px;margin-left:0;} -.table .span4{float:none;width:284px;margin-left:0;} -.table .span5{float:none;width:364px;margin-left:0;} -.table .span6{float:none;width:444px;margin-left:0;} -.table .span7{float:none;width:524px;margin-left:0;} -.table .span8{float:none;width:604px;margin-left:0;} -.table .span9{float:none;width:684px;margin-left:0;} -.table .span10{float:none;width:764px;margin-left:0;} -.table .span11{float:none;width:844px;margin-left:0;} -.table .span12{float:none;width:924px;margin-left:0;} -.table .span13{float:none;width:1004px;margin-left:0;} -.table .span14{float:none;width:1084px;margin-left:0;} -.table .span15{float:none;width:1164px;margin-left:0;} -.table .span16{float:none;width:1244px;margin-left:0;} -.table .span17{float:none;width:1324px;margin-left:0;} -.table .span18{float:none;width:1404px;margin-left:0;} -.table .span19{float:none;width:1484px;margin-left:0;} -.table .span20{float:none;width:1564px;margin-left:0;} -.table .span21{float:none;width:1644px;margin-left:0;} -.table .span22{float:none;width:1724px;margin-left:0;} -.table .span23{float:none;width:1804px;margin-left:0;} -.table .span24{float:none;width:1884px;margin-left:0;} -.table tbody tr.success td{background-color:#dff0d8;} -.table tbody tr.error td{background-color:#f2dede;} -.table tbody tr.warning td{background-color:#fcf8e3;} -.table tbody tr.info td{background-color:#d9edf7;} -.table-hover tbody tr.success:hover td{background-color:#d0e9c6;} -.table-hover tbody tr.error:hover td{background-color:#ebcccc;} -.table-hover tbody tr.warning:hover td{background-color:#faf2cc;} -.table-hover tbody tr.info:hover td{background-color:#c4e3f3;} -[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;} -.icon-white,.nav-tabs>.active>a>[class^="icon-"],.nav-tabs>.active>a>[class*=" icon-"],.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");} -.icon-glass{background-position:0 0;} -.icon-music{background-position:-24px 0;} -.icon-search{background-position:-48px 0;} -.icon-envelope{background-position:-72px 0;} -.icon-heart{background-position:-96px 0;} -.icon-star{background-position:-120px 0;} -.icon-star-empty{background-position:-144px 0;} -.icon-user{background-position:-168px 0;} -.icon-film{background-position:-192px 0;} -.icon-th-large{background-position:-216px 0;} -.icon-th{background-position:-240px 0;} -.icon-th-list{background-position:-264px 0;} -.icon-ok{background-position:-288px 0;} -.icon-remove{background-position:-312px 0;} -.icon-zoom-in{background-position:-336px 0;} -.icon-zoom-out{background-position:-360px 0;} -.icon-off{background-position:-384px 0;} -.icon-signal{background-position:-408px 0;} -.icon-cog{background-position:-432px 0;} -.icon-trash{background-position:-456px 0;} -.icon-home{background-position:0 -24px;} -.icon-file{background-position:-24px -24px;} -.icon-time{background-position:-48px -24px;} -.icon-road{background-position:-72px -24px;} -.icon-download-alt{background-position:-96px -24px;} -.icon-download{background-position:-120px -24px;} -.icon-upload{background-position:-144px -24px;} -.icon-inbox{background-position:-168px -24px;} -.icon-play-circle{background-position:-192px -24px;} -.icon-repeat{background-position:-216px -24px;} -.icon-refresh{background-position:-240px -24px;} -.icon-list-alt{background-position:-264px -24px;} -.icon-lock{background-position:-287px -24px;} -.icon-flag{background-position:-312px -24px;} -.icon-headphones{background-position:-336px -24px;} -.icon-volume-off{background-position:-360px -24px;} -.icon-volume-down{background-position:-384px -24px;} -.icon-volume-up{background-position:-408px -24px;} -.icon-qrcode{background-position:-432px -24px;} -.icon-barcode{background-position:-456px -24px;} -.icon-tag{background-position:0 -48px;} -.icon-tags{background-position:-25px -48px;} -.icon-book{background-position:-48px -48px;} -.icon-bookmark{background-position:-72px -48px;} -.icon-print{background-position:-96px -48px;} -.icon-camera{background-position:-120px -48px;} -.icon-font{background-position:-144px -48px;} -.icon-bold{background-position:-167px -48px;} -.icon-italic{background-position:-192px -48px;} -.icon-text-height{background-position:-216px -48px;} -.icon-text-width{background-position:-240px -48px;} -.icon-align-left{background-position:-264px -48px;} -.icon-align-center{background-position:-288px -48px;} -.icon-align-right{background-position:-312px -48px;} -.icon-align-justify{background-position:-336px -48px;} -.icon-list{background-position:-360px -48px;} -.icon-indent-left{background-position:-384px -48px;} -.icon-indent-right{background-position:-408px -48px;} -.icon-facetime-video{background-position:-432px -48px;} -.icon-picture{background-position:-456px -48px;} -.icon-pencil{background-position:0 -72px;} -.icon-map-marker{background-position:-24px -72px;} -.icon-adjust{background-position:-48px -72px;} -.icon-tint{background-position:-72px -72px;} -.icon-edit{background-position:-96px -72px;} -.icon-share{background-position:-120px -72px;} -.icon-check{background-position:-144px -72px;} -.icon-move{background-position:-168px -72px;} -.icon-step-backward{background-position:-192px -72px;} -.icon-fast-backward{background-position:-216px -72px;} -.icon-backward{background-position:-240px -72px;} -.icon-play{background-position:-264px -72px;} -.icon-pause{background-position:-288px -72px;} -.icon-stop{background-position:-312px -72px;} -.icon-forward{background-position:-336px -72px;} -.icon-fast-forward{background-position:-360px -72px;} -.icon-step-forward{background-position:-384px -72px;} -.icon-eject{background-position:-408px -72px;} -.icon-chevron-left{background-position:-432px -72px;} -.icon-chevron-right{background-position:-456px -72px;} -.icon-plus-sign{background-position:0 -96px;} -.icon-minus-sign{background-position:-24px -96px;} -.icon-remove-sign{background-position:-48px -96px;} -.icon-ok-sign{background-position:-72px -96px;} -.icon-question-sign{background-position:-96px -96px;} -.icon-info-sign{background-position:-120px -96px;} -.icon-screenshot{background-position:-144px -96px;} -.icon-remove-circle{background-position:-168px -96px;} -.icon-ok-circle{background-position:-192px -96px;} -.icon-ban-circle{background-position:-216px -96px;} -.icon-arrow-left{background-position:-240px -96px;} -.icon-arrow-right{background-position:-264px -96px;} -.icon-arrow-up{background-position:-289px -96px;} -.icon-arrow-down{background-position:-312px -96px;} -.icon-share-alt{background-position:-336px -96px;} -.icon-resize-full{background-position:-360px -96px;} -.icon-resize-small{background-position:-384px -96px;} -.icon-plus{background-position:-408px -96px;} -.icon-minus{background-position:-433px -96px;} -.icon-asterisk{background-position:-456px -96px;} -.icon-exclamation-sign{background-position:0 -120px;} -.icon-gift{background-position:-24px -120px;} -.icon-leaf{background-position:-48px -120px;} -.icon-fire{background-position:-72px -120px;} -.icon-eye-open{background-position:-96px -120px;} -.icon-eye-close{background-position:-120px -120px;} -.icon-warning-sign{background-position:-144px -120px;} -.icon-plane{background-position:-168px -120px;} -.icon-calendar{background-position:-192px -120px;} -.icon-random{background-position:-216px -120px;width:16px;} -.icon-comment{background-position:-240px -120px;} -.icon-magnet{background-position:-264px -120px;} -.icon-chevron-up{background-position:-288px -120px;} -.icon-chevron-down{background-position:-313px -119px;} -.icon-retweet{background-position:-336px -120px;} -.icon-shopping-cart{background-position:-360px -120px;} -.icon-folder-close{background-position:-384px -120px;} -.icon-folder-open{background-position:-408px -120px;width:16px;} -.icon-resize-vertical{background-position:-432px -119px;} -.icon-resize-horizontal{background-position:-456px -118px;} -.icon-hdd{background-position:0 -144px;} -.icon-bullhorn{background-position:-24px -144px;} -.icon-bell{background-position:-48px -144px;} -.icon-certificate{background-position:-72px -144px;} -.icon-thumbs-up{background-position:-96px -144px;} -.icon-thumbs-down{background-position:-120px -144px;} -.icon-hand-right{background-position:-144px -144px;} -.icon-hand-left{background-position:-168px -144px;} -.icon-hand-up{background-position:-192px -144px;} -.icon-hand-down{background-position:-216px -144px;} -.icon-circle-arrow-right{background-position:-240px -144px;} -.icon-circle-arrow-left{background-position:-264px -144px;} -.icon-circle-arrow-up{background-position:-288px -144px;} -.icon-circle-arrow-down{background-position:-312px -144px;} -.icon-globe{background-position:-336px -144px;} -.icon-wrench{background-position:-360px -144px;} -.icon-tasks{background-position:-384px -144px;} -.icon-filter{background-position:-408px -144px;} -.icon-briefcase{background-position:-432px -144px;} -.icon-fullscreen{background-position:-456px -144px;} -.dropup,.dropdown{position:relative;} -.dropdown-toggle{*margin-bottom:-3px;} -.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} -.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";} -.dropdown .caret{margin-top:8px;margin-left:2px;} -.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;} -.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -.dropdown-menu a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;} -.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{text-decoration:none;color:#ffffff;background-color:#0a6199;background-color:#095b8f;background-image:-moz-linear-gradient(top, #0a6199, #085281);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281));background-image:-webkit-linear-gradient(top, #0a6199, #085281);background-image:-o-linear-gradient(top, #0a6199, #085281);background-image:linear-gradient(to bottom, #0a6199, #085281);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0);} -.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;outline:0;background-color:#0a6199;background-color:#095b8f;background-image:-moz-linear-gradient(top, #0a6199, #085281);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281));background-image:-webkit-linear-gradient(top, #0a6199, #085281);background-image:-o-linear-gradient(top, #0a6199, #085281);background-image:linear-gradient(to bottom, #0a6199, #085281);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0);} -.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999999;} -.dropdown-menu .disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;} -.open{*z-index:1000;}.open>.dropdown-menu{display:block;} -.pull-right>.dropdown-menu{right:0;left:auto;} -.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";} -.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;} -.dropdown-submenu{position:relative;} -.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} -.dropdown-submenu:hover>.dropdown-menu{display:block;} -.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;} -.dropdown-submenu:hover>a:after{border-left-color:#ffffff;} -.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;} -.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} -.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;} -.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;} -.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);} -button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} -.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 14px;margin-bottom:0;font-size:14px;line-height:20px;*line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} -.btn:active,.btn.active{background-color:#cccccc \9;} -.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} -.btn:active,.btn.active{background-color:#cccccc \9;} -.btn:first-child{*margin-left:0;} -.btn:first-child{*margin-left:0;} -.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} -.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);} -.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn-large{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} -.btn-large [class^="icon-"]{margin-top:2px;} -.btn-small{padding:3px 9px;font-size:12px;line-height:18px;} -.btn-small [class^="icon-"]{margin-top:0;} -.btn-mini{padding:2px 6px;font-size:11px;line-height:17px;} -.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -.btn-block+.btn-block{margin-top:5px;} -input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;} -.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);} -.btn{border-color:#c5c5c5;border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);} -.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0a4e99;background-image:-moz-linear-gradient(top, #0a6199, #0a3199);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#0a3199));background-image:-webkit-linear-gradient(top, #0a6199, #0a3199);background-image:-o-linear-gradient(top, #0a6199, #0a3199);background-image:linear-gradient(to bottom, #0a6199, #0a3199);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff0a3199', GradientType=0);border-color:#0a3199 #0a3199 #051a51;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0a3199;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0a3199;*background-color:#082a81;} -.btn-primary:active,.btn-primary.active{background-color:#072269 \9;} -.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0a3199;*background-color:#082a81;} -.btn-primary:active,.btn-primary.active{background-color:#072269 \9;} -.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} -.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} -.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} -.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} -.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} -.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} -.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} -.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} -.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} -.btn-success:active,.btn-success.active{background-color:#408140 \9;} -.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} -.btn-success:active,.btn-success.active{background-color:#408140 \9;} -.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} -.btn-info:active,.btn-info.active{background-color:#24748c \9;} -.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} -.btn-info:active,.btn-info.active{background-color:#24748c \9;} -.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} -.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} -.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} -.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} -.btn-primaryAlt{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#2869a6;background-image:-moz-linear-gradient(top, #2a6fb0, #246097);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#2a6fb0), to(#246097));background-image:-webkit-linear-gradient(top, #2a6fb0, #246097);background-image:-o-linear-gradient(top, #2a6fb0, #246097);background-image:linear-gradient(to bottom, #2a6fb0, #246097);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a6fb0', endColorstr='#ff246097', GradientType=0);border-color:#246097 #246097 #153959;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#246097;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primaryAlt:hover,.btn-primaryAlt:focus,.btn-primaryAlt:active,.btn-primaryAlt.active,.btn-primaryAlt.disabled,.btn-primaryAlt[disabled]{color:#ffffff;background-color:#246097;*background-color:#1f5382;} -.btn-primaryAlt:active,.btn-primaryAlt.active{background-color:#1a466e \9;} -.btn-primaryAlt:hover,.btn-primaryAlt:focus,.btn-primaryAlt:active,.btn-primaryAlt.active,.btn-primaryAlt.disabled,.btn-primaryAlt[disabled]{color:#ffffff;background-color:#246097;*background-color:#1f5382;} -.btn-primaryAlt:active,.btn-primaryAlt.active{background-color:#1a466e \9;} -button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} -button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;} -button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;} -button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;} -.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn-link{border-color:transparent;cursor:pointer;color:#0a6199;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-link:hover{color:#053351;text-decoration:underline;background-color:transparent;} -.btn-link[disabled]:hover{color:#333333;text-decoration:none;} -.btn-group{position:relative;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;} -.btn-group:first-child{*margin-left:0;} -.btn-group+.btn-group{margin-left:5px;} -.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;} -.btn-toolbar .btn+.btn,.btn-toolbar .btn-group+.btn,.btn-toolbar .btn+.btn-group{margin-left:5px;} -.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-group>.btn+.btn{margin-left:-1px;} -.btn-group>.btn,.btn-group>.dropdown-menu{font-size:14px;} -.btn-group>.btn-mini{font-size:11px;} -.btn-group>.btn-small{font-size:12px;} -.btn-group>.btn-large{font-size:16px;} -.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} -.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} -.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} -.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;} -.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} -.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:5px;*padding-bottom:5px;} -.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;} -.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;} -.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;} -.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);} -.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;} -.btn-group.open .btn-primary.dropdown-toggle{background-color:#0a3199;} -.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;} -.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;} -.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;} -.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;} -.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;} -.btn .caret{margin-top:8px;margin-left:0;} -.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px;} -.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;} -.dropup .btn-large .caret{border-bottom:5px solid #000000;border-top:0;} -.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;} -.btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-group-vertical .btn+.btn{margin-left:0;margin-top:-1px;} -.btn-group-vertical .btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} -.btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} -.btn-group-vertical .btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;} -.btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} -.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853;} -.alert h4{margin:0;} -.alert h5{font-size:20px;} -.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;} -.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;} -.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;} -.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;} -.alert-block{padding-top:14px;padding-bottom:14px;} -.alert-block>p,.alert-block>ul{margin-bottom:0;} -.alert-block p+p{margin-top:5px;} -.nav{margin-left:0;margin-bottom:20px;list-style:none;} -.nav>li>a{display:block;} -.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;} -.nav>.pull-right{float:right;} -.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;} -.nav li+.nav-header{margin-top:9px;} -.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;} -.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} -.nav-list>li>a{padding:3px 15px;} -.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0a6199;} -.nav-list [class^="icon-"]{margin-right:2px;} -.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} -.nav-tabs:after,.nav-pills:after{clear:both;} -.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} -.nav-tabs:after,.nav-pills:after{clear:both;} -.nav-tabs>li,.nav-pills>li{float:left;} -.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} -.nav-tabs{border-bottom:1px solid #ddd;} -.nav-tabs>li{margin-bottom:-1px;} -.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;} -.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} -.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} -.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0a6199;} -.nav-stacked>li{float:none;} -.nav-stacked>li>a{margin-right:0;} -.nav-tabs.nav-stacked{border-bottom:0;} -.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} -.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;} -.nav-pills.nav-stacked>li>a{margin-bottom:3px;} -.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} -.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} -.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.nav .dropdown-toggle .caret{border-top-color:#0a6199;border-bottom-color:#0a6199;margin-top:6px;} -.nav .dropdown-toggle:hover .caret{border-top-color:#053351;border-bottom-color:#053351;} -.nav-tabs .dropdown-toggle .caret{margin-top:8px;} -.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;} -.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} -.nav>.dropdown.active>a:hover{cursor:pointer;} -.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;} -.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);} -.tabs-stacked .open>a:hover{border-color:#999999;} -.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} -.tabbable:after{clear:both;} -.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} -.tabbable:after{clear:both;} -.tab-content{overflow:auto;} -.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;} -.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} -.tab-content>.active,.pill-content>.active{display:block;} -.tabs-below>.nav-tabs{border-top:1px solid #ddd;} -.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;} -.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;} -.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd;} -.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;} -.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} -.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;} -.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} -.tabs-left>.nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} -.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} -.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;} -.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} -.tabs-right>.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} -.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} -.nav>.disabled>a{color:#999999;} -.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;} -.navbar{overflow:visible;margin-bottom:0;color:#777777;*position:relative;*z-index:2;} -.navbar-inner{min-height:75px;background:#f0f0f0;*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} -.navbar-inner:after{clear:both;} -.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} -.navbar-inner:after{clear:both;} -.navbar .container{width:auto;} -.nav-collapse.collapse{height:auto;} -.navbar .brand{float:left;display:block;padding:30px 30px 10px 30px;margin-top:15px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;text-indent:-9000px;background:transparent url("../img/F2_logo.png") top left no-repeat;}.navbar .brand:hover{text-decoration:none;} -.navbar-text{margin-bottom:0;line-height:75px;color:#737373;font-size:13px;letter-spacing:1px;} -.navbar-link{color:#777777;}.navbar-link:hover{color:#333333;} -.navbar .divider-vertical{height:10px;margin:33px 0 0 0;border-left:1px solid #a5a5a5;border-right:1px solid #a5a5a5;} -.navbar .tagline-divider{float:left;border-left:1px solid #B2BBC3;height:30px;margin:20px 20px 0 20px;} -.navbar .btn,.navbar .btn-group{margin-top:22.5px;} -.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0;} -.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} -.navbar-form:after{clear:both;} -.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} -.navbar-form:after{clear:both;} -.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:22.5px;} -.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;} -.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} -.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;} -.navbar-search{position:relative;float:left;margin-top:22.5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.navbar-static-top{position:static;width:100%;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;} -.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;} -.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;} -.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.navbar-fixed-top{top:0;} -.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-bottom:1px solid #dcdcdc;} -.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);} -.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} -.navbar .nav.pull-right{float:right;margin-right:0;} -.navbar .nav>li{float:left;} -.navbar .nav>li>a{float:none;padding:27.5px 10px 27.5px;color:#6c6c6c;text-decoration:none;text-shadow:0 1px 0 #ffffff;font-size:14px;} -.navbar .nav .dropdown-toggle .caret{margin-top:8px;} -.navbar .nav>li>.gitHubLink{font-size:16px;color:#3e6296;} -.navbar .nav>li.ghWrapResp{display:none;visibility:hidden;height:0;border:0 none;} -.navbar .nav>li>.gitHubLink strong{font-family:rokkittregular;font-size:17px;} -.navbar .nav>li>a>.onDecoration{border-top:1px solid #999999;border-bottom:1px solid #999999;color:#999999;font-size:10px;font-weight:bold;} -.navbar .nav>li>a>.F2VersionIndicator{position:absolute;top:50%;right:10px;font-size:10px;padding-top:3px;color:#6c6c6c;} -.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;} -.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;font-weight:bold;} -.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background:transparent none;border:0 none;box-shadow:none;} -.navbar .btn-navbar .icon-bar{display:block;width:40px;height:2px;background-color:#9da6ac;border-top:1px solid #666c70;border-bottom:2px solid #fff;} -.btn-navbar .icon-bar+.icon-bar{margin-top:3px;} -.navbar .icon-triangleDown{width:0;height:0;border-left:6.5px solid transparent;border-right:6.5px solid transparent;border-top:6.5px solid #9da6ac;} -.navbar .icon-triangleRight{width:0;height:0;border-top:6.5px solid transparent;border-bottom:6.5px solid transparent;border-left:6.5px solid #9da6ac;} -.nav-collapse .icon-triangleDown,.icon-triangleRight{display:none;} -.nav.navinset{width:0;height:0;display:none;visibility:hidden;} -.navbarmini .navbar-fixed-top .navbar-inner{min-height:28px;-webkit-box-shadow:0 0 0 rgba(0, 0, 0, 0);-moz-box-shadow:0 0 0 rgba(0, 0, 0, 0);box-shadow:0 0 0 rgba(0, 0, 0, 0);} -.navbarmini .navbar-fixed-top .brand{padding:4px 10px 9px;margin-top:7px;font-size:20px;font-weight:200;background-image:url("../img/mini_f2_logo.png");} -.navbarmini .navbar-fixed-top .tagline-divider{height:10px;margin:9px 12px 0 12px;} -.navbarmini .navbar-fixed-top .navbar-text{line-height:28px;font-size:10px;} -.navbarmini .navbar-fixed-top .divider-vertical{margin-top:8px;} -.navbarmini .navbar-fixed-top .nav>li>a{padding:4px 10px 4px;font-size:12px;} -.navbarmini .navbar-fixed-top .nav>li>.gitHubLink{font-size:14px;} -.navbarmini .navbar-fixed-top .nav>li>.gitHubLink strong{font-size:15px;} -.navbarmini .navbar-fixed-top .navbar .nav>li>a>.onDecoration{font-size:9px;} -.navbarmini .navbar-fixed-top .nav>li>a>.F2VersionIndicator{position:static;top:auto;left:auto;padding-left:5px;} -@media only screen and (-webkit-min-device-pixel-ratio:2){.navbar .navbar-inner .brand{background-size:56px 37px;background-image:url("../img/F2_logoRetina.png");} .navbarmini .navbar-fixed-top .brand{background-size:18px 13px;background-image:url("../img/mini_f2_logo_2x.png");}}.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} -.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} -.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;} -.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;} -.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;} -.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;} -.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} -.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;} -.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;} -.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} -.navbar-inverse{color:#999999;}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;} -.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#ffffff;} -.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;} -.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;} -.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover{color:#ffffff;} -.navbar-inverse .divider-vertical{border-left-color:#a5a5a5;border-right-color:#a5a5a5;} -.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;} -.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;} -.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} -.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} -.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} -.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} -.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} -.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;} -.breadcrumb .divider{padding:0 5px;color:#ccc;} -.breadcrumb .active{color:#999999;} -.pagination{height:40px;margin:20px 0;} -.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} -.pagination ul>li{display:inline;} -.pagination ul>li>a,.pagination ul>li>span{float:left;padding:0 14px;line-height:38px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;} -.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;} -.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;} -.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999999;background-color:transparent;cursor:default;} -.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -.pagination-centered{text-align:center;} -.pagination-right{text-align:right;} -.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;} -.pager:after{clear:both;} -.pager:before,.pager:after{display:table;content:"";line-height:0;} -.pager:after{clear:both;} -.pager li{display:inline;} -.pager a,.pager span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.pager a:hover{text-decoration:none;background-color:#f5f5f5;} -.pager .next a,.pager .next span{float:right;} -.pager .previous a{float:left;} -.pager .disabled a,.pager .disabled a:hover,.pager .disabled span{color:#999999;background-color:#fff;cursor:default;} -.modal-open .modal .dropdown-menu{z-index:2050;} -.modal-open .modal .dropdown.open{*z-index:2050;} -.modal-open .modal .popover{z-index:2060;} -.modal-open .modal .tooltip{z-index:2080;} -.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} -.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} -.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} -.modal.fade.in{top:50%;} -.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} -.modal-header h3{margin:0;line-height:30px;} -.modal-body{overflow-y:auto;max-height:400px;padding:15px;} -.modal-form{margin-bottom:0;} -.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} -.modal-footer:after{clear:both;} -.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} -.modal-footer:after{clear:both;} -.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;} -.modal-footer .btn-group .btn+.btn{margin-left:-1px;} -.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} -.tooltip.top{margin-top:-3px;} -.tooltip.right{margin-left:3px;} -.tooltip.bottom{margin-top:3px;} -.tooltip.left{margin-left:-3px;} -.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} -.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} -.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} -.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} -.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} -.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-bottom:10px;} -.popover.right{margin-left:10px;} -.popover.bottom{margin-top:10px;} -.popover.left{margin-right:10px;} -.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} -.popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} -.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} -.popover .arrow:after{content:"";z-index:-1;} -.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} -.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} -.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} -.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} -.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} -.thumbnails:after{clear:both;} -.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} -.thumbnails:after{clear:both;} -.row-fluid .thumbnails{margin-left:0;} -.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;} -.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;} -a.thumbnail:hover{border-color:#0a6199;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} -.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} -.thumbnail .caption{padding:9px;color:#555555;} -.label,.badge{font-size:11.844px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;} -.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;} -a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} -.label-important,.badge-important{background-color:#b94a48;} -.label-important[href],.badge-important[href]{background-color:#953b39;} -.label-warning,.badge-warning{background-color:#f89406;} -.label-warning[href],.badge-warning[href]{background-color:#c67605;} -.label-success,.badge-success{background-color:#468847;} -.label-success[href],.badge-success[href]{background-color:#356635;} -.label-info,.badge-info{background-color:#3a87ad;} -.label-info[href],.badge-info[href]{background-color:#2d6987;} -.label-inverse,.badge-inverse{background-color:#333333;} -.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} -.btn .label,.btn .badge{position:relative;top:-1px;} -.btn-mini .label,.btn-mini .badge{top:0;} -@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} -.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);} -.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} -.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} -.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);} -.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);} -.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);} -.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);} -.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.accordion{margin-bottom:20px;} -.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.accordion-heading{border-bottom:0;} -.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} -.accordion-toggle{cursor:pointer;} -.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} -.carousel{position:relative;margin-bottom:20px;line-height:1;} -.carousel-inner{overflow:hidden;width:100%;position:relative;} -.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} -.carousel .item>img{display:block;line-height:1;} -.carousel .active,.carousel .next,.carousel .prev{display:block;} -.carousel .active{left:0;} -.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;} -.carousel .next{left:100%;} -.carousel .prev{left:-100%;} -.carousel .next.left,.carousel .prev.right{left:0;} -.carousel .active.left{left:-100%;} -.carousel .active.right{left:100%;} -.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} -.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} -.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);} -.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;} -.carousel-caption h4{margin:0 0 5px;} -.carousel-caption p{margin-bottom:0;} -.hero-unit{padding:60px;margin-bottom:30px;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;} -.hero-unit p{font-size:18px;font-weight:200;line-height:30px;color:inherit;} -.pull-right{float:right;} -.pull-left{float:left;} -.hide{display:none;} -.show{display:block;} -.invisible{visibility:hidden;} -.affix{position:fixed;} -.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -.hidden{display:none;visibility:hidden;} -.visible-phone{display:none !important;} -.visible-tablet{display:none !important;} -.hidden-desktop{display:none !important;} -.visible-desktop{display:inherit !important;} -@media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .row-fluid .thumbnails{margin-left:0;} .openf2 .mainContainer .description .span6{width:490px;} .openf2 .mainContainer .description h2:first-child{margin-top:0;font-size:40px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description .mainBGControl{margin-top:7px;}}@media (min-width:980px) and (max-width:1199px){.openf2 .mainContainer .slideshow{opacity:1;filter:alpha(opacity=100);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer footer .diskIcon{padding-right:50px;} .openf2 .mainContainer footer .docIcon{padding-right:50px;} .openf2 .mainContainer footer .socialWrap .span4{width:490px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span7{width:670px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span2{width:140px;padding-left:5px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{padding:30px 35px;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} body .mainContainer{padding-top:0;} .openf2 .mainContainer .span6{width:490px;} .openf2 .mainContainer .description .slideshow{opacity:0.2;filter:alpha(opacity=20);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer .description h2:first-child{margin-top:0;padding-top:50px;font-size:40px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description .mainBGControl{margin-top:7px;} .openf2 .mainContainer .overview .bulletPoints{width:350px;} .openf2 .mainContainer .overview .span12 p.f2OverviewSummary{margin-left:130px;} .openf2 .mainContainer footer .span6{float:none;margin:auto;} .openf2 .mainContainer footer .span6+.span6{padding-left:20px;} .openf2 .mainContainer footer .span6 a.pull-right{float:none;} .openf2 .mainContainer footer .socialWrap .span4{width:100%;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .span7{width:630px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span2{width:140px;padding-left:5px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:40px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{padding:30px 35px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:50px;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} body.openf2{padding-left:0;padding-right:0;} .openf2 .mainContainer .description{padding:0 20px;}.openf2 .mainContainer .description .slideshow{opacity:0.2;filter:alpha(opacity=20);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer .description .mainBGControl{display:none;} .openf2 .mainContainer .description h2:first-child{margin-top:0;font-size:40px;padding-top:50px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .overview .container{padding:10px;}.openf2 .mainContainer .overview .container .f2OverviewSummary{margin-left:10px;} .openf2 .mainContainer footer .row .span6{padding:0;width:400px;margin:20px auto;}.openf2 .mainContainer footer .row .span6 h1{font-size:20px;} .openf2 .mainContainer footer .row .span6 h2{font-size:18px;} .openf2 .mainContainer footer .row .span6 a.pull-right{float:none;} .openf2 .mainContainer footer .socialWrap .span4{width:400px;margin:auto;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{width:100%;height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:10px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:40px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{background-position:left;} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} .container-fluid{padding:0;} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} .dl-horizontal dd{margin-left:0;} .container{width:auto;} .row-fluid{width:100%;} .row,.thumbnails{margin-left:0;} .thumbnails>li{float:none;margin-left:0;} [class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} .controls-row [class*="span"]+[class*="span"]{margin-left:0;} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;}.modal.fade.in{top:auto;}}@media (max-width:480px){.lead{font-size:18px;line-height:23px;} .nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:20px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{top:10px;left:10px;right:10px;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:480px){.icon-bookmark{display:none;} .openf2 .mainContainer .description{padding:0 20px;}.openf2 .mainContainer .description h2:first-child{font-size:24px;padding-top:30px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description h3{font-size:20px;} .openf2 .mainContainer .description p{font-size:14px;} .openf2 .mainContainer .overview .container{padding:10px;}.openf2 .mainContainer .overview .container .f2OverviewSummary{margin-left:10px;} .openf2 .mainContainer footer .row{text-align:center;}.openf2 .mainContainer footer .row .pull-left,.openf2 .mainContainer footer .row .pull-right{float:none;} .openf2 .mainContainer footer .row .span6{width:100%;} .openf2 .mainContainer footer .socialWrap .span4{width:100%;} .openf2 .mainContainer footer h1{font-size:20px;} .openf2 .mainContainer footer h2{font-size:18px;} .openf2 .mainContainer footer .diskIcon,.openf2 .mainContainer footer .docIcon{display:none;} .openf2 .mainContainer footer .span5{margin-top:0;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{width:100%;height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:10px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:10px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top,.navbar-fixed-bottom{position:static;} .navbar-fixed-bottom{margin-top:20px;} .openf2Header{margin-bottom:20px;} .openf2 .openf2Header{margin-bottom:0;padding-left:20px;padding-right:20px;} .navbar .container{width:auto;padding:0;} .navbar .brand{margin-left:20px;} .openf2 .navbar .brand{margin-left:0;} .navbarmini .navbar-fixed-top .brand{padding:30px 30px 10px 30px;margin-top:20px;background:transparent url("../img/F2_logo.png") top left no-repeat;} .nav-collapse{clear:both;} .nav-collapse.collapse.in{background:#d8d8d8;-webkit-box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;-moz-box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;} .nav-collapse .icon-triangleDown{display:inline-block;margin-top:4px;} .nav-collapse .nav.navinset{width:auto;height:auto;display:block;visibility:visible;margin:0;} .nav-collapse .nav{float:none;margin:0 0 5px;} .nav-collapse .nav>li:first-child{padding-top:5px;} .nav-collapse .nav>li{float:none;border-bottom:1px solid #cac9c9;border-top:1px solid #e2e2e2;} .navbarmini .navbar-fixed-top .nav-collapse .nav>li>a{margin-bottom:2px;padding:9px 15px;} .nav-collapse .nav>.divider-vertical{display:none;} .nav-collapse .nav .nav-header{color:#777777;text-shadow:none;} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777777;} .nav-collapse .dropdown-menu a{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;} .nav-collapse .nav.navinset>li{border-bottom-color:#c0bebe;border-top-color:#adadad;} .nav-collapse .nav.navinset>li:first-child{padding-top:0;} .nav-collapse .nav.navinset>li>a{background-color:#b5b5b5;margin:0;color:#333;text-shadow:none;} .navbarmini .nav-collapse .nav.navinset>li>a{margin:0;padding-left:25px;} .nav-collapse .nav.navinset>li>a:hover,.nav-collapse .nav.navinset>li>a.active{background-color:#00609c;color:#ffffff;} .nav-collapse .nav>li>a>.F2VersionIndicator{top:auto;bottom:0;left:120px;} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} .nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#d8d8d8;} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111111;} .nav-collapse.in .btn-group{margin-top:5px;padding:0;} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} .nav-collapse .dropdown-menu .divider{display:none;} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111111;border-bottom-color:#111111;} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} .navbar .btn-navbar{display:block;margin-right:20px;} .openf2 .navbar .btn-navbar{margin-right:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .navbar .nav>li.ghWrap{border:0 none;display:none;} .navbar .nav>li.ghWrapResp{display:block;visibility:visible;height:auto;border:0 none;} .navbarmini .navbar-fixed-top .navbar-text,.openf2 .navbar-inner .navbar-text{line-height:75px;font-size:13px;margin-top:2px;-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;} .navbarmini .navbar-fixed-top .tagline-divider,.openf2 .navbar-inner .tagline-divider{height:38px;margin:20px 20px 0 20px;-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;}}@media (min-width:979px) and (-webkit-min-device-pixel-ratio:2){.navbarmini .navbar-fixed-top .brand{background-size:18px 13px;background-image:url("../img/mini_f2_logo_2x.png");}}@media (max-width:979px) and (-webkit-min-device-pixel-ratio:2){.navbarmini .navbar-fixed-top .brand{background-image:url("../img/F2_logoRetina.png");background-size:56px 37px;}}@media (min-width:480px) and (max-width:767px){.tagline-divider,.navbar-text{display:block !important;}}@media (max-width:767px){.tagline-divider,.navbar-text{display:none;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@-webkit-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-moz-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-o-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-ms-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-webkit-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-moz-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-o-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-ms-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}.navbar-docs{background:#fff none;border-bottom:1px solid #a7a7a7;-webkit-box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);-moz-box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;} -.navbar-docs .container{margin-bottom:0;} -.navbar-docs .container .row{margin-bottom:0;} -.navbar-docs ul{margin:0;width:100%;} -.navbar-docs li{height:38px;width:33.33333333333333%;float:left;text-align:center;} -.navbar-docs a,.navbar-docs a:visited{height:38px;width:100%;line-height:38px;display:block;font-size:19px;font-family:rokkittregular;text-transform:uppercase;letter-spacing:0.2em;} -.navbar-docs a:hover,.navbar-docs a:active,.navbar-docs a.active{background-color:#f3f3f3;text-decoration:none;} -.navbar-docs .basics{border-top:3px solid #005f9c;color:#005f9c;} -.navbar-docs .basics a{border-left:1px solid #e2e2e2;color:#005f9c;} -.navbar-docs .dev{border-top:3px solid #b1e27e;} -.navbar-docs .dev a{border-left:1px solid #e2e2e2;border-right:1px solid #e2e2e2;color:#b1e27e;} -.navbar-docs .ref{border-top:3px solid #fabb5d;} -.navbar-docs .ref a{border-right:1px solid #e2e2e2;color:#fabb5d;} -@media (min-width:768px) and (max-width:979px){.navbar-docs{display:none;visibility:hidden;}}@media (max-width:767px){.navbar-docs{display:none;visibility:hidden;}}.navbar-docs-sections{background-color:#292929;margin:0;} -.navbar-docs-sections [data-toggle]{border-bottom:2px solid #0a6199;color:#9da6ac;display:block;font-weight:bold;line-height:32px;text-align:center;text-decoration:none;} -.navbar-docs-sections [data-toggle] span{margin-top:5px;} -.navbar-docs-sections{display:none;visibility:hidden;} -@media (max-width:979px){.navbar-docs-sections{display:block;visibility:visible;}}body{padding-top:90px;} -.container .row{margin-bottom:20px;} -.container .span9{padding-bottom:100px;} -pre{font-size:12px;} -pre.prettyprint{padding:8px;background-color:#F7F7F9;border:1px solid #E1E1E8;} -h1.title{margin-top:0;} -.level2,.level3{padding-top:87px;} -.level3{padding-top:82px;} -.level4{margin-top:30px;} -section>hr{margin:40px 0 0;} -#docs section h2,#docs section h3,#docs section h4,#docs section h5,#docs section h6{position:relative;} -section .docs-anchor{padding-left:12px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0;opacity:0.2;filter:alpha(opacity=20);margin-top:2px;} -.nav-list{margin-top:9px;border-top:3px solid #737373;padding-left:15px;padding-right:15px;} -.nav-list>li{position:relative;} -.nav-list>li>a{font-family:rokkittregular;font-size:19px;} -.nav-list>li>ul a{font-size:17px;padding:4px 0 4px 15px;} -.nav-list>li>a:hover{background:none;color:#0a6199;} -.nav-list .nav-list{border-top:none;margin-top:0;} -.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:none;} -.nav-list>li>a{padding:8px 15px;color:#333;} -.nav-list>li>ul a{color:#737373;} -.nav-list>.active>a,.nav-list>.active>a:hover{color:#0a6199;text-shadow:none;background:none;} -.nav-list [class^="icon-"]{margin-right:2px;} -.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -#toc{min-height:1px;} -.nav-list,.nav-list.affix,.nav-list.affix-bottom{width:190px;} -@media (min-width:1200px){.nav-list,.nav-list.affix,.nav-list.affix-bottom{width:240px;} .nav-list>li>ul a{font-size:19px;} .nav-list>li>a{font-size:20px;}}@media (max-width:979px){body{padding-top:0;} #toc{display:none;} .container .span9{width:724px;} .level2{padding-top:20px;} .level3{padding-top:5px;} .level4{margin-top:20px;}}@media (max-width:767px){.container .span9{width:100%;}}.nav-list.affix{margin-bottom:70px;} -footer small{font-size:12px;} -footer .pull-right{text-align:right;} -.navbar-docs{background:#fff none;border-bottom:1px solid #a7a7a7;-webkit-box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);-moz-box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);box-shadow:0px 4px 3px rgba(0, 0, 0, 0.2);-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;} -.navbar-docs .container{margin-bottom:0;} -.navbar-docs .container .row{margin-bottom:0;} -.navbar-docs ul{margin:0;width:100%;} -.navbar-docs li{height:38px;width:33.33333333333333%;float:left;text-align:center;} -.navbar-docs a,.navbar-docs a:visited{height:38px;width:100%;line-height:38px;display:block;font-size:19px;font-family:rokkittregular;text-transform:uppercase;letter-spacing:0.2em;} -.navbar-docs a:hover,.navbar-docs a:active,.navbar-docs a.active{background-color:#f3f3f3;text-decoration:none;} -.navbar-docs .basics{border-top:3px solid #005f9c;color:#005f9c;} -.navbar-docs .basics a{border-left:1px solid #e2e2e2;color:#005f9c;} -.navbar-docs .dev{border-top:3px solid #b1e27e;} -.navbar-docs .dev a{border-left:1px solid #e2e2e2;border-right:1px solid #e2e2e2;color:#b1e27e;} -.navbar-docs .ref{border-top:3px solid #fabb5d;} -.navbar-docs .ref a{border-right:1px solid #e2e2e2;color:#fabb5d;} -@media (min-width:768px) and (max-width:979px){.navbar-docs{display:none;visibility:hidden;}}@media (max-width:767px){.navbar-docs{display:none;visibility:hidden;}}.nav-list>li>a{color:#737373;} -.hide-deprecated .deprecated,.hide-inherited .inherited,.hide-private .private,.hide-protected .protected{display:none;} -.dl-horizontal{margin:0;} -.level2{margin-bottom:35px;padding-top:0;} -table.table-members td.name{white-space:nowrap;} -ul.params{display:inline;list-style-type:none;margin:0;padding:0;} -ul.params li{display:inline;} -ul.commas li:after{content:',';} -ul.commas li:last-child:after{content:'';} -.backToTop{background-color:#eeeeee;height:1px;margin-top:35px;position:relative;text-align:center;} -.backToTop a{background-color:#ffffff;left:50%;margin-left:-45px;position:absolute;top:-9px;width:90px;z-index:1;} -.label.static,.label.chainable,.label.async,.label.multiple{background-color:#999999;} -.label.public{background-color:#468847;} -.label.deprecated{background-color:#f89406;} -.label.private{background-color:#b94a48;} -.label.protected{background-color:#3a87ad;} -.label.final{background-color:#333333;} -.label.type{background-color:#f9f9f9;border:1px solid #dddddd;color:#333333;font-weight:normal;text-shadow:none;} +article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { + display: block; +} + +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, a:active { + outline: 0; +} + +sub, sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + max-width: 100%; + width: auto \9; + height: auto; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img { + max-width: none; +} + +button, input, select, textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, input[type="button"], input[type="reset"], input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, .clearfix:after { + display: table; + content: ""; + line-height: 0; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0a6199; + text-decoration: none; +} + +a:hover { + color: #053351; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, .row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, .row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.container-fluid:after { + clear: both; +} + +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.container-fluid:after { + clear: both; +} + +.openf2Header { + background-color: #f0f0f0; +} + +body.openf2 { + background: transparent url("../img/footerNoise.png") repeat; +} + +body.f2Developer { + background: transparent url("../img/footerNoise.png") repeat; +} + +body.letterPage { + background: transparent url("../img/footerNoise.png") repeat; +} + +body .mainContainer { + background-color: #ffffff; + padding: 0; + margin-top: 0; +} + +body .mainContainer .AppRegistrationForm { + min-height: 300px; + padding: 20px; + background: url("../img/F2TopShadowBorder.png") top no-repeat; +} + +body .mainContainer .noiseWrap { + background: transparent url("../img/footerNoise.png") repeat; +} + +body .mainContainer .letter { + background-color: transparent; + background: url("../img/F2TopShadowBorder.png") top no-repeat; + padding-bottom: 20px; +} + +body .mainContainer .letter .letterWrapper { + margin-top: 30px; + background: url("../img/F2LetterImage.png") center no-repeat; +} + +body .mainContainer .letter .letterWrapper .letterContent { + width: 875px; + height: 890px; + margin: auto; +} + +body .mainContainer .letter .letterWrapper .letterContent .date { + text-align: right; +} + +body .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 80px; +} + +body .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 100px; +} + +body .mainContainer .letter p { + color: #727272; + margin-bottom: 15px; + font-size: 14px; + text-shadow: 0px 1px #ffffff; +} + +body .mainContainer .letter .signature { + background: url("../img/F2Signature.png") center no-repeat; + padding: 30px 20px; +} + +body .mainContainer .description { + z-index: 2; + background: url("../img/F2TopShadowBorder.png") top no-repeat; + background-color: #ffffff; + position: relative; + height: 665px; +} + +body .mainContainer .description .letterLink { + padding-top: 10px; +} + +body .mainContainer .description p { + margin-bottom: 0; + line-height: 1.5em; + color: #535353; + font-weight: 200; + font-size: 17px; +} + +body .mainContainer .description p.F2Indent { + padding-left: 10px; + font-size: 12px; +} + +body .mainContainer .description p.F2Indent a { + color: #535353; +} + +body .mainContainer .description h2:first-child { + margin-top: 0; + padding-top: 50px; + font-size: 35px; + margin-bottom: 30px; + line-height: 1.25em; +} + +body .mainContainer .description h2, body .mainContainer .description h3 { + color: #0a6199; + margin-bottom: 0; + line-height: 1; +} + +body .mainContainer .description h3:first-child { + margin-top: 30px; +} + +body .mainContainer .description h3 a { + color: #0a6199; +} + +body .mainContainer .description .overview h2, body .mainContainer .description .overview h3 { + color: #ffffff; +} + +body .mainContainer .description .mainBGImg { + z-index: -1; + position: absolute; + top: 0; + left: 0; + margin: 0; + list-style: none; + width: 100%; +} + +body .mainContainer .description .mainBGImg li div.img { + height: 665px; + width: 100%; +} + +body .mainContainer .description .ImgIpad { + background: url("../img/F2_iPad.jpg") no-repeat center; +} + +body .mainContainer .description .ImgIscreens { + background: url("../img/F2_iScreens.jpg") no-repeat center; +} + +body .mainContainer .description .ImgIphone { + background: url("../img/F2_iPhone.jpg") no-repeat center; +} + +body .mainContainer .description .mainBGControl { + margin: 30px 0 0 0; + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .description .mainBGControl li { + display: inline-block; +} + +body .mainContainer .description .mainBGControl li a { + background: url("../img/bgControlDot.png") no-repeat center; + padding: 10px; +} + +body .mainContainer .description .mainBGControl .selected a { + background: url("../img/bgControlDotSelected.png") no-repeat center; +} + +body .mainContainer .overview { + background-color: #ffffff; + background-color: #53585b; + background-image: -moz-linear-gradient(top, #575d61, #4d5052); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#575d61), to(#4d5052)); + background-image: -webkit-linear-gradient(top, #575d61, #4d5052); + background-image: -o-linear-gradient(top, #575d61, #4d5052); + background-image: linear-gradient(to bottom, #575d61, #4d5052); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff575d61', endColorstr='#ff4d5052', GradientType=0); +} + +body .mainContainer .overview h2 { + text-align: center; + margin-bottom: 20px; + color: #ffffff; +} + +body .mainContainer .overview .container { + background: url("../img/F2TopShadowBorder.png") top no-repeat; +} + +body .mainContainer .overview .row { + padding: 50px 0; +} + +body .mainContainer .overview .F2SunBullet { + background: url("../img/F2SunIcon.png") center no-repeat; + padding: 10px; +} + +body .mainContainer .overview .bulletPoints ul { + list-style: none; +} + +body .mainContainer .overview .bulletPoints ul li { + padding-left: 22px; + background: url("../img/F2SunIcon.png") left top no-repeat; +} + +body .mainContainer .overview .bulletPoints .span4 { + margin-left: 5px; +} + +body .mainContainer .overview .f2OverviewSummary { + font-style: italic; +} + +body .mainContainer .overview .interactiveDisplay { + background: transparent; +} + +body .mainContainer .overview .interactiveDisplay .carousel-inner { + height: 430px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .item { + background: url("../img/bankeoSprite.png") no-repeat; + height: 430px; + max-width: 570px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .euro { + background-position: -55px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .sp500 { + background-position: -685px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .ft { + background-position: -1325px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .research { + background-position: -1965px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .stockPicks { + background-position: -2615px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .reuters { + background-position: -3255px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .video { + background-position: -3895px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .search { + background-position: -4555px -34px; +} + +body .mainContainer .overview .photoControl { + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .overview .photoControl li { + display: inline-block; + cursor: pointer; +} + +body .mainContainer .overview .photoControl li a { + background: url("../img/dot.png") no-repeat center; + padding: 13px; +} + +body .mainContainer .overview .photoControl .selected a { + background: url("../img/dotSelected.png") no-repeat center; +} + +body .mainContainer .overview .captions { + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .overview .captions li { + display: none; +} + +body .mainContainer .overview .captions li.selected { + display: inline-block; +} + +body .mainContainer .overview p { + color: #ffffff; + margin-bottom: 20px; + font-size: 14px; +} + +body .mainContainer .exampleContent { + padding-top: 40px; +} + +body .mainContainer .exampleContent #exampleAppContainer a { + color: #417777; +} + +body .mainContainer .exampleContent #exampleAppContainer footer { + background: transparent; +} + +body .mainContainer .exampleCaptions p { + padding: 0 0 40px 0; + color: #6c6c6c; + background: url("../img/smallShadowDivider.png") bottom no-repeat; +} + +body .mainContainer .exampleControls { + position: relative; + margin: 0; + padding: 20px 0; + text-align: center; +} + +body .mainContainer .exampleControls .arrow { + height: 25px; + width: 13px; + cursor: pointer; + position: absolute; + top: 15px; +} + +body .mainContainer .exampleControls .leftArrow { + background: url("../img/LeftArrow.png") center no-repeat; + left: 0; +} + +body .mainContainer .exampleControls .rightArrow { + background: url("../img/RightArrow.png") center no-repeat; + right: 0; +} + +body .mainContainer .exampleControls ul { + margin: 0; + list-style: none; +} + +body .mainContainer .exampleControls ul li { + display: inline-block; +} + +body .mainContainer .exampleControls ul li a { + background: url("../img/bgControlDot.png") no-repeat center; + padding: 10px; +} + +body .mainContainer .exampleControls ul .selected a { + background: url("../img/bgControlDotSelected.png") no-repeat center; +} + +body .mainContainer footer { + background: url("../img/footerNoise.png") repeat; + color: #bfc7ce; +} + +body .mainContainer footer .container { + background: url("../img/bottomBorderFade.png") top no-repeat; +} + +body .mainContainer footer h1, body .mainContainer footer h2, body .mainContainer footer h3, body .mainContainer footer h4, body .mainContainer footer h5, body .mainContainer footer h6 { + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; +} + +body .mainContainer footer h5 { + line-height: 10px; + font-size: 12px; +} + +body .mainContainer footer .diskIcon { + background: url("../img/diskIcon.png") no-repeat center; + padding: 50px 75px; +} + +body .mainContainer footer .docIcon { + background: url("../img/docIcon.png") no-repeat center; + padding: 50px 75px; +} + +body .mainContainer footer .span6 { + padding: 15px 0; + margin-top: 20px; +} + +body .mainContainer footer .pull-left h2 { + line-height: 20px; +} + +body .mainContainer footer a { + text-decoration: none; + color: #bfc7ce; +} + +body .mainContainer footer a.releaseNotes { + text-decoration: underline; +} + +body .mainContainer footer .version { + padding: 0 10px; + font-size: 46px; +} + +body .mainContainer footer .socialWrap { + background: url("../img/bottomBorderFade.png") bottom no-repeat; + padding-bottom: 40px; +} + +body .mainContainer footer .social { + padding: 20px 0 10px 0; +} + +body .mainContainer footer .span12 { + text-align: center; + color: #3b4044; + margin-bottom: 10px; +} + +.footerLogoDark { + background: url("../img/F2FooterLogoDark.png") center no-repeat; + height: 24px; +} + +.footerLogoLight { + background: url("../img/F2FooterLogoLight.png") center no-repeat; + height: 23px; +} + +.examplePage { + background: url("../img/F2TopShadowBorder.png") top no-repeat; + background-color: #ffffff; + padding-bottom: 50px; +} + +.F2DottedLine { + width: 100%; + border-bottom: 1px dotted #ffffff; +} + +@font-face { + font-family: 'rokkittregular'; + src: url('rokkitt-webfont.eot'); + src: local('☺'), url('rokkitt-webfont.woff') format('woff'), url('rokkitt-webfont.ttf') format('truetype'), url('rokkitt-webfont.svg#rokkittregular') format('svg'); + font-weight: normal; + font-style: normal; +} + +p { + margin: 0 0 10px; + font-size: 14px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +.text-warning { + color: #c09853; +} + +.text-error { + color: #b94a48; +} + +.text-info { + color: #3a87ad; +} + +.text-success { + color: #468847; +} + +h1, h2, h3, h4, h5, h6 { + margin: 10px 0; + font-family: rokkittregular; + font-weight: normal; + line-height: 1; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1 { + font-size: 36px; + line-height: 40px; +} + +h2 { + font-size: 30px; + line-height: 30px; +} + +h3 { + font-size: 24px; + line-height: 40px; +} + +h4 { + font-size: 20px; + line-height: 20px; +} + +h5 { + font-size: 16px; + line-height: 20px; +} + +h6 { + font-size: 14px; + line-height: 20px; +} + +h1 small { + font-size: 24px; +} + +h2 small { + font-size: 18px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, ul ol, ol ol, ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 20px; +} + +dt, dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, .dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal:before, .dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, q:after, blockquote:before, blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +a code { + border-color: #e1e1e8 !important; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, input, button, select, textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, button, select, textarea { + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 9px; + font-size: 14px; + line-height: 20px; + color: #555555; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +input, textarea, .uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear .2s, box-shadow linear .2s; + -moz-transition: border linear .2s, box-shadow linear .2s; + -o-transition: border linear .2s, box-shadow linear .2s; + transition: border linear .2s, box-shadow linear .2s; +} + +textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], input[type="checkbox"] { + margin: 4px 0 0; + *margin-top: 0; + margin-top: 1px \9; + line-height: normal; + cursor: pointer; +} + +input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { + width: auto; +} + +select, input[type="file"] { + height: 30px; + *margin-top: 4px; + line-height: 30px; +} + +select { + width: 220px; + border: 1px solid #cccccc; + background-color: #ffffff; +} + +select[multiple], select[size] { + height: auto; +} + +select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, .uneditable-textarea { + color: #999999; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { + color: #999999; +} + +input:-moz-placeholder, textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, .checkbox { + min-height: 18px; + padding-left: 18px; +} + +.radio input[type="radio"], .checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +.controls > .radio:first-child, .controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, .checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, textarea, .uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, textarea.span12, .uneditable-input.span12 { + width: 926px; +} + +input.span11, textarea.span11, .uneditable-input.span11 { + width: 846px; +} + +input.span10, textarea.span10, .uneditable-input.span10 { + width: 766px; +} + +input.span9, textarea.span9, .uneditable-input.span9 { + width: 686px; +} + +input.span8, textarea.span8, .uneditable-input.span8 { + width: 606px; +} + +input.span7, textarea.span7, .uneditable-input.span7 { + width: 526px; +} + +input.span6, textarea.span6, .uneditable-input.span6 { + width: 446px; +} + +input.span5, textarea.span5, .uneditable-input.span5 { + width: 366px; +} + +input.span4, textarea.span4, .uneditable-input.span4 { + width: 286px; +} + +input.span3, textarea.span3, .uneditable-input.span3 { + width: 206px; +} + +input.span2, textarea.span2, .uneditable-input.span2 { + width: 126px; +} + +input.span1, textarea.span1, .uneditable-input.span1 { + width: 46px; +} + +input, textarea, .uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, textarea.span12, .uneditable-input.span12 { + width: 926px; +} + +input.span11, textarea.span11, .uneditable-input.span11 { + width: 846px; +} + +input.span10, textarea.span10, .uneditable-input.span10 { + width: 766px; +} + +input.span9, textarea.span9, .uneditable-input.span9 { + width: 686px; +} + +input.span8, textarea.span8, .uneditable-input.span8 { + width: 606px; +} + +input.span7, textarea.span7, .uneditable-input.span7 { + width: 526px; +} + +input.span6, textarea.span6, .uneditable-input.span6 { + width: 446px; +} + +input.span5, textarea.span5, .uneditable-input.span5 { + width: 366px; +} + +input.span4, textarea.span4, .uneditable-input.span4 { + width: 286px; +} + +input.span3, textarea.span3, .uneditable-input.span3 { + width: 206px; +} + +input.span2, textarea.span2, .uneditable-input.span2 { + width: 126px; +} + +input.span1, textarea.span1, .uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, .controls-row:after { + display: table; + content: ""; + line-height: 0; +} + +.controls-row:after { + clear: both; +} + +.controls-row:before, .controls-row:after { + display: table; + content: ""; + line-height: 0; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"] { + float: left; +} + +input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, .control-group.error select, .control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, .control-group.error select, .control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; +} + +.control-group.success input, .control-group.success select, .control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; +} + +.control-group.success input, .control-group.success select, .control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, .control-group.info select, .control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +.control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, .control-group.info select, .control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, .form-actions:after { + display: table; + content: ""; + line-height: 0; +} + +.form-actions:after { + clear: both; +} + +.form-actions:before, .form-actions:after { + display: table; + content: ""; + line-height: 0; +} + +.form-actions:after { + clear: both; +} + +.help-block, .help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding-left: 5px; +} + +.input-append, .input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} + +.input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + font-size: 14px; + vertical-align: top; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-append input:focus, .input-prepend input:focus, .input-append select:focus, .input-prepend select:focus, .input-append .uneditable-input:focus, .input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, .input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, .input-prepend .add-on, .input-append .btn, .input-prepend .btn { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, .input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, .input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, .input-prepend .btn:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append input, .input-append select, .input-append .uneditable-input { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append .add-on, .input-append .btn { + margin-left: -1px; +} + +.input-append .add-on:last-child, .input-append .btn:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.form-search .input-append .search-query, .form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append { + display: inline-block; + *display: inline; + *zoom: 1; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .hide, .form-inline .hide, .form-horizontal .hide { + display: none; +} + +.form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, .table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, .table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, .table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, .table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child, .table-bordered tfoot:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child, .table-bordered tfoot:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover td, .table-hover tbody tr:hover th { + background-color: #f5f5f5; +} + +table [class*=span], .row-fluid table [class*=span] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +.table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +.table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +.table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +.table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +.table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +.table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +.table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +.table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +.table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +.table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +.table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + +.table tbody tr.success td { + background-color: #dff0d8; +} + +.table tbody tr.error td { + background-color: #f2dede; +} + +.table tbody tr.warning td { + background-color: #fcf8e3; +} + +.table tbody tr.info td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} + +[class^="icon-"], [class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; + margin-top: 1px; +} + +.icon-white, .nav-tabs > .active > a > [class^="icon-"], .nav-tabs > .active > a > [class*=" icon-"], .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + background-position: -216px -120px; + width: 16px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + background-position: -408px -120px; + width: 16px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, .dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, .open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-submenu:hover > a { + text-decoration: none; + color: #ffffff; + background-color: #0a6199; + background-color: #095b8f; + background-image: -moz-linear-gradient(top, #0a6199, #085281); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281)); + background-image: -webkit-linear-gradient(top, #0a6199, #085281); + background-image: -o-linear-gradient(top, #0a6199, #085281); + background-image: linear-gradient(to bottom, #0a6199, #085281); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0); +} + +.dropdown-menu .active > a, .dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #0a6199; + background-color: #095b8f; + background-image: -moz-linear-gradient(top, #0a6199, #085281); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281)); + background-image: -webkit-linear-gradient(top, #0a6199, #085281); + background-image: -o-linear-gradient(top, #0a6199, #085281); + background-image: linear-gradient(to bottom, #0a6199, #085281); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0); +} + +.dropdown-menu .disabled > a, .dropdown-menu .disabled > a:hover { + color: #999999; +} + +.dropdown-menu .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, .navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} + +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + *zoom: 1; + padding: 4px 14px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + *line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e6e6e6; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + border: 1px solid #bbbbbb; + *border: 0; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *margin-left: .3em; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, .btn.active { + background-color: #cccccc \9; +} + +.btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, .btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + *background-color: #d9d9d9; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, .btn:active { + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, .btn[disabled] { + cursor: default; + background-color: #e6e6e6; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 9px 14px; + font-size: 16px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.btn-large [class^="icon-"] { + margin-top: 2px; +} + +.btn-small { + padding: 3px 9px; + font-size: 12px; + line-height: 18px; +} + +.btn-small [class^="icon-"] { + margin-top: 0; +} + +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 17px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0a4e99; + background-image: -moz-linear-gradient(top, #0a6199, #0a3199); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#0a3199)); + background-image: -webkit-linear-gradient(top, #0a6199, #0a3199); + background-image: -o-linear-gradient(top, #0a6199, #0a3199); + background-image: linear-gradient(to bottom, #0a6199, #0a3199); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff0a3199', GradientType=0); + border-color: #0a3199 #0a3199 #051a51; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0a3199; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { + color: #ffffff; + background-color: #0a3199; + *background-color: #082a81; +} + +.btn-primary:active, .btn-primary.active { + background-color: #072269 \9; +} + +.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { + color: #ffffff; + background-color: #0a3199; + *background-color: #082a81; +} + +.btn-primary:active, .btn-primary.active { + background-color: #072269 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #f89406; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} + +.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #bd362f; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} + +.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #51a351; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} + +.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #2f96b4; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} + +.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #222222; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, .btn-inverse.active { + background-color: #080808 \9; +} + +.btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, .btn-inverse.active { + background-color: #080808 \9; +} + +.btn-primaryAlt { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #2869a6; + background-image: -moz-linear-gradient(top, #2a6fb0, #246097); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2a6fb0), to(#246097)); + background-image: -webkit-linear-gradient(top, #2a6fb0, #246097); + background-image: -o-linear-gradient(top, #2a6fb0, #246097); + background-image: linear-gradient(to bottom, #2a6fb0, #246097); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a6fb0', endColorstr='#ff246097', GradientType=0); + border-color: #246097 #246097 #153959; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #246097; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primaryAlt:hover, .btn-primaryAlt:focus, .btn-primaryAlt:active, .btn-primaryAlt.active, .btn-primaryAlt.disabled, .btn-primaryAlt[disabled] { + color: #ffffff; + background-color: #246097; + *background-color: #1f5382; +} + +.btn-primaryAlt:active, .btn-primaryAlt.active { + background-color: #1a466e \9; +} + +.btn-primaryAlt:hover, .btn-primaryAlt:focus, .btn-primaryAlt:active, .btn-primaryAlt.active, .btn-primaryAlt.disabled, .btn-primaryAlt[disabled] { + color: #ffffff; + background-color: #246097; + *background-color: #1f5382; +} + +.btn-primaryAlt:active, .btn-primaryAlt.active { + background-color: #1a466e \9; +} + +button.btn, input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, .btn-link:active, .btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + border-color: transparent; + cursor: pointer; + color: #0a6199; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover { + color: #053351; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + font-size: 0; + vertical-align: middle; + white-space: nowrap; + *margin-left: .3em; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + font-size: 0; + margin-top: 10px; + margin-bottom: 10px; +} + +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + *zoom: 1; +} + +.btn-toolbar .btn + .btn, .btn-toolbar .btn-group + .btn, .btn-toolbar .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, .btn-group > .dropdown-menu { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 11px; +} + +.btn-group > .btn-small { + font-size: 12px; +} + +.btn-group > .btn-large { + font-size: 16px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} + +.btn-group > .btn:last-child, .btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} + +.btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} + +.btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + *padding-top: 5px; + *padding-bottom: 5px; +} + +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; + *padding-top: 2px; + *padding-bottom: 2px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + *padding-top: 7px; + *padding-bottom: 7px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0a3199; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-mini .caret, .btn-small .caret, .btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; +} + +.dropup .btn-large .caret { + border-bottom: 5px solid #000000; + border-top: 0; +} + +.btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + *zoom: 1; +} + +.btn-group-vertical .btn { + display: block; + float: none; + width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical .btn + .btn { + margin-left: 0; + margin-top: -1px; +} + +.btn-group-vertical .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert h5 { + font-size: 20px; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #468847; +} + +.alert-danger, .alert-error { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} + +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, .alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-left: 0; + margin-bottom: 20px; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, .nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, .nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0a6199; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, .nav-pills { + *zoom: 1; +} + +.nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { + display: table; + content: ""; + line-height: 0; +} + +.nav-tabs:after, .nav-pills:after { + clear: both; +} + +.nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { + display: table; + content: ""; + line-height: 0; +} + +.nav-tabs:after, .nav-pills:after { + clear: both; +} + +.nav-tabs > li, .nav-pills > li { + float: left; +} + +.nav-tabs > li > a, .nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, .nav-tabs > .active > a:hover { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, .nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0a6199; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + border-top-color: #0a6199; + border-bottom-color: #0a6199; + margin-top: 6px; +} + +.nav .dropdown-toggle:hover .caret { + border-top-color: #053351; + border-bottom-color: #053351; +} + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, .tabbable:after { + display: table; + content: ""; + line-height: 0; +} + +.tabbable:after { + clear: both; +} + +.tabbable:before, .tabbable:after { + display: table; + content: ""; + line-height: 0; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, .pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, .pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-bottom-color: transparent; + border-top-color: #ddd; +} + +.tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} + +.navbar { + overflow: visible; + margin-bottom: 0; + color: #777777; + *position: relative; + *z-index: 2; +} + +.navbar-inner { + min-height: 75px; + background: #f0f0f0; + *zoom: 1; +} + +.navbar-inner:before, .navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-inner:after { + clear: both; +} + +.navbar-inner:before, .navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; +} + +.navbar .brand { + float: left; + display: block; + padding: 30px 30px 10px 30px; + margin-top: 15px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; + text-indent: -9000px; + background: transparent url("../img/F2_logo.png") top left no-repeat; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 75px; + color: #737373; + font-size: 13px; + letter-spacing: 1px; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover { + color: #333333; +} + +.navbar .divider-vertical { + height: 10px; + margin: 33px 0 0 0; + border-left: 1px solid #a5a5a5; + border-right: 1px solid #a5a5a5; +} + +.navbar .tagline-divider { + float: left; + border-left: 1px solid #B2BBC3; + height: 30px; + margin: 20px 20px 0 20px; +} + +.navbar .btn, .navbar .btn-group { + margin-top: 22.5px; +} + +.navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { + margin-top: 22.5px; +} + +.navbar-form input, .navbar-form select, .navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, .navbar-form .input-prepend { + margin-top: 6px; + white-space: nowrap; +} + +.navbar-form .input-append input, .navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 22.5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + margin-bottom: 0; + padding: 4px 14px; + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + width: 100%; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, .navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { + border-bottom: 1px solid #dcdcdc; +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 27.5px 10px 27.5px; + color: #6c6c6c; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; + font-size: 14px; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > .gitHubLink { + font-size: 16px; + color: #3e6296; +} + +.navbar .nav > li.ghWrapResp { + display: none; + visibility: hidden; + height: 0; + border: 0 none; +} + +.navbar .nav > li > .gitHubLink strong { + font-family: rokkittregular; + font-size: 17px; +} + +.navbar .nav > li > a > .onDecoration { + border-top: 1px solid #999999; + border-bottom: 1px solid #999999; + color: #999999; + font-size: 10px; + font-weight: bold; +} + +.navbar .nav > li > a > .F2VersionIndicator { + position: absolute; + top: 50%; + right: 10px; + font-size: 10px; + padding-top: 3px; + color: #6c6c6c; +} + +.navbar .nav > li > a:focus, .navbar .nav > li > a:hover { + background-color: transparent; + color: #333333; + text-decoration: none; +} + +.navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + font-weight: bold; +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + background: transparent none; + border: 0 none; + box-shadow: none; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 40px; + height: 2px; + background-color: #9da6ac; + border-top: 1px solid #666c70; + border-bottom: 2px solid #fff; +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .icon-triangleDown { + width: 0; + height: 0; + border-left: 6.5px solid transparent; + border-right: 6.5px solid transparent; + border-top: 6.5px solid #9da6ac; +} + +.navbar .icon-triangleRight { + width: 0; + height: 0; + border-top: 6.5px solid transparent; + border-bottom: 6.5px solid transparent; + border-left: 6.5px solid #9da6ac; +} + +.nav-collapse .icon-triangleDown, .icon-triangleRight { + display: none; +} + +.nav.navinset { + width: 0; + height: 0; + display: none; + visibility: hidden; +} + +.navbarmini .navbar-fixed-top .navbar-inner { + min-height: 28px; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); +} + +.navbarmini .navbar-fixed-top .brand { + padding: 4px 10px 9px; + margin-top: 7px; + font-size: 20px; + font-weight: 200; + background-image: url("../img/mini_f2_logo.png"); +} + +.navbarmini .navbar-fixed-top .tagline-divider { + height: 10px; + margin: 9px 12px 0 12px; +} + +.navbarmini .navbar-fixed-top .navbar-text { + line-height: 28px; + font-size: 10px; +} + +.navbarmini .navbar-fixed-top .divider-vertical { + margin-top: 8px; +} + +.navbarmini .navbar-fixed-top .nav > li > a { + padding: 4px 10px 4px; + font-size: 12px; +} + +.navbarmini .navbar-fixed-top .nav > li > .gitHubLink { + font-size: 14px; +} + +.navbarmini .navbar-fixed-top .nav > li > .gitHubLink strong { + font-size: 15px; +} + +.navbarmini .navbar-fixed-top .navbar .nav > li > a > .onDecoration { + font-size: 9px; +} + +.navbarmini .navbar-fixed-top .nav > li > a > .F2VersionIndicator { + position: static; + top: auto; + left: auto; + padding-left: 5px; +} + +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .navbar .navbar-inner .brand { + background-size: 56px 37px; + background-image: url("../img/F2_logoRetina.png"); + } + + .navbarmini .navbar-fixed-top .brand { + background-size: 18px 13px; + background-image: url("../img/mini_f2_logo_2x.png"); + } +} + +.navbar .nav > li > .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} + +.navbar .nav > li > .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + border-bottom: 0; + bottom: -7px; + top: auto; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + border-top: 6px solid #ffffff; + border-bottom: 0; + bottom: -6px; + top: auto; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #e5e5e5; + color: #555555; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} + +.navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { + left: auto; + right: 12px; +} + +.navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { + left: auto; + right: 13px; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse { + color: #999999; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); + border-color: #252525; +} + +.navbar-inverse .brand, .navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover { + color: #ffffff; +} + +.navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { + background-color: transparent; + color: #ffffff; +} + +.navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-left-color: #a5a5a5; + border-right-color: #a5a5a5; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #111111; + color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #040404; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb li { + display: inline-block; + *display: inline; + *zoom: 1; + text-shadow: 0 1px 0 #ffffff; +} + +.breadcrumb .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb .active { + color: #999999; +} + +.pagination { + height: 40px; + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, .pagination ul > li > span { + float: left; + padding: 0 14px; + line-height: 38px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, .pagination ul > .active > a, .pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, .pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover { + color: #999999; + background-color: transparent; + cursor: default; +} + +.pagination ul > li:first-child > a, .pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.pagination ul > li:last-child > a, .pagination ul > li:last-child > span { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pager { + margin: 20px 0; + list-style: none; + text-align: center; + *zoom: 1; +} + +.pager:before, .pager:after { + display: table; + content: ""; + line-height: 0; +} + +.pager:after { + clear: both; +} + +.pager:before, .pager:after { + display: table; + content: ""; + line-height: 0; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager a, .pager span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next a, .pager .next span { + float: right; +} + +.pager .previous a { + float: left; +} + +.pager .disabled a, .pager .disabled a:hover, .pager .disabled span { + color: #999999; + background-color: #fff; + cursor: default; +} + +.modal-open .modal .dropdown-menu { + z-index: 2050; +} + +.modal-open .modal .dropdown.open { + *z-index: 2050; +} + +.modal-open .modal .popover { + z-index: 2060; +} + +.modal-open .modal .tooltip { + z-index: 2080; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, .modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + overflow: auto; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} + +.modal.fade.in { + top: 50%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + overflow-y: auto; + max-height: 400px; + padding: 15px; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} + +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; + line-height: 0; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; + line-height: 0; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -3px; +} + +.tooltip.right { + margin-left: 3px; +} + +.tooltip.bottom { + margin-top: 3px; +} + +.tooltip.left { + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + background-color: #ffffff; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} + +.popover.top { + margin-bottom: 10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-right: 10px; +} + +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover-content p, .popover-content ul, .popover-content ol { + margin-bottom: 0; +} + +.popover .arrow, .popover .arrow:after { + position: absolute; + display: inline-block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow:after { + content: ""; + z-index: -1; +} + +.popover.top .arrow { + bottom: -10px; + left: 50%; + margin-left: -10px; + border-width: 10px 10px 0; + border-top-color: #ffffff; +} + +.popover.top .arrow:after { + border-width: 11px 11px 0; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -1px; + left: -11px; +} + +.popover.right .arrow { + top: 50%; + left: -10px; + margin-top: -10px; + border-width: 10px 10px 10px 0; + border-right-color: #ffffff; +} + +.popover.right .arrow:after { + border-width: 11px 11px 11px 0; + border-right-color: rgba(0, 0, 0, 0.25); + bottom: -11px; + left: -1px; +} + +.popover.bottom .arrow { + top: -10px; + left: 50%; + margin-left: -10px; + border-width: 0 10px 10px; + border-bottom-color: #ffffff; +} + +.popover.bottom .arrow:after { + border-width: 0 11px 11px; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -1px; + left: -11px; +} + +.popover.left .arrow { + top: 50%; + right: -10px; + margin-top: -10px; + border-width: 10px 0 10px 10px; + border-left-color: #ffffff; +} + +.popover.left .arrow:after { + border-width: 11px 0 11px 11px; + border-left-color: rgba(0, 0, 0, 0.25); + bottom: -11px; + right: -1px; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; + line-height: 0; +} + +.thumbnails:after { + clear: both; +} + +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; + line-height: 0; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { + border-color: #0a6199; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.label, .badge { + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, .badge-important { + background-color: #b94a48; +} + +.label-important[href], .badge-important[href] { + background-color: #953b39; +} + +.label-warning, .badge-warning { + background-color: #f89406; +} + +.label-warning[href], .badge-warning[href] { + background-color: #c67605; +} + +.label-success, .badge-success { + background-color: #468847; +} + +.label-success[href], .badge-success[href] { + background-color: #356635; +} + +.label-info, .badge-info { + background-color: #3a87ad; +} + +.label-info[href], .badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, .badge-inverse { + background-color: #333333; +} + +.label-inverse[href], .badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, .btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, .btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, .progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, .progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, .progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, .progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, .progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, .progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, .progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, .progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} + +.carousel .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel .item > img { + display: block; + line-height: 1; +} + +.carousel .active, .carousel .next, .carousel .prev { + display: block; +} + +.carousel .active { + left: 0; +} + +.carousel .next, .carousel .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel .next { + left: 100%; +} + +.carousel .prev { + left: -100%; +} + +.carousel .next.left, .carousel .prev.right { + left: 0; +} + +.carousel .active.left { + left: -100%; +} + +.carousel .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + left: auto; + right: 15px; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, .carousel-caption p { + color: #ffffff; + line-height: 20px; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + color: inherit; + letter-spacing: -1px; +} + +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, .clearfix:after { + display: table; + content: ""; + line-height: 0; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + + .visible-desktop { + display: none !important; + } + + .visible-tablet { + display: inherit !important; + } + + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + + .visible-desktop { + display: none !important; + } + + .visible-phone { + display: inherit !important; + } + + .hidden-phone { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 1170px; + } + + .span12 { + width: 1170px; + } + + .span11 { + width: 1070px; + } + + .span10 { + width: 970px; + } + + .span9 { + width: 870px; + } + + .span8 { + width: 770px; + } + + .span7 { + width: 670px; + } + + .span6 { + width: 570px; + } + + .span5 { + width: 470px; + } + + .span4 { + width: 370px; + } + + .span3 { + width: 270px; + } + + .span2 { + width: 170px; + } + + .span1 { + width: 70px; + } + + .offset12 { + margin-left: 1230px; + } + + .offset11 { + margin-left: 1130px; + } + + .offset10 { + margin-left: 1030px; + } + + .offset9 { + margin-left: 930px; + } + + .offset8 { + margin-left: 830px; + } + + .offset7 { + margin-left: 730px; + } + + .offset6 { + margin-left: 630px; + } + + .offset5 { + margin-left: 530px; + } + + .offset4 { + margin-left: 430px; + } + + .offset3 { + margin-left: 330px; + } + + .offset2 { + margin-left: 230px; + } + + .offset1 { + margin-left: 130px; + } + + .row { + margin-left: -30px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 1170px; + } + + .span12 { + width: 1170px; + } + + .span11 { + width: 1070px; + } + + .span10 { + width: 970px; + } + + .span9 { + width: 870px; + } + + .span8 { + width: 770px; + } + + .span7 { + width: 670px; + } + + .span6 { + width: 570px; + } + + .span5 { + width: 470px; + } + + .span4 { + width: 370px; + } + + .span3 { + width: 270px; + } + + .span2 { + width: 170px; + } + + .span1 { + width: 70px; + } + + .offset12 { + margin-left: 1230px; + } + + .offset11 { + margin-left: 1130px; + } + + .offset10 { + margin-left: 1030px; + } + + .offset9 { + margin-left: 930px; + } + + .offset8 { + margin-left: 830px; + } + + .offset7 { + margin-left: 730px; + } + + .offset6 { + margin-left: 630px; + } + + .offset5 { + margin-left: 530px; + } + + .offset4 { + margin-left: 430px; + } + + .offset3 { + margin-left: 330px; + } + + .offset2 { + margin-left: 230px; + } + + .offset1 { + margin-left: 130px; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1156px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1056px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 956px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 856px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 756px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 656px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 556px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 456px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 356px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 256px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 156px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 56px; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1156px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1056px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 956px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 856px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 756px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 656px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 556px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 456px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 356px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 256px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 156px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 56px; + } + + .thumbnails { + margin-left: -30px; + } + + .thumbnails > li { + margin-left: 30px; + } + + .row-fluid .thumbnails { + margin-left: 0; + } + + .openf2 .mainContainer .description .span6 { + width: 490px; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + font-size: 40px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description .mainBGControl { + margin-top: 7px; + } +} + +@media (min-width: 980px) and (max-width: 1199px) { + .openf2 .mainContainer .slideshow { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer footer .diskIcon { + padding-right: 50px; + } + + .openf2 .mainContainer footer .docIcon { + padding-right: 50px; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 490px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span7 { + width: 670px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span2 { + width: 140px; + padding-left: 5px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + padding: 30px 35px; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 724px; + } + + .span12 { + width: 724px; + } + + .span11 { + width: 662px; + } + + .span10 { + width: 600px; + } + + .span9 { + width: 538px; + } + + .span8 { + width: 476px; + } + + .span7 { + width: 414px; + } + + .span6 { + width: 352px; + } + + .span5 { + width: 290px; + } + + .span4 { + width: 228px; + } + + .span3 { + width: 166px; + } + + .span2 { + width: 104px; + } + + .span1 { + width: 42px; + } + + .offset12 { + margin-left: 764px; + } + + .offset11 { + margin-left: 702px; + } + + .offset10 { + margin-left: 640px; + } + + .offset9 { + margin-left: 578px; + } + + .offset8 { + margin-left: 516px; + } + + .offset7 { + margin-left: 454px; + } + + .offset6 { + margin-left: 392px; + } + + .offset5 { + margin-left: 330px; + } + + .offset4 { + margin-left: 268px; + } + + .offset3 { + margin-left: 206px; + } + + .offset2 { + margin-left: 144px; + } + + .offset1 { + margin-left: 82px; + } + + .row { + margin-left: -20px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 724px; + } + + .span12 { + width: 724px; + } + + .span11 { + width: 662px; + } + + .span10 { + width: 600px; + } + + .span9 { + width: 538px; + } + + .span8 { + width: 476px; + } + + .span7 { + width: 414px; + } + + .span6 { + width: 352px; + } + + .span5 { + width: 290px; + } + + .span4 { + width: 228px; + } + + .span3 { + width: 166px; + } + + .span2 { + width: 104px; + } + + .span1 { + width: 42px; + } + + .offset12 { + margin-left: 764px; + } + + .offset11 { + margin-left: 702px; + } + + .offset10 { + margin-left: 640px; + } + + .offset9 { + margin-left: 578px; + } + + .offset8 { + margin-left: 516px; + } + + .offset7 { + margin-left: 454px; + } + + .offset6 { + margin-left: 392px; + } + + .offset5 { + margin-left: 330px; + } + + .offset4 { + margin-left: 268px; + } + + .offset3 { + margin-left: 206px; + } + + .offset2 { + margin-left: 144px; + } + + .offset1 { + margin-left: 82px; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 710px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 648px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 586px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 524px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 462px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 400px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 338px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 276px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 214px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 152px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 90px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 28px; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 710px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 648px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 586px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 524px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 462px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 400px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 338px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 276px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 214px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 152px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 90px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 28px; + } + + body .mainContainer { + padding-top: 0; + } + + .openf2 .mainContainer .span6 { + width: 490px; + } + + .openf2 .mainContainer .description .slideshow { + opacity: 0.2; + filter: alpha(opacity=20); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + padding-top: 50px; + font-size: 40px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description .mainBGControl { + margin-top: 7px; + } + + .openf2 .mainContainer .overview .bulletPoints { + width: 350px; + } + + .openf2 .mainContainer .overview .span12 p.f2OverviewSummary { + margin-left: 130px; + } + + .openf2 .mainContainer footer .span6 { + float: none; + margin: auto; + } + + .openf2 .mainContainer footer .span6 + .span6 { + padding-left: 20px; + } + + .openf2 .mainContainer footer .span6 a.pull-right { + float: none; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 100%; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span7 { + width: 630px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span2 { + width: 140px; + padding-left: 5px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 40px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + padding: 30px 35px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 50px; + } +} + +@media (max-width: 767px) { + body { + padding-left: 20px; + padding-right: 20px; + } + + body.openf2 { + padding-left: 0; + padding-right: 0; + } + + .openf2 .mainContainer .description { + padding: 0 20px; + } + + .openf2 .mainContainer .description .slideshow { + opacity: 0.2; + filter: alpha(opacity=20); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer .description .mainBGControl { + display: none; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + font-size: 40px; + padding-top: 50px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .overview .container { + padding: 10px; + } + + .openf2 .mainContainer .overview .container .f2OverviewSummary { + margin-left: 10px; + } + + .openf2 .mainContainer footer .row .span6 { + padding: 0; + width: 400px; + margin: 20px auto; + } + + .openf2 .mainContainer footer .row .span6 h1 { + font-size: 20px; + } + + .openf2 .mainContainer footer .row .span6 h2 { + font-size: 18px; + } + + .openf2 .mainContainer footer .row .span6 a.pull-right { + float: none; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 400px; + margin: auto; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + width: 100%; + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 10px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 40px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + background-position: left; + } + + .navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top { + margin-left: -20px; + margin-right: -20px; + } + + .container-fluid { + padding: 0; + } + + .dl-horizontal dt { + float: none; + clear: none; + width: auto; + text-align: left; + } + + .dl-horizontal dd { + margin-left: 0; + } + + .container { + width: auto; + } + + .row-fluid { + width: 100%; + } + + .row, .thumbnails { + margin-left: 0; + } + + .thumbnails > li { + float: none; + margin-left: 0; + } + + [class*="span"], .row-fluid [class*="span"] { + float: none; + display: block; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .span12, .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .input-large, .input-xlarge, .input-xxlarge, input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .input-prepend input, .input-append input, .input-prepend input[class*="span"], .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + + .modal { + position: fixed; + top: 20px; + left: 20px; + right: 20px; + width: auto; + margin: 0; + } + + .modal.fade.in { + top: auto; + } +} + +@media (max-width: 480px) { + .lead { + font-size: 18px; + line-height: 23px; + } + + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + + .page-header h1 small { + display: block; + line-height: 20px; + } + + input[type="checkbox"], input[type="radio"] { + border: 1px solid #ccc; + } + + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + + .form-horizontal .controls { + margin-left: 0; + } + + .form-horizontal .control-list { + padding-top: 0; + } + + .form-horizontal .form-actions { + padding-left: 10px; + padding-right: 10px; + } + + .modal { + top: 10px; + left: 10px; + right: 10px; + } + + .modal-header .close { + padding: 10px; + margin: -10px; + } + + .carousel-caption { + position: static; + } +} + +@media (max-width: 480px) { + .icon-bookmark { + display: none; + } + + .openf2 .mainContainer .description { + padding: 0 20px; + } + + .openf2 .mainContainer .description h2:first-child { + font-size: 24px; + padding-top: 30px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description h3 { + font-size: 20px; + } + + .openf2 .mainContainer .description p { + font-size: 14px; + } + + .openf2 .mainContainer .overview .container { + padding: 10px; + } + + .openf2 .mainContainer .overview .container .f2OverviewSummary { + margin-left: 10px; + } + + .openf2 .mainContainer footer .row { + text-align: center; + } + + .openf2 .mainContainer footer .row .pull-left, .openf2 .mainContainer footer .row .pull-right { + float: none; + } + + .openf2 .mainContainer footer .row .span6 { + width: 100%; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 100%; + } + + .openf2 .mainContainer footer h1 { + font-size: 20px; + } + + .openf2 .mainContainer footer h2 { + font-size: 18px; + } + + .openf2 .mainContainer footer .diskIcon, .openf2 .mainContainer footer .docIcon { + display: none; + } + + .openf2 .mainContainer footer .span5 { + margin-top: 0; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + width: 100%; + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 10px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 10px; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + + .navbar-fixed-top, .navbar-fixed-bottom { + position: static; + } + + .navbar-fixed-bottom { + margin-top: 20px; + } + + .openf2Header { + margin-bottom: 20px; + } + + .openf2 .openf2Header { + margin-bottom: 0; + padding-left: 20px; + padding-right: 20px; + } + + .navbar .container { + width: auto; + padding: 0; + } + + .navbar .brand { + margin-left: 20px; + } + + .openf2 .navbar .brand { + margin-left: 0; + } + + .navbarmini .navbar-fixed-top .brand { + padding: 30px 30px 10px 30px; + margin-top: 20px; + background: transparent url("../img/F2_logo.png") top left no-repeat; + } + + .nav-collapse { + clear: both; + } + + .nav-collapse.collapse.in { + background: #d8d8d8; + -webkit-box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + -moz-box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + } + + .nav-collapse .icon-triangleDown { + display: inline-block; + margin-top: 4px; + } + + .nav-collapse .nav.navinset { + width: auto; + height: auto; + display: block; + visibility: visible; + margin: 0; + } + + .nav-collapse .nav { + float: none; + margin: 0 0 5px; + } + + .nav-collapse .nav > li:first-child { + padding-top: 5px; + } + + .nav-collapse .nav > li { + float: none; + border-bottom: 1px solid #cac9c9; + border-top: 1px solid #e2e2e2; + } + + .navbarmini .navbar-fixed-top .nav-collapse .nav > li > a { + margin-bottom: 2px; + padding: 9px 15px; + } + + .nav-collapse .nav > .divider-vertical { + display: none; + } + + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + + .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + } + + .nav-collapse .dropdown-menu a { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + } + + .nav-collapse .nav.navinset > li { + border-bottom-color: #c0bebe; + border-top-color: #adadad; + } + + .nav-collapse .nav.navinset > li:first-child { + padding-top: 0; + } + + .nav-collapse .nav.navinset > li > a { + background-color: #b5b5b5; + margin: 0; + color: #333; + text-shadow: none; + } + + .navbarmini .nav-collapse .nav.navinset > li > a { + margin: 0; + padding-left: 25px; + } + + .nav-collapse .nav.navinset > li > a:hover, .nav-collapse .nav.navinset > li > a.active { + background-color: #00609c; + color: #ffffff; + } + + .nav-collapse .nav > li > a > .F2VersionIndicator { + top: auto; + bottom: 0; + left: 120px; + } + + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + + .nav-collapse .nav > li > a:hover, .nav-collapse .dropdown-menu a:hover { + background-color: #d8d8d8; + } + + .navbar-inverse .nav-collapse .nav > li > a:hover, .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #111111; + } + + .nav-collapse.in .btn-group { + margin-top: 5px; + padding: 0; + } + + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: block; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + + .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { + display: none; + } + + .nav-collapse .dropdown-menu .divider { + display: none; + } + + .nav-collapse .nav > li > .dropdown-menu:before, .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + + .nav-collapse .navbar-form, .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + + .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + + .nav-collapse, .nav-collapse.collapse { + overflow: hidden; + height: 0; + } + + .navbar .btn-navbar { + display: block; + margin-right: 20px; + } + + .openf2 .navbar .btn-navbar { + margin-right: 0; + } + + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } + + .navbar .nav > li.ghWrap { + border: 0 none; + display: none; + } + + .navbar .nav > li.ghWrapResp { + display: block; + visibility: visible; + height: auto; + border: 0 none; + } + + .navbarmini .navbar-fixed-top .navbar-text, .openf2 .navbar-inner .navbar-text { + line-height: 75px; + font-size: 13px; + margin-top: 2px; + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; + } + + .navbarmini .navbar-fixed-top .tagline-divider, .openf2 .navbar-inner .tagline-divider { + height: 38px; + margin: 20px 20px 0 20px; + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; + } +} + +@media (min-width: 979px) and (-webkit-min-device-pixel-ratio: 2) { + .navbarmini .navbar-fixed-top .brand { + background-size: 18px 13px; + background-image: url("../img/mini_f2_logo_2x.png"); + } +} + +@media (max-width: 979px) and (-webkit-min-device-pixel-ratio: 2) { + .navbarmini .navbar-fixed-top .brand { + background-image: url("../img/F2_logoRetina.png"); + background-size: 56px 37px; + } +} + +@media (min-width: 480px) and (max-width: 767px) { + .tagline-divider, .navbar-text { + display: block !important; + } +} + +@media (max-width: 767px) { + .tagline-divider, .navbar-text { + display: none; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-moz-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-o-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-ms-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-moz-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-o-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-ms-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +.navbar-docs { + background: #fff none; + border-bottom: 1px solid #a7a7a7; + -webkit-box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; +} + +.navbar-docs .container { + margin-bottom: 0; +} + +.navbar-docs .container .row { + margin-bottom: 0; +} + +.navbar-docs ul { + margin: 0; + width: 100%; +} + +.navbar-docs li { + height: 38px; + width: 33.33333333333333%; + float: left; + text-align: center; +} + +.navbar-docs a, .navbar-docs a:visited { + height: 38px; + width: 100%; + line-height: 38px; + display: block; + font-size: 19px; + font-family: rokkittregular; + text-transform: uppercase; + letter-spacing: 0.2em; +} + +.navbar-docs a:hover, .navbar-docs a:active, .navbar-docs a.active { + background-color: #f3f3f3; + text-decoration: none; +} + +.navbar-docs .basics { + border-top: 3px solid #005f9c; + color: #005f9c; +} + +.navbar-docs .basics a { + border-left: 1px solid #e2e2e2; + color: #005f9c; +} + +.navbar-docs .dev { + border-top: 3px solid #b1e27e; +} + +.navbar-docs .dev a { + border-left: 1px solid #e2e2e2; + border-right: 1px solid #e2e2e2; + color: #b1e27e; +} + +.navbar-docs .ref { + border-top: 3px solid #fabb5d; +} + +.navbar-docs .ref a { + border-right: 1px solid #e2e2e2; + color: #fabb5d; +} + +@media (min-width: 768px) and (max-width: 979px) { + .navbar-docs { + display: none; + visibility: hidden; + } +} + +@media (max-width: 767px) { + .navbar-docs { + display: none; + visibility: hidden; + } +} + +.navbar-docs-sections { + background-color: #292929; + margin: 0; +} + +.navbar-docs-sections [data-toggle] { + border-bottom: 2px solid #0a6199; + color: #9da6ac; + display: block; + font-weight: bold; + line-height: 32px; + text-align: center; + text-decoration: none; +} + +.navbar-docs-sections [data-toggle] span { + margin-top: 5px; +} + +.navbar-docs-sections { + display: none; + visibility: hidden; +} + +@media (max-width: 979px) { + .navbar-docs-sections { + display: block; + visibility: visible; + } +} + +body { + padding-top: 90px; +} + +.container .row { + margin-bottom: 20px; +} + +.container .span9 { + padding-bottom: 100px; +} + +pre { + font-size: 12px; +} + +pre.prettyprint { + padding: 8px; + background-color: #F7F7F9; + border: 1px solid #E1E1E8; +} + +h1.title { + margin-top: 0; +} + +.level2, .level3 { + padding-top: 87px; +} + +.level3 { + padding-top: 82px; +} + +.level4 { + margin-top: 30px; +} + +section > hr { + margin: 40px 0 0; +} + +#docs section h2, #docs section h3, #docs section h4, #docs section h5, #docs section h6 { + position: relative; +} + +section .docs-anchor { + padding-left: 12px; + margin-left: -30px; + cursor: pointer; + position: absolute; + top: 0; + left: 0; + bottom: 0; + opacity: 0.2; + filter: alpha(opacity=20); + margin-top: 2px; +} + +.nav-list { + margin-top: 9px; + border-top: 3px solid #737373; + padding-left: 15px; + padding-right: 15px; +} + +.nav-list > li { + position: relative; +} + +.nav-list > li > a { + font-family: rokkittregular; + font-size: 19px; +} + +.nav-list > li > ul a { + font-size: 17px; + padding: 4px 0 4px 15px; +} + +.nav-list > li > a:hover { + background: none; + color: #0a6199; +} + +.nav-list .nav-list { + border-top: none; + margin-top: 0; +} + +.nav-list > li > a, .nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: none; +} + +.nav-list > li > a { + padding: 8px 15px; + color: #333; +} + +.nav-list > li > ul a { + color: #737373; +} + +.nav-list > .active > a, .nav-list > .active > a:hover { + color: #0a6199; + text-shadow: none; + background: none; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +#toc { + min-height: 1px; +} + +.nav-list, .nav-list.affix, .nav-list.affix-bottom { + width: 190px; +} + +@media (min-width: 1200px) { + .nav-list, .nav-list.affix, .nav-list.affix-bottom { + width: 240px; + } + + .nav-list > li > ul a { + font-size: 19px; + } + + .nav-list > li > a { + font-size: 20px; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + + #toc { + display: none; + } + + .container .span9 { + width: 724px; + } + + .level2 { + padding-top: 20px; + } + + .level3 { + padding-top: 5px; + } + + .level4 { + margin-top: 20px; + } +} + +@media (max-width: 767px) { + .container .span9 { + width: 100%; + } +} + +.nav-list.affix { + margin-bottom: 70px; +} + +footer small { + font-size: 12px; +} + +footer .pull-right { + text-align: right; +} + +.navbar-docs { + background: #fff none; + border-bottom: 1px solid #a7a7a7; + -webkit-box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.2); + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; +} + +.navbar-docs .container { + margin-bottom: 0; +} + +.navbar-docs .container .row { + margin-bottom: 0; +} + +.navbar-docs ul { + margin: 0; + width: 100%; +} + +.navbar-docs li { + height: 38px; + width: 33.33333333333333%; + float: left; + text-align: center; +} + +.navbar-docs a, .navbar-docs a:visited { + height: 38px; + width: 100%; + line-height: 38px; + display: block; + font-size: 19px; + font-family: rokkittregular; + text-transform: uppercase; + letter-spacing: 0.2em; +} + +.navbar-docs a:hover, .navbar-docs a:active, .navbar-docs a.active { + background-color: #f3f3f3; + text-decoration: none; +} + +.navbar-docs .basics { + border-top: 3px solid #005f9c; + color: #005f9c; +} + +.navbar-docs .basics a { + border-left: 1px solid #e2e2e2; + color: #005f9c; +} + +.navbar-docs .dev { + border-top: 3px solid #b1e27e; +} + +.navbar-docs .dev a { + border-left: 1px solid #e2e2e2; + border-right: 1px solid #e2e2e2; + color: #b1e27e; +} + +.navbar-docs .ref { + border-top: 3px solid #fabb5d; +} + +.navbar-docs .ref a { + border-right: 1px solid #e2e2e2; + color: #fabb5d; +} + +@media (min-width: 768px) and (max-width: 979px) { + .navbar-docs { + display: none; + visibility: hidden; + } +} + +@media (max-width: 767px) { + .navbar-docs { + display: none; + visibility: hidden; + } +} + +.nav-list > li > a { + color: #737373; +} + +.hide-deprecated .deprecated, .hide-inherited .inherited, .hide-private .private, .hide-protected .protected { + display: none; +} + +.dl-horizontal { + margin: 0; +} + +.level2 { + margin-bottom: 35px; + padding-top: 0; +} + +table.table-members td.name { + white-space: nowrap; +} + +ul.params { + display: inline; + list-style-type: none; + margin: 0; + padding: 0; +} + +ul.params li { + display: inline; +} + +ul.commas li:after { + content: ','; +} + +ul.commas li:last-child:after { + content: ''; +} + +.backToTop { + background-color: #eeeeee; + height: 1px; + margin-top: 35px; + position: relative; + text-align: center; +} + +.backToTop a { + background-color: #ffffff; + left: 50%; + margin-left: -45px; + position: absolute; + top: -9px; + width: 90px; + z-index: 1; +} + +.label.static, .label.chainable, .label.async, .label.multiple { + background-color: #999999; +} + +.label.public { + background-color: #468847; +} + +.label.deprecated { + background-color: #f89406; +} + +.label.private { + background-color: #b94a48; +} + +.label.protected { + background-color: #3a87ad; +} + +.label.final { + background-color: #333333; +} + +.label.type { + background-color: #f9f9f9; + border: 1px solid #dddddd; + color: #333333; + font-weight: normal; + text-shadow: none; +} diff --git a/docs/css/F2.css b/docs/css/F2.css index 80bb143d..a1b0ad00 100644 --- a/docs/css/F2.css +++ b/docs/css/F2.css @@ -1,1099 +1,9224 @@ -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} -audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} -audio:not([controls]){display:none;} -html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} -a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -a:hover,a:active{outline:0;} -sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} -sup{top:-0.5em;} -sub{bottom:-0.25em;} -img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} -#map_canvas img{max-width:none;} -button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} -button,input{*overflow:visible;line-height:normal;} -button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} -button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} -input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} -input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} -textarea{overflow:auto;vertical-align:top;} -.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -body{margin:0;font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;font-size:14px;line-height:20px;color:#333333;background-color:#ffffff;} -a{color:#0a6199;text-decoration:none;} -a:hover{color:#053351;text-decoration:underline;} -.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);} -.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -[class*="span"]{float:left;min-height:1px;margin-left:20px;} -.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -.row:before,.row:after{display:table;content:"";line-height:0;} -.row:after{clear:both;} -[class*="span"]{float:left;min-height:1px;margin-left:20px;} -.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} -.row-fluid .span12{width:100%;*width:99.94680851063829%;} -.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} -.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} -.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} -.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} -.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} -.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} -.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} -.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} -.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} -.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} -.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} -.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} -.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} -.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} -.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} -.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} -.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} -.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} -.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} -.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} -.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} -.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} -.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} -.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} -.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} -.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} -.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} -.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} -.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} -.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} -.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} -.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} -.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} -.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} -.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;} -.row-fluid .span12{width:100%;*width:99.94680851063829%;} -.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;} -.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;} -.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;} -.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;} -.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;} -.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;} -.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;} -.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;} -.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;} -.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;} -.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;} -.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;} -.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;} -.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;} -.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;} -.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;} -.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;} -.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;} -.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;} -.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;} -.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;} -.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;} -.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;} -.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;} -.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;} -.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;} -.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;} -.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;} -.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;} -.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;} -.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;} -.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;} -.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;} -.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;} -.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;} -[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;} -[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;} -.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container:before,.container:after{display:table;content:"";line-height:0;} -.container:after{clear:both;} -.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} -.container-fluid:after{clear:both;} -.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;} -.container-fluid:after{clear:both;} -.openf2Header{background-color:#f0f0f0;} -body.openf2{background:transparent url("../img/footerNoise.png") repeat;} -body.f2Developer{background:transparent url("../img/footerNoise.png") repeat;} -body.letterPage{background:transparent url("../img/footerNoise.png") repeat;} -body .mainContainer{background-color:#ffffff;padding:0;margin-top:0;}body .mainContainer .AppRegistrationForm{min-height:300px;padding:20px;background:url("../img/F2TopShadowBorder.png") top no-repeat;} -body .mainContainer .noiseWrap{background:transparent url("../img/footerNoise.png") repeat;} -body .mainContainer .letter{background-color:transparent;background:url("../img/F2TopShadowBorder.png") top no-repeat;padding-bottom:20px;}body .mainContainer .letter .letterWrapper{margin-top:30px;background:url("../img/F2LetterImage.png") center no-repeat;}body .mainContainer .letter .letterWrapper .letterContent{width:875px;height:890px;margin:auto;}body .mainContainer .letter .letterWrapper .letterContent .date{text-align:right;} -body .mainContainer .letter .letterWrapper .letterContent .first{padding-top:80px;} -body .mainContainer .letter .letterWrapper .letterContent .row{padding-left:100px;} -body .mainContainer .letter p{color:#727272;margin-bottom:15px;font-size:14px;text-shadow:0px 1px #ffffff;} -body .mainContainer .letter .signature{background:url("../img/F2Signature.png") center no-repeat;padding:30px 20px;} -body .mainContainer .description{z-index:2;background:url("../img/F2TopShadowBorder.png") top no-repeat;background-color:#ffffff;position:relative;height:665px;}body .mainContainer .description .letterLink{padding-top:10px;} -body .mainContainer .description p{margin-bottom:0;line-height:1.5em;color:#535353;font-weight:200;font-size:17px;} -body .mainContainer .description p.F2Indent{padding-left:10px;font-size:12px;} -body .mainContainer .description p.F2Indent a{color:#535353;} -body .mainContainer .description h2:first-child{margin-top:0;padding-top:50px;font-size:35px;margin-bottom:30px;line-height:1.25em;} -body .mainContainer .description h2,body .mainContainer .description h3{color:#0a6199;margin-bottom:0;line-height:1;} -body .mainContainer .description h3:first-child{margin-top:30px;} -body .mainContainer .description h3 a{color:#0a6199;} -body .mainContainer .description .overview h2,body .mainContainer .description .overview h3{color:#ffffff;} -body .mainContainer .description .mainBGImg{z-index:-1;position:absolute;top:0;left:0;margin:0;list-style:none;width:100%;}body .mainContainer .description .mainBGImg li div.img{height:665px;width:100%;} -body .mainContainer .description .ImgIpad{background:url("../img/F2_iPad.jpg") no-repeat center;} -body .mainContainer .description .ImgIscreens{background:url("../img/F2_iScreens.jpg") no-repeat center;} -body .mainContainer .description .ImgIphone{background:url("../img/F2_iPhone.jpg") no-repeat center;} -body .mainContainer .description .mainBGControl{margin:30px 0 0 0;list-style:none;text-align:center;padding:10px 0;}body .mainContainer .description .mainBGControl li{display:inline-block;} -body .mainContainer .description .mainBGControl li a{background:url("../img/bgControlDot.png") no-repeat center;padding:10px;} -body .mainContainer .description .mainBGControl .selected a{background:url("../img/bgControlDotSelected.png") no-repeat center;} -body .mainContainer .overview{background-color:#ffffff;background-color:#53585b;background-image:-moz-linear-gradient(top, #575d61, #4d5052);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#575d61), to(#4d5052));background-image:-webkit-linear-gradient(top, #575d61, #4d5052);background-image:-o-linear-gradient(top, #575d61, #4d5052);background-image:linear-gradient(to bottom, #575d61, #4d5052);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff575d61', endColorstr='#ff4d5052', GradientType=0);}body .mainContainer .overview h2{text-align:center;margin-bottom:20px;color:#ffffff;} -body .mainContainer .overview .container{background:url("../img/F2TopShadowBorder.png") top no-repeat;} -body .mainContainer .overview .row{padding:50px 0;} -body .mainContainer .overview .F2SunBullet{background:url("../img/F2SunIcon.png") center no-repeat;padding:10px;} -body .mainContainer .overview .bulletPoints ul{list-style:none;}body .mainContainer .overview .bulletPoints ul li{padding-left:22px;background:url("../img/F2SunIcon.png") left top no-repeat;} -body .mainContainer .overview .bulletPoints .span4{margin-left:5px;} -body .mainContainer .overview .f2OverviewSummary{font-style:italic;} -body .mainContainer .overview .interactiveDisplay{background:transparent;}body .mainContainer .overview .interactiveDisplay .carousel-inner{height:430px;} -body .mainContainer .overview .interactiveDisplay .carousel .item{background:url("../img/bankeoSprite.png") no-repeat;height:430px;max-width:570px;} -body .mainContainer .overview .interactiveDisplay .carousel .euro{background-position:-55px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .sp500{background-position:-685px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .ft{background-position:-1325px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .research{background-position:-1965px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .stockPicks{background-position:-2615px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .reuters{background-position:-3255px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .video{background-position:-3895px -34px;} -body .mainContainer .overview .interactiveDisplay .carousel .search{background-position:-4555px -34px;} -body .mainContainer .overview .photoControl{list-style:none;text-align:center;padding:10px 0;}body .mainContainer .overview .photoControl li{display:inline-block;cursor:pointer;} -body .mainContainer .overview .photoControl li a{background:url("../img/dot.png") no-repeat center;padding:13px;} -body .mainContainer .overview .photoControl .selected a{background:url("../img/dotSelected.png") no-repeat center;} -body .mainContainer .overview .captions{list-style:none;text-align:center;padding:10px 0;}body .mainContainer .overview .captions li{display:none;} -body .mainContainer .overview .captions li.selected{display:inline-block;} -body .mainContainer .overview p{color:#ffffff;margin-bottom:20px;font-size:14px;} -body .mainContainer .exampleContent{padding-top:40px;}body .mainContainer .exampleContent #exampleAppContainer a{color:#417777;} -body .mainContainer .exampleContent #exampleAppContainer footer{background:transparent;} -body .mainContainer .exampleCaptions p{padding:0 0 40px 0;color:#6c6c6c;background:url("../img/smallShadowDivider.png") bottom no-repeat;} -body .mainContainer .exampleControls{position:relative;margin:0;padding:20px 0;text-align:center;}body .mainContainer .exampleControls .arrow{height:25px;width:13px;cursor:pointer;position:absolute;top:15px;} -body .mainContainer .exampleControls .leftArrow{background:url("../img/LeftArrow.png") center no-repeat;left:0;} -body .mainContainer .exampleControls .rightArrow{background:url("../img/RightArrow.png") center no-repeat;right:0;} -body .mainContainer .exampleControls ul{margin:0;list-style:none;}body .mainContainer .exampleControls ul li{display:inline-block;} -body .mainContainer .exampleControls ul li a{background:url("../img/bgControlDot.png") no-repeat center;padding:10px;} -body .mainContainer .exampleControls ul .selected a{background:url("../img/bgControlDotSelected.png") no-repeat center;} -body .mainContainer footer{background:url("../img/footerNoise.png") repeat;color:#bfc7ce;}body .mainContainer footer .container{background:url("../img/bottomBorderFade.png") top no-repeat;} -body .mainContainer footer h1,body .mainContainer footer h2,body .mainContainer footer h3,body .mainContainer footer h4,body .mainContainer footer h5,body .mainContainer footer h6{font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;} -body .mainContainer footer h5{line-height:10px;font-size:12px;} -body .mainContainer footer .diskIcon{background:url("../img/diskIcon.png") no-repeat center;padding:50px 75px;} -body .mainContainer footer .docIcon{background:url("../img/docIcon.png") no-repeat center;padding:50px 75px;} -body .mainContainer footer .span6{padding:15px 0;margin-top:20px;} -body .mainContainer footer .pull-left h2{line-height:20px;} -body .mainContainer footer a{text-decoration:none;color:#bfc7ce;} -body .mainContainer footer a.releaseNotes{text-decoration:underline;} -body .mainContainer footer .version{padding:0 10px;font-size:46px;} -body .mainContainer footer .socialWrap{background:url("../img/bottomBorderFade.png") bottom no-repeat;padding-bottom:40px;} -body .mainContainer footer .social{padding:20px 0 10px 0;} -body .mainContainer footer .span12{text-align:center;color:#3b4044;margin-bottom:10px;} -.footerLogoDark{background:url("../img/F2FooterLogoDark.png") center no-repeat;height:24px;} -.footerLogoLight{background:url("../img/F2FooterLogoLight.png") center no-repeat;height:23px;} -.examplePage{background:url("../img/F2TopShadowBorder.png") top no-repeat;background-color:#ffffff;padding-bottom:50px;} -.F2DottedLine{width:100%;border-bottom:1px dotted #ffffff;} -@font-face{font-family:'rokkittregular';src:url('rokkitt-webfont.eot');src:local('☺'), url('rokkitt-webfont.woff') format('woff'),url('rokkitt-webfont.ttf') format('truetype'),url('rokkitt-webfont.svg#rokkittregular') format('svg');font-weight:normal;font-style:normal;}p{margin:0 0 10px;font-size:14px;} -.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px;} -small{font-size:85%;} -strong{font-weight:bold;} -em{font-style:italic;} -cite{font-style:normal;} -.muted{color:#999999;} -.text-warning{color:#c09853;} -.text-error{color:#b94a48;} -.text-info{color:#3a87ad;} -.text-success{color:#468847;} -h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:rokkittregular;font-weight:normal;line-height:1;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;} -h1{font-size:36px;line-height:40px;} -h2{font-size:30px;line-height:30px;} -h3{font-size:24px;line-height:40px;} -h4{font-size:20px;line-height:20px;} -h5{font-size:16px;line-height:20px;} -h6{font-size:14px;line-height:20px;} -h1 small{font-size:24px;} -h2 small{font-size:18px;} -h3 small{font-size:14px;} -h4 small{font-size:14px;} -.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;} -ul,ol{padding:0;margin:0 0 10px 25px;} -ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} -li{line-height:20px;} -ul.unstyled,ol.unstyled{margin-left:0;list-style:none;} -dl{margin-bottom:20px;} -dt,dd{line-height:20px;} -dt{font-weight:bold;} -dd{margin-left:10px;} -.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} -.dl-horizontal:after{clear:both;} -.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;} -.dl-horizontal:after{clear:both;} -.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} -.dl-horizontal dd{margin-left:180px;} -hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;} -abbr[title]{cursor:help;border-bottom:1px dotted #999999;} -abbr.initialism{font-size:90%;text-transform:uppercase;} -blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px;} -blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} -blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} -blockquote.pull-right small:before{content:'';} -blockquote.pull-right small:after{content:'\00A0 \2014';} -q:before,q:after,blockquote:before,blockquote:after{content:"";} -address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;} -code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;} -pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;} -pre code{padding:0;color:inherit;background-color:transparent;border:0;} -.pre-scrollable{max-height:340px;overflow-y:scroll;} -a code{border-color:#e1e1e8 !important;} -form{margin:0 0 20px;} -fieldset{padding:0;margin:0;border:0;} -legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;} -label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px;} -input,button,select,textarea{font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;} -label{display:block;margin-bottom:5px;} -select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:9px;font-size:14px;line-height:20px;color:#555555;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -input,textarea,.uneditable-input{width:206px;} -textarea{height:auto;} -textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);} -input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;cursor:pointer;} -input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;} -select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;} -select{width:220px;border:1px solid #cccccc;background-color:#ffffff;} -select[multiple],select[size]{height:auto;} -select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} -.uneditable-input{overflow:hidden;white-space:nowrap;} -.uneditable-textarea{width:auto;height:auto;} -input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} -input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} -input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} -input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;} -input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;} -input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;} -.radio,.checkbox{min-height:18px;padding-left:18px;} -.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;} -.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} -.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;} -.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} -.input-mini{width:60px;} -.input-small{width:90px;} -.input-medium{width:150px;} -.input-large{width:210px;} -.input-xlarge{width:270px;} -.input-xxlarge{width:530px;} -input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;} -.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;} -input,textarea,.uneditable-input{margin-left:0;} -.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} -input.span12,textarea.span12,.uneditable-input.span12{width:926px;} -input.span11,textarea.span11,.uneditable-input.span11{width:846px;} -input.span10,textarea.span10,.uneditable-input.span10{width:766px;} -input.span9,textarea.span9,.uneditable-input.span9{width:686px;} -input.span8,textarea.span8,.uneditable-input.span8{width:606px;} -input.span7,textarea.span7,.uneditable-input.span7{width:526px;} -input.span6,textarea.span6,.uneditable-input.span6{width:446px;} -input.span5,textarea.span5,.uneditable-input.span5{width:366px;} -input.span4,textarea.span4,.uneditable-input.span4{width:286px;} -input.span3,textarea.span3,.uneditable-input.span3{width:206px;} -input.span2,textarea.span2,.uneditable-input.span2{width:126px;} -input.span1,textarea.span1,.uneditable-input.span1{width:46px;} -input,textarea,.uneditable-input{margin-left:0;} -.controls-row [class*="span"]+[class*="span"]{margin-left:20px;} -input.span12,textarea.span12,.uneditable-input.span12{width:926px;} -input.span11,textarea.span11,.uneditable-input.span11{width:846px;} -input.span10,textarea.span10,.uneditable-input.span10{width:766px;} -input.span9,textarea.span9,.uneditable-input.span9{width:686px;} -input.span8,textarea.span8,.uneditable-input.span8{width:606px;} -input.span7,textarea.span7,.uneditable-input.span7{width:526px;} -input.span6,textarea.span6,.uneditable-input.span6{width:446px;} -input.span5,textarea.span5,.uneditable-input.span5{width:366px;} -input.span4,textarea.span4,.uneditable-input.span4{width:286px;} -input.span3,textarea.span3,.uneditable-input.span3{width:206px;} -input.span2,textarea.span2,.uneditable-input.span2{width:126px;} -input.span1,textarea.span1,.uneditable-input.span1{width:46px;} -.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} -.controls-row:after{clear:both;} -.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;} -.controls-row:after{clear:both;} -.controls-row [class*="span"]{float:left;} -input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;} -input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;} -.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} -.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} -.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;} -.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} -.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} -.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;} -.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;} -.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} -.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} -.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} -.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;} -.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} -.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} -.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;} -.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;} -.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} -.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} -.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} -.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;} -.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} -.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} -.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;} -.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;} -.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} -.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} -.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} -.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;} -.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} -.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;} -.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;} -.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;} -.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;} -input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} -.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} -.form-actions:after{clear:both;} -.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;} -.form-actions:after{clear:both;} -.help-block,.help-inline{color:#595959;} -.help-block{display:block;margin-bottom:10px;} -.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;} -.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;font-size:14px;vertical-align:top;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;} -.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;} -.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;} -.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;} -.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-append .add-on,.input-append .btn{margin-left:-1px;} -.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} -.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} -.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;} -.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;} -.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;} -.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;} -.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;} -.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;} -.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;} -.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;} -.control-group{margin-bottom:10px;} -legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;} -.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} -.form-horizontal .control-group:after{clear:both;} -.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;} -.form-horizontal .control-group:after{clear:both;} -.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;} -.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;} -.form-horizontal .help-block{margin-bottom:0;} -.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block{margin-top:10px;} -.form-horizontal .form-actions{padding-left:180px;} -table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} -.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} -.table th{font-weight:bold;} -.table thead th{vertical-align:bottom;} -.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} -.table tbody+tbody{border-top:2px solid #dddddd;} -.table-condensed th,.table-condensed td{padding:4px 5px;} -.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;} -.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} -.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;} -.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px;} -.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child,.table-bordered tfoot:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;} -.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child,.table-bordered tfoot:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;} -.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;} -.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topleft:4px;} -.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} -.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5;} -table [class*=span],.row-fluid table [class*=span]{display:table-cell;float:none;margin-left:0;} -.table .span1{float:none;width:44px;margin-left:0;} -.table .span2{float:none;width:124px;margin-left:0;} -.table .span3{float:none;width:204px;margin-left:0;} -.table .span4{float:none;width:284px;margin-left:0;} -.table .span5{float:none;width:364px;margin-left:0;} -.table .span6{float:none;width:444px;margin-left:0;} -.table .span7{float:none;width:524px;margin-left:0;} -.table .span8{float:none;width:604px;margin-left:0;} -.table .span9{float:none;width:684px;margin-left:0;} -.table .span10{float:none;width:764px;margin-left:0;} -.table .span11{float:none;width:844px;margin-left:0;} -.table .span12{float:none;width:924px;margin-left:0;} -.table .span13{float:none;width:1004px;margin-left:0;} -.table .span14{float:none;width:1084px;margin-left:0;} -.table .span15{float:none;width:1164px;margin-left:0;} -.table .span16{float:none;width:1244px;margin-left:0;} -.table .span17{float:none;width:1324px;margin-left:0;} -.table .span18{float:none;width:1404px;margin-left:0;} -.table .span19{float:none;width:1484px;margin-left:0;} -.table .span20{float:none;width:1564px;margin-left:0;} -.table .span21{float:none;width:1644px;margin-left:0;} -.table .span22{float:none;width:1724px;margin-left:0;} -.table .span23{float:none;width:1804px;margin-left:0;} -.table .span24{float:none;width:1884px;margin-left:0;} -.table tbody tr.success td{background-color:#dff0d8;} -.table tbody tr.error td{background-color:#f2dede;} -.table tbody tr.warning td{background-color:#fcf8e3;} -.table tbody tr.info td{background-color:#d9edf7;} -.table-hover tbody tr.success:hover td{background-color:#d0e9c6;} -.table-hover tbody tr.error:hover td{background-color:#ebcccc;} -.table-hover tbody tr.warning:hover td{background-color:#faf2cc;} -.table-hover tbody tr.info:hover td{background-color:#c4e3f3;} -[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;} -.icon-white,.nav-tabs>.active>a>[class^="icon-"],.nav-tabs>.active>a>[class*=" icon-"],.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");} -.icon-glass{background-position:0 0;} -.icon-music{background-position:-24px 0;} -.icon-search{background-position:-48px 0;} -.icon-envelope{background-position:-72px 0;} -.icon-heart{background-position:-96px 0;} -.icon-star{background-position:-120px 0;} -.icon-star-empty{background-position:-144px 0;} -.icon-user{background-position:-168px 0;} -.icon-film{background-position:-192px 0;} -.icon-th-large{background-position:-216px 0;} -.icon-th{background-position:-240px 0;} -.icon-th-list{background-position:-264px 0;} -.icon-ok{background-position:-288px 0;} -.icon-remove{background-position:-312px 0;} -.icon-zoom-in{background-position:-336px 0;} -.icon-zoom-out{background-position:-360px 0;} -.icon-off{background-position:-384px 0;} -.icon-signal{background-position:-408px 0;} -.icon-cog{background-position:-432px 0;} -.icon-trash{background-position:-456px 0;} -.icon-home{background-position:0 -24px;} -.icon-file{background-position:-24px -24px;} -.icon-time{background-position:-48px -24px;} -.icon-road{background-position:-72px -24px;} -.icon-download-alt{background-position:-96px -24px;} -.icon-download{background-position:-120px -24px;} -.icon-upload{background-position:-144px -24px;} -.icon-inbox{background-position:-168px -24px;} -.icon-play-circle{background-position:-192px -24px;} -.icon-repeat{background-position:-216px -24px;} -.icon-refresh{background-position:-240px -24px;} -.icon-list-alt{background-position:-264px -24px;} -.icon-lock{background-position:-287px -24px;} -.icon-flag{background-position:-312px -24px;} -.icon-headphones{background-position:-336px -24px;} -.icon-volume-off{background-position:-360px -24px;} -.icon-volume-down{background-position:-384px -24px;} -.icon-volume-up{background-position:-408px -24px;} -.icon-qrcode{background-position:-432px -24px;} -.icon-barcode{background-position:-456px -24px;} -.icon-tag{background-position:0 -48px;} -.icon-tags{background-position:-25px -48px;} -.icon-book{background-position:-48px -48px;} -.icon-bookmark{background-position:-72px -48px;} -.icon-print{background-position:-96px -48px;} -.icon-camera{background-position:-120px -48px;} -.icon-font{background-position:-144px -48px;} -.icon-bold{background-position:-167px -48px;} -.icon-italic{background-position:-192px -48px;} -.icon-text-height{background-position:-216px -48px;} -.icon-text-width{background-position:-240px -48px;} -.icon-align-left{background-position:-264px -48px;} -.icon-align-center{background-position:-288px -48px;} -.icon-align-right{background-position:-312px -48px;} -.icon-align-justify{background-position:-336px -48px;} -.icon-list{background-position:-360px -48px;} -.icon-indent-left{background-position:-384px -48px;} -.icon-indent-right{background-position:-408px -48px;} -.icon-facetime-video{background-position:-432px -48px;} -.icon-picture{background-position:-456px -48px;} -.icon-pencil{background-position:0 -72px;} -.icon-map-marker{background-position:-24px -72px;} -.icon-adjust{background-position:-48px -72px;} -.icon-tint{background-position:-72px -72px;} -.icon-edit{background-position:-96px -72px;} -.icon-share{background-position:-120px -72px;} -.icon-check{background-position:-144px -72px;} -.icon-move{background-position:-168px -72px;} -.icon-step-backward{background-position:-192px -72px;} -.icon-fast-backward{background-position:-216px -72px;} -.icon-backward{background-position:-240px -72px;} -.icon-play{background-position:-264px -72px;} -.icon-pause{background-position:-288px -72px;} -.icon-stop{background-position:-312px -72px;} -.icon-forward{background-position:-336px -72px;} -.icon-fast-forward{background-position:-360px -72px;} -.icon-step-forward{background-position:-384px -72px;} -.icon-eject{background-position:-408px -72px;} -.icon-chevron-left{background-position:-432px -72px;} -.icon-chevron-right{background-position:-456px -72px;} -.icon-plus-sign{background-position:0 -96px;} -.icon-minus-sign{background-position:-24px -96px;} -.icon-remove-sign{background-position:-48px -96px;} -.icon-ok-sign{background-position:-72px -96px;} -.icon-question-sign{background-position:-96px -96px;} -.icon-info-sign{background-position:-120px -96px;} -.icon-screenshot{background-position:-144px -96px;} -.icon-remove-circle{background-position:-168px -96px;} -.icon-ok-circle{background-position:-192px -96px;} -.icon-ban-circle{background-position:-216px -96px;} -.icon-arrow-left{background-position:-240px -96px;} -.icon-arrow-right{background-position:-264px -96px;} -.icon-arrow-up{background-position:-289px -96px;} -.icon-arrow-down{background-position:-312px -96px;} -.icon-share-alt{background-position:-336px -96px;} -.icon-resize-full{background-position:-360px -96px;} -.icon-resize-small{background-position:-384px -96px;} -.icon-plus{background-position:-408px -96px;} -.icon-minus{background-position:-433px -96px;} -.icon-asterisk{background-position:-456px -96px;} -.icon-exclamation-sign{background-position:0 -120px;} -.icon-gift{background-position:-24px -120px;} -.icon-leaf{background-position:-48px -120px;} -.icon-fire{background-position:-72px -120px;} -.icon-eye-open{background-position:-96px -120px;} -.icon-eye-close{background-position:-120px -120px;} -.icon-warning-sign{background-position:-144px -120px;} -.icon-plane{background-position:-168px -120px;} -.icon-calendar{background-position:-192px -120px;} -.icon-random{background-position:-216px -120px;width:16px;} -.icon-comment{background-position:-240px -120px;} -.icon-magnet{background-position:-264px -120px;} -.icon-chevron-up{background-position:-288px -120px;} -.icon-chevron-down{background-position:-313px -119px;} -.icon-retweet{background-position:-336px -120px;} -.icon-shopping-cart{background-position:-360px -120px;} -.icon-folder-close{background-position:-384px -120px;} -.icon-folder-open{background-position:-408px -120px;width:16px;} -.icon-resize-vertical{background-position:-432px -119px;} -.icon-resize-horizontal{background-position:-456px -118px;} -.icon-hdd{background-position:0 -144px;} -.icon-bullhorn{background-position:-24px -144px;} -.icon-bell{background-position:-48px -144px;} -.icon-certificate{background-position:-72px -144px;} -.icon-thumbs-up{background-position:-96px -144px;} -.icon-thumbs-down{background-position:-120px -144px;} -.icon-hand-right{background-position:-144px -144px;} -.icon-hand-left{background-position:-168px -144px;} -.icon-hand-up{background-position:-192px -144px;} -.icon-hand-down{background-position:-216px -144px;} -.icon-circle-arrow-right{background-position:-240px -144px;} -.icon-circle-arrow-left{background-position:-264px -144px;} -.icon-circle-arrow-up{background-position:-288px -144px;} -.icon-circle-arrow-down{background-position:-312px -144px;} -.icon-globe{background-position:-336px -144px;} -.icon-wrench{background-position:-360px -144px;} -.icon-tasks{background-position:-384px -144px;} -.icon-filter{background-position:-408px -144px;} -.icon-briefcase{background-position:-432px -144px;} -.icon-fullscreen{background-position:-456px -144px;} -.dropup,.dropdown{position:relative;} -.dropdown-toggle{*margin-bottom:-3px;} -.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} -.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";} -.dropdown .caret{margin-top:8px;margin-left:2px;} -.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;} -.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -.dropdown-menu a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;} -.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{text-decoration:none;color:#ffffff;background-color:#0a6199;background-color:#095b8f;background-image:-moz-linear-gradient(top, #0a6199, #085281);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281));background-image:-webkit-linear-gradient(top, #0a6199, #085281);background-image:-o-linear-gradient(top, #0a6199, #085281);background-image:linear-gradient(to bottom, #0a6199, #085281);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0);} -.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;outline:0;background-color:#0a6199;background-color:#095b8f;background-image:-moz-linear-gradient(top, #0a6199, #085281);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281));background-image:-webkit-linear-gradient(top, #0a6199, #085281);background-image:-o-linear-gradient(top, #0a6199, #085281);background-image:linear-gradient(to bottom, #0a6199, #085281);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0);} -.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999999;} -.dropdown-menu .disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;} -.open{*z-index:1000;}.open>.dropdown-menu{display:block;} -.pull-right>.dropdown-menu{right:0;left:auto;} -.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";} -.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;} -.dropdown-submenu{position:relative;} -.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} -.dropdown-submenu:hover>.dropdown-menu{display:block;} -.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;} -.dropdown-submenu:hover>a:after{border-left-color:#ffffff;} -.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;} -.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} -.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;} -.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;} -.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);} -button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} -.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 14px;margin-bottom:0;font-size:14px;line-height:20px;*line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} -.btn:active,.btn.active{background-color:#cccccc \9;} -.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} -.btn:active,.btn.active{background-color:#cccccc \9;} -.btn:first-child{*margin-left:0;} -.btn:first-child{*margin-left:0;} -.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} -.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);} -.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn-large{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} -.btn-large [class^="icon-"]{margin-top:2px;} -.btn-small{padding:3px 9px;font-size:12px;line-height:18px;} -.btn-small [class^="icon-"]{margin-top:0;} -.btn-mini{padding:2px 6px;font-size:11px;line-height:17px;} -.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -.btn-block+.btn-block{margin-top:5px;} -input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;} -.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);} -.btn{border-color:#c5c5c5;border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);} -.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0a4e99;background-image:-moz-linear-gradient(top, #0a6199, #0a3199);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#0a3199));background-image:-webkit-linear-gradient(top, #0a6199, #0a3199);background-image:-o-linear-gradient(top, #0a6199, #0a3199);background-image:linear-gradient(to bottom, #0a6199, #0a3199);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff0a3199', GradientType=0);border-color:#0a3199 #0a3199 #051a51;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0a3199;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0a3199;*background-color:#082a81;} -.btn-primary:active,.btn-primary.active{background-color:#072269 \9;} -.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0a3199;*background-color:#082a81;} -.btn-primary:active,.btn-primary.active{background-color:#072269 \9;} -.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} -.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} -.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;} -.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} -.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} -.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} -.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;} -.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} -.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} -.btn-success:active,.btn-success.active{background-color:#408140 \9;} -.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;} -.btn-success:active,.btn-success.active{background-color:#408140 \9;} -.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} -.btn-info:active,.btn-info.active{background-color:#24748c \9;} -.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;} -.btn-info:active,.btn-info.active{background-color:#24748c \9;} -.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} -.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} -.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;} -.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;} -.btn-primaryAlt{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#2869a6;background-image:-moz-linear-gradient(top, #2a6fb0, #246097);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#2a6fb0), to(#246097));background-image:-webkit-linear-gradient(top, #2a6fb0, #246097);background-image:-o-linear-gradient(top, #2a6fb0, #246097);background-image:linear-gradient(to bottom, #2a6fb0, #246097);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a6fb0', endColorstr='#ff246097', GradientType=0);border-color:#246097 #246097 #153959;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#246097;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primaryAlt:hover,.btn-primaryAlt:focus,.btn-primaryAlt:active,.btn-primaryAlt.active,.btn-primaryAlt.disabled,.btn-primaryAlt[disabled]{color:#ffffff;background-color:#246097;*background-color:#1f5382;} -.btn-primaryAlt:active,.btn-primaryAlt.active{background-color:#1a466e \9;} -.btn-primaryAlt:hover,.btn-primaryAlt:focus,.btn-primaryAlt:active,.btn-primaryAlt.active,.btn-primaryAlt.disabled,.btn-primaryAlt[disabled]{color:#ffffff;background-color:#246097;*background-color:#1f5382;} -.btn-primaryAlt:active,.btn-primaryAlt.active{background-color:#1a466e \9;} -button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} -button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;} -button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;} -button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;} -.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn-link{border-color:transparent;cursor:pointer;color:#0a6199;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-link:hover{color:#053351;text-decoration:underline;background-color:transparent;} -.btn-link[disabled]:hover{color:#333333;text-decoration:none;} -.btn-group{position:relative;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;} -.btn-group:first-child{*margin-left:0;} -.btn-group+.btn-group{margin-left:5px;} -.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;} -.btn-toolbar .btn+.btn,.btn-toolbar .btn-group+.btn,.btn-toolbar .btn+.btn-group{margin-left:5px;} -.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-group>.btn+.btn{margin-left:-1px;} -.btn-group>.btn,.btn-group>.dropdown-menu{font-size:14px;} -.btn-group>.btn-mini{font-size:11px;} -.btn-group>.btn-small{font-size:12px;} -.btn-group>.btn-large{font-size:16px;} -.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} -.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} -.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} -.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;} -.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} -.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:5px;*padding-bottom:5px;} -.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;} -.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;} -.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;} -.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);} -.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;} -.btn-group.open .btn-primary.dropdown-toggle{background-color:#0a3199;} -.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;} -.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;} -.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;} -.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;} -.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;} -.btn .caret{margin-top:8px;margin-left:0;} -.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px;} -.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;} -.dropup .btn-large .caret{border-bottom:5px solid #000000;border-top:0;} -.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;} -.btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.btn-group-vertical .btn+.btn{margin-left:0;margin-top:-1px;} -.btn-group-vertical .btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} -.btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} -.btn-group-vertical .btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;} -.btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} -.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853;} -.alert h4{margin:0;} -.alert h5{font-size:20px;} -.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;} -.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;} -.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;} -.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;} -.alert-block{padding-top:14px;padding-bottom:14px;} -.alert-block>p,.alert-block>ul{margin-bottom:0;} -.alert-block p+p{margin-top:5px;} -.nav{margin-left:0;margin-bottom:20px;list-style:none;} -.nav>li>a{display:block;} -.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;} -.nav>.pull-right{float:right;} -.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;} -.nav li+.nav-header{margin-top:9px;} -.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;} -.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} -.nav-list>li>a{padding:3px 15px;} -.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0a6199;} -.nav-list [class^="icon-"]{margin-right:2px;} -.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;} -.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} -.nav-tabs:after,.nav-pills:after{clear:both;} -.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;} -.nav-tabs:after,.nav-pills:after{clear:both;} -.nav-tabs>li,.nav-pills>li{float:left;} -.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} -.nav-tabs{border-bottom:1px solid #ddd;} -.nav-tabs>li{margin-bottom:-1px;} -.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;} -.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} -.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} -.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0a6199;} -.nav-stacked>li{float:none;} -.nav-stacked>li>a{margin-right:0;} -.nav-tabs.nav-stacked{border-bottom:0;} -.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;} -.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} -.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;} -.nav-pills.nav-stacked>li>a{margin-bottom:3px;} -.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} -.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;} -.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.nav .dropdown-toggle .caret{border-top-color:#0a6199;border-bottom-color:#0a6199;margin-top:6px;} -.nav .dropdown-toggle:hover .caret{border-top-color:#053351;border-bottom-color:#053351;} -.nav-tabs .dropdown-toggle .caret{margin-top:8px;} -.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;} -.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} -.nav>.dropdown.active>a:hover{cursor:pointer;} -.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;} -.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);} -.tabs-stacked .open>a:hover{border-color:#999999;} -.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} -.tabbable:after{clear:both;} -.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;} -.tabbable:after{clear:both;} -.tab-content{overflow:auto;} -.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;} -.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} -.tab-content>.active,.pill-content>.active{display:block;} -.tabs-below>.nav-tabs{border-top:1px solid #ddd;} -.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;} -.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;} -.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd;} -.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;} -.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} -.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;} -.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} -.tabs-left>.nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} -.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} -.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;} -.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} -.tabs-right>.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} -.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} -.nav>.disabled>a{color:#999999;} -.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;} -.navbar{overflow:visible;margin-bottom:0;color:#777777;*position:relative;*z-index:2;} -.navbar-inner{min-height:75px;background:#f0f0f0;*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} -.navbar-inner:after{clear:both;} -.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;} -.navbar-inner:after{clear:both;} -.navbar .container{width:auto;} -.nav-collapse.collapse{height:auto;} -.navbar .brand{float:left;display:block;padding:30px 30px 10px 30px;margin-top:15px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;text-indent:-9000px;background:transparent url("../img/F2_logo.png") top left no-repeat;}.navbar .brand:hover{text-decoration:none;} -.navbar-text{margin-bottom:0;line-height:75px;color:#737373;font-size:13px;letter-spacing:1px;} -.navbar-link{color:#777777;}.navbar-link:hover{color:#333333;} -.navbar .divider-vertical{height:10px;margin:33px 0 0 0;border-left:1px solid #a5a5a5;border-right:1px solid #a5a5a5;} -.navbar .tagline-divider{float:left;border-left:1px solid #B2BBC3;height:30px;margin:20px 20px 0 20px;} -.navbar .btn,.navbar .btn-group{margin-top:22.5px;} -.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0;} -.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} -.navbar-form:after{clear:both;} -.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;} -.navbar-form:after{clear:both;} -.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:22.5px;} -.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;} -.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} -.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;} -.navbar-search{position:relative;float:left;margin-top:22.5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.navbar-static-top{position:static;width:100%;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;} -.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;} -.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;} -.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} -.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.navbar-fixed-top{top:0;} -.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-bottom:1px solid #dcdcdc;} -.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);} -.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} -.navbar .nav.pull-right{float:right;margin-right:0;} -.navbar .nav>li{float:left;} -.navbar .nav>li>a{float:none;padding:27.5px 10px 27.5px;color:#6c6c6c;text-decoration:none;text-shadow:0 1px 0 #ffffff;font-size:14px;} -.navbar .nav .dropdown-toggle .caret{margin-top:8px;} -.navbar .nav>li>.gitHubLink{font-size:16px;color:#3e6296;} -.navbar .nav>li.ghWrapResp{display:none;visibility:hidden;height:0;border:0 none;} -.navbar .nav>li>.gitHubLink strong{font-family:rokkittregular;font-size:17px;} -.navbar .nav>li>a>.onDecoration{border-top:1px solid #999999;border-bottom:1px solid #999999;color:#999999;font-size:10px;font-weight:bold;} -.navbar .nav>li>a>.F2VersionIndicator{position:absolute;top:50%;right:10px;font-size:10px;padding-top:3px;color:#6c6c6c;} -.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;} -.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;font-weight:bold;} -.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background:transparent none;border:0 none;box-shadow:none;} -.navbar .btn-navbar .icon-bar{display:block;width:40px;height:2px;background-color:#9da6ac;border-top:1px solid #666c70;border-bottom:2px solid #fff;} -.btn-navbar .icon-bar+.icon-bar{margin-top:3px;} -.navbar .icon-triangleDown{width:0;height:0;border-left:6.5px solid transparent;border-right:6.5px solid transparent;border-top:6.5px solid #9da6ac;} -.navbar .icon-triangleRight{width:0;height:0;border-top:6.5px solid transparent;border-bottom:6.5px solid transparent;border-left:6.5px solid #9da6ac;} -.nav-collapse .icon-triangleDown,.icon-triangleRight{display:none;} -.nav.navinset{width:0;height:0;display:none;visibility:hidden;} -.navbarmini .navbar-fixed-top .navbar-inner{min-height:28px;-webkit-box-shadow:0 0 0 rgba(0, 0, 0, 0);-moz-box-shadow:0 0 0 rgba(0, 0, 0, 0);box-shadow:0 0 0 rgba(0, 0, 0, 0);} -.navbarmini .navbar-fixed-top .brand{padding:4px 10px 9px;margin-top:7px;font-size:20px;font-weight:200;background-image:url("../img/mini_f2_logo.png");} -.navbarmini .navbar-fixed-top .tagline-divider{height:10px;margin:9px 12px 0 12px;} -.navbarmini .navbar-fixed-top .navbar-text{line-height:28px;font-size:10px;} -.navbarmini .navbar-fixed-top .divider-vertical{margin-top:8px;} -.navbarmini .navbar-fixed-top .nav>li>a{padding:4px 10px 4px;font-size:12px;} -.navbarmini .navbar-fixed-top .nav>li>.gitHubLink{font-size:14px;} -.navbarmini .navbar-fixed-top .nav>li>.gitHubLink strong{font-size:15px;} -.navbarmini .navbar-fixed-top .navbar .nav>li>a>.onDecoration{font-size:9px;} -.navbarmini .navbar-fixed-top .nav>li>a>.F2VersionIndicator{position:static;top:auto;left:auto;padding-left:5px;} -@media only screen and (-webkit-min-device-pixel-ratio:2){.navbar .navbar-inner .brand{background-size:56px 37px;background-image:url("../img/F2_logoRetina.png");} .navbarmini .navbar-fixed-top .brand{background-size:18px 13px;background-image:url("../img/mini_f2_logo_2x.png");}}.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} -.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} -.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;} -.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;} -.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;} -.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;} -.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;} -.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;} -.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;} -.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;} -.navbar-inverse{color:#999999;}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;} -.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#ffffff;} -.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;} -.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;} -.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover{color:#ffffff;} -.navbar-inverse .divider-vertical{border-left-color:#a5a5a5;border-right-color:#a5a5a5;} -.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;} -.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;} -.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} -.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} -.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} -.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} -.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} -.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;} -.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;} -.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;} -.breadcrumb .divider{padding:0 5px;color:#ccc;} -.breadcrumb .active{color:#999999;} -.pagination{height:40px;margin:20px 0;} -.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} -.pagination ul>li{display:inline;} -.pagination ul>li>a,.pagination ul>li>span{float:left;padding:0 14px;line-height:38px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;} -.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;} -.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;} -.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999999;background-color:transparent;cursor:default;} -.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -.pagination-centered{text-align:center;} -.pagination-right{text-align:right;} -.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;} -.pager:after{clear:both;} -.pager:before,.pager:after{display:table;content:"";line-height:0;} -.pager:after{clear:both;} -.pager li{display:inline;} -.pager a,.pager span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} -.pager a:hover{text-decoration:none;background-color:#f5f5f5;} -.pager .next a,.pager .next span{float:right;} -.pager .previous a{float:left;} -.pager .disabled a,.pager .disabled a:hover,.pager .disabled span{color:#999999;background-color:#fff;cursor:default;} -.modal-open .modal .dropdown-menu{z-index:2050;} -.modal-open .modal .dropdown.open{*z-index:2050;} -.modal-open .modal .popover{z-index:2060;} -.modal-open .modal .tooltip{z-index:2080;} -.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} -.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} -.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} -.modal.fade.in{top:50%;} -.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} -.modal-header h3{margin:0;line-height:30px;} -.modal-body{overflow-y:auto;max-height:400px;padding:15px;} -.modal-form{margin-bottom:0;} -.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} -.modal-footer:after{clear:both;} -.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;} -.modal-footer:after{clear:both;} -.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;} -.modal-footer .btn-group .btn+.btn{margin-left:-1px;} -.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} -.tooltip.top{margin-top:-3px;} -.tooltip.right{margin-left:3px;} -.tooltip.bottom{margin-top:3px;} -.tooltip.left{margin-left:-3px;} -.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} -.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} -.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} -.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} -.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} -.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-bottom:10px;} -.popover.right{margin-left:10px;} -.popover.bottom{margin-top:10px;} -.popover.left{margin-right:10px;} -.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} -.popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} -.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} -.popover .arrow:after{content:"";z-index:-1;} -.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} -.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} -.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} -.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} -.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} -.thumbnails:after{clear:both;} -.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;} -.thumbnails:after{clear:both;} -.row-fluid .thumbnails{margin-left:0;} -.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;} -.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;} -a.thumbnail:hover{border-color:#0a6199;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} -.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} -.thumbnail .caption{padding:9px;color:#555555;} -.label,.badge{font-size:11.844px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;} -.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;} -a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} -.label-important,.badge-important{background-color:#b94a48;} -.label-important[href],.badge-important[href]{background-color:#953b39;} -.label-warning,.badge-warning{background-color:#f89406;} -.label-warning[href],.badge-warning[href]{background-color:#c67605;} -.label-success,.badge-success{background-color:#468847;} -.label-success[href],.badge-success[href]{background-color:#356635;} -.label-info,.badge-info{background-color:#3a87ad;} -.label-info[href],.badge-info[href]{background-color:#2d6987;} -.label-inverse,.badge-inverse{background-color:#333333;} -.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} -.btn .label,.btn .badge{position:relative;top:-1px;} -.btn-mini .label,.btn-mini .badge{top:0;} -@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} -.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);} -.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} -.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} -.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);} -.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);} -.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);} -.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);} -.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} -.accordion{margin-bottom:20px;} -.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.accordion-heading{border-bottom:0;} -.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} -.accordion-toggle{cursor:pointer;} -.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} -.carousel{position:relative;margin-bottom:20px;line-height:1;} -.carousel-inner{overflow:hidden;width:100%;position:relative;} -.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} -.carousel .item>img{display:block;line-height:1;} -.carousel .active,.carousel .next,.carousel .prev{display:block;} -.carousel .active{left:0;} -.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;} -.carousel .next{left:100%;} -.carousel .prev{left:-100%;} -.carousel .next.left,.carousel .prev.right{left:0;} -.carousel .active.left{left:-100%;} -.carousel .active.right{left:100%;} -.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} -.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} -.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);} -.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;} -.carousel-caption h4{margin:0 0 5px;} -.carousel-caption p{margin-bottom:0;} -.hero-unit{padding:60px;margin-bottom:30px;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;} -.hero-unit p{font-size:18px;font-weight:200;line-height:30px;color:inherit;} -.pull-right{float:right;} -.pull-left{float:left;} -.hide{display:none;} -.show{display:block;} -.invisible{visibility:hidden;} -.affix{position:fixed;} -.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} -.hidden{display:none;visibility:hidden;} -.visible-phone{display:none !important;} -.visible-tablet{display:none !important;} -.hidden-desktop{display:none !important;} -.visible-desktop{display:inherit !important;} -@media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .row-fluid .thumbnails{margin-left:0;} .openf2 .mainContainer .description .span6{width:490px;} .openf2 .mainContainer .description h2:first-child{margin-top:0;font-size:40px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description .mainBGControl{margin-top:7px;}}@media (min-width:980px) and (max-width:1199px){.openf2 .mainContainer .slideshow{opacity:1;filter:alpha(opacity=100);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer footer .diskIcon{padding-right:50px;} .openf2 .mainContainer footer .docIcon{padding-right:50px;} .openf2 .mainContainer footer .socialWrap .span4{width:490px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span7{width:670px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span2{width:140px;padding-left:5px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{padding:30px 35px;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} body .mainContainer{padding-top:0;} .openf2 .mainContainer .span6{width:490px;} .openf2 .mainContainer .description .slideshow{opacity:0.2;filter:alpha(opacity=20);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer .description h2:first-child{margin-top:0;padding-top:50px;font-size:40px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description .mainBGControl{margin-top:7px;} .openf2 .mainContainer .overview .bulletPoints{width:350px;} .openf2 .mainContainer .overview .span12 p.f2OverviewSummary{margin-left:130px;} .openf2 .mainContainer footer .span6{float:none;margin:auto;} .openf2 .mainContainer footer .span6+.span6{padding-left:20px;} .openf2 .mainContainer footer .span6 a.pull-right{float:none;} .openf2 .mainContainer footer .socialWrap .span4{width:100%;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .span7{width:630px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .span2{width:140px;padding-left:5px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:40px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{padding:30px 35px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:50px;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} body.openf2{padding-left:0;padding-right:0;} .openf2 .mainContainer .description{padding:0 20px;}.openf2 .mainContainer .description .slideshow{opacity:0.2;filter:alpha(opacity=20);-webkit-transition:opacity 0.5s linear;-moz-transition:opacity 0.5s linear;-o-transition:opacity 0.5s linear;transition:opacity 0.5s linear;} .openf2 .mainContainer .description .mainBGControl{display:none;} .openf2 .mainContainer .description h2:first-child{margin-top:0;font-size:40px;padding-top:50px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .overview .container{padding:10px;}.openf2 .mainContainer .overview .container .f2OverviewSummary{margin-left:10px;} .openf2 .mainContainer footer .row .span6{padding:0;width:400px;margin:20px auto;}.openf2 .mainContainer footer .row .span6 h1{font-size:20px;} .openf2 .mainContainer footer .row .span6 h2{font-size:18px;} .openf2 .mainContainer footer .row .span6 a.pull-right{float:none;} .openf2 .mainContainer footer .socialWrap .span4{width:400px;margin:auto;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{width:100%;height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:10px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:40px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .signature{background-position:left;} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} .container-fluid{padding:0;} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} .dl-horizontal dd{margin-left:0;} .container{width:auto;} .row-fluid{width:100%;} .row,.thumbnails{margin-left:0;} .thumbnails>li{float:none;margin-left:0;} [class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} .controls-row [class*="span"]+[class*="span"]{margin-left:0;} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;}.modal.fade.in{top:auto;}}@media (max-width:480px){.lead{font-size:18px;line-height:23px;} .nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:20px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{top:10px;left:10px;right:10px;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:480px){.icon-bookmark{display:none;} .openf2 .mainContainer .description{padding:0 20px;}.openf2 .mainContainer .description h2:first-child{font-size:24px;padding-top:30px;line-height:1;} .openf2 .mainContainer .description h3:first-child{margin-top:40px;} .openf2 .mainContainer .description h3{font-size:20px;} .openf2 .mainContainer .description p{font-size:14px;} .openf2 .mainContainer .overview .container{padding:10px;}.openf2 .mainContainer .overview .container .f2OverviewSummary{margin-left:10px;} .openf2 .mainContainer footer .row{text-align:center;}.openf2 .mainContainer footer .row .pull-left,.openf2 .mainContainer footer .row .pull-right{float:none;} .openf2 .mainContainer footer .row .span6{width:100%;} .openf2 .mainContainer footer .socialWrap .span4{width:100%;} .openf2 .mainContainer footer h1{font-size:20px;} .openf2 .mainContainer footer h2{font-size:18px;} .openf2 .mainContainer footer .diskIcon,.openf2 .mainContainer footer .docIcon{display:none;} .openf2 .mainContainer footer .span5{margin-top:0;} .openf2 .mainContainer .letter .letterWrapper{background:#ffffff;}.openf2 .mainContainer .letter .letterWrapper .letterContent{width:100%;height:auto;}.openf2 .mainContainer .letter .letterWrapper .letterContent .row{padding-left:10px;} .openf2 .mainContainer .letter .letterWrapper .letterContent .first{padding-top:10px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top,.navbar-fixed-bottom{position:static;} .navbar-fixed-bottom{margin-top:20px;} .openf2Header{margin-bottom:20px;} .openf2 .openf2Header{margin-bottom:0;padding-left:20px;padding-right:20px;} .navbar .container{width:auto;padding:0;} .navbar .brand{margin-left:20px;} .openf2 .navbar .brand{margin-left:0;} .navbarmini .navbar-fixed-top .brand{padding:30px 30px 10px 30px;margin-top:20px;background:transparent url("../img/F2_logo.png") top left no-repeat;} .nav-collapse{clear:both;} .nav-collapse.collapse.in{background:#d8d8d8;-webkit-box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;-moz-box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;box-shadow:inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868;} .nav-collapse .icon-triangleDown{display:inline-block;margin-top:4px;} .nav-collapse .nav.navinset{width:auto;height:auto;display:block;visibility:visible;margin:0;} .nav-collapse .nav{float:none;margin:0 0 5px;} .nav-collapse .nav>li:first-child{padding-top:5px;} .nav-collapse .nav>li{float:none;border-bottom:1px solid #cac9c9;border-top:1px solid #e2e2e2;} .navbarmini .navbar-fixed-top .nav-collapse .nav>li>a{margin-bottom:2px;padding:9px 15px;} .nav-collapse .nav>.divider-vertical{display:none;} .nav-collapse .nav .nav-header{color:#777777;text-shadow:none;} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777777;} .nav-collapse .dropdown-menu a{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;} .nav-collapse .nav.navinset>li{border-bottom-color:#c0bebe;border-top-color:#adadad;} .nav-collapse .nav.navinset>li:first-child{padding-top:0;} .nav-collapse .nav.navinset>li>a{background-color:#b5b5b5;margin:0;color:#333;text-shadow:none;} .navbarmini .nav-collapse .nav.navinset>li>a{margin:0;padding-left:25px;} .nav-collapse .nav.navinset>li>a:hover,.nav-collapse .nav.navinset>li>a.active{background-color:#00609c;color:#ffffff;} .nav-collapse .nav>li>a>.F2VersionIndicator{top:auto;bottom:0;left:120px;} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} .nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#d8d8d8;} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111111;} .nav-collapse.in .btn-group{margin-top:5px;padding:0;} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} .nav-collapse .dropdown-menu .divider{display:none;} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111111;border-bottom-color:#111111;} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} .navbar .btn-navbar{display:block;margin-right:20px;} .openf2 .navbar .btn-navbar{margin-right:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .navbar .nav>li.ghWrap{border:0 none;display:none;} .navbar .nav>li.ghWrapResp{display:block;visibility:visible;height:auto;border:0 none;} .navbarmini .navbar-fixed-top .navbar-text,.openf2 .navbar-inner .navbar-text{line-height:75px;font-size:13px;margin-top:2px;-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;} .navbarmini .navbar-fixed-top .tagline-divider,.openf2 .navbar-inner .tagline-divider{height:38px;margin:20px 20px 0 20px;-webkit-animation:fadeIn 0.6s;-moz-animation:fadeIn 0.6s;-ms-animation:fadeIn 0.6s;}}@media (min-width:979px) and (-webkit-min-device-pixel-ratio:2){.navbarmini .navbar-fixed-top .brand{background-size:18px 13px;background-image:url("../img/mini_f2_logo_2x.png");}}@media (max-width:979px) and (-webkit-min-device-pixel-ratio:2){.navbarmini .navbar-fixed-top .brand{background-image:url("../img/F2_logoRetina.png");background-size:56px 37px;}}@media (min-width:480px) and (max-width:767px){.tagline-divider,.navbar-text{display:block !important;}}@media (max-width:767px){.tagline-divider,.navbar-text{display:none;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@-webkit-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-moz-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-o-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-ms-keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@keyframes fadeIn{0%{opacity:0;} 100%{opacity:1;}}@-webkit-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-moz-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-o-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@-ms-keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}}@keyframes slideIn{0%{opacity:0;left:3%;} 100%{left:0;opacity:1;}} +article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { + display: block; +} + +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, a:active { + outline: 0; +} + +sub, sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + max-width: 100%; + width: auto \9; + height: auto; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img { + max-width: none; +} + +button, input, select, textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, input[type="button"], input[type="reset"], input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, .clearfix:after { + display: table; + content: ""; + line-height: 0; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0a6199; + text-decoration: none; +} + +a:hover { + color: #053351; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +.row:before, .row:after { + display: table; + content: ""; + line-height: 0; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, .row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, .row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container:before, .container:after { + display: table; + content: ""; + line-height: 0; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.container-fluid:after { + clear: both; +} + +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; + line-height: 0; +} + +.container-fluid:after { + clear: both; +} + +.openf2Header { + background-color: #f0f0f0; +} + +body.openf2 { + background: transparent url("../img/footerNoise.png") repeat; +} + +body.f2Developer { + background: transparent url("../img/footerNoise.png") repeat; +} + +body.letterPage { + background: transparent url("../img/footerNoise.png") repeat; +} + +body .mainContainer { + background-color: #ffffff; + padding: 0; + margin-top: 0; +} + +body .mainContainer .AppRegistrationForm { + min-height: 300px; + padding: 20px; + background: url("../img/F2TopShadowBorder.png") top no-repeat; +} + +body .mainContainer .noiseWrap { + background: transparent url("../img/footerNoise.png") repeat; +} + +body .mainContainer .letter { + background-color: transparent; + background: url("../img/F2TopShadowBorder.png") top no-repeat; + padding-bottom: 20px; +} + +body .mainContainer .letter .letterWrapper { + margin-top: 30px; + background: url("../img/F2LetterImage.png") center no-repeat; +} + +body .mainContainer .letter .letterWrapper .letterContent { + width: 875px; + height: 890px; + margin: auto; +} + +body .mainContainer .letter .letterWrapper .letterContent .date { + text-align: right; +} + +body .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 80px; +} + +body .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 100px; +} + +body .mainContainer .letter p { + color: #727272; + margin-bottom: 15px; + font-size: 14px; + text-shadow: 0px 1px #ffffff; +} + +body .mainContainer .letter .signature { + background: url("../img/F2Signature.png") center no-repeat; + padding: 30px 20px; +} + +body .mainContainer .description { + z-index: 2; + background: url("../img/F2TopShadowBorder.png") top no-repeat; + background-color: #ffffff; + position: relative; + height: 665px; +} + +body .mainContainer .description .letterLink { + padding-top: 10px; +} + +body .mainContainer .description p { + margin-bottom: 0; + line-height: 1.5em; + color: #535353; + font-weight: 200; + font-size: 17px; +} + +body .mainContainer .description p.F2Indent { + padding-left: 10px; + font-size: 12px; +} + +body .mainContainer .description p.F2Indent a { + color: #535353; +} + +body .mainContainer .description h2:first-child { + margin-top: 0; + padding-top: 50px; + font-size: 35px; + margin-bottom: 30px; + line-height: 1.25em; +} + +body .mainContainer .description h2, body .mainContainer .description h3 { + color: #0a6199; + margin-bottom: 0; + line-height: 1; +} + +body .mainContainer .description h3:first-child { + margin-top: 30px; +} + +body .mainContainer .description h3 a { + color: #0a6199; +} + +body .mainContainer .description .overview h2, body .mainContainer .description .overview h3 { + color: #ffffff; +} + +body .mainContainer .description .mainBGImg { + z-index: -1; + position: absolute; + top: 0; + left: 0; + margin: 0; + list-style: none; + width: 100%; +} + +body .mainContainer .description .mainBGImg li div.img { + height: 665px; + width: 100%; +} + +body .mainContainer .description .ImgIpad { + background: url("../img/F2_iPad.jpg") no-repeat center; +} + +body .mainContainer .description .ImgIscreens { + background: url("../img/F2_iScreens.jpg") no-repeat center; +} + +body .mainContainer .description .ImgIphone { + background: url("../img/F2_iPhone.jpg") no-repeat center; +} + +body .mainContainer .description .mainBGControl { + margin: 30px 0 0 0; + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .description .mainBGControl li { + display: inline-block; +} + +body .mainContainer .description .mainBGControl li a { + background: url("../img/bgControlDot.png") no-repeat center; + padding: 10px; +} + +body .mainContainer .description .mainBGControl .selected a { + background: url("../img/bgControlDotSelected.png") no-repeat center; +} + +body .mainContainer .overview { + background-color: #ffffff; + background-color: #53585b; + background-image: -moz-linear-gradient(top, #575d61, #4d5052); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#575d61), to(#4d5052)); + background-image: -webkit-linear-gradient(top, #575d61, #4d5052); + background-image: -o-linear-gradient(top, #575d61, #4d5052); + background-image: linear-gradient(to bottom, #575d61, #4d5052); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff575d61', endColorstr='#ff4d5052', GradientType=0); +} + +body .mainContainer .overview h2 { + text-align: center; + margin-bottom: 20px; + color: #ffffff; +} + +body .mainContainer .overview .container { + background: url("../img/F2TopShadowBorder.png") top no-repeat; +} + +body .mainContainer .overview .row { + padding: 50px 0; +} + +body .mainContainer .overview .F2SunBullet { + background: url("../img/F2SunIcon.png") center no-repeat; + padding: 10px; +} + +body .mainContainer .overview .bulletPoints ul { + list-style: none; +} + +body .mainContainer .overview .bulletPoints ul li { + padding-left: 22px; + background: url("../img/F2SunIcon.png") left top no-repeat; +} + +body .mainContainer .overview .bulletPoints .span4 { + margin-left: 5px; +} + +body .mainContainer .overview .f2OverviewSummary { + font-style: italic; +} + +body .mainContainer .overview .interactiveDisplay { + background: transparent; +} + +body .mainContainer .overview .interactiveDisplay .carousel-inner { + height: 430px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .item { + background: url("../img/bankeoSprite.png") no-repeat; + height: 430px; + max-width: 570px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .euro { + background-position: -55px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .sp500 { + background-position: -685px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .ft { + background-position: -1325px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .research { + background-position: -1965px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .stockPicks { + background-position: -2615px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .reuters { + background-position: -3255px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .video { + background-position: -3895px -34px; +} + +body .mainContainer .overview .interactiveDisplay .carousel .search { + background-position: -4555px -34px; +} + +body .mainContainer .overview .photoControl { + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .overview .photoControl li { + display: inline-block; + cursor: pointer; +} + +body .mainContainer .overview .photoControl li a { + background: url("../img/dot.png") no-repeat center; + padding: 13px; +} + +body .mainContainer .overview .photoControl .selected a { + background: url("../img/dotSelected.png") no-repeat center; +} + +body .mainContainer .overview .captions { + list-style: none; + text-align: center; + padding: 10px 0; +} + +body .mainContainer .overview .captions li { + display: none; +} + +body .mainContainer .overview .captions li.selected { + display: inline-block; +} + +body .mainContainer .overview p { + color: #ffffff; + margin-bottom: 20px; + font-size: 14px; +} + +body .mainContainer .exampleContent { + padding-top: 40px; +} + +body .mainContainer .exampleContent #exampleAppContainer a { + color: #417777; +} + +body .mainContainer .exampleContent #exampleAppContainer footer { + background: transparent; +} + +body .mainContainer .exampleCaptions p { + padding: 0 0 40px 0; + color: #6c6c6c; + background: url("../img/smallShadowDivider.png") bottom no-repeat; +} + +body .mainContainer .exampleControls { + position: relative; + margin: 0; + padding: 20px 0; + text-align: center; +} + +body .mainContainer .exampleControls .arrow { + height: 25px; + width: 13px; + cursor: pointer; + position: absolute; + top: 15px; +} + +body .mainContainer .exampleControls .leftArrow { + background: url("../img/LeftArrow.png") center no-repeat; + left: 0; +} + +body .mainContainer .exampleControls .rightArrow { + background: url("../img/RightArrow.png") center no-repeat; + right: 0; +} + +body .mainContainer .exampleControls ul { + margin: 0; + list-style: none; +} + +body .mainContainer .exampleControls ul li { + display: inline-block; +} + +body .mainContainer .exampleControls ul li a { + background: url("../img/bgControlDot.png") no-repeat center; + padding: 10px; +} + +body .mainContainer .exampleControls ul .selected a { + background: url("../img/bgControlDotSelected.png") no-repeat center; +} + +body .mainContainer footer { + background: url("../img/footerNoise.png") repeat; + color: #bfc7ce; +} + +body .mainContainer footer .container { + background: url("../img/bottomBorderFade.png") top no-repeat; +} + +body .mainContainer footer h1, body .mainContainer footer h2, body .mainContainer footer h3, body .mainContainer footer h4, body .mainContainer footer h5, body .mainContainer footer h6 { + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; +} + +body .mainContainer footer h5 { + line-height: 10px; + font-size: 12px; +} + +body .mainContainer footer .diskIcon { + background: url("../img/diskIcon.png") no-repeat center; + padding: 50px 75px; +} + +body .mainContainer footer .docIcon { + background: url("../img/docIcon.png") no-repeat center; + padding: 50px 75px; +} + +body .mainContainer footer .span6 { + padding: 15px 0; + margin-top: 20px; +} + +body .mainContainer footer .pull-left h2 { + line-height: 20px; +} + +body .mainContainer footer a { + text-decoration: none; + color: #bfc7ce; +} + +body .mainContainer footer a.releaseNotes { + text-decoration: underline; +} + +body .mainContainer footer .version { + padding: 0 10px; + font-size: 46px; +} + +body .mainContainer footer .socialWrap { + background: url("../img/bottomBorderFade.png") bottom no-repeat; + padding-bottom: 40px; +} + +body .mainContainer footer .social { + padding: 20px 0 10px 0; +} + +body .mainContainer footer .span12 { + text-align: center; + color: #3b4044; + margin-bottom: 10px; +} + +.footerLogoDark { + background: url("../img/F2FooterLogoDark.png") center no-repeat; + height: 24px; +} + +.footerLogoLight { + background: url("../img/F2FooterLogoLight.png") center no-repeat; + height: 23px; +} + +.examplePage { + background: url("../img/F2TopShadowBorder.png") top no-repeat; + background-color: #ffffff; + padding-bottom: 50px; +} + +.F2DottedLine { + width: 100%; + border-bottom: 1px dotted #ffffff; +} + +@font-face { + font-family: 'rokkittregular'; + src: url('rokkitt-webfont.eot'); + src: local('☺'), url('rokkitt-webfont.woff') format('woff'), url('rokkitt-webfont.ttf') format('truetype'), url('rokkitt-webfont.svg#rokkittregular') format('svg'); + font-weight: normal; + font-style: normal; +} + +p { + margin: 0 0 10px; + font-size: 14px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +.text-warning { + color: #c09853; +} + +.text-error { + color: #b94a48; +} + +.text-info { + color: #3a87ad; +} + +.text-success { + color: #468847; +} + +h1, h2, h3, h4, h5, h6 { + margin: 10px 0; + font-family: rokkittregular; + font-weight: normal; + line-height: 1; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1 { + font-size: 36px; + line-height: 40px; +} + +h2 { + font-size: 30px; + line-height: 30px; +} + +h3 { + font-size: 24px; + line-height: 40px; +} + +h4 { + font-size: 20px; + line-height: 20px; +} + +h5 { + font-size: 16px; + line-height: 20px; +} + +h6 { + font-size: 14px; + line-height: 20px; +} + +h1 small { + font-size: 24px; +} + +h2 small { + font-size: 18px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, ul ol, ol ol, ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 20px; +} + +dt, dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, .dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal:before, .dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, q:after, blockquote:before, blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +a code { + border-color: #e1e1e8 !important; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, input, button, select, textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, button, select, textarea { + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 9px; + font-size: 14px; + line-height: 20px; + color: #555555; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +input, textarea, .uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear .2s, box-shadow linear .2s; + -moz-transition: border linear .2s, box-shadow linear .2s; + -o-transition: border linear .2s, box-shadow linear .2s; + transition: border linear .2s, box-shadow linear .2s; +} + +textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], input[type="checkbox"] { + margin: 4px 0 0; + *margin-top: 0; + margin-top: 1px \9; + line-height: normal; + cursor: pointer; +} + +input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { + width: auto; +} + +select, input[type="file"] { + height: 30px; + *margin-top: 4px; + line-height: 30px; +} + +select { + width: 220px; + border: 1px solid #cccccc; + background-color: #ffffff; +} + +select[multiple], select[size] { + height: auto; +} + +select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, .uneditable-textarea { + color: #999999; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { + color: #999999; +} + +input:-moz-placeholder, textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, .checkbox { + min-height: 18px; + padding-left: 18px; +} + +.radio input[type="radio"], .checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +.controls > .radio:first-child, .controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, .checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, textarea, .uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, textarea.span12, .uneditable-input.span12 { + width: 926px; +} + +input.span11, textarea.span11, .uneditable-input.span11 { + width: 846px; +} + +input.span10, textarea.span10, .uneditable-input.span10 { + width: 766px; +} + +input.span9, textarea.span9, .uneditable-input.span9 { + width: 686px; +} + +input.span8, textarea.span8, .uneditable-input.span8 { + width: 606px; +} + +input.span7, textarea.span7, .uneditable-input.span7 { + width: 526px; +} + +input.span6, textarea.span6, .uneditable-input.span6 { + width: 446px; +} + +input.span5, textarea.span5, .uneditable-input.span5 { + width: 366px; +} + +input.span4, textarea.span4, .uneditable-input.span4 { + width: 286px; +} + +input.span3, textarea.span3, .uneditable-input.span3 { + width: 206px; +} + +input.span2, textarea.span2, .uneditable-input.span2 { + width: 126px; +} + +input.span1, textarea.span1, .uneditable-input.span1 { + width: 46px; +} + +input, textarea, .uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, textarea.span12, .uneditable-input.span12 { + width: 926px; +} + +input.span11, textarea.span11, .uneditable-input.span11 { + width: 846px; +} + +input.span10, textarea.span10, .uneditable-input.span10 { + width: 766px; +} + +input.span9, textarea.span9, .uneditable-input.span9 { + width: 686px; +} + +input.span8, textarea.span8, .uneditable-input.span8 { + width: 606px; +} + +input.span7, textarea.span7, .uneditable-input.span7 { + width: 526px; +} + +input.span6, textarea.span6, .uneditable-input.span6 { + width: 446px; +} + +input.span5, textarea.span5, .uneditable-input.span5 { + width: 366px; +} + +input.span4, textarea.span4, .uneditable-input.span4 { + width: 286px; +} + +input.span3, textarea.span3, .uneditable-input.span3 { + width: 206px; +} + +input.span2, textarea.span2, .uneditable-input.span2 { + width: 126px; +} + +input.span1, textarea.span1, .uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, .controls-row:after { + display: table; + content: ""; + line-height: 0; +} + +.controls-row:after { + clear: both; +} + +.controls-row:before, .controls-row:after { + display: table; + content: ""; + line-height: 0; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"] { + float: left; +} + +input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, .control-group.error select, .control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, .control-group.error select, .control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; +} + +.control-group.success input, .control-group.success select, .control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; +} + +.control-group.success input, .control-group.success select, .control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, .control-group.info select, .control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +.control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, .control-group.info select, .control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, .form-actions:after { + display: table; + content: ""; + line-height: 0; +} + +.form-actions:after { + clear: both; +} + +.form-actions:before, .form-actions:after { + display: table; + content: ""; + line-height: 0; +} + +.form-actions:after { + clear: both; +} + +.help-block, .help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding-left: 5px; +} + +.input-append, .input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} + +.input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + font-size: 14px; + vertical-align: top; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-append input:focus, .input-prepend input:focus, .input-append select:focus, .input-prepend select:focus, .input-append .uneditable-input:focus, .input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, .input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, .input-prepend .add-on, .input-append .btn, .input-prepend .btn { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, .input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, .input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, .input-prepend .btn:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append input, .input-append select, .input-append .uneditable-input { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append .add-on, .input-append .btn { + margin-left: -1px; +} + +.input-append .add-on:last-child, .input-append .btn:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.form-search .input-append .search-query, .form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append { + display: inline-block; + *display: inline; + *zoom: 1; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .hide, .form-inline .hide, .form-horizontal .hide { + display: none; +} + +.form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, .table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, .table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, .table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, .table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child, .table-bordered tfoot:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child, .table-bordered tfoot:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover td, .table-hover tbody tr:hover th { + background-color: #f5f5f5; +} + +table [class*=span], .row-fluid table [class*=span] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +.table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +.table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +.table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +.table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +.table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +.table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +.table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +.table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +.table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +.table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +.table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + +.table tbody tr.success td { + background-color: #dff0d8; +} + +.table tbody tr.error td { + background-color: #f2dede; +} + +.table tbody tr.warning td { + background-color: #fcf8e3; +} + +.table tbody tr.info td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} + +[class^="icon-"], [class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; + margin-top: 1px; +} + +.icon-white, .nav-tabs > .active > a > [class^="icon-"], .nav-tabs > .active > a > [class*=" icon-"], .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + background-position: -216px -120px; + width: 16px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + background-position: -408px -120px; + width: 16px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, .dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, .open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-submenu:hover > a { + text-decoration: none; + color: #ffffff; + background-color: #0a6199; + background-color: #095b8f; + background-image: -moz-linear-gradient(top, #0a6199, #085281); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281)); + background-image: -webkit-linear-gradient(top, #0a6199, #085281); + background-image: -o-linear-gradient(top, #0a6199, #085281); + background-image: linear-gradient(to bottom, #0a6199, #085281); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0); +} + +.dropdown-menu .active > a, .dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #0a6199; + background-color: #095b8f; + background-image: -moz-linear-gradient(top, #0a6199, #085281); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#085281)); + background-image: -webkit-linear-gradient(top, #0a6199, #085281); + background-image: -o-linear-gradient(top, #0a6199, #085281); + background-image: linear-gradient(to bottom, #0a6199, #085281); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff085281', GradientType=0); +} + +.dropdown-menu .disabled > a, .dropdown-menu .disabled > a:hover { + color: #999999; +} + +.dropdown-menu .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, .navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} + +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + *zoom: 1; + padding: 4px 14px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + *line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e6e6e6; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + border: 1px solid #bbbbbb; + *border: 0; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *margin-left: .3em; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, .btn.active { + background-color: #cccccc \9; +} + +.btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, .btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + *background-color: #d9d9d9; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, .btn:active { + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, .btn[disabled] { + cursor: default; + background-color: #e6e6e6; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 9px 14px; + font-size: 16px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.btn-large [class^="icon-"] { + margin-top: 2px; +} + +.btn-small { + padding: 3px 9px; + font-size: 12px; + line-height: 18px; +} + +.btn-small [class^="icon-"] { + margin-top: 0; +} + +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 17px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0a4e99; + background-image: -moz-linear-gradient(top, #0a6199, #0a3199); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0a6199), to(#0a3199)); + background-image: -webkit-linear-gradient(top, #0a6199, #0a3199); + background-image: -o-linear-gradient(top, #0a6199, #0a3199); + background-image: linear-gradient(to bottom, #0a6199, #0a3199); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0a6199', endColorstr='#ff0a3199', GradientType=0); + border-color: #0a3199 #0a3199 #051a51; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0a3199; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { + color: #ffffff; + background-color: #0a3199; + *background-color: #082a81; +} + +.btn-primary:active, .btn-primary.active { + background-color: #072269 \9; +} + +.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { + color: #ffffff; + background-color: #0a3199; + *background-color: #082a81; +} + +.btn-primary:active, .btn-primary.active { + background-color: #072269 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #f89406; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} + +.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #bd362f; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} + +.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #51a351; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} + +.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #2f96b4; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} + +.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #222222; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, .btn-inverse.active { + background-color: #080808 \9; +} + +.btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, .btn-inverse.active { + background-color: #080808 \9; +} + +.btn-primaryAlt { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #2869a6; + background-image: -moz-linear-gradient(top, #2a6fb0, #246097); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2a6fb0), to(#246097)); + background-image: -webkit-linear-gradient(top, #2a6fb0, #246097); + background-image: -o-linear-gradient(top, #2a6fb0, #246097); + background-image: linear-gradient(to bottom, #2a6fb0, #246097); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a6fb0', endColorstr='#ff246097', GradientType=0); + border-color: #246097 #246097 #153959; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #246097; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primaryAlt:hover, .btn-primaryAlt:focus, .btn-primaryAlt:active, .btn-primaryAlt.active, .btn-primaryAlt.disabled, .btn-primaryAlt[disabled] { + color: #ffffff; + background-color: #246097; + *background-color: #1f5382; +} + +.btn-primaryAlt:active, .btn-primaryAlt.active { + background-color: #1a466e \9; +} + +.btn-primaryAlt:hover, .btn-primaryAlt:focus, .btn-primaryAlt:active, .btn-primaryAlt.active, .btn-primaryAlt.disabled, .btn-primaryAlt[disabled] { + color: #ffffff; + background-color: #246097; + *background-color: #1f5382; +} + +.btn-primaryAlt:active, .btn-primaryAlt.active { + background-color: #1a466e \9; +} + +button.btn, input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, .btn-link:active, .btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + border-color: transparent; + cursor: pointer; + color: #0a6199; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover { + color: #053351; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + font-size: 0; + vertical-align: middle; + white-space: nowrap; + *margin-left: .3em; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + font-size: 0; + margin-top: 10px; + margin-bottom: 10px; +} + +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + *zoom: 1; +} + +.btn-toolbar .btn + .btn, .btn-toolbar .btn-group + .btn, .btn-toolbar .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, .btn-group > .dropdown-menu { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 11px; +} + +.btn-group > .btn-small { + font-size: 12px; +} + +.btn-group > .btn-large { + font-size: 16px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} + +.btn-group > .btn:last-child, .btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} + +.btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} + +.btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + *padding-top: 5px; + *padding-bottom: 5px; +} + +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; + *padding-top: 2px; + *padding-bottom: 2px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + *padding-top: 7px; + *padding-bottom: 7px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0a3199; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-mini .caret, .btn-small .caret, .btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; +} + +.dropup .btn-large .caret { + border-bottom: 5px solid #000000; + border-top: 0; +} + +.btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + *zoom: 1; +} + +.btn-group-vertical .btn { + display: block; + float: none; + width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical .btn + .btn { + margin-left: 0; + margin-top: -1px; +} + +.btn-group-vertical .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert h5 { + font-size: 20px; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #468847; +} + +.alert-danger, .alert-error { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} + +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, .alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-left: 0; + margin-bottom: 20px; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, .nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, .nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0a6199; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, .nav-pills { + *zoom: 1; +} + +.nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { + display: table; + content: ""; + line-height: 0; +} + +.nav-tabs:after, .nav-pills:after { + clear: both; +} + +.nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { + display: table; + content: ""; + line-height: 0; +} + +.nav-tabs:after, .nav-pills:after { + clear: both; +} + +.nav-tabs > li, .nav-pills > li { + float: left; +} + +.nav-tabs > li > a, .nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, .nav-tabs > .active > a:hover { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, .nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0a6199; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + border-top-color: #0a6199; + border-bottom-color: #0a6199; + margin-top: 6px; +} + +.nav .dropdown-toggle:hover .caret { + border-top-color: #053351; + border-bottom-color: #053351; +} + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, .tabbable:after { + display: table; + content: ""; + line-height: 0; +} + +.tabbable:after { + clear: both; +} + +.tabbable:before, .tabbable:after { + display: table; + content: ""; + line-height: 0; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, .pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, .pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-bottom-color: transparent; + border-top-color: #ddd; +} + +.tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} + +.navbar { + overflow: visible; + margin-bottom: 0; + color: #777777; + *position: relative; + *z-index: 2; +} + +.navbar-inner { + min-height: 75px; + background: #f0f0f0; + *zoom: 1; +} + +.navbar-inner:before, .navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-inner:after { + clear: both; +} + +.navbar-inner:before, .navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; +} + +.navbar .brand { + float: left; + display: block; + padding: 30px 30px 10px 30px; + margin-top: 15px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; + text-indent: -9000px; + background: transparent url("../img/F2_logo.png") top left no-repeat; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 75px; + color: #737373; + font-size: 13px; + letter-spacing: 1px; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover { + color: #333333; +} + +.navbar .divider-vertical { + height: 10px; + margin: 33px 0 0 0; + border-left: 1px solid #a5a5a5; + border-right: 1px solid #a5a5a5; +} + +.navbar .tagline-divider { + float: left; + border-left: 1px solid #B2BBC3; + height: 30px; + margin: 20px 20px 0 20px; +} + +.navbar .btn, .navbar .btn-group { + margin-top: 22.5px; +} + +.navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; + line-height: 0; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { + margin-top: 22.5px; +} + +.navbar-form input, .navbar-form select, .navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, .navbar-form .input-prepend { + margin-top: 6px; + white-space: nowrap; +} + +.navbar-form .input-append input, .navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 22.5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + margin-bottom: 0; + padding: 4px 14px; + font-family: Helvetica, "Helvetica Neue", Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + width: 100%; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, .navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { + border-bottom: 1px solid #dcdcdc; +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 27.5px 10px 27.5px; + color: #6c6c6c; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; + font-size: 14px; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > .gitHubLink { + font-size: 16px; + color: #3e6296; +} + +.navbar .nav > li.ghWrapResp { + display: none; + visibility: hidden; + height: 0; + border: 0 none; +} + +.navbar .nav > li > .gitHubLink strong { + font-family: rokkittregular; + font-size: 17px; +} + +.navbar .nav > li > a > .onDecoration { + border-top: 1px solid #999999; + border-bottom: 1px solid #999999; + color: #999999; + font-size: 10px; + font-weight: bold; +} + +.navbar .nav > li > a > .F2VersionIndicator { + position: absolute; + top: 50%; + right: 10px; + font-size: 10px; + padding-top: 3px; + color: #6c6c6c; +} + +.navbar .nav > li > a:focus, .navbar .nav > li > a:hover { + background-color: transparent; + color: #333333; + text-decoration: none; +} + +.navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + font-weight: bold; +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + background: transparent none; + border: 0 none; + box-shadow: none; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 40px; + height: 2px; + background-color: #9da6ac; + border-top: 1px solid #666c70; + border-bottom: 2px solid #fff; +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .icon-triangleDown { + width: 0; + height: 0; + border-left: 6.5px solid transparent; + border-right: 6.5px solid transparent; + border-top: 6.5px solid #9da6ac; +} + +.navbar .icon-triangleRight { + width: 0; + height: 0; + border-top: 6.5px solid transparent; + border-bottom: 6.5px solid transparent; + border-left: 6.5px solid #9da6ac; +} + +.nav-collapse .icon-triangleDown, .icon-triangleRight { + display: none; +} + +.nav.navinset { + width: 0; + height: 0; + display: none; + visibility: hidden; +} + +.navbarmini .navbar-fixed-top .navbar-inner { + min-height: 28px; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); +} + +.navbarmini .navbar-fixed-top .brand { + padding: 4px 10px 9px; + margin-top: 7px; + font-size: 20px; + font-weight: 200; + background-image: url("../img/mini_f2_logo.png"); +} + +.navbarmini .navbar-fixed-top .tagline-divider { + height: 10px; + margin: 9px 12px 0 12px; +} + +.navbarmini .navbar-fixed-top .navbar-text { + line-height: 28px; + font-size: 10px; +} + +.navbarmini .navbar-fixed-top .divider-vertical { + margin-top: 8px; +} + +.navbarmini .navbar-fixed-top .nav > li > a { + padding: 4px 10px 4px; + font-size: 12px; +} + +.navbarmini .navbar-fixed-top .nav > li > .gitHubLink { + font-size: 14px; +} + +.navbarmini .navbar-fixed-top .nav > li > .gitHubLink strong { + font-size: 15px; +} + +.navbarmini .navbar-fixed-top .navbar .nav > li > a > .onDecoration { + font-size: 9px; +} + +.navbarmini .navbar-fixed-top .nav > li > a > .F2VersionIndicator { + position: static; + top: auto; + left: auto; + padding-left: 5px; +} + +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .navbar .navbar-inner .brand { + background-size: 56px 37px; + background-image: url("../img/F2_logoRetina.png"); + } + + .navbarmini .navbar-fixed-top .brand { + background-size: 18px 13px; + background-image: url("../img/mini_f2_logo_2x.png"); + } +} + +.navbar .nav > li > .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} + +.navbar .nav > li > .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + border-bottom: 0; + bottom: -7px; + top: auto; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + border-top: 6px solid #ffffff; + border-bottom: 0; + bottom: -6px; + top: auto; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #e5e5e5; + color: #555555; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} + +.navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { + left: auto; + right: 12px; +} + +.navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { + left: auto; + right: 13px; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse { + color: #999999; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); + border-color: #252525; +} + +.navbar-inverse .brand, .navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover { + color: #ffffff; +} + +.navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { + background-color: transparent; + color: #ffffff; +} + +.navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-left-color: #a5a5a5; + border-right-color: #a5a5a5; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #111111; + color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #040404; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb li { + display: inline-block; + *display: inline; + *zoom: 1; + text-shadow: 0 1px 0 #ffffff; +} + +.breadcrumb .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb .active { + color: #999999; +} + +.pagination { + height: 40px; + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, .pagination ul > li > span { + float: left; + padding: 0 14px; + line-height: 38px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, .pagination ul > .active > a, .pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, .pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover { + color: #999999; + background-color: transparent; + cursor: default; +} + +.pagination ul > li:first-child > a, .pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.pagination ul > li:last-child > a, .pagination ul > li:last-child > span { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pager { + margin: 20px 0; + list-style: none; + text-align: center; + *zoom: 1; +} + +.pager:before, .pager:after { + display: table; + content: ""; + line-height: 0; +} + +.pager:after { + clear: both; +} + +.pager:before, .pager:after { + display: table; + content: ""; + line-height: 0; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager a, .pager span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next a, .pager .next span { + float: right; +} + +.pager .previous a { + float: left; +} + +.pager .disabled a, .pager .disabled a:hover, .pager .disabled span { + color: #999999; + background-color: #fff; + cursor: default; +} + +.modal-open .modal .dropdown-menu { + z-index: 2050; +} + +.modal-open .modal .dropdown.open { + *z-index: 2050; +} + +.modal-open .modal .popover { + z-index: 2060; +} + +.modal-open .modal .tooltip { + z-index: 2080; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, .modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + overflow: auto; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} + +.modal.fade.in { + top: 50%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + overflow-y: auto; + max-height: 400px; + padding: 15px; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} + +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; + line-height: 0; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; + line-height: 0; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -3px; +} + +.tooltip.right { + margin-left: 3px; +} + +.tooltip.bottom { + margin-top: 3px; +} + +.tooltip.left { + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + background-color: #ffffff; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} + +.popover.top { + margin-bottom: 10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-right: 10px; +} + +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover-content p, .popover-content ul, .popover-content ol { + margin-bottom: 0; +} + +.popover .arrow, .popover .arrow:after { + position: absolute; + display: inline-block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow:after { + content: ""; + z-index: -1; +} + +.popover.top .arrow { + bottom: -10px; + left: 50%; + margin-left: -10px; + border-width: 10px 10px 0; + border-top-color: #ffffff; +} + +.popover.top .arrow:after { + border-width: 11px 11px 0; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -1px; + left: -11px; +} + +.popover.right .arrow { + top: 50%; + left: -10px; + margin-top: -10px; + border-width: 10px 10px 10px 0; + border-right-color: #ffffff; +} + +.popover.right .arrow:after { + border-width: 11px 11px 11px 0; + border-right-color: rgba(0, 0, 0, 0.25); + bottom: -11px; + left: -1px; +} + +.popover.bottom .arrow { + top: -10px; + left: 50%; + margin-left: -10px; + border-width: 0 10px 10px; + border-bottom-color: #ffffff; +} + +.popover.bottom .arrow:after { + border-width: 0 11px 11px; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -1px; + left: -11px; +} + +.popover.left .arrow { + top: 50%; + right: -10px; + margin-top: -10px; + border-width: 10px 0 10px 10px; + border-left-color: #ffffff; +} + +.popover.left .arrow:after { + border-width: 11px 0 11px 11px; + border-left-color: rgba(0, 0, 0, 0.25); + bottom: -11px; + right: -1px; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; + line-height: 0; +} + +.thumbnails:after { + clear: both; +} + +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; + line-height: 0; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { + border-color: #0a6199; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.label, .badge { + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, .badge-important { + background-color: #b94a48; +} + +.label-important[href], .badge-important[href] { + background-color: #953b39; +} + +.label-warning, .badge-warning { + background-color: #f89406; +} + +.label-warning[href], .badge-warning[href] { + background-color: #c67605; +} + +.label-success, .badge-success { + background-color: #468847; +} + +.label-success[href], .badge-success[href] { + background-color: #356635; +} + +.label-info, .badge-info { + background-color: #3a87ad; +} + +.label-info[href], .badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, .badge-inverse { + background-color: #333333; +} + +.label-inverse[href], .badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, .btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, .btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, .progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, .progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, .progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, .progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, .progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, .progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, .progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, .progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} + +.carousel .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel .item > img { + display: block; + line-height: 1; +} + +.carousel .active, .carousel .next, .carousel .prev { + display: block; +} + +.carousel .active { + left: 0; +} + +.carousel .next, .carousel .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel .next { + left: 100%; +} + +.carousel .prev { + left: -100%; +} + +.carousel .next.left, .carousel .prev.right { + left: 0; +} + +.carousel .active.left { + left: -100%; +} + +.carousel .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + left: auto; + right: 15px; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, .carousel-caption p { + color: #ffffff; + line-height: 20px; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + color: inherit; + letter-spacing: -1px; +} + +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, .clearfix:after { + display: table; + content: ""; + line-height: 0; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + + .visible-desktop { + display: none !important; + } + + .visible-tablet { + display: inherit !important; + } + + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + + .visible-desktop { + display: none !important; + } + + .visible-phone { + display: inherit !important; + } + + .hidden-phone { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 1170px; + } + + .span12 { + width: 1170px; + } + + .span11 { + width: 1070px; + } + + .span10 { + width: 970px; + } + + .span9 { + width: 870px; + } + + .span8 { + width: 770px; + } + + .span7 { + width: 670px; + } + + .span6 { + width: 570px; + } + + .span5 { + width: 470px; + } + + .span4 { + width: 370px; + } + + .span3 { + width: 270px; + } + + .span2 { + width: 170px; + } + + .span1 { + width: 70px; + } + + .offset12 { + margin-left: 1230px; + } + + .offset11 { + margin-left: 1130px; + } + + .offset10 { + margin-left: 1030px; + } + + .offset9 { + margin-left: 930px; + } + + .offset8 { + margin-left: 830px; + } + + .offset7 { + margin-left: 730px; + } + + .offset6 { + margin-left: 630px; + } + + .offset5 { + margin-left: 530px; + } + + .offset4 { + margin-left: 430px; + } + + .offset3 { + margin-left: 330px; + } + + .offset2 { + margin-left: 230px; + } + + .offset1 { + margin-left: 130px; + } + + .row { + margin-left: -30px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 1170px; + } + + .span12 { + width: 1170px; + } + + .span11 { + width: 1070px; + } + + .span10 { + width: 970px; + } + + .span9 { + width: 870px; + } + + .span8 { + width: 770px; + } + + .span7 { + width: 670px; + } + + .span6 { + width: 570px; + } + + .span5 { + width: 470px; + } + + .span4 { + width: 370px; + } + + .span3 { + width: 270px; + } + + .span2 { + width: 170px; + } + + .span1 { + width: 70px; + } + + .offset12 { + margin-left: 1230px; + } + + .offset11 { + margin-left: 1130px; + } + + .offset10 { + margin-left: 1030px; + } + + .offset9 { + margin-left: 930px; + } + + .offset8 { + margin-left: 830px; + } + + .offset7 { + margin-left: 730px; + } + + .offset6 { + margin-left: 630px; + } + + .offset5 { + margin-left: 530px; + } + + .offset4 { + margin-left: 430px; + } + + .offset3 { + margin-left: 330px; + } + + .offset2 { + margin-left: 230px; + } + + .offset1 { + margin-left: 130px; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1156px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1056px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 956px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 856px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 756px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 656px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 556px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 456px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 356px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 256px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 156px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 56px; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1156px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1056px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 956px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 856px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 756px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 656px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 556px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 456px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 356px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 256px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 156px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 56px; + } + + .thumbnails { + margin-left: -30px; + } + + .thumbnails > li { + margin-left: 30px; + } + + .row-fluid .thumbnails { + margin-left: 0; + } + + .openf2 .mainContainer .description .span6 { + width: 490px; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + font-size: 40px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description .mainBGControl { + margin-top: 7px; + } +} + +@media (min-width: 980px) and (max-width: 1199px) { + .openf2 .mainContainer .slideshow { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer footer .diskIcon { + padding-right: 50px; + } + + .openf2 .mainContainer footer .docIcon { + padding-right: 50px; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 490px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span7 { + width: 670px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span2 { + width: 140px; + padding-left: 5px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + padding: 30px 35px; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 724px; + } + + .span12 { + width: 724px; + } + + .span11 { + width: 662px; + } + + .span10 { + width: 600px; + } + + .span9 { + width: 538px; + } + + .span8 { + width: 476px; + } + + .span7 { + width: 414px; + } + + .span6 { + width: 352px; + } + + .span5 { + width: 290px; + } + + .span4 { + width: 228px; + } + + .span3 { + width: 166px; + } + + .span2 { + width: 104px; + } + + .span1 { + width: 42px; + } + + .offset12 { + margin-left: 764px; + } + + .offset11 { + margin-left: 702px; + } + + .offset10 { + margin-left: 640px; + } + + .offset9 { + margin-left: 578px; + } + + .offset8 { + margin-left: 516px; + } + + .offset7 { + margin-left: 454px; + } + + .offset6 { + margin-left: 392px; + } + + .offset5 { + margin-left: 330px; + } + + .offset4 { + margin-left: 268px; + } + + .offset3 { + margin-left: 206px; + } + + .offset2 { + margin-left: 144px; + } + + .offset1 { + margin-left: 82px; + } + + .row { + margin-left: -20px; + *zoom: 1; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + .row:before, .row:after { + display: table; + content: ""; + line-height: 0; + } + + .row:after { + clear: both; + } + + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { + width: 724px; + } + + .span12 { + width: 724px; + } + + .span11 { + width: 662px; + } + + .span10 { + width: 600px; + } + + .span9 { + width: 538px; + } + + .span8 { + width: 476px; + } + + .span7 { + width: 414px; + } + + .span6 { + width: 352px; + } + + .span5 { + width: 290px; + } + + .span4 { + width: 228px; + } + + .span3 { + width: 166px; + } + + .span2 { + width: 104px; + } + + .span1 { + width: 42px; + } + + .offset12 { + margin-left: 764px; + } + + .offset11 { + margin-left: 702px; + } + + .offset10 { + margin-left: 640px; + } + + .offset9 { + margin-left: 578px; + } + + .offset8 { + margin-left: 516px; + } + + .offset7 { + margin-left: 454px; + } + + .offset6 { + margin-left: 392px; + } + + .offset5 { + margin-left: 330px; + } + + .offset4 { + margin-left: 268px; + } + + .offset3 { + margin-left: 206px; + } + + .offset2 { + margin-left: 144px; + } + + .offset1 { + margin-left: 82px; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + + .row-fluid { + width: 100%; + *zoom: 1; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + line-height: 0; + } + + .row-fluid:after { + clear: both; + } + + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + } + + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 710px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 648px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 586px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 524px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 462px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 400px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 338px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 276px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 214px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 152px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 90px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 28px; + } + + input, textarea, .uneditable-input { + margin-left: 0; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + + input.span12, textarea.span12, .uneditable-input.span12 { + width: 710px; + } + + input.span11, textarea.span11, .uneditable-input.span11 { + width: 648px; + } + + input.span10, textarea.span10, .uneditable-input.span10 { + width: 586px; + } + + input.span9, textarea.span9, .uneditable-input.span9 { + width: 524px; + } + + input.span8, textarea.span8, .uneditable-input.span8 { + width: 462px; + } + + input.span7, textarea.span7, .uneditable-input.span7 { + width: 400px; + } + + input.span6, textarea.span6, .uneditable-input.span6 { + width: 338px; + } + + input.span5, textarea.span5, .uneditable-input.span5 { + width: 276px; + } + + input.span4, textarea.span4, .uneditable-input.span4 { + width: 214px; + } + + input.span3, textarea.span3, .uneditable-input.span3 { + width: 152px; + } + + input.span2, textarea.span2, .uneditable-input.span2 { + width: 90px; + } + + input.span1, textarea.span1, .uneditable-input.span1 { + width: 28px; + } + + body .mainContainer { + padding-top: 0; + } + + .openf2 .mainContainer .span6 { + width: 490px; + } + + .openf2 .mainContainer .description .slideshow { + opacity: 0.2; + filter: alpha(opacity=20); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + padding-top: 50px; + font-size: 40px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description .mainBGControl { + margin-top: 7px; + } + + .openf2 .mainContainer .overview .bulletPoints { + width: 350px; + } + + .openf2 .mainContainer .overview .span12 p.f2OverviewSummary { + margin-left: 130px; + } + + .openf2 .mainContainer footer .span6 { + float: none; + margin: auto; + } + + .openf2 .mainContainer footer .span6 + .span6 { + padding-left: 20px; + } + + .openf2 .mainContainer footer .span6 a.pull-right { + float: none; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 100%; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span7 { + width: 630px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .span2 { + width: 140px; + padding-left: 5px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 40px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + padding: 30px 35px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 50px; + } +} + +@media (max-width: 767px) { + body { + padding-left: 20px; + padding-right: 20px; + } + + body.openf2 { + padding-left: 0; + padding-right: 0; + } + + .openf2 .mainContainer .description { + padding: 0 20px; + } + + .openf2 .mainContainer .description .slideshow { + opacity: 0.2; + filter: alpha(opacity=20); + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; + } + + .openf2 .mainContainer .description .mainBGControl { + display: none; + } + + .openf2 .mainContainer .description h2:first-child { + margin-top: 0; + font-size: 40px; + padding-top: 50px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .overview .container { + padding: 10px; + } + + .openf2 .mainContainer .overview .container .f2OverviewSummary { + margin-left: 10px; + } + + .openf2 .mainContainer footer .row .span6 { + padding: 0; + width: 400px; + margin: 20px auto; + } + + .openf2 .mainContainer footer .row .span6 h1 { + font-size: 20px; + } + + .openf2 .mainContainer footer .row .span6 h2 { + font-size: 18px; + } + + .openf2 .mainContainer footer .row .span6 a.pull-right { + float: none; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 400px; + margin: auto; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + width: 100%; + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 10px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 40px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .signature { + background-position: left; + } + + .navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top { + margin-left: -20px; + margin-right: -20px; + } + + .container-fluid { + padding: 0; + } + + .dl-horizontal dt { + float: none; + clear: none; + width: auto; + text-align: left; + } + + .dl-horizontal dd { + margin-left: 0; + } + + .container { + width: auto; + } + + .row-fluid { + width: 100%; + } + + .row, .thumbnails { + margin-left: 0; + } + + .thumbnails > li { + float: none; + margin-left: 0; + } + + [class*="span"], .row-fluid [class*="span"] { + float: none; + display: block; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .span12, .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .input-large, .input-xlarge, .input-xxlarge, input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + + .input-prepend input, .input-append input, .input-prepend input[class*="span"], .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + + .modal { + position: fixed; + top: 20px; + left: 20px; + right: 20px; + width: auto; + margin: 0; + } + + .modal.fade.in { + top: auto; + } +} + +@media (max-width: 480px) { + .lead { + font-size: 18px; + line-height: 23px; + } + + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + + .page-header h1 small { + display: block; + line-height: 20px; + } + + input[type="checkbox"], input[type="radio"] { + border: 1px solid #ccc; + } + + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + + .form-horizontal .controls { + margin-left: 0; + } + + .form-horizontal .control-list { + padding-top: 0; + } + + .form-horizontal .form-actions { + padding-left: 10px; + padding-right: 10px; + } + + .modal { + top: 10px; + left: 10px; + right: 10px; + } + + .modal-header .close { + padding: 10px; + margin: -10px; + } + + .carousel-caption { + position: static; + } +} + +@media (max-width: 480px) { + .icon-bookmark { + display: none; + } + + .openf2 .mainContainer .description { + padding: 0 20px; + } + + .openf2 .mainContainer .description h2:first-child { + font-size: 24px; + padding-top: 30px; + line-height: 1; + } + + .openf2 .mainContainer .description h3:first-child { + margin-top: 40px; + } + + .openf2 .mainContainer .description h3 { + font-size: 20px; + } + + .openf2 .mainContainer .description p { + font-size: 14px; + } + + .openf2 .mainContainer .overview .container { + padding: 10px; + } + + .openf2 .mainContainer .overview .container .f2OverviewSummary { + margin-left: 10px; + } + + .openf2 .mainContainer footer .row { + text-align: center; + } + + .openf2 .mainContainer footer .row .pull-left, .openf2 .mainContainer footer .row .pull-right { + float: none; + } + + .openf2 .mainContainer footer .row .span6 { + width: 100%; + } + + .openf2 .mainContainer footer .socialWrap .span4 { + width: 100%; + } + + .openf2 .mainContainer footer h1 { + font-size: 20px; + } + + .openf2 .mainContainer footer h2 { + font-size: 18px; + } + + .openf2 .mainContainer footer .diskIcon, .openf2 .mainContainer footer .docIcon { + display: none; + } + + .openf2 .mainContainer footer .span5 { + margin-top: 0; + } + + .openf2 .mainContainer .letter .letterWrapper { + background: #ffffff; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent { + width: 100%; + height: auto; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .row { + padding-left: 10px; + } + + .openf2 .mainContainer .letter .letterWrapper .letterContent .first { + padding-top: 10px; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + + .navbar-fixed-top, .navbar-fixed-bottom { + position: static; + } + + .navbar-fixed-bottom { + margin-top: 20px; + } + + .openf2Header { + margin-bottom: 20px; + } + + .openf2 .openf2Header { + margin-bottom: 0; + padding-left: 20px; + padding-right: 20px; + } + + .navbar .container { + width: auto; + padding: 0; + } + + .navbar .brand { + margin-left: 20px; + } + + .openf2 .navbar .brand { + margin-left: 0; + } + + .navbarmini .navbar-fixed-top .brand { + padding: 30px 30px 10px 30px; + margin-top: 20px; + background: transparent url("../img/F2_logo.png") top left no-repeat; + } + + .nav-collapse { + clear: both; + } + + .nav-collapse.collapse.in { + background: #d8d8d8; + -webkit-box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + -moz-box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + box-shadow: inset 0 8px 8px -8px #696868, inset 0 -8px 8px -8px #696868; + } + + .nav-collapse .icon-triangleDown { + display: inline-block; + margin-top: 4px; + } + + .nav-collapse .nav.navinset { + width: auto; + height: auto; + display: block; + visibility: visible; + margin: 0; + } + + .nav-collapse .nav { + float: none; + margin: 0 0 5px; + } + + .nav-collapse .nav > li:first-child { + padding-top: 5px; + } + + .nav-collapse .nav > li { + float: none; + border-bottom: 1px solid #cac9c9; + border-top: 1px solid #e2e2e2; + } + + .navbarmini .navbar-fixed-top .nav-collapse .nav > li > a { + margin-bottom: 2px; + padding: 9px 15px; + } + + .nav-collapse .nav > .divider-vertical { + display: none; + } + + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + + .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + } + + .nav-collapse .dropdown-menu a { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + } + + .nav-collapse .nav.navinset > li { + border-bottom-color: #c0bebe; + border-top-color: #adadad; + } + + .nav-collapse .nav.navinset > li:first-child { + padding-top: 0; + } + + .nav-collapse .nav.navinset > li > a { + background-color: #b5b5b5; + margin: 0; + color: #333; + text-shadow: none; + } + + .navbarmini .nav-collapse .nav.navinset > li > a { + margin: 0; + padding-left: 25px; + } + + .nav-collapse .nav.navinset > li > a:hover, .nav-collapse .nav.navinset > li > a.active { + background-color: #00609c; + color: #ffffff; + } + + .nav-collapse .nav > li > a > .F2VersionIndicator { + top: auto; + bottom: 0; + left: 120px; + } + + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + + .nav-collapse .nav > li > a:hover, .nav-collapse .dropdown-menu a:hover { + background-color: #d8d8d8; + } + + .navbar-inverse .nav-collapse .nav > li > a:hover, .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #111111; + } + + .nav-collapse.in .btn-group { + margin-top: 5px; + padding: 0; + } + + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: block; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + + .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { + display: none; + } + + .nav-collapse .dropdown-menu .divider { + display: none; + } + + .nav-collapse .nav > li > .dropdown-menu:before, .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + + .nav-collapse .navbar-form, .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + + .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + + .nav-collapse, .nav-collapse.collapse { + overflow: hidden; + height: 0; + } + + .navbar .btn-navbar { + display: block; + margin-right: 20px; + } + + .openf2 .navbar .btn-navbar { + margin-right: 0; + } + + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } + + .navbar .nav > li.ghWrap { + border: 0 none; + display: none; + } + + .navbar .nav > li.ghWrapResp { + display: block; + visibility: visible; + height: auto; + border: 0 none; + } + + .navbarmini .navbar-fixed-top .navbar-text, .openf2 .navbar-inner .navbar-text { + line-height: 75px; + font-size: 13px; + margin-top: 2px; + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; + } + + .navbarmini .navbar-fixed-top .tagline-divider, .openf2 .navbar-inner .tagline-divider { + height: 38px; + margin: 20px 20px 0 20px; + -webkit-animation: fadeIn 0.6s; + -moz-animation: fadeIn 0.6s; + -ms-animation: fadeIn 0.6s; + } +} + +@media (min-width: 979px) and (-webkit-min-device-pixel-ratio: 2) { + .navbarmini .navbar-fixed-top .brand { + background-size: 18px 13px; + background-image: url("../img/mini_f2_logo_2x.png"); + } +} + +@media (max-width: 979px) and (-webkit-min-device-pixel-ratio: 2) { + .navbarmini .navbar-fixed-top .brand { + background-image: url("../img/F2_logoRetina.png"); + background-size: 56px 37px; + } +} + +@media (min-width: 480px) and (max-width: 767px) { + .tagline-divider, .navbar-text { + display: block !important; + } +} + +@media (max-width: 767px) { + .tagline-divider, .navbar-text { + display: none; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-moz-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-o-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-ms-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-moz-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-o-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@-ms-keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} + +@keyframes slideIn { + 0% { + opacity: 0; + left: 3%; + } + 100% { + left: 0; + opacity: 1; + } +} diff --git a/docs/css/prettify.css b/docs/css/prettify.css index c78578e2..b9b0e898 100644 --- a/docs/css/prettify.css +++ b/docs/css/prettify.css @@ -1,53 +1,119 @@ -.pln{color:#000} -@media screen{ - .str{color:#080} - .kwd{color:#008} - .com{color:#800} - .typ{color:#606} - .lit{color:#066} - .pun, - .opn, - .clo{color:#660} - .tag{color:#008} - .atn{color:#606} - .atv{color:#080} - .dec, - .var{color:#606} - .fun{color:red} +.pln { + color: #000 } -@media print,projection{ - .str{color:#060} - .kwd{color:#006;font-weight:bold} - .com{color:#600;font-style:italic} - .typ{color:#404;font-weight:bold} - .lit{color:#044} - .pun, - .opn, - .clo{color:#440} - .tag{color:#006;font-weight:bold} - .atn{color:#404} - .atv{color:#060} + +@media screen { + .str { + color: #080 + } + + .kwd { + color: #008 + } + + .com { + color: #800 + } + + .typ { + color: #606 + } + + .lit { + color: #066 + } + + .pun, + .opn, + .clo { + color: #660 + } + + .tag { + color: #008 + } + + .atn { + color: #606 + } + + .atv { + color: #080 + } + + .dec, + .var { + color: #606 + } + + .fun { + color: red + } +} + +@media print, projection { + .str { + color: #060 + } + + .kwd { + color: #006; + font-weight: bold + } + + .com { + color: #600; + font-style: italic + } + + .typ { + color: #404; + font-weight: bold + } + + .lit { + color: #044 + } + + .pun, + .opn, + .clo { + color: #440 + } + + .tag { + color: #006; + font-weight: bold + } + + .atn { + color: #404 + } + + .atv { + color: #060 + } } .prettyprint { - padding: 8px; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; + padding: 8px; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; } .prettyprint.linenums { - -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; - -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; - box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; } ol.linenums { - margin: 0 0 0 33px; /* IE indents via margin-left */ + margin: 0 0 0 33px; /* IE indents via margin-left */ } ol.linenums li { - padding-left: 12px; - color: #bebec5; - line-height: 20px; - text-shadow: 0 1px 0 #fff; + padding-left: 12px; + color: #bebec5; + line-height: 20px; + text-shadow: 0 1px 0 #fff; } \ No newline at end of file diff --git a/docs/extending-f2.html b/docs/extending-f2.html index 2aa8dabd..5a391970 100644 --- a/docs/extending-f2.html +++ b/docs/extending-f2.html @@ -1,201 +1,270 @@ - F2 - Extending F2 - - - - - - - - - - - - - - - - - - - - - - - + F2 - Extending F2 + + + + + + + + + + + + + + + + + + + + + + +
-
-
- -
- -
-
-
-

Extending F2

-
-

-At its core, F2 is an open framework. To create a truly open and flexible foundation with F2.js, F2 can be extended with custom plugins. Extending F2 with plugins provides direct access to F2.js SDK methods and can save your teams a lot of time. -

- -
-
-

Version 2

-
- -The F2 Team is working on a major revision to the F2 framework. Visit the project on GitHub to review the revisions draft, the F2.js code and v2 Issues. -
+
+
+ +
+ + +
+
+
+

Extending F2

+
+

+ At its core, F2 is an open framework. To create a truly open and flexible foundation with F2.js, F2 + can be extended with custom plugins. Extending F2 with plugins provides direct access to F2.js SDK + methods and can save your teams a lot of time. +

+ +
+
+

Version 2

-
-
-
-

Plugins

-

Now that you're comfortable with F2 and all the individual components of the framework, you are ready to extend F2 and add your own custom logic in the form of an F2 plugin.

-

There is a separate repository on GitHub dedicated to F2 plugin development. If you write a plugin you'd like to contribute back to the community, commit it to F2Plugins.

-

Download F2 Plugins View on GitHub

-
-
-
-

Example Plugin

-

Plugins are encapsulated in JavaScript closures as demonstrated below. There are three arguments which can be passed into F2.extend(): namespace, object, and overwrite. For full details, read the F2.js SDK documentation.

-
F2.extend('YourPluginName', (function(){
+                    
+ + The F2 Team is working on a major revision to the F2 framework. Visit the project on GitHub to + review the revisions draft, the F2.js code and v2 Issues. +
+ +
+
+
+

Plugins

+ +

Now that you're comfortable with F2 and all the individual components + of the framework, you are ready to extend F2 and add your own custom logic in the form of an + F2 plugin.

+ +

There is a separate repository on GitHub + dedicated to F2 plugin development. If you write a plugin you'd like to contribute back to the + community, commit it to F2Plugins.

+ +

Download F2 + Plugins View on + GitHub

+
+
+
+

Example Plugin

+ +

Plugins are encapsulated in JavaScript closures as demonstrated below. There are three arguments + which can be passed into F2.extend(): namespace, object, + and overwrite. For full details, read the F2.js SDK documentation. +

+
F2.extend('YourPluginName', (function(){
     return {
-        doSomething: function(){
-            F2.log("Something has been done.");
-        }
+    doSomething: function(){
+    F2.log("Something has been done.");
+    }
     };
-})());
-

To call your custom method shown above:

+ })());
+

To call your custom method shown above:

...
-F2.YourPluginName.doSomething();
-...
-

This method call writes Something has been done. to the Console.

-
-
-
-

Best Practices

-

The purpose of developing a plugin is to encapsulate clever logic in a single javascript function to save time and effort performing repetitive tasks. Here are some best practices to keep in mind:

-
    -
  • Always use F2.extend() and wrap your plugin in a closure.
  • -
  • Follow the module pattern as shown in the example above or the f2-storage.js example on GitHub.
  • -
  • Adhere to F2's guidelines when it comes to namespacing.
  • -
  • When passing options or data to the plugin, use data objects instead of n arguments. Cleanliness is key.
  • -
  • Don't overuse or clutter the F2 namespace with more custom plugins than you need.
  • -
-
-
-
-

Forum

-

Have a question? Ask it on the F2 Google Group.

-

-
-
-
-
-
- -
- - - -
+ F2.YourPluginName.doSomething(); + ... +

This method call writes Something has been done. to the Console.

+
+ +
+

Best Practices

+ +

The purpose of developing a plugin is to encapsulate clever logic in a single javascript function + to save time and effort performing repetitive tasks. Here are some best practices to keep in + mind:

+
    +
  • Always use F2.extend() and wrap your plugin in a closure.
  • +
  • Follow the module pattern as shown in the + example above or the f2-storage.js + example on GitHub. +
  • +
  • Adhere to F2's guidelines when it comes to namespacing. +
  • +
  • When passing options or data to the plugin, use data objects instead of n + arguments. Cleanliness is key. +
  • +
  • Don't overuse or clutter the F2 namespace with more custom plugins than you + need. +
  • +
+
+
+
+

Forum

+ +

Have a question? Ask it on the F2 Google + Group.

+ +

+ + +

+
+
+
+ +
+ +
+ + +
+ + + + + diff --git a/docs/f2js-sdk.html b/docs/f2js-sdk.html index 1c6a9218..68bda284 100644 --- a/docs/f2js-sdk.html +++ b/docs/f2js-sdk.html @@ -1,243 +1,369 @@ - F2 - F2.js SDK - - - - - - - - - - - - - - - - - - - - - - - + F2 - F2.js SDK + + + + + + + + + + + + + + + + + + + + + + +
-
-
- -
- -
-
-
-

F2.js SDK

-
-

-F2 enables you to efficiently create fully-integrated, multi-vendor, multi-asset class and multi-channel apps and deploy them in as many app ecosystems as you want. -

- -

Developers who adhere to the F2 standard will make it possible for multiple apps, developed independently by different organizations or individuals, to function together creating a seamless and integrated experience.

-
-
-

Version 2

-
- -The F2 Team is working on a major revision to the F2 framework. Visit the project on GitHub to review the revisions draft, the F2.js code and v2 Issues. -
+
+
+ +
+ + +
+
+
+

F2.js SDK

+
+

+ F2 enables you to efficiently create fully-integrated, multi-vendor, multi-asset class and + multi-channel apps and deploy them in as many app ecosystems as you want. +

+ +

Developers who adhere to the F2 standard will make it possible for multiple apps, developed + independently by different organizations or individuals, to function together creating a seamless + and integrated experience.

+
+
+

Version 2

+ +
+ + The F2 Team is working on a major revision to the F2 framework. Visit the project on GitHub to + review the revisions draft, the F2.js code and v2 Issues. +
+ +
+
+
+

F2.js

+ +

F2 is an open framework and to get Container and App Developers started, there is a JavaScript + SDK—called F2.js—in addition to example apps as part of an open-source project maintained on GitHub.

+
+
+
+

Download

+ +

Anyone is free to download F2.js from the F2 project + repository on GitHub. Once downloaded, F2.js can be added to any web page using a script + tag:

+
<script src="/path/to/your/container/f2.js"></script>
+

The latest version of F2.js is 1.3.3.

+ +

+ Download F2.js 1.3.3 View on + GitHub +

+ +
+

Packages

-
-
-
-

F2.js

-

F2 is an open framework and to get Container and App Developers started, there is a JavaScript SDK—called F2.js—in addition to example apps as part of an open-source project maintained on GitHub.

-
-
-
-

Download

-

Anyone is free to download F2.js from the F2 project repository on GitHub. Once downloaded, F2.js can be added to any web page using a script tag:

-
<script src="/path/to/your/container/f2.js"></script>
-

The latest version of F2.js is 1.3.3.

-

-Download F2.js 1.3.3 View on GitHub -

- -
-

Packages

-

Packages are variants of F2.js. They are ideally used when, for example, a container already has jQuery or sandboxed apps aren't needed. In circumstances where not all F2 features are required, Container Providers can use smaller, faster, lighter-weight versions of F2.js. Choose one below:

- -

For more information on the libraries used by F2, see Third Party Libraries below.

-
-
-
-
-

Versioning

-

The latest version of F2.js will always be in the root of the project, and the version number can be found embedded in the code. The version number is also available on the command line by using:

-

$> grunt version.

-

In accordance with industry standards, F2 is currently maintained, in as far as reasonably possible, under the Semantic Versioning guidelines.

-

Releases will be numbered with the following format:

-

<major>.<minor>.<patch>

-

For more information on SemVer, please visit SemVer.org.

-
-
-
-

Upgrading

-

It is our goal to make upgrading to the latest version of F2 a minor effort for development teams. The details from each release of F2, minor and major, are tracked in the changelog. As of version 1.2, no breaking changes have been introduced and therefore upgrading should be as simple as downloading the latest copy of F2.js and updating your website.

-

Developers can quick-link to the latest copy of F2.js:

-

https://raw.github.com/OpenF2/F2/master/F2.latest.js

-

Note GitHub is not a CDN.

-

A download (zip) of the current version (1.3.3) of F2 is always available along with tags of previous releases.

-
-

Deprecated Features

-

There is a page on the wiki tracking deprecated features in F2. Starting with version 1.2, three ContainerConfig properties have been retired. As F2 features and/or F2.js APIs are deprecated, we will attempt to give reasonable advance notice via any or all of the F2 communication channels. In addition, we will strive to ensure that backward compatibility will be maintained for at least one major version of F2. For example, if Feature X is deprecated in version 1.3, we will attempt to maintain backward compatibility until the next major release (version 2.0). F2 documentation will be updated accordingly to reflect any changes, and the conversation behind deprecated features will be publicly available on GitHub.

-
-
-

Third Party Libraries

-

F2 uses third party libraries inside F2.js (see Framework: Choices). These open-source libraries are all on their own release schedules. We cannot guarantee that we will always stay abreast and in tune with such latest releases, but in an effort to improve the F2 framework, we will attempt to update F2.js so that it uses the latest, most stable and most secure version of the third party software. These updates to F2 will be made through the normal release process on GitHub and comments will be open.

-
-
-
-

Issues, Enhancements, Bugs

-

Have a question? Ask it on the F2 Google Group (or send an email to ) or start a discussion using Issues on GitHub.

-

To track bugs, enhancements or other issues, F2 is using Issues on GitHub.

-
-
-
-

License

-

F2 is licensed under the Apache License version 2.0. Details are available in the project readme.

-
-
-
-
- -
- - - -
+

Packages are variants of F2.js. They are ideally used when, for example, a container already + has jQuery or sandboxed + apps aren't needed. In circumstances where not all F2 features are required, + Container Providers can use smaller, faster, lighter-weight versions of F2.js. Choose one + below:

+ +

For more information on the libraries used by F2, see Third + Party Libraries below.

+
+ + +
+

Versioning

+ +

The latest version of F2.js will always be in the root of the project, and the version number can + be found embedded in the code. The version number is also available on the command line by + using:

+ +

$> grunt version.

+ +

In accordance with industry standards, F2 is currently maintained, in as far as reasonably + possible, under the Semantic Versioning guidelines.

+ +

Releases will be numbered with the following format:

+ +

<major>.<minor>.<patch>

+ +

For more information on SemVer, please visit SemVer.org.

+
+
+
+

Upgrading

+ +

It is our goal to make upgrading to the latest version of F2 a minor effort for development + teams. The details from each release of F2, minor and major, are tracked in the changelog. As of version 1.2, no + breaking changes have been introduced and therefore upgrading should be as simple as downloading the latest copy + of F2.js and updating your website.

+ +

Developers can quick-link to the latest copy of F2.js:

+ +

https://raw.github.com/OpenF2/F2/master/F2.latest.js

+ +

Note GitHub is not + a CDN.

+ +

A download (zip) of the current version + (1.3.3) of F2 is always available along with tags + of previous releases.

+
+

Deprecated Features

+ +

There is a page on the wiki tracking + deprecated features in F2. Starting with version 1.2, three ContainerConfig + properties have been retired. As F2 features and/or F2.js APIs are deprecated, we will + attempt to give reasonable advance notice via any or all of the F2 communication + channels. In addition, we will strive to ensure that backward compatibility will be + maintained for at least one major version of F2. For example, if Feature X is + deprecated in version 1.3, we will attempt to maintain backward compatibility + until the next major release (version 2.0). F2 documentation will be updated + accordingly to reflect any changes, and the conversation behind deprecated features will be + publicly available on GitHub.

+
+
+

Third Party Libraries

+ +

F2 uses third party libraries inside F2.js (see Framework: + Choices). These open-source libraries are all on their own release schedules. We cannot + guarantee that we will always stay abreast and in tune with such latest releases, but in an + effort to improve the F2 framework, we will attempt to update F2.js so that it uses the + latest, most stable and most secure version of the third party software. These updates to F2 + will be made through the normal release process on GitHub and comments will be open.

+
+
+
+

Issues, Enhancements, Bugs

+ +

Have a question? Ask it on the F2 Google + Group (or send an email to + + + ) or start a discussion using Issues on + GitHub.

+

To track bugs, enhancements or other issues, F2 is using Issues on GitHub.

+
+
+
+

License

+ +

F2 is licensed under the Apache License version 2.0. Details are available in the project readme.

+
+
+ +
+ +
+ + +
+ + + + + diff --git a/docs/index.html b/docs/index.html index b8a7e205..927ca732 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,392 +1,634 @@ - F2 - About F2 - - - - - - - - - - - - - - - - - - - - - - - - - - + F2 - About F2 + + + + + + + + + + + + + + + + + + + + + + + + + +
-
-
- -
- -
-
-
-

About F2

-
-

-F2 is an open and free web integration framework designed to help you and other financial industry participants develop custom solutions that combine the best tools and content from multiple providers into one, privately-labeled, seamlessly integrated front-end. -

- -

The essential components defined by the F2 specification are the container, apps, context and store—all supported under the hood by F2.js, a JavaScript SDK which provides an extensible foundation powering all F2-based web applications.

-

You can use the F2 framework to build:

-
    -
  • Customized solutions that include only the content, tools, and providers that you want,
  • -
  • Private-labeled solutions that are true to your design standards and branding elements,
  • -
  • User-customized experiences that remember each user's entitlements and preferences,
  • -
  • Reusable apps that you can develop once and use cross-platform on web, tablet and mobile devices,
  • -
  • A multi-vendor environment that enables each vendor to use a shared authentication scheme and to communicate context to each other so that they can act together as one.
  • -
-
-
-

Version 2

-
- -The F2 Team is working on a major revision to the F2 framework. Visit the project on GitHub to review the revisions draft, the F2.js code and v2 Issues. -
+
+
+ +
+ + +
+
+
+

About F2

+
+

+ F2 is an open and free web integration framework designed to help you and other financial industry + participants develop custom solutions that combine the best tools and content from multiple + providers into one, privately-labeled, seamlessly integrated front-end. +

+ +

The essential components defined by the F2 specification are the container, + apps, context and store—all supported under the hood by F2.js, a JavaScript SDK + which provides an extensible foundation powering all F2-based web applications.

+ +

You can use the F2 framework to build:

+
    +
  • Customized solutions that include only the content, tools, and providers that you want,
  • +
  • Private-labeled solutions that are true to your design standards and branding elements,
  • +
  • User-customized experiences that remember each user's entitlements and preferences,
  • +
  • Reusable apps that you can develop once and use cross-platform on web, tablet and mobile + devices, +
  • +
  • A multi-vendor environment that enables each vendor to use a shared authentication scheme and to + communicate context to each other so that they can act together as one. +
  • +
+
+
+

Version 2

+ +
+ + The F2 Team is working on a major revision to the F2 framework. Visit the project on GitHub to + review the revisions draft, the F2.js code and v2 Issues. +
+ +
+
+
+

Who

+ +

The F2 concept was born in Boulder, Colorado at Markit On + Demand (MOD). F2 was brought to life through conversations with industry partners who + individually express common frustrations and desire a coordinated solution.

+ +

MOD's development team is committed to following the technical guidelines defined by the F2 + standard and actively contribute enhancements to future F2 releases.

+
+

Advisory Board

+ +

The F2 Advisory Board is an independent forum comprised of supportive industry participants. + The Board’s purpose is to ensure that the F2 specification evolves to meet the needs of the + industry. Advice, guidance and thought-leadership from the collective community are integral + to the success of F2.

+ +

For more information about the F2 Advisory Board please contact + + + .

+
+
+
+
+

Why

+ +

F2's goal is to create a development standard for the financial services industry that offers a + cost saving, risk-reducing method for building innovative, multi-provider solutions. In order to + do this effectively, F2 provides solutions that address shared industry hurdles and + concerns.

+ +

Because the spec is open, free, and exactly what the industry needs, we believe that it will be + widely adopted, which will create new markets for app developers, content providers, and create + vibrant app ecosystems for participants.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Industry Problem + + F2 Solution +
+ Monolithic Systems
Monolithic, installed code bases that are closed and + expensive to enhance. When a "redesign" occurs on this type of platform, it's + usually a do-over, from the ground-up. Integration is difficult. +
+
Nimble, modern use of internet-delivery with a multi-vendor approach. Standardized + framework used by all parties. Cost-effective and shorter development cycles. +
+ Big Bang
Big Bang approaches stifle innovation and require significant + investment in the integration of legacy systems. Buy-in from many stakeholders is + essential and difficult to manage. Entire platforms must be redeveloped in order to make + cut-overs. There are more bugs and problems at launch and unhappy users. +
+
In the F2 environment you will be able to compete on features. It is easy to + progressively make changes, enhancements, onboard new applications, switch content + providers with little risk and migrate users and tools to the platform gradually as time + and resources allow. Containers may also host previous versions of websites and apps to + further simplify migration. +
+ Single Channel
Separate projects, budgets and teams for web sites, tablets + and hand-held devices. +
+
The F2 specification describes how to develop one framework that can be managed to + many devices. +
+ Security
Security concerns are a major reason firms worry about switching + vendors or to a new technology. +
+
F2 can entitle apps without passing sensitive client information to a third party + app provider. This multi-provider solution is more secure and less vulnerable than + single-provider solutions. +
+ Over-Provisioning
Over-provisioning of content happens frequently. It is + expensive to pay for content that no one is using. This probably happens because it is + difficult to manage and change entitlements. +
+
The F2 spec makes it easy to turn on or off entitlements as often as may be + required. +
+ +
+
+
+

Spec Management

+ +

F2 will continuously evolve to bring the community the best features, services and apps. F2's + promise is to do this by building on the existing spec, not by changing it. The specification + aims high to solve many problems and suit many needs. As the standard evolves and new + requirements come to light, the functionality in F2 will expand accordingly.

+ +

To achieve steady growth and stable release cycles, F2 will be maintained under the Semantic + Versioning guidelines as much as possible. For more information, browse to the readme on GitHub.

+ +

.

+
+

Track

+ +

F2 v1.0 was released on October 15, 2012. The latest version of the F2 specification is 1.3.3 + released on 7 April 2014. To provide transparency into the future of F2, a roadmap wiki will + be available on GitHub. A changelog + that tracks version-to-version changes, upgrades and deprecated features will offer a + historical look at F2's evolution.

+ +

Note There is a separate changelog for the F2.js SDK which is currently version 1.3.3.

+
+
+

Collaborate

+ +

The F2 specification and the F2.js JavaScript library are open-source projects managed on + GitHub. F2 chose this route to allow developers to contribute to the success of both the + open standard and SDKs. GitHub's tools make collaboration easy, and you can get started + contributing today.

+ +

All contributors will be expected to follow consistent standards and guidelines when + contributing to F2. Direct inquiries to + + + or post a question on the F2 mailing + list.

+
+
+

Notational Conventions

+ +

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", + "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", + "MAY", and "OPTIONAL" in this document are to be interpreted as + described in RFC 2119. For readability, + these words do not appear in all uppercase letters in this specification.

+
+
+
+
+

Framework

-
-
-
-

Who

-

The F2 concept was born in Boulder, Colorado at Markit On Demand (MOD). F2 was brought to life through conversations with industry partners who individually express common frustrations and desire a coordinated solution.

-

MOD's development team is committed to following the technical guidelines defined by the F2 standard and actively contribute enhancements to future F2 releases.

-
-

Advisory Board

-

The F2 Advisory Board is an independent forum comprised of supportive industry participants. The Board’s purpose is to ensure that the F2 specification evolves to meet the needs of the industry. Advice, guidance and thought-leadership from the collective community are integral to the success of F2.

-

For more information about the F2 Advisory Board please contact .

-
-
-
-
-

Why

-

F2's goal is to create a development standard for the financial services industry that offers a cost saving, risk-reducing method for building innovative, multi-provider solutions. In order to do this effectively, F2 provides solutions that address shared industry hurdles and concerns.

-

Because the spec is open, free, and exactly what the industry needs, we believe that it will be widely adopted, which will create new markets for app developers, content providers, and create vibrant app ecosystems for participants.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Industry Problem - -F2 Solution -
-Monolithic Systems
Monolithic, installed code bases that are closed and expensive to enhance. When a "redesign" occurs on this type of platform, it's usually a do-over, from the ground-up. Integration is difficult. -
-
Nimble, modern use of internet-delivery with a multi-vendor approach. Standardized framework used by all parties. Cost-effective and shorter development cycles. -
-Big Bang
Big Bang approaches stifle innovation and require significant investment in the integration of legacy systems. Buy-in from many stakeholders is essential and difficult to manage. Entire platforms must be redeveloped in order to make cut-overs. There are more bugs and problems at launch and unhappy users. -
-
In the F2 environment you will be able to compete on features. It is easy to progressively make changes, enhancements, onboard new applications, switch content providers with little risk and migrate users and tools to the platform gradually as time and resources allow. Containers may also host previous versions of websites and apps to further simplify migration. -
-Single Channel
Separate projects, budgets and teams for web sites, tablets and hand-held devices. -
-
The F2 specification describes how to develop one framework that can be managed to many devices. -
-Security
Security concerns are a major reason firms worry about switching vendors or to a new technology. -
-
F2 can entitle apps without passing sensitive client information to a third party app provider. This multi-provider solution is more secure and less vulnerable than single-provider solutions. -
-Over-Provisioning
Over-provisioning of content happens frequently. It is expensive to pay for content that no one is using. This probably happens because it is difficult to manage and change entitlements. -
-
The F2 spec makes it easy to turn on or off entitlements as often as may be required. -
- -
-
-
-

Spec Management

-

F2 will continuously evolve to bring the community the best features, services and apps. F2's promise is to do this by building on the existing spec, not by changing it. The specification aims high to solve many problems and suit many needs. As the standard evolves and new requirements come to light, the functionality in F2 will expand accordingly.

-

To achieve steady growth and stable release cycles, F2 will be maintained under the Semantic Versioning guidelines as much as possible. For more information, browse to the readme on GitHub.

-

.

-
-

Track

-

F2 v1.0 was released on October 15, 2012. The latest version of the F2 specification is 1.3.3 released on 7 April 2014. To provide transparency into the future of F2, a roadmap wiki will be available on GitHub. A changelog that tracks version-to-version changes, upgrades and deprecated features will offer a historical look at F2's evolution.

-

Note There is a separate changelog for the F2.js SDK which is currently version 1.3.3.

-
-
-

Collaborate

-

The F2 specification and the F2.js JavaScript library are open-source projects managed on GitHub. F2 chose this route to allow developers to contribute to the success of both the open standard and SDKs. GitHub's tools make collaboration easy, and you can get started contributing today.

-

All contributors will be expected to follow consistent standards and guidelines when contributing to F2. Direct inquiries to or post a question on the F2 mailing list.

-
-
-

Notational Conventions

-

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. For readability, these words do not appear in all uppercase letters in this specification.

-
-
-
-
-

Framework

-

The F2 open framework enables a division of labor among multiple parties who contribute to an integrated experience. By separating responsibilities into those of container and apps, F2 makes it possible for project owners to pick who they want to partner with, if anyone, for the development and hosting of their container and the apps they wish to include.

-

Following are definitions for the main F2 Framework components: the apps, the container, and the store.

-
-

Choices

-

In order to ensure that applications built using F2 are successful, they must be accessible. With this in mind, the front-end technology choice is HTML5. Using the progressive enhancement methodology, F2 incorporates a rock-solid foundation. The F2 open standard provides guidelines for developers to add feature enhancements targeting specific environments or visitors. For example, F2 apps built following the mobile first design approach and with responsive CSS, allow users to access the apps on their desktop, tablet or smartphone and App Developers only need to build a single app.

-

Support across all desktop browsers and mobile devices is sometimes limited so F2 includes some third-party web development libraries to bridge those gaps. Why reinvent the wheel, right?

-
    -
  • F2 uses and recommends Bootstrap for a consistent HTML & CSS structure for app development regardless of App Developer.
  • -
  • F2 relies on data structures represented in JSON, so it incorporates Crockford's JSON.
  • -
  • To support a secured container environment, F2 needs cross-domain in-browser messaging. For this, it relies on easyXDM.
  • -
-

As either an App or a Container Developer, it's helpful to know these third-party libraries are included in F2. But it's more important to know the F2.js JavaScript SDK provides a consistent interface and easy-to-use API so you don't have to think about it.

-

Important F2 continues to leverage Bootstrap as the means to achieve consistent HTML & CSS structures—and therefore seamless styling—between containers and apps. F2 has not upgraded to Bootstrap 3, the latest officially-supported Bootstrap version is 2.3.2. Read the blog post for more information on using Bootstrap 3 today.

-
-
-

Apps

-

F2 apps are synonymous with modules, widgets and portlets. Think charts, portfolios, trade tickets, and screeners. F2 apps only need to be programmed once, no matter where they will be used.

-

F2 apps are small web pages, consisting of HTML, CSS, JavaScript and entitled data. Consumers of apps may access, purchase or entitle them from the store, and the apps are displayed through the container. An F2 App Developer is the person or company that designs, develops, and hosts the app.

-
-
-
-

F2 apps are either:

-
-
-Display App -
-
-A display app presents information to users in the form of a visible widget (using HTML, CSS, and JavaScript). -
-
-Data App -
-
-A data app is a content feed available in industry-standard formats including JSON, JSONP, RSS or custom-designed XML. -
-
- -

The F2 specification furnishes App Developers with JavaScript code (the F2.js SDK) which allows apps to run on the container and provides APIs for communication between the container and nearby apps.

-
-

Methodology

-

The F2 design and development philosophy adheres to the Responsive Web Design Methodology to ensure app flexibility across mobile and desktop workspaces. Simply put, apps will only need to be programmed once, regardless of where they will be used.

-
-
-

Context

-

Apps are capable of sharing "context" with the container and other nearby apps. All apps have context which means the app "knows" who is using it and the content it contains. It is aware of an individual's data entitlements and user information that the container is requested to share (name, email, company, etc).

-
-
-
-

This means if a user wants to create a ticker-focused container so they can keep a close eye on shares of Proctor & Gamble, the container can send "symbol context" to any listening apps that are smart enough to refresh when ticker symbol PG is entered in the container's search box.

-

While apps can have context themselves, the responsibility for managing context switching or context passing falls on the container. The container assumes the role of a traffic cop—managing which data goes where. By using JavaScript events, the container can listen for events sent by apps and likewise apps can listen for events sent by the container. To provide a layer of security, this means apps cannot communicate directly with other apps on their own; apps must communicate via an F2 container to other apps.

-
-
-
-
-
-
-

Container

-

The F2 container is a web page that is "aware" of its contents (the apps) and plays the role of a traffic cop managing context passing between F2 apps (when more than one exists in a container). It is also the layer between the browser and apps, and the location where apps reside.

-

A container can have any variation of intelligence on a wide spectrum which means it can provide data in-memory or via web services to apps or simply host the F2 JavaScript SDK. It is multi-channel so it can deliver capabilities via the Internet to desktops, tablets and smartphones.

-

Each Container Provider, or person or company hosting a container, is responsible for including the F2 JavaScript SDK. The SDK (F2.js) provides a consistent means for all app developers to load their apps on any container regardless of where it is hosted, who developed it, or what back-end stack it uses.

-
-
-
-
-

Grid

-

In order to make it so that apps look good together in a multi-provider environment, the spec recommends that each app adhere to a standard, container-controlled grid. F2 relies on a responsive, 12-column grid system which is flexible enough to accommodate everyone's needs.

-
-
-
-
-
-

Creating a Common Look and Feel

-

The F2 standard outlines a consistent HTML structure and CSS classname convention so neither Container Developers nor App Developers have to think about harmonizing look and feel. Container Providers can create a customized stylesheet, and the selectors and declarations they define in CSS will cascade to their containers' apps. Separately, apps can define a preferred resolution (in grid widths) for containers to position them appropriately within the grid.

-

App Designers and Developers can take advantage of the F2 documentation and Javascript SDK to develop apps on their own schedules. App Designers should adhere to Container Provider design guidelines which should offer a baseline for consistency between all apps on the container.

-
-
-

Single App Displays

-

While F2 is designed to handle several apps being displayed simultaneously, it doesn't have to. The spec also permits full screen, single-provider displays. This is a useful feature for container owners who need to incorporate legacy, full screen content with the least amount of effort.

-
-
-

Container Responsibilities

-

Examples of work the container, and therefore the Container Provider, are responsible for include:

-
    -
  • Configuration preferences
  • -
  • Common user-specific menus
  • -
  • Federated search
  • -
  • Framing of apps on the grid
  • -
  • Single-sign on
  • -
  • Etc
  • -
-
-
-
-

The Store

-

The store exists as an access point for apps. Developers deliver apps to the store, administrators entitle apps, and app consumers may view and select apps from the store.

-

The store is also where the general F2 community goes to share, view, administer, purchase and entitle apps. App consumers can buy apps using an electronic payment mechanism (like a credit card), charge-back to their company, be entitled by a vendor or another business relationship or activate time-based, usage-based or free trials. The contents of the store, meaning the apps that are accessible, are controlled by the container owner.

-
-
-
-
-

Developer Center

-

The Developer Center will serve as a resource area for the F2 Developer community. Some of the content and services you can expect to find here include:

-
    -
  • F2 spec and related documentation
  • -
  • Sample apps
  • -
  • Code samples
  • -
  • Best practices for developing high-quality apps
  • -
  • App registration with Container Providers
  • -
  • App management
  • -
-
-
-
-

Get Started

-

F2 enables all of us to build exactly the financial solutions that our customers want. Using the F2 Framework, you can efficiently create fully-integrated, multi-vendor, multi-asset class and multi-channel apps and deploy them in as many app ecosystems as you want.

-

Developers who adhere to the F2 standard will make it possible for multiple apps, developed independently by different organizations, to function together creating a seamless and integrated experience.

-

F2 is an open framework meaning anyone can build individual components or the entire product. To get Container and App Developers started, there is a JavaScript SDK—called F2.js—in addition to example apps as part of an open-source project maintained on GitHub.

-

If you are interested in building apps, get started by browsing through this technical documentation or follow the project on GitHub. If you are interested in building containers, browse to the container documentation.

-

-

Build an F2 App or Build an F2 Container

-
-
-
-
-
- -
- - - -
+

The F2 open framework enables a division of labor among multiple parties who contribute to an + integrated experience. By separating responsibilities into those of container and apps, F2 makes + it possible for project owners to pick who they want to partner with, if anyone, for the + development and hosting of their container and the apps they wish to include.

+ +

Following are definitions for the main F2 Framework components: the apps, the container, and the + store.

+
+

Choices

+ +

In order to ensure that applications built using F2 are successful, they must be accessible. + With this in mind, the front-end technology choice is HTML5. Using the progressive + enhancement methodology, F2 incorporates a rock-solid foundation. The F2 open + standard provides guidelines for developers to add feature enhancements targeting specific + environments or visitors. For example, F2 apps built following the mobile first design approach and + with responsive CSS, allow + users to access the apps on their desktop, tablet or smartphone and App Developers only need + to build a single app.

+ +

Support across all desktop browsers and mobile devices is sometimes limited so F2 includes + some third-party web development libraries to bridge those gaps. Why reinvent the wheel, + right?

+
    +
  • F2 uses and recommends Bootstrap for a + consistent HTML & CSS structure for app development regardless of App Developer. +
  • +
  • F2 relies on data structures represented in JSON, so it incorporates Crockford's JSON. +
  • +
  • To support a secured container environment, F2 needs cross-domain in-browser messaging. + For this, it relies on easyXDM. +
  • +
+

As either an App or a Container Developer, it's helpful to know these third-party libraries + are included in F2. But it's more important to know the F2.js + JavaScript SDK provides a consistent interface and easy-to-use API so you don't have + to think about it.

+ +

Important F2 continues to leverage Bootstrap as + the means to achieve consistent HTML & CSS structures—and therefore seamless + styling—between containers and apps. F2 has not upgraded to Bootstrap 3, the latest officially-supported Bootstrap version is + 2.3.2. Read the blog + post for more information on using Bootstrap 3 today.

+
+
+

Apps

+ +

F2 apps are synonymous with modules, widgets and portlets. Think charts, portfolios, trade + tickets, and screeners. F2 apps only need to be programmed once, no matter where they will + be used.

+ +

F2 apps are small web pages, consisting of HTML, CSS, JavaScript and entitled data. Consumers + of apps may access, purchase or entitle them from the store, and the apps are displayed + through the container. An F2 App Developer is the person or company that designs, develops, + and hosts the app.

+
+ +
+
+

F2 apps are either:

+
+
+ Display App +
+
+ A display app presents information to users in the form of a visible widget (using HTML, + CSS, and JavaScript). +
+
+ Data App +
+
+ A data app is a content feed available in industry-standard formats including JSON, + JSONP, RSS or custom-designed XML. +
+
+ +

The F2 specification furnishes App Developers with JavaScript code (the + F2.js SDK) which allows apps to run on the container and provides APIs for communication + between the container and nearby apps.

+
+

Methodology

+ +

The F2 design and development philosophy adheres to the Responsive Web Design Methodology + to ensure app flexibility across mobile and desktop workspaces. Simply put, apps will + only need to be programmed once, regardless of where they will be used.

+
+
+

Context

+ +

Apps are capable of sharing "context" with the container and other nearby apps. + All apps have context which means the app "knows" who is using it and the + content it contains. It is aware of an individual's data entitlements and user + information that the container is requested to share (name, email, company, etc).

+
+ +
+
+

This means if a user wants to create a ticker-focused container so they can keep a close + eye on shares of Proctor & Gamble, the container can send "symbol context" + to any listening apps that are smart enough to refresh when ticker symbol PG is entered + in the container's search box.

+ +

While apps can have context themselves, the responsibility for managing context switching + or context passing falls on the container. The container assumes the role of a traffic + cop—managing which data goes where. By using JavaScript events, the container can listen + for events sent by apps and likewise apps can listen for events sent by the container. + To provide a layer of security, this means apps cannot communicate directly with other + apps on their own; apps must communicate via an F2 container to other apps.

+
+ +
+
+
+
+
+

Container

+ +

The F2 container is a web page that is "aware" of its contents (the apps) and plays + the role of a traffic cop managing context passing between F2 apps (when more than one + exists in a container). It is also the layer between the browser and apps, and the location + where apps reside.

+ +

A container can have any variation of intelligence on a wide spectrum which means it can + provide data in-memory or via web services to apps or simply host the F2 JavaScript SDK. It + is multi-channel so it can deliver capabilities via the Internet to desktops, tablets and + smartphones.

+ +

Each Container Provider, or person or company hosting a container, is responsible for + including the F2 JavaScript SDK. The SDK (F2.js) provides a consistent means for all app + developers to load their apps on any container regardless of where it is hosted, who + developed it, or what back-end stack it uses.

+
+ +
+
+
+

Grid

+ +

In order to make it so that apps look good together in a multi-provider environment, the + spec recommends that each app adhere to a standard, container-controlled grid. F2 relies + on a responsive, 12-column grid system which is flexible enough to accommodate + everyone's needs.

+
+ +
+
+
+
+

Creating a Common Look and Feel

+ +

The F2 standard outlines a consistent HTML structure and CSS classname convention so + neither Container Developers nor App Developers have to think about harmonizing look and + feel. Container Providers can create a customized stylesheet, and the selectors and + declarations they define in CSS will cascade to their containers' apps. Separately, apps + can define a preferred resolution (in grid widths) for containers to position them + appropriately within the grid.

+ +

App Designers and Developers can take advantage of the F2 documentation and Javascript + SDK to develop apps on their own schedules. App Designers should adhere to Container + Provider design guidelines which should offer a baseline for consistency between all + apps on the container.

+
+
+

Single App Displays

+ +

While F2 is designed to handle several apps being displayed simultaneously, it doesn't + have to. The spec also permits full screen, single-provider displays. This is a useful + feature for container owners who need to incorporate legacy, full screen content with + the least amount of effort.

+
+
+

Container Responsibilities

+ +

Examples of work the container, and therefore the Container Provider, are responsible for + include:

+
    +
  • Configuration preferences
  • +
  • Common user-specific menus
  • +
  • Federated search
  • +
  • Framing of apps on the grid
  • +
  • Single-sign on
  • +
  • Etc
  • +
+
+
+
+

The Store

+ +

The store exists as an access point for apps. Developers deliver apps to the store, + administrators entitle apps, and app consumers may view and select apps from the store.

+ +

The store is also where the general F2 community goes to share, view, administer, purchase + and entitle apps. App consumers can buy apps using an electronic payment mechanism (like a + credit card), charge-back to their company, be entitled by a vendor or another business + relationship or activate time-based, usage-based or free trials. The contents of the store, + meaning the apps that are accessible, are controlled by the container owner.

+
+
+ +
+

Developer Center

+ +

The Developer Center will serve as a resource area for the F2 Developer community. Some of the + content and services you can expect to find here include:

+
    +
  • F2 spec and related documentation
  • +
  • Sample apps
  • +
  • Code samples
  • +
  • Best practices for developing high-quality apps
  • +
  • App registration with Container Providers
  • +
  • App management
  • +
+
+
+
+

Get Started

+ +

F2 enables all of us to build exactly the financial solutions that our customers want. Using the + F2 Framework, you can efficiently create fully-integrated, multi-vendor, multi-asset class and + multi-channel apps and deploy them in as many app ecosystems as you want.

+ +

Developers who adhere to the F2 standard will make it possible for multiple apps, developed + independently by different organizations, to function together creating a seamless and + integrated experience.

+ +

F2 is an open framework meaning anyone can build individual components or the entire product. To + get Container and App Developers started, there is a JavaScript SDK—called F2.js—in addition to example apps as part of an open-source + project maintained on GitHub.

+ +

If you are interested in building apps, get started by browsing + through this technical documentation or follow the project on GitHub. If you are interested + in building containers, browse to the container + documentation.

+ +

+ +

Build an F2 App or Build an F2 Container

+
+
+
+ +
+ +
+ + +
+ + + + + diff --git a/docs/js/docs.js b/docs/js/docs.js index c2f37de5..7cab2b5a 100644 --- a/docs/js/docs.js +++ b/docs/js/docs.js @@ -14,7 +14,8 @@ if (!String.prototype.supplant) { } //F2 docs -var F2Docs = function(){ } +var F2Docs = function () { +} //shortcut F2Docs.fn = F2Docs.prototype; @@ -22,299 +23,306 @@ F2Docs.fn = F2Docs.prototype; /** * Init */ -F2Docs.fn.init = function() { - - this.navbarDocsHelper(); - this.bindEvents(); - this.buildLeftRailToc(); - this.buildBookmarks(); - this.formatSourceCodeElements(); - - //on page-load, animate page into place (after css transition is done on header) - if (location.hash != '') { - setTimeout($.proxy(function(){ - this._animateAnchor(null,false,location.hash); - },this),600); - } - - /* removed b/c this removes 'active' class on top-level "Docs" nav
  • . weird. - $('body').scrollspy();*/ - - //affix left nav - $('#toc > ul.nav').affix(); +F2Docs.fn.init = function () { + + this.navbarDocsHelper(); + this.bindEvents(); + this.buildLeftRailToc(); + this.buildBookmarks(); + this.formatSourceCodeElements(); + + //on page-load, animate page into place (after css transition is done on header) + if (location.hash != '') { + setTimeout($.proxy(function () { + this._animateAnchor(null, false, location.hash); + }, this), 600); + } + + /* removed b/c this removes 'active' class on top-level "Docs" nav
  • . weird. + $('body').scrollspy();*/ + + //affix left nav + $('#toc > ul.nav').affix(); } /** * Events */ -F2Docs.fn.bindEvents = function(){ - this._setupBodyContentAnchorClick(); - this._watchScrollSpy(); +F2Docs.fn.bindEvents = function () { + this._setupBodyContentAnchorClick(); + this._watchScrollSpy(); } -/** +/** * Highlight Basics or Development nav item, based on filename */ -F2Docs.fn.navbarDocsHelper = function(){ - var $toc = $('ul','div.navbar-docs') - $collapsedNavToc = $('ul.navinset','div.navbar-inner'), - file = location.pathname.split('/').pop(), - urlMap = { - "basics": "index.html", - "development": "app-development.html", - "developmentC": "container-development.html", - "developmentE": "extending-f2.html", - "developmentF": "f2js-sdk.html" - }; - - //remove all - $toc.find("a").removeClass("active"); - - //add active class to blue,green or orange subnav item - if (file == urlMap.basics || !file){ - _setActive(0,$toc); - _setActive(0,$collapsedNavToc); - this.currentPage = "basics"; - } else if ( - file == urlMap.development || - file == urlMap.developmentC || - file == urlMap.developmentE || - file == urlMap.developmentF - ){ - _setActive(1,$toc); - _setActive(1,$collapsedNavToc); - this.currentPage = "development"; - } - - function _setActive(eq,$ul){ - $ul.find("li").eq(eq).find("a").addClass("active"); - } +F2Docs.fn.navbarDocsHelper = function () { + var $toc = $('ul', 'div.navbar-docs') + $collapsedNavToc = $('ul.navinset', 'div.navbar-inner'), + file = location.pathname.split('/').pop(), + urlMap = { + "basics": "index.html", + "development": "app-development.html", + "developmentC": "container-development.html", + "developmentE": "extending-f2.html", + "developmentF": "f2js-sdk.html" + }; + + //remove all + $toc.find("a").removeClass("active"); + + //add active class to blue,green or orange subnav item + if (file == urlMap.basics || !file) { + _setActive(0, $toc); + _setActive(0, $collapsedNavToc); + this.currentPage = "basics"; + } else if ( + file == urlMap.development || + file == urlMap.developmentC || + file == urlMap.developmentE || + file == urlMap.developmentF + ) { + _setActive(1, $toc); + _setActive(1, $collapsedNavToc); + this.currentPage = "development"; + } + + function _setActive(eq, $ul) { + $ul.find("li").eq(eq).find("a").addClass("active"); + } } /** - * Mapping + * Mapping * Don't reorder these without consequences in this._getCurrentDevSubSection() * Adding to them is fine. */ F2Docs.fn.devSubSections = { - "App Development": "app-development.html", - "Container Development":"container-development.html", - "Extending F2": "extending-f2.html", - "F2.js SDK": "f2js-sdk.html" + "App Development": "app-development.html", + "Container Development": "container-development.html", + "Extending F2": "extending-f2.html", + "F2.js SDK": "f2js-sdk.html" }; /** * Lookup in devSubSections for right URL */ -F2Docs.fn._getCurrentDevSubSection = function(){ - var file = location.pathname.split('/').pop(), - currSection, - counter = 0; - - $.each(this.devSubSections,$.proxy(function(idx,item){ - if (item == file) { - currSection = counter; - } - counter++; - },this)); - - return currSection; +F2Docs.fn._getCurrentDevSubSection = function () { + var file = location.pathname.split('/').pop(), + currSection, + counter = 0; + + $.each(this.devSubSections, $.proxy(function (idx, item) { + if (item == file) { + currSection = counter; + } + counter++; + }, this)); + + return currSection; } /** * Lookup in devSubSections NAME for insite */ -F2Docs.fn._getCurrentDevSectionName = function(){ - var file = location.pathname.split('/').pop(), - currSection, - counter = 0; - - $.each(this.devSubSections,$.proxy(function(idx,item){ - if (item == file) { - currSection = idx; - } - counter++; - },this)); - - return currSection; +F2Docs.fn._getCurrentDevSectionName = function () { + var file = location.pathname.split('/').pop(), + currSection, + counter = 0; + + $.each(this.devSubSections, $.proxy(function (idx, item) { + if (item == file) { + currSection = idx; + } + counter++; + }, this)); + + return currSection; } -F2Docs.fn.getName = function(){ - return this._getCurrentDevSectionName() || document.title.replace('F2 - ',''); +F2Docs.fn.getName = function () { + return this._getCurrentDevSectionName() || document.title.replace('F2 - ', ''); } /** * When on Development, we need some special nav. */ -F2Docs.fn._buildDevSubSectionsHtml = function(){ - var html = []; +F2Docs.fn._buildDevSubSectionsHtml = function () { + var html = []; - $.each(this.devSubSections,function(idx,item){ - html.push("
  • {label}
  • ".supplant({url:item, label: idx})); - }); + $.each(this.devSubSections, function (idx, item) { + html.push("
  • {label}
  • ".supplant({url: item, label: idx})); + }); - return html.join(''); + return html.join(''); } /** * Add bookmark links to each

    */ -F2Docs.fn.buildBookmarks = function(){ - var $docsContainer = $('#docs'), - $headers = $('section', $docsContainer).not('.level1,.level2'), - link = ""; - - $headers.each($.proxy(function(idx,item){ - var $h = $(item).children().first(), - //name = $h.text(), - anchor = $(item).prop("id"), - $link = $(link.supplant({id: anchor})); - //animate click - $link.on('click',$.proxy(function(e){ - this._animateAnchor(e,false); - },this)); - $h.prepend($link); - },this)); +F2Docs.fn.buildBookmarks = function () { + var $docsContainer = $('#docs'), + $headers = $('section', $docsContainer).not('.level1,.level2'), + link = ""; + + $headers.each($.proxy(function (idx, item) { + var $h = $(item).children().first(), + //name = $h.text(), + anchor = $(item).prop("id"), + $link = $(link.supplant({id: anchor})); + //animate click + $link.on('click', $.proxy(function (e) { + this._animateAnchor(e, false); + }, this)); + $h.prepend($link); + }, this)); } /** * Build left rail TOC */ -F2Docs.fn.buildLeftRailToc = function(){ - - var $toc = $('div.span12','div.navbar-docs'), - $docsContainer = $('#docs'), - file = location.pathname.split('/').pop(), - $sections = $('> section', $docsContainer), - $sectionsL2 = $sections.filter("section.level2"),//find
    elements in main content area - $sectionsL3 = $sections.filter("section.level3") - $navWrap = $('') - $listContainer = $(''), - $pageHeading = $("h1",$docsContainer); - - //build table of contents based on sections within generated markdown file - if (!$sections.length) return; - - //quickly touch

    and add an ID attr. this regex removes all spaces and changes to dashes. - $pageHeading.prop("id", $pageHeading.text().toLowerCase().replace(/\s+/g, '-')); - - //OK, we are on the development section, add the sub-sections - if ("development" == this.currentPage){ - $navWrap.append(this._buildDevSubSectionsHtml()); - } - - //need to add very first section (page title/

    ) - if ("development" != this.currentPage){ - $listContainer.append("
  • {label}
  • ".supplant({url: this._getPgUrl($pageHeading.attr("id")), label: $pageHeading.text()})); - } - - //loop over all sections, build nav based on

    's inside the - $sections.each($.proxy(function(idx,item){ - - var $item = $(item), - sectionTitle = $item.children().first().text(), - sectionId = $item.prop("id"), - isActive = (sectionId == String(location.hash.replace("#",""))) ? " class='active'" : "", - $li; - - $li = $("{label}".supplant({id: sectionId, label: sectionTitle, isActive: isActive})); - - $listContainer.append($li); - },this)); - - //now, determine *where* to insert links. - // if they are Level2 - if ($listContainer.find("li").length){ - if ("development" == this.currentPage){ - $navWrap - .find("li") - .eq(this._getCurrentDevSubSection()) - .addClass("active") - .append($listContainer) - ; - } else { - //we are on Basics, and have no subnav. - //navWrap *is* the list. - $navWrap = $listContainer; - } - } - - //cache inner nav for this page - this.$currentSectionNavList = ("development" == this.currentPage) ? $navWrap.find('li.active > ul.nav-list') : $navWrap; - - //append links - $('#toc').html($navWrap); - var $responsiveItems = $navWrap.children().clone(); - $('ul', $responsiveItems).removeClass('nav-list').addClass('navinset'); - $('#tocResponsive').append($responsiveItems); - - //add click event - $("a",$navWrap).on("click",$.proxy(function(e){ - this._animateAnchor(e,true); - },this)); +F2Docs.fn.buildLeftRailToc = function () { + + var $toc = $('div.span12', 'div.navbar-docs'), + $docsContainer = $('#docs'), + file = location.pathname.split('/').pop(), + $sections = $('> section', $docsContainer), + $sectionsL2 = $sections.filter("section.level2"),//find
    elements in main content area + $sectionsL3 = $sections.filter("section.level3") + $navWrap = $('') + $listContainer = $(''), + $pageHeading = $("h1", $docsContainer); + + //build table of contents based on sections within generated markdown file + if (!$sections.length) return; + + //quickly touch

    and add an ID attr. this regex removes all spaces and changes to dashes. + $pageHeading.prop("id", $pageHeading.text().toLowerCase().replace(/\s+/g, '-')); + + //OK, we are on the development section, add the sub-sections + if ("development" == this.currentPage) { + $navWrap.append(this._buildDevSubSectionsHtml()); + } + + //need to add very first section (page title/

    ) + if ("development" != this.currentPage) { + $listContainer.append("
  • {label}
  • ".supplant({ + url: this._getPgUrl($pageHeading.attr("id")), + label: $pageHeading.text() + })); + } + + //loop over all sections, build nav based on

    's inside the + $sections.each($.proxy(function (idx, item) { + + var $item = $(item), + sectionTitle = $item.children().first().text(), + sectionId = $item.prop("id"), + isActive = (sectionId == String(location.hash.replace("#", ""))) ? " class='active'" : "", + $li; + + $li = $("{label}".supplant({ + id: sectionId, + label: sectionTitle, + isActive: isActive + })); + + $listContainer.append($li); + }, this)); + + //now, determine *where* to insert links. + // if they are Level2 + if ($listContainer.find("li").length) { + if ("development" == this.currentPage) { + $navWrap + .find("li") + .eq(this._getCurrentDevSubSection()) + .addClass("active") + .append($listContainer) + ; + } else { + //we are on Basics, and have no subnav. + //navWrap *is* the list. + $navWrap = $listContainer; + } + } + + //cache inner nav for this page + this.$currentSectionNavList = ("development" == this.currentPage) ? $navWrap.find('li.active > ul.nav-list') : $navWrap; + + //append links + $('#toc').html($navWrap); + var $responsiveItems = $navWrap.children().clone(); + $('ul', $responsiveItems).removeClass('nav-list').addClass('navinset'); + $('#tocResponsive').append($responsiveItems); + + //add click event + $("a", $navWrap).on("click", $.proxy(function (e) { + this._animateAnchor(e, true); + }, this)); } -F2Docs.fn._setupBodyContentAnchorClick = function(){ - $('a[href^="#"]','#docs').on('click',$.proxy(function(e){ - this._animateAnchor(e,false); - },this)); +F2Docs.fn._setupBodyContentAnchorClick = function () { + $('a[href^="#"]', '#docs').on('click', $.proxy(function (e) { + this._animateAnchor(e, false); + }, this)); } -F2Docs.fn._animateAnchor = function(e, isTableOfContentsLink, destinationId){ - var $this = (destinationId) ? '' : $(e.currentTarget), - destinationId = destinationId || $this.attr("href").replace(".","\\\\."), - $destination = $(destinationId), - offset; - - //don't stop top-level (non-anchor) links from going to their location - if (destinationId == '' && destinationId.indexOf("#") > -1){ - e.preventDefault(); - } - - if (isTableOfContentsLink){ - $("li.active", "#toc ul").removeClass("active"); - $this.parent().addClass("active"); - } - - //if we have a location.hash change, animate scrollTop to it. - if (destinationId.indexOf("#") > -1){ - offset = $destination.offset() || {}; - if ($(destinationId).hasClass('level4') && $(window).width() > 978){ - offset.top -= 100; - } - $('html,body').animate({ scrollTop: offset.top },function(){ - location.hash = destinationId; - }); - return false - } +F2Docs.fn._animateAnchor = function (e, isTableOfContentsLink, destinationId) { + var $this = (destinationId) ? '' : $(e.currentTarget), + destinationId = destinationId || $this.attr("href").replace(".", "\\\\."), + $destination = $(destinationId), + offset; + + //don't stop top-level (non-anchor) links from going to their location + if (destinationId == '' && destinationId.indexOf("#") > -1) { + e.preventDefault(); + } + + if (isTableOfContentsLink) { + $("li.active", "#toc ul").removeClass("active"); + $this.parent().addClass("active"); + } + + //if we have a location.hash change, animate scrollTop to it. + if (destinationId.indexOf("#") > -1) { + offset = $destination.offset() || {}; + if ($(destinationId).hasClass('level4') && $(window).width() > 978) { + offset.top -= 100; + } + $('html,body').animate({scrollTop: offset.top}, function () { + location.hash = destinationId; + }); + return false + } }; /** - * Because of our page layout, bootstrap scrollspy doesn't pick up H1 + * Because of our page layout, bootstrap scrollspy doesn't pick up H1 * and the active class never gets added back when you scroll to top of page * This fixes that. */ -F2Docs.fn._watchScrollSpy = function(){ - $(window).on('scroll',$.proxy(function(e){ - var $nav = this.$currentSectionNavList, - $activeNav = $.proxy(function(){ - if (!this.activeNavElement){ - this.activeNavElement = ('development' == this.currentPage) ? $nav.parent() : $('li',$nav).first(); - } - return this.activeNavElement; - },this); - - if (document.body.scrollTop < 1 && !$activeNav().hasClass('active')){ - $('li',$nav).removeClass('active'); - $activeNav().addClass('active'); - } - },this)); +F2Docs.fn._watchScrollSpy = function () { + $(window).on('scroll', $.proxy(function (e) { + var $nav = this.$currentSectionNavList, + $activeNav = $.proxy(function () { + if (!this.activeNavElement) { + this.activeNavElement = ('development' == this.currentPage) ? $nav.parent() : $('li', $nav).first(); + } + return this.activeNavElement; + }, this); + + if (document.body.scrollTop < 1 && !$activeNav().hasClass('active')) { + $('li', $nav).removeClass('active'); + $activeNav().addClass('active'); + } + }, this)); } F2Docs.fn._getPgUrl = function (id) { - if ("about-f2" == id){ - return "index.html"; - } + if ("about-f2" == id) { + return "index.html"; + } } /** @@ -323,59 +331,61 @@ F2Docs.fn._getPgUrl = function (id) { * Calls prettyPrint() * Changes out mailto links that pandoc turns into elements. */ -F2Docs.fn.formatSourceCodeElements = function(){ - $("pre") - .removeClass("sourceCode") - .addClass("prettyprint linenums") - .find("code").replaceWith(function() { - return $(this).contents(); - }) - .end() - .filter(".javascript") - .removeClass("javascript") - .addClass("lang-js") - .end() - .filter(".html") - .removeClass("html") - .addClass("lang-html") - ; - window.prettyPrint && prettyPrint(); - - //fix mailto links from pandoc so they don't have around them. - //pandoc supports a param to disable this, need to fix that in the build - $('a[href^="mailto"]','#docs').each(function(idx,item){ - $(item) - .html($(this).text()) - .prev('script').remove() - .end() - .next('noscript').remove() - ; - }); +F2Docs.fn.formatSourceCodeElements = function () { + $("pre") + .removeClass("sourceCode") + .addClass("prettyprint linenums") + .find("code").replaceWith(function () { + return $(this).contents(); + }) + .end() + .filter(".javascript") + .removeClass("javascript") + .addClass("lang-js") + .end() + .filter(".html") + .removeClass("html") + .addClass("lang-html") + ; + window.prettyPrint && prettyPrint(); + + //fix mailto links from pandoc so they don't have around them. + //pandoc supports a param to disable this, need to fix that in the build + $('a[href^="mailto"]', '#docs').each(function (idx, item) { + $(item) + .html($(this).text()) + .prev('script').remove() + .end() + .next('noscript').remove() + ; + }); } -F2Docs.fn.insite = function(){ - if (!(/docs.openf2.org/i).test(window.location.hostname)) { return; } - window._waq = window._waq || []; - (function() { - var domain = 'insite.wallst.com'; - _waq.push(['_setup', {reportingid: '544506', domain: domain}]); - var wa = document.createElement('script'); - wa.type = 'text/javascript'; - wa.async = true; - wa.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + domain + '/js/wa.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(wa, s); - })(); - //F2.log(this.getName()) - _waq.push(['_trackPageView', {category: 'Docs', name: this.getName() }]); - _waq.push(['_trackLinks']); +F2Docs.fn.insite = function () { + if (!(/docs.openf2.org/i).test(window.location.hostname)) { + return; + } + window._waq = window._waq || []; + (function () { + var domain = 'insite.wallst.com'; + _waq.push(['_setup', {reportingid: '544506', domain: domain}]); + var wa = document.createElement('script'); + wa.type = 'text/javascript'; + wa.async = true; + wa.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + domain + '/js/wa.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(wa, s); + })(); + //F2.log(this.getName()) + _waq.push(['_trackPageView', {category: 'Docs', name: this.getName()}]); + _waq.push(['_trackLinks']); } /** * Let's do this. */ -$(function() { - F2Docs = new F2Docs(); - F2Docs.init(); - F2Docs.insite(); +$(function () { + F2Docs = new F2Docs(); + F2Docs.init(); + F2Docs.insite(); }); diff --git a/docs/sdk/api.js b/docs/sdk/api.js index 5637c288..c5b2969c 100644 --- a/docs/sdk/api.js +++ b/docs/sdk/api.js @@ -1,36 +1,38 @@ -YUI.add("yuidoc-meta", function(Y) { - Y.YUIDoc = { meta: { - "classes": [ - "F2", - "F2.App", - "F2.AppConfig", - "F2.AppHandlers", - "F2.AppManifest", - "F2.AppManifest.AppContent", - "F2.Constants", - "F2.Constants.AppHandlers", - "F2.Constants.Css", - "F2.Constants.Events", - "F2.Constants.Sockets", - "F2.Constants.Views", - "F2.ContainerConfig", - "F2.ContainerConfig.UI", - "F2.ContainerConfig.UI.Mask", - "F2.Events", - "F2.Rpc", - "F2.UI", - "F2.UI.Modals", - "F2.UI.Views" - ], - "modules": [ - "f2" - ], - "allModules": [ - { - "displayName": "f2", - "name": "f2", - "description": "Open F2" +YUI.add("yuidoc-meta", function (Y) { + Y.YUIDoc = { + meta: { + "classes": [ + "F2", + "F2.App", + "F2.AppConfig", + "F2.AppHandlers", + "F2.AppManifest", + "F2.AppManifest.AppContent", + "F2.Constants", + "F2.Constants.AppHandlers", + "F2.Constants.Css", + "F2.Constants.Events", + "F2.Constants.Sockets", + "F2.Constants.Views", + "F2.ContainerConfig", + "F2.ContainerConfig.UI", + "F2.ContainerConfig.UI.Mask", + "F2.Events", + "F2.Rpc", + "F2.UI", + "F2.UI.Modals", + "F2.UI.Views" + ], + "modules": [ + "f2" + ], + "allModules": [ + { + "displayName": "f2", + "name": "f2", + "description": "Open F2" + } + ] } - ] -} }; + }; }); \ No newline at end of file diff --git a/docs/sdk/assets/css/main.css b/docs/sdk/assets/css/main.css index cdfe209e..ef9f9459 100644 --- a/docs/sdk/assets/css/main.css +++ b/docs/sdk/assets/css/main.css @@ -41,7 +41,9 @@ a { display: none; } -a:hover { text-decoration: underline; } +a:hover { + text-decoration: underline; +} /* "Jump to Table of Contents" link is shown to assistive tools, but hidden from sight until it's focused. */ @@ -52,16 +54,26 @@ a:hover { text-decoration: underline; } top: 0; } -.jump:focus { left: 40%; } +.jump:focus { + left: 40%; +} /* -- Paragraphs ------------------------------------------------------------ */ -p { margin: 1.3em 0; } -dd p, td p { margin-bottom: 0; } -dd p:first-child, td p:first-child { margin-top: 0; } +p { + margin: 1.3em 0; +} + +dd p, td p { + margin-bottom: 0; +} + +dd p:first-child, td p:first-child { + margin-top: 0; +} /* -- Headings -------------------------------------------------------------- */ h1, h2, h3, h4, h5, h6 { - color: #D98527;/*was #f80*/ + color: #D98527; /*was #f80*/ font-family: 'Trebuchet MS', sans-serif; font-weight: bold; line-height: 1.1; @@ -79,7 +91,9 @@ h2 { color: #E48A2B; } -h3 { font-size: 138.462%; } +h3 { + font-size: 138.462%; +} h4 { border-bottom: 1px solid #DBDFEA; @@ -89,7 +103,9 @@ h4 { padding-bottom: 2px; } -h5, h6 { font-size: 107.692%; } +h5, h6 { + font-size: 107.692%; +} /* -- Code and examples ----------------------------------------------------- */ code, kbd, pre, samp { @@ -134,7 +150,9 @@ pre.terminal, pre.cmd { /* Don't reduce the font size of // elements inside
        blocks. */
    -pre code, pre kbd, pre samp { font-size: 100%; }
    +pre code, pre kbd, pre samp {
    +    font-size: 100%;
    +}
     
     /* Used to denote text that shouldn't be selectable, such as line numbers or
        shell prompts. Guess which browser this doesn't work in. */
    @@ -147,12 +165,22 @@ pre code, pre kbd, pre samp { font-size: 100%; }
     }
     
     /* -- Lists ----------------------------------------------------------------- */
    -dd { margin: 0.2em 0 0.7em 1em; }
    -dl { margin: 1em 0; }
    -dt { font-weight: bold; }
    +dd {
    +    margin: 0.2em 0 0.7em 1em;
    +}
    +
    +dl {
    +    margin: 1em 0;
    +}
    +
    +dt {
    +    font-weight: bold;
    +}
     
     /* -- Tables ---------------------------------------------------------------- */
    -caption, th { text-align: left; }
    +caption, th {
    +    text-align: left;
    +}
     
     table {
         border-collapse: collapse;
    @@ -165,34 +193,47 @@ td, th {
         vertical-align: top;
     }
     
    -td { background: #E6E9F5; }
    -td dl { margin: 0; }
    -td dl dl { margin: 1em 0; }
    -td pre:first-child { margin-top: 0; }
    +td {
    +    background: #E6E9F5;
    +}
    +
    +td dl {
    +    margin: 0;
    +}
    +
    +td dl dl {
    +    margin: 1em 0;
    +}
    +
    +td pre:first-child {
    +    margin-top: 0;
    +}
     
     th {
    -    background: #D2D7E6;/*#97A0BF*/
    +    background: #D2D7E6; /*#97A0BF*/
         border-bottom: none;
         border-top: none;
    -    color: #000;/*#FFF1D5*/
    +    color: #000; /*#FFF1D5*/
         font-family: 'Trebuchet MS', sans-serif;
         font-weight: bold;
         line-height: 1.3;
         white-space: nowrap;
     }
     
    -
     /* -- Layout and Content ---------------------------------------------------- */
     #doc {
         margin: auto;
         min-width: 1024px;
     }
     
    -.content { padding: 0 20px 0 25px; }
    +.content {
    +    padding: 0 20px 0 25px;
    +}
     
     .sidebar {
         padding: 0 15px 0 10px;
     }
    +
     #bd {
         padding: 7px 0 130px;
         position: relative;
    @@ -204,9 +245,17 @@ th {
     /* The #toc id refers to the single global table of contents, while the .toc
        class refers to generic TOC lists that could be used throughout the page. */
     
    -.toc code, .toc kbd, .toc samp { font-size: 100%; }
    -.toc li { font-weight: bold; }
    -.toc li li { font-weight: normal; }
    +.toc code, .toc kbd, .toc samp {
    +    font-size: 100%;
    +}
    +
    +.toc li {
    +    font-weight: bold;
    +}
    +
    +.toc li li {
    +    font-weight: normal;
    +}
     
     /* -- Intro and Example Boxes ----------------------------------------------- */
     /*
    @@ -248,8 +297,8 @@ th {
     
         background: #EFEFEF; /* old browsers */
         background: -moz-linear-gradient(top, #f5f5f5 0%, #efefef 50%, #e5e5e5 51%, #dfdfdf 100%); /* firefox */
    -    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5f5f5), color-stop(50%,#efefef), color-stop(51%,#e5e5e5), color-stop(100%,#dfdfdf)); /* webkit */
    -    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#dfdfdf',GradientType=0 ); /* ie */
    +    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f5f5f5), color-stop(50%, #efefef), color-stop(51%, #e5e5e5), color-stop(100%, #dfdfdf)); /* webkit */
    +    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#dfdfdf', GradientType=0); /* ie */
     }
     
     .button:hover {
    @@ -262,18 +311,19 @@ th {
     
         background: #6396D8; /* old browsers */
         background: -moz-linear-gradient(top, #6396D8 0%, #5A83BC 50%, #547AB7 51%, #466899 100%); /* firefox */
    -    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6396D8), color-stop(50%,#5A83BC), color-stop(51%,#547AB7), color-stop(100%,#466899)); /* webkit */
    -    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#6396D8', endColorstr='#466899',GradientType=0 ); /* ie */
    +    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #6396D8), color-stop(50%, #5A83BC), color-stop(51%, #547AB7), color-stop(100%, #466899)); /* webkit */
    +    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6396D8', endColorstr='#466899', GradientType=0); /* ie */
     }
     
    -.newwindow { text-align: center; }
    +.newwindow {
    +    text-align: center;
    +}
     
     .header .version em {
         display: block;
         text-align: right;
     }
     
    -
     #classdocs .item {
         border-bottom: 1px solid #466899;
         margin: 1em 0;
    @@ -281,7 +331,7 @@ th {
     }
     
     #classdocs .item .params p,
    -    #classdocs .item .returns p,{
    +#classdocs .item .returns p, {
         display: inline;
     }
     
    @@ -311,13 +361,13 @@ abbr {
         cursor: help;
     }
     
    -.prettyprint li.L0, 
    -.prettyprint li.L1, 
    -.prettyprint li.L2, 
    -.prettyprint li.L3, 
    -.prettyprint li.L5, 
    -.prettyprint li.L6, 
    -.prettyprint li.L7, 
    +.prettyprint li.L0,
    +.prettyprint li.L1,
    +.prettyprint li.L2,
    +.prettyprint li.L3,
    +.prettyprint li.L5,
    +.prettyprint li.L6,
    +.prettyprint li.L7,
     .prettyprint li.L8 {
         list-style: decimal;
     }
    @@ -346,9 +396,9 @@ ul li p {
     
     #hd {
         background: whiteSmoke;
    -    background: -moz-linear-gradient(top,#DCDBD9 0,#F6F5F3 100%);
    -    background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#DCDBD9),color-stop(100%,#F6F5F3));
    -    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dcdbd9',endColorstr='#F6F5F3',GradientType=0);
    +    background: -moz-linear-gradient(top, #DCDBD9 0, #F6F5F3 100%);
    +    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #DCDBD9), color-stop(100%, #F6F5F3));
    +    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dcdbd9', endColorstr='#F6F5F3', GradientType=0);
         border-bottom: 1px solid #DFDFDF;
         padding: 0 15px 1px 20px;
         margin-bottom: 15px;
    @@ -359,7 +409,6 @@ ul li p {
         vertical-align: middle;
     }
     
    -
     /* -- API Docs CSS ---------------------------------------------------------- */
     
     /*
    @@ -381,8 +430,13 @@ specific tabview, see the other sections below.
         _visibility: visible;
     }
     
    -.apidocs .tabview.yui3-tabview-content { visibility: visible; }
    -.apidocs .tabview .yui3-tabview-panel { background: #fff; }
    +.apidocs .tabview.yui3-tabview-content {
    +    visibility: visible;
    +}
    +
    +.apidocs .tabview .yui3-tabview-panel {
    +    background: #fff;
    +}
     
     /* -- Generic Content Styles ------------------------------------------------ */
     
    @@ -401,7 +455,9 @@ h2, h3, h4, h5, h6 {
         padding: 6px 30px 5px;
     }
     
    -.apidocs { zoom: 1; }
    +.apidocs {
    +    zoom: 1;
    +}
     
     /* Generic box styles. */
     .apidocs .box {
    @@ -432,7 +488,9 @@ h2, h3, h4, h5, h6 {
         padding: 3px 6px;
     }
     
    -.apidocs .meta p { margin: 0; }
    +.apidocs .meta p {
    +    margin: 0;
    +}
     
     /* Deprecation warning. */
     .apidocs .box.deprecated,
    @@ -441,8 +499,13 @@ h2, h3, h4, h5, h6 {
         border: 1px solid #fd7775;
     }
     
    -.apidocs .box.deprecated p { margin: 0.5em 0; }
    -.apidocs .flag.deprecated { color: #333; }
    +.apidocs .box.deprecated p {
    +    margin: 0.5em 0;
    +}
    +
    +.apidocs .flag.deprecated {
    +    color: #333;
    +}
     
     /* Module/Class intro description. */
     .apidocs .intro {
    @@ -462,7 +525,9 @@ h2, h3, h4, h5, h6 {
         display: none;
     }
     
    -.apidocs .no-visible-items { color: #666; }
    +.apidocs .no-visible-items {
    +    color: #666;
    +}
     
     /* Generic inline list. */
     .apidocs ul.inline {
    @@ -472,14 +537,23 @@ h2, h3, h4, h5, h6 {
         padding: 0;
     }
     
    -.apidocs ul.inline li { display: inline; }
    +.apidocs ul.inline li {
    +    display: inline;
    +}
     
     /* Comma-separated list. */
    -.apidocs ul.commas li:after { content: ','; }
    -.apidocs ul.commas li:last-child:after { content: ''; }
    +.apidocs ul.commas li:after {
    +    content: ',';
    +}
    +
    +.apidocs ul.commas li:last-child:after {
    +    content: '';
    +}
     
     /* Keyboard shortcuts. */
    -kbd .cmd { font-family: Monaco, Helvetica; }
    +kbd .cmd {
    +    font-family: Monaco, Helvetica;
    +}
     
     /* -- Generic Access Level styles ------------------------------------------- */
     .apidocs .item.protected,
    @@ -505,7 +579,9 @@ kbd .cmd { font-family: Monaco, Helvetica; }
     }
     
     /* -- Generic Item Index styles --------------------------------------------- */
    -.apidocs .index { margin: 1.5em 0 3em; }
    +.apidocs .index {
    +    margin: 1.5em 0 3em;
    +}
     
     .apidocs .index h3 {
         border-bottom: 1px solid #efefef;
    @@ -515,7 +591,9 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         padding-bottom: 2px;
     }
     
    -.apidocs .index .no-visible-items { margin-top: 2em; }
    +.apidocs .index .no-visible-items {
    +    margin-top: 2em;
    +}
     
     .apidocs .index-list {
         border-color: #efefef;
    @@ -548,7 +626,9 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         column-count: 1;
     }
     
    -.apidocs .index-item { white-space: nowrap; }
    +.apidocs .index-item {
    +    white-space: nowrap;
    +}
     
     .apidocs .index-item .flag {
         background: none;
    @@ -565,11 +645,25 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         margin: 0 0.5em;
     }
     
    -.apidocs .flag.chainable { background: #46ca3b; }
    -.apidocs .flag.protected { background: #9b86fc; }
    -.apidocs .flag.private { background: #fd6b1b; }
    -.apidocs .flag.async { background: #356de4; }
    -.apidocs .flag.required { background: #e60923; }
    +.apidocs .flag.chainable {
    +    background: #46ca3b;
    +}
    +
    +.apidocs .flag.protected {
    +    background: #9b86fc;
    +}
    +
    +.apidocs .flag.private {
    +    background: #fd6b1b;
    +}
    +
    +.apidocs .flag.async {
    +    background: #356de4;
    +}
    +
    +.apidocs .flag.required {
    +    background: #e60923;
    +}
     
     .apidocs .item {
         border-bottom: 1px solid #efefef;
    @@ -613,8 +707,13 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         margin: 0 0 0 0;
     }
     
    -.apidocs .item .type a { border-bottom: 1px dotted #afafaf; }
    -.apidocs .item .type a:hover { border: none; }
    +.apidocs .item .type a {
    +    border-bottom: 1px dotted #afafaf;
    +}
    +
    +.apidocs .item .type a:hover {
    +    border: none;
    +}
     
     /* -- Item Parameter List --------------------------------------------------- */
     .apidocs .params-list {
    @@ -623,7 +722,9 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         padding: 0;
     }
     
    -.apidocs .param { margin-bottom: 1em; }
    +.apidocs .param {
    +    margin-bottom: 1em;
    +}
     
     .apidocs .param .type,
     .apidocs .param .type a {
    @@ -635,7 +736,9 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         *margin-left: 0.5em;
     }
     
    -.apidocs .param-name { font-weight: bold; }
    +.apidocs .param-name {
    +    font-weight: bold;
    +}
     
     /* -- Item "Emits" block ---------------------------------------------------- */
     .apidocs .item .emits {
    @@ -684,10 +787,14 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         margin: 0.3em 0 1em;
     }
     
    -.apidocs .module-submodule-description p:first-child { margin-top: 0; }
    +.apidocs .module-submodule-description p:first-child {
    +    margin-top: 0;
    +}
     
     /* -- Sidebar TabView ------------------------------------------------------- */
    -#api-tabview { margin-top: 0.6em; }
    +#api-tabview {
    +    margin-top: 0.6em;
    +}
     
     #api-tabview-filter,
     #api-tabview-panel {
    @@ -700,11 +807,18 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         padding: 0.6em 10px 0 10px;
     }
     
    -#api-tabview-panel { border-top: none; }
    -#api-filter { width: 97%; }
    +#api-tabview-panel {
    +    border-top: none;
    +}
    +
    +#api-filter {
    +    width: 97%;
    +}
     
     /* -- Content TabView ------------------------------------------------------- */
    -#classdocs .yui3-tabview-panel { border: none; }
    +#classdocs .yui3-tabview-panel {
    +    border: none;
    +}
     
     /* -- Source File Contents -------------------------------------------------- */
     .prettyprint li.L0,
    @@ -756,7 +870,7 @@ kbd .cmd { font-family: Monaco, Helvetica; }
     .apis a:focus {
         background: #E8EDFC;
         background: -moz-linear-gradient(top, #e8edfc 0%, #becef7 100%);
    -    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#E8EDFC), color-stop(100%,#BECEF7));
    +    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #E8EDFC), color-stop(100%, #BECEF7));
         border-color: #AAC0FA;
         border-radius: 3px;
         color: #333;
    @@ -769,8 +883,13 @@ kbd .cmd { font-family: Monaco, Helvetica; }
         text-shadow: 1px 1px 1px #fff;
     }
     
    -.apis .message { color: #888; }
    -.apis .result a { padding: 3px 5px 2px; }
    +.apis .message {
    +    color: #888;
    +}
    +
    +.apis .result a {
    +    padding: 3px 5px 2px;
    +}
     
     .apis .result .type {
         right: 4px;
    diff --git a/docs/sdk/assets/js/api-filter.js b/docs/sdk/assets/js/api-filter.js
    index 37aefbab..7219e3cd 100644
    --- a/docs/sdk/assets/js/api-filter.js
    +++ b/docs/sdk/assets/js/api-filter.js
    @@ -1,52 +1,54 @@
     YUI.add('api-filter', function (Y) {
     
    -Y.APIFilter = Y.Base.create('apiFilter', Y.Base, [Y.AutoCompleteBase], {
    -    // -- Initializer ----------------------------------------------------------
    -    initializer: function () {
    -        this._bindUIACBase();
    -        this._syncUIACBase();
    -    },
    -    getDisplayName: function(name) {
    +    Y.APIFilter = Y.Base.create('apiFilter', Y.Base, [Y.AutoCompleteBase], {
    +        // -- Initializer ----------------------------------------------------------
    +        initializer: function () {
    +            this._bindUIACBase();
    +            this._syncUIACBase();
    +        },
    +        getDisplayName: function (name) {
     
    -        Y.each(Y.YUIDoc.meta.allModules, function(i) {
    -            if (i.name === name && i.displayName) {
    -                name = i.displayName;
    -            }
    -        });
    +            Y.each(Y.YUIDoc.meta.allModules, function (i) {
    +                if (i.name === name && i.displayName) {
    +                    name = i.displayName;
    +                }
    +            });
     
    -        return name;
    -    }
    +            return name;
    +        }
     
    -}, {
    -    // -- Attributes -----------------------------------------------------------
    -    ATTRS: {
    -        resultHighlighter: {
    -            value: 'phraseMatch'
    -        },
    +    }, {
    +        // -- Attributes -----------------------------------------------------------
    +        ATTRS: {
    +            resultHighlighter: {
    +                value: 'phraseMatch'
    +            },
     
    -        // May be set to "classes" or "modules".
    -        queryType: {
    -            value: 'classes'
    -        },
    +            // May be set to "classes" or "modules".
    +            queryType: {
    +                value: 'classes'
    +            },
     
    -        source: {
    -            valueFn: function() {
    -                var self = this;
    -                return function(q) {
    -                    var data = Y.YUIDoc.meta[self.get('queryType')],
    -                        out = [];
    -                    Y.each(data, function(v) {
    -                        if (v.toLowerCase().indexOf(q.toLowerCase()) > -1) {
    -                            out.push(v);
    -                        }
    -                    });
    -                    return out;
    -                };
    +            source: {
    +                valueFn: function () {
    +                    var self = this;
    +                    return function (q) {
    +                        var data = Y.YUIDoc.meta[self.get('queryType')],
    +                            out = [];
    +                        Y.each(data, function (v) {
    +                            if (v.toLowerCase().indexOf(q.toLowerCase()) > -1) {
    +                                out.push(v);
    +                            }
    +                        });
    +                        return out;
    +                    };
    +                }
                 }
             }
    -    }
    -});
    +    });
     
    -}, '3.4.0', {requires: [
    -    'autocomplete-base', 'autocomplete-highlighters', 'autocomplete-sources'
    -]});
    +}, '3.4.0', {
    +    requires: [
    +        'autocomplete-base', 'autocomplete-highlighters', 'autocomplete-sources'
    +    ]
    +});
    diff --git a/docs/sdk/assets/js/api-list.js b/docs/sdk/assets/js/api-list.js
    index 88905b52..38098b9e 100644
    --- a/docs/sdk/assets/js/api-list.js
    +++ b/docs/sdk/assets/js/api-list.js
    @@ -1,251 +1,253 @@
     YUI.add('api-list', function (Y) {
     
    -var Lang   = Y.Lang,
    -    YArray = Y.Array,
    -
    -    APIList = Y.namespace('APIList'),
    -
    -    classesNode    = Y.one('#api-classes'),
    -    inputNode      = Y.one('#api-filter'),
    -    modulesNode    = Y.one('#api-modules'),
    -    tabviewNode    = Y.one('#api-tabview'),
    -
    -    tabs = APIList.tabs = {},
    -
    -    filter = APIList.filter = new Y.APIFilter({
    -        inputNode : inputNode,
    -        maxResults: 1000,
    -
    -        on: {
    -            results: onFilterResults
    -        }
    -    }),
    -
    -    search = APIList.search = new Y.APISearch({
    -        inputNode : inputNode,
    -        maxResults: 100,
    -
    -        on: {
    -            clear  : onSearchClear,
    -            results: onSearchResults
    -        }
    -    }),
    -
    -    tabview = APIList.tabview = new Y.TabView({
    -        srcNode  : tabviewNode,
    -        panelNode: '#api-tabview-panel',
    -        render   : true,
    -
    -        on: {
    -            selectionChange: onTabSelectionChange
    -        }
    -    }),
    -
    -    focusManager = APIList.focusManager = tabviewNode.plug(Y.Plugin.NodeFocusManager, {
    -        circular   : true,
    -        descendants: '#api-filter, .yui3-tab-panel-selected .api-list-item a, .yui3-tab-panel-selected .result a',
    -        keys       : {next: 'down:40', previous: 'down:38'}
    -    }).focusManager,
    -
    -    LIST_ITEM_TEMPLATE =
    -        '
  • ' + + var Lang = Y.Lang, + YArray = Y.Array, + + APIList = Y.namespace('APIList'), + + classesNode = Y.one('#api-classes'), + inputNode = Y.one('#api-filter'), + modulesNode = Y.one('#api-modules'), + tabviewNode = Y.one('#api-tabview'), + + tabs = APIList.tabs = {}, + + filter = APIList.filter = new Y.APIFilter({ + inputNode: inputNode, + maxResults: 1000, + + on: { + results: onFilterResults + } + }), + + search = APIList.search = new Y.APISearch({ + inputNode: inputNode, + maxResults: 100, + + on: { + clear: onSearchClear, + results: onSearchResults + } + }), + + tabview = APIList.tabview = new Y.TabView({ + srcNode: tabviewNode, + panelNode: '#api-tabview-panel', + render: true, + + on: { + selectionChange: onTabSelectionChange + } + }), + + focusManager = APIList.focusManager = tabviewNode.plug(Y.Plugin.NodeFocusManager, { + circular: true, + descendants: '#api-filter, .yui3-tab-panel-selected .api-list-item a, .yui3-tab-panel-selected .result a', + keys: {next: 'down:40', previous: 'down:38'} + }).focusManager, + + LIST_ITEM_TEMPLATE = + '
  • ' + '{displayName}' + - '
  • '; + ''; // -- Init --------------------------------------------------------------------- // Duckpunch FocusManager's key event handling to prevent it from handling key // events when a modifier is pressed. -Y.before(function (e, activeDescendant) { - if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { - return new Y.Do.Prevent(); - } -}, focusManager, '_focusPrevious', focusManager); + Y.before(function (e, activeDescendant) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { + return new Y.Do.Prevent(); + } + }, focusManager, '_focusPrevious', focusManager); -Y.before(function (e, activeDescendant) { - if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { - return new Y.Do.Prevent(); - } -}, focusManager, '_focusNext', focusManager); + Y.before(function (e, activeDescendant) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { + return new Y.Do.Prevent(); + } + }, focusManager, '_focusNext', focusManager); // Create a mapping of tabs in the tabview so we can refer to them easily later. -tabview.each(function (tab, index) { - var name = tab.get('label').toLowerCase(); - - tabs[name] = { - index: index, - name : name, - tab : tab - }; -}); + tabview.each(function (tab, index) { + var name = tab.get('label').toLowerCase(); + + tabs[name] = { + index: index, + name: name, + tab: tab + }; + }); // Switch tabs on Ctrl/Cmd-Left/Right arrows. -tabviewNode.on('key', onTabSwitchKey, 'down:37,39'); + tabviewNode.on('key', onTabSwitchKey, 'down:37,39'); // Focus the filter input when the `/` key is pressed. -Y.one(Y.config.doc).on('key', onSearchKey, 'down:83'); + Y.one(Y.config.doc).on('key', onSearchKey, 'down:83'); // Keep the Focus Manager up to date. -inputNode.on('focus', function () { - focusManager.set('activeDescendant', inputNode); -}); + inputNode.on('focus', function () { + focusManager.set('activeDescendant', inputNode); + }); // Update all tabview links to resolved URLs. -tabview.get('panelNode').all('a').each(function (link) { - link.setAttribute('href', link.get('href')); -}); + tabview.get('panelNode').all('a').each(function (link) { + link.setAttribute('href', link.get('href')); + }); // -- Private Functions -------------------------------------------------------- -function getFilterResultNode() { - return filter.get('queryType') === 'classes' ? classesNode : modulesNode; -} + function getFilterResultNode() { + return filter.get('queryType') === 'classes' ? classesNode : modulesNode; + } // -- Event Handlers ----------------------------------------------------------- -function onFilterResults(e) { - var frag = Y.one(Y.config.doc.createDocumentFragment()), - resultNode = getFilterResultNode(), - typePlural = filter.get('queryType'), - typeSingular = typePlural === 'classes' ? 'class' : 'module'; - - if (e.results.length) { - YArray.each(e.results, function (result) { - frag.append(Lang.sub(LIST_ITEM_TEMPLATE, { - rootPath : APIList.rootPath, - displayName : filter.getDisplayName(result.highlighted), - name : result.text, - typePlural : typePlural, - typeSingular: typeSingular - })); - }); - } else { - frag.append( - '
  • ' + + function onFilterResults(e) { + var frag = Y.one(Y.config.doc.createDocumentFragment()), + resultNode = getFilterResultNode(), + typePlural = filter.get('queryType'), + typeSingular = typePlural === 'classes' ? 'class' : 'module'; + + if (e.results.length) { + YArray.each(e.results, function (result) { + frag.append(Lang.sub(LIST_ITEM_TEMPLATE, { + rootPath: APIList.rootPath, + displayName: filter.getDisplayName(result.highlighted), + name: result.text, + typePlural: typePlural, + typeSingular: typeSingular + })); + }); + } else { + frag.append( + '
  • ' + 'No ' + typePlural + ' found.' + - '
  • ' - ); - } - - resultNode.empty(true); - resultNode.append(frag); - - focusManager.refresh(); -} - -function onSearchClear(e) { - - focusManager.refresh(); -} + '' + ); + } -function onSearchKey(e) { - var target = e.target; + resultNode.empty(true); + resultNode.append(frag); - if (target.test('input,select,textarea') - || target.get('isContentEditable')) { - return; + focusManager.refresh(); } - e.preventDefault(); - - inputNode.focus(); - focusManager.refresh(); -} - -function onSearchResults(e) { - var frag = Y.one(Y.config.doc.createDocumentFragment()); + function onSearchClear(e) { - if (e.results.length) { - YArray.each(e.results, function (result) { - frag.append(result.display); - }); - } else { - frag.append( - '
  • ' + - 'No results found. Maybe you\'ll have better luck with a ' + - 'different query?' + - '
  • ' - ); + focusManager.refresh(); } + function onSearchKey(e) { + var target = e.target; - focusManager.refresh(); -} - -function onTabSelectionChange(e) { - var tab = e.newVal, - name = tab.get('label').toLowerCase(); - - tabs.selected = { - index: tab.get('index'), - name : name, - tab : tab - }; - - switch (name) { - case 'classes': // fallthru - case 'modules': - filter.setAttrs({ - minQueryLength: 0, - queryType : name - }); + if (target.test('input,select,textarea') + || target.get('isContentEditable')) { + return; + } - search.set('minQueryLength', -1); + e.preventDefault(); - // Only send a request if this isn't the initially-selected tab. - if (e.prevVal) { - filter.sendRequest(filter.get('value')); - } - break; + inputNode.focus(); + focusManager.refresh(); + } - case 'everything': - filter.set('minQueryLength', -1); - search.set('minQueryLength', 1); + function onSearchResults(e) { + var frag = Y.one(Y.config.doc.createDocumentFragment()); - if (search.get('value')) { - search.sendRequest(search.get('value')); + if (e.results.length) { + YArray.each(e.results, function (result) { + frag.append(result.display); + }); } else { - inputNode.focus(); + frag.append( + '
  • ' + + 'No results found. Maybe you\'ll have better luck with a ' + + 'different query?' + + '
  • ' + ); } - break; - default: - // WTF? We shouldn't be here! - filter.set('minQueryLength', -1); - search.set('minQueryLength', -1); - } - if (focusManager) { - setTimeout(function () { - focusManager.refresh(); - }, 1); + focusManager.refresh(); } -} -function onTabSwitchKey(e) { - var currentTabIndex = tabs.selected.index; + function onTabSelectionChange(e) { + var tab = e.newVal, + name = tab.get('label').toLowerCase(); + + tabs.selected = { + index: tab.get('index'), + name: name, + tab: tab + }; + + switch (name) { + case 'classes': // fallthru + case 'modules': + filter.setAttrs({ + minQueryLength: 0, + queryType: name + }); + + search.set('minQueryLength', -1); + + // Only send a request if this isn't the initially-selected tab. + if (e.prevVal) { + filter.sendRequest(filter.get('value')); + } + break; + + case 'everything': + filter.set('minQueryLength', -1); + search.set('minQueryLength', 1); + + if (search.get('value')) { + search.sendRequest(search.get('value')); + } else { + inputNode.focus(); + } + break; + + default: + // WTF? We shouldn't be here! + filter.set('minQueryLength', -1); + search.set('minQueryLength', -1); + } - if (!(e.ctrlKey || e.metaKey)) { - return; + if (focusManager) { + setTimeout(function () { + focusManager.refresh(); + }, 1); + } } - e.preventDefault(); + function onTabSwitchKey(e) { + var currentTabIndex = tabs.selected.index; - switch (e.keyCode) { - case 37: // left arrow - if (currentTabIndex > 0) { - tabview.selectChild(currentTabIndex - 1); - inputNode.focus(); + if (!(e.ctrlKey || e.metaKey)) { + return; } - break; - case 39: // right arrow - if (currentTabIndex < (Y.Object.size(tabs) - 2)) { - tabview.selectChild(currentTabIndex + 1); - inputNode.focus(); + e.preventDefault(); + + switch (e.keyCode) { + case 37: // left arrow + if (currentTabIndex > 0) { + tabview.selectChild(currentTabIndex - 1); + inputNode.focus(); + } + break; + + case 39: // right arrow + if (currentTabIndex < (Y.Object.size(tabs) - 2)) { + tabview.selectChild(currentTabIndex + 1); + inputNode.focus(); + } + break; } - break; } -} -}, '3.4.0', {requires: [ - 'api-filter', 'api-search', 'event-key', 'node-focusmanager', 'tabview' -]}); +}, '3.4.0', { + requires: [ + 'api-filter', 'api-search', 'event-key', 'node-focusmanager', 'tabview' + ] +}); diff --git a/docs/sdk/assets/js/api-search.js b/docs/sdk/assets/js/api-search.js index 175f6a61..471bd6e6 100644 --- a/docs/sdk/assets/js/api-search.js +++ b/docs/sdk/assets/js/api-search.js @@ -1,98 +1,99 @@ YUI.add('api-search', function (Y) { -var Lang = Y.Lang, - Node = Y.Node, - YArray = Y.Array; - -Y.APISearch = Y.Base.create('apiSearch', Y.Base, [Y.AutoCompleteBase], { - // -- Public Properties ---------------------------------------------------- - RESULT_TEMPLATE: - '
  • ' + - '' + - '

    {name}

    ' + - '{resultType}' + - '
    {description}
    ' + - '{class}' + - '
    ' + + var Lang = Y.Lang, + Node = Y.Node, + YArray = Y.Array; + + Y.APISearch = Y.Base.create('apiSearch', Y.Base, [Y.AutoCompleteBase], { + // -- Public Properties ---------------------------------------------------- + RESULT_TEMPLATE: '
  • ' + + '' + + '

    {name}

    ' + + '{resultType}' + + '
    {description}
    ' + + '{class}' + + '
    ' + '
  • ', - // -- Initializer ---------------------------------------------------------- - initializer: function () { - this._bindUIACBase(); - this._syncUIACBase(); - }, - - // -- Protected Methods ---------------------------------------------------- - _apiResultFilter: function (query, results) { - // Filter components out of the results. - return YArray.filter(results, function (result) { - return result.raw.resultType === 'component' ? false : result; - }); - }, - - _apiResultFormatter: function (query, results) { - return YArray.map(results, function (result) { - var raw = Y.merge(result.raw), // create a copy - desc = raw.description || ''; - - // Convert description to text and truncate it if necessary. - desc = Node.create('
    ' + desc + '
    ').get('text'); - - if (desc.length > 65) { - desc = Y.Escape.html(desc.substr(0, 65)) + ' …'; - } else { - desc = Y.Escape.html(desc); - } - - raw['class'] || (raw['class'] = ''); - raw.description = desc; - - // Use the highlighted result name. - raw.name = result.highlighted; - - return Lang.sub(this.RESULT_TEMPLATE, raw); - }, this); - }, - - _apiTextLocator: function (result) { - return result.displayName || result.name; - } -}, { - // -- Attributes ----------------------------------------------------------- - ATTRS: { - resultFormatter: { - valueFn: function () { - return this._apiResultFormatter; - } + // -- Initializer ---------------------------------------------------------- + initializer: function () { + this._bindUIACBase(); + this._syncUIACBase(); }, - resultFilters: { - valueFn: function () { - return this._apiResultFilter; - } + // -- Protected Methods ---------------------------------------------------- + _apiResultFilter: function (query, results) { + // Filter components out of the results. + return YArray.filter(results, function (result) { + return result.raw.resultType === 'component' ? false : result; + }); }, - resultHighlighter: { - value: 'phraseMatch' - }, + _apiResultFormatter: function (query, results) { + return YArray.map(results, function (result) { + var raw = Y.merge(result.raw), // create a copy + desc = raw.description || ''; - resultListLocator: { - value: 'data.results' - }, + // Convert description to text and truncate it if necessary. + desc = Node.create('
    ' + desc + '
    ').get('text'); - resultTextLocator: { - valueFn: function () { - return this._apiTextLocator; - } + if (desc.length > 65) { + desc = Y.Escape.html(desc.substr(0, 65)) + ' …'; + } else { + desc = Y.Escape.html(desc); + } + + raw['class'] || (raw['class'] = ''); + raw.description = desc; + + // Use the highlighted result name. + raw.name = result.highlighted; + + return Lang.sub(this.RESULT_TEMPLATE, raw); + }, this); }, - source: { - value: '/api/v1/search?q={query}&count={maxResults}' + _apiTextLocator: function (result) { + return result.displayName || result.name; } - } -}); + }, { + // -- Attributes ----------------------------------------------------------- + ATTRS: { + resultFormatter: { + valueFn: function () { + return this._apiResultFormatter; + } + }, + + resultFilters: { + valueFn: function () { + return this._apiResultFilter; + } + }, + + resultHighlighter: { + value: 'phraseMatch' + }, + + resultListLocator: { + value: 'data.results' + }, + + resultTextLocator: { + valueFn: function () { + return this._apiTextLocator; + } + }, + + source: { + value: '/api/v1/search?q={query}&count={maxResults}' + } + } + }); -}, '3.4.0', {requires: [ - 'autocomplete-base', 'autocomplete-highlighters', 'autocomplete-sources', - 'escape' -]}); +}, '3.4.0', { + requires: [ + 'autocomplete-base', 'autocomplete-highlighters', 'autocomplete-sources', + 'escape' + ] +}); diff --git a/docs/sdk/assets/js/apidocs.js b/docs/sdk/assets/js/apidocs.js index e00591c1..02b1ec5d 100644 --- a/docs/sdk/assets/js/apidocs.js +++ b/docs/sdk/assets/js/apidocs.js @@ -1,370 +1,372 @@ YUI().use( 'yuidoc-meta', 'api-list', 'history-hash', 'node-screen', 'node-style', 'pjax', -function (Y) { + function (Y) { -var win = Y.config.win, - localStorage = win.localStorage, + var win = Y.config.win, + localStorage = win.localStorage, - bdNode = Y.one('#bd'), + bdNode = Y.one('#bd'), - pjax, - defaultRoute, + pjax, + defaultRoute, - classTabView, - selectedTab; + classTabView, + selectedTab; // Kill pjax functionality unless serving over HTTP. -if (!Y.getLocation().protocol.match(/^https?\:/)) { - Y.Router.html5 = false; -} + if (!Y.getLocation().protocol.match(/^https?\:/)) { + Y.Router.html5 = false; + } // Create the default route with middleware which enables syntax highlighting // on the loaded content. -defaultRoute = Y.Pjax.defaultRoute.concat(function (req, res, next) { - prettyPrint(); - bdNode.removeClass('loading'); - - next(); -}); - -pjax = new Y.Pjax({ - container : '#docs-main', - contentSelector: '#docs-main > .content', - linkSelector : '#bd a', - titleSelector : '#xhr-title', - - navigateOnHash: true, - root : '/', - routes : [ - // -- / ---------------------------------------------------------------- - { - path : '/(index.html)?', - callbacks: defaultRoute - }, - - // -- /classes/* ------------------------------------------------------- - { - path : '/classes/:class.html*', - callbacks: [defaultRoute, 'handleClasses'] - }, - - // -- /files/* --------------------------------------------------------- - { - path : '/files/*file', - callbacks: [defaultRoute, 'handleFiles'] - }, - - // -- /modules/* ------------------------------------------------------- - { - path : '/modules/:module.html*', - callbacks: defaultRoute - } - ] -}); + defaultRoute = Y.Pjax.defaultRoute.concat(function (req, res, next) { + prettyPrint(); + bdNode.removeClass('loading'); + + next(); + }); + + pjax = new Y.Pjax({ + container: '#docs-main', + contentSelector: '#docs-main > .content', + linkSelector: '#bd a', + titleSelector: '#xhr-title', + + navigateOnHash: true, + root: '/', + routes: [ + // -- / ---------------------------------------------------------------- + { + path: '/(index.html)?', + callbacks: defaultRoute + }, + + // -- /classes/* ------------------------------------------------------- + { + path: '/classes/:class.html*', + callbacks: [defaultRoute, 'handleClasses'] + }, + + // -- /files/* --------------------------------------------------------- + { + path: '/files/*file', + callbacks: [defaultRoute, 'handleFiles'] + }, + + // -- /modules/* ------------------------------------------------------- + { + path: '/modules/:module.html*', + callbacks: defaultRoute + } + ] + }); // -- Utility Functions -------------------------------------------------------- -pjax.checkVisibility = function (tab) { - tab || (tab = selectedTab); + pjax.checkVisibility = function (tab) { + tab || (tab = selectedTab); - if (!tab) { return; } + if (!tab) { + return; + } - var panelNode = tab.get('panelNode'), - visibleItems; + var panelNode = tab.get('panelNode'), + visibleItems; - // If no items are visible in the tab panel due to the current visibility - // settings, display a message to that effect. - visibleItems = panelNode.all('.item,.index-item').some(function (itemNode) { - if (itemNode.getComputedStyle('display') !== 'none') { - return true; - } - }); + // If no items are visible in the tab panel due to the current visibility + // settings, display a message to that effect. + visibleItems = panelNode.all('.item,.index-item').some(function (itemNode) { + if (itemNode.getComputedStyle('display') !== 'none') { + return true; + } + }); + + panelNode.all('.no-visible-items').remove(); + + if (!visibleItems) { + if (Y.one('#index .index-item')) { + panelNode.append( + '
    ' + + '

    ' + + 'Some items are not shown due to the current visibility ' + + 'settings. Use the checkboxes at the upper right of this ' + + 'page to change the visibility settings.' + + '

    ' + + '
    ' + ); + } else { + panelNode.append( + '
    ' + + '

    ' + + 'This class doesn\'t provide any methods, properties, ' + + 'attributes, or events.' + + '

    ' + + '
    ' + ); + } + } - panelNode.all('.no-visible-items').remove(); - - if (!visibleItems) { - if (Y.one('#index .index-item')) { - panelNode.append( - '
    ' + - '

    ' + - 'Some items are not shown due to the current visibility ' + - 'settings. Use the checkboxes at the upper right of this ' + - 'page to change the visibility settings.' + - '

    ' + - '
    ' - ); - } else { - panelNode.append( - '
    ' + - '

    ' + - 'This class doesn\'t provide any methods, properties, ' + - 'attributes, or events.' + - '

    ' + - '
    ' - ); - } - } + // Hide index sections without any visible items. + Y.all('.index-section').each(function (section) { + var items = 0, + visibleItems = 0; + + section.all('.index-item').each(function (itemNode) { + items += 1; - // Hide index sections without any visible items. - Y.all('.index-section').each(function (section) { - var items = 0, - visibleItems = 0; + if (itemNode.getComputedStyle('display') !== 'none') { + visibleItems += 1; + } + }); - section.all('.index-item').each(function (itemNode) { - items += 1; + section.toggleClass('hidden', !visibleItems); + section.toggleClass('no-columns', visibleItems < 4); + }); + }; - if (itemNode.getComputedStyle('display') !== 'none') { - visibleItems += 1; + pjax.initClassTabView = function () { + if (!Y.all('#classdocs .api-class-tab').size()) { + return; } - }); - section.toggleClass('hidden', !visibleItems); - section.toggleClass('no-columns', visibleItems < 4); - }); -}; + if (classTabView) { + classTabView.destroy(); + selectedTab = null; + } -pjax.initClassTabView = function () { - if (!Y.all('#classdocs .api-class-tab').size()) { - return; - } + classTabView = new Y.TabView({ + srcNode: '#classdocs', - if (classTabView) { - classTabView.destroy(); - selectedTab = null; - } + on: { + selectionChange: pjax.onTabSelectionChange + } + }); + + pjax.updateTabState(); + classTabView.render(); + }; + + pjax.initLineNumbers = function () { + var hash = win.location.hash.substring(1), + container = pjax.get('container'), + hasLines, node; + + // Add ids for each line number in the file source view. + container.all('.linenums>li').each(function (lineNode, index) { + lineNode.set('id', 'l' + (index + 1)); + lineNode.addClass('file-line'); + hasLines = true; + }); + + // Scroll to the desired line. + if (hasLines && /^l\d+$/.test(hash)) { + if ((node = container.getById(hash))) { + win.scroll(0, node.getY()); + } + } + }; - classTabView = new Y.TabView({ - srcNode: '#classdocs', + pjax.initRoot = function () { + var terminators = /^(?:classes|files|modules)$/, + parts = pjax._getPathRoot().split('/'), + root = [], + i, len, part; - on: { - selectionChange: pjax.onTabSelectionChange - } - }); + for (i = 0, len = parts.length; i < len; i += 1) { + part = parts[i]; - pjax.updateTabState(); - classTabView.render(); -}; + if (part.match(terminators)) { + // Makes sure the path will end with a "/". + root.push(''); + break; + } -pjax.initLineNumbers = function () { - var hash = win.location.hash.substring(1), - container = pjax.get('container'), - hasLines, node; + root.push(part); + } - // Add ids for each line number in the file source view. - container.all('.linenums>li').each(function (lineNode, index) { - lineNode.set('id', 'l' + (index + 1)); - lineNode.addClass('file-line'); - hasLines = true; - }); + pjax.set('root', root.join('/')); + }; - // Scroll to the desired line. - if (hasLines && /^l\d+$/.test(hash)) { - if ((node = container.getById(hash))) { - win.scroll(0, node.getY()); - } - } -}; - -pjax.initRoot = function () { - var terminators = /^(?:classes|files|modules)$/, - parts = pjax._getPathRoot().split('/'), - root = [], - i, len, part; - - for (i = 0, len = parts.length; i < len; i += 1) { - part = parts[i]; - - if (part.match(terminators)) { - // Makes sure the path will end with a "/". - root.push(''); - break; - } + pjax.updateTabState = function (src) { + var hash = win.location.hash.substring(1), + defaultTab, node, tab, tabPanel; - root.push(part); - } + function scrollToNode() { + if (node.hasClass('protected')) { + Y.one('#api-show-protected').set('checked', true); + pjax.updateVisibility(); + } - pjax.set('root', root.join('/')); -}; + if (node.hasClass('private')) { + Y.one('#api-show-private').set('checked', true); + pjax.updateVisibility(); + } -pjax.updateTabState = function (src) { - var hash = win.location.hash.substring(1), - defaultTab, node, tab, tabPanel; + setTimeout(function () { + // For some reason, unless we re-get the node instance here, + // getY() always returns 0. + var node = Y.one('#classdocs').getById(hash); + win.scrollTo(0, node.getY() - 70); + }, 1); + } - function scrollToNode() { - if (node.hasClass('protected')) { - Y.one('#api-show-protected').set('checked', true); - pjax.updateVisibility(); - } + if (!classTabView) { + return; + } - if (node.hasClass('private')) { - Y.one('#api-show-private').set('checked', true); - pjax.updateVisibility(); - } + if (src === 'hashchange' && !hash) { + defaultTab = 'index'; + } else { + if (localStorage) { + defaultTab = localStorage.getItem('tab_' + pjax.getPath()) || + 'index'; + } else { + defaultTab = 'index'; + } + } - setTimeout(function () { - // For some reason, unless we re-get the node instance here, - // getY() always returns 0. - var node = Y.one('#classdocs').getById(hash); - win.scrollTo(0, node.getY() - 70); - }, 1); - } - - if (!classTabView) { - return; - } - - if (src === 'hashchange' && !hash) { - defaultTab = 'index'; - } else { - if (localStorage) { - defaultTab = localStorage.getItem('tab_' + pjax.getPath()) || - 'index'; - } else { - defaultTab = 'index'; - } - } + if (hash && (node = Y.one('#classdocs').getById(hash))) { + if ((tabPanel = node.ancestor('.api-class-tabpanel', true))) { + if ((tab = Y.one('#classdocs .api-class-tab.' + tabPanel.get('id')))) { + if (classTabView.get('rendered')) { + Y.Widget.getByNode(tab).set('selected', 1); + } else { + tab.addClass('yui3-tab-selected'); + } + } + } + + // Scroll to the desired element if this is a hash URL. + if (node) { + if (classTabView.get('rendered')) { + scrollToNode(); + } else { + classTabView.once('renderedChange', scrollToNode); + } + } + } else { + tab = Y.one('#classdocs .api-class-tab.' + defaultTab); + + // When the `defaultTab` node isn't found, `localStorage` is stale. + if (!tab && defaultTab !== 'index') { + tab = Y.one('#classdocs .api-class-tab.index'); + } - if (hash && (node = Y.one('#classdocs').getById(hash))) { - if ((tabPanel = node.ancestor('.api-class-tabpanel', true))) { - if ((tab = Y.one('#classdocs .api-class-tab.' + tabPanel.get('id')))) { if (classTabView.get('rendered')) { Y.Widget.getByNode(tab).set('selected', 1); } else { tab.addClass('yui3-tab-selected'); } } - } + }; - // Scroll to the desired element if this is a hash URL. - if (node) { - if (classTabView.get('rendered')) { - scrollToNode(); - } else { - classTabView.once('renderedChange', scrollToNode); - } - } - } else { - tab = Y.one('#classdocs .api-class-tab.' + defaultTab); + pjax.updateVisibility = function () { + var container = pjax.get('container'); - // When the `defaultTab` node isn't found, `localStorage` is stale. - if (!tab && defaultTab !== 'index') { - tab = Y.one('#classdocs .api-class-tab.index'); - } + container.toggleClass('hide-inherited', + !Y.one('#api-show-inherited').get('checked')); - if (classTabView.get('rendered')) { - Y.Widget.getByNode(tab).set('selected', 1); - } else { - tab.addClass('yui3-tab-selected'); - } - } -}; + container.toggleClass('show-deprecated', + Y.one('#api-show-deprecated').get('checked')); -pjax.updateVisibility = function () { - var container = pjax.get('container'); + container.toggleClass('show-protected', + Y.one('#api-show-protected').get('checked')); - container.toggleClass('hide-inherited', - !Y.one('#api-show-inherited').get('checked')); + container.toggleClass('show-private', + Y.one('#api-show-private').get('checked')); - container.toggleClass('show-deprecated', - Y.one('#api-show-deprecated').get('checked')); - - container.toggleClass('show-protected', - Y.one('#api-show-protected').get('checked')); - - container.toggleClass('show-private', - Y.one('#api-show-private').get('checked')); - - pjax.checkVisibility(); -}; + pjax.checkVisibility(); + }; // -- Route Handlers ----------------------------------------------------------- -pjax.handleClasses = function (req, res, next) { - var status = res.ioResponse.status; + pjax.handleClasses = function (req, res, next) { + var status = res.ioResponse.status; - // Handles success and local filesystem XHRs. - if (res.ioResponse.readyState === 4 && (!status || (status >= 200 && status < 300))) { - pjax.initClassTabView(); - } + // Handles success and local filesystem XHRs. + if (res.ioResponse.readyState === 4 && (!status || (status >= 200 && status < 300))) { + pjax.initClassTabView(); + } - next(); -}; + next(); + }; -pjax.handleFiles = function (req, res, next) { - var status = res.ioResponse.status; + pjax.handleFiles = function (req, res, next) { + var status = res.ioResponse.status; - // Handles success and local filesystem XHRs. - if (res.ioResponse.readyState === 4 && (!status || (status >= 200 && status < 300))) { - pjax.initLineNumbers(); - } + // Handles success and local filesystem XHRs. + if (res.ioResponse.readyState === 4 && (!status || (status >= 200 && status < 300))) { + pjax.initLineNumbers(); + } - next(); -}; + next(); + }; // -- Event Handlers ----------------------------------------------------------- -pjax.onNavigate = function (e) { - var hash = e.hash, - originTarget = e.originEvent && e.originEvent.target, - tab; + pjax.onNavigate = function (e) { + var hash = e.hash, + originTarget = e.originEvent && e.originEvent.target, + tab; - if (hash) { - tab = originTarget && originTarget.ancestor('.yui3-tab', true); + if (hash) { + tab = originTarget && originTarget.ancestor('.yui3-tab', true); - if (hash === win.location.hash) { - pjax.updateTabState('hashchange'); - } else if (!tab) { - win.location.hash = hash; - } + if (hash === win.location.hash) { + pjax.updateTabState('hashchange'); + } else if (!tab) { + win.location.hash = hash; + } - e.preventDefault(); - return; - } + e.preventDefault(); + return; + } - // Only scroll to the top of the page when the URL doesn't have a hash. - this.set('scrollToTop', !e.url.match(/#.+$/)); + // Only scroll to the top of the page when the URL doesn't have a hash. + this.set('scrollToTop', !e.url.match(/#.+$/)); - bdNode.addClass('loading'); -}; + bdNode.addClass('loading'); + }; -pjax.onOptionClick = function (e) { - pjax.updateVisibility(); -}; + pjax.onOptionClick = function (e) { + pjax.updateVisibility(); + }; -pjax.onTabSelectionChange = function (e) { - var tab = e.newVal, - tabId = tab.get('contentBox').getAttribute('href').substring(1); + pjax.onTabSelectionChange = function (e) { + var tab = e.newVal, + tabId = tab.get('contentBox').getAttribute('href').substring(1); - selectedTab = tab; + selectedTab = tab; - // If switching from a previous tab (i.e., this is not the default tab), - // replace the history entry with a hash URL that will cause this tab to - // be selected if the user navigates away and then returns using the back - // or forward buttons. - if (e.prevVal && localStorage) { - localStorage.setItem('tab_' + pjax.getPath(), tabId); - } + // If switching from a previous tab (i.e., this is not the default tab), + // replace the history entry with a hash URL that will cause this tab to + // be selected if the user navigates away and then returns using the back + // or forward buttons. + if (e.prevVal && localStorage) { + localStorage.setItem('tab_' + pjax.getPath(), tabId); + } - pjax.checkVisibility(tab); -}; + pjax.checkVisibility(tab); + }; // -- Init --------------------------------------------------------------------- -pjax.on('navigate', pjax.onNavigate); + pjax.on('navigate', pjax.onNavigate); -pjax.initRoot(); -pjax.upgrade(); -pjax.initClassTabView(); -pjax.initLineNumbers(); -pjax.updateVisibility(); + pjax.initRoot(); + pjax.upgrade(); + pjax.initClassTabView(); + pjax.initLineNumbers(); + pjax.updateVisibility(); -Y.APIList.rootPath = pjax.get('root'); + Y.APIList.rootPath = pjax.get('root'); -Y.one('#api-options').delegate('click', pjax.onOptionClick, 'input'); + Y.one('#api-options').delegate('click', pjax.onOptionClick, 'input'); -Y.on('hashchange', function (e) { - pjax.updateTabState('hashchange'); -}, win); + Y.on('hashchange', function (e) { + pjax.updateTabState('hashchange'); + }, win); -}); + }); diff --git a/docs/sdk/assets/js/main.js b/docs/sdk/assets/js/main.js index 9f92e86b..9de31ad0 100644 --- a/docs/sdk/assets/js/main.js +++ b/docs/sdk/assets/js/main.js @@ -1,94 +1,89 @@ -var SDK_Manager = function() { +var SDK_Manager = function () { }; -SDK_Manager.prototype.init = function() { - - this.highlightNav(); - - // optionally apply .affix() if the window height is big enough - var winHeight = $(window).height(); - var tocHeight = $('#toc').outerHeight() + $('#toc').position().top; - if (winHeight > tocHeight + 200) { - $('#toc ul.nav').affix(); - } - - // bind hashchange and go to tab - $(window).on('hashchange', $.proxy(this._handleHashChange, this)); - this._handleHashChange(); - - // class members - //$('table.table-members').on('click', 'a[data-tab]', $.proxy(function(event) { - // this._scrollToClassMember($(event.currentTarget).data('tab'), $(event.currentTarget).data('tab-member')); - //}, this)); - - // view options - $('#viewOptions input') - .each(function(i, e) { - $('#main').toggleClass('hide-' + $(e).val(), !$(e).is(':checked')); - }) - .on('click', function() { - $('#main').toggleClass('hide-' + $(this).val(), !$(this).is(':checked')); - }); - - // back to top - $('#doc').on('click', '.backToTop a', function() { - $('html, body').animate({scrollTop:0}); - }); +SDK_Manager.prototype.init = function () { + + this.highlightNav(); + + // optionally apply .affix() if the window height is big enough + var winHeight = $(window).height(); + var tocHeight = $('#toc').outerHeight() + $('#toc').position().top; + if (winHeight > tocHeight + 200) { + $('#toc ul.nav').affix(); + } + + // bind hashchange and go to tab + $(window).on('hashchange', $.proxy(this._handleHashChange, this)); + this._handleHashChange(); + + // view options + $('#viewOptions input') + .each(function (i, e) { + $('#main').toggleClass('hide-' + $(e).val(), !$(e).is(':checked')); + }) + .on('click', function () { + $('#main').toggleClass('hide-' + $(this).val(), !$(this).is(':checked')); + }); + + // back to top + $('#doc').on('click', '.backToTop a', function () { + $('html, body').animate({scrollTop: 0}); + }); }; /** * Highlights left nav based on current page */ -SDK_Manager.prototype.highlightNav = function(){ - - var file = location.pathname.split('/').pop(), - pageName = file.replace('.html','') - ; - - $('#toc a').each($.proxy(function(idx,item){ - var $this = $(item); - if ($this.text() == pageName){ - $this.parent().addClass('active'); - return false; - } - },this)); +SDK_Manager.prototype.highlightNav = function () { + + var file = location.pathname.split('/').pop(), + pageName = file.replace('.html', '') + ; + + $('#toc a').each($.proxy(function (idx, item) { + var $this = $(item); + if ($this.text() == pageName) { + $this.parent().addClass('active'); + return false; + } + }, this)); }; -SDK_Manager.prototype._handleHashChange = function() { +SDK_Manager.prototype._handleHashChange = function () { - if (!!location.hash) { - var hashParts = String(location.hash).split('-'); + if (!!location.hash) { + var hashParts = String(location.hash).split('-'); - // handle class member - if ($('#classTabs a[href="' + hashParts[0] + '"]').length) { - this._scrollToClassMember(hashParts[0], hashParts[1]); + // handle class member + if ($('#classTabs a[href="' + hashParts[0] + '"]').length) { + this._scrollToClassMember(hashParts[0], hashParts[1]); - // handle line number - } else if (/^#l\d+$/.test(hashParts[0])) { - var line = parseInt(hashParts[0].substring(2)); - var offset = $('ol.linenums li').eq(line).offset(); - $('html, body').animate({scrollTop:offset.top - 75}); + // handle line number + } else if (/^#l\d+$/.test(hashParts[0])) { + var line = parseInt(hashParts[0].substring(2)); + var offset = $('ol.linenums li').eq(line).offset(); + $('html, body').animate({scrollTop: offset.top - 75}); - // everything else - } else { - var offset = $(hashParts[0]).offset(); - $('html, body').animate({scrollTop:offset.top - 75}); - } - } + // everything else + } else { + var offset = $(hashParts[0]).offset(); + $('html, body').animate({scrollTop: offset.top - 75}); + } + } }; -SDK_Manager.prototype._scrollToClassMember = function(tab, member) { +SDK_Manager.prototype._scrollToClassMember = function (tab, member) { - $('#classTabs [href="' + tab + '"]').tab('show'); + $('#classTabs [href="' + tab + '"]').tab('show'); - if (member) { - var offset = $(tab + '-' + member).offset(); - $('html, body').animate({scrollTop:offset.top - 75}); - } + if (member) { + var offset = $(tab + '-' + member).offset(); + $('html, body').animate({scrollTop: offset.top - 75}); + } }; -$(function() { - var sdk = new SDK_Manager(); - sdk.init(); +$(function () { + var sdk = new SDK_Manager(); + sdk.init(); }); \ No newline at end of file diff --git a/docs/sdk/assets/js/yui-prettify.js b/docs/sdk/assets/js/yui-prettify.js index 18de8649..0892521b 100644 --- a/docs/sdk/assets/js/yui-prettify.js +++ b/docs/sdk/assets/js/yui-prettify.js @@ -1,10 +1,10 @@ -YUI().use('node', function(Y) { +YUI().use('node', function (Y) { var code = Y.all('.prettyprint.linenums'); if (code.size()) { - code.each(function(c) { + code.each(function (c) { var lis = c.all('ol li'), l = 1; - lis.each(function(n) { + lis.each(function (n) { n.prepend(''); l++; }); diff --git a/docs/sdk/classes/F2.App.html b/docs/sdk/classes/F2.App.html index 2e914d5a..178ea22a 100644 --- a/docs/sdk/classes/F2.App.html +++ b/docs/sdk/classes/F2.App.html @@ -1,526 +1,500 @@ - - F2 - F2.App - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.App + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.App

    - -

    -

    The App Class is an optional class that can be namespaced onto the -F2\Apps namespace. The -F2 Docs -has more information on the usage of the App Class.

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/classes.js:6
    - - - -
    -
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    F2.App

    + +

    + +

    The App Class is an optional class that can be namespaced onto the + F2\Apps namespace. The + F2 Docs + has more information on the usage of the App Class.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/classes.js:6 +
    + + +
    +
    + + + + +
    + +
    + +

    Constructor

    +
    +

    + F2.App + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + appContent + +
    • + +
    • + + root + +
    • + +
    + + ) + + +

    + +

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:6 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object for the app

      + +

      + + +
    • + +
    • + + appContent + F2.AppManifest.AppContent + + +

      + +

      The F2.AppManifest.AppContent + object

      + +

      + + +
    • + +
    • + + root + Element + + +

      + +

      The root DOM Element for the app

      + +

      + + +
    • + +
    +
    + + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + +
    NameDescription
    + + init + ( + + ) + +

    An optional init function that will automatically be called when + F2.F2\registerApps is called.

    +
    +
    + + +
    + + + + +
    + +
    +

    + init + ( + + ) + + +

    + +

    + +

    An optional init function that will automatically be called when + F2.F2\registerApps is called.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:20 +
    + + +
    +
    + + + + +
    + +
    + + + + + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -529,24 +503,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.AppConfig.html b/docs/sdk/classes/F2.AppConfig.html index 327baa48..b7fb2046 100644 --- a/docs/sdk/classes/F2.AppConfig.html +++ b/docs/sdk/classes/F2.AppConfig.html @@ -1,1197 +1,1010 @@ - - F2 - F2.AppConfig - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.AppConfig + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.AppConfig

    - -

    -

    The AppConfig object represents an app's meta data

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/classes.js:29
    - - - -
    -
    + - -

    - -
    -

    - height +
    +
    +
    +

    +
  • F2.AppManifest
  • -

    -

    The height of the app. The initial height will be pulled from -the F2.AppConfig object, but later -modified by calling -F2.UI.updateHeight. This is used -for secure apps to be able to set the initial height of the iframe.

    +
  • F2.AppManifest.AppContent
  • -

    +
  • F2.Constants
  • -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:55
    - +
  • F2.Constants.AppHandlers
  • - +
  • F2.Constants.Css
  • - -
    -
    +
  • F2.Constants.Events
  • - +
  • F2.Constants.Sockets
  • - +
  • F2.Constants.Views
  • - +
  • F2.ContainerConfig
  • - -
    - -
    -

    - instanceId +
  • F2.ContainerConfig.UI
  • - String +
  • F2.ContainerConfig.UI.Mask +
  • - +
  • F2.Events
  • - +
  • F2.Rpc
  • - +
  • F2.UI
  • - -

    +
  • F2.UI.Modals
  • -

    -

    The unique runtime ID of the app.

    -

    This property is populated during the -F2.registerApps process

    +
  • F2.UI.Views
  • -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:65
    - + +
  • + + + + +
  • + +
    +
    +

    F2.AppConfig

    - +

    - - -

    +

    The AppConfig object represents an app's meta data

    - +

    - +
    +
    - - -
    - -
    -

    - isSecure +
    Defined in
    +
    sdk/src/classes.js:29 +
    - Bool - + + - - +

    -

    -

    True if the app will be loaded in an iframe. This property -will be true if the F2.AppConfig object -sets isSecure = true. It will also be true if the -container has made the decision to -run apps in iframes.

    +
  • Properties
  • -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:74
    - + + +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + +
    NameDescription
    + appId +

    The unique ID of the app. More information can be found + here

    +
    + context +

    An object that represents the context of an app

    +
    + enableBatchRequests +

    True if the app should be requested in a single request with other apps.

    +
    + height +

    The height of the app. The initial height will be pulled from + the F2.AppConfig + object, but later + modified by calling + F2.UI.updateHeight. + This is used + for secure apps to be able to set the initial height of the iframe.

    +
    + instanceId +

    The unique runtime ID of the app.

    + +

    This property is populated during the + F2.registerApps + process

    +
    + isSecure +

    True if the app will be loaded in an iframe. This property + will be true if the F2.AppConfig + object + sets isSecure = true. It will also be true if the + container has made the decision + to + run apps in iframes.

    +
    + manifestUrl +

    The url to retrieve the F2.AppManifest + object.

    +
    + maxWidth +

    The recommended maximum width in pixels that this app should be run. + It is up to the container + to + implement the logic to prevent an app from being run when the maxWidth + requirements are not met.

    +
    + minGridSize +

    The recommended minimum grid size that this app should be run. This + value corresponds to the 12-grid system that is used by the + container. This property should + be + set by apps that require a certain number of columns in their layout.

    +
    + minWidth +

    The recommended minimum width in pixels that this app should be run. **It + is up to the container to + implement + the logic to prevent an app from being run when the minWidth requirements + are not met.

    +
    + name +

    The name of the app

    +
    + root +

    The root DOM element that contains the app

    + +

    This property is populated during the + F2.registerApps + process

    +
    + ui +

    The instance of F2.UI providing easy access to F2.UI methods

    + +

    This property is populated during the + F2.registerApps + process

    +
    + views +

    The views that this app supports. Available views + are defined in F2.Constants.Views. + The + presence of a view can be checked via + F2.inArray: +

    +
    F2.inArray(F2.Constants.Views.SETTINGS, app.views)
    +
    +
    - -
    -
    - -

    Default: false

    - + + - + - + - -
    - -
    -

    - manifestUrl + - String +
    - +
    +

    + appId - + String - - -

    +

    -

    -

    The url to retrieve the F2.AppManifest -object.

    +

    -

    +

    The unique ID of the app. More information can be found + here

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:85
    - +

    - +
    +
    - -
    -
    - +
    Defined in
    +
    sdk/src/classes.js:34 +
    - - +
    +
    - -
    - -
    -

    - maxWidth - Int + +

    - +
    +

    + context - + Object - - -

    +

    -

    -

    The recommended maximum width in pixels that this app should be run. -It is up to the container to -implement the logic to prevent an app from being run when the maxWidth -requirements are not met.

    +

    -

    +

    An object that represents the context of an app

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:93
    - +

    - +
    +
    - -
    -
    - +
    Defined in
    +
    sdk/src/classes.js:42 +
    - - +
    +
    - -
    - -
    -

    - minGridSize - Int + +

    - +
    +

    + enableBatchRequests - + Bool - - -

    +

    -

    -

    The recommended minimum grid size that this app should be run. This -value corresponds to the 12-grid system that is used by the -container. This property should be -set by apps that require a certain number of columns in their layout.

    +

    -

    +

    True if the app should be requested in a single request with other apps.

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:102
    - +

    - +
    +
    - -
    -
    - -

    Default: 4

    - +
    Defined in
    +
    sdk/src/classes.js:48 +
    - - +
    +
    - - - -
    -

    - minWidth - Int +

    Default: false

    - - + +

    - +
    +

    + height - -

    + Int -

    -

    The recommended minimum width in pixels that this app should be run. **It -is up to the container to implement -the logic to prevent an app from being run when the minWidth requirements -are not met.

    -

    + -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:112
    - +

    - +

    The height of the app. The initial height will be pulled from + the F2.AppConfig object, + but later + modified by calling + F2.UI.updateHeight. This is used + for secure apps to be able to set the initial height of the iframe.

    - -
    -
    +

    - -

    Default: 300

    - +
    +
    - - +
    Defined in
    +
    sdk/src/classes.js:55 +
    - -
    - -
    -

    - name - String + + - - + +

    - +
    +

    + instanceId - -

    + String -

    -

    The name of the app

    -

    + -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:122
    - +

    - +

    The unique runtime ID of the app.

    - -
    -
    +

    This property is populated during the + F2.registerApps + process

    - +

    - +
    +
    - - -
    - -
    -

    - root +
    Defined in
    +
    sdk/src/classes.js:65 +
    - Element - + + - - + +

    - - +
    +

    + isSecure -

    -

    The root DOM element that contains the app

    -

    This property is populated during the -F2.registerApps process

    + Bool -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:129
    - +

    - +

    - - - +

    True if the app will be loaded in an iframe. This property + will be true if the F2.AppConfig + object + sets isSecure = true. It will also be true if the + container has made the decision to + run apps in iframes.

    - +

    - +
    +
    - - -
    - -
    -

    - ui +
    Defined in
    +
    sdk/src/classes.js:74 +
    - F2.UI - + + - - +

    Default: false

    - -

    -

    -

    The instance of F2.UI providing easy access to F2.UI methods

    -

    This property is populated during the -F2.registerApps process

    + +
    -

    +
    +

    + manifestUrl -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:138
    - + String - - -
    -
    +

    - +

    - +

    The url to retrieve the F2.AppManifest + object.

    - +

    - -
    - -
    -

    - views +
    +
    - Array - +
    Defined in
    +
    sdk/src/classes.js:85 +
    - - +
    +
    - -

    -

    -

    The views that this app supports. Available views -are defined in F2.Constants.Views. The -presence of a view can be checked via -F2.inArray:

    -
    F2.inArray(F2.Constants.Views.SETTINGS, app.views)
    + +
    -

    +
    +

    + maxWidth -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:147
    - + Int - - -
    -
    +

    - +

    - +

    The recommended maximum width in pixels that this app should be run. + It is up to the container to + implement the logic to prevent an app from being run when the maxWidth + requirements are not met.

    - +

    - -
    - - - - +
    +
    - - - - - - - -
    - - -
    +
    Defined in
    +
    sdk/src/classes.js:93 +
    + + + + + + + + + +
    +

    + minGridSize + + Int + + +

    + +

    + +

    The recommended minimum grid size that this app should be run. This + value corresponds to the 12-grid system that is used by the + container. This property should be + set by apps that require a certain number of columns in their layout.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:102 +
    + + +
    +
    + + +

    Default: 4

    + + + +
    + +
    +

    + minWidth + + Int + + +

    + +

    + +

    The recommended minimum width in pixels that this app should be run. **It + is up to the container to implement + the logic to prevent an app from being run when the minWidth requirements + are not met.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:112 +
    + + +
    +
    + + +

    Default: 300

    + + + +
    + +
    +

    + name + + String + + +

    + +

    + +

    The name of the app

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:122 +
    + + +
    +
    + + + +
    + +
    +

    + root + + Element + + +

    + +

    + +

    The root DOM element that contains the app

    + +

    This property is populated during the + F2.registerApps + process

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:129 +
    + + +
    +
    + + + +
    + +
    +

    + ui + + F2.UI + + +

    + +

    + +

    The instance of F2.UI providing easy access to F2.UI methods

    + +

    This property is populated during the + F2.registerApps + process

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:138 +
    + + +
    +
    + + + +
    + +
    +

    + views + + Array + + +

    + +

    + +

    The views that this app supports. Available views + are defined in F2.Constants.Views. + The + presence of a view can be checked via + F2.inArray:

    +
    F2.inArray(F2.Constants.Views.SETTINGS,
    +                                app.views)
    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:147 +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + +
    - - + + @@ -1200,24 +1013,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.AppHandlers.html b/docs/sdk/classes/F2.AppHandlers.html index feb2bb66..88b1def8 100644 --- a/docs/sdk/classes/F2.AppHandlers.html +++ b/docs/sdk/classes/F2.AppHandlers.html @@ -1,1179 +1,1153 @@ - - F2 - F2.AppHandlers - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.AppHandlers + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.AppHandlers

    - -

    -

    The new AppHandlers functionality provides Container Developers a higher level of control over configuring app rendering and interaction.

    -

    -The addition of F2.AppHandlers replaces the previous F2.ContainerConfig properties beforeAppRender, appRender, and afterAppRender. These methods were deprecated—but not removed—in version 1.2. They will be permanently removed in a future version of F2. -

    - -

    -Starting with F2 version 1.2, AppHandlers is the preferred method for Container Developers to manage app layout. -

    - -

    Order of Execution

    -

    App Rendering

    -
      -
    1. F2.registerApps() method is called by the Container Developer and the following methods are run for each F2.AppConfig passed.
    2. -
    3. 'appCreateRoot' (F2.Constants.AppHandlers.APP_CREATE_ROOT) handlers are fired in the order they were attached.
    4. -
    5. 'appRenderBefore' (F2.Constants.AppHandlers.APP_RENDER_BEFORE) handlers are fired in the order they were attached.
    6. -
    7. Each app's manifestUrl is requested asynchronously; on success the following methods are fired.
    8. -
    9. 'appRender' (F2.Constants.AppHandlers.APP_RENDER) handlers are fired in the order they were attached.
    10. -
    11. 'appRenderAfter' (F2.Constants.AppHandlers.APP_RENDER_AFTER) handlers are fired in the order they were attached.
    12. -
    -

    App Removal

    -
      -
    1. F2.removeApp() with a specific F2.AppConfig/instanceId or F2.removeAllApps() method is called by the Container Developer and the following methods are run.
    2. -
    3. 'appDestroyBefore' (F2.Constants.AppHandlers.APP_DESTROY_BEFORE) handlers are fired in the order they were attached.
    4. -
    5. 'appDestroy' (F2.Constants.AppHandlers.APP_DESTROY) handlers are fired in the order they were attached.
    6. -
    7. 'appDestroyAfter' (F2.Constants.AppHandlers.APP_DESTROY_AFTER) handlers are fired in the order they were attached.
    8. -
    -

    Error Handling

    -
      -
    1. 'appScriptLoadFailed' (F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED) handlers are fired in the order they were attached.
    2. -
    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:1
    - - - -
    -
    + + +
    +
    +
    + +
    +
    +

    F2.AppHandlers

    + +

    + +

    The new AppHandlers functionality provides Container Developers a higher level of + control over configuring app rendering and interaction.

    + +

    + The addition of F2.AppHandlers replaces the previous F2.ContainerConfig properties + beforeAppRender, appRender, and afterAppRender. These methods + were deprecated—but not removed—in version 1.2. They will be permanently removed in a + future version of F2. +

    + +

    + Starting with F2 version 1.2, AppHandlers is the preferred method for Container + Developers to manage app layout. +

    + +

    Order of Execution

    + +

    App Rendering

    +
      +
    1. F2.registerApps() method + is called by the Container Developer and the following methods are run for each F2.AppConfig passed. +
    2. +
    3. 'appCreateRoot' (F2.Constants.AppHandlers.APP_CREATE_ROOT) + handlers are fired in the order they were attached. +
    4. +
    5. 'appRenderBefore' (F2.Constants.AppHandlers.APP_RENDER_BEFORE) handlers are fired in + the order they were attached. +
    6. +
    7. Each app's manifestUrl is requested asynchronously; on success the following + methods are fired. +
    8. +
    9. 'appRender' (F2.Constants.AppHandlers.APP_RENDER) + handlers are fired in the order they were attached. +
    10. +
    11. 'appRenderAfter' (F2.Constants.AppHandlers.APP_RENDER_AFTER) handlers are fired in + the order they were attached. +
    12. +
    +

    App Removal

    +
      +
    1. F2.removeApp() with a + specific F2.AppConfig/instanceId or F2.removeAllApps() method is called + by the Container Developer and the following methods are run. +
    2. +
    3. 'appDestroyBefore' (F2.Constants.AppHandlers.APP_DESTROY_BEFORE) handlers are fired + in the order they were attached. +
    4. +
    5. 'appDestroy' (F2.Constants.AppHandlers.APP_DESTROY) + handlers are fired in the order they were attached. +
    6. +
    7. 'appDestroyAfter' (F2.Constants.AppHandlers.APP_DESTROY_AFTER) handlers are fired in + the order they were attached. +
    8. +
    +

    Error Handling

    +
      +
    1. 'appScriptLoadFailed' (F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED) handlers are + fired in the order they were attached. +
    2. +
    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/app_handlers.js:1 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + + __f2GetToken + ( + + ) + +

    Allows F2 to get a token internally. Token is required to call __trigger. + This function will self destruct to eliminate other sources from using the __trigger + and additional internal methods.

    +
    + + __trigger + ( + +
      + +
    • + + token + +
    • + +
    • + + eventKey + +
    • + +
    + + ) +
    +

    Allows F2 to trigger specific events internally.

    +
    + + getToken + ( + + ) + +

    Allows Container Developer to retrieve a unique token which must be passed to + all on and off methods. This function will self + destruct and can only be called + one time. Container Developers must store the return value inside of a closure. +

    +
    + + off + ( + +
      + +
    • + + token + +
    • + +
    • + + eventKey{.namespace} + +
    • + +
    + + ) +
    +

    Allows Container Developer to remove listener methods for specific events

    +
    + + on + ( + +
      + +
    • + + token + +
    • + +
    • + + eventKey{.namespace} + +
    • + +
    • + + element + +
    • + +
    + + ) +
    +

    Allows Container Developer to easily tell all apps to render in a specific + location. Only valid for eventType appRender.

    +
    + + on + ( + +
      + +
    • + + token + +
    • + +
    • + + eventKey{.namespace} + +
    • + +
    • + + listener + +
    • + +
    + + ) +
    +

    Allows Container Developer to add listener method that will be triggered when + a specific event occurs.

    +
    +
    + + +
    + + + + +
    + +
    +

    + __f2GetToken + ( + + ) + + + private + + +

    + +

    + +

    Allows F2 to get a token internally. Token is required to call __trigger. + This function will self destruct to eliminate other sources from using the __trigger + and additional internal methods.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:205 +
    + + +
    +
    + + + + +
    + +
    +

    + __trigger + ( + +
      + +
    • + + token + +
    • + +
    • + + eventKey + +
    • + +
    + + ) + + + private + + + chainable + + +

    + +

    + +

    Allows F2 to trigger specific events internally.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:220 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + token + String + + +

      + +

      The token received from __f2GetToken.

      + +

      + + +
    • + +
    • + + eventKey + String + + +

      + +

      The event to fire. The complete list of event keys is available in F2.Constants.AppHandlers. +

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + getToken + ( + + ) + + +

    + +

    + +

    Allows Container Developer to retrieve a unique token which must be passed to + all on and off methods. This function will self destruct and + can only be called + one time. Container Developers must store the return value inside of a closure.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:191 +
    + +
    +
    - - -
    - -
    - - - -
    -

    Methods

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    - - __f2GetToken - ( - - ) - -

    Allows F2 to get a token internally. Token is required to call __trigger. -This function will self destruct to eliminate other sources from using the __trigger -and additional internal methods.

    -
    - - __trigger - ( - -
      - -
    • - - token - -
    • - -
    • - - eventKey - -
    • - -
    - - ) -
    -

    Allows F2 to trigger specific events internally.

    -
    - - getToken - ( - - ) - -

    Allows Container Developer to retrieve a unique token which must be passed to -all on and off methods. This function will self destruct and can only be called -one time. Container Developers must store the return value inside of a closure.

    -
    - - off - ( - -
      - -
    • - - token - -
    • - -
    • - - eventKey{.namespace} - -
    • - -
    - - ) -
    -

    Allows Container Developer to remove listener methods for specific events

    -
    - - on - ( - -
      - -
    • - - token - -
    • - -
    • - - eventKey{.namespace} - -
    • - -
    • - - element - -
    • - -
    - - ) -
    -

    Allows Container Developer to easily tell all apps to render in a specific location. Only valid for eventType appRender.

    -
    - - on - ( - -
      - -
    • - - token - -
    • - -
    • - - eventKey{.namespace} - -
    • - -
    • - - listener - -
    • - -
    - - ) -
    -

    Allows Container Developer to add listener method that will be triggered when a specific event occurs.

    -
    -
    - - - - - - - -
    - - - - -
    - -
    -

    - __f2GetToken - ( - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Allows F2 to get a token internally. Token is required to call __trigger. -This function will self destruct to eliminate other sources from using the __trigger -and additional internal methods.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:205
    - - - - - -
    -
    - - - - - - - - - - -
    - -
    -

    - __trigger - ( - -
      - -
    • - - token - -
    • - -
    • - - eventKey - -
    • - -
    - - ) - - - - - private - - - - - - - - chainable - - - -

    - -

    -

    Allows F2 to trigger specific events internally.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:220
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - token - String - - - - -

      -

      The token received from __f2GetToken.

      - -

      - - -
    • - -
    • - - eventKey - String - - - - -

      -

      The event to fire. The complete list of event keys is available in F2.Constants.AppHandlers.

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - getToken - ( - - ) - - - - - - - - - - - - -

    - -

    -

    Allows Container Developer to retrieve a unique token which must be passed to -all on and off methods. This function will self destruct and can only be called -one time. Container Developers must store the return value inside of a closure.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:191
    - - - - - -
    -
    - - - - - - - - - - -
    - -
    -

    - off - ( - -
      - -
    • - - token - -
    • - -
    • - - eventKey{.namespace} - -
    • - -
    - - ) - - - - - - - - - - - chainable - - - -

    - -

    -

    Allows Container Developer to remove listener methods for specific events

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:373
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - token - String - - - - -

      -

      The token received from getToken.

      - -

      - - -
    • - -
    • - - eventKey{.namespace} - String - - - - -

      -

      The event key used to determine which event to attach the listener to. If no namespace is provided all - listeners for the specified event type will be removed. - Complete list available in F2.Constants.AppHandlers.

      - -

      - - -
    • - -
    -
    - - - - - -

    Example:

    -
    + + +
    + +
    +

    + off + ( + +
      + +
    • + + token + +
    • + +
    • + + eventKey{.namespace} + +
    • + +
    + + ) + + + chainable + + +

    + +

    + +

    Allows Container Developer to remove listener methods for specific events

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:373 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + token + String + + +

      + +

      The token received from getToken. +

      + +

      + + +
    • + +
    • + + eventKey{.namespace} + String + + +

      + +

      The event key used to determine which event to attach the listener to. If no + namespace is provided all + listeners for the specified event type will be removed. + Complete list available in F2.Constants.AppHandlers. +

      + +

      + + +
    • + +
    +
    + + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.off(_token,'appRenderBefore');
    - -
    - - - - - -
    - -
    -

    - on - ( - -
      - -
    • - - token - -
    • - -
    • - - eventKey{.namespace} - -
    • - -
    • - - element - -
    • - -
    - - ) - - - - - - - - - - - chainable - - - -

    - -

    -

    Allows Container Developer to easily tell all apps to render in a specific location. Only valid for eventType appRender.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:288
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - token - String - - - - -

      -

      The token received from getToken.

      - -

      - - -
    • - -
    • - - eventKey{.namespace} - String - - - - -

      -

      The event key used to determine which event to attach the listener to. The namespace is useful for removal -purposes. At this time it does not affect when an event is fired. Complete list of event keys available in -F2.Constants.AppHandlers.

      - -

      - - -
    • - -
    • - - element - HTMLElement - - - - -

      -

      Specific DOM element to which app gets appended.

      - -

      - - -
    • - -
    -
    - + F2.AppHandlers.off(_token,'appRenderBefore'); + +
    + + + + +
    + +
    +

    + on + ( + +
      + +
    • + + token + +
    • + +
    • + + eventKey{.namespace} + +
    • + +
    • + + element + +
    • + +
    + + ) + + + chainable + + +

    + +

    + +

    Allows Container Developer to easily tell all apps to render in a specific location. Only + valid for eventType appRender.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:288 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + token + String + + +

      + +

      The token received from getToken. +

      + +

      + + +
    • + +
    • + + eventKey{.namespace} + String + + +

      - +

      The event key used to determine which event to attach the listener to. The + namespace is useful for removal + purposes. At this time it does not affect when an event is fired. Complete + list of event keys available in + F2.Constants.AppHandlers. +

      - -

      Example:

      -
      +

      + + +
    • + +
    • + + element + HTMLElement + + +

      + +

      Specific DOM element to which app gets appended.

      + +

      + + +
    • + +
    +
    + + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    'appRender',
    -    document.getElementById('my_app')
    -);
    -

    Or:

    + F2.AppHandlers.on( + _token, + 'appRender', + document.getElementById('my_app') + );
    +

    Or:

    F2.AppHandlers.on(
         _token,
         'appRender.myNamespace',
         document.getElementById('my_app')
    -);
    - -
    - - - - - -
    - -
    -

    - on - ( - -
      - -
    • - - token - -
    • - -
    • - - eventKey{.namespace} - -
    • - -
    • - - listener - -
    • - -
    - - ) - - - - - - - - - - - chainable - - - -

    - -

    -

    Allows Container Developer to add listener method that will be triggered when a specific event occurs.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:313
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - token - String - - - - -

      -

      The token received from getToken.

      - -

      - - -
    • - -
    • - - eventKey{.namespace} - String - - - - -

      -

      The event key used to determine which event to attach the listener to. The namespace is useful for removal -purposes. At this time it does not affect when an event is fired. Complete list of event keys available in -F2.Constants.AppHandlers.

      - -

      - - -
    • - -
    • - - listener - Function - - - - -

      -

      A function that will be triggered when a specific event occurs. For detailed argument definition refer to F2.Constants.AppHandlers.

      - -

      - - -
    • - -
    -
    - + ); + +
    + + + + + + +
    +

    + on + ( + +
      + +
    • + + token + +
    • + +
    • + + eventKey{.namespace} + +
    • + +
    • + + listener + +
    • + +
    + + ) + + + chainable + + +

    + +

    + +

    Allows Container Developer to add listener method that will be triggered when a specific + event occurs.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:313 +
    + + +
    +
    - - -

    Example:

    -
    +
    +

    Parameters:

    + +
      + +
    • + + token + String + + +

      + +

      The token received from getToken. +

      + +

      + + +
    • + +
    • + + eventKey{.namespace} + String + + +

      + +

      The event key used to determine which event to attach the listener to. The + namespace is useful for removal + purposes. At this time it does not affect when an event is fired. Complete + list of event keys available in + F2.Constants.AppHandlers. +

      + +

      + + +
    • + +
    • + + listener + Function + + +

      + +

      A function that will be triggered when a specific event occurs. For detailed + argument definition refer to F2.Constants.AppHandlers. +

      + +

      + + +
    • + +
    +
    + + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    'appRenderBefore'
    -    function() { F2.log('before app rendered!'); }
    -);
    -

    Or:

    + F2.AppHandlers.on( + _token, + 'appRenderBefore' + function() { F2.log('before app rendered!'); } + );
    +

    Or:

    F2.AppHandlers.on(
         _token,
         'appRenderBefore.myNamespace',
         function() { F2.log('before app rendered!'); }
    -);
    - -
    - - - - - -
    - -
    - - - - - - - - - - - - - - -
    -
    -
    + ); + +
    + + + + + + +
    + + + + + + + + + + + + + + +
    +
    + -
    +
    - - + + @@ -1182,24 +1156,24 @@

    Example:

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.AppManifest.AppContent.html b/docs/sdk/classes/F2.AppManifest.AppContent.html index 23e6ce37..a045b054 100644 --- a/docs/sdk/classes/F2.AppManifest.AppContent.html +++ b/docs/sdk/classes/F2.AppManifest.AppContent.html @@ -1,493 +1,462 @@ - - F2 - F2.AppManifest.AppContent - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.AppManifest.AppContent + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.AppManifest.AppContent

    - -

    -

    The AppContent object

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/classes.js:195
    - - - -
    -
    + - - - -
    -
    -
    +
    +
    +
    + +
    +
    +

    F2.AppManifest.AppContent

    + +

    + +

    The AppContent object

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/classes.js:195 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + data +

    Arbitrary data to be passed along with the app

    +
    + html +

    The string of HTML representing the app

    +
    + status +

    A status message

    +
    +
    + + +
    + + + + + + + + +
    + +
    +

    + data + + Object + + +

    + +

    + +

    Arbitrary data to be passed along with the app

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:200 +
    + + +
    +
    + + + +
    + +
    +

    + html + + String + + +

    + +

    + +

    The string of HTML representing the app

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:207 +
    + + +
    +
    + + + +
    + +
    +

    + status + + String + + +

    + +

    + +

    A status message

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:214 +
    + + +
    +
    + + + +
    + +
    + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -496,24 +465,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.AppManifest.html b/docs/sdk/classes/F2.AppManifest.html index c1f89f18..e5ade6e2 100644 --- a/docs/sdk/classes/F2.AppManifest.html +++ b/docs/sdk/classes/F2.AppManifest.html @@ -1,553 +1,506 @@ - - F2 - F2.AppManifest - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.AppManifest + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.AppManifest

    - -

    -

    The assets needed to render an app on the page

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/classes.js:160
    - - - -
    -
    + - +
    +
    +
    +
    - - +
  • F2.ContainerConfig.UI.Mask +
  • - - - +
  • F2.Events
  • - - - -
    -
    -
    +
  • F2.Rpc
  • + +
  • F2.UI
  • + +
  • F2.UI.Modals
  • + +
  • F2.UI.Views
  • + + + +
  • + + + + +
  • + +
    +
    +

    F2.AppManifest

    + +

    + +

    The assets needed to render an app on the page

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/classes.js:160 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + apps +

    The array of F2.AppManifest.AppContent + objects

    +
    + inlineScripts +

    Any inline javascript tha should initially be run

    +
    + scripts +

    Urls to javascript files required by the app

    +
    + styles +

    Urls to CSS files required by the app

    +
    +
    + + +
    + + + + + + + + +
    + +
    +

    + apps + + Array + + +

    + +

    + +

    The array of F2.AppManifest.AppContent + objects

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:165 +
    + + +
    +
    + + + +
    + +
    +

    + inlineScripts + + Array + + +

    + +

    + +

    Any inline javascript tha should initially be run

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:173 +
    + + +
    +
    + + + +
    + +
    +

    + scripts + + Array + + +

    + +

    + +

    Urls to javascript files required by the app

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:180 +
    + + +
    +
    + + + +
    + +
    +

    + styles + + Array + + +

    + +

    + +

    Urls to CSS files required by the app

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:187 +
    + + +
    +
    + + + +
    + +
    + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + + @@ -556,24 +509,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.Constants.AppHandlers.html b/docs/sdk/classes/F2.Constants.AppHandlers.html index e3f7fea8..f13513de 100644 --- a/docs/sdk/classes/F2.Constants.AppHandlers.html +++ b/docs/sdk/classes/F2.Constants.AppHandlers.html @@ -1,1001 +1,954 @@ - - F2 - F2.Constants.AppHandlers - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.Constants.AppHandlers + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.Constants.AppHandlers

    - -

    -

    A convenient collection of all available appHandler events.

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:422
    - - - -
    -
    + + +
    +
    +
    +
    - +
  • F2
  • - +
  • F2.App
  • - - - -
    -

    - APP_DESTROY +
  • F2.AppConfig
  • - String +
  • F2.AppHandlers
  • - +
  • F2.AppManifest
  • - +
  • F2.AppManifest.AppContent
  • - - final - +
  • F2.Constants
  • - - static - -

    +
  • F2.Constants.AppHandlers
  • -

    -

    Equivalent to appDestroy. Identifies the app destroy method for use in AppHandlers.on/off. -When bound using F2.AppHandlers.on() the listener function passed will receive the -following argument(s): ( appInstance )

    +
  • F2.Constants.Css
  • -

    +
  • F2.Constants.Events
  • -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:550
    - +
  • F2.Constants.Sockets
  • - +
  • F2.Constants.Views
  • - -
    -
    +
  • F2.ContainerConfig
  • - +
  • F2.ContainerConfig.UI
  • - -

    Example:

    +
  • F2.ContainerConfig.UI.Mask +
  • -
    +
  • F2.Events
  • + +
  • F2.Rpc
  • + +
  • F2.UI
  • + +
  • F2.UI.Modals
  • + +
  • F2.UI.Views
  • + + + +
  • + + + + +
  • + +
    +
    +

    F2.Constants.AppHandlers

    + +

    + +

    A convenient collection of all available appHandler events.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:422 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + APP_CREATE_ROOT +

    Equivalent to appCreateRoot. Identifies the create root method + for use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() the listener + function passed will receive the + following argument(s): ( appConfig )

    +
    + APP_DESTROY +

    Equivalent to appDestroy. Identifies the app destroy method for + use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() the listener + function passed will receive the + following argument(s): ( appInstance )

    +
    + APP_DESTROY_AFTER +

    Equivalent to appDestroyAfter. Identifies the after app destroy + method for use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() the listener + function passed will receive the + following argument(s): ( appInstance )

    +
    + APP_DESTROY_BEFORE +

    Equivalent to appDestroyBefore. Identifies the before app + destroy method for use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() the listener + function passed will receive the + following argument(s): ( appInstance )

    +
    + APP_RENDER +

    Equivalent to appRender. Identifies the app render method for + use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() the listener + function passed will receive the + following argument(s): ( appConfig, appHtml )

    +
    + APP_RENDER_AFTER +

    Equivalent to appRenderAfter. Identifies the after app render + method for use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() the listener + function passed will receive the + following argument(s): ( appConfig )

    +
    + APP_RENDER_BEFORE +

    Equivalent to appRenderBefore. Identifies the before app render + method for use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() the listener + function passed will receive the + following argument(s): ( appConfig )

    +
    + APP_SCRIPT_LOAD_FAILED +

    Equivalent to appScriptLoadFailed. Identifies the app script + load failed method for use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() the listener + function passed will receive the + following argument(s): ( appConfig, scriptInfo )

    +
    +
    + + +
    + + + + + + + + +
    + +
    +

    + APP_CREATE_ROOT + + String + + + final + + + static + +

    + +

    + +

    Equivalent to appCreateRoot. Identifies the create root method for use in + AppHandlers.on/off. + When bound using F2.AppHandlers.on() + the listener function passed will receive the + following argument(s): ( appConfig + )

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:429 +
    + + +
    +
    + + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    F2.Constants.AppHandlers.APP_DESTROY,
    -    function(appInstance)
    -    {
    -        // call the apps destroy method, if it has one
    -        if(appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function')
    -        {
    -            appInstance.app.destroy();
    -        }
    -        else if(appInstance && appInstance.app && appInstance.app.destroy)
    -        {
    -            F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
    -        }
    +                F2.AppHandlers.on(
    +                _token,
    +                F2.Constants.AppHandlers.APP_CREATE_ROOT,
    +                function(appConfig)
    +                {
    +                // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
    +                // the app's html is not available until after the manifest is retrieved so this logic occurs in
    +                F2.Constants.AppHandlers.APP_RENDER
    +                appConfig.root = jQuery('<section></section>').get(0);
    +                }
    +                );
    - // fade out and remove the root - jQuery(appInstance.config.root).fadeOut(500, function() { - jQuery(this).remove(); - }); - } -); +
    -
    - - + +
    - - - -
    -

    - APP_DESTROY_AFTER +
    +

    + APP_DESTROY - String + String - - + final - - final - - - static - -

    + static -

    -

    Equivalent to appDestroyAfter. Identifies the after app destroy method for use in AppHandlers.on/off. -When bound using F2.AppHandlers.on() the listener function passed will receive the -following argument(s): ( appInstance )

    +

    -

    +

    -

    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:583
    - +

    Equivalent to appDestroy. Identifies the app destroy method for use in + AppHandlers.on/off. + When bound using F2.AppHandlers.on() + the listener function passed will receive the + following argument(s): ( appInstance )

    - +

    - -
    -
    +
    +
    - - -

    Example:

    +
    Defined in
    +
    sdk/src/app_handlers.js:550 +
    -
    + +
    +
    + + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    F2.Constants.AppHandlers.APP_DESTROY_AFTER,
    -    function(appInstance)
    -    {
    -        F2.log(appInstance);
    -    }
    -);
    + F2.AppHandlers.on( + _token, + F2.Constants.AppHandlers.APP_DESTROY, + function(appInstance) + { + // call the apps destroy method, if it has one + if(appInstance && appInstance.app && appInstance.app.destroy && + typeof(appInstance.app.destroy) == 'function') + { + appInstance.app.destroy(); + } + else if(appInstance && appInstance.app && appInstance.app.destroy) + { + F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and + as such will not be executed.'); + } + + // fade out and remove the root + jQuery(appInstance.config.root).fadeOut(500, function() { + jQuery(this).remove(); + }); + } + ); + +
    -
    - - + + - - - -
    -

    - APP_DESTROY_BEFORE +
    +

    + APP_DESTROY_AFTER - String + String - - + final - - final - - - static - -

    + static -

    -

    Equivalent to appDestroyBefore. Identifies the before app destroy method for use in AppHandlers.on/off. -When bound using F2.AppHandlers.on() the listener function passed will receive the -following argument(s): ( appInstance )

    +

    -

    +

    -

    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:530
    - +

    Equivalent to appDestroyAfter. Identifies the after app destroy method for + use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() + the listener function passed will receive the + following argument(s): ( appInstance )

    - +

    - -
    -
    +
    +
    - - -

    Example:

    +
    Defined in
    +
    sdk/src/app_handlers.js:583 +
    -
    + +
    +
    + + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
    -    function(appInstance)
    -    {
    -        F2.log(appInstance);
    -    }
    -);
    + F2.AppHandlers.on( + _token, + F2.Constants.AppHandlers.APP_DESTROY_AFTER, + function(appInstance) + { + F2.log(appInstance); + } + ); + +
    + -
    - + + - +
    +

    + APP_DESTROY_BEFORE - -

    - -
    -

    - APP_RENDER + String - String - + final - - - final - + static - - static - -

    +

    -

    -

    Equivalent to appRender. Identifies the app render method for use in AppHandlers.on/off. -When bound using F2.AppHandlers.on() the listener function passed will receive the -following argument(s): ( appConfig, appHtml )

    +

    -

    +

    Equivalent to appDestroyBefore. Identifies the before app destroy method for + use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() + the listener function passed will receive the + following argument(s): ( appInstance )

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:471
    - +

    - +
    +
    - -
    -
    - +
    Defined in
    +
    sdk/src/app_handlers.js:530 +
    - -

    Example:

    -
    +
    +
    + + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    F2.Constants.AppHandlers.APP_RENDER,
    -    function(appConfig, appHtml)
    -    {
    -        var $root = null;
    -
    -        // if no app root is defined use the app's outer most node
    -        if(!F2.isNativeDOMNode(appConfig.root))
    -        {
    -            appConfig.root = jQuery(appHtml).get(0);
    -            // get a handle on the root in jQuery
    -            $root = jQuery(appConfig.root);                
    -        }
    -        else
    -        {
    -            // get a handle on the root in jQuery
    -            $root = jQuery(appConfig.root);            
    +                F2.AppHandlers.on(
    +                _token,
    +                F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
    +                function(appInstance)
    +                {
    +                F2.log(appInstance);
    +                }
    +                );
    - // append the app html to the root - $root.append(appHtml); - } +
    - // append the root to the body by default. - jQuery('body').append($root); - } -); - - +
    + Back to top +
    + + +
    +

    + APP_RENDER + + String - - -

    - -
    -

    - APP_RENDER_AFTER + final - String - + static - +

    - - final - +

    - - static - - +

    Equivalent to appRender. Identifies the app render method for use in + AppHandlers.on/off. + When bound using F2.AppHandlers.on() + the listener function passed will receive the + following argument(s): ( appConfig, + appHtml )

    -

    -

    Equivalent to appRenderAfter. Identifies the after app render method for use in AppHandlers.on/off. -When bound using F2.AppHandlers.on() the listener function passed will receive the -following argument(s): ( appConfig )

    +

    -

    +
    +
    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:510
    - - +
    Defined in
    +
    sdk/src/app_handlers.js:471 +
    - -
    -
    - +
    +
    - -

    Example:

    -
    +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    F2.Constants.AppHandlers.APP_RENDER_AFTER,
    -    function(appConfig)
    -    {
    -        F2.log(appConfig);
    -    }
    -);
    + F2.AppHandlers.on( + _token, + F2.Constants.AppHandlers.APP_RENDER, + function(appConfig, appHtml) + { + var $root = null; + + // if no app root is defined use the app's outer most node + if(!F2.isNativeDOMNode(appConfig.root)) + { + appConfig.root = jQuery(appHtml).get(0); + // get a handle on the root in jQuery + $root = jQuery(appConfig.root); + } + else + { + // get a handle on the root in jQuery + $root = jQuery(appConfig.root); + + // append the app html to the root + $root.append(appHtml); + } + + // append the root to the body by default. + jQuery('body').append($root); + } + ); + +
    + -
    - +
    + Back to top +
    +
    - +
    +

    + APP_RENDER_AFTER - -

    - -
    -

    - APP_RENDER_BEFORE + String - String - + final - - - final - + static - - static - -

    + -

    -

    Equivalent to appRenderBefore. Identifies the before app render method for use in AppHandlers.on/off. -When bound using F2.AppHandlers.on() the listener function passed will receive the -following argument(s): ( appConfig )

    +

    -

    +

    Equivalent to appRenderAfter. Identifies the after app render method for use + in AppHandlers.on/off. + When bound using F2.AppHandlers.on() + the listener function passed will receive the + following argument(s): ( appConfig + )

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:451
    - +

    - +
    +
    - -
    -
    - +
    Defined in
    +
    sdk/src/app_handlers.js:510 +
    - -

    Example:

    -
    +
    +
    + + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    F2.Constants.AppHandlers.APP_RENDER_BEFORE,
    -    function(appConfig)
    -    {
    -        F2.log(appConfig);
    -    }
    -);
    + F2.AppHandlers.on( + _token, + F2.Constants.AppHandlers.APP_RENDER_AFTER, + function(appConfig) + { + F2.log(appConfig); + } + ); + +
    + + +
    + Back to top +
    +
    - - +
    +

    + APP_RENDER_BEFORE - + String - -

    - -
    -

    - APP_SCRIPT_LOAD_FAILED - String + final - - + static - - final - +

    - - static - - +

    -

    -

    Equivalent to appScriptLoadFailed. Identifies the app script load failed method for use in AppHandlers.on/off. -When bound using F2.AppHandlers.on() the listener function passed will receive the -following argument(s): ( appConfig, scriptInfo )

    +

    Equivalent to appRenderBefore. Identifies the before app render method for + use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() + the listener function passed will receive the + following argument(s): ( appConfig + )

    -

    +

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/app_handlers.js:603
    - +
    +
    - - -
    -
    +
    Defined in
    +
    sdk/src/app_handlers.js:451 +
    - - -

    Example:

    +
    +
    -
    + +

    Example:

    + +
    var _token = F2.AppHandlers.getToken();
    -F2.AppHandlers.on(
    -    _token,
    -    F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
    -    function(appConfig, scriptInfo)
    -    {
    -        F2.log(appConfig.appId);
    -    }
    -);
    + F2.AppHandlers.on( + _token, + F2.Constants.AppHandlers.APP_RENDER_BEFORE, + function(appConfig) + { + F2.log(appConfig); + } + ); -
    - +
    - -
    - Back to top -
    -
    - - - - +
    + Back to top +
    + - - - +
    +

    + APP_SCRIPT_LOAD_FAILED + + String + + + final - - - - - - -
    + static - - +

    + +

    + +

    Equivalent to appScriptLoadFailed. Identifies the app script load failed + method for use in AppHandlers.on/off. + When bound using F2.AppHandlers.on() + the listener function passed will receive the + following argument(s): ( appConfig, + scriptInfo )

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/app_handlers.js:603 +
    + + +
    +
    + + +

    Example:

    + +
    +
    var _token = F2.AppHandlers.getToken();
    +                F2.AppHandlers.on(
    +                _token,
    +                F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
    +                function(appConfig, scriptInfo)
    +                {
    +                F2.log(appConfig.appId);
    +                }
    +                );
    + +
    + + +
    + Back to top +
    +
    + + + + + + + + + + + + + + + + +
    + + + @@ -1004,24 +957,24 @@

    Example:

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.Constants.Css.html b/docs/sdk/classes/F2.Constants.Css.html index ea519e81..69efc79a 100644 --- a/docs/sdk/classes/F2.Constants.Css.html +++ b/docs/sdk/classes/F2.Constants.Css.html @@ -1,791 +1,711 @@ - - F2 - F2.Constants.Css - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.Constants.Css + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.Constants.Css

    - -

    -

    CSS class constants

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/constants.js:7
    - - - -
    -
    + -

    +
    +
    +
    +
    - - - - - - - - - - -
    -
    -
    +
  • F2.AppManifest
  • + +
  • F2.AppManifest.AppContent
  • + +
  • F2.Constants
  • + +
  • F2.Constants.AppHandlers
  • + +
  • F2.Constants.Css
  • + +
  • F2.Constants.Events
  • + +
  • F2.Constants.Sockets
  • + +
  • F2.Constants.Views
  • + +
  • F2.ContainerConfig
  • + +
  • F2.ContainerConfig.UI
  • + +
  • F2.ContainerConfig.UI.Mask +
  • + +
  • F2.Events
  • + +
  • F2.Rpc
  • + +
  • F2.UI
  • + +
  • F2.UI.Modals
  • + +
  • F2.UI.Views
  • + + + +
  • + + + + +
  • + +
    +
    +

    F2.Constants.Css

    + +

    + +

    CSS class constants

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/constants.js:7 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + APP +

    The APP class should be applied to the DOM Element that surrounds the + entire app, including any extra html that surrounds the APP_CONTAINER + that is inserted by the container. See the + F2.ContainerConfig + object.

    +
    + APP_CONTAINER +

    The APP_CONTAINER class should be applied to the outermost DOM Element + of the app.

    +
    + APP_TITLE +

    The APP_TITLE class should be applied to the DOM Element that contains + the title for an app. If this class is not present, then + F2.UI.setTitle will not function.

    +
    + APP_VIEW +

    The APP_VIEW class should be applied to the DOM Element that contains + a view for an app. The DOM Element should also have a + F2.Constants.Views.DATA_ATTRIBUTE + attribute that specifies which + F2.Constants.Views + it is.

    +
    + APP_VIEW_TRIGGER +

    APP_VIEW_TRIGGER class should be applied to the DOM Elements that + trigger an + F2.Constants.Events.APP_VIEW_CHANGE + event. The DOM Element should also have a + F2.Constants.Views.DATA_ATTRIBUTE + attribute that specifies which + F2.Constants.Views + it will trigger.

    +
    + MASK +

    The MASK class is applied to the overlay element that is created + when the F2.UI.showMask method is + fired.

    +
    + MASK_CONTAINER +

    The MASK_CONTAINER class is applied to the Element that is passed into + the F2.UI.showMask + method.

    +
    +
    + + +
    + + + + + + + + +
    + +
    +

    + APP + + String + + + final + + + static + +

    + +

    + +

    The APP class should be applied to the DOM Element that surrounds the + entire app, including any extra html that surrounds the APP_CONTAINER + that is inserted by the container. See the + F2.ContainerConfig + object.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:17 +
    + + +
    +
    + + + +
    + +
    +

    + APP_CONTAINER + + String + + + final + + + static + +

    + +

    + +

    The APP_CONTAINER class should be applied to the outermost DOM Element + of the app.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:28 +
    + + +
    +
    + + + +
    + +
    +

    + APP_TITLE + + String + + + final + + + static + +

    + +

    + +

    The APP_TITLE class should be applied to the DOM Element that contains + the title for an app. If this class is not present, then + F2.UI.setTitle + will not function.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:37 +
    + + +
    +
    + + + +
    + +
    +

    + APP_VIEW + + String + + + final + + + static + +

    + +

    + +

    The APP_VIEW class should be applied to the DOM Element that contains + a view for an app. The DOM Element should also have a + F2.Constants.Views.DATA_ATTRIBUTE + attribute that specifies which + F2.Constants.Views it + is.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:47 +
    + + +
    +
    + + + +
    + +
    +

    + APP_VIEW_TRIGGER + + String + + + final + + + static + +

    + +

    + +

    APP_VIEW_TRIGGER class should be applied to the DOM Elements that + trigger an + F2.Constants.Events.APP_VIEW_CHANGE + event. The DOM Element should also have a + F2.Constants.Views.DATA_ATTRIBUTE + attribute that specifies which + F2.Constants.Views it + will trigger.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:59 +
    + + +
    +
    + + + +
    + +
    +

    + MASK + + String + + + final + + + static + +

    + +

    + +

    The MASK class is applied to the overlay element that is created + when the F2.UI.showMask + method is + fired.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:73 +
    + + +
    +
    + + + +
    + +
    +

    + MASK_CONTAINER + + String + + + final + + + static + +

    + +

    + +

    The MASK_CONTAINER class is applied to the Element that is passed into + the F2.UI.showMask + method.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:83 +
    + + +
    +
    + + + +
    + +
    + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + + @@ -794,24 +714,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.Constants.Events.html b/docs/sdk/classes/F2.Constants.Events.html index db80a0e4..7e9ece31 100644 --- a/docs/sdk/classes/F2.Constants.Events.html +++ b/docs/sdk/classes/F2.Constants.Events.html @@ -1,591 +1,551 @@ - - F2 - F2.Constants.Events - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.Constants.Events + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.Constants.Events

    - -

    -

    Events constants

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/constants.js:95
    - - - -
    -
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    F2.Constants.Events

    + +

    + +

    Events constants

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/constants.js:95 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + APP_SYMBOL_CHANGE +

    The APP_SYMBOL_CHANGE event is fired when the symbol is changed in an + app. It is up to the app developer to fire this event. + Returns an object with the symbol and company name:

    +
    { symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)'
    +                                            }
    +
    + APP_WIDTH_CHANGE +

    The APP_WIDTH_CHANGE event will be fired by the container when the + width of an app is changed. The app's instanceId should be concatenated + to this constant. + Returns an object with the gridSize and width in pixels:

    +
    { gridSize:8, width:620 }
    +
    + CONTAINER_SYMBOL_CHANGE +

    The CONTAINER_SYMBOL_CHANGE event is fired when the symbol is changed + at the container level. This event should only be fired by the + container or container provider. + Returns an object with the symbol and company name:

    +
    { symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)'
    +                                            }
    +
    + CONTAINER_WIDTH_CHANGE +

    The CONTAINER_WIDTH_CHANGE event will be fired by the container when + the width of the container has changed.

    +
    +
    + + +
    + + + + + + + + +
    + +
    +

    + APP_SYMBOL_CHANGE + + String + + + final + + + static + +

    + +

    + +

    The APP_SYMBOL_CHANGE event is fired when the symbol is changed in an + app. It is up to the app developer to fire this event. + Returns an object with the symbol and company name:

    +
    { symbol: 'MSFT', name: 'Microsoft Corp
    +                                (NASDAQ)' }
    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:106 +
    + + +
    +
    + + + +
    + +
    +

    + APP_WIDTH_CHANGE + + String + + + final + + + static + +

    + +

    + +

    The APP_WIDTH_CHANGE event will be fired by the container when the + width of an app is changed. The app's instanceId should be concatenated + to this constant. + Returns an object with the gridSize and width in pixels:

    +
    { gridSize:8, width:620 }
    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:119 +
    + + +
    +
    + + + +
    + +
    +

    + CONTAINER_SYMBOL_CHANGE + + String + + + final + + + static + +

    + +

    + +

    The CONTAINER_SYMBOL_CHANGE event is fired when the symbol is changed + at the container level. This event should only be fired by the + container or container provider. + Returns an object with the symbol and company name:

    +
    { symbol: 'MSFT', name: 'Microsoft Corp
    +                                (NASDAQ)' }
    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:133 +
    + + +
    +
    + + + +
    + +
    +

    + CONTAINER_WIDTH_CHANGE + + String + + + final + + + static + +

    + +

    + +

    The CONTAINER_WIDTH_CHANGE event will be fired by the container when + the width of the container has changed.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:147 +
    + + +
    +
    + + + +
    + +
    + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -594,24 +554,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.Constants.Sockets.html b/docs/sdk/classes/F2.Constants.Sockets.html index f4354460..3d347038 100644 --- a/docs/sdk/classes/F2.Constants.Sockets.html +++ b/docs/sdk/classes/F2.Constants.Sockets.html @@ -1,639 +1,581 @@ - - F2 - F2.Constants.Sockets - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.Constants.Sockets + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.Constants.Sockets

    - -

    -

    Constants for use with cross-domain sockets

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/constants.js:161
    - - - -
    -
    + - +
    +
    +
    +

    +
  • F2.AppConfig
  • -

    -

    The RPC_CALLBACK message is sent when a call back from an RPC method is -fired.

    +
  • F2.AppHandlers
  • -

    +
  • F2.AppManifest
  • -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/constants.js:197
    - +
  • F2.AppManifest.AppContent
  • - +
  • F2.Constants
  • - -
    -
    +
  • F2.Constants.AppHandlers
  • - +
  • F2.Constants.Css
  • - +
  • F2.Constants.Events
  • - +
  • F2.Constants.Sockets
  • -
    - Back to top -
    - - -
    -

    - UI_RPC +
  • F2.Constants.Views
  • - String - - +
  • F2.ContainerConfig
  • - - - - final - - - - static - -

    +
  • F2.ContainerConfig.UI
  • -

    -

    The UI_RPC message is sent when a UI method called.

    +
  • F2.ContainerConfig.UI.Mask +
  • -

    +
  • F2.Events
  • -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/constants.js:206
    - +
  • F2.Rpc
  • - +
  • F2.UI
  • - -
    -
    +
  • F2.UI.Modals
  • - +
  • F2.UI.Views
  • - - + +
  • + + + + +
  • + + +
    +

    F2.Constants.Sockets

    - -
    - - - - - - - - - - - - - - - +

    + +

    Constants for use with cross-domain sockets

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/constants.js:161 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + EVENT +

    The EVENT message is sent whenever + F2.Events.emit is fired

    +
    + LOAD +

    The LOAD message is sent when an iframe socket initially loads. + Returns a JSON string that represents:

    +
    [ App, AppManifest]
    +
    + RPC +

    The RPC message is sent when a method is passed up from within a secure + app page.

    +
    + RPC_CALLBACK +

    The RPC_CALLBACK message is sent when a call back from an RPC method is + fired.

    +
    + UI_RPC +

    The UI_RPC message is sent when a UI method called.

    +
    +
    + + +
    + + + + + + + + +
    + +
    +

    + EVENT + + String + + + final + + + static + +

    + +

    + +

    The EVENT message is sent whenever + F2.Events.emit is + fired

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:167 +
    + + +
    +
    + + + +
    + +
    +

    + LOAD + + String + + + final + + + static + +

    + +

    + +

    The LOAD message is sent when an iframe socket initially loads. + Returns a JSON string that represents:

    +
    [ App, AppManifest]
    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:176 +
    + + +
    +
    + + + +
    + +
    +

    + RPC + + String + + + final + + + static + +

    + +

    + +

    The RPC message is sent when a method is passed up from within a secure + app page.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:188 +
    + + +
    +
    + + + +
    + +
    +

    + RPC_CALLBACK + + String + + + final + + + static + +

    + +

    + +

    The RPC_CALLBACK message is sent when a call back from an RPC method is + fired.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:197 +
    + + +
    +
    + + + +
    + +
    +

    + UI_RPC + + String + + + final + + + static + +

    + +

    + +

    The UI_RPC message is sent when a UI method called.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:206 +
    + + +
    +
    + + + +
    + +
    + + + + + + + + + + +
    + + -
    +
    - - + + @@ -642,24 +584,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.Constants.Views.html b/docs/sdk/classes/F2.Constants.Views.html index f63e8fcc..3a2b7919 100644 --- a/docs/sdk/classes/F2.Constants.Views.html +++ b/docs/sdk/classes/F2.Constants.Views.html @@ -1,703 +1,628 @@ - - F2 - F2.Constants.Views - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.Constants.Views + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.Constants.Views

    - -

    -

    The available view types to apps. The view should be specified by applying -the F2.Constants.Css.APP_VIEW class to the -containing DOM Element. A DATA_ATTRIBUTE attribute should be added to the -Element as well which defines what view type is represented. -The hide class can be applied to views that should be hidden by default.

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/constants.js:216
    - - - -
    -
    + - String +
    +
    +
    +

    +
  • F2.AppHandlers
  • -

    -

    The HOME view is the main view for an app. This view should always -be provided by an app.

    +
  • F2.AppManifest
  • -

    +
  • F2.AppManifest.AppContent
  • -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/constants.js:250
    - +
  • F2.Constants
  • - +
  • F2.Constants.AppHandlers
  • - -
    -
    +
  • F2.Constants.Css
  • - +
  • F2.Constants.Events
  • - +
  • F2.Constants.Sockets
  • - +
  • F2.Constants.Views
  • -
    - Back to top -
    - - -
    -

    - REMOVE +
  • F2.ContainerConfig
  • - String +
  • F2.ContainerConfig.UI
  • - +
  • F2.ContainerConfig.UI.Mask +
  • - +
  • F2.Events
  • - - final - +
  • F2.Rpc
  • - - static - -

    +
  • F2.UI
  • -

    -

    The REMOVE view is a special view that handles the removal of an app -from the container.

    +
  • F2.UI.Modals
  • -

    +
  • F2.UI.Views
  • -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/constants.js:259
    - - + +
  • + + + + +
  • + +
    +
    +

    F2.Constants.Views

    - - -
    +

    - +

    The available view types to apps. The view should be specified by applying + the F2.Constants.Css.APP_VIEW class + to the + containing DOM Element. A DATA_ATTRIBUTE attribute should be added to the + Element as well which defines what view type is represented. + The hide class can be applied to views that should be hidden by default.

    - +

    - +
    +
    - -
    - -
    -

    - SETTINGS - String - - +
    Defined in
    +
    + sdk/src/constants.js:216 +
    - - - - final - - - - static - -

    - -

    -

    The SETTINGS view provides users the ability to modify advanced settings -for an app.

    -

    + + -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/constants.js:268
    - - +
    -
    - +
  • Properties
  • - - + -
    - Back to top -
    -
    - - - - - - - - - - - - - - - +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + ABOUT +

    The ABOUT view gives details about the app.

    +
    + DATA_ATTRIBUTE +

    The DATA_ATTRIBUTE should be placed on the DOM Element that contains the + view.

    +
    + HELP +

    The HELP view provides users with help information for using an app.

    +
    + HOME +

    The HOME view is the main view for an app. This view should always + be provided by an app.

    +
    + REMOVE +

    The REMOVE view is a special view that handles the removal of an app + from the container.

    +
    + SETTINGS +

    The SETTINGS view provides users the ability to modify advanced settings + for an app.

    +
    +
    + + +
    + + + + + + + + +
    + +
    +

    + ABOUT + + String + + + final + + + static + +

    + +

    + +

    The ABOUT view gives details about the app.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:234 +
    + + +
    +
    + + + +
    + +
    +

    + DATA_ATTRIBUTE + + String + + + final + + + static + +

    + +

    + +

    The DATA_ATTRIBUTE should be placed on the DOM Element that contains the + view.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:225 +
    + + +
    +
    + + + +
    + +
    +

    + HELP + + String + + + final + + + static + +

    + +

    + +

    The HELP view provides users with help information for using an app.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:242 +
    + + +
    +
    + + + +
    + +
    +

    + HOME + + String + + + final + + + static + +

    + +

    + +

    The HOME view is the main view for an app. This view should always + be provided by an app.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:250 +
    + + +
    +
    + + + +
    + +
    +

    + REMOVE + + String + + + final + + + static + +

    + +

    + +

    The REMOVE view is a special view that handles the removal of an app + from the container.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:259 +
    + + +
    +
    + + + +
    + +
    +

    + SETTINGS + + String + + + final + + + static + +

    + +

    + +

    The SETTINGS view provides users the ability to modify advanced settings + for an app.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/constants.js:268 +
    + + +
    +
    + + + +
    + +
    + + + + + + + + + + +
    + + -
    +
    - - + + @@ -706,24 +631,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.Constants.html b/docs/sdk/classes/F2.Constants.html index 2809ec80..94577571 100644 --- a/docs/sdk/classes/F2.Constants.html +++ b/docs/sdk/classes/F2.Constants.html @@ -1,298 +1,316 @@ - - F2 - F2.Constants - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.Constants + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.Constants

    - -

    -

    Constants used throughout the Open Financial Framework

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/constants.js:1
    - - - -
    -
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    F2.Constants

    + +

    + +

    Constants used throughout the Open Financial Framework

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/constants.js:1 +
    + + +
    +
    + + + + +
    + +
    + + +
    + + + + + + + + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -301,24 +319,24 @@

    F2.Constants

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.ContainerConfig.UI.Mask.html b/docs/sdk/classes/F2.ContainerConfig.UI.Mask.html index 5427b69c..3e54660d 100644 --- a/docs/sdk/classes/F2.ContainerConfig.UI.Mask.html +++ b/docs/sdk/classes/F2.ContainerConfig.UI.Mask.html @@ -1,623 +1,562 @@ - - F2 - F2.ContainerConfig.UI.Mask - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.ContainerConfig.UI.Mask + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.ContainerConfig.UI.Mask

    - -

    -

    An object containing configuration defaults for the -F2.UI.showMask and -F2.UI.hideMask methods.

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/classes.js:309
    - - - -
    -
    + - - - -
    -

    - useClasses +
    +
    +
    +

    +
  • F2.AppManifest
  • -

    -

    Do not use inline styles for mask functinality. Instead classes will -be applied to the elements and it is up to the container provider to -implement the class definitions.

    +
  • F2.AppManifest.AppContent
  • -

    +
  • F2.Constants
  • -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:336
    - +
  • F2.Constants.AppHandlers
  • - +
  • F2.Constants.Css
  • - -
    -
    +
  • F2.Constants.Events
  • - -

    Default: false

    - +
  • F2.Constants.Sockets
  • - +
  • F2.Constants.Views
  • - +
  • F2.ContainerConfig
  • - -
    - -
    -

    - zIndex +
  • F2.ContainerConfig.UI
  • - Int +
  • F2.ContainerConfig.UI.Mask +
  • - +
  • F2.Events
  • - +
  • F2.Rpc
  • - +
  • F2.UI
  • - -

    - -

    -

    The z-index to use for the overlay

    +
  • F2.UI.Modals
  • -

    +
  • F2.UI.Views
  • -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:345
    - - + +
  • + + + + +
  • + +
    +
    +

    F2.ContainerConfig.UI.Mask

    - - -
    +

    - -

    Default: 2

    - +

    An object containing configuration defaults for the + F2.UI.showMask and + F2.UI.hideMask methods.

    - +

    - +
    +
    - -
    - -
    - - - - - - - - - -
    -
    -
    +
    Defined in
    +
    + sdk/src/classes.js:309 +
    + + + + + + + + +
    + +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + backgroundColor +

    The backround color of the overlay

    +
    + loadingIcon +

    The path to the loading icon

    +
    + opacity +

    The opacity of the background overlay

    +
    + useClasses +

    Do not use inline styles for mask functinality. Instead classes will + be applied to the elements and it is up to the container provider to + implement the class definitions.

    +
    + zIndex +

    The z-index to use for the overlay

    +
    +
    + + +
    + + + + + + + + +
    + +
    +

    + backgroundColor + + String + + +

    + +

    + +

    The backround color of the overlay

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:316 +
    + + +
    +
    + + +

    Default: #FFF

    + + + +
    + +
    +

    + loadingIcon + + String + + +

    + +

    + +

    The path to the loading icon

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:323 +
    + + +
    +
    + + + +
    + +
    +

    + opacity + + Int + + +

    + +

    + +

    The opacity of the background overlay

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:329 +
    + + +
    +
    + + +

    Default: 0.6

    + + + +
    + +
    +

    + useClasses + + Bool + + +

    + +

    + +

    Do not use inline styles for mask functinality. Instead classes will + be applied to the elements and it is up to the container provider to + implement the class definitions.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:336 +
    + + +
    +
    + + +

    Default: false

    + + + +
    + +
    +

    + zIndex + + Int + + +

    + +

    + +

    The z-index to use for the overlay

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:345 +
    + + +
    +
    + + +

    Default: 2

    + + + +
    + +
    + + + + + + + + + + +
    + + -
    +
    - - + + @@ -626,24 +565,24 @@

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.ContainerConfig.UI.html b/docs/sdk/classes/F2.ContainerConfig.UI.html index 13e848dd..4c86fa24 100644 --- a/docs/sdk/classes/F2.ContainerConfig.UI.html +++ b/docs/sdk/classes/F2.ContainerConfig.UI.html @@ -1,298 +1,316 @@ - - F2 - F2.ContainerConfig.UI - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.ContainerConfig.UI + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.ContainerConfig.UI

    - -

    -

    An object containing configuration defaults for F2.UI

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/classes.js:304
    - - - -
    -
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    F2.ContainerConfig.UI

    + +

    + +

    An object containing configuration defaults for F2.UI

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/classes.js:304 +
    + + +
    +
    + + + + +
    + +
    + + +
    + + + + + + + + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -301,24 +319,24 @@

    F2.ContainerConfig.UI

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.ContainerConfig.html b/docs/sdk/classes/F2.ContainerConfig.html index 602b657b..7c68ecdd 100644 --- a/docs/sdk/classes/F2.ContainerConfig.html +++ b/docs/sdk/classes/F2.ContainerConfig.html @@ -1,2124 +1,1903 @@ - - F2 - F2.ContainerConfig - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.ContainerConfig + + + + + + + + + + + + + + + + + + + + + -
    - - -
    -
    -
    - -
    -
    -

    F2.ContainerConfig

    - -

    -

    An object containing configuration information for the -container

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/classes.js:222
    - - - -
    -
    +
    + + +
    +
    +
    + +
    +
    +

    F2.ContainerConfig

    + +

    + +

    An object containing configuration information for the + container

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/classes.js:222 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + + afterAppRender + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + html + +
    • + +
    + + ) +
    +

    Allows the container to + override how + an app's html is inserted into the page. The function should accept an + F2.AppConfig object + and also a string of + html

    +
    + + appRender + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + html + +
    • + +
    + + ) +
    +

    Allows the container to wrap + an app + in extra html. The function should accept an + F2.AppConfig object + and also a string of + html. The extra html can provide links to edit app settings and remove an + app from the container. See + F2.Constants.Css for CSS classes that + should be applied to elements.

    +
    + + beforeAppRender + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) +
    +

    Allows the container to render html for an app before the AppManifest for + an app has loaded. This can be useful if the design calls for loading + icons to appear for each app before each app is loaded and rendered to + the page.

    +
    + + xhr + ( + +
      + +
    • + + url + +
    • + +
    • + + appConfigs + +
    • + +
    • + + success + +
    • + +
    • + + error + +
    • + +
    • + + complete + +
    • + +
    + + ) +
    +

    Allows the container to fully override how the AppManifest request is + made inside of F2.

    +
    + + xhr.dataType + ( + +
      + +
    • + + url + +
    • + +
    • + + appConfigs + +
    • + +
    + + ) +
    +

    Allows the container to override the request data type (JSON or JSONP) + that is used for the request

    +
    + + xhr.type + ( + +
      + +
    • + + url + +
    • + +
    • + + appConfigs + +
    • + +
    + + ) +
    +

    Allows the container to override the request method that is used (just + like the type parameter to jQuery.ajax().

    +
    + + xhr.url + ( + +
      + +
    • + + url + +
    • + +
    • + + appConfigs + +
    • + +
    + + ) +
    +

    Allows the container to override the url that is used to request an + app's F2.F2.AppManifest +

    +
    +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + debugMode +

    True to enable debug mode in F2.js. Adds additional logging, resource cache + busting, etc.

    +
    + isSecureAppPage +

    Tells the container that it is currently running within + a secure app page

    +
    + loadScripts +

    Allows the container to override the script loader which requests + dependencies defined in the F2.AppManifest.

    +
    + loadStyles +

    Allows the container to override the stylesheet loader which requests + dependencies defined in the F2.AppManifest.

    +
    + scriptErrorTimeout +

    Milliseconds before F2 fires callback on script resource load errors. Due to + issue with the way Internet Explorer attaches load events to script elements, + the error event doesn't fire.

    +
    + secureAppPagePath +

    Allows the container to specify which page is used when + loading a secure app. The page must reside on a different domain than the + container

    +
    + supportedViews +

    Specifies what views a container will provide buttons + or links to. Generally, the views will be switched via buttons or links + in the app's header.

    +
    + xhr +

    Allows the container to override individual parts of the AppManifest + request. See properties and methods with the xhr. prefix.

    +
    +
    + + +
    + + + + +
    + +
    +

    + afterAppRender + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + html + +
    • + +
    + + ) + + + deprecated + + +

    + +

    + +

    Allows the container to override how + an app's html is inserted into the page. The function should accept an + F2.AppConfig object and + also a string of + html

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:228 +
    + + +
    Deprecated
    +
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} + and will be removed in v2.0 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + html + String + + +

      + +

      The string of html representing the app

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Element: + +

    The DOM Element surrounding the app

    + + +
    +
    + + + + +
    + +
    +

    + appRender + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + html + +
    • + +
    + + ) + + + deprecated + + +

    + +

    + +

    Allows the container to wrap an app + in extra html. The function should accept an + F2.AppConfig object and + also a string of + html. The extra html can provide links to edit app settings and remove an + app from the container. See + F2.Constants.Css for + CSS classes that + should be applied to elements.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:240 +
    + + +
    Deprecated
    +
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} + and will be removed in v2.0 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + html + String + + +

      + +

      The string of html representing the app

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + beforeAppRender + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) + + + deprecated + + +

    + +

    + +

    Allows the container to render html for an app before the AppManifest for + an app has loaded. This can be useful if the design calls for loading + icons to appear for each app before each app is loaded and rendered to + the page.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:254 +
    + + +
    Deprecated
    +
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} + and will be removed in v2.0 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Element: + +

    The DOM Element surrounding the app

    + + +
    +
    + + + + +
    + +
    +

    + xhr + ( + +
      + +
    • + + url + +
    • + +
    • + + appConfigs + +
    • + +
    • + + success + +
    • + +
    • + + error + +
    • + +
    • + + complete + +
    • + +
    + + ) + + +

    + +

    + +

    Allows the container to fully override how the AppManifest request is + made inside of F2.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:354 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + url + String + + +

      + +

      The manifest url

      + +

      + + +
    • + +
    • + + appConfigs + Array + + +

      + +

      An array of F2.AppConfig + objects

      + +

      + + +
    • + +
    • + + success + Function + + +

      + +

      The function to be called if the request + succeeds

      + +

      + +
    • +
    • - - -
      - -
      - - - -
      -

      Methods

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      NameDescription
      - - afterAppRender - ( - -
        - -
      • - - appConfig - -
      • - -
      • - - html - -
      • - -
      - - ) -
      -

      Allows the container to override how -an app's html is inserted into the page. The function should accept an -F2.AppConfig object and also a string of -html

      -
      - - appRender - ( - -
        - -
      • - - appConfig - -
      • - -
      • - - html - -
      • - -
      - - ) -
      -

      Allows the container to wrap an app -in extra html. The function should accept an -F2.AppConfig object and also a string of -html. The extra html can provide links to edit app settings and remove an -app from the container. See -F2.Constants.Css for CSS classes that -should be applied to elements.

      -
      - - beforeAppRender - ( - -
        - -
      • - - appConfig - -
      • - -
      - - ) -
      -

      Allows the container to render html for an app before the AppManifest for -an app has loaded. This can be useful if the design calls for loading -icons to appear for each app before each app is loaded and rendered to -the page.

      -
      - - xhr - ( - -
        - -
      • - - url - -
      • - -
      • - - appConfigs - -
      • - -
      • - - success - -
      • - -
      • - - error - -
      • - -
      • - - complete - -
      • - -
      - - ) -
      -

      Allows the container to fully override how the AppManifest request is -made inside of F2.

      -
      - - xhr.dataType - ( - -
        - -
      • - - url - -
      • - -
      • - - appConfigs - -
      • - -
      - - ) -
      -

      Allows the container to override the request data type (JSON or JSONP) -that is used for the request

      -
      - - xhr.type - ( - -
        - -
      • - - url - -
      • - -
      • - - appConfigs - -
      • - -
      - - ) -
      -

      Allows the container to override the request method that is used (just -like the type parameter to jQuery.ajax().

      -
      - - xhr.url - ( - -
        - -
      • - - url - -
      • - -
      • - - appConfigs - -
      • - -
      - - ) -
      -

      Allows the container to override the url that is used to request an -app's F2.F2.AppManifest

      -
      -
      - - - -
      -

      Properties

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      NameDescription
      - debugMode -

      True to enable debug mode in F2.js. Adds additional logging, resource cache busting, etc.

      -
      - isSecureAppPage -

      Tells the container that it is currently running within -a secure app page

      -
      - loadScripts -

      Allows the container to override the script loader which requests -dependencies defined in the F2.AppManifest.

      -
      - loadStyles -

      Allows the container to override the stylesheet loader which requests -dependencies defined in the F2.AppManifest.

      -
      - scriptErrorTimeout -

      Milliseconds before F2 fires callback on script resource load errors. Due to issue with the way Internet Explorer attaches load events to script elements, the error event doesn't fire.

      -
      - secureAppPagePath -

      Allows the container to specify which page is used when -loading a secure app. The page must reside on a different domain than the -container

      -
      - supportedViews -

      Specifies what views a container will provide buttons -or links to. Generally, the views will be switched via buttons or links -in the app's header.

      -
      - xhr -

      Allows the container to override individual parts of the AppManifest -request. See properties and methods with the xhr. prefix.

      -
      -
      - - - - - -
      - - - - -
      - -
      -

      - afterAppRender - ( - -
        - -
      • - - appConfig - -
      • - -
      • - - html - -
      • - -
      - - ) - - - deprecated - - - - - - - - - - - -

      - -

      -

      Allows the container to override how -an app's html is inserted into the page. The function should accept an -F2.AppConfig object and also a string of -html

      - -

      - -
      -
      - - - - - - - -
      Defined in
      -
      sdk/src/classes.js:228
      - - - -
      Deprecated
      -
      This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
      - - - -
      -
      - - -
      -

      Parameters:

      - -
        - -
      • - - appConfig - F2.AppConfig - - - - -

        -

        The F2.AppConfig object

        - -

        - - -
      • - -
      • - - html - String - - - - -

        -

        The string of html representing the app

        - -

        - - -
      • - -
      -
      - - - -
      -

      Returns:

      - -
      - - - Element: - -

      The DOM Element surrounding the app

      - - -
      -
      - - - - - - - -
      - -
      -

      - appRender - ( - -
        - -
      • - - appConfig - -
      • - -
      • - - html - -
      • - -
      - - ) - - - deprecated - - - - - - - - - - - -

      - -

      -

      Allows the container to wrap an app -in extra html. The function should accept an -F2.AppConfig object and also a string of -html. The extra html can provide links to edit app settings and remove an -app from the container. See -F2.Constants.Css for CSS classes that -should be applied to elements.

      - -

      - -
      -
      - - - - - - - -
      Defined in
      -
      sdk/src/classes.js:240
      - - - -
      Deprecated
      -
      This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
      - - - -
      -
      - - -
      -

      Parameters:

      - -
        - -
      • - - appConfig - F2.AppConfig - - - - -

        -

        The F2.AppConfig object

        - -

        - - -
      • - -
      • - - html - String - - - - -

        -

        The string of html representing the app

        - -

        - - -
      • - -
      -
      - - - - - - - - - -
      - -
      -

      - beforeAppRender - ( - -
        - -
      • - - appConfig - -
      • - -
      - - ) - - - deprecated - - - - - - - - - - - -

      - -

      -

      Allows the container to render html for an app before the AppManifest for -an app has loaded. This can be useful if the design calls for loading -icons to appear for each app before each app is loaded and rendered to -the page.

      - -

      - -
      -
      - - - - - - - -
      Defined in
      -
      sdk/src/classes.js:254
      - - - -
      Deprecated
      -
      This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
      - - - -
      -
      - - -
      -

      Parameters:

      - -
        - -
      • - - appConfig - F2.AppConfig - - - - -

        -

        The F2.AppConfig object

        - -

        - - -
      • - -
      -
      - - - -
      -

      Returns:

      - -
      - - - Element: - -

      The DOM Element surrounding the app

      - - -
      -
      - - - - - - - -
      - -
      -

      - xhr - ( - -
        - -
      • - - url - -
      • - -
      • - - appConfigs - -
      • - -
      • - - success - -
      • - -
      • - - error - -
      • - -
      • - - complete - -
      • - -
      - - ) - - - - - - - - - - - - -

      - -

      -

      Allows the container to fully override how the AppManifest request is -made inside of F2.

      - -

      - -
      -
      - - - - - - - -
      Defined in
      -
      sdk/src/classes.js:354
      - - - - - -
      -
      - - -
      -

      Parameters:

      - -
        - -
      • - - url - String - - - - -

        -

        The manifest url

        - -

        - - -
      • - -
      • - - appConfigs - Array - - - - -

        -

        An array of F2.AppConfig -objects

        - -

        - - -
      • - -
      • - - success - Function - - - - -

        -

        The function to be called if the request -succeeds

        - -

        - - -
      • - -
      • - - error - Function - - - - -

        -

        The function to be called if the request fails

        - -

        - - -
      • - -
      • - - complete - Function - - - - -

        -

        The function to be called when the request -finishes (after success and error callbacks have been executed)

        - -

        - - -
      • - -
      -
      - - - -
      -

      Returns:

      - -
      - - - XMLHttpRequest: - -

      The XMLHttpRequest object (or an object that has -an abort function (such as the jqXHR object in jQuery) to abort the -request)

      - - -
      -
      - - - -

      Example:

      -
      + error + Function + + +

      + +

      The function to be called if the request fails

      + +

      + + +
    • + +
    • + + complete + Function + + +

      + +

      The function to be called when the request + finishes (after success and error callbacks have been executed)

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + XMLHttpRequest: + +

    The XMLHttpRequest object (or an object that has + an abort function (such as the jqXHR object in jQuery) to abort the + request)

    + + +
    +
    + + +

    Example:

    + +
    F2.init({
    -    xhr: function(url, appConfigs, success, error, complete) {
    -        $.ajax({
    -            url: url,
    -            type: 'POST',
    -            data: {
    +                xhr: function(url, appConfigs, success, error, complete) {
    +                $.ajax({
    +                url: url,
    +                type: 'POST',
    +                data: {
                     params: F2.stringify(appConfigs, F2.appConfigReplacer)
    -            },
    -            jsonp: false, // do not put 'callback=' in the query string
    -            jsonpCallback: F2.Constants.JSONP_CALLBACK + appConfigs[0].appId, // Unique function name
    -            dataType: 'json',
    -            success: function(appManifest) {
    +                },
    +                jsonp: false, // do not put 'callback=' in the query string
    +                jsonpCallback: F2.Constants.JSONP_CALLBACK + appConfigs[0].appId, // Unique function name
    +                dataType: 'json',
    +                success: function(appManifest) {
                     // custom success logic
                     success(appManifest); // fire success callback
    -            },
    -            error: function() {
    +                },
    +                error: function() {
                     // custom error logic
                     error(); // fire error callback
    -            },
    -            complete: function() {
    +                },
    +                complete: function() {
                     // custom complete logic
                     complete(); // fire complete callback
    -            }
    -        });
    -    }
    -});
    - -
    - - - - - -
    - -
    -

    - xhr.dataType - ( - -
      - -
    • - - url - -
    • - -
    • - - appConfigs - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Allows the container to override the request data type (JSON or JSONP) -that is used for the request

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:418
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - url - String - - - - -

      -

      The manifest url

      - -

      - - -
    • - -
    • - - appConfigs - Array - - - - -

      -

      An array of F2.AppConfig -objects

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - String: - -

    The request data type that should be used

    - - -
    -
    - - - -

    Example:

    -
    + } + }); + } + }); + +
    + + + + +
    + +
    +

    + xhr.dataType + ( + +
      + +
    • + + url + +
    • + +
    • + + appConfigs + +
    • + +
    + + ) + + +

    + +

    + +

    Allows the container to override the request data type (JSON or JSONP) + that is used for the request

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:418 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + url + String + + +

      + +

      The manifest url

      + +

      + + +
    • + +
    • + + appConfigs + Array + + +

      + +

      An array of F2.AppConfig + objects

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + String: + +

    The request data type that should be used

    + + +
    +
    + + +

    Example:

    + +
    F2.init({
    -    xhr: {
    -        dataType: function(url) {
    -            return F2.isLocalRequest(url) ? 'json' : 'jsonp';
    -        },
    -        type: function(url) {
    -            return F2.isLocalRequest(url) ? 'POST' : 'GET';
    -        }
    -    }
    -});
    - -
    - - - - - -
    - -
    -

    - xhr.type - ( - -
      - -
    • - - url - -
    • - -
    • - - appConfigs - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Allows the container to override the request method that is used (just -like the type parameter to jQuery.ajax().

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:440
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - url - String - - - - -

      -

      The manifest url

      - -

      - - -
    • - -
    • - - appConfigs - Array - - - - -

      -

      An array of F2.AppConfig -objects

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - String: - -

    The request method that should be used

    - - -
    -
    - - - -

    Example:

    -
    + xhr: { + dataType: function(url) { + return F2.isLocalRequest(url) ? 'json' : 'jsonp'; + }, + type: function(url) { + return F2.isLocalRequest(url) ? 'POST' : 'GET'; + } + } + }); + +
    + + + + +
    + +
    +

    + xhr.type + ( + +
      + +
    • + + url + +
    • + +
    • + + appConfigs + +
    • + +
    + + ) + + +

    + +

    + +

    Allows the container to override the request method that is used (just + like the type parameter to jQuery.ajax().

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:440 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + url + String + + +

      + +

      The manifest url

      + +

      + + +
    • + +
    • + + appConfigs + Array + + +

      + +

      An array of F2.AppConfig + objects

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + String: + +

    The request method that should be used

    + + +
    +
    + + +

    Example:

    + +
    F2.init({
    -    xhr: {
    -        dataType: function(url) {
    -            return F2.isLocalRequest(url) ? 'json' : 'jsonp';
    -        },
    -        type: function(url) {
    -            return F2.isLocalRequest(url) ? 'POST' : 'GET';
    -        }
    -    }
    -});
    - -
    - - - - - -
    - -
    -

    - xhr.url - ( - -
      - -
    • - - url - -
    • - -
    • - - appConfigs - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Allows the container to override the url that is used to request an -app's F2.F2.AppManifest

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:462
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - url - String - - - - -

      -

      The manifest url

      - -

      - - -
    • - -
    • - - appConfigs - Array - - - - -

      -

      An array of F2.AppConfig -objects

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - String: - -

    The url that should be used for the request

    - - -
    -
    - - - -

    Example:

    -
    + xhr: { + dataType: function(url) { + return F2.isLocalRequest(url) ? 'json' : 'jsonp'; + }, + type: function(url) { + return F2.isLocalRequest(url) ? 'POST' : 'GET'; + } + } + }); + +
    + + + + +
    + +
    +

    + xhr.url + ( + +
      + +
    • + + url + +
    • + +
    • + + appConfigs + +
    • + +
    + + ) + + +

    + +

    + +

    Allows the container to override the url that is used to request an + app's F2.F2.AppManifest

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/classes.js:462 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + url + String + + +

      + +

      The manifest url

      + +

      + + +
    • + +
    • + + appConfigs + Array + + +

      + +

      An array of F2.AppConfig + objects

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + String: + +

    The url that should be used for the request

    + + +
    +
    + + +

    Example:

    + +
    F2.init({
    -    xhr: {
    -        url: function(url, appConfigs) {
    -            return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
    -        }
    -    }
    -});
    + xhr: { + url: function(url, appConfigs) { + return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url); + } + } + }); + +
    + + + + +
    + +
    + + + + + +
    + +
    +

    + debugMode + + Bool -

    - - - - - - - -
    - - - - -
    - -
    -

    - debugMode +

    - Bool +

    - +

    True to enable debug mode in F2.js. Adds additional logging, resource cache busting, + etc.

    - +

    - +
    +
    - - -

    -

    True to enable debug mode in F2.js. Adds additional logging, resource cache busting, etc.

    +
    Defined in
    +
    sdk/src/classes.js:265 +
    -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:265
    - +
    +
    - - -
    -
    +

    Default: false

    - -

    Default: false

    - - + +
    - +
    +

    + isSecureAppPage - -

    - -
    -

    - isSecureAppPage + Bool - Bool - +

    - +

    - +

    Tells the container that it is currently running within + a secure app page

    - - +

    -

    -

    Tells the container that it is currently running within -a secure app page

    +
    +
    -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:279
    - +
    Defined in
    +
    sdk/src/classes.js:279 +
    - - -
    -
    +
    +
    - - + +
    - +
    +

    + loadScripts - -

    - -
    -

    - loadScripts + Function - Function - +

    - +

    - +

    Allows the container to override the script loader which requests + dependencies defined in the F2.AppManifest. +

    - - +

    -

    -

    Allows the container to override the script loader which requests -dependencies defined in the F2.AppManifest.

    +
    +
    -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:482
    - +
    Defined in
    +
    sdk/src/classes.js:482 +
    - - -
    -
    +
    +
    - - -

    Example:

    +

    Example:

    -
    +
    F2.init({
    -        loadScripts: function(scripts,inlines,callback){
    -            //load scripts using $.load() for each script or require(scripts)
    -            callback();
    -        }
    -});
    + loadScripts: function(scripts,inlines,callback){ + //load scripts using $.load() for each script or require(scripts) + callback(); + } + }); + +
    -
    - - + +
    - - - -
    -

    - loadStyles +
    +

    + loadStyles - Function + Function - - +

    - +

    - -

    +

    Allows the container to override the stylesheet loader which requests + dependencies defined in the F2.AppManifest. +

    -

    -

    Allows the container to override the stylesheet loader which requests -dependencies defined in the F2.AppManifest.

    +

    -

    +
    +
    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:497
    - - +
    Defined in
    +
    sdk/src/classes.js:497 +
    - -
    -
    - +
    +
    - -

    Example:

    -
    +

    Example:

    + +
    F2.init({
    -        loadStyles: function(styles,callback){
    -            //load styles using $.load() for each stylesheet or another method
    -            callback();
    -        }
    -});
    + loadStyles: function(styles,callback){ + //load styles using $.load() for each stylesheet or another method + callback(); + } + }); + +
    + + + +
    + +
    +

    + scriptErrorTimeout -

    - + Milliseconds - - - - -
    -

    - scriptErrorTimeout +

    - Milliseconds +

    - +

    Milliseconds before F2 fires callback on script resource load errors. Due to issue with + the way Internet Explorer attaches load events to script elements, the error event doesn't + fire.

    - +

    - +
    +
    - - -

    -

    Milliseconds before F2 fires callback on script resource load errors. Due to issue with the way Internet Explorer attaches load events to script elements, the error event doesn't fire.

    +
    Defined in
    +
    sdk/src/classes.js:272 +
    -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:272
    - +
    +
    - - -
    -
    +

    Default: 7000 (7 seconds)

    - -

    Default: 7000 (7 seconds)

    - - + +
    - +
    +

    + secureAppPagePath - -

    - -
    -

    - secureAppPagePath + String - String - +

    - +

    - +

    Allows the container to specify which page is used when + loading a secure app. The page must reside on a different domain than the + container

    - - +

    -

    -

    Allows the container to specify which page is used when -loading a secure app. The page must reside on a different domain than the -container

    +
    +
    -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:286
    - +
    Defined in
    +
    sdk/src/classes.js:286 +
    - - -
    -
    +
    +
    - - + +
    - +
    +

    + supportedViews - -

    - -
    -

    - supportedViews + Array - Array - +

    - +

    - +

    Specifies what views a container will provide buttons + or links to. Generally, the views will be switched via buttons or links + in the app's header.

    - - +

    -

    -

    Specifies what views a container will provide buttons -or links to. Generally, the views will be switched via buttons or links -in the app's header.

    +
    +
    -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:295
    - +
    Defined in
    +
    sdk/src/classes.js:295 +
    - - -
    -
    +
    +
    - - + +
    - +
    +

    + xhr - -

    - -
    -

    - xhr + Object - Object - +

    - +

    - +

    Allows the container to override individual parts of the AppManifest + request. See properties and methods with the xhr. prefix.

    - - +

    -

    -

    Allows the container to override individual parts of the AppManifest -request. See properties and methods with the xhr. prefix.

    +
    +
    -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/classes.js:402
    - +
    Defined in
    +
    sdk/src/classes.js:402 +
    - - -
    -
    +
    +
    - - -

    Example:

    +

    Example:

    -
    +
    F2.init({
    -    xhr: {
    -        url: function(url, appConfigs) {
    -            return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
    -        }
    -    }
    -});
    + xhr: { + url: function(url, appConfigs) { + return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url); + } + } + }); -
    - +
    - - -
    - -
    - - + + - - - +
    - - - -
    -
    -
    + + + -
    + - -
    + + + +
    +
    + + +
    + + + @@ -2127,24 +1906,24 @@

    Example:

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.Events.html b/docs/sdk/classes/F2.Events.html index 8e9bcdb2..923b5933 100644 --- a/docs/sdk/classes/F2.Events.html +++ b/docs/sdk/classes/F2.Events.html @@ -1,1222 +1,1108 @@ - - F2 - F2.Events - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.Events + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.Events

    - -

    -

    Handles Context passing from -containers to apps and apps to apps.

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/events.js:1
    - - - -
    -
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    F2.Events

    + +

    + +

    Handles Context passing from + containers to apps and apps to apps.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/events.js:1 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + + _socketEmit + ( + +
      + +
    • + + event + +
    • + +
    • + + [arg] + +
    • + +
    + + ) +
    +

    Same as F2.Events.emit except that it will not send the event + to all sockets.

    +
    + + emit + ( + +
      + +
    • + + event + +
    • + +
    • + + [arg] + +
    • + +
    + + ) +
    +

    Execute each of the listeners that may be listening for the specified + event name in order with the list of arguments.

    +
    + + many + ( + +
      + +
    • + + event + +
    • + +
    • + + timesToListen + +
    • + +
    • + + listener + +
    • + +
    + + ) +
    +

    Adds a listener that will execute n times for the event before being + removed. The listener is invoked only the first time the event is + fired, after which it is removed.

    +
    + + off + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) +
    +

    Remove a listener for the specified event.

    +
    + + on + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) +
    +

    Adds a listener for the specified event

    +
    + + once + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) +
    +

    Adds a one time listener for the event. The listener is invoked only + the first time the event is fired, after which it is removed.

    +
    +
    + + +
    + + + + +
    + +
    +

    + _socketEmit + ( + +
      + +
    • + + event + +
    • + +
    • + + [arg] + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Same as F2.Events.emit except that it will not send the event + to all sockets.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/events.js:16 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + event + String + + +

      + +

      The event name

      + +

      + + +
    • + +
    • + + [arg] + Object + optional + + + multiple + + +

      + +

      The arguments to be passed

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + emit + ( + +
      + +
    • + + event + +
    • + +
    • + + [arg] + +
    • + +
    + + ) + + +

    + +

    + +

    Execute each of the listeners that may be listening for the specified + event name in order with the list of arguments.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/events.js:27 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + event + String + + +

      + +

      The event name

      + +

      + + +
    • + +
    • + + [arg] + Object + optional + + + multiple + + +

      + +

      The arguments to be passed

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + many + ( + +
      + +
    • + + event + +
    • + +
    • + + timesToListen + +
    • + +
    • + + listener + +
    • + +
    + + ) + + +

    + +

    + +

    Adds a listener that will execute n times for the event before being + removed. The listener is invoked only the first time the event is + fired, after which it is removed.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/events.js:38 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + event + String + + +

      + +

      The event name

      + +

      + + +
    • + +
    • + + timesToListen + Int + + +

      + +

      The number of times to execute the event + before being removed

      + +

      + + +
    • + +
    • + + listener + Function + + +

      + +

      The function to be fired when the event is + emitted

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + off + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) + + +

    + +

    + +

    Remove a listener for the specified event.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/events.js:52 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + event + String + + +

      + +

      The event name

      + +

      + + +
    • + +
    • + + listener + Function + + +

      + +

      The function that will be removed

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + on + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) + + +

    + +

    + +

    Adds a listener for the specified event

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/events.js:61 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + event + String + + +

      + +

      The event name

      + +

      + + +
    • + +
    • + + listener + Function + + +

      + +

      The function to be fired when the event is + emitted

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + once + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) + + +

    + +

    + +

    Adds a one time listener for the event. The listener is invoked only + the first time the event is fired, after which it is removed.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/events.js:71 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + event + String + + +

      + +

      The event name

      + +

      + + +
    • + +
    • + + listener + Function + + +

      + +

      The function to be fired when the event is + emitted

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    + + + + + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -1225,24 +1111,24 @@

    Parameters:

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.Rpc.html b/docs/sdk/classes/F2.Rpc.html index 5309880c..6813a841 100644 --- a/docs/sdk/classes/F2.Rpc.html +++ b/docs/sdk/classes/F2.Rpc.html @@ -1,1736 +1,1549 @@ - - F2 - F2.Rpc - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.Rpc + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.Rpc

    - -

    -

    Handles socket communication between the container and secure apps

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/rpc.js:1
    - - - -
    -
    + + +
    +
    +
    + +
    +
    +

    F2.Rpc

    + +

    + +

    Handles socket communication between the container and secure apps

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/rpc.js:1
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + + _createAppToContainerSocket + ( + + ) + +

    Creates a socket connection from the app to the container using + easyXDM.

    +
    + + _createContainerToAppSocket + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + appManifest + +
    • + +
    + + ) +
    +

    Creates a socket connection from the container to the app using + easyXDM.

    +
    + + _createRpcCallback + ( + +
      + +
    • + + instanceId + +
    • + +
    • + + callbackId + +
    • + +
    + + ) +
    +
    + + _onMessage + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + message + +
    • + +
    • + + origin + +
    • + +
    + + ) +
    +

    Handles messages that come across the sockets

    +
    + + _registerCallback + ( + +
      + +
    • + + callback + +
    • + +
    + + ) +
    +

    Registers a callback function

    +
    + + broadcast + ( + +
      + +
    • + + messageType + +
    • + +
    • + + params + +
    • + +
    + + ) +
    +

    Broadcast an RPC function to all sockets

    +
    + + call + ( + +
      + +
    • + + instanceId + +
    • + +
    • + + messageType + +
    • + +
    • + + functionName + +
    • + +
    • + + params + +
    • + +
    + + ) +
    +

    Calls a remote function

    +
    + + init + ( + +
      + +
    • + + [secureAppPagePath] + +
    • + +
    + + ) +
    +

    Init function which tells F2.Rpc whether it is running at the container- + level or the app-level. This method is generally called by + F2.init

    +
    + + isRemote + ( + +
      + +
    • + + instanceId + +
    • + +
    + + ) +
    +

    Determines whether the Instance ID is considered to be 'remote'. This + is + determined by checking if 1) the app has an open socket and 2) whether + F2.Rpc is running inside of an iframe

    +
    + + register + ( + +
      + +
    • + + [appConfig] + +
    • + +
    • + + [appManifest] + +
    • + +
    + + ) +
    +

    Creates a container-to-app or app-to-container socket for communication

    +
    +
    + + +
    + + + + +
    + +
    +

    + _createAppToContainerSocket + ( + + ) + + + private + + +

    + +

    + +

    Creates a socket connection from the app to the container using + easyXDM.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:15 +
    + + +
    +
    + + + + +
    + +
    +

    + _createContainerToAppSocket + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + appManifest + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Creates a socket connection from the container to the app using + easyXDM.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:69 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + appManifest + F2.AppManifest + + +

      + +

      The F2.AppManifest object

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + _createRpcCallback + ( + +
      + +
    • + + instanceId + +
    • + +
    • + + callbackId + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:117 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + instanceId + String + + +

      + +

      The app's Instance ID

      + +

      + + +
    • + +
    • + + callbackId + Function + + +

      + +

      The callback ID

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Function: + +

    A function to make the RPC call

    + + +
    +
    + + + + +
    + +
    +

    + _onMessage + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + message + +
    • + +
    • + + origin + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Handles messages that come across the sockets

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:135 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + message + String + + +

      + +

      The socket message

      + +

      + + +
    • + +
    • + + origin + String + + +

      + +

      The originator

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + _registerCallback + ( + +
      + +
    • + + callback + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Registers a callback function

    + +

    +
    +
    - - -
    - -
    - - - -
    -

    Methods

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    - - _createAppToContainerSocket - ( - - ) - -

    Creates a socket connection from the app to the container using -easyXDM.

    -
    - - _createContainerToAppSocket - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - appManifest - -
    • - -
    - - ) -
    -

    Creates a socket connection from the container to the app using -easyXDM.

    -
    - - _createRpcCallback - ( - -
      - -
    • - - instanceId - -
    • - -
    • - - callbackId - -
    • - -
    - - ) -
    -
    - - _onMessage - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - message - -
    • - -
    • - - origin - -
    • - -
    - - ) -
    -

    Handles messages that come across the sockets

    -
    - - _registerCallback - ( - -
      - -
    • - - callback - -
    • - -
    - - ) -
    -

    Registers a callback function

    -
    - - broadcast - ( - -
      - -
    • - - messageType - -
    • - -
    • - - params - -
    • - -
    - - ) -
    -

    Broadcast an RPC function to all sockets

    -
    - - call - ( - -
      - -
    • - - instanceId - -
    • - -
    • - - messageType - -
    • - -
    • - - functionName - -
    • - -
    • - - params - -
    • - -
    - - ) -
    -

    Calls a remote function

    -
    - - init - ( - -
      - -
    • - - [secureAppPagePath] - -
    • - -
    - - ) -
    -

    Init function which tells F2.Rpc whether it is running at the container- -level or the app-level. This method is generally called by -F2.init

    -
    - - isRemote - ( - -
      - -
    • - - instanceId - -
    • - -
    - - ) -
    -

    Determines whether the Instance ID is considered to be 'remote'. This is -determined by checking if 1) the app has an open socket and 2) whether -F2.Rpc is running inside of an iframe

    -
    - - register - ( - -
      - -
    • - - [appConfig] - -
    • - -
    • - - [appManifest] - -
    • - -
    - - ) -
    -

    Creates a container-to-app or app-to-container socket for communication

    -
    -
    - - - - - - - -
    - - - - -
    - -
    -

    - _createAppToContainerSocket - ( - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Creates a socket connection from the app to the container using -easyXDM.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:15
    - - - - - -
    -
    - - - - - - - - - - -
    - -
    -

    - _createContainerToAppSocket - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - appManifest - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Creates a socket connection from the container to the app using -easyXDM.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:69
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    • - - appManifest - F2.AppManifest - - - - -

      -

      The F2.AppManifest object

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - _createRpcCallback - ( - -
      - -
    • - - instanceId - -
    • - -
    • - - callbackId - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:117
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - instanceId - String - - - - -

      -

      The app's Instance ID

      - -

      - - -
    • - -
    • - - callbackId - Function - - - - -

      -

      The callback ID

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Function: - -

    A function to make the RPC call

    - - -
    -
    - - - - - - - -
    - -
    -

    - _onMessage - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - message - -
    • - -
    • - - origin - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Handles messages that come across the sockets

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:135
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - F2.AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    • - - message - String - - - - -

      -

      The socket message

      - -

      - - -
    • - -
    • - - origin - String - - - - -

      -

      The originator

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - _registerCallback - ( - -
      - -
    • - - callback - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Registers a callback function

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:216
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - callback - Function - - - - -

      -

      The callback function

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - String: - -

    The callback ID

    - - -
    -
    - - - - - - - -
    - -
    -

    - broadcast - ( - -
      - -
    • - - messageType - -
    • - -
    • - - params - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Broadcast an RPC function to all sockets

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:230
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - messageType - String - - - - -

      -

      The message type

      - -

      - - -
    • - -
    • - - params - Array - - - - -

      -

      The parameters to broadcast

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - call - ( - -
      - -
    • - - instanceId - -
    • - -
    • - - messageType - -
    • - -
    • - - functionName - -
    • - -
    • - - params - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Calls a remote function

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:243
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - instanceId - String - - - - -

      -

      The app's Instance ID

      - -

      - - -
    • - -
    • - - messageType - String - - - - -

      -

      The message type

      - -

      - - -
    • - -
    • - - functionName - String - - - - -

      -

      The name of the remote function

      - -

      - - -
    • - -
    • - - params - Array - - - - -

      -

      An array of parameters to pass to the remote -function. Any functions found within the params will be treated as a -callback function.

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - init - ( - -
      - -
    • - - [secureAppPagePath] - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Init function which tells F2.Rpc whether it is running at the container- -level or the app-level. This method is generally called by -F2.init

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:273
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - [secureAppPagePath] - String - optional - - - - -

      -

      The -F2.ContainerConfig.secureAppPagePath -property

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - isRemote - ( - -
      - -
    • - - instanceId - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Determines whether the Instance ID is considered to be 'remote'. This is -determined by checking if 1) the app has an open socket and 2) whether -F2.Rpc is running inside of an iframe

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:289
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - instanceId - String - - - - -

      -

      The Instance ID

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Bool: - -

    True if there is an open socket

    - - -
    -
    - - - - - - - -
    - -
    -

    - register - ( - -
      - -
    • - - [appConfig] - -
    • - -
    • - - [appManifest] - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Creates a container-to-app or app-to-container socket for communication

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/rpc.js:308
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - [appConfig] - F2.AppConfig - optional - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    • - - [appManifest] - F2.AppManifest - optional - - - - -

      -

      The F2.AppManifest object

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    - - - - - - +
    Defined in
    +
    + sdk/src/rpc.js:216 +
    - - - - - - - -
    -
    -
    -
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + callback + Function + + +

      + +

      The callback function

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + String: + +

    The callback ID

    + + +
    +
    + + + + + + +
    +

    + broadcast + ( + +
      + +
    • + + messageType + +
    • + +
    • + + params + +
    • + +
    + + ) + + +

    + +

    + +

    Broadcast an RPC function to all sockets

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:230 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + messageType + String + + +

      + +

      The message type

      + +

      + + +
    • + +
    • + + params + Array + + +

      + +

      The parameters to broadcast

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + call + ( + +
      + +
    • + + instanceId + +
    • + +
    • + + messageType + +
    • + +
    • + + functionName + +
    • + +
    • + + params + +
    • + +
    + + ) + + +

    + +

    + +

    Calls a remote function

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:243 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + instanceId + String + + +

      + +

      The app's Instance ID

      + +

      + + +
    • + +
    • + + messageType + String + + +

      + +

      The message type

      + +

      + + +
    • + +
    • + + functionName + String + + +

      + +

      The name of the remote function

      + +

      + + +
    • + +
    • + + params + Array + + +

      + +

      An array of parameters to pass to the remote + function. Any functions found within the params will be treated as a + callback function.

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + init + ( + +
      + +
    • + + [secureAppPagePath] + +
    • + +
    + + ) + + +

    + +

    + +

    Init function which tells F2.Rpc whether it is running at the container- + level or the app-level. This method is generally called by + F2.init

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:273 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + [secureAppPagePath] + String + optional + + +

      + +

      The + F2.ContainerConfig.secureAppPagePath + property

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + isRemote + ( + +
      + +
    • + + instanceId + +
    • + +
    + + ) + + +

    + +

    + +

    Determines whether the Instance ID is considered to be 'remote'. This is + determined by checking if 1) the app has an open socket and 2) whether + F2.Rpc is running inside of an iframe

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:289 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + instanceId + String + + +

      + +

      The Instance ID

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Bool: + +

    True if there is an open socket

    + + +
    +
    + + + + +
    + +
    +

    + register + ( + +
      + +
    • + + [appConfig] + +
    • + +
    • + + [appManifest] + +
    • + +
    + + ) + + +

    + +

    + +

    Creates a container-to-app or app-to-container socket for communication

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/rpc.js:308 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + [appConfig] + F2.AppConfig + optional + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + [appManifest] + F2.AppManifest + optional + + +

      + +

      The F2.AppManifest object

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    + + + + + + + + + + + + + + +
    +
    +
    + +
    - -
    + +
    @@ -1739,24 +1552,24 @@

    Parameters:

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.UI.Modals.html b/docs/sdk/classes/F2.UI.Modals.html index a2e72179..8e19ddac 100644 --- a/docs/sdk/classes/F2.UI.Modals.html +++ b/docs/sdk/classes/F2.UI.Modals.html @@ -1,635 +1,608 @@ - - F2 - F2.UI.Modals - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.UI.Modals + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.UI.Modals

    - -

    -

    Helper methods for creating and using Modals

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/ui.js:44
    - - - -
    -
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    F2.UI.Modals

    + +

    + +

    Helper methods for creating and using Modals

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/ui.js:44
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + + alert + ( + +
      + +
    • + + message + +
    • + +
    • + + [callback] + +
    • + +
    + + ) +
    +

    Display an alert message on the page

    +
    + + confirm + ( + +
      + +
    • + + message + +
    • + +
    • + + okCallback + +
    • + +
    • + + cancelCallback + +
    • + +
    + + ) +
    +

    Display a confirm message on the page

    +
    +
    + + +
    + + + + +
    + +
    +

    + alert + ( + +
      + +
    • + + message + +
    • + +
    • + + [callback] + +
    • + +
    + + ) + + +

    + +

    + +

    Display an alert message on the page

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:89 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + message + String + + +

      + +

      The message to be displayed

      + +

      + + +
    • + +
    • + + [callback] + Function + optional + + +

      + +

      The callback to be fired when the user + closes the dialog

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + confirm + ( + +
      + +
    • + + message + +
    • + +
    • + + okCallback + +
    • + +
    • + + cancelCallback + +
    • + +
    + + ) + + +

    + +

    + +

    Display a confirm message on the page

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:124 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + message + String + + +

      + +

      The message to be displayed

      + +

      + + +
    • + +
    • + + okCallback + Function + + +

      + +

      The function that will be called when the OK + button is pressed

      + +

      + + +
    • + +
    • + + cancelCallback + Function + + +

      + +

      The function that will be called when + the Cancel button is pressed

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    + + + + + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -638,24 +611,24 @@

    Parameters:

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.UI.Views.html b/docs/sdk/classes/F2.UI.Views.html index c04436e6..cf211f2c 100644 --- a/docs/sdk/classes/F2.UI.Views.html +++ b/docs/sdk/classes/F2.UI.Views.html @@ -1,721 +1,674 @@ - - F2 - F2.UI.Views - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.UI.Views + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.UI.Views

    - -

    -

    Helper methods for creating and using Views

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/ui.js:211
    - - - -
    -
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    F2.UI.Views

    + +

    + +

    Helper methods for creating and using Views

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/ui.js:211
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + + change + ( + +
      + +
    • + + [input] + +
    • + +
    + + ) +
    +

    Change the current view for the app or add an event listener

    +
    + + off + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) +
    +

    Removes a view event listener

    +
    + + on + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) +
    +

    Adds a view event listener

    +
    +
    + + +
    + + + + +
    + +
    +

    + change + ( + +
      + +
    • + + [input] + +
    • + +
    + + ) + + +

    + +

    + +

    Change the current view for the app or add an event listener

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:234 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + [input] + String | Function + optional + + +

      + +

      If a string is passed in, the view + will be changed for the app. If a function is passed in, a change + event listener will be added.

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + off + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) + + +

    + +

    + +

    Removes a view event listener

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:266 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + event + String + + +

      + +

      The event name

      + +

      + + +
    • + +
    • + + listener + Function + + +

      + +

      The function that will be removed

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + on + ( + +
      + +
    • + + event + +
    • + +
    • + + listener + +
    • + +
    + + ) + + +

    + +

    + +

    Adds a view event listener

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:278 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + event + String + + +

      + +

      The event name

      + +

      + + +
    • + +
    • + + listener + Function + + +

      + +

      The function to be fired when the event is + emitted

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    + + + + + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -724,24 +677,24 @@

    Parameters:

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.UI.html b/docs/sdk/classes/F2.UI.html index 5d4e1930..fe62708e 100644 --- a/docs/sdk/classes/F2.UI.html +++ b/docs/sdk/classes/F2.UI.html @@ -1,1334 +1,1181 @@ - - F2 - F2.UI - - - - - - - - - - - - - - - - - - - - - + + F2 - F2.UI + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2.UI

    - -

    -

    UI helper methods

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/ui.js:5
    - - - -
    -
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    F2.UI

    + +

    + +

    UI helper methods

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/ui.js:5
    + + +
    +
    + + + + +
    + +
    + +

    Constructor

    +
    +

    + F2.UI + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) + + +

    + +

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/ui.js:5 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    +
    + + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + + hideMask + ( + +
      + +
    • + + selector + +
    • + +
    + + ) +
    +

    Removes a overlay from an Element on the page

    +
    + + hideMask + ( + +
      + +
    • + + instanceId + +
    • + +
    • + + selector + +
    • + +
    + + ) +
    +

    Removes a overlay from an Element on the page

    +
    + + init + ( + +
      + +
    • + + containerConfig + +
    • + +
    + + ) +
    +
    + + setTitle + ( + +
      + +
    • + + title + +
    • + +
    + + ) +
    +

    Sets the title of the app as shown in the browser. Depending on the + container HTML, this method may do nothing if the container has not been + configured properly or else the container provider does not allow Title's + to be set.

    +
    + + showMask + ( + +
      + +
    • + + selector + +
    • + +
    • + + showLoading + +
    • + +
    + + ) +
    +

    Display an ovarlay over an Element on the page

    +
    + + showMask + ( + +
      + +
    • + + instanceId + +
    • + +
    • + + selector + +
    • + +
    • + + showLoading + +
    • + +
    + + ) +
    +

    Display an ovarlay over an Element on the page

    +
    + + updateHeight + ( + +
      + +
    • + + height + +
    • + +
    + + ) +
    +

    For secure apps, this method updates the size of the iframe that + contains the app. Note: It is recommended that app developers call + this method anytime Elements are added or removed from the DOM

    +
    +
    + + +
    + + + + +
    + +
    +

    + hideMask + ( + +
      + +
    • + + selector + +
    • + +
    + + ) + + +

    + +

    + +

    Removes a overlay from an Element on the page

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:35 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + selector + String | Element + + +

      + +

      The Element or selector to an Element + that currently contains the loader

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + hideMask + ( + +
      + +
    • + + instanceId + +
    • + +
    • + + selector + +
    • + +
    + + ) + + + static + + +

    + +

    + +

    Removes a overlay from an Element on the page

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:296 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + instanceId + String + + +

      + +

      The Instance ID of the app

      + +

      + + +
    • + +
    • + + selector + String | Element + + +

      + +

      The Element or selector to an Element + that currently contains the loader

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + init + ( + +
      + +
    • + + containerConfig + +
    • + +
    + + ) + + + static + + +

    + +

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:338 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + containerConfig + F2.ContainerConfig + + +

      + +

      The F2.ContainerConfig object

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + setTitle + ( + +
      + +
    • + + title + +
    • + +
    + + ) + + +

    + +

    + +

    Sets the title of the app as shown in the browser. Depending on the + container HTML, this method may do nothing if the container has not been + configured properly or else the container provider does not allow Title's + to be set.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:169 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + title + String + + +

      + +

      The title of the app

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + showMask + ( + +
      + +
    • + + selector + +
    • + +
    • + + showLoading + +
    • + +
    + + ) + + +

    + +

    + +

    Display an ovarlay over an Element on the page

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:193 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + selector + String | Element + + +

      + +

      The Element or selector to an Element + over which to display the loader

      + +

      + + +
    • + +
    • + + showLoading + Bool + + +

      + +

      Display a loading icon

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + showMask + ( + +
      + +
    • + + instanceId + +
    • + +
    • + + selector + +
    • + +
    • + + showLoading + +
    • + +
    + + ) + + + static + + +

    + +

    + +

    Display an ovarlay over an Element on the page

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:351 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + instanceId + String + + +

      + +

      The Instance ID of the app

      + +

      + + +
    • + +
    • + + selector + String | Element + + +

      + +

      The Element or selector to an Element + over which to display the loader

      + +

      + + +
    • + +
    • + + showLoading + Bool + + +

      + +

      Display a loading icon

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + updateHeight + ( + +
      + +
    • + + height + +
    • + +
    + + ) + + +

    + +

    + +

    For secure apps, this method updates the size of the iframe that + contains the app. Note: It is recommended that app developers call + this method anytime Elements are added or removed from the DOM

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/ui.js:203 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + height + Int + + +

      + +

      The height of the app

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    + + + + + + + + + + + + + + +
    +
    +
    -
    +
    - -
    + +
    @@ -1337,24 +1184,24 @@

    Parameters:

    \ No newline at end of file diff --git a/docs/sdk/classes/F2.html b/docs/sdk/classes/F2.html index b026c795..d521a8dd 100644 --- a/docs/sdk/classes/F2.html +++ b/docs/sdk/classes/F2.html @@ -1,4457 +1,3867 @@ - - F2 - F2 - - - - - - - - - - - - - - - - - - - - - + + F2 - F2 + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    F2

    - -

    -

    Root namespace of the F2 SDK

    - -

    - -
    -
    - - - - - -
    Defined in
    -
    sdk/src/container.js:1
    - - - -
    -
    + + +
    +
    +
    + +
    +
    +

    F2

    + +

    + +

    Root namespace of the F2 SDK

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/container.js:1 +
    + + +
    +
    + + + + +
    + +
    + + +
    +

    Methods

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    + + _absolutizeURI + ( + +
      + +
    • + + base + +
    • + +
    • + + href + +
    • + +
    + + ) +
    +

    Abosolutizes a relative URL

    +
    + + _afterAppRender + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + html + +
    • + +
    + + ) +
    +

    Appends the app's html to the DOM

    +
    + + _appRender + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + html + +
    • + +
    + + ) +
    +

    Renders the html for an app.

    +
    + + _beforeAppRender + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) +
    +

    Rendering hook to allow containers to render some html prior to an app + loading

    +
    + + _createAppConfig + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) +
    +

    Adds properties to the AppConfig object

    +
    + + _createAppInstance + ( + +
      + +
    • + + appConfigs + +
    • + +
    + + ) +
    +

    Instantiates each app from it's appConfig and stores that in a local + private collection

    +
    + + _hydrateContainerConfig + ( + +
      + +
    • + + containerConfig + +
    • + +
    + + ) +
    +

    Adds properties to the ContainerConfig object to take advantage of + defaults

    +
    + + _initAppEvents + ( + + ) + +

    Attach app events

    +
    + + _initContainerEvents + ( + + ) + +

    Attach container Events

    +
    + + _isInit + ( + + ) + +

    Has the container been init?

    +
    + + _onScriptLoadFailure + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + scriptInfo + +
    • + +
    + + ) +
    +

    Handler to inform the container that a script failed to load

    +
    + + _parseURI + ( + +
      + +
    • + + url + +
    • + +
    + + ) +
    +

    Parses URI

    +
    + + _validateApp + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) +
    +

    Checks if the app is valid

    +
    + + _validateContainerConfig + ( + + ) + +

    Checks if the ContainerConfig is valid

    +
    + + appConfigReplacer + ( + + ) + +

    A function to pass into F2.stringify which will prevent circular + reference errors when serializing objects

    +
    + + extend + ( + +
      + +
    • + + ns + +
    • + +
    • + + obj + +
    • + +
    • + + overwrite + +
    • + +
    + + ) +
    +

    Creates a namespace on F2 and copies the contents of an object into + that namespace optionally overwriting existing properties.

    +
    + + getContainerState + ( + + ) + +

    Gets the current list of apps in the container

    +
    + + guid + ( + + ) + +

    Generates a somewhat random id

    +
    + + inArray + ( + +
      + +
    • + + value + +
    • + +
    • + + array + +
    • + +
    + + ) +
    +

    Search for a value within an array.

    +
    + + init + ( + +
      + +
    • + + config + +
    • + +
    + + ) +
    +

    Initializes the container. This method must be called before performing + any other actions in the container.

    +
    + + isInit + ( + + ) + +

    Has the container been init?

    +
    + + isLocalRequest + ( + +
      + +
    • + + url + +
    • + +
    + + ) +
    +

    Tests a URL to see if it's on the same domain (local) or not

    +
    + + isNativeDOMNode + ( + +
      + +
    • + + testObject + +
    • + +
    + + ) +
    +

    Utility method to determine whether or not the argument passed in is or is + not a native dom node.

    +
    + + loadApp + ( + +
      + +
    • + + appConfigs + +
    • + +
    • + + [appManifest] + +
    • + +
    + + ) +
    +

    Loads the app's html/css/javascript

    +
    + + loadSecureApp + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + appManifest + +
    • + +
    + + ) +
    +

    Loads the app's html/css/javascript into an iframe

    +
    + + log + ( + +
      + +
    • + + Object/Method + +
    • + +
    • + + [obj2] + +
    • + +
    + + ) +
    +

    A utility logging function to write messages or objects to the browser + console. This is a proxy for the console + API.

    +
    + + parse + ( + +
      + +
    • + + str + +
    • + +
    + + ) +
    +

    Wrapper to convert a JSON string to an object

    +
    + + registerApps + ( + +
      + +
    • + + appConfigs + +
    • + +
    • + + [appManifests] + +
    • + +
    + + ) +
    +

    Begins the loading process for all apps and/or initialization process for + pre-loaded apps. + The app will be passed the F2.AppConfig object which + will + contain the app's unique instanceId within the container. If the + F2.AppConfig.root + property is populated the app is considered + to be a pre-loaded app and will be handled accordingly. Optionally, the + F2.AppManifest + can be passed in and those + assets will be used instead of making a request.

    +
    + + removeAllApps + ( + + ) + +

    Removes all apps from the container

    +
    + + removeApp + ( + +
      + +
    • + + instanceId + +
    • + +
    + + ) +
    +

    Removes an app from the container

    +
    + + stringify + ( + +
      + +
    • + + value + +
    • + +
    • + + replacer + +
    • + +
    • + + space + +
    • + +
    + + ) +
    +

    Wrapper to convert an object to JSON

    + +

    Note: When using F2.stringify on an F2.AppConfig object, it is + recommended to pass F2.appConfigReplacer as the replacer function in + order to prevent circular serialization errors.

    +
    + + version + ( + + ) + +

    Function to get the F2 version number

    +
    +
    + + +
    +

    Properties

    + + + + + + + + + + + + + + + +
    NameDescription
    + Apps +

    The apps namespace is a place for app developers to put the javascript + class that is used to initialize their app. The javascript classes should + be namepaced with the F2.AppConfig.appId. + It is recommended that the code be placed in a closure to help keep the + global namespace clean.

    + +

    If the class has an 'init' function, that function will be called + automatically by F2.

    +
    +
    + + +
    + + + + +
    + +
    +

    + _absolutizeURI + ( + +
      + +
    • + + base + +
    • + +
    • + + href + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Abosolutizes a relative URL

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:39 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + base + e.g., location.href + + +

      + +

      + + +
    • + +
    • + + href + URL to absolutize + + +

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + String: + +

    URL + Source: https://gist.github.com/Yaffle/1088850 + Tests: http://skew.org/uri/uri_tests.html +

    + + +
    +
    + + + + +
    + +
    +

    + _afterAppRender + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + html + +
    • + +
    + + ) + + + deprecated + + + private + + +

    + +

    + +

    Appends the app's html to the DOM

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:13 +
    + + +
    Deprecated
    +
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} + and will be removed in v2.0 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + html + String + + +

      + +

      The string of html

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Element: + +

    The DOM Element that contains the app

    + + +
    +
    + + + + +
    + +
    +

    + _appRender + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + html + +
    • + +
    + + ) + + + deprecated + + + private + + +

    + +

    + +

    Renders the html for an app.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:40 +
    + + +
    Deprecated
    +
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} + and will be removed in v2.0 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + html + String + + +

      + +

      The string of html

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + _beforeAppRender + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) + + + deprecated + + + private + + +

    + +

    + +

    Rendering hook to allow containers to render some html prior to an app + loading

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:62 +
    + + +
    Deprecated
    +
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} + and will be removed in v2.0 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Element: + +

    The DOM Element surrounding the app

    + + +
    +
    + + + + +
    + +
    +

    + _createAppConfig + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Adds properties to the AppConfig object

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:90 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + F2.AppConfig: + +

    The new F2.AppConfig object, prepopulated with + necessary properties

    + + +
    +
    + + + + +
    + +
    +

    + _createAppInstance + ( + +
      + +
    • + + appConfigs + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Instantiates each app from it's appConfig and stores that in a local private + collection

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:182 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfigs + Array + + +

      + +

      An array of F2.AppConfig + objects

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + _hydrateContainerConfig + ( + +
      + +
    • + + containerConfig + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Adds properties to the ContainerConfig object to take advantage of defaults

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:115 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + containerConfig + F2.ContainerConfig + + +

      + +

      The F2.ContainerConfig object

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + _initAppEvents + ( + + ) + + + private + + +

    + +

    + +

    Attach app events

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:131 +
    + + +
    +
    + + + + +
    + +
    +

    + _initContainerEvents + ( + + ) + + + private + + +

    + +

    + +

    Attach container Events

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:154 +
    + + +
    +
    + + + + +
    + +
    +

    + _isInit + ( + + ) + + + private + + +

    + +

    + +

    Has the container been init?

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:172 +
    + + +
    +
    + + +
    +

    Returns:

    + +
    + + + Bool: + +

    True if the container has been init

    + + +
    +
    + + + + +
    + +
    +

    + _onScriptLoadFailure + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + scriptInfo + +
    • + +
    + + ) + + + deprecated + + + private + + +

    + +

    + +

    Handler to inform the container that a script failed to load

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:76 +
    + + +
    Deprecated
    +
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} + and will be removed in v2.0 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + scriptInfo + Object + + +

      + +

      The path of the script that failed to load or the exception info + for the inline script that failed to execute

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + _parseURI + ( + +
      + +
    • + + url + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Parses URI

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:76 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + url + The URL to parse + + +

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Parsed URL: + +

    string + Source: https://gist.github.com/Yaffle/1088850 + Tests: http://skew.org/uri/uri_tests.html +

    + + +
    +
    + + + + +
    + +
    +

    + _validateApp + ( + +
      + +
    • + + appConfig + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Checks if the app is valid

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:529 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Bool: + +

    True if the app is valid

    + + +
    +
    + + + + +
    + +
    +

    + _validateContainerConfig + ( + + ) + + + private + + +

    + +

    + +

    Checks if the ContainerConfig is valid

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:551 +
    + + +
    +
    + + +
    +

    Returns:

    + +
    + + + Bool: + +

    True if the config is valid

    + + +
    +
    + + + + +
    + +
    +

    + appConfigReplacer + ( + + ) + + +

    + +

    + +

    A function to pass into F2.stringify which will prevent circular + reference errors when serializing objects

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:102 +
    + + +
    +
    + + + + +
    + +
    +

    + extend + ( + +
      + +
    • + + ns + +
    • + +
    • + + obj + +
    • + +
    • + + overwrite + +
    • + +
    + + ) + + +

    + +

    + +

    Creates a namespace on F2 and copies the contents of an object into + that namespace optionally overwriting existing properties.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:150 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + ns + String + + +

      + +

      The namespace to create. Pass a falsy value to + add properties to the F2 namespace directly.

      + +

      + + +
    • + +
    • + + obj + Object + + +

      + +

      The object to copy into the namespace.

      + +

      + + +
    • + +
    • + + overwrite + Bool + + +

      + +

      True if object properties should be overwritten

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Object: + +

    The created object

    + + +
    +
    + + + + +
    + +
    +

    + getContainerState + ( + + ) + + +

    + +

    + +

    Gets the current list of apps in the container

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:580 +
    + + +
    +
    + + +
    +

    Returns:

    + +
    + + + Array: + +

    An array of objects containing the appId

    + + +
    +
    + + + + +
    + +
    +

    + guid + ( + + ) + + +

    + +

    + +

    Generates a somewhat random id

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:190 +
    + + +
    +
    + + +
    +

    Returns:

    + +
    + + + String: + +

    A random id

    + + +
    +
    + + + + +
    + +
    +

    + inArray + ( + +
      + +
    • + + value + +
    • + +
    • + + array + +
    • + +
    + + ) + + +

    + +

    + +

    Search for a value within an array.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:202 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + value + Object + + +

      + +

      The value to search for

      + +

      + + +
    • + +
    • + + array + Array + + +

      + +

      The array to search

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Bool: + +

    True if the item is in the array

    + + +
    +
    + + + + +
    + +
    +

    + init + ( + +
      + +
    • + + config + +
    • + +
    + + ) + + +

    + +

    + +

    Initializes the container. This method must be called before performing + any other actions in the container.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:597 +
    + + +
    +
    + + +
    +

    Parameters:

    + + +
    + + + + +
    + +
    +

    + isInit + ( + + ) + + +

    + +

    + +

    Has the container been init?

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:625 +
    + + +
    +
    + + +
    +

    Returns:

    + +
    + + + Bool: + +

    True if the container has been init

    + + +
    +
    + + + + +
    + +
    +

    + isLocalRequest + ( + +
      + +
    • + + url + +
    • + +
    + + ) + + +

    + +

    + +

    Tests a URL to see if it's on the same domain (local) or not

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:212 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + url + URL to test + + +

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Bool: + +

    Whether the URL is local or not + Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js +

    + + +
    +
    + + + + +
    + +
    +

    + isNativeDOMNode + ( + +
      + +
    • + + testObject + +
    • + +
    + + ) + + +

    + +

    + +

    Utility method to determine whether or not the argument passed in is or is not a native + dom node.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:256 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + testObject + Object + + +

      + +

      The object you want to check as native dom node.

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Bool: + +

    Returns true if the object passed is a native dom node.

    + + +
    +
    + + + + +
    + +
    +

    + loadApp + ( + +
      + +
    • + + appConfigs + +
    • + +
    • + + [appManifest] + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Loads the app's html/css/javascript

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:211 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfigs + Array + + +

      + +

      An array of + F2.AppConfig + objects

      + +

      + + +
    • + +
    • + + [appManifest] + F2.AppManifest + optional + + +

      + +

      The AppManifest object

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + loadSecureApp + ( + +
      + +
    • + + appConfig + +
    • + +
    • + + appManifest + +
    • + +
    + + ) + + + private + + +

    + +

    + +

    Loads the app's html/css/javascript into an iframe

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:466 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfig + F2.AppConfig + + +

      + +

      The F2.AppConfig object

      + +

      + + +
    • + +
    • + + appManifest + F2.AppManifest + + +

      + +

      The app's html/css/js to be loaded into the + page.

      + +

      + + +
    • + +
    +
    + + + + +
    + +
    +

    + log + ( + +
      + +
    • + + Object/Method + +
    • + +
    • + + [obj2] + +
    • + +
    + + ) + + +

    + +

    + +

    A utility logging function to write messages or objects to the browser console. This is a + proxy for the console + API.

    + +

    + +
    +
    + +
    Defined in
    +
    + sdk/src/F2.js:275 +
    - - -
    - -
    - - - -
    -

    Methods

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    - - _absolutizeURI - ( - -
      - -
    • - - base - -
    • - -
    • - - href - -
    • - -
    - - ) -
    -

    Abosolutizes a relative URL

    -
    - - _afterAppRender - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - html - -
    • - -
    - - ) -
    -

    Appends the app's html to the DOM

    -
    - - _appRender - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - html - -
    • - -
    - - ) -
    -

    Renders the html for an app.

    -
    - - _beforeAppRender - ( - -
      - -
    • - - appConfig - -
    • - -
    - - ) -
    -

    Rendering hook to allow containers to render some html prior to an app -loading

    -
    - - _createAppConfig - ( - -
      - -
    • - - appConfig - -
    • - -
    - - ) -
    -

    Adds properties to the AppConfig object

    -
    - - _createAppInstance - ( - -
      - -
    • - - appConfigs - -
    • - -
    - - ) -
    -

    Instantiates each app from it's appConfig and stores that in a local private collection

    -
    - - _hydrateContainerConfig - ( - -
      - -
    • - - containerConfig - -
    • - -
    - - ) -
    -

    Adds properties to the ContainerConfig object to take advantage of defaults

    -
    - - _initAppEvents - ( - - ) - -

    Attach app events

    -
    - - _initContainerEvents - ( - - ) - -

    Attach container Events

    -
    - - _isInit - ( - - ) - -

    Has the container been init?

    -
    - - _onScriptLoadFailure - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - scriptInfo - -
    • - -
    - - ) -
    -

    Handler to inform the container that a script failed to load

    -
    - - _parseURI - ( - -
      - -
    • - - url - -
    • - -
    - - ) -
    -

    Parses URI

    -
    - - _validateApp - ( - -
      - -
    • - - appConfig - -
    • - -
    - - ) -
    -

    Checks if the app is valid

    -
    - - _validateContainerConfig - ( - - ) - -

    Checks if the ContainerConfig is valid

    -
    - - appConfigReplacer - ( - - ) - -

    A function to pass into F2.stringify which will prevent circular -reference errors when serializing objects

    -
    - - extend - ( - -
      - -
    • - - ns - -
    • - -
    • - - obj - -
    • - -
    • - - overwrite - -
    • - -
    - - ) -
    -

    Creates a namespace on F2 and copies the contents of an object into -that namespace optionally overwriting existing properties.

    -
    - - getContainerState - ( - - ) - -

    Gets the current list of apps in the container

    -
    - - guid - ( - - ) - -

    Generates a somewhat random id

    -
    - - inArray - ( - -
      - -
    • - - value - -
    • - -
    • - - array - -
    • - -
    - - ) -
    -

    Search for a value within an array.

    -
    - - init - ( - -
      - -
    • - - config - -
    • - -
    - - ) -
    -

    Initializes the container. This method must be called before performing -any other actions in the container.

    -
    - - isInit - ( - - ) - -

    Has the container been init?

    -
    - - isLocalRequest - ( - -
      - -
    • - - url - -
    • - -
    - - ) -
    -

    Tests a URL to see if it's on the same domain (local) or not

    -
    - - isNativeDOMNode - ( - -
      - -
    • - - testObject - -
    • - -
    - - ) -
    -

    Utility method to determine whether or not the argument passed in is or is not a native dom node.

    -
    - - loadApp - ( - -
      - -
    • - - appConfigs - -
    • - -
    • - - [appManifest] - -
    • - -
    - - ) -
    -

    Loads the app's html/css/javascript

    -
    - - loadSecureApp - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - appManifest - -
    • - -
    - - ) -
    -

    Loads the app's html/css/javascript into an iframe

    -
    - - log - ( - -
      - -
    • - - Object/Method - -
    • - -
    • - - [obj2] - -
    • - -
    - - ) -
    -

    A utility logging function to write messages or objects to the browser console. This is a proxy for the console API.

    -
    - - parse - ( - -
      - -
    • - - str - -
    • - -
    - - ) -
    -

    Wrapper to convert a JSON string to an object

    -
    - - registerApps - ( - -
      - -
    • - - appConfigs - -
    • - -
    • - - [appManifests] - -
    • - -
    - - ) -
    -

    Begins the loading process for all apps and/or initialization process for pre-loaded apps. -The app will be passed the F2.AppConfig object which will -contain the app's unique instanceId within the container. If the -F2.AppConfig.root property is populated the app is considered -to be a pre-loaded app and will be handled accordingly. Optionally, the -F2.AppManifest can be passed in and those -assets will be used instead of making a request.

    -
    - - removeAllApps - ( - - ) - -

    Removes all apps from the container

    -
    - - removeApp - ( - -
      - -
    • - - instanceId - -
    • - -
    - - ) -
    -

    Removes an app from the container

    -
    - - stringify - ( - -
      - -
    • - - value - -
    • - -
    • - - replacer - -
    • - -
    • - - space - -
    • - -
    - - ) -
    -

    Wrapper to convert an object to JSON

    -

    Note: When using F2.stringify on an F2.AppConfig object, it is -recommended to pass F2.appConfigReplacer as the replacer function in -order to prevent circular serialization errors.

    -
    - - version - ( - - ) - -

    Function to get the F2 version number

    -
    -
    - - - -
    -

    Properties

    - - - - - - - - - - - - - - - -
    NameDescription
    - Apps -

    The apps namespace is a place for app developers to put the javascript -class that is used to initialize their app. The javascript classes should -be namepaced with the F2.AppConfig.appId. -It is recommended that the code be placed in a closure to help keep the -global namespace clean.

    -

    If the class has an 'init' function, that function will be called -automatically by F2.

    -
    -
    - - - - - -
    - - - - -
    - -
    -

    - _absolutizeURI - ( - -
      - -
    • - - base - -
    • - -
    • - - href - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Abosolutizes a relative URL

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:39
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - base - e.g., location.href - - - - -

      - -

      - - -
    • - -
    • - - href - URL to absolutize - - - - -

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - String: - -

    URL -Source: https://gist.github.com/Yaffle/1088850 -Tests: http://skew.org/uri/uri_tests.html

    - - -
    -
    - - - - - - - -
    - -
    -

    - _afterAppRender - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - html - -
    • - -
    - - ) - - - deprecated - - - - private - - - - - - - - - -

    - -

    -

    Appends the app's html to the DOM

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:13
    - - - -
    Deprecated
    -
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
    - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - F2.AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    • - - html - String - - - - -

      -

      The string of html

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Element: - -

    The DOM Element that contains the app

    - - -
    -
    - - - - - - - -
    - -
    -

    - _appRender - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - html - -
    • - -
    - - ) - - - deprecated - - - - private - - - - - - - - - -

    - -

    -

    Renders the html for an app.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:40
    - - - -
    Deprecated
    -
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
    - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - F2.AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    • - - html - String - - - - -

      -

      The string of html

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - _beforeAppRender - ( - -
      - -
    • - - appConfig - -
    • - -
    - - ) - - - deprecated - - - - private - - - - - - - - - -

    - -

    -

    Rendering hook to allow containers to render some html prior to an app -loading

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:62
    - - - -
    Deprecated
    -
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
    - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - F2.AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Element: - -

    The DOM Element surrounding the app

    - - -
    -
    - - - - - - - -
    - -
    -

    - _createAppConfig - ( - -
      - -
    • - - appConfig - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Adds properties to the AppConfig object

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:90
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - F2.AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - F2.AppConfig: - -

    The new F2.AppConfig object, prepopulated with -necessary properties

    - - -
    -
    - - - - - - - -
    - -
    -

    - _createAppInstance - ( - -
      - -
    • - - appConfigs - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Instantiates each app from it's appConfig and stores that in a local private collection

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:182
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfigs - Array - - - - -

      -

      An array of F2.AppConfig objects

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - _hydrateContainerConfig - ( - -
      - -
    • - - containerConfig - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Adds properties to the ContainerConfig object to take advantage of defaults

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:115
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - containerConfig - F2.ContainerConfig - - - - -

      -

      The F2.ContainerConfig object

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - _initAppEvents - ( - - ) - - - - - private - +

    +
    - - +
    +

    Parameters:

    - +
    - -
    -

    - _initContainerEvents - ( - - ) + [obj2] + Object + optional - - - private - + multiple - - +

    - +

    An object to be logged

    - -

    - -

    -

    Attach container Events

    +

    -

    -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:154
    - - - - - -
    -
    - - - - - - - - - - -
    - -
    -

    - _isInit - ( - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Has the container been init?

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:172
    - - - - - -
    -
    - - - - -
    -

    Returns:

    - -
    - - - Bool: - -

    True if the container has been init

    - - -
    -
    - - - - - - - -
    - -
    -

    - _onScriptLoadFailure - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - scriptInfo - -
    • - -
    - - ) - - - deprecated - - - - private - - - - - - - - - -

    - -

    -

    Handler to inform the container that a script failed to load

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:76
    - - - -
    Deprecated
    -
    This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
    - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - F2.AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    • - - scriptInfo - Object - - - - -

      -

      The path of the script that failed to load or the exception info -for the inline script that failed to execute

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - _parseURI - ( - -
      - -
    • - - url - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Parses URI

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:76
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - url - The URL to parse - - - - -

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Parsed URL: - -

    string -Source: https://gist.github.com/Yaffle/1088850 -Tests: http://skew.org/uri/uri_tests.html

    - - -
    -
    - - - - - - - -
    - -
    -

    - _validateApp - ( - -
      - -
    • - - appConfig - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Checks if the app is valid

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:529
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - F2.AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Bool: - -

    True if the app is valid

    - - -
    -
    - - - - - - - -
    - -
    -

    - _validateContainerConfig - ( - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Checks if the ContainerConfig is valid

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:551
    - - - - - -
    -
    - - - - -
    -

    Returns:

    - -
    - - - Bool: - -

    True if the config is valid

    - - -
    -
    - - - - - - - -
    - -
    -

    - appConfigReplacer - ( - - ) - - - - - - - - - - - - -

    - -

    -

    A function to pass into F2.stringify which will prevent circular -reference errors when serializing objects

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:102
    - - - - - -
    -
    - - - - - - - - - - -
    - -
    -

    - extend - ( - -
      - -
    • - - ns - -
    • - -
    • - - obj - -
    • - -
    • - - overwrite - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Creates a namespace on F2 and copies the contents of an object into -that namespace optionally overwriting existing properties.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:150
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - ns - String - - - - -

      -

      The namespace to create. Pass a falsy value to -add properties to the F2 namespace directly.

      - -

      - - -
    • - -
    • - - obj - Object - - - - -

      -

      The object to copy into the namespace.

      - -

      - - -
    • - -
    • - - overwrite - Bool - - - - -

      -

      True if object properties should be overwritten

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Object: - -

    The created object

    - - -
    -
    - - - - - - - -
    - -
    -

    - getContainerState - ( - - ) - - - - - - - - - - - - -

    - -

    -

    Gets the current list of apps in the container

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:580
    - - - - - -
    -
    - - - - -
    -

    Returns:

    - -
    - - - Array: - -

    An array of objects containing the appId

    - - -
    -
    - - - - - - - -
    - -
    -

    - guid - ( - - ) - - - - - - - - - - - - -

    - -

    -

    Generates a somewhat random id

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:190
    - - - - - -
    -
    - - - - -
    -

    Returns:

    - -
    - - - String: - -

    A random id

    - - -
    -
    - - - - - - - -
    - -
    -

    - inArray - ( - -
      - -
    • - - value - -
    • - -
    • - - array - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Search for a value within an array.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:202
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - value - Object - - - - -

      -

      The value to search for

      - -

      - - -
    • - -
    • - - array - Array - - - - -

      -

      The array to search

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Bool: - -

    True if the item is in the array

    - - -
    -
    - - - - - - - -
    - -
    -

    - init - ( - -
      - -
    • - - config - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Initializes the container. This method must be called before performing -any other actions in the container.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:597
    - - - - - -
    -
    - - -
    -

    Parameters:

    - - -
    - - - - - - - - - -
    - -
    -

    - isInit - ( - - ) - - - - - - - - - - - - -

    - -

    -

    Has the container been init?

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:625
    - - - - - -
    -
    - - - - -
    -

    Returns:

    - -
    - - - Bool: - -

    True if the container has been init

    - - -
    -
    - - - - - - - -
    - -
    -

    - isLocalRequest - ( - -
      - -
    • - - url - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Tests a URL to see if it's on the same domain (local) or not

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:212
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - url - URL to test - - - - -

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Bool: - -

    Whether the URL is local or not -Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js

    - - -
    -
    - - - - - - - -
    - -
    -

    - isNativeDOMNode - ( - -
      - -
    • - - testObject - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Utility method to determine whether or not the argument passed in is or is not a native dom node.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:256
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - testObject - Object - - - - -

      -

      The object you want to check as native dom node.

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Bool: - -

    Returns true if the object passed is a native dom node.

    - - -
    -
    - - - - - - - -
    - -
    -

    - loadApp - ( - -
      - -
    • - - appConfigs - -
    • - -
    • - - [appManifest] - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Loads the app's html/css/javascript

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:211
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfigs - Array - - - - -

      -

      An array of -F2.AppConfig objects

      - -

      - - -
    • - -
    • - - [appManifest] - F2.AppManifest - optional - - - - -

      -

      The AppManifest object

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - loadSecureApp - ( - -
      - -
    • - - appConfig - -
    • - -
    • - - appManifest - -
    • - -
    - - ) - - - - - private - - - - - - - - - -

    - -

    -

    Loads the app's html/css/javascript into an iframe

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:466
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfig - F2.AppConfig - - - - -

      -

      The F2.AppConfig object

      - -

      - - -
    • - -
    • - - appManifest - F2.AppManifest - - - - -

      -

      The app's html/css/js to be loaded into the -page.

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - log - ( - -
      - -
    • - - Object/Method - -
    • - -
    • - - [obj2] - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    A utility logging function to write messages or objects to the browser console. This is a proxy for the console API.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:275
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - Object/Method - Object | String - - - - -

      -

      An object to be logged or a console API method name, such as warn or error. All of the console method names are detailed in the Chrome docs.

      - -

      - - -
    • - -
    • - - [obj2] - Object - optional - - - - multiple - - -

      -

      An object to be logged

      - -

      - - -
    • - -
    -
    - - - - - -

    Example:

    -
    -
            //Pass any object (string, int, array, object, bool) to .log()
    -        F2.log('foo');
    -        F2.log(myArray);
    -        //Use a console method name as the first argument. 
    -        F2.log('error', err);
    -        F2.log('info', 'The session ID is ' + sessionId);
    -

    Some code derived from HTML5 Boilerplate console plugin

    - -
    - - - - - -
    - -
    -

    - parse - ( - -
      - -
    • - - str - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Wrapper to convert a JSON string to an object

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:331
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - str - String - - - - -

      -

      The JSON string to convert

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - Object: - -

    The parsed object

    - - -
    -
    - - - - - - - -
    - -
    -

    - registerApps - ( - -
      - -
    • - - appConfigs - -
    • - -
    • - - [appManifests] - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Begins the loading process for all apps and/or initialization process for pre-loaded apps. -The app will be passed the F2.AppConfig object which will -contain the app's unique instanceId within the container. If the -F2.AppConfig.root property is populated the app is considered -to be a pre-loaded app and will be handled accordingly. Optionally, the -F2.AppManifest can be passed in and those -assets will be used instead of making a request.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:631
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - appConfigs - Array - - - - -

      -

      An array of F2.AppConfig -objects

      - -

      - - -
    • - -
    • - - [appManifests] - Array - optional - - - - -

      -

      An array of -F2.AppManifest -objects. This array must be the same length as the apps array that is -objects. This array must be the same length as the apps array that is -passed in. This can be useful if apps are loaded on the server-side and -passed down to the client.

      - -

      - - -
    • - -
    -
    - - - - - -

    Example:

    -
    -

    Traditional App requests.

    + + + +
    + + +

    Example:

    + +
    +
     //Pass any object (string, int, array, object, bool) to .log()
    +                F2.log('foo');
    +                F2.log(myArray);
    +                //Use a console method name as the first argument.
    +                F2.log('error', err);
    +                F2.log('info', 'The session ID is ' + sessionId);
    +

    Some code derived from HTML5 + Boilerplate console plugin

    + +
    + + + + +
    + +
    +

    + parse + ( + +
      + +
    • + + str + +
    • + +
    + + ) + + +

    + +

    + +

    Wrapper to convert a JSON string to an object

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:331 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + str + String + + +

      + +

      The JSON string to convert

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + Object: + +

    The parsed object

    + + +
    +
    + + + + +
    + +
    +

    + registerApps + ( + +
      + +
    • + + appConfigs + +
    • + +
    • + + [appManifests] + +
    • + +
    + + ) + + +

    + +

    + +

    Begins the loading process for all apps and/or initialization process for pre-loaded + apps. + The app will be passed the F2.AppConfig + object which will + contain the app's unique instanceId within the container. If the + F2.AppConfig.root property + is populated the app is considered + to be a pre-loaded app and will be handled accordingly. Optionally, the + F2.AppManifest can be + passed in and those + assets will be used instead of making a request.

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:631 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + appConfigs + Array + + +

      + +

      An array of F2.AppConfig + objects

      + +

      + + +
    • + +
    • + + [appManifests] + Array + optional + + +

      + +

      An array of + F2.AppManifest + objects. This array must be the same length as the apps array that is + objects. This array must be the same length as the apps array that is + passed in. This can be useful if apps are loaded on the server-side and + passed down to the client.

      + +

      + + +
    • + +
    +
    + + +

    Example:

    + +
    +

    Traditional App requests.

    // Traditional f2 app configs
    -var arConfigs = [
    +    var arConfigs = [
         {
    -        appId: 'com_externaldomain_example_app',
    -        context: {},
    -        manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
    +    appId: 'com_externaldomain_example_app',
    +    context: {},
    +    manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
         },
         {
    -        appId: 'com_externaldomain_example_app',
    -        context: {},
    -        manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
    +    appId: 'com_externaldomain_example_app',
    +    context: {},
    +    manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
         },
         {
    -        appId: 'com_externaldomain_example_app2',
    -        context: {},
    -        manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
    +    appId: 'com_externaldomain_example_app2',
    +    context: {},
    +    manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
         }
    -];
    +    ];
     
    -F2.init();
    -F2.registerApps(arConfigs);
    -

    Pre-loaded and tradition apps mixed.

    + F2.init(); + F2.registerApps(arConfigs); +

    Pre-loaded and tradition apps mixed.

    // Pre-loaded apps and traditional f2 app configs
    -// you can preload the same app multiple times as long as you have a unique root for each
    -var arConfigs = [
    +    // you can preload the same app multiple times as long as you have a unique root for each
    +    var arConfigs = [
         {
    -        appId: 'com_mydomain_example_app',
    -        context: {},
    -        root: 'div#example-app-1',
    -        manifestUrl: ''
    +    appId: 'com_mydomain_example_app',
    +    context: {},
    +    root: 'div#example-app-1',
    +    manifestUrl: ''
         },
         {
    -        appId: 'com_mydomain_example_app',
    -        context: {},
    -        root: 'div#example-app-2',
    -        manifestUrl: ''
    +    appId: 'com_mydomain_example_app',
    +    context: {},
    +    root: 'div#example-app-2',
    +    manifestUrl: ''
         },
         {
    -        appId: 'com_externaldomain_example_app',
    -        context: {},
    -        manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
    +    appId: 'com_externaldomain_example_app',
    +    context: {},
    +    manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
         }
    -];
    +    ];
     
    -F2.init();
    -F2.registerApps(arConfigs);
    -

    Apps with predefined manifests.

    + F2.init(); + F2.registerApps(arConfigs); +

    Apps with predefined manifests.

    // Traditional f2 app configs
    -var arConfigs = [
    +    var arConfigs = [
         {appId: 'com_externaldomain_example_app', context: {}},
         {appId: 'com_externaldomain_example_app', context: {}},
         {appId: 'com_externaldomain_example_app2', context: {}}
    -];
    +    ];
     
    -// Pre requested manifest responses
    -var arManifests = [
    +    // Pre requested manifest responses
    +    var arManifests = [
         {
    -        apps: ['<div>Example App!</div>'],
    -        inlineScripts: [],
    -        scripts: ['http://www.domain.com/js/AppClass.js'],
    -        styles: ['http://www.domain.com/css/AppStyles.css']
    +    apps: ['<div>Example App!</div>'],
    +    inlineScripts: [],
    +    scripts: ['http://www.domain.com/js/AppClass.js'],
    +    styles: ['http://www.domain.com/css/AppStyles.css']
         },
         {
    -        apps: ['<div>Example App!</div>'],
    -        inlineScripts: [],
    -        scripts: ['http://www.domain.com/js/AppClass.js'],
    -        styles: ['http://www.domain.com/css/AppStyles.css']
    +    apps: ['<div>Example App!</div>'],
    +    inlineScripts: [],
    +    scripts: ['http://www.domain.com/js/AppClass.js'],
    +    styles: ['http://www.domain.com/css/AppStyles.css']
         },
         {
    -        apps: ['<div>Example App 2!</div>'],
    -        inlineScripts: [],
    -        scripts: ['http://www.domain.com/js/App2Class.js'],
    -        styles: ['http://www.domain.com/css/App2Styles.css']
    +    apps: ['<div>Example App 2!</div>'],
    +    inlineScripts: [],
    +    scripts: ['http://www.domain.com/js/App2Class.js'],
    +    styles: ['http://www.domain.com/css/App2Styles.css']
         }
    -];
    +    ];
    +
    +    F2.init();
    +    F2.registerApps(arConfigs, arManifests);
    + +
    + + + + +
    + +
    +

    + removeAllApps + ( + + ) + + +

    + +

    + +

    Removes all apps from the container

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:952 +
    + + +
    +
    + + + + +
    + +
    +

    + removeApp + ( + +
      + +
    • + + instanceId + +
    • + +
    + + ) + + +

    + +

    + +

    Removes an app from the container

    + +

    + +
    +
    + + +
    Defined in
    +
    sdk/src/container.js:967 +
    + + +
    +
    -F2.init(); -F2.registerApps(arConfigs, arManifests); -
    - +
    +

    Parameters:

    - - - - - -
    -

    - removeAllApps - ( - - ) - - - - - - - - - - - - -

    - -

    -

    Removes all apps from the container

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:952
    - - - - - -
    -
    - - - - - - - - - - -
    - -
    -

    - removeApp - ( - -
      - -
    • - - instanceId - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Removes an app from the container

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/container.js:967
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - instanceId - String - - - - -

      -

      The app's instanceId

      - -

      - - -
    • - -
    -
    - - - - - - - - - -
    - -
    -

    - stringify - ( - -
      - -
    • - - value - -
    • - -
    • - - replacer - -
    • - -
    • - - space - -
    • - -
    - - ) - - - - - - - - - - - - -

    - -

    -

    Wrapper to convert an object to JSON

    -

    Note: When using F2.stringify on an F2.AppConfig object, it is -recommended to pass F2.appConfigReplacer as the replacer function in -order to prevent circular serialization errors.

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:340
    - - - - - -
    -
    - - -
    -

    Parameters:

    - -
      - -
    • - - value - Object - - - - -

      -

      The object to convert

      - -

      - - -
    • - -
    • - - replacer - Function | Array - - - - -

      -

      An optional parameter that determines -how object values are stringified for objects. It can be a function or an -array of strings.

      - -

      - - -
    • - -
    • - - space - Int | String - - - - -

      -

      An optional parameter that specifies the -indentation of nested structures. If it is omitted, the text will be -packed without extra whitespace. If it is a number, it will specify the -number of spaces to indent at each level. If it is a string (such as '\t' -or ' '), it contains the characters used to indent at each level.

      - -

      - - -
    • - -
    -
    - - - -
    -

    Returns:

    - -
    - - - String: - -

    The JSON string

    - - -
    -
    - - - - - - - -
    - -
    -

    - version - ( - - ) - - - - - - - - - - - - -

    - -

    -

    Function to get the F2 version number

    - -

    - -
    -
    - - - - - - - -
    Defined in
    -
    sdk/src/F2.js:361
    - - - - - -
    -
    - - - - -
    -

    Returns:

    - -
    - - - String: - -

    F2 version number

    - - -
    -
    - - - - - - - -
    - -
    - - - - - -
    - -
    -

    - Apps - - Object - - - - - - - - -

    - -

    -

    The apps namespace is a place for app developers to put the javascript -class that is used to initialize their app. The javascript classes should -be namepaced with the F2.AppConfig.appId. -It is recommended that the code be placed in a closure to help keep the -global namespace clean.

    -

    If the class has an 'init' function, that function will be called -automatically by F2.

    - -

    +
      -
      -
      - - - - - - - -
      Defined in
      -
      sdk/src/F2.js:114
      - - - - - -
      -
      - - - - -

      Example:

      - -
      +
    • + + instanceId + String + + +

      + +

      The app's instanceId

      + +

      + + +
    • + +
    +
    + + + + + + +
    +

    + stringify + ( + +
      + +
    • + + value + +
    • + +
    • + + replacer + +
    • + +
    • + + space + +
    • + +
    + + ) + + +

    + +

    + +

    Wrapper to convert an object to JSON

    + +

    Note: When using F2.stringify on an F2.AppConfig object, it is + recommended to pass F2.appConfigReplacer as the replacer function in + order to prevent circular serialization errors.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:340 +
    + + +
    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + value + Object + + +

      + +

      The object to convert

      + +

      + + +
    • + +
    • + + replacer + Function | Array + + +

      + +

      An optional parameter that determines + how object values are stringified for objects. It can be a function or an + array of strings.

      + +

      + + +
    • + +
    • + + space + Int | String + + +

      + +

      An optional parameter that specifies the + indentation of nested structures. If it is omitted, the text will be + packed without extra whitespace. If it is a number, it will specify the + number of spaces to indent at each level. If it is a string (such as '\t' + or ' '), it contains the characters used to indent at each + level.

      + +

      + + +
    • + +
    +
    + + +
    +

    Returns:

    + +
    + + + String: + +

    The JSON string

    + + +
    +
    + + + + +
    + +
    +

    + version + ( + + ) + + +

    + +

    + +

    Function to get the F2 version number

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:361 +
    + + +
    +
    + + +
    +

    Returns:

    + +
    + + + String: + +

    F2 version number

    + + +
    +
    + + + + +
    + +
    + + + + + +
    + +
    +

    + Apps + + Object + + +

    + +

    + +

    The apps namespace is a place for app developers to put the javascript + class that is used to initialize their app. The javascript classes should + be namepaced with the F2.AppConfig.appId. + It is recommended that the code be placed in a closure to help keep the + global namespace clean.

    + +

    If the class has an 'init' function, that function will be called + automatically by F2.

    + +

    + +
    +
    + + +
    Defined in
    +
    + sdk/src/F2.js:114 +
    + + +
    +
    + + +

    Example:

    + +
    F2.Apps["com_example_helloworld"] = (function() {
    -    var App_Class = function(appConfig, appContent, root) {
    -        this._app = appConfig; // the F2.AppConfig object
    -        this._appContent = appContent // the F2.AppManifest.AppContent object
    -        this.$root = $(root); // the root DOM Element that contains this app
    +                var App_Class = function(appConfig, appContent, root) {
    +                this._app = appConfig; // the F2.AppConfig object
    +                this._appContent = appContent // the F2.AppManifest.AppContent object
    +                this.$root = $(root); // the root DOM Element that contains this app
    +                }
    +
    +                App_Class.prototype.init = function() {
    +                // perform init actions
    +                }
    +
    +                return App_Class;
    +                })();
    +
    F2.Apps["com_example_helloworld"] = function(appConfig, appContent, root)
    +    {
    +    return {
    +    init:function() {
    +    // perform init actions
         }
    +    };
    +    };
    - App_Class.prototype.init = function() { - // perform init actions - } +
    - return App_Class; -})(); -
    F2.Apps["com_example_helloworld"] = function(appConfig, appContent, root) {
    -   return {
    -       init:function() {
    -           // perform init actions
    -       }
    -   };
    -};
    - -
    - - - - - - - -
    - - - - - - - - - - -
    -
    -
    -
    + + - -
    +
    + + + + + + + + + + +
    + + + +
    + + + @@ -4460,24 +3870,24 @@

    Example:

    \ No newline at end of file diff --git a/docs/sdk/classes/index.html b/docs/sdk/classes/index.html index 487fe15b..c0cf9b87 100644 --- a/docs/sdk/classes/index.html +++ b/docs/sdk/classes/index.html @@ -1,10 +1,10 @@ - - Redirector - - - - Click here to redirect - + + Redirector + + + +Click here to redirect + diff --git a/docs/sdk/files/index.html b/docs/sdk/files/index.html index 487fe15b..c0cf9b87 100644 --- a/docs/sdk/files/index.html +++ b/docs/sdk/files/index.html @@ -1,10 +1,10 @@ - - Redirector - - - - Click here to redirect - + + Redirector + + + +Click here to redirect + diff --git a/docs/sdk/files/sdk_src_F2.js.html b/docs/sdk/files/sdk_src_F2.js.html index a68dc2ff..cd64dd1b 100644 --- a/docs/sdk/files/sdk_src_F2.js.html +++ b/docs/sdk/files/sdk_src_F2.js.html @@ -1,228 +1,247 @@ - - F2 - sdk/src/F2.js - - - - - - - - - - - - - - - - - - - - - + + F2 - sdk/src/F2.js + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    File: sdk/src/F2.js

    - -
    + + +
    +
    +
    + +
    +
    +

    File: sdk/src/F2.js

    + +
     /*!
      * F2 v<%= version%> <%= grunt.template.today("mm-dd-yyyy")%>
    @@ -594,18 +613,28 @@ 

    File: sdk/src/F2.js

    })();
    -
    - -
    -
    - -
    - - -
    +
    + +
    +
    + +
    + + +
    @@ -614,24 +643,24 @@

    File: sdk/src/F2.js

    \ No newline at end of file diff --git a/docs/sdk/files/sdk_src_app_handlers.js.html b/docs/sdk/files/sdk_src_app_handlers.js.html index bb1924ab..6779a498 100644 --- a/docs/sdk/files/sdk_src_app_handlers.js.html +++ b/docs/sdk/files/sdk_src_app_handlers.js.html @@ -1,228 +1,247 @@ - - F2 - sdk/src/app_handlers.js - - - - - - - - - - - - - - - - - - - - - + + F2 - sdk/src/app_handlers.js + + + + + + + + + + + + + + + + + + + + +
    -
    - - + -
    -
    - +
    +
    + + + + +
    +
    +
    + +
    +
    +

    File: sdk/src/app_handlers.js

    + +
     /**
      * The new `AppHandlers` functionality provides Container Developers a higher level of control over configuring app rendering and interaction.
    @@ -850,18 +869,28 @@ 

    File: sdk/src/app_handlers.js

    })() });
    -
    +
    -
    -
    + + -
    +
    - - + + @@ -870,24 +899,24 @@

    File: sdk/src/app_handlers.js

    \ No newline at end of file diff --git a/docs/sdk/files/sdk_src_classes.js.html b/docs/sdk/files/sdk_src_classes.js.html index 8c02476a..8e7f491a 100644 --- a/docs/sdk/files/sdk_src_classes.js.html +++ b/docs/sdk/files/sdk_src_classes.js.html @@ -1,228 +1,247 @@ - - F2 - sdk/src/classes.js - - - - - - - - - - - - - - - - - - - - - + + F2 - sdk/src/classes.js + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    File: sdk/src/classes.js

    - -
    + + +
    +
    +
    + +
    +
    +

    File: sdk/src/classes.js

    + +
     /**
      * Class stubs for documentation purposes
    @@ -738,18 +757,28 @@ 

    File: sdk/src/classes.js

    } });
    -
    +
    -
    -
    +
    +
    -
    +
    - -
    + +
    @@ -758,24 +787,24 @@

    File: sdk/src/classes.js

    \ No newline at end of file diff --git a/docs/sdk/files/sdk_src_constants.js.html b/docs/sdk/files/sdk_src_constants.js.html index 76831296..7cd61c70 100644 --- a/docs/sdk/files/sdk_src_constants.js.html +++ b/docs/sdk/files/sdk_src_constants.js.html @@ -1,228 +1,247 @@ - - F2 - sdk/src/constants.js - - - - - - - - - - - - - - - - - - - - - + + F2 - sdk/src/constants.js + + + + + + + + + + + + + + + + + + + + +
    -
    - - + -
    -
    - +
    +
    + + + + +
    +
    +
    + +
    +
    +

    File: sdk/src/constants.js

    + +
     /**
      * Constants used throughout the Open Financial Framework
    @@ -503,18 +522,28 @@ 

    File: sdk/src/constants.js

    } });
    -
    +
    -
    -
    + + -
    +
    - - + + @@ -523,24 +552,24 @@

    File: sdk/src/constants.js

    \ No newline at end of file diff --git a/docs/sdk/files/sdk_src_container.js.html b/docs/sdk/files/sdk_src_container.js.html index 6d6be6de..649beafa 100644 --- a/docs/sdk/files/sdk_src_container.js.html +++ b/docs/sdk/files/sdk_src_container.js.html @@ -1,228 +1,247 @@ - - F2 - sdk/src/container.js - - - - - - - - - - - - - - - - - - - - - + + F2 - sdk/src/container.js + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    File: sdk/src/container.js

    - -
    + + +
    +
    +
    + +
    +
    +

    File: sdk/src/container.js

    + +
     /**
      * Root namespace of the F2 SDK
    @@ -1228,18 +1247,28 @@ 

    File: sdk/src/container.js

    })());
    -
    - -
    -
    - -
    - - -
    +
    + +
    +
    + +
    + + +
    @@ -1248,24 +1277,24 @@

    File: sdk/src/container.js

    \ No newline at end of file diff --git a/docs/sdk/files/sdk_src_events.js.html b/docs/sdk/files/sdk_src_events.js.html index c464b064..03870c28 100644 --- a/docs/sdk/files/sdk_src_events.js.html +++ b/docs/sdk/files/sdk_src_events.js.html @@ -1,228 +1,247 @@ - - F2 - sdk/src/events.js - - - - - - - - - - - - - - - - - - - - - + + F2 - sdk/src/events.js + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    File: sdk/src/events.js

    - -
    + + +
    +
    +
    + +
    +
    +

    File: sdk/src/events.js

    + +
     /**
      * Handles [Context](../../app-development.html#context) passing from
    @@ -308,18 +327,28 @@ 

    File: sdk/src/events.js

    }; })());
    -
    +
    -
    -
    +
    +
    -
    +
    - -
    + +
    @@ -328,24 +357,24 @@

    File: sdk/src/events.js

    \ No newline at end of file diff --git a/docs/sdk/files/sdk_src_rpc.js.html b/docs/sdk/files/sdk_src_rpc.js.html index a3725a3f..aecf15d4 100644 --- a/docs/sdk/files/sdk_src_rpc.js.html +++ b/docs/sdk/files/sdk_src_rpc.js.html @@ -1,228 +1,247 @@ - - F2 - sdk/src/rpc.js - - - - - - - - - - - - - - - - - - - - - + + F2 - sdk/src/rpc.js + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    File: sdk/src/rpc.js

    - -
    + + +
    +
    +
    + +
    +
    +

    File: sdk/src/rpc.js

    + +
     /**
      * Handles socket communication between the container and secure apps
    @@ -550,18 +569,28 @@ 

    File: sdk/src/rpc.js

    }; })());
    -
    - -
    -
    - -
    - - -
    +
    + +
    +
    + +
    + + +
    @@ -570,24 +599,24 @@

    File: sdk/src/rpc.js

    \ No newline at end of file diff --git a/docs/sdk/files/sdk_src_ui.js.html b/docs/sdk/files/sdk_src_ui.js.html index a46ee0d7..a6a7ed4a 100644 --- a/docs/sdk/files/sdk_src_ui.js.html +++ b/docs/sdk/files/sdk_src_ui.js.html @@ -1,228 +1,247 @@ - - F2 - sdk/src/ui.js - - - - - - - - - - - - - - - - - - - - - + + F2 - sdk/src/ui.js + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    File: sdk/src/ui.js

    - -
    + + +
    +
    +
    + +
    +
    +

    File: sdk/src/ui.js

    + +
     F2.extend('UI', (function(){
     
    @@ -651,18 +670,28 @@ 

    File: sdk/src/ui.js

    return UI_Class; })());
    -
    - -
    -
    - -
    - - -
    +
    + +
    +
    + +
    + + +
    @@ -671,24 +700,24 @@

    File: sdk/src/ui.js

    \ No newline at end of file diff --git a/docs/sdk/index.html b/docs/sdk/index.html index c09fc5a6..4b862a93 100644 --- a/docs/sdk/index.html +++ b/docs/sdk/index.html @@ -1,240 +1,268 @@ - - F2 - The Open Financial Framework - - - - - - - - - - - - - - - - - - - - - + + F2 - The Open Financial Framework + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -
    -

    F2 - The Open Financial Framework

    - - Go to the F2 class, the root namespace of the F2 SDK » -
    -
    -
    + + +
    +
    +
    + +
    +
    +
    +

    F2 - The Open Financial Framework

    + + Go to the F2 class, the root namespace of the F2 + SDK » +
    +
    +
    -
    +
    - -
    + +
    @@ -243,24 +271,24 @@

    F2 - The Open Financial Framework

    \ No newline at end of file diff --git a/docs/sdk/modules/f2.html b/docs/sdk/modules/f2.html index 3d4c3f25..45e9f3f7 100644 --- a/docs/sdk/modules/f2.html +++ b/docs/sdk/modules/f2.html @@ -1,395 +1,419 @@ - - F2 - f2 - - - - - - - - - - - - - - - - - - - - - + + F2 - f2 + + + + + + + + + + + + + + + + + + + + +
    - - -
    -
    -
    - -
    -
    -

    f2 Module

    -
    - - - - - - +
    +
    + +
    +

    f2 Module

    + +
    + + +
    + Defined in: sdk/src/ui.js:211 +
    + + +
    + + +
    +

    Open F2

    + +
    + + +
    +
    + +

    This module provides the following classes:

    -
    -
    +
    +
  • + + F2.App + +
  • + +
  • + + F2.AppConfig + +
  • + +
  • + + F2.AppHandlers + +
  • + +
  • + + F2.AppManifest + +
  • + +
  • + + F2.AppManifest.AppContent + +
  • + +
  • + + F2.Constants + +
  • + +
  • + + F2.Constants.AppHandlers + +
  • + +
  • + + F2.Constants.Css + +
  • + +
  • + + F2.Constants.Events + +
  • + +
  • + + F2.Constants.Sockets + +
  • + +
  • + + F2.Constants.Views + +
  • + +
  • + + F2.ContainerConfig + +
  • + +
  • + + F2.ContainerConfig.UI + +
  • + +
  • + + F2.ContainerConfig.UI.Mask + +
  • + +
  • + + F2.Events + +
  • + +
  • + + F2.Rpc + +
  • + +
  • + + F2.UI + +
  • + +
  • + + F2.UI.Modals + +
  • + +
  • + + F2.UI.Views + +
  • + + + +
    + +
    + +
    +
    + +
    +
    + +
    + + +
    @@ -398,24 +422,24 @@

    f2 Module

    \ No newline at end of file diff --git a/docs/sdk/modules/index.html b/docs/sdk/modules/index.html index 487fe15b..c0cf9b87 100644 --- a/docs/sdk/modules/index.html +++ b/docs/sdk/modules/index.html @@ -1,10 +1,10 @@ - - Redirector - - - - Click here to redirect - + + Redirector + + + +Click here to redirect + diff --git a/docs/src/sdk-template/assets/js/main.js b/docs/src/sdk-template/assets/js/main.js index 9f92e86b..9de31ad0 100644 --- a/docs/src/sdk-template/assets/js/main.js +++ b/docs/src/sdk-template/assets/js/main.js @@ -1,94 +1,89 @@ -var SDK_Manager = function() { +var SDK_Manager = function () { }; -SDK_Manager.prototype.init = function() { - - this.highlightNav(); - - // optionally apply .affix() if the window height is big enough - var winHeight = $(window).height(); - var tocHeight = $('#toc').outerHeight() + $('#toc').position().top; - if (winHeight > tocHeight + 200) { - $('#toc ul.nav').affix(); - } - - // bind hashchange and go to tab - $(window).on('hashchange', $.proxy(this._handleHashChange, this)); - this._handleHashChange(); - - // class members - //$('table.table-members').on('click', 'a[data-tab]', $.proxy(function(event) { - // this._scrollToClassMember($(event.currentTarget).data('tab'), $(event.currentTarget).data('tab-member')); - //}, this)); - - // view options - $('#viewOptions input') - .each(function(i, e) { - $('#main').toggleClass('hide-' + $(e).val(), !$(e).is(':checked')); - }) - .on('click', function() { - $('#main').toggleClass('hide-' + $(this).val(), !$(this).is(':checked')); - }); - - // back to top - $('#doc').on('click', '.backToTop a', function() { - $('html, body').animate({scrollTop:0}); - }); +SDK_Manager.prototype.init = function () { + + this.highlightNav(); + + // optionally apply .affix() if the window height is big enough + var winHeight = $(window).height(); + var tocHeight = $('#toc').outerHeight() + $('#toc').position().top; + if (winHeight > tocHeight + 200) { + $('#toc ul.nav').affix(); + } + + // bind hashchange and go to tab + $(window).on('hashchange', $.proxy(this._handleHashChange, this)); + this._handleHashChange(); + + // view options + $('#viewOptions input') + .each(function (i, e) { + $('#main').toggleClass('hide-' + $(e).val(), !$(e).is(':checked')); + }) + .on('click', function () { + $('#main').toggleClass('hide-' + $(this).val(), !$(this).is(':checked')); + }); + + // back to top + $('#doc').on('click', '.backToTop a', function () { + $('html, body').animate({scrollTop: 0}); + }); }; /** * Highlights left nav based on current page */ -SDK_Manager.prototype.highlightNav = function(){ - - var file = location.pathname.split('/').pop(), - pageName = file.replace('.html','') - ; - - $('#toc a').each($.proxy(function(idx,item){ - var $this = $(item); - if ($this.text() == pageName){ - $this.parent().addClass('active'); - return false; - } - },this)); +SDK_Manager.prototype.highlightNav = function () { + + var file = location.pathname.split('/').pop(), + pageName = file.replace('.html', '') + ; + + $('#toc a').each($.proxy(function (idx, item) { + var $this = $(item); + if ($this.text() == pageName) { + $this.parent().addClass('active'); + return false; + } + }, this)); }; -SDK_Manager.prototype._handleHashChange = function() { +SDK_Manager.prototype._handleHashChange = function () { - if (!!location.hash) { - var hashParts = String(location.hash).split('-'); + if (!!location.hash) { + var hashParts = String(location.hash).split('-'); - // handle class member - if ($('#classTabs a[href="' + hashParts[0] + '"]').length) { - this._scrollToClassMember(hashParts[0], hashParts[1]); + // handle class member + if ($('#classTabs a[href="' + hashParts[0] + '"]').length) { + this._scrollToClassMember(hashParts[0], hashParts[1]); - // handle line number - } else if (/^#l\d+$/.test(hashParts[0])) { - var line = parseInt(hashParts[0].substring(2)); - var offset = $('ol.linenums li').eq(line).offset(); - $('html, body').animate({scrollTop:offset.top - 75}); + // handle line number + } else if (/^#l\d+$/.test(hashParts[0])) { + var line = parseInt(hashParts[0].substring(2)); + var offset = $('ol.linenums li').eq(line).offset(); + $('html, body').animate({scrollTop: offset.top - 75}); - // everything else - } else { - var offset = $(hashParts[0]).offset(); - $('html, body').animate({scrollTop:offset.top - 75}); - } - } + // everything else + } else { + var offset = $(hashParts[0]).offset(); + $('html, body').animate({scrollTop: offset.top - 75}); + } + } }; -SDK_Manager.prototype._scrollToClassMember = function(tab, member) { +SDK_Manager.prototype._scrollToClassMember = function (tab, member) { - $('#classTabs [href="' + tab + '"]').tab('show'); + $('#classTabs [href="' + tab + '"]').tab('show'); - if (member) { - var offset = $(tab + '-' + member).offset(); - $('html, body').animate({scrollTop:offset.top - 75}); - } + if (member) { + var offset = $(tab + '-' + member).offset(); + $('html, body').animate({scrollTop: offset.top - 75}); + } }; -$(function() { - var sdk = new SDK_Manager(); - sdk.init(); +$(function () { + var sdk = new SDK_Manager(); + sdk.init(); }); \ No newline at end of file diff --git a/docs/src/sdk-template/layouts/main.handlebars b/docs/src/sdk-template/layouts/main.handlebars index eb31f0d6..538e34d3 100644 --- a/docs/src/sdk-template/layouts/main.handlebars +++ b/docs/src/sdk-template/layouts/main.handlebars @@ -1,137 +1,161 @@ - - {{htmlTitle}} - - - - - - - - + + {{htmlTitle}} + + + + + + + + - - - - - + + - - - - - - + + + + + +
    - -
    -
    -
    - -
    -
    - {{>layout_content}} -
    -
    +
    +
    +
    + +
    +
    + {{>layout_content}} +
    +
    -
    +
    - -
    + +
    @@ -140,24 +164,24 @@ \ No newline at end of file diff --git a/docs/src/sdk-template/partials/attrs.handlebars b/docs/src/sdk-template/partials/attrs.handlebars index a9181949..dacae04f 100644 --- a/docs/src/sdk-template/partials/attrs.handlebars +++ b/docs/src/sdk-template/partials/attrs.handlebars @@ -1,4 +1,5 @@ -
    +
    {{! For backwards compatibility }}

    {{name}}

    {{#crossLink type}}{{/crossLink}} @@ -29,31 +30,31 @@
    {{#if overwritten_from}} -

    Inherited from +

    Inherited from {{overwritten_from/class}} {{#if foundAt}} - but overwritten in + but overwritten in {{/if}} {{else}} {{#if extended_from}} -

    Inherited from +

    Inherited from {{extended_from}}: {{else}} {{#providedBy}}

    Provided by the {{.}} module.

    {{/providedBy}} -

    +

    {{#if foundAt}} - Defined in + Defined in {{/if}} {{/if}} {{/if}} {{#if foundAt}} - `{{{file}}}:{{{line}}}` + `{{{file}}}:{{{line}}}` {{/if}} -

    +

    {{#if deprecationMessage}}

    Deprecated: {{deprecationMessage}}

    @@ -77,11 +78,11 @@

    Fires event {{name}}Change

    - Fires when the value for the configuration attribute `{{{name}}}` is - changed. You can listen for the event using the `on` method if you - wish to be notified before the attribute's value has changed, or - using the `after` method if you wish to be notified after the - attribute's value has changed. + Fires when the value for the configuration attribute `{{{name}}}` is + changed. You can listen for the event using the `on` method if you + wish to be notified before the attribute's value has changed, or + using the `after` method if you wish to be notified after the + attribute's value has changed.

    @@ -101,22 +102,28 @@
  • prevVal Any +
    The value of the attribute, prior to it being set.
  • newVal Any +
    The value the attribute is to be set to.
  • attrName {{#crossLink "String"}}{{/crossLink}} +
    The name of the attribute being set.
  • subAttrName {{#crossLink "String"}}{{/crossLink}} -
    If setting a property within the attribute's value, the name of the sub-attribute property being set.
    + +
    If setting a property within the attribute's value, the + name of the sub-attribute property being set. +
  • diff --git a/docs/src/sdk-template/partials/classes.handlebars b/docs/src/sdk-template/partials/classes.handlebars index 246d60b5..316ccdb2 100644 --- a/docs/src/sdk-template/partials/classes.handlebars +++ b/docs/src/sdk-template/partials/classes.handlebars @@ -1,228 +1,228 @@

    {{name}}

    - {{{classDescription}}} + {{{classDescription}}}

    -
    - {{#if uses}} -
    Uses
    -
    -
      - {{#uses}} -
    • {{.}}
    • - {{/uses}} -
    -
    - {{/if}} - - {{#if extends}} -
    Extends
    -
    {{#crossLink extends}}{{/crossLink}}
    - {{/if}} - - {{#if foundAt}} -
    Defined in
    -
    `{{{file}}}:{{{line}}}`
    - {{/if}} - - {{#if since}} -
    Available since
    -
    {{since}}
    - {{/if}} -
    +
    + {{#if uses}} +
    Uses
    +
    +
      + {{#uses}} +
    • {{.}}
    • + {{/uses}} +
    +
    + {{/if}} + + {{#if extends}} +
    Extends
    +
    {{#crossLink extends}}{{/crossLink}}
    + {{/if}} + + {{#if foundAt}} +
    Defined in
    +
    `{{{file}}}:{{{line}}}`
    + {{/if}} + + {{#if since}} +
    Available since
    +
    {{since}}
    + {{/if}} +
    {{#if deprecated}} -

    - Deprecated - {{#if deprecationMessage}} - {{deprecationMessage}} - {{else}} - This class is deprecated. - {{/if}} -

    +

    + Deprecated + {{#if deprecationMessage}} + {{deprecationMessage}} + {{else}} + This class is deprecated. + {{/if}} +

    {{/if}}
    - -
    - {{#is_constructor}} -

    Constructor

    - {{>method}} - {{/is_constructor}} - - {{#if methods}} - - {{/if}} - - {{#if properties}} -
    -

    Properties

    - - - - - - - - - {{#properties}} - - - - - {{/properties}} - -
    NameDescription
    - {{name}} - {{{description}}}
    -
    - {{/if}} - - {{#if attrs}} -
    -

    Attributes

    - - - - - - - - - - {{#attrs}} - - - - - {{/attrs}} - -
    NameDescription
    - {{name}} - {{{description}}}
    -
    - {{/if}} - - {{#if events}} -
    -

    Events

    - - - - - - - - - - {{#events}} - - - - - {{/events}} - -
    NameDescription
    - {{name}} - {{{description}}}
    -
    - {{/if}} -
    - - - - {{#if methods}} -
    - {{#methods}} - {{>method}} - {{/methods}} -
    - {{/if}} - - - - {{#if properties}} -
    - {{#properties}} - {{>props}} - {{/properties}} -
    - {{/if}} - - - - {{#if attrs}} -
    - {{#attrs}} - {{>attrs}} - {{/attrs}} -
    - {{/if}} - - - - {{#if events}} -
    - {{#events}} - {{>events}} - {{/events}} -
    - {{/if}} - + +
    + {{#is_constructor}} +

    Constructor

    + {{>method}} + {{/is_constructor}} + + {{#if methods}} + + {{/if}} + + {{#if properties}} +
    +

    Properties

    + + + + + + + + + {{#properties}} + + + + + {{/properties}} + +
    NameDescription
    + {{name}} + {{{description}}}
    +
    + {{/if}} + + {{#if attrs}} +
    +

    Attributes

    + + + + + + + + + + {{#attrs}} + + + + + {{/attrs}} + +
    NameDescription
    + {{name}} + {{{description}}}
    +
    + {{/if}} + + {{#if events}} +
    +

    Events

    + + + + + + + + + + {{#events}} + + + + + {{/events}} + +
    NameDescription
    + {{name}} + {{{description}}}
    +
    + {{/if}} +
    + + + + {{#if methods}} +
    + {{#methods}} + {{>method}} + {{/methods}} +
    + {{/if}} + + + + {{#if properties}} +
    + {{#properties}} + {{>props}} + {{/properties}} +
    + {{/if}} + + + + {{#if attrs}} +
    + {{#attrs}} + {{>attrs}} + {{/attrs}} +
    + {{/if}} + + + + {{#if events}} +
    + {{#events}} + {{>events}} + {{/events}} +
    + {{/if}} +
    \ No newline at end of file diff --git a/docs/src/sdk-template/partials/events.handlebars b/docs/src/sdk-template/partials/events.handlebars index 64632340..791a48da 100644 --- a/docs/src/sdk-template/partials/events.handlebars +++ b/docs/src/sdk-template/partials/events.handlebars @@ -1,4 +1,5 @@ -
    +

    {{name}}

    {{#crossLink type}}{{/crossLink}} @@ -20,31 +21,31 @@
    {{#if overwritten_from}} -

    Inherited from +

    Inherited from {{overwritten_from/class}} {{#if foundAt}} - but overwritten in + but overwritten in {{/if}} {{else}} {{#if extended_from}} -

    Inherited from +

    Inherited from {{extended_from}}: {{else}} {{#providedBy}}

    Provided by the {{.}} module.

    {{/providedBy}} -

    +

    {{#if foundAt}} - Defined in + Defined in {{/if}} {{/if}} {{/if}} {{#if foundAt}} - `{{{file}}}:{{{line}}}` + `{{{file}}}:{{{line}}}` {{/if}} -

    +

    {{#if deprecationMessage}}

    Deprecated: {{deprecationMessage}}

    @@ -64,56 +65,57 @@

    Event Payload:

      - {{#params}} -
    • - {{#if optional}} - [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] - {{#crossLink type}}{{/crossLink}} - optional - {{else}} - {{name}} - {{#crossLink type}}{{/crossLink}} - {{/if}} - - {{#if multiple}} - Multiple - {{/if}} - -
      - {{{description}}} -
      - - {{#if props}} -
        - {{#props}} -
      • - {{name}} - {{#crossLink type}}{{/crossLink}} - -
        - {{{description}}} -
        - - {{#if props}} -
          - {{#props}} -
        • - {{name}} - {{#crossLink type}}{{/crossLink}} - -
          - {{{description}}} -
          -
        • - {{/props}} -
        - {{/if}} -
      • - {{/props}} -
      - {{/if}} -
    • - {{/params}} + {{#params}} +
    • + {{#if optional}} + [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] + {{#crossLink type}}{{/crossLink}} + optional + {{else}} + {{name}} + {{#crossLink type}}{{/crossLink}} + {{/if}} + + {{#if multiple}} + Multiple + {{/if}} + +
      + {{{description}}} +
      + + {{#if props}} +
        + {{#props}} +
      • + {{name}} + {{#crossLink type}}{{/crossLink}} + +
        + {{{description}}} +
        + + {{#if props}} +
          + {{#props}} +
        • + {{name}} + {{#crossLink type}}{{/crossLink}} + +
          + {{{description}}} +
          +
        • + {{/props}} +
        + {{/if}} +
      • + {{/props}} +
      + {{/if}} +
    • + {{/params}}
    {{/if}} diff --git a/docs/src/sdk-template/partials/files.handlebars b/docs/src/sdk-template/partials/files.handlebars index fccd4767..dc305a60 100644 --- a/docs/src/sdk-template/partials/files.handlebars +++ b/docs/src/sdk-template/partials/files.handlebars @@ -2,6 +2,6 @@
    -{{fileData}}
    +        {{fileData}}
         
    diff --git a/docs/src/sdk-template/partials/index.handlebars b/docs/src/sdk-template/partials/index.handlebars index 10a55001..ed1dae79 100644 --- a/docs/src/sdk-template/partials/index.handlebars +++ b/docs/src/sdk-template/partials/index.handlebars @@ -1,5 +1,5 @@
    -

    F2 - The Open Financial Framework

    - - Go to the F2 class, the root namespace of the F2 SDK » +

    F2 - The Open Financial Framework

    + + Go to the F2 class, the root namespace of the F2 SDK »
    \ No newline at end of file diff --git a/docs/src/sdk-template/partials/method.handlebars b/docs/src/sdk-template/partials/method.handlebars index 975d65e6..4ec9c2a4 100644 --- a/docs/src/sdk-template/partials/method.handlebars +++ b/docs/src/sdk-template/partials/method.handlebars @@ -1,189 +1,197 @@ -
    -

    - {{name}} - ( - {{#if params}} -
      - {{#params}} -
    • - {{#if optional}} - [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] - {{else}} - {{name}} - {{/if}} -
    • - {{/params}} -
    - {{/if}} - ) - - {{#if deprecated}} - deprecated - {{/if}} - - {{#if access}} - {{access}} - {{/if}} - - {{#if final}} - final - {{/if}} - - {{#if static}} - static - {{/if}} - - {{#if chainable}} - chainable - {{/if}} - - {{#if async}} - async - {{/if}} -

    - -

    - {{{methodDescription}}} -

    - -
    -
    - {{#if overwritten_from}} -
    Inherited from
    -
    - - {{overwritten_from/class}} - -
    - {{else}} - {{#if extended_from}} -
    Inherited from
    -
    {{extended_from}}
    - {{else}} - {{#providedBy}} -
    Provided by
    -
    {{.}} module.
    - {{/providedBy}} - {{/if}} - {{/if}} - - {{#if foundAt}} -
    Defined in
    -
    `{{{file}}}:{{{line}}}`
    - {{/if}} - - {{#if deprecationMessage}} -
    Deprecated
    -
    {{deprecationMessage}}
    - {{/if}} - - {{#if since}} -
    Available since
    -
    {{since}}
    - {{/if}} -
    -
    - - {{#if params}} -
    -

    Parameters:

    - -
      - {{#params}} -
    • - {{#if optional}} - [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] - {{#crossLink type}}{{/crossLink}} - optional - {{else}} - {{name}} - {{#crossLink type}}{{/crossLink}} - {{/if}} - - {{#if multiple}} - multiple - {{/if}} - -

      - {{{description}}} -

      - - {{#if props}} -
        - {{#props}} -
      • - {{#if optional}} - [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] - {{#crossLink type}}{{/crossLink}} - optional - {{else}} - {{name}} - {{#crossLink type}}{{/crossLink}} - {{/if}} - -

        - {{{description}}} -

        - - {{#if props}} -
          - {{#props}} -
        • - {{#if optional}} - [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] - {{#crossLink type}}{{/crossLink}} - optional - {{else}} - {{name}} - {{#crossLink type}}{{/crossLink}} - {{/if}} - -

          - {{{description}}} -

          -
        • - {{/props}} -
        - {{/if}} -
      • - {{/props}} -
      - {{/if}} -
    • - {{/params}} -
    -
    - {{/if}} - - {{#return}} -
    -

    Returns:

    - -
    - {{#if description}} - {{#if type}} - {{#crossLink type}}{{/crossLink}}: - {{/if}} - {{{description}}} - {{else}} - {{#if type}} - {{#crossLink type}}{{/crossLink}}: - {{/if}} - {{/if}} -
    -
    - {{/return}} - - {{#example}} -

    Example:

    -
    - {{{.}}} -
    - {{/example}} - - {{#unless is_constructor}} - - {{/unless}} +
    +

    + {{name}} + ( + {{#if params}} +
      + {{#params}} +
    • + {{#if optional}} + [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] + {{else}} + {{name}} + {{/if}} +
    • + {{/params}} +
    + {{/if}} + ) + + {{#if deprecated}} + deprecated + {{/if}} + + {{#if access}} + {{access}} + {{/if}} + + {{#if final}} + final + {{/if}} + + {{#if static}} + static + {{/if}} + + {{#if chainable}} + chainable + {{/if}} + + {{#if async}} + async + {{/if}} +

    + +

    + {{{methodDescription}}} +

    + +
    +
    + {{#if overwritten_from}} +
    Inherited from
    +
    + + {{overwritten_from/class}} + +
    + {{else}} + {{#if extended_from}} +
    Inherited from
    +
    {{extended_from}}
    + {{else}} + {{#providedBy}} +
    Provided by
    +
    {{.}} module.
    + {{/providedBy}} + {{/if}} + {{/if}} + + {{#if foundAt}} +
    Defined in
    +
    `{{{file}}}:{{{line}}}`
    + {{/if}} + + {{#if deprecationMessage}} +
    Deprecated
    +
    {{deprecationMessage}}
    + {{/if}} + + {{#if since}} +
    Available since
    +
    {{since}}
    + {{/if}} +
    +
    + + {{#if params}} +
    +

    Parameters:

    + +
      + {{#params}} +
    • + {{#if optional}} + [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] + {{#crossLink type}}{{/crossLink}} + optional + {{else}} + {{name}} + {{#crossLink type}}{{/crossLink}} + {{/if}} + + {{#if multiple}} + multiple + {{/if}} + +

      + {{{description}}} +

      + + {{#if props}} +
        + {{#props}} +
      • + {{#if optional}} + [{{name}}{{#if optdefault}} + ={{optdefault}}{{/if}}] + {{#crossLink type}}{{/crossLink}} + optional + {{else}} + {{name}} + {{#crossLink type}}{{/crossLink}} + {{/if}} + +

        + {{{description}}} +

        + + {{#if props}} +
          + {{#props}} +
        • + {{#if optional}} + [{{name}}{{#if optdefault}} + ={{optdefault}}{{/if}}] + {{#crossLink type}}{{/crossLink}} + optional + {{else}} + {{name}} + {{#crossLink type}}{{/crossLink}} + {{/if}} + +

          + {{{description}}} +

          +
        • + {{/props}} +
        + {{/if}} +
      • + {{/props}} +
      + {{/if}} +
    • + {{/params}} +
    +
    + {{/if}} + + {{#return}} +
    +

    Returns:

    + +
    + {{#if description}} + {{#if type}} + {{#crossLink type}}{{/crossLink}}: + {{/if}} + {{{description}}} + {{else}} + {{#if type}} + {{#crossLink type}}{{/crossLink}}: + {{/if}} + {{/if}} +
    +
    + {{/return}} + + {{#example}} +

    Example:

    + +
    + {{{.}}} +
    + {{/example}} + + {{#unless is_constructor}} + + {{/unless}}
    \ No newline at end of file diff --git a/docs/src/sdk-template/partials/module.handlebars b/docs/src/sdk-template/partials/module.handlebars index 190007f7..626b54ce 100644 --- a/docs/src/sdk-template/partials/module.handlebars +++ b/docs/src/sdk-template/partials/module.handlebars @@ -31,11 +31,11 @@ {{#if deprecated}}

    - {{#if deprecationMessage}} - Deprecated: {{deprecationMessage}} - {{else}} - This module is deprecated. - {{/if}} + {{#if deprecationMessage}} + Deprecated: {{deprecationMessage}} + {{else}} + This module is deprecated. + {{/if}}

    {{/if}} @@ -47,6 +47,7 @@ {{#example}}

    Example:

    +
    {{{.}}}
    @@ -59,13 +60,13 @@

    This module provides the following classes:

    {{/if}}
    @@ -75,17 +76,17 @@

    This module is a rollup of the following modules:

    {{/if}}
    diff --git a/docs/src/sdk-template/partials/options.handlebars b/docs/src/sdk-template/partials/options.handlebars index 292dec2b..8c1a027b 100644 --- a/docs/src/sdk-template/partials/options.handlebars +++ b/docs/src/sdk-template/partials/options.handlebars @@ -1,18 +1,18 @@
  • - - - - + + + +
  • \ No newline at end of file diff --git a/docs/src/sdk-template/partials/props.handlebars b/docs/src/sdk-template/partials/props.handlebars index c9d15cfe..881f5b27 100644 --- a/docs/src/sdk-template/partials/props.handlebars +++ b/docs/src/sdk-template/partials/props.handlebars @@ -1,125 +1,129 @@ -
    -

    - {{name}} - - {{#crossLink type}}{{/crossLink}} - - {{#if deprecated}} - deprecated - {{/if}} - - {{#if access}} - {{access}} - {{/if}} - - {{#if final}} - final - {{/if}} - - {{#if static}} - static - {{/if}} -

    - -

    - {{{propertyDescription}}} -

    - -
    -
    - {{#if overwritten_from}} -
    Inherited from
    -
    - - {{overwritten_from/class}} - -
    - {{else}} - {{#if extended_from}} -
    Inherited from
    -
    {{extended_from}}
    - {{else}} - {{#providedBy}} -
    Provided by
    -
    {{.}} module.
    - {{/providedBy}} - {{/if}} - {{/if}} - - {{#if foundAt}} -
    Defined in
    -
    `{{{file}}}:{{{line}}}`
    - {{/if}} - - {{#if deprecationMessage}} -
    Deprecated
    -
    {{deprecationMessage}}
    - {{/if}} - - {{#if since}} -
    Available since
    -
    {{since}}
    - {{/if}} -
    -
    - - {{#if default}} -

    Default: {{default}}

    - {{/if}} - - {{#example}} -

    Example:

    - -
    - {{{.}}} -
    - {{/example}} - - {{#if subprops}} -

    Sub-properties:

    - -
      - {{#subprops}} -
    • - {{#if optional}} - [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] - {{#crossLink type}}{{/crossLink}} - optional - {{else}} - {{name}} - {{#crossLink type}}{{/crossLink}} - {{/if}} - -

      - {{{description}}} -

      - - {{#if subprops}} -
        - {{#subprops}} -
      • - {{#if optional}} - [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] - {{#crossLink type}}{{/crossLink}} - optional - {{else}} - {{name}} - {{#crossLink type}}{{/crossLink}} - {{/if}} - -

        - {{{description}}} -

        -
      • - {{/subprops}} -
      - {{/if}} -
    • - {{/subprops}} -
    - {{/if}} - - +
    +

    + {{name}} + + {{#crossLink type}}{{/crossLink}} + + {{#if deprecated}} + deprecated + {{/if}} + + {{#if access}} + {{access}} + {{/if}} + + {{#if final}} + final + {{/if}} + + {{#if static}} + static + {{/if}} +

    + +

    + {{{propertyDescription}}} +

    + +
    +
    + {{#if overwritten_from}} +
    Inherited from
    +
    + + {{overwritten_from/class}} + +
    + {{else}} + {{#if extended_from}} +
    Inherited from
    +
    {{extended_from}}
    + {{else}} + {{#providedBy}} +
    Provided by
    +
    {{.}} module.
    + {{/providedBy}} + {{/if}} + {{/if}} + + {{#if foundAt}} +
    Defined in
    +
    `{{{file}}}:{{{line}}}`
    + {{/if}} + + {{#if deprecationMessage}} +
    Deprecated
    +
    {{deprecationMessage}}
    + {{/if}} + + {{#if since}} +
    Available since
    +
    {{since}}
    + {{/if}} +
    +
    + + {{#if default}} +

    Default: {{default}}

    + {{/if}} + + {{#example}} +

    Example:

    + +
    + {{{.}}} +
    + {{/example}} + + {{#if subprops}} +

    Sub-properties:

    + +
      + {{#subprops}} +
    • + {{#if optional}} + [{{name}}{{#if optdefault}}={{optdefault}}{{/if}}] + {{#crossLink type}}{{/crossLink}} + optional + {{else}} + {{name}} + {{#crossLink type}}{{/crossLink}} + {{/if}} + +

      + {{{description}}} +

      + + {{#if subprops}} +
        + {{#subprops}} +
      • + {{#if optional}} + [{{name}}{{#if optdefault}} + ={{optdefault}}{{/if}}] + {{#crossLink type}}{{/crossLink}} + optional + {{else}} + {{name}} + {{#crossLink type}}{{/crossLink}} + {{/if}} + +

        + {{{description}}} +

        +
      • + {{/subprops}} +
      + {{/if}} +
    • + {{/subprops}} +
    + {{/if}} + +
    \ No newline at end of file diff --git a/docs/src/sdk-template/partials/sidebar.handlebars b/docs/src/sdk-template/partials/sidebar.handlebars index 5359eb2e..6358c5b0 100644 --- a/docs/src/sdk-template/partials/sidebar.handlebars +++ b/docs/src/sdk-template/partials/sidebar.handlebars @@ -1,3 +1,3 @@ - {{#classes}} -
  • {{displayName}}
  • - {{/classes}} +{{#classes}} +
  • {{displayName}}
  • +{{/classes}} diff --git a/examples/apps/CSharp/Content/Scripts/HelloWorld/appclass.js b/examples/apps/CSharp/Content/Scripts/HelloWorld/appclass.js index 0377ed33..447737d2 100644 --- a/examples/apps/CSharp/Content/Scripts/HelloWorld/appclass.js +++ b/examples/apps/CSharp/Content/Scripts/HelloWorld/appclass.js @@ -1,61 +1,61 @@ -F2.Apps["com_openf2_examples_csharp_helloworld"] = (function() { - - var App_Class = function (appConfig, appContent, root) { - this.appConfig = appConfig; - this.appContent = appContent; - this.ui = appConfig.ui; - this.$root = $(root); - }; - - App_Class.prototype.init = function () { - - $('a.testAlert', this.$root).on('click', $.proxy(function() { - this.ui.Modals.alert("Hello World!", function() { - F2.log('callback fired!'); - }); - }, this)); - - $('a.testConfirm', this.$root).on('click', $.proxy(function() { - this.ui.Modals.confirm( - "Hello World!", - function() { - F2.log('ok callback fired!'); - }, - function() { - F2.log('cancel callback fired!'); - } - ); - }, this)); - - this.ui.setTitle((this.appConfig.isSecure ? 'Secure' : '') + ' Hello World (C#)'); - this.ui.updateHeight(); - - // bind symbol change event - F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(this._handleSymbolChange, this)); - }; - - App_Class.prototype._handleSymbolChange = function (data) { - - var symbolAlert = $("div.symbolAlert", this.$root); - symbolAlert = (symbolAlert.length) - ? symbolAlert - : this._renderSymbolAlert(); - - $("span:first", symbolAlert).text("The symbol has been changed to " + data.symbol); - - this.ui.updateHeight(); - }; - - App_Class.prototype._renderSymbolAlert = function() { - - return $([ - '
    ', - '', - '', - '
    ' - ].join('')) - .prependTo($("." + F2.Constants.Css.APP_CONTAINER,this.$root)); - }; - - return App_Class; +F2.Apps["com_openf2_examples_csharp_helloworld"] = (function () { + + var App_Class = function (appConfig, appContent, root) { + this.appConfig = appConfig; + this.appContent = appContent; + this.ui = appConfig.ui; + this.$root = $(root); + }; + + App_Class.prototype.init = function () { + + $('a.testAlert', this.$root).on('click', $.proxy(function () { + this.ui.Modals.alert("Hello World!", function () { + F2.log('callback fired!'); + }); + }, this)); + + $('a.testConfirm', this.$root).on('click', $.proxy(function () { + this.ui.Modals.confirm( + "Hello World!", + function () { + F2.log('ok callback fired!'); + }, + function () { + F2.log('cancel callback fired!'); + } + ); + }, this)); + + this.ui.setTitle((this.appConfig.isSecure ? 'Secure' : '') + ' Hello World (C#)'); + this.ui.updateHeight(); + + // bind symbol change event + F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(this._handleSymbolChange, this)); + }; + + App_Class.prototype._handleSymbolChange = function (data) { + + var symbolAlert = $("div.symbolAlert", this.$root); + symbolAlert = (symbolAlert.length) + ? symbolAlert + : this._renderSymbolAlert(); + + $("span:first", symbolAlert).text("The symbol has been changed to " + data.symbol); + + this.ui.updateHeight(); + }; + + App_Class.prototype._renderSymbolAlert = function () { + + return $([ + '
    ', + '', + '', + '
    ' + ].join('')) + .prependTo($("." + F2.Constants.Css.APP_CONTAINER, this.$root)); + }; + + return App_Class; })(); \ No newline at end of file diff --git a/examples/apps/JavaScript/CDS/app.css b/examples/apps/JavaScript/CDS/app.css index a83c739a..4f20db4b 100644 --- a/examples/apps/JavaScript/CDS/app.css +++ b/examples/apps/JavaScript/CDS/app.css @@ -1,29 +1,39 @@ -.com_openf2_examples_javascript_cds h5 {margin-bottom: 0;} +.com_openf2_examples_javascript_cds h5 { + margin-bottom: 0; +} + +.com_openf2_examples_javascript_cds .table th { + white-space: nowrap; + line-height: 13px; +} -.com_openf2_examples_javascript_cds .table th{white-space: nowrap; line-height: 13px;} .com_openf2_examples_javascript_cds .table th, .com_openf2_examples_javascript_cds .table td { - text-align: right; + text-align: right; } .com_openf2_examples_javascript_cds .table th.first, .com_openf2_examples_javascript_cds .table td.first { - text-align: left; + text-align: left; } .com_openf2_examples_javascript_cds .pos { - color:green; + color: green; } .com_openf2_examples_javascript_cds .neg { - color:red; + color: red; } .com_openf2_examples_javascript_cds table table { - font-size: 85%; + font-size: 85%; } .com_openf2_examples_javascript_cds table table tr { - cursor: text; + cursor: text; } -.com_openf2_examples_javascript_cds p {line-height: 13px; color: #8F8F8F;} \ No newline at end of file + +.com_openf2_examples_javascript_cds p { + line-height: 13px; + color: #8F8F8F; +} \ No newline at end of file diff --git a/examples/apps/JavaScript/CDS/appclass.js b/examples/apps/JavaScript/CDS/appclass.js index b017fe3d..e346d387 100644 --- a/examples/apps/JavaScript/CDS/appclass.js +++ b/examples/apps/JavaScript/CDS/appclass.js @@ -1,246 +1,246 @@ F2.Apps['com_openf2_examples_javascript_cds'] = (function (appConfig, appContent, root) { - (function(){ - //http://javascript.crockford.com/remedial.html - String.prototype.supplant = function(o) { - return this.replace(/{([^{}]*)}/g, - function(a, b) { - var r = o[b]; - return typeof r === 'string' || typeof r === 'number' ? r : a; - } - ); - }; - })(); - - var App = function(appConfig, appContent, root) { - this.appConfig = appConfig; - this.appContent = appContent; - this.root = root; - this.$root = $(root); - this.$settings = $('form[data-f2-view="settings"]', this.$root); - this.ui = this.appConfig.ui; - this.settings = { - allowExternalAdd: false - }; + (function () { + //http://javascript.crockford.com/remedial.html + String.prototype.supplant = function (o) { + return this.replace(/{([^{}]*)}/g, + function (a, b) { + var r = o[b]; + return typeof r === 'string' || typeof r === 'number' ? r : a; + } + ); + }; + })(); + + var App = function (appConfig, appContent, root) { + this.appConfig = appConfig; + this.appContent = appContent; + this.root = root; + this.$root = $(root); + this.$settings = $('form[data-f2-view="settings"]', this.$root); + this.ui = this.appConfig.ui; + this.settings = { + allowExternalAdd: false + }; }; - App.prototype.init = function() { - this.ui.showMask(this.root); - this.getData(); + App.prototype.init = function () { + this.ui.showMask(this.root); + this.getData(); this.initEvents(); }; App.prototype.COOKIE_NAME = "F2_Examples_CDS"; App.prototype.ROW = [ - '', - '', - '{name}', - '', - '{spread}', - '{changePct}', - '' - ].join(''); - - App.prototype.data = []; - - App.prototype.initEvents = function(){ - - // bind save settings - this.$root.on("click", "button.save", $.proxy(function(){ - this._saveSettings(); - },this)); - - this.ui.Views.change($.proxy(function(view) { - if (view === F2.Constants.Views.SETTINGS) { - this._populateSettings(); - } - },this)); - }; - - App.prototype._saveSettings = function(){ - this.settings.allowExternalAdd = $('input[name=allowExternalAdd]', this.$settings).is(':checked'); - this.ui.Views.change(F2.Constants.Views.HOME); - }; - - App.prototype._populateSettings = function(){ - $('input[name=allowExternalAdd]', this.$settings).attr('checked', this.settings.alltableswithkeys); - } - - App.prototype._supportsLocalStorage = function(){ - return (typeof(Storage) !== "undefined"); - }; - - App.prototype.drawTable = function(rTighteners, rWideners){ - var TightenerTable = [], WidenerTable = [], TableHeading = [], self = this; - - TableHeading.push( - '', - '', - '', - '', - '', - '', - '', - '', - '' - ); - - TightenerTable = TightenerTable.concat(TableHeading); - TightenerTable.push( - rTighteners, - '', - '
    NameSpread (bps)1 Day
    % Change
    ' - ); - WidenerTable = WidenerTable.concat(TableHeading); - WidenerTable.push( - rWideners, - '', - '' - ); - - $("div.cdsMovers", this.root).html([ - '
    Global Daily Tighteners (five-year CDS)
    ', - TightenerTable.join(''), - '
    Global Daily Wideners (five-year CDS)
    ', - WidenerTable.join('')].join('') - ); - - this.ui.updateHeight(); - this.ui.hideMask(this.root); - }; - - App.prototype.drawCDSList = function(bTighteners, cdsData){ - - var label = bTighteners ? "Tightener" : "Widener"; - var rRows = [], self = this; - - if (cdsData.length < 1){ - rRows.push('CDS '+label+' data unavailable.') - } else { - $.each(cdsData, function(idx,item){ - - item = item || {}; - - if(self.CloseDate == null && item.PrettyDate != null){ - self.CloseDate = item.PrettyDate; - $('p.cdsDate span', self.root).html(self.CloseDate); - } - - var cdsData = { - name: item.LongName, - spread: CDSAppFormat.bps(item.ConvSpread), - changePct: CDSAppFormat.addColorPercent(item.DailyPercentChange) - }; - - rRows.push(self.ROW.supplant(cdsData)); - }); - } - - return rRows.join(''); - }; - - App.prototype.CloseDate = null; - - App.prototype.getData = function(){ - - var rTightenerData = [], rWidenerData = []; - var _url = "http://dev.markitondemand.com/Api/SovereignCDSMovers/jsonp"; - $.ajax({ - url: _url, - data: { - tightenersOnly: 1 - }, - dataType: "jsonp", - context: this - }).done(function(jqxhr){ - rTightenerData.push(this.drawCDSList(true, jqxhr.Data || [])); - $.ajax({ - url: _url, - data: { - tightenersOnly: 0 - }, - dataType: "jsonp", - context: this - }).done(function(jqxhr2){ - rWidenerData.push(this.drawCDSList(false, jqxhr2.Data || [])); - }).fail(function(jqxh2r){ - F2.log("OOPS. CDS Wideners data was unavailable."); - rWidenerData.push(this.drawCDSList(false, [])); - }).always(function(){ - this.drawTable(rTightenerData,rWidenerData); - }); - }).fail(function(jqxhr){ - F2.log("OOPS. CDS Tighteners data was unavailable."); - rTightenerData.push(this.drawCDSList(true,[])); - rWidenerData.push(this.drawCDSList(false, [])); - this.drawTable(rTightenerData,rWidenerData); - }); - }; - - /** - * Number format helpers - */ - CDSAppFormat = function(){ - this.magnitudes = { - shortcap : ["", "K", "M", "B", "T"] - }; - } - - CDSAppFormat.prototype.getMagnitude = function(numDigits,value,type) { - value = Math.abs(value); - var c = 0; - while (value >= 1000 && c < 4) { - value /= 1000; - c++; - } - value = value.toFixed(numDigits); - return value + this.magnitudes[type][c]; - } - - CDSAppFormat.prototype.lastPrice = function(value){ - value = Number(value); - value = value.toFixed(2); - return "$" + value; - } - - CDSAppFormat.prototype.bps = function(value){ - value = Number(value); - value = value.toFixed(2); - return value; - } - - CDSAppFormat.prototype.addColorPercent = function(value){ - if(value && !isNaN(value) && isFinite(value)){ - if (value > 0){ - return "" + value.toFixed(2) + "%"; - } else { - return "" + value.toFixed(2) + "%"; - } - } - return value.toFixed(2) + '%'; - } - - CDSAppFormat.prototype.comma = function(value) { - value = String(value); - if (value.length < 6 && value.indexOf(".") > -1) { - return value; - } else { - x = value.split('.'); - x1 = x[0]; - x2 = x.length > 1 ? '.' + x[1] : ''; - var rgx = /(\d+)(\d{3})/; - while (rgx.test(x1)) { - x1 = x1.replace(rgx, '$1' + ',' + '$2'); - } - return x1 + x2; - } - } - - CDSAppFormat = new CDSAppFormat(); - /** - * end number formatting helpers - */ + '', + '', + '{name}', + '', + '{spread}', + '{changePct}', + '' + ].join(''); + + App.prototype.data = []; + + App.prototype.initEvents = function () { + + // bind save settings + this.$root.on("click", "button.save", $.proxy(function () { + this._saveSettings(); + }, this)); + + this.ui.Views.change($.proxy(function (view) { + if (view === F2.Constants.Views.SETTINGS) { + this._populateSettings(); + } + }, this)); + }; + + App.prototype._saveSettings = function () { + this.settings.allowExternalAdd = $('input[name=allowExternalAdd]', this.$settings).is(':checked'); + this.ui.Views.change(F2.Constants.Views.HOME); + }; + + App.prototype._populateSettings = function () { + $('input[name=allowExternalAdd]', this.$settings).attr('checked', this.settings.alltableswithkeys); + } + + App.prototype._supportsLocalStorage = function () { + return (typeof(Storage) !== "undefined"); + }; + + App.prototype.drawTable = function (rTighteners, rWideners) { + var TightenerTable = [], WidenerTable = [], TableHeading = [], self = this; + + TableHeading.push( + '', + '', + '', + '', + '', + '', + '', + '', + '' + ); + + TightenerTable = TightenerTable.concat(TableHeading); + TightenerTable.push( + rTighteners, + '', + '
    NameSpread (bps)1 Day
    % Change
    ' + ); + WidenerTable = WidenerTable.concat(TableHeading); + WidenerTable.push( + rWideners, + '', + '' + ); + + $("div.cdsMovers", this.root).html([ + '
    Global Daily Tighteners (five-year CDS)
    ', + TightenerTable.join(''), + '
    Global Daily Wideners (five-year CDS)
    ', + WidenerTable.join('')].join('') + ); + + this.ui.updateHeight(); + this.ui.hideMask(this.root); + }; + + App.prototype.drawCDSList = function (bTighteners, cdsData) { + + var label = bTighteners ? "Tightener" : "Widener"; + var rRows = [], self = this; + + if (cdsData.length < 1) { + rRows.push('CDS ' + label + ' data unavailable.') + } else { + $.each(cdsData, function (idx, item) { + + item = item || {}; + + if (self.CloseDate == null && item.PrettyDate != null) { + self.CloseDate = item.PrettyDate; + $('p.cdsDate span', self.root).html(self.CloseDate); + } + + var cdsData = { + name: item.LongName, + spread: CDSAppFormat.bps(item.ConvSpread), + changePct: CDSAppFormat.addColorPercent(item.DailyPercentChange) + }; + + rRows.push(self.ROW.supplant(cdsData)); + }); + } + + return rRows.join(''); + }; + + App.prototype.CloseDate = null; + + App.prototype.getData = function () { + + var rTightenerData = [], rWidenerData = []; + var _url = "http://dev.markitondemand.com/Api/SovereignCDSMovers/jsonp"; + $.ajax({ + url: _url, + data: { + tightenersOnly: 1 + }, + dataType: "jsonp", + context: this + }).done(function (jqxhr) { + rTightenerData.push(this.drawCDSList(true, jqxhr.Data || [])); + $.ajax({ + url: _url, + data: { + tightenersOnly: 0 + }, + dataType: "jsonp", + context: this + }).done(function (jqxhr2) { + rWidenerData.push(this.drawCDSList(false, jqxhr2.Data || [])); + }).fail(function (jqxh2r) { + F2.log("OOPS. CDS Wideners data was unavailable."); + rWidenerData.push(this.drawCDSList(false, [])); + }).always(function () { + this.drawTable(rTightenerData, rWidenerData); + }); + }).fail(function (jqxhr) { + F2.log("OOPS. CDS Tighteners data was unavailable."); + rTightenerData.push(this.drawCDSList(true, [])); + rWidenerData.push(this.drawCDSList(false, [])); + this.drawTable(rTightenerData, rWidenerData); + }); + }; + + /** + * Number format helpers + */ + CDSAppFormat = function () { + this.magnitudes = { + shortcap: ["", "K", "M", "B", "T"] + }; + } + + CDSAppFormat.prototype.getMagnitude = function (numDigits, value, type) { + value = Math.abs(value); + var c = 0; + while (value >= 1000 && c < 4) { + value /= 1000; + c++; + } + value = value.toFixed(numDigits); + return value + this.magnitudes[type][c]; + } + + CDSAppFormat.prototype.lastPrice = function (value) { + value = Number(value); + value = value.toFixed(2); + return "$" + value; + } + + CDSAppFormat.prototype.bps = function (value) { + value = Number(value); + value = value.toFixed(2); + return value; + } + + CDSAppFormat.prototype.addColorPercent = function (value) { + if (value && !isNaN(value) && isFinite(value)) { + if (value > 0) { + return "" + value.toFixed(2) + "%"; + } else { + return "" + value.toFixed(2) + "%"; + } + } + return value.toFixed(2) + '%'; + } + + CDSAppFormat.prototype.comma = function (value) { + value = String(value); + if (value.length < 6 && value.indexOf(".") > -1) { + return value; + } else { + x = value.split('.'); + x1 = x[0]; + x2 = x.length > 1 ? '.' + x[1] : ''; + var rgx = /(\d+)(\d{3})/; + while (rgx.test(x1)) { + x1 = x1.replace(rgx, '$1' + ',' + '$2'); + } + return x1 + x2; + } + } + + CDSAppFormat = new CDSAppFormat(); + /** + * end number formatting helpers + */ return App; diff --git a/examples/apps/JavaScript/CDS/manifest.js b/examples/apps/JavaScript/CDS/manifest.js index f5566430..217d8cfa 100644 --- a/examples/apps/JavaScript/CDS/manifest.js +++ b/examples/apps/JavaScript/CDS/manifest.js @@ -1,33 +1,33 @@ F2_jsonpCallback_com_openf2_examples_javascript_cds({ - "scripts":[ - "../apps/JavaScript/CDS/appclass.js" - ], - "styles":[ - "../apps/JavaScript/CDS/app.css" - ], - "apps":[ - { - "html":[ - '
    ', - '
    ', - '

    ', - '', - '

    ', - '
    ', - '

    ', - 'Falling (or narrowing) spreads indicate the perceived risk of default is falling. Rising (or widening) spreads indicate the perceived risk of default is rising.', - '

    ', - '

    ', - 'All CDS are denominated in U.S. Dollars except U.S. sovereigns, which are in Euros.', - '

    ', - '
    ', - '
    ', - '

    About

    ', - '

    CDS Sovereign Big Movers v 1.0

    ', - '

    « Back', - '

    ', - '
    ' - ].join("") - } - ] + "scripts": [ + "../apps/JavaScript/CDS/appclass.js" + ], + "styles": [ + "../apps/JavaScript/CDS/app.css" + ], + "apps": [ + { + "html": [ + '
    ', + '
    ', + '

    ', + '', + '

    ', + '
    ', + '

    ', + 'Falling (or narrowing) spreads indicate the perceived risk of default is falling. Rising (or widening) spreads indicate the perceived risk of default is rising.', + '

    ', + '

    ', + 'All CDS are denominated in U.S. Dollars except U.S. sovereigns, which are in Euros.', + '

    ', + '
    ', + '
    ', + '

    About

    ', + '

    CDS Sovereign Big Movers v 1.0

    ', + '

    « Back', + '

    ', + '
    ' + ].join("") + } + ] }) \ No newline at end of file diff --git a/examples/apps/JavaScript/Chart/app.css b/examples/apps/JavaScript/Chart/app.css index 33a63594..59bc74f3 100644 --- a/examples/apps/JavaScript/Chart/app.css +++ b/examples/apps/JavaScript/Chart/app.css @@ -1,7 +1,7 @@ .com_openf2_examples_javascript_chart .btn-group { - margin-bottom: 10px; + margin-bottom: 10px; } .com_openf2_examples_javascript_chart #f2-1year-chart { - height:234px; + height: 234px; } \ No newline at end of file diff --git a/examples/apps/JavaScript/Chart/appclass.js b/examples/apps/JavaScript/Chart/appclass.js index 0e2a41a5..6dd552c4 100644 --- a/examples/apps/JavaScript/Chart/appclass.js +++ b/examples/apps/JavaScript/Chart/appclass.js @@ -1,351 +1,350 @@ -F2.Apps["com_openf2_examples_javascript_chart"] = (function(){ +F2.Apps["com_openf2_examples_javascript_chart"] = (function () { - var app = function (appConfig, appContent, root) { - this.symbol = "MSFT"; - this.appConfig = appConfig; - this.appContent = appContent; - this.ui = this.appConfig.ui; - this.root = root; - this.$root = $(root); - this.$app = $("#f2-1year-chart", this.$root); - //set configuration - this.config(); - }; + var app = function (appConfig, appContent, root) { + this.symbol = "MSFT"; + this.appConfig = appConfig; + this.appContent = appContent; + this.ui = this.appConfig.ui; + this.root = root; + this.$root = $(root); + this.$app = $("#f2-1year-chart", this.$root); + //set configuration + this.config(); + }; - app.prototype.config = function() { + app.prototype.config = function () { - var defaults = { - backgroundColor: '#fff', - lineColor: '#428bca', - lineWidth: 1.5, - gridColor: '#DDDDDD', - gridAltColor: '#F7F7F7', - fontColor: '#444444', - fontFamily: 'Arial, sans-serif', - fontSize: 12, - lineHeight: 1.2, - greenBar: '#2EA94F', - redBar: '#DB411C' - }, - styleImport = (this.appConfig.context && this.appConfig.context.style)?this.appConfig.context.style:{}; + var defaults = { + backgroundColor: '#fff', + lineColor: '#428bca', + lineWidth: 1.5, + gridColor: '#DDDDDD', + gridAltColor: '#F7F7F7', + fontColor: '#444444', + fontFamily: 'Arial, sans-serif', + fontSize: 12, + lineHeight: 1.2, + greenBar: '#2EA94F', + redBar: '#DB411C' + }, + styleImport = (this.appConfig.context && this.appConfig.context.style) ? this.appConfig.context.style : {}; - /** for example purposes*/ - console.group('Chart app'); - console.info('The chart app (com_openf2_examples_javascript_chart) has configuration options which can be overriden by using Context. Set a "style" property in the AppConfig\'s Context property. The current AppConfig is on the next line.'); - console.info(this.appConfig); - console.info('The chart\'s configuration parameters (defaults) are found in the following hash'); - console.info(defaults); - console.groupEnd(); + /** for example purposes*/ + console.group('Chart app'); + console.info('The chart app (com_openf2_examples_javascript_chart) has configuration options which can be overriden by using Context. Set a "style" property in the AppConfig\'s Context property. The current AppConfig is on the next line.'); + console.info(this.appConfig); + console.info('The chart\'s configuration parameters (defaults) are found in the following hash'); + console.info(defaults); + console.groupEnd(); - this.CHT_CONTAINER = 'f2-1year-chart'; - this.CHART_STYLES = $.extend({},defaults,styleImport); - }; + this.CHT_CONTAINER = 'f2-1year-chart'; + this.CHART_STYLES = $.extend({}, defaults, styleImport); + }; - app.prototype.redraw = function(data) { - this.hc = null; - this.symbol = data.symbol; - this.getData(); - }; + app.prototype.redraw = function (data) { + this.hc = null; + this.symbol = data.symbol; + this.getData(); + }; - app.prototype.init = function() { - - this.getData(); + app.prototype.init = function () { - //setup container symbol change listener to draw new chart. - F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(function(symbolData){ - this.redraw(symbolData); - },this) - ); - }; + this.getData(); - app.prototype.getData = function() { + //setup container symbol change listener to draw new chart. + F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(function (symbolData) { + this.redraw(symbolData); + }, this) + ); + }; - this.ui.showMask(this.$root,true); + app.prototype.getData = function () { - $.ajax({ - beforeSend:function () { - this.ui.setTitle('Loading chart...'); - }, - data: { - symbol: this.symbol, - duration: 365 // Fixed to one year - }, - url: 'http://dev.markitondemand.com/Api/Timeseries/jsonp', - dataType: 'jsonp', - context: this - - }).done(function(jqxhr,txtStatus){ - //Catch errors - if ( !jqxhr.Data || jqxhr.Message ) { - if ( typeof console == 'object' ) console.error('Error: ', jqxhr.Message); - this._chartError(jqxhr); - return; - } - this.HandleAPIData(jqxhr); + this.ui.showMask(this.$root, true); - }).fail(function(jqxhr,txtStatus){ - F2.log('Could not generate chart.', jqxhr); - this._chartError(jqxhr); - }); - }; + $.ajax({ + beforeSend: function () { + this.ui.setTitle('Loading chart...'); + }, + data: { + symbol: this.symbol, + duration: 365 // Fixed to one year + }, + url: 'http://dev.markitondemand.com/Api/Timeseries/jsonp', + dataType: 'jsonp', + context: this - app.prototype._chartError = function(jqxhr) { - F2.log("Price Chart Error", jqxhr); - this.ui.setTitle("Chart Error"); - this.$app.html("

    An error occurred loading price data for " +this.symbol+ ".

    "); - this.ui.hideMask(this.$root); - this.ui.updateHeight(); - }; + }).done(function (jqxhr, txtStatus) { + //Catch errors + if (!jqxhr.Data || jqxhr.Message) { + if (typeof console == 'object') console.error('Error: ', jqxhr.Message); + this._chartError(jqxhr); + return; + } + this.HandleAPIData(jqxhr); - + }).fail(function (jqxhr, txtStatus) { + F2.log('Could not generate chart.', jqxhr); + this._chartError(jqxhr); + }); + }; - // Parses API data to provide HighCharts-ready data series for close values, - // additionally deriving up/down month indicators. - // - app.prototype.HandleAPIData = function (json) { + app.prototype._chartError = function (jqxhr) { + F2.log("Price Chart Error", jqxhr); + this.ui.setTitle("Chart Error"); + this.$app.html("

    An error occurred loading price data for " + this.symbol + ".

    "); + this.ui.hideMask(this.$root); + this.ui.updateHeight(); + }; - $(this.CHT_CONTAINER).empty(); - // Set up vars for first data series - var apiDates = json.Data.SeriesDates, - apiValues = json.Data.Series.close.values, - closeSeriesData = [ ]; - - // Translate API JSON into a HighCharts-format data series - for ( var i = 0; i < apiDates.length; i++ ) { - var dat = new Date(apiDates[i]); - var dateIn = Date.UTC(dat.getFullYear(), dat.getMonth(), dat.getDate()); - var val = apiValues[i]; - closeSeriesData.push([dateIn,val]); - } + // Parses API data to provide HighCharts-ready data series for close values, + // additionally deriving up/down month indicators. + // + app.prototype.HandleAPIData = function (json) { - // Instantiate a new chart with base configuration options (everything but the data) - var hcChartObj = new Highcharts.Chart(this.getBaselineOptions()); - hcChartObj.series[0].setData(closeSeriesData, true); // Set close-values series data - //hcChartObj.setTitle({ text: ('One-year price movement for ' + json.Data.Name).toUpperCase() }); // Set title - hcChartObj.setTitle({ text:'' }); + $(this.CHT_CONTAINER).empty(); - this.ui.hideMask(this.$root); - this.ui.setTitle("One-Year Price Movement " + this.symbol); - - // No options setting is available for this, so force the price line to be rounded - $('.highcharts-series path:first', this.root).attr('stroke-linejoin', 'round').attr('stroke-linecap', 'round'); - - // Set up vars for up/down month data series - var currentMonthName, currentJSDate, currentJSUTCDate, currentVal, - upSeriesData = [ ], - downSeriesData = [ ]; - var dataRanges = hcChartObj.yAxis[0].getExtremes(); // Will need to reset to this later - minVal = dataRanges.min, // Will set red/green indicators to this value - apiValues = json.Data.Series.close.values, - apiDates = json.Data.SeriesDates, - firstMonthName = apiDates[0].substr(4, 3), // First! - prevMonthName = firstMonthName, - prevJSDate = new Date(prevMonthName + ' 1, ' + apiDates[0].substr(-4)), - prevJSUTCDate = Date.UTC(prevJSDate.getFullYear(), prevJSDate.getMonth(), prevJSDate.getDate()), - prevVal = apiValues[0]; - - // Now walk through all data points again (had to do it once before to get the ranges), - // looking for month boundaries and deciding if the previous month ended up or down over - // the preceding month's close - for ( var i = 1; i < apiDates.length; i++ ) { - currentMonthName = apiDates[i].substr(4, 3); - if ( currentMonthName != prevMonthName ) { // Into a new month in the data - currentVal = apiValues[i - 1]; // Last close in the preceding month - currentJSDate = new Date(currentMonthName + ' 1, ' + apiDates[i].substr(-4)); - currentJSUTCDate = Date.UTC(currentJSDate.getFullYear(), currentJSDate.getMonth(), currentJSDate.getDate()); - if ( prevMonthName != firstMonthName ) { // Skip the first month, it's incomplete - if ( currentVal >= prevVal ) { - upSeriesData.push( [ prevJSUTCDate, minVal ], [ currentJSUTCDate, minVal ] ); - downSeriesData.push( [ currentJSUTCDate, null ] ); - } - else { - downSeriesData.push( [ prevJSUTCDate, minVal ], [ currentJSUTCDate, minVal ] ); - upSeriesData.push( [ currentJSUTCDate, null ] ); - } - } - prevVal = currentVal; - prevMonthName = currentMonthName; - prevJSUTCDate = currentJSUTCDate; - } - } - // Add one last interval for the partial month-to-date - currentVal = apiValues[i - 1]; // Last close value in the data - currentJSDate = new Date(apiDates[i - 1]); - currentJSUTCDate = Date.UTC(currentJSDate.getFullYear(), currentJSDate.getMonth(), currentJSDate.getDate()); - if ( currentVal >= prevVal ) upSeriesData.push( [ prevJSUTCDate, minVal ], [ currentJSUTCDate, minVal ] ); - else downSeriesData.push( [ prevJSUTCDate, minVal ], [ currentJSUTCDate, minVal ] ); + // Set up vars for first data series + var apiDates = json.Data.SeriesDates, + apiValues = json.Data.Series.close.values, + closeSeriesData = []; - // Add the up month/down month data to the chart's series + // Translate API JSON into a HighCharts-format data series + for (var i = 0; i < apiDates.length; i++) { + var dat = new Date(apiDates[i]); + var dateIn = Date.UTC(dat.getFullYear(), dat.getMonth(), dat.getDate()); + var val = apiValues[i]; + closeSeriesData.push([dateIn, val]); + } + + // Instantiate a new chart with base configuration options (everything but the data) + var hcChartObj = new Highcharts.Chart(this.getBaselineOptions()); + hcChartObj.series[0].setData(closeSeriesData, true); // Set close-values series data + //hcChartObj.setTitle({ text: ('One-year price movement for ' + json.Data.Name).toUpperCase() }); // Set title + hcChartObj.setTitle({text: ''}); + + this.ui.hideMask(this.$root); + this.ui.setTitle("One-Year Price Movement " + this.symbol); + + // No options setting is available for this, so force the price line to be rounded + $('.highcharts-series path:first', this.root).attr('stroke-linejoin', 'round').attr('stroke-linecap', 'round'); + + // Set up vars for up/down month data series + var currentMonthName, currentJSDate, currentJSUTCDate, currentVal, + upSeriesData = [], + downSeriesData = []; + var dataRanges = hcChartObj.yAxis[0].getExtremes(); // Will need to reset to this later + minVal = dataRanges.min, // Will set red/green indicators to this value + apiValues = json.Data.Series.close.values, + apiDates = json.Data.SeriesDates, + firstMonthName = apiDates[0].substr(4, 3), // First! + prevMonthName = firstMonthName, + prevJSDate = new Date(prevMonthName + ' 1, ' + apiDates[0].substr(-4)), + prevJSUTCDate = Date.UTC(prevJSDate.getFullYear(), prevJSDate.getMonth(), prevJSDate.getDate()), + prevVal = apiValues[0]; + + // Now walk through all data points again (had to do it once before to get the ranges), + // looking for month boundaries and deciding if the previous month ended up or down over + // the preceding month's close + for (var i = 1; i < apiDates.length; i++) { + currentMonthName = apiDates[i].substr(4, 3); + if (currentMonthName != prevMonthName) { // Into a new month in the data + currentVal = apiValues[i - 1]; // Last close in the preceding month + currentJSDate = new Date(currentMonthName + ' 1, ' + apiDates[i].substr(-4)); + currentJSUTCDate = Date.UTC(currentJSDate.getFullYear(), currentJSDate.getMonth(), currentJSDate.getDate()); + if (prevMonthName != firstMonthName) { // Skip the first month, it's incomplete + if (currentVal >= prevVal) { + upSeriesData.push([prevJSUTCDate, minVal], [currentJSUTCDate, minVal]); + downSeriesData.push([currentJSUTCDate, null]); + } + else { + downSeriesData.push([prevJSUTCDate, minVal], [currentJSUTCDate, minVal]); + upSeriesData.push([currentJSUTCDate, null]); + } + } + prevVal = currentVal; + prevMonthName = currentMonthName; + prevJSUTCDate = currentJSUTCDate; + } + } + // Add one last interval for the partial month-to-date + currentVal = apiValues[i - 1]; // Last close value in the data + currentJSDate = new Date(apiDates[i - 1]); + currentJSUTCDate = Date.UTC(currentJSDate.getFullYear(), currentJSDate.getMonth(), currentJSDate.getDate()); + if (currentVal >= prevVal) upSeriesData.push([prevJSUTCDate, minVal], [currentJSUTCDate, minVal]); + else downSeriesData.push([prevJSUTCDate, minVal], [currentJSUTCDate, minVal]); + + // Add the up month/down month data to the chart's series hcChartObj.series[1].setData(upSeriesData, false); hcChartObj.series[2].setData(downSeriesData, false); - + hcChartObj.yAxis[0].setExtremes(dataRanges.dataMin, dataRanges.dataMax, true, false); - this.ui.updateHeight(); - }; + this.ui.updateHeight(); + }; - // Defines the HighCharts configuration options. - // - app.prototype.getBaselineOptions = function () { - return { - chart: { - borderColor: 'rgba(255, 255, 255, 0.0)', - borderRadius: 0, - defaultSeriesType: 'line', - renderTo: this.CHT_CONTAINER, - spacingBottom: 25, - spacingLeft: 1, - spacingRight: 1, - backgroundColor: this.CHART_STYLES.backgroundColor - }, - credits: { - enabled: false - }, - legend: { - enabled: false - }, - plotOptions: { - line: { - animation: false, - lineWidth: this.CHART_STYLES.lineWidth - }, - series: { - marker: { - enabled: false - }, - shadow: false, - states: { - hover: { - enabled: false - } - } - } - }, - series: [{ - color: this.CHART_STYLES.lineColor, - name: 'Close price' - }, - { - color: this.CHART_STYLES.greenBar, - lineWidth: 6, - name: 'Up months' - }, - { - color: this.CHART_STYLES.redBar, - lineWidth: 6, - name: 'Down months' - }], - title: { - align: 'left', - style: { - color: '#666', - fontFamily: this.CHART_STYLES.fontFamily, - fontSize: 14, - fontWeight: 'bold', - lineHeight: this.CHART_STYLES.lineHeight - } - }, - tooltip: { - borderRadius: 1, - crosshairs: true, - formatter: function () { - if ( this.series.name == 'Close price' ) { - return '
    ' + Highcharts.dateFormat('%b %e %Y', this.x) + ': $' + Highcharts.numberFormat(this.y, 2) + '
    '; - } - else return false; - }, - style: { - color: this.CHART_STYLES.fontColor, - fontFamily: this.CHART_STYLES.fontFamily, - fontSize: this.CHART_STYLES.fontSize, - lineHeight: this.CHART_STYLES.lineHeight, - padding: this.CHART_STYLES.fontSize - } - }, - xAxis: [{ // Bottom datetime axis (short intervals) - dateTimeLabelFormats: { - minute: '%l:%M%P', - hour: '%l%P', - day: '%a', - day: '%b %e', - week: '%b %e', - month: '%b', - year: '%Y' - }, - gridLineDashStyle: 'shortdot', - gridLineColor: this.CHART_STYLES.gridAltColor, - gridLineWidth: 1, - labels: { - align: 'left', - style: { - color: this.CHART_STYLES.fontColor, - fontFamily: this.CHART_STYLES.fontFamily, - fontSize: this.CHART_STYLES.fontSize - }, - x: (this.CHART_STYLES.fontSize / 2), - y: (this.CHART_STYLES.fontSize * this.CHART_STYLES.lineHeight * 1.5) - }, - lineColor: this.CHART_STYLES.gridColor, - tickColor: this.CHART_STYLES.gridColor, - tickInterval: (30 * 24 * 3600 * 1000), // One month - tickLength: (this.CHART_STYLES.fontSize * this.CHART_STYLES.lineHeight * 1.5), - type: 'datetime' - },{ // Top datetime axis (longer intervals) - dateTimeLabelFormats: { - day: '%a', // Default - week: '%a', - month: '%b %Y', - year: '%Y' - }, - gridLineWidth: 1, - gridLineColor: this.CHART_STYLES.gridColor, - labels: { - align: 'left', - style: { - color: this.CHART_STYLES.fontColor, - fontFamily: this.CHART_STYLES.fontFamily, - fontSize: this.CHART_STYLES.fontSize - }, - x: (this.CHART_STYLES.fontSize / 2) - }, - lineColor: this.CHART_STYLES.gridColor, - linkedTo: 0, - opposite: true, - tickColor: this.CHART_STYLES.gridColor, - tickInterval: (365 * 24 * 3600 * 1000), // One year - tickLength: (this.CHART_STYLES.fontSize * this.CHART_STYLES.lineHeight), - type: 'datetime' - }], - yAxis: [{ - gridLineColor: this.CHART_STYLES.gridColor, - labels: { - align: 'left', - formatter: function () { - return Highcharts.numberFormat(this.value, 2); - }, - style: { - color: this.CHART_STYLES.fontColor, - fontFamily: this.CHART_STYLES.fontFamily, - fontSize: this.CHART_STYLES.fontSize - }, - x: 0, - y: (this.CHART_STYLES.fontSize + 3) - }, - maxPadding: 0, - minPadding: 0, - opposite: true, - showFirstLabel: false, - tickColor: this.CHART_STYLES.gridColor, - tickLength: 100, // Cropped at left of chart - tickWidth: 1, - title: { - text: '' - } - }] - }; - }; + // Defines the HighCharts configuration options. + // + app.prototype.getBaselineOptions = function () { + return { + chart: { + borderColor: 'rgba(255, 255, 255, 0.0)', + borderRadius: 0, + defaultSeriesType: 'line', + renderTo: this.CHT_CONTAINER, + spacingBottom: 25, + spacingLeft: 1, + spacingRight: 1, + backgroundColor: this.CHART_STYLES.backgroundColor + }, + credits: { + enabled: false + }, + legend: { + enabled: false + }, + plotOptions: { + line: { + animation: false, + lineWidth: this.CHART_STYLES.lineWidth + }, + series: { + marker: { + enabled: false + }, + shadow: false, + states: { + hover: { + enabled: false + } + } + } + }, + series: [{ + color: this.CHART_STYLES.lineColor, + name: 'Close price' + }, + { + color: this.CHART_STYLES.greenBar, + lineWidth: 6, + name: 'Up months' + }, + { + color: this.CHART_STYLES.redBar, + lineWidth: 6, + name: 'Down months' + }], + title: { + align: 'left', + style: { + color: '#666', + fontFamily: this.CHART_STYLES.fontFamily, + fontSize: 14, + fontWeight: 'bold', + lineHeight: this.CHART_STYLES.lineHeight + } + }, + tooltip: { + borderRadius: 1, + crosshairs: true, + formatter: function () { + if (this.series.name == 'Close price') { + return '
    ' + Highcharts.dateFormat('%b %e %Y', this.x) + ': $' + Highcharts.numberFormat(this.y, 2) + '
    '; + } + else return false; + }, + style: { + color: this.CHART_STYLES.fontColor, + fontFamily: this.CHART_STYLES.fontFamily, + fontSize: this.CHART_STYLES.fontSize, + lineHeight: this.CHART_STYLES.lineHeight, + padding: this.CHART_STYLES.fontSize + } + }, + xAxis: [{ // Bottom datetime axis (short intervals) + dateTimeLabelFormats: { + minute: '%l:%M%P', + hour: '%l%P', + day: '%a', + day: '%b %e', + week: '%b %e', + month: '%b', + year: '%Y' + }, + gridLineDashStyle: 'shortdot', + gridLineColor: this.CHART_STYLES.gridAltColor, + gridLineWidth: 1, + labels: { + align: 'left', + style: { + color: this.CHART_STYLES.fontColor, + fontFamily: this.CHART_STYLES.fontFamily, + fontSize: this.CHART_STYLES.fontSize + }, + x: (this.CHART_STYLES.fontSize / 2), + y: (this.CHART_STYLES.fontSize * this.CHART_STYLES.lineHeight * 1.5) + }, + lineColor: this.CHART_STYLES.gridColor, + tickColor: this.CHART_STYLES.gridColor, + tickInterval: (30 * 24 * 3600 * 1000), // One month + tickLength: (this.CHART_STYLES.fontSize * this.CHART_STYLES.lineHeight * 1.5), + type: 'datetime' + }, { // Top datetime axis (longer intervals) + dateTimeLabelFormats: { + day: '%a', // Default + week: '%a', + month: '%b %Y', + year: '%Y' + }, + gridLineWidth: 1, + gridLineColor: this.CHART_STYLES.gridColor, + labels: { + align: 'left', + style: { + color: this.CHART_STYLES.fontColor, + fontFamily: this.CHART_STYLES.fontFamily, + fontSize: this.CHART_STYLES.fontSize + }, + x: (this.CHART_STYLES.fontSize / 2) + }, + lineColor: this.CHART_STYLES.gridColor, + linkedTo: 0, + opposite: true, + tickColor: this.CHART_STYLES.gridColor, + tickInterval: (365 * 24 * 3600 * 1000), // One year + tickLength: (this.CHART_STYLES.fontSize * this.CHART_STYLES.lineHeight), + type: 'datetime' + }], + yAxis: [{ + gridLineColor: this.CHART_STYLES.gridColor, + labels: { + align: 'left', + formatter: function () { + return Highcharts.numberFormat(this.value, 2); + }, + style: { + color: this.CHART_STYLES.fontColor, + fontFamily: this.CHART_STYLES.fontFamily, + fontSize: this.CHART_STYLES.fontSize + }, + x: 0, + y: (this.CHART_STYLES.fontSize + 3) + }, + maxPadding: 0, + minPadding: 0, + opposite: true, + showFirstLabel: false, + tickColor: this.CHART_STYLES.gridColor, + tickLength: 100, // Cropped at left of chart + tickWidth: 1, + title: { + text: '' + } + }] + }; + }; - return app; + return app; })(); \ No newline at end of file diff --git a/examples/apps/JavaScript/Chart/manifest.js b/examples/apps/JavaScript/Chart/manifest.js index 214b3754..62f2a3d9 100644 --- a/examples/apps/JavaScript/Chart/manifest.js +++ b/examples/apps/JavaScript/Chart/manifest.js @@ -1,18 +1,18 @@ F2_jsonpCallback_com_openf2_examples_javascript_chart({ - "scripts":[ - "http://code.highcharts.com/highcharts.js", - "../apps/JavaScript/Chart/appclass.js" - ], - "styles":[ - "../apps/JavaScript/Chart/app.css" - ], - "apps":[{ - "html":[ - '
    ', - '
    ', - '
    ', - '
    ', - '
    ' - ].join("") - }] + "scripts": [ + "http://code.highcharts.com/highcharts.js", + "../apps/JavaScript/Chart/appclass.js" + ], + "styles": [ + "../apps/JavaScript/Chart/app.css" + ], + "apps": [{ + "html": [ + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join("") + }] }) \ No newline at end of file diff --git a/examples/apps/JavaScript/CompareTool/appclass.js b/examples/apps/JavaScript/CompareTool/appclass.js index bceaaec8..4457b8c1 100644 --- a/examples/apps/JavaScript/CompareTool/appclass.js +++ b/examples/apps/JavaScript/CompareTool/appclass.js @@ -1,20 +1,20 @@ -F2.Apps["com_openf2_examples_javascript_compareTool"] = (function() { +F2.Apps["com_openf2_examples_javascript_compareTool"] = (function () { - var App_Class = function(appConfig, appContent, root) { - this.appConfig = appConfig; - this.appContent = appContent; - this.ui = appConfig.ui; - this.$root = $(root); - }; + var App_Class = function (appConfig, appContent, root) { + this.appConfig = appConfig; + this.appContent = appContent; + this.ui = appConfig.ui; + this.$root = $(root); + }; - App_Class.prototype.init = function() { - this.ui.setTitle("Compare Tool (AngularJS)"); - this.ui.updateHeight(); + App_Class.prototype.init = function () { + this.ui.setTitle("Compare Tool (AngularJS)"); + this.ui.updateHeight(); - // Manually bootstrap angular - angular.bootstrap(this.$root, ["compareTool"]); - }; + // Manually bootstrap angular + angular.bootstrap(this.$root, ["compareTool"]); + }; - return App_Class; + return App_Class; })(); \ No newline at end of file diff --git a/examples/apps/JavaScript/CompareTool/css/compare.css b/examples/apps/JavaScript/CompareTool/css/compare.css index 5f53e7be..e8f48ea6 100644 --- a/examples/apps/JavaScript/CompareTool/css/compare.css +++ b/examples/apps/JavaScript/CompareTool/css/compare.css @@ -1,58 +1,58 @@ .compare form { - margin: 0; + margin: 0; } .compare table { - table-layout: fixed; - margin-bottom: 10px; -} - - .compare th, - .compare td { - text-align: right; - } - - .compare th { - font-size: 14px; - font-weight: bold; - width: 17%; - } - - .compare th:first-child { - width: 15% - } - - .compare th span { - display: block; - } - - .compare th a { - font-size: 11px; - } - - .compare th input[type=text] { - font-size: 12px; - margin-bottom: 7px; - width: 85%; - } - - .compare th input[type=submit] { - cursor: pointer; - font-size: 12px; - line-height: 18px; - } - - .compare td { - border: 1px solid #ccc; - } - - .compare td:first-child { - font-weight: bold; - text-align: left; - } + table-layout: fixed; + margin-bottom: 10px; +} + +.compare th, +.compare td { + text-align: right; +} + +.compare th { + font-size: 14px; + font-weight: bold; + width: 17%; +} + +.compare th:first-child { + width: 15% +} + +.compare th span { + display: block; +} + +.compare th a { + font-size: 11px; +} + +.compare th input[type=text] { + font-size: 12px; + margin-bottom: 7px; + width: 85%; +} + +.compare th input[type=submit] { + cursor: pointer; + font-size: 12px; + line-height: 18px; +} + +.compare td { + border: 1px solid #ccc; +} + +.compare td:first-child { + font-weight: bold; + text-align: left; +} .compare input[type=text].loading { - background-image: url(../img/ajax_spinner.gif); - background-position: 107px; - background-repeat: no-repeat; + background-image: url(../img/ajax_spinner.gif); + background-position: 107px; + background-repeat: no-repeat; } \ No newline at end of file diff --git a/examples/apps/JavaScript/CompareTool/js/compare.js b/examples/apps/JavaScript/CompareTool/js/compare.js index b92adf3b..f71afdba 100644 --- a/examples/apps/JavaScript/CompareTool/js/compare.js +++ b/examples/apps/JavaScript/CompareTool/js/compare.js @@ -1,161 +1,166 @@ -(function() { - - // Filters - // -------------------- - - angular.module("filters", []). - // Add a range of indexes to a collection - // e.g., ng-repeat="indexes in [] | range:10" - filter("range", function() { - return function(input, num) { - for (var i = 0; i < num; i++) { - input.push(i); - } - return input; - }; - }); - - // Services - // -------------------- - - angular.module("services", ["ngResource"]). - // Retrieve quote data for a symbol - service("companyService", function($resource) { - var defaultCallbacks = { success: function() {}, error: function() {}, complete: function() {} }; - - return { - getBySymbol: function(symbol, cbs) { - cbs = angular.extend({}, defaultCallbacks, cbs); - - var query = $resource( - "http://dev.markitondemand.com/Api/Quote/:action", - { action: "jsonp", callback: "JSON_CALLBACK", symbol: symbol }, - { get: { method: "jsonp" } } - ); - - query.get( - function(response) { - if (response.Data) { - cbs.success(response.Data); - } - else { - cbs.error("Invalid symbol"); - } - - cbs.complete(); - }, - function() { - cbs.error(); - cbs.complete(); - } - ); - } - }; - }); - - // Controller - // -------------------- - - var app = angular.module("compareTool", ["filters", "services"]); - - // Compare Controller - app.controller("CompareCtrl", function($scope, $filter, companyService) { - - // The max number of companies the user can compare - var maxSymbols = 5; - - // Define what will be displayed - $scope.dataPoints = [ - { label: "Last Price", field: "LastPrice", format: "currency" }, - { label: "High", field: "High", format: "currency" }, - { label: "Low", field: "Low", format: "currency" }, - { label: "Open", field: "Open", format: "currency" }, - { label: "Market Cap", field: "MarketCap", format: "number" }, - { label: "Volume", field: "Volume", format: "number" }, - { label: "Change", field: "Change", format: "currency" }, - { label: "Change %", field: "ChangePercent", format: "percent:2" }, - { label: "Change YTD", field: "ChangeYTD", format: "currency" }, - { label: "Change % YTD", field: "ChangePercentYTD", format: "percent:2" }, - { label: "Data Refreshed On", field: "Timestamp", format: "date" } - ]; - - // List of symbols we're comparing - // Sample: http://dev.markitondemand.com/Api/Quote/jsonp?symbol=aapl - $scope.issues = []; - - // Get the number of empty compare slots - $scope.numRemaining = function() { - return maxSymbols - $scope.issues.length; - }; - - // Lookup the specified company - $scope.addCompany = function(ticker) { - if ($scope.issues.length < maxSymbols) { - var self = this; - - // Use THIS instead of $scope, because we're actually in the scope - // of the clicked dom element - self.isLoading = true; - - // Grab the symbol data from the service - companyService.getBySymbol(ticker, { - success: function(data) { - $scope.issues.push(data); - self.searchSymbol = ""; - }, - error: function(msg) { - msg = msg || "Sorry, that didn't work for some reason"; - alert(msg); - }, - complete: function() { - self.isLoading = false; - } - }); - } - else { - alert("You're already comparing the maximum number of companies"); - } - }; - - // Pull the company out of comparison - $scope.removeCompany = function(ticker) { - // Remove the symbol - for (var i = 0; i < $scope.issues.length; i++) { - if ($scope.issues[i].Symbol === ticker) { - $scope.issues.splice(i, 1); - break; - } - } - }; - - // Multi-purpose format func - $scope.format = function(value, type) { - var out = value; - - if (type) { - var params = type.split(":"); - type = params[0]; - - switch (type) { - case "percent": - out = value.toFixed(params[1] || 0) + "%"; - break; - case "number": - out = value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); - break; - case "date": - out = moment(value).format("M/DD/YYYY h:mm:ss A"); - break; - default: - // Use the default angular filter - out = $filter(type)(value); - break; - } - } - - return out; - }; - - }); +(function () { + + // Filters + // -------------------- + + angular.module("filters", []). + // Add a range of indexes to a collection + // e.g., ng-repeat="indexes in [] | range:10" + filter("range", function () { + return function (input, num) { + for (var i = 0; i < num; i++) { + input.push(i); + } + return input; + }; + }); + + // Services + // -------------------- + + angular.module("services", ["ngResource"]). + // Retrieve quote data for a symbol + service("companyService", function ($resource) { + var defaultCallbacks = { + success: function () { + }, error: function () { + }, complete: function () { + } + }; + + return { + getBySymbol: function (symbol, cbs) { + cbs = angular.extend({}, defaultCallbacks, cbs); + + var query = $resource( + "http://dev.markitondemand.com/Api/Quote/:action", + {action: "jsonp", callback: "JSON_CALLBACK", symbol: symbol}, + {get: {method: "jsonp"}} + ); + + query.get( + function (response) { + if (response.Data) { + cbs.success(response.Data); + } + else { + cbs.error("Invalid symbol"); + } + + cbs.complete(); + }, + function () { + cbs.error(); + cbs.complete(); + } + ); + } + }; + }); + + // Controller + // -------------------- + + var app = angular.module("compareTool", ["filters", "services"]); + + // Compare Controller + app.controller("CompareCtrl", function ($scope, $filter, companyService) { + + // The max number of companies the user can compare + var maxSymbols = 5; + + // Define what will be displayed + $scope.dataPoints = [ + {label: "Last Price", field: "LastPrice", format: "currency"}, + {label: "High", field: "High", format: "currency"}, + {label: "Low", field: "Low", format: "currency"}, + {label: "Open", field: "Open", format: "currency"}, + {label: "Market Cap", field: "MarketCap", format: "number"}, + {label: "Volume", field: "Volume", format: "number"}, + {label: "Change", field: "Change", format: "currency"}, + {label: "Change %", field: "ChangePercent", format: "percent:2"}, + {label: "Change YTD", field: "ChangeYTD", format: "currency"}, + {label: "Change % YTD", field: "ChangePercentYTD", format: "percent:2"}, + {label: "Data Refreshed On", field: "Timestamp", format: "date"} + ]; + + // List of symbols we're comparing + // Sample: http://dev.markitondemand.com/Api/Quote/jsonp?symbol=aapl + $scope.issues = []; + + // Get the number of empty compare slots + $scope.numRemaining = function () { + return maxSymbols - $scope.issues.length; + }; + + // Lookup the specified company + $scope.addCompany = function (ticker) { + if ($scope.issues.length < maxSymbols) { + var self = this; + + // Use THIS instead of $scope, because we're actually in the scope + // of the clicked dom element + self.isLoading = true; + + // Grab the symbol data from the service + companyService.getBySymbol(ticker, { + success: function (data) { + $scope.issues.push(data); + self.searchSymbol = ""; + }, + error: function (msg) { + msg = msg || "Sorry, that didn't work for some reason"; + alert(msg); + }, + complete: function () { + self.isLoading = false; + } + }); + } + else { + alert("You're already comparing the maximum number of companies"); + } + }; + + // Pull the company out of comparison + $scope.removeCompany = function (ticker) { + // Remove the symbol + for (var i = 0; i < $scope.issues.length; i++) { + if ($scope.issues[i].Symbol === ticker) { + $scope.issues.splice(i, 1); + break; + } + } + }; + + // Multi-purpose format func + $scope.format = function (value, type) { + var out = value; + + if (type) { + var params = type.split(":"); + type = params[0]; + + switch (type) { + case "percent": + out = value.toFixed(params[1] || 0) + "%"; + break; + case "number": + out = value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + break; + case "date": + out = moment(value).format("M/DD/YYYY h:mm:ss A"); + break; + default: + // Use the default angular filter + out = $filter(type)(value); + break; + } + } + + return out; + }; + + }); })(); \ No newline at end of file diff --git a/examples/apps/JavaScript/CompareTool/manifest.js b/examples/apps/JavaScript/CompareTool/manifest.js index b4ab9807..64b08656 100644 --- a/examples/apps/JavaScript/CompareTool/manifest.js +++ b/examples/apps/JavaScript/CompareTool/manifest.js @@ -1,52 +1,52 @@ F2_jsonpCallback_com_openf2_examples_javascript_compareTool({ - "scripts":[ - "../apps/JavaScript/CompareTool/js/angular.min.js", - "../apps/JavaScript/CompareTool/js/angular-resource.min.js", - "../apps/JavaScript/CompareTool/js/moment.min.js", - "../apps/JavaScript/CompareTool/js/compare.js", - "../apps/JavaScript/CompareTool/appclass.js" - ], - "styles":[ - "../apps/JavaScript/CompareTool/css/compare.css" - ], - "apps":[ - { - "html": [ - '
    ', - '

    ', - 'Examples: ', - '', - '{{symbol | uppercase}}{{$last && " " || ", "}}', - '', - '

    ', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '
    ', - '{{issue.Name}}', - '{{issue.Symbol}}', - 'Remove', - '', - '
    ', - '', - '', - '
    ', - '
    {{point.label}}{{format(issue[point.field], point.format)}}
    ', - '

    Quotes provided by http://dev.markitondemand.com/

    ', - '
    ' - ].join('') - } - ] + "scripts": [ + "../apps/JavaScript/CompareTool/js/angular.min.js", + "../apps/JavaScript/CompareTool/js/angular-resource.min.js", + "../apps/JavaScript/CompareTool/js/moment.min.js", + "../apps/JavaScript/CompareTool/js/compare.js", + "../apps/JavaScript/CompareTool/appclass.js" + ], + "styles": [ + "../apps/JavaScript/CompareTool/css/compare.css" + ], + "apps": [ + { + "html": [ + '
    ', + '

    ', + 'Examples: ', + '', + '{{symbol | uppercase}}{{$last && " " || ", "}}', + '', + '

    ', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '
    ', + '{{issue.Name}}', + '{{issue.Symbol}}', + 'Remove', + '', + '
    ', + '', + '', + '
    ', + '
    {{point.label}}{{format(issue[point.field], point.format)}}
    ', + '

    Quotes provided by http://dev.markitondemand.com/

    ', + '
    ' + ].join('') + } + ] }); \ No newline at end of file diff --git a/examples/apps/JavaScript/HelloWorld/appclass.js b/examples/apps/JavaScript/HelloWorld/appclass.js index 0c9ac406..edebdac5 100644 --- a/examples/apps/JavaScript/HelloWorld/appclass.js +++ b/examples/apps/JavaScript/HelloWorld/appclass.js @@ -1,62 +1,62 @@ -F2.Apps["com_openf2_examples_javascript_helloworld"] = (function() { - - var App_Class = function (appConfig, appContent, root) { - this.appConfig = appConfig; - this.appContent = appContent; - this.ui = appConfig.ui; - this.$root = $(root); - }; - - App_Class.prototype.init = function () { - - this.$root - .on('click', 'a.testAlert', $.proxy(function() { - this.ui.Modals.alert("Hello World!", function() { - F2.log('callback fired!'); - }); - }, this)) - .on('click', 'a.testConfirm', $.proxy(function() { - this.ui.Modals.confirm( - "Hello World!", - function() { - F2.log('ok callback fired!'); - }, - function() { - F2.log('cancel callback fired!'); - } - ); - }, this)) - ; - - this.ui.setTitle((this.appConfig.isSecure ? 'Secure' : '') + this.appConfig.name); - this.ui.updateHeight(); - - // bind symbol change event - F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(this._handleSymbolChange, this)); - }; - - App_Class.prototype._handleSymbolChange = function (data) { - - var symbolAlert = $("div.symbolAlert", this.$root); - symbolAlert = (symbolAlert.length) - ? symbolAlert - : this._renderSymbolAlert(); - - $("span:first", symbolAlert).text("The symbol has been changed to " + data.symbol); - - this.ui.updateHeight(); - }; - - App_Class.prototype._renderSymbolAlert = function() { - - return $([ - '
    ', - '', - '', - '
    ' - ].join('')) - .prependTo($("." + F2.Constants.Css.APP_CONTAINER,this.$root)); - }; - - return App_Class; +F2.Apps["com_openf2_examples_javascript_helloworld"] = (function () { + + var App_Class = function (appConfig, appContent, root) { + this.appConfig = appConfig; + this.appContent = appContent; + this.ui = appConfig.ui; + this.$root = $(root); + }; + + App_Class.prototype.init = function () { + + this.$root + .on('click', 'a.testAlert', $.proxy(function () { + this.ui.Modals.alert("Hello World!", function () { + F2.log('callback fired!'); + }); + }, this)) + .on('click', 'a.testConfirm', $.proxy(function () { + this.ui.Modals.confirm( + "Hello World!", + function () { + F2.log('ok callback fired!'); + }, + function () { + F2.log('cancel callback fired!'); + } + ); + }, this)) + ; + + this.ui.setTitle((this.appConfig.isSecure ? 'Secure' : '') + this.appConfig.name); + this.ui.updateHeight(); + + // bind symbol change event + F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(this._handleSymbolChange, this)); + }; + + App_Class.prototype._handleSymbolChange = function (data) { + + var symbolAlert = $("div.symbolAlert", this.$root); + symbolAlert = (symbolAlert.length) + ? symbolAlert + : this._renderSymbolAlert(); + + $("span:first", symbolAlert).text("The symbol has been changed to " + data.symbol); + + this.ui.updateHeight(); + }; + + App_Class.prototype._renderSymbolAlert = function () { + + return $([ + '
    ', + '', + '', + '
    ' + ].join('')) + .prependTo($("." + F2.Constants.Css.APP_CONTAINER, this.$root)); + }; + + return App_Class; })(); \ No newline at end of file diff --git a/examples/apps/JavaScript/HelloWorld/manifest.js b/examples/apps/JavaScript/HelloWorld/manifest.js index 042e406c..28cc2d69 100644 --- a/examples/apps/JavaScript/HelloWorld/manifest.js +++ b/examples/apps/JavaScript/HelloWorld/manifest.js @@ -1,19 +1,19 @@ F2_jsonpCallback_com_openf2_examples_javascript_helloworld({ - "scripts":[ - "../apps/JavaScript/HelloWorld/appclass.js" - ], - "styles":[], - "apps":[ - { - "html":[ - '
    ', - '
    ', - '

    Hello World! Test modals:

    ', - 'Alert Modal ', - 'Confirm Modal', - '
    ', - '
    ' - ].join("") - } - ] + "scripts": [ + "../apps/JavaScript/HelloWorld/appclass.js" + ], + "styles": [], + "apps": [ + { + "html": [ + '
    ', + '
    ', + '

    Hello World! Test modals:

    ', + 'Alert Modal ', + 'Confirm Modal', + '
    ', + '
    ' + ].join("") + } + ] }) \ No newline at end of file diff --git a/examples/apps/JavaScript/Quote/appclass.js b/examples/apps/JavaScript/Quote/appclass.js index 3d0eef27..d2a4c3ae 100644 --- a/examples/apps/JavaScript/Quote/appclass.js +++ b/examples/apps/JavaScript/Quote/appclass.js @@ -202,7 +202,7 @@ F2.Apps['com_openf2_examples_javascript_quote'] = function (appConfig, appConten options.magnitudeType = options.magnitudeType || 'shortcap'; options.suffix = _magnitudes[options.magnitudeType][c]; } - + val = raw.toFixed(options.precision); val = options.prefix + val + options.suffix; @@ -256,7 +256,7 @@ F2.Apps['com_openf2_examples_javascript_quote'] = function (appConfig, appConten $(this).closest('tr').addClass('hide'); } - }); + }); // bind save settings $root.on("click", "button.save", _saveSettings); diff --git a/examples/apps/JavaScript/Watchlist/appclass.js b/examples/apps/JavaScript/Watchlist/appclass.js index aa88a391..205b555d 100644 --- a/examples/apps/JavaScript/Watchlist/appclass.js +++ b/examples/apps/JavaScript/Watchlist/appclass.js @@ -1,402 +1,402 @@ F2.Apps['com_openf2_examples_javascript_watchlist'] = (function (appConfig, appContent, root) { - (function(){ - //http://javascript.crockford.com/remedial.html - String.prototype.supplant = function(o) { - return this.replace(/{([^{}]*)}/g, - function(a, b) { - var r = o[b]; - return typeof r === 'string' || typeof r === 'number' ? r : a; - } - ); - }; - })(); - - var App = function(appConfig, appContent, root) { - this.appConfig = appConfig; - this.appContent = appContent; - this.root = root; - this.$root = $(root); - this.$settings = $('form[data-f2-view="settings"]', this.$root); - this.ui = this.appConfig.ui; - this.settings = { - allowExternalAdd: true - }; + (function () { + //http://javascript.crockford.com/remedial.html + String.prototype.supplant = function (o) { + return this.replace(/{([^{}]*)}/g, + function (a, b) { + var r = o[b]; + return typeof r === 'string' || typeof r === 'number' ? r : a; + } + ); + }; + })(); + + var App = function (appConfig, appContent, root) { + this.appConfig = appConfig; + this.appContent = appContent; + this.root = root; + this.$root = $(root); + this.$settings = $('form[data-f2-view="settings"]', this.$root); + this.ui = this.appConfig.ui; + this.settings = { + allowExternalAdd: true + }; } - App.prototype.init = function() { - this.ui.showMask(this.root); - this.initLocalStorage(); - this.getData(); + App.prototype.init = function () { + this.ui.showMask(this.root); + this.initLocalStorage(); + this.getData(); this.initEvents(); } - App.prototype.DEFAULT_SYMBOLS = ["BA","BAC","GE","GS","INTC","CSCO"]; + App.prototype.DEFAULT_SYMBOLS = ["BA", "BAC", "GE", "GS", "INTC", "CSCO"]; App.prototype.COOKIE_NAME = "F2_Examples_Watchlist"; App.prototype.ROW = ["", - "", - "{symbol}", - "", - "{price}", - "{change} ({changePct})", - "{volume}", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "
    BidAskMkt CapLast Trade
    {bid}{ask}{cap}{asOfDate} {asOf}
    ", - "", - "" - ].join(""); - - App.prototype.data = []; - - App.prototype.initEvents = function(){ - - //remove sym - this.$root.on("click", "a[data-remove]", $.proxy(function(e){ - e.preventDefault(); - this.deleteSymbol($(e.currentTarget).attr("data-remove")); - }, this)); - - //add sym - this.$root.on("click", "button.add", $.proxy(function(e){ - this.addSymbol($("input[name='lookup']", this.$root).val()); - }, this)); - - //expand row - this.$root.on("click", "tr[data-row]", $.proxy(function(e){ - var $this = $(e.currentTarget); - $this.next().toggle(); - }, this)); - - //change container context - this.$root.on("click", "a[data-context]", $.proxy(function(e){ - e.preventDefault(); - F2.Events.emit( - F2.Constants.Events.APP_SYMBOL_CHANGE, { - symbol: $(e.currentTarget).attr("data-context"), - name: $(e.currentTarget).attr("data-context-name") - } - ); - }, this)); - - //listen for this event from other apps who may send symbols - if (this.settings.allowExternalAdd){ - F2.Events.on("F2_Examples_Watchlist_Add", $.proxy(function(data){ - var symbolAlert = $("div.symbolAlert", this.$root); - symbolAlert = (symbolAlert.length) - ? symbolAlert - : this._renderSymbolAlert(); - - $("span:first", symbolAlert).text(data.symbol + " has been added."); - - this.addSymbol(data.symbol); - },this)); - } - - // bind save settings - this.$root.on("click", "button.save", $.proxy(function(){ - this._saveSettings(); - },this)); - - this.ui.Views.change($.proxy(function(view) { - if (view === F2.Constants.Views.SETTINGS) { - this._populateSettings(); - } - },this)); - } - - App.prototype._saveSettings = function(){ - this.settings.allowExternalAdd = $('input[name=allowExternalAdd]', this.$settings).is(':checked'); - this.ui.Views.change(F2.Constants.Views.HOME); - } - - App.prototype._populateSettings = function(){ - $('input[name=allowExternalAdd]', this.$settings).attr('checked', this.settings.alltableswithkeys); - } - - App.prototype.getSymbols = function(){ - return this._retrieveStoredSymbols(); - } - - App.prototype.setSymbols = function(syms){ - this._storeSymbols(syms); - } - - App.prototype.addSymbol = function(sym){ - if (sym){ - this.ui.showMask(this.root); - var s = this.getSymbols(); - s.push(sym.toUpperCase()); - this.setSymbols(s); - - $("input[name='lookup']", this.$root).val("").focus(); - this.getData(); - } else { - this.ui.Modals.alert("Please enter a symbol."); - } - } - - App.prototype.deleteSymbol = function(sym){ - this.ui.showMask(this.root); - - var curr = this.getSymbols(), updated = []; - $.each(curr,function(idx,item){ - if (sym != item){ - updated.push(item); - } - }); - - if (!updated.length) { - this.ui.Modals.alert("You have deleted all the symbols in your watchlist. For the purposes of this example app, the default symbols have been re-added to your list.") - updated = this.DEFAULT_SYMBOLS; - } - - this.setSymbols(updated); - - this.data = []; - this.getData(); - } - - App.prototype._supportsLocalStorage = function(){ - return (typeof(Storage) !== "undefined"); - } - - App.prototype.initLocalStorage = function(){ - if(this._supportsLocalStorage()){ - - if (localStorage.F2_Examples_Watchlist == undefined || localStorage.F2_Examples_Watchlist == "" || !localStorage.F2_Examples_Watchlist){ - localStorage.F2_Examples_Watchlist = this.DEFAULT_SYMBOLS.join(","); - } - - } else { - if (!$.cookie(this.COOKIE_NAME) || $.cookie(this.COOKIE_NAME) == undefined || $.cookie(this.COOKIE_NAME) == ""){ - $.cookie(this.COOKIE_NAME, this.DEFAULT_SYMBOLS.join(","), { expires: 10 }); - } - } - - } - - App.prototype._storeSymbols = function(syms){ - - if(this._supportsLocalStorage()){ - localStorage.F2_Examples_Watchlist = syms.join(","); - } else { - $.cookie(this.COOKIE_NAME, syms.join(","), { expires: 10 }); - } - } - - App.prototype._retrieveStoredSymbols = function(){ - if(this._supportsLocalStorage()){ - return localStorage.F2_Examples_Watchlist.split(",") || []; - } - else { - return $.cookie(this.COOKIE_NAME).split(",") || []; - } - } - - App.prototype.drawSymbolList = function(){ - - var table = []; - table.push( - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '' - ); - - if (this.data.length < 1){ - table.push('') - } else { - $.each(this.data, $.proxy(function(idx,item){ - - item = item || {}; - - var quoteData = { - name: item.Name, - symbol: item.Symbol, - price: AppFormat.lastPrice(item.LastTradePriceOnly), - change: AppFormat.addColor(item.Change), - changePct: AppFormat.addColor(item.ChangeinPercent), - volume: AppFormat.getMagnitude(1,item.Volume,"shortcap"), - asOf: item.LastTradeTime, - asOfDate: item.LastTradeDate, - bid: AppFormat.lastPrice(item.BidRealtime), - ask: AppFormat.lastPrice(item.AskRealtime), - cap: item.MarketCapitalization - }; - - table.push(this.ROW.supplant(quoteData)); - - },this)); - } - - table.push( - '', - '
    SymbolLastChange / PctVolume 
    No symbols (or the Yahoo! API failed).
    ' - ); - - $("div.watchlist", this.root).html(table.join('')); - - this.ui.updateHeight(); - this.ui.hideMask(this.root); - } - - App.prototype._renderSymbolAlert = function() { - - return $([ - '
    ', - '', - '', - '
    ' - ].join('')) - .prependTo($("." + F2.Constants.Css.APP_CONTAINER,this.root)); - }; - - App.prototype.getData = function(){ - - var symInput = [], oData; - - //no symbols? bail out. - if (!this.getSymbols().length){ - this.drawSymbolList(); - return; - } - - $.each(this.getSymbols(),function(idx,item){ - symInput.push('"'+item+'"'); - }); - - oData = { - q: 'select * from yahoo.finance.quotes where symbol in ('+ symInput.join(",") +')', - format: 'json', - env: 'store://datatables.org/alltableswithkeys' - } - - //F2.log("data requested = ", oData); - - $.ajax({ - url: "http://query.yahooapis.com/v1/public/yql", - data: oData, - dataType: "jsonp", - context: this - }).done(function(jqxhr,txtStatus){ - - //pretty bad response from yahoo when it fails. - //jqxhr = {"query":{"count":0,"created":"2012-10-15T21:23:19Z","lang":"en-US","results":null}}; - - //trap failed yahoo api - if (jqxhr.query.results === null){ - jqxhr.query.results = { - quote:{} - } - } - - this.data = []; - - //yahoo's API returns an array of objects if you ask for multiple symbols - //but a single object if you only ask for 1 symbol - if (jqxhr.query.count !== 0){ - if (jqxhr.query.count < 2){ - this.data = [jqxhr.query.results.quote] || this.data; - } else { - this.data = jqxhr.query.results.quote || this.data; - } - } - - this.drawSymbolList(); - - }).fail(function(jqxhr,txtStatus){ - - F2.log("OOPS. Yahoo! didn't work."); - this.ui.Modals.alert("Your watchlist failed to load. Refresh."); - - }); - } - - - /** - * Number format helpers - */ - AppFormat = function(){ - this.magnitudes = { - shortcap : ["", "K", "M", "B", "T"] - }; - } - - AppFormat.prototype.getMagnitude = function(numDigits,value,type) { - value = Math.abs(value); - var c = 0; - while (value >= 1000 && c < 4) { - value /= 1000; - c++; - } - value = value.toFixed(numDigits); - return value + this.magnitudes[type][c]; - } - - AppFormat.prototype.lastPrice = function(value){ - value = Number(value); - value = value.toFixed(2); - return "$" + value; - } - - AppFormat.prototype.addColor = function(value){ - if (value && value.length && value.charAt(0) == "+"){ - return "" + value + ""; - } else if (value && value.length && value.charAt(0) == "-"){ - return "" + value + ""; - } else { - return value; - } - } - - AppFormat.prototype.comma = function(value) { - value = String(value); - if (value.length < 6 && value.indexOf(".") > -1) { - return value; - } else { - x = value.split('.'); - x1 = x[0]; - x2 = x.length > 1 ? '.' + x[1] : ''; - var rgx = /(\d+)(\d{3})/; - while (rgx.test(x1)) { - x1 = x1.replace(rgx, '$1' + ',' + '$2'); - } - return x1 + x2; - } - } - - AppFormat = new AppFormat(); - /** - * end number formatting helpers - */ + "", + "{symbol}", + "", + "{price}", + "{change} ({changePct})", + "{volume}", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "
    BidAskMkt CapLast Trade
    {bid}{ask}{cap}{asOfDate} {asOf}
    ", + "", + "" + ].join(""); + + App.prototype.data = []; + + App.prototype.initEvents = function () { + + //remove sym + this.$root.on("click", "a[data-remove]", $.proxy(function (e) { + e.preventDefault(); + this.deleteSymbol($(e.currentTarget).attr("data-remove")); + }, this)); + + //add sym + this.$root.on("click", "button.add", $.proxy(function (e) { + this.addSymbol($("input[name='lookup']", this.$root).val()); + }, this)); + + //expand row + this.$root.on("click", "tr[data-row]", $.proxy(function (e) { + var $this = $(e.currentTarget); + $this.next().toggle(); + }, this)); + + //change container context + this.$root.on("click", "a[data-context]", $.proxy(function (e) { + e.preventDefault(); + F2.Events.emit( + F2.Constants.Events.APP_SYMBOL_CHANGE, { + symbol: $(e.currentTarget).attr("data-context"), + name: $(e.currentTarget).attr("data-context-name") + } + ); + }, this)); + + //listen for this event from other apps who may send symbols + if (this.settings.allowExternalAdd) { + F2.Events.on("F2_Examples_Watchlist_Add", $.proxy(function (data) { + var symbolAlert = $("div.symbolAlert", this.$root); + symbolAlert = (symbolAlert.length) + ? symbolAlert + : this._renderSymbolAlert(); + + $("span:first", symbolAlert).text(data.symbol + " has been added."); + + this.addSymbol(data.symbol); + }, this)); + } + + // bind save settings + this.$root.on("click", "button.save", $.proxy(function () { + this._saveSettings(); + }, this)); + + this.ui.Views.change($.proxy(function (view) { + if (view === F2.Constants.Views.SETTINGS) { + this._populateSettings(); + } + }, this)); + } + + App.prototype._saveSettings = function () { + this.settings.allowExternalAdd = $('input[name=allowExternalAdd]', this.$settings).is(':checked'); + this.ui.Views.change(F2.Constants.Views.HOME); + } + + App.prototype._populateSettings = function () { + $('input[name=allowExternalAdd]', this.$settings).attr('checked', this.settings.alltableswithkeys); + } + + App.prototype.getSymbols = function () { + return this._retrieveStoredSymbols(); + } + + App.prototype.setSymbols = function (syms) { + this._storeSymbols(syms); + } + + App.prototype.addSymbol = function (sym) { + if (sym) { + this.ui.showMask(this.root); + var s = this.getSymbols(); + s.push(sym.toUpperCase()); + this.setSymbols(s); + + $("input[name='lookup']", this.$root).val("").focus(); + this.getData(); + } else { + this.ui.Modals.alert("Please enter a symbol."); + } + } + + App.prototype.deleteSymbol = function (sym) { + this.ui.showMask(this.root); + + var curr = this.getSymbols(), updated = []; + $.each(curr, function (idx, item) { + if (sym != item) { + updated.push(item); + } + }); + + if (!updated.length) { + this.ui.Modals.alert("You have deleted all the symbols in your watchlist. For the purposes of this example app, the default symbols have been re-added to your list.") + updated = this.DEFAULT_SYMBOLS; + } + + this.setSymbols(updated); + + this.data = []; + this.getData(); + } + + App.prototype._supportsLocalStorage = function () { + return (typeof(Storage) !== "undefined"); + } + + App.prototype.initLocalStorage = function () { + if (this._supportsLocalStorage()) { + + if (localStorage.F2_Examples_Watchlist == undefined || localStorage.F2_Examples_Watchlist == "" || !localStorage.F2_Examples_Watchlist) { + localStorage.F2_Examples_Watchlist = this.DEFAULT_SYMBOLS.join(","); + } + + } else { + if (!$.cookie(this.COOKIE_NAME) || $.cookie(this.COOKIE_NAME) == undefined || $.cookie(this.COOKIE_NAME) == "") { + $.cookie(this.COOKIE_NAME, this.DEFAULT_SYMBOLS.join(","), {expires: 10}); + } + } + + } + + App.prototype._storeSymbols = function (syms) { + + if (this._supportsLocalStorage()) { + localStorage.F2_Examples_Watchlist = syms.join(","); + } else { + $.cookie(this.COOKIE_NAME, syms.join(","), {expires: 10}); + } + } + + App.prototype._retrieveStoredSymbols = function () { + if (this._supportsLocalStorage()) { + return localStorage.F2_Examples_Watchlist.split(",") || []; + } + else { + return $.cookie(this.COOKIE_NAME).split(",") || []; + } + } + + App.prototype.drawSymbolList = function () { + + var table = []; + table.push( + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '' + ); + + if (this.data.length < 1) { + table.push('') + } else { + $.each(this.data, $.proxy(function (idx, item) { + + item = item || {}; + + var quoteData = { + name: item.Name, + symbol: item.Symbol, + price: AppFormat.lastPrice(item.LastTradePriceOnly), + change: AppFormat.addColor(item.Change), + changePct: AppFormat.addColor(item.ChangeinPercent), + volume: AppFormat.getMagnitude(1, item.Volume, "shortcap"), + asOf: item.LastTradeTime, + asOfDate: item.LastTradeDate, + bid: AppFormat.lastPrice(item.BidRealtime), + ask: AppFormat.lastPrice(item.AskRealtime), + cap: item.MarketCapitalization + }; + + table.push(this.ROW.supplant(quoteData)); + + }, this)); + } + + table.push( + '', + '
    SymbolLastChange / PctVolume 
    No symbols (or the Yahoo! API failed).
    ' + ); + + $("div.watchlist", this.root).html(table.join('')); + + this.ui.updateHeight(); + this.ui.hideMask(this.root); + } + + App.prototype._renderSymbolAlert = function () { + + return $([ + '
    ', + '', + '', + '
    ' + ].join('')) + .prependTo($("." + F2.Constants.Css.APP_CONTAINER, this.root)); + }; + + App.prototype.getData = function () { + + var symInput = [], oData; + + //no symbols? bail out. + if (!this.getSymbols().length) { + this.drawSymbolList(); + return; + } + + $.each(this.getSymbols(), function (idx, item) { + symInput.push('"' + item + '"'); + }); + + oData = { + q: 'select * from yahoo.finance.quotes where symbol in (' + symInput.join(",") + ')', + format: 'json', + env: 'store://datatables.org/alltableswithkeys' + } + + //F2.log("data requested = ", oData); + + $.ajax({ + url: "http://query.yahooapis.com/v1/public/yql", + data: oData, + dataType: "jsonp", + context: this + }).done(function (jqxhr, txtStatus) { + + //pretty bad response from yahoo when it fails. + //jqxhr = {"query":{"count":0,"created":"2012-10-15T21:23:19Z","lang":"en-US","results":null}}; + + //trap failed yahoo api + if (jqxhr.query.results === null) { + jqxhr.query.results = { + quote: {} + } + } + + this.data = []; + + //yahoo's API returns an array of objects if you ask for multiple symbols + //but a single object if you only ask for 1 symbol + if (jqxhr.query.count !== 0) { + if (jqxhr.query.count < 2) { + this.data = [jqxhr.query.results.quote] || this.data; + } else { + this.data = jqxhr.query.results.quote || this.data; + } + } + + this.drawSymbolList(); + + }).fail(function (jqxhr, txtStatus) { + + F2.log("OOPS. Yahoo! didn't work."); + this.ui.Modals.alert("Your watchlist failed to load. Refresh."); + + }); + } + + + /** + * Number format helpers + */ + AppFormat = function () { + this.magnitudes = { + shortcap: ["", "K", "M", "B", "T"] + }; + } + + AppFormat.prototype.getMagnitude = function (numDigits, value, type) { + value = Math.abs(value); + var c = 0; + while (value >= 1000 && c < 4) { + value /= 1000; + c++; + } + value = value.toFixed(numDigits); + return value + this.magnitudes[type][c]; + } + + AppFormat.prototype.lastPrice = function (value) { + value = Number(value); + value = value.toFixed(2); + return "$" + value; + } + + AppFormat.prototype.addColor = function (value) { + if (value && value.length && value.charAt(0) == "+") { + return "" + value + ""; + } else if (value && value.length && value.charAt(0) == "-") { + return "" + value + ""; + } else { + return value; + } + } + + AppFormat.prototype.comma = function (value) { + value = String(value); + if (value.length < 6 && value.indexOf(".") > -1) { + return value; + } else { + x = value.split('.'); + x1 = x[0]; + x2 = x.length > 1 ? '.' + x[1] : ''; + var rgx = /(\d+)(\d{3})/; + while (rgx.test(x1)) { + x1 = x1.replace(rgx, '$1' + ',' + '$2'); + } + return x1 + x2; + } + } + + AppFormat = new AppFormat(); + /** + * end number formatting helpers + */ return App; diff --git a/examples/apps/JavaScript/Watchlist/jquery.cookie.js b/examples/apps/JavaScript/Watchlist/jquery.cookie.js index 4bd3da19..c66251ac 100644 --- a/examples/apps/JavaScript/Watchlist/jquery.cookie.js +++ b/examples/apps/JavaScript/Watchlist/jquery.cookie.js @@ -10,63 +10,63 @@ */ (function ($, document, undefined) { - var pluses = /\+/g; + var pluses = /\+/g; - function raw(s) { - return s; - } + function raw(s) { + return s; + } - function decoded(s) { - return decodeURIComponent(s.replace(pluses, ' ')); - } + function decoded(s) { + return decodeURIComponent(s.replace(pluses, ' ')); + } - var config = $.cookie = function (key, value, options) { + var config = $.cookie = function (key, value, options) { - // write - if (value !== undefined) { - options = $.extend({}, config.defaults, options); + // write + if (value !== undefined) { + options = $.extend({}, config.defaults, options); - if (value === null) { - options.expires = -1; - } + if (value === null) { + options.expires = -1; + } - if (typeof options.expires === 'number') { - var days = options.expires, t = options.expires = new Date(); - t.setDate(t.getDate() + days); - } + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setDate(t.getDate() + days); + } - value = config.json ? JSON.stringify(value) : String(value); + value = config.json ? JSON.stringify(value) : String(value); - return (document.cookie = [ - encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), - options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE - options.path ? '; path=' + options.path : '', - options.domain ? '; domain=' + options.domain : '', - options.secure ? '; secure' : '' - ].join('')); - } + return (document.cookie = [ + encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } - // read - var decode = config.raw ? raw : decoded; - var cookies = document.cookie.split('; '); - for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) { - if (decode(parts.shift()) === key) { - var cookie = decode(parts.join('=')); - return config.json ? JSON.parse(cookie) : cookie; - } - } + // read + var decode = config.raw ? raw : decoded; + var cookies = document.cookie.split('; '); + for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) { + if (decode(parts.shift()) === key) { + var cookie = decode(parts.join('=')); + return config.json ? JSON.parse(cookie) : cookie; + } + } - return null; - }; + return null; + }; - config.defaults = {}; + config.defaults = {}; - $.removeCookie = function (key, options) { - if ($.cookie(key) !== null) { - $.cookie(key, null, options); - return true; - } - return false; - }; + $.removeCookie = function (key, options) { + if ($.cookie(key) !== null) { + $.cookie(key, null, options); + return true; + } + return false; + }; })(jQuery, document); \ No newline at end of file diff --git a/examples/apps/JavaScript/Watchlist/manifest.js b/examples/apps/JavaScript/Watchlist/manifest.js index 9a2577f1..807647fa 100644 --- a/examples/apps/JavaScript/Watchlist/manifest.js +++ b/examples/apps/JavaScript/Watchlist/manifest.js @@ -1,45 +1,45 @@ F2_jsonpCallback_com_openf2_examples_javascript_watchlist({ - "scripts":[ - "../apps/JavaScript/Watchlist/jquery.cookie.js", - "../apps/JavaScript/Watchlist/moment.1.7.0.min.js", - "../apps/JavaScript/Watchlist/appclass.js" - ], - "styles":[ - "../apps/JavaScript/Watchlist/watchlist.css" - ], - "apps":[ - { - "html":[ - '
    ', - '
    ', - '
    ', - '
    ', - '', - '', - '
    ', - '

    ', - 'Market data delayed at least 15 minutes. By Yahoo!', - '

    ', - '
    ', - '
    ', - '

    Settings

    ', - 'This App can listen for symbols from nearby Apps which allows other apps to add symbols to this watchlist.', - 'Allow Symbols from Nearby Apps', - '
    ', - '
    ', - ' ', - '', - '
    ', - '
    ', - '
    ', - '

    About

    ', - '

    Quick Quote App v0.12.3

    ', - '

    « Back', - '

    ', - '
    ' - ].join("") - } - ] + "scripts": [ + "../apps/JavaScript/Watchlist/jquery.cookie.js", + "../apps/JavaScript/Watchlist/moment.1.7.0.min.js", + "../apps/JavaScript/Watchlist/appclass.js" + ], + "styles": [ + "../apps/JavaScript/Watchlist/watchlist.css" + ], + "apps": [ + { + "html": [ + '
    ', + '
    ', + '
    ', + '
    ', + '', + '', + '
    ', + '

    ', + 'Market data delayed at least 15 minutes. By Yahoo!', + '

    ', + '
    ', + '
    ', + '

    Settings

    ', + 'This App can listen for symbols from nearby Apps which allows other apps to add symbols to this watchlist.', + 'Allow Symbols from Nearby Apps', + '
    ', + '
    ', + ' ', + '', + '
    ', + '
    ', + '
    ', + '

    About

    ', + '

    Quick Quote App v0.12.3

    ', + '

    « Back', + '

    ', + '
    ' + ].join("") + } + ] }) \ No newline at end of file diff --git a/examples/apps/JavaScript/Watchlist/watchlist.css b/examples/apps/JavaScript/Watchlist/watchlist.css index ed8da78f..118d3e17 100644 --- a/examples/apps/JavaScript/Watchlist/watchlist.css +++ b/examples/apps/JavaScript/Watchlist/watchlist.css @@ -1,29 +1,29 @@ .com_openf2_examples_javascript_watchlist .table th, .com_openf2_examples_javascript_watchlist .table td { - text-align: right; + text-align: right; } .com_openf2_examples_javascript_watchlist .table th.first, .com_openf2_examples_javascript_watchlist .table td.first { - text-align: left; + text-align: left; } .com_openf2_examples_javascript_watchlist .pos { - color:green; + color: green; } .com_openf2_examples_javascript_watchlist .neg { - color:red; + color: red; } .com_openf2_examples_javascript_watchlist table table { - font-size: 85%; + font-size: 85%; } .com_openf2_examples_javascript_watchlist table tr { - cursor: pointer; + cursor: pointer; } .com_openf2_examples_javascript_watchlist table table tr { - cursor: text; + cursor: text; } \ No newline at end of file diff --git a/examples/apps/PHP/F2wits/app.css b/examples/apps/PHP/F2wits/app.css index 45bfa5a6..604f1f23 100644 --- a/examples/apps/PHP/F2wits/app.css +++ b/examples/apps/PHP/F2wits/app.css @@ -3,15 +3,15 @@ */ .com_openf2_examples_php_f2wits .avatar { - vertical-align: top; + vertical-align: top; } .com_openf2_examples_php_f2wits img { - max-width: 35px !important; + max-width: 35px !important; } .com_openf2_examples_php_f2wits time { - display: block; - font-size:12px; - color: #8f8f8f; + display: block; + font-size: 12px; + color: #8f8f8f; } \ No newline at end of file diff --git a/examples/apps/PHP/F2wits/app.js b/examples/apps/PHP/F2wits/app.js index a6032dfe..5e520eb7 100644 --- a/examples/apps/PHP/F2wits/app.js +++ b/examples/apps/PHP/F2wits/app.js @@ -1,135 +1,137 @@ -F2.Apps["com_openf2_examples_php_f2wits"] = (function() { - - var App_Class = function(appConfig, appContent, root) { - // constructor - this.appConfig = appConfig; - this.appContent = appContent; - this.$root = $(root); //if you're using jQuery. - this.$app = $("[data-f2-view='home']", this.$root); - - this.symbol = "MSFT";//default to MSFT - this.setupEvents(); - } - - App_Class.prototype.init = function() { - this.appConfig.ui.showMask(this.$app, true); - this.getTwits(); - } - - App_Class.prototype.setupEvents = function(){ - - F2.Events.on( - F2.Constants.Events.CONTAINER_SYMBOL_CHANGE,$.proxy(function(data){ - this.symbol = data.symbol; - this.init(); - },this) - ); - } - - App_Class.prototype.getTwits = function(){ - $.ajax({ - beforeSend: function(){ - this.appConfig.ui.setTitle("Loading StockTwits..."); - }, - url: "../apps/PHP/F2wits/stocktwits.php", - data: { - symbol: this.symbol - }, - type:"GET", - dataType: "JSON", - context: this - }).done(function(jqxhr,txtStatus){ - //F2.log(jqxhr) - this.data = jqxhr; - this.draw(); - }).fail(function(jqxhr,txtStatus){ - console.error("F2wits failed to load StockTwits data.", jqxhr, txtStatus); - this.appConfig.ui.setTitle("StockTwits Error"); - this.$app.html("

    An error occurred loading StockTwits data for " +this.symbol+ ".

    "); - this.appConfig.ui.hideMask(this.$app); - this.appConfig.ui.updateHeight(); - }); - } - - App_Class.prototype.draw = function(){ - - this.appConfig.ui.setTitle("StockTwits for $" + this.symbol); - - var html = []; - html.push(''); - - $.each(this.data.messages,$.proxy(function(idx, item){ - //body, created_at, source, symbols, user - - if (idx > 4) { return true; }//only show 5 - - var body = item.body, - created_at = moment(new Date(item.created_at)).startOf('hour').fromNow(), - id = item.id, - source = item.source, - symbols = item.symbols, - user = item.user, - symList = []; - - body = this.replaceURLWithHTMLLinks(body); - body = this.replaceDollarSigns(body); - - //build list of symbols - $.each(symbols,function(idx,item){ - symList.push( - '
  • ', - //'$',item.symbol,'', - //' | ', - '',item.symbol,'', - '
  • ' - ); - }); - - html.push( - '', - '', - '', - '' - ); - },this)); - - html.push('
    ', - body, - '
    ', - '', - '
    ', - '
    '); - - this.$app.html(html.join('')); - this.appConfig.ui.hideMask(this.$app); - this.appConfig.ui.updateHeight(); - - //assign event to change container focus - $("a.focus",this.$app).click(function(){ - F2.Events.emit( - F2.Constants.Events.APP_SYMBOL_CHANGE, - { - symbol: $(this).attr("data-symbol"), - name: $(this).attr("data-symbol") - } - ); - }); - } - - //http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links - App_Class.prototype.replaceURLWithHTMLLinks = function(text){ - var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; - return text.replace(exp,"$1"); - } - - App_Class.prototype.replaceDollarSigns = function(text){ - var exp = /\$([A-Za-z0-9_]+)/ig; - //use this to link to StockTwits.com - //return text.replace(exp,"$$$1"); - - //use this to apply focus to container - return text.replace(exp,"$$$1"); - } - - return App_Class; +F2.Apps["com_openf2_examples_php_f2wits"] = (function () { + + var App_Class = function (appConfig, appContent, root) { + // constructor + this.appConfig = appConfig; + this.appContent = appContent; + this.$root = $(root); //if you're using jQuery. + this.$app = $("[data-f2-view='home']", this.$root); + + this.symbol = "MSFT";//default to MSFT + this.setupEvents(); + } + + App_Class.prototype.init = function () { + this.appConfig.ui.showMask(this.$app, true); + this.getTwits(); + } + + App_Class.prototype.setupEvents = function () { + + F2.Events.on( + F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(function (data) { + this.symbol = data.symbol; + this.init(); + }, this) + ); + } + + App_Class.prototype.getTwits = function () { + $.ajax({ + beforeSend: function () { + this.appConfig.ui.setTitle("Loading StockTwits..."); + }, + url: "../apps/PHP/F2wits/stocktwits.php", + data: { + symbol: this.symbol + }, + type: "GET", + dataType: "JSON", + context: this + }).done(function (jqxhr, txtStatus) { + //F2.log(jqxhr) + this.data = jqxhr; + this.draw(); + }).fail(function (jqxhr, txtStatus) { + console.error("F2wits failed to load StockTwits data.", jqxhr, txtStatus); + this.appConfig.ui.setTitle("StockTwits Error"); + this.$app.html("

    An error occurred loading StockTwits data for " + this.symbol + ".

    "); + this.appConfig.ui.hideMask(this.$app); + this.appConfig.ui.updateHeight(); + }); + } + + App_Class.prototype.draw = function () { + + this.appConfig.ui.setTitle("StockTwits for $" + this.symbol); + + var html = []; + html.push(''); + + $.each(this.data.messages, $.proxy(function (idx, item) { + //body, created_at, source, symbols, user + + if (idx > 4) { + return true; + }//only show 5 + + var body = item.body, + created_at = moment(new Date(item.created_at)).startOf('hour').fromNow(), + id = item.id, + source = item.source, + symbols = item.symbols, + user = item.user, + symList = []; + + body = this.replaceURLWithHTMLLinks(body); + body = this.replaceDollarSigns(body); + + //build list of symbols + $.each(symbols, function (idx, item) { + symList.push( + '
  • ', + //'$',item.symbol,'', + //' | ', + '', item.symbol, '', + '
  • ' + ); + }); + + html.push( + '', + '', + '', + '' + ); + }, this)); + + html.push('
    ', + body, + '
    ', + '', + '
    ', + '
    '); + + this.$app.html(html.join('')); + this.appConfig.ui.hideMask(this.$app); + this.appConfig.ui.updateHeight(); + + //assign event to change container focus + $("a.focus", this.$app).click(function () { + F2.Events.emit( + F2.Constants.Events.APP_SYMBOL_CHANGE, + { + symbol: $(this).attr("data-symbol"), + name: $(this).attr("data-symbol") + } + ); + }); + } + + //http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links + App_Class.prototype.replaceURLWithHTMLLinks = function (text) { + var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; + return text.replace(exp, "$1"); + } + + App_Class.prototype.replaceDollarSigns = function (text) { + var exp = /\$([A-Za-z0-9_]+)/ig; + //use this to link to StockTwits.com + //return text.replace(exp,"$$$1"); + + //use this to apply focus to container + return text.replace(exp, "$$$1"); + } + + return App_Class; })(); \ No newline at end of file diff --git a/examples/apps/PHP/F2wits/manifest.js b/examples/apps/PHP/F2wits/manifest.js index d0d52cf5..7db0a3c3 100644 --- a/examples/apps/PHP/F2wits/manifest.js +++ b/examples/apps/PHP/F2wits/manifest.js @@ -1,15 +1,15 @@ F2_jsonpCallback_com_openf2_examples_php_f2wits({ - "scripts":[ - "../apps/PHP/F2wits/moment.1.7.0.min.js", - "../apps/PHP/F2wits/app.js" - ], - "styles":[ - "../apps/PHP/F2wits/app.css" - ], - "apps":[{ - "html":[ - '
    ', - '

    App version 1.0. Designed for F2 1.0

    ' - ].join("") - }] + "scripts": [ + "../apps/PHP/F2wits/moment.1.7.0.min.js", + "../apps/PHP/F2wits/app.js" + ], + "styles": [ + "../apps/PHP/F2wits/app.css" + ], + "apps": [{ + "html": [ + '
    ', + '

    App version 1.0. Designed for F2 1.0

    ' + ].join("") + }] }) \ No newline at end of file diff --git a/examples/apps/PHP/F2wits/stocktwits.php b/examples/apps/PHP/F2wits/stocktwits.php index 5aacf619..93fcb660 100644 --- a/examples/apps/PHP/F2wits/stocktwits.php +++ b/examples/apps/PHP/F2wits/stocktwits.php @@ -1,7 +1,7 @@ - \ No newline at end of file diff --git a/examples/apps/PHP/HelloWorld/appclass.js b/examples/apps/PHP/HelloWorld/appclass.js index 88da27ac..03230920 100644 --- a/examples/apps/PHP/HelloWorld/appclass.js +++ b/examples/apps/PHP/HelloWorld/appclass.js @@ -1,61 +1,61 @@ -F2.Apps["com_openf2_examples_php_helloworld"] = (function() { - - var App_Class = function (appConfig, appContent, root) { - this.appConfig = appConfig; - this.appContent = appContent; - this.ui = appConfig.ui; - this.$root = $(root); - }; - - App_Class.prototype.init = function () { - - $('a.testAlert', this.$root).on('click', $.proxy(function() { - this.ui.Modals.alert("Hello World!", function() { - F2.log('callback fired!'); - }); - }, this)); - - $('a.testConfirm', this.$root).on('click', $.proxy(function() { - this.ui.Modals.confirm( - "Hello World!", - function() { - F2.log('ok callback fired!'); - }, - function() { - F2.log('cancel callback fired!'); - } - ); - }, this)); - - this.ui.setTitle((this.appConfig.isSecure ? 'Secure' : '') + ' Hello World (PHP)'); - this.ui.updateHeight(); - - // bind symbol change event - F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(this._handleSymbolChange, this)); - }; - - App_Class.prototype._handleSymbolChange = function (data) { - - var symbolAlert = $("div.symbolAlert", this.$root); - symbolAlert = (symbolAlert.length) - ? symbolAlert - : this._renderSymbolAlert(); - - $("span:first", symbolAlert).text("The symbol has been changed to " + data.symbol); - - this.ui.updateHeight(); - }; - - App_Class.prototype._renderSymbolAlert = function() { - - return $([ - '
    ', - '', - '', - '
    ' - ].join('')) - .prependTo($("." + F2.Constants.Css.APP_CONTAINER,this.$root)); - }; - - return App_Class; +F2.Apps["com_openf2_examples_php_helloworld"] = (function () { + + var App_Class = function (appConfig, appContent, root) { + this.appConfig = appConfig; + this.appContent = appContent; + this.ui = appConfig.ui; + this.$root = $(root); + }; + + App_Class.prototype.init = function () { + + $('a.testAlert', this.$root).on('click', $.proxy(function () { + this.ui.Modals.alert("Hello World!", function () { + F2.log('callback fired!'); + }); + }, this)); + + $('a.testConfirm', this.$root).on('click', $.proxy(function () { + this.ui.Modals.confirm( + "Hello World!", + function () { + F2.log('ok callback fired!'); + }, + function () { + F2.log('cancel callback fired!'); + } + ); + }, this)); + + this.ui.setTitle((this.appConfig.isSecure ? 'Secure' : '') + ' Hello World (PHP)'); + this.ui.updateHeight(); + + // bind symbol change event + F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(this._handleSymbolChange, this)); + }; + + App_Class.prototype._handleSymbolChange = function (data) { + + var symbolAlert = $("div.symbolAlert", this.$root); + symbolAlert = (symbolAlert.length) + ? symbolAlert + : this._renderSymbolAlert(); + + $("span:first", symbolAlert).text("The symbol has been changed to " + data.symbol); + + this.ui.updateHeight(); + }; + + App_Class.prototype._renderSymbolAlert = function () { + + return $([ + '
    ', + '', + '', + '
    ' + ].join('')) + .prependTo($("." + F2.Constants.Css.APP_CONTAINER, this.$root)); + }; + + return App_Class; })(); \ No newline at end of file diff --git a/examples/apps/PHP/HelloWorld/helloworld.php b/examples/apps/PHP/HelloWorld/helloworld.php index d8990bb8..d883692b 100644 --- a/examples/apps/PHP/HelloWorld/helloworld.php +++ b/examples/apps/PHP/HelloWorld/helloworld.php @@ -1,22 +1,23 @@ array($serverPath . "appclass.js"), - "apps" => array(array("html" => renderAppHtml($app))) - ); +// create the AppManifest object +$a = array( + "scripts" => array($serverPath . "appclass.js"), + "apps" => array(array("html" => renderAppHtml($app))) +); - function renderAppHtml($app) { - return <<

    Hello World! Test modals:

    @@ -25,9 +26,9 @@ function renderAppHtml($app) {
    HTML; - } +} - // output the jsonp - header("Content-type: application/javascript"); - echo "F2_jsonpCallback_com_openf2_examples_php_helloworld(" . json_encode($a, JSON_HEX_TAG) . ")"; +// output the jsonp +header("Content-type: application/javascript"); +echo "F2_jsonpCallback_com_openf2_examples_php_helloworld(" . json_encode($a, JSON_HEX_TAG) . ")"; ?> \ No newline at end of file diff --git a/examples/apps/PHP/MarketNews/app.css b/examples/apps/PHP/MarketNews/app.css index 7eb299cb..ff627819 100644 --- a/examples/apps/PHP/MarketNews/app.css +++ b/examples/apps/PHP/MarketNews/app.css @@ -1,29 +1,36 @@ .com_openf2_examples_php_marketnews li { - border-bottom:1px solid #DDD; - padding:0 3px 10px; + border-bottom: 1px solid #DDD; + padding: 0 3px 10px; } + .com_openf2_examples_php_marketnews li + li { - padding-top:10px; + padding-top: 10px; } + .com_openf2_examples_php_marketnews header a { - font-size:18px; - padding-bottom:10px; + font-size: 18px; + padding-bottom: 10px; } + .com_openf2_examples_php_marketnews header time { - color:#8F8F8F; - display:block; - font-size:11px; + color: #8F8F8F; + display: block; + font-size: 11px; } + .com_openf2_examples_php_marketnews summary { - margin-top:5px; + margin-top: 5px; } + .com_openf2_examples_php_marketnews p { - margin-bottom:0; + margin-bottom: 0; } + .com_openf2_examples_php_marketnews img { - padding-right:15px; + padding-right: 15px; } + .com_openf2_examples_php_marketnews footer { - font-size:10px; - padding:0 3px 10px; + font-size: 10px; + padding: 0 3px 10px; } diff --git a/examples/apps/PHP/MarketNews/appclass.js b/examples/apps/PHP/MarketNews/appclass.js index 55d70480..8bf27c2b 100644 --- a/examples/apps/PHP/MarketNews/appclass.js +++ b/examples/apps/PHP/MarketNews/appclass.js @@ -1,75 +1,75 @@ -F2.Apps["com_openf2_examples_php_marketnews"] = (function() { - - var App_Class = function (appConfig, appContent, root) { - this.appConfig = appConfig; - this.appContent = appContent; - this.ui = appConfig.ui; - this.$root = $(root); - }; - - App_Class.prototype.init = function () { - - this.ui.updateHeight(); - - // populate settings - this.ui.Views.change($.proxy(this._populateSettings, this)); - - // save settings - $(this.$root).on("click", "button.save", $.proxy(this._handleSaveSettings, this)); - - // cancel settings - $(this.$root).on("click", "button.cancel", $.proxy(function () { - this.ui.Views.change(F2.Constants.Views.HOME); - }, this)); - }; - - App_Class.prototype._handleSaveSettings = function() { - - this.appConfig.context = this.appConfig.context || {}; - this.appConfig.context.autoRefresh = $('form.f2-app-view input[name="autoRefresh"]', this.$root).prop('checked'); - this.appConfig.context.provider = $('form.f2-app-view input[name="provider"]:checked', this.$root).val(); - - clearInterval(this._refreshInterval); - if (this.appConfig.context.autoRefresh) { - this._refreshInterval = setInterval($.proxy(this._refresh, this), 30000); - } - - this.ui.Views.change(F2.Constants.Views.HOME); - this._refresh(); - }; - - App_Class.prototype._propulateSettings = function() { - - $.each(this.appConfig.context, $.proxy(function(key, value) { - - $('form.f2-app-view input[name="' + key + '"]', this.$root).val(value); - - }, this)); - }; - - App_Class.prototype._refresh = function () { - - this.ui.showMask(this.$root, true); - - $.ajax({ - url: this.appConfig.manifestUrl, - data: { - params: JSON.stringify([this.appConfig], F2.appConfigReplacer) - }, - type: "post", - dataType: "jsonp", - jsonp:false, - jsonpCallback:F2.Constants.JSONP_CALLBACK + this.appConfig.appId, - context:this, - success:function (data) { - $("div.f2-app-view", this.$root).replaceWith($(data.apps[0].html).find("div.f2-app-view")); - this.ui.updateHeight(); - }, - complete:function() { - this.ui.hideMask(this.$root); - } - }) - }; - - return App_Class; +F2.Apps["com_openf2_examples_php_marketnews"] = (function () { + + var App_Class = function (appConfig, appContent, root) { + this.appConfig = appConfig; + this.appContent = appContent; + this.ui = appConfig.ui; + this.$root = $(root); + }; + + App_Class.prototype.init = function () { + + this.ui.updateHeight(); + + // populate settings + this.ui.Views.change($.proxy(this._populateSettings, this)); + + // save settings + $(this.$root).on("click", "button.save", $.proxy(this._handleSaveSettings, this)); + + // cancel settings + $(this.$root).on("click", "button.cancel", $.proxy(function () { + this.ui.Views.change(F2.Constants.Views.HOME); + }, this)); + }; + + App_Class.prototype._handleSaveSettings = function () { + + this.appConfig.context = this.appConfig.context || {}; + this.appConfig.context.autoRefresh = $('form.f2-app-view input[name="autoRefresh"]', this.$root).prop('checked'); + this.appConfig.context.provider = $('form.f2-app-view input[name="provider"]:checked', this.$root).val(); + + clearInterval(this._refreshInterval); + if (this.appConfig.context.autoRefresh) { + this._refreshInterval = setInterval($.proxy(this._refresh, this), 30000); + } + + this.ui.Views.change(F2.Constants.Views.HOME); + this._refresh(); + }; + + App_Class.prototype._propulateSettings = function () { + + $.each(this.appConfig.context, $.proxy(function (key, value) { + + $('form.f2-app-view input[name="' + key + '"]', this.$root).val(value); + + }, this)); + }; + + App_Class.prototype._refresh = function () { + + this.ui.showMask(this.$root, true); + + $.ajax({ + url: this.appConfig.manifestUrl, + data: { + params: JSON.stringify([this.appConfig], F2.appConfigReplacer) + }, + type: "post", + dataType: "jsonp", + jsonp: false, + jsonpCallback: F2.Constants.JSONP_CALLBACK + this.appConfig.appId, + context: this, + success: function (data) { + $("div.f2-app-view", this.$root).replaceWith($(data.apps[0].html).find("div.f2-app-view")); + this.ui.updateHeight(); + }, + complete: function () { + this.ui.hideMask(this.$root); + } + }) + }; + + return App_Class; })(); \ No newline at end of file diff --git a/examples/apps/PHP/MarketNews/marketnews.php b/examples/apps/PHP/MarketNews/marketnews.php index 03138155..9879e4e0 100644 --- a/examples/apps/PHP/MarketNews/marketnews.php +++ b/examples/apps/PHP/MarketNews/marketnews.php @@ -1,90 +1,91 @@ array('display' => 'Yahoo Business', 'feed' => 'http://news.yahoo.com/rss/business') - ); - - $apps = $_REQUEST["params"]; - $apps = get_magic_quotes_gpc() ? stripslashes($apps) : $apps; - $app = json_decode($apps); - $app = $app[0]; // this App doesn't support batchedRequests - - $provider = $DEFAULT_PROVIDER; - $serverPath = - ((!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] != "off") ? "https://" : "http://") . - $_SERVER["SERVER_NAME"] . - str_replace("marketnews.php", "", $_SERVER["SCRIPT_NAME"]); - - // read in the news - $xml_source = file_get_contents($PROVIDERS[$provider]['feed']); - - $doc = simplexml_load_string($xml_source); - - $newsItems = array(); - foreach ($doc->channel->item as $item) { - $newsItems[] = array ( - 'title' => $item->title, - 'desc' => $item->description, - 'link' => $item->link, - 'date' => $item->pubDate - ); - } - - // create the AppManifest object - $a = array( - "scripts" => array($serverPath . "appclass.js"), - "styles" => array($serverPath . "app.css"), - "apps" => array( - array( - "html" => join('', array( - '
    ', - renderNews($newsItems), - renderSettings(), - '
    ' - )) - ) - ) - ); - - // output the jsonp - header("Content-type: application/javascript"); - echo "F2_jsonpCallback_com_openf2_examples_php_marketnews(" . json_encode($a, JSON_HEX_TAG) . ")"; - - /** - * Renders the news articles - * @method renderNews - * @param {Array} $newsItems The list of articles - * @return {string} The News HTML - */ - function renderNews($newsItems) { - global $MAX_ARTICLES; - global $PROVIDERS; - global $provider; - global $doc; - - $html = array( - '
    ', - '
      ' - ); - - for ($i = 0; $i < $MAX_ARTICLES; $i++) { - //format the date - $date = date_format(new DateTime($newsItems[$i]['date']), 'g:iA \o\n l M j, Y'); - - //see if the article has an image (if no image skip that junk) - if (preg_match('/\' around the image - $patterns[1] = '/\<\/a\>/'; ///remove the closing link tag '' around the image - $patterns[2] = '/\/U'; //find the break and remove it - $replacement = ''; - $cleanDescription = preg_replace($patterns, $replacement, $newsItems[$i]['desc']); - - $html[] = << array('display' => 'Yahoo Business', 'feed' => 'http://news.yahoo.com/rss/business') +); + +$apps = $_REQUEST["params"]; +$apps = get_magic_quotes_gpc() ? stripslashes($apps) : $apps; +$app = json_decode($apps); +$app = $app[0]; // this App doesn't support batchedRequests + +$provider = $DEFAULT_PROVIDER; +$serverPath = + ((!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] != "off") ? "https://" : "http://") . + $_SERVER["SERVER_NAME"] . + str_replace("marketnews.php", "", $_SERVER["SCRIPT_NAME"]); + +// read in the news +$xml_source = file_get_contents($PROVIDERS[$provider]['feed']); + +$doc = simplexml_load_string($xml_source); + +$newsItems = array(); +foreach ($doc->channel->item as $item) { + $newsItems[] = array( + 'title' => $item->title, + 'desc' => $item->description, + 'link' => $item->link, + 'date' => $item->pubDate + ); +} + +// create the AppManifest object +$a = array( + "scripts" => array($serverPath . "appclass.js"), + "styles" => array($serverPath . "app.css"), + "apps" => array( + array( + "html" => join('', array( + '
      ', + renderNews($newsItems), + renderSettings(), + '
      ' + )) + ) + ) +); + +// output the jsonp +header("Content-type: application/javascript"); +echo "F2_jsonpCallback_com_openf2_examples_php_marketnews(" . json_encode($a, JSON_HEX_TAG) . ")"; + +/** + * Renders the news articles + * @method renderNews + * @param {Array} $newsItems The list of articles + * @return {string} The News HTML + */ +function renderNews($newsItems) +{ + global $MAX_ARTICLES; + global $PROVIDERS; + global $provider; + global $doc; + + $html = array( + '
      ', + '
        ' + ); + + for ($i = 0; $i < $MAX_ARTICLES; $i++) { + //format the date + $date = date_format(new DateTime($newsItems[$i]['date']), 'g:iA \o\n l M j, Y'); + + //see if the article has an image (if no image skip that junk) + if (preg_match('/\' around the image + $patterns[1] = '/\<\/a\>/'; ///remove the closing link tag '' around the image + $patterns[2] = '/\/U'; //find the break and remove it + $replacement = ''; + $cleanDescription = preg_replace($patterns, $replacement, $newsItems[$i]['desc']); + + $html[] = <<
        @@ -97,59 +98,61 @@ function renderNews($newsItems) {
        HTML; - } else { - //add one to the MAX_ARTICLES count since we are skipping one - $MAX_ARTICLES++; - } - } - - $html[] = join('', array( - '
      ', - '', - '
      ' - )); - - return join("", $html); - } - - /** - * Renders the settings view - * @method renderSettings - * @return {string} The settings HTML - */ - function renderSettings() { - - global $PROVIDERS; - global $provider; - $providerHtml = array(); - - foreach ($PROVIDERS as $key => $value) { - $providerHtml[] = join('', array( - '
      ' - )); - } - - $html = array( - '
      ', - '
      ', - 'News Provider:', - join('', $providerHtml), - '
      ', - ' ', - '', - '
      ', - '
      ' - ); - - return join("", $html); - } + } else { + //add one to the MAX_ARTICLES count since we are skipping one + $MAX_ARTICLES++; + } + } + + $html[] = join('', array( + '
    ', + '', + '
    ' + )); + + return join("", $html); +} + +/** + * Renders the settings view + * @method renderSettings + * @return {string} The settings HTML + */ +function renderSettings() +{ + + global $PROVIDERS; + global $provider; + $providerHtml = array(); + + foreach ($PROVIDERS as $key => $value) { + $providerHtml[] = join('', array( + '
    ' + )); + } + + $html = array( + '
    ', + '
    ', + 'News Provider:', + join('', $providerHtml), + '
    ', + ' ', + '', + '
    ', + '
    ' + ); + + return join("", $html); +} + ?> \ No newline at end of file diff --git a/examples/apps/PHP/News/app.css b/examples/apps/PHP/News/app.css index 037b3ee5..35e96c83 100644 --- a/examples/apps/PHP/News/app.css +++ b/examples/apps/PHP/News/app.css @@ -1,16 +1,19 @@ .com_openf2_examples_php_news li { - border-bottom:1px solid #DDD; - padding:0 3px 10px; + border-bottom: 1px solid #DDD; + padding: 0 3px 10px; } + .com_openf2_examples_php_news li + li { - padding-top:10px; + padding-top: 10px; } + .com_openf2_examples_php_news li time { - color:#8F8F8F; - display:block; - font-size:11px; + color: #8F8F8F; + display: block; + font-size: 11px; } + .com_openf2_examples_php_news footer { - font-size:10px; - padding:0 3px 10px; + font-size: 10px; + padding: 0 3px 10px; } \ No newline at end of file diff --git a/examples/apps/PHP/News/appclass.js b/examples/apps/PHP/News/appclass.js index f9190e91..9874c5b9 100644 --- a/examples/apps/PHP/News/appclass.js +++ b/examples/apps/PHP/News/appclass.js @@ -1,84 +1,84 @@ -F2.Apps["com_openf2_examples_php_news"] = (function() { +F2.Apps["com_openf2_examples_php_news"] = (function () { - var App_Class = function (appConfig, appContent, root) { + var App_Class = function (appConfig, appContent, root) { - this.appConfig = appConfig; - this.appContent = appContent; - this.ui = appConfig.ui; - this.$root = $(root); + this.appConfig = appConfig; + this.appContent = appContent; + this.ui = appConfig.ui; + this.$root = $(root); - this.appConfig.context = this.appConfig.context || {}; - }; + this.appConfig.context = this.appConfig.context || {}; + }; - App_Class.prototype.init = function () { + App_Class.prototype.init = function () { - // update height to match all news articles displayed - this.ui.updateHeight(); - - // bind symbol change event - F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(this._refresh, this)); + // update height to match all news articles displayed + this.ui.updateHeight(); - // populate settings - this.ui.Views.change($.proxy(this._populateSettings, this)); + // bind symbol change event + F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(this._refresh, this)); - // save settings - $(this.$root).on("click", "button.save", $.proxy(this._handleSaveSettings, this)); + // populate settings + this.ui.Views.change($.proxy(this._populateSettings, this)); - // cancel settings - $(this.$root).on("click", "button.cancel", $.proxy(function () { - this.ui.Views.change(F2.Constants.Views.HOME); - }, this)); - }; + // save settings + $(this.$root).on("click", "button.save", $.proxy(this._handleSaveSettings, this)); - App_Class.prototype._handleSaveSettings = function() { + // cancel settings + $(this.$root).on("click", "button.cancel", $.proxy(function () { + this.ui.Views.change(F2.Constants.Views.HOME); + }, this)); + }; - this.appConfig.context.autoRefresh = $('form.f2-app-view input[name="autoRefresh"]', this.$root).prop('checked'); - this.appConfig.context.provider = $('form.f2-app-view input[name="provider"]:checked', this.$root).val(); + App_Class.prototype._handleSaveSettings = function () { - clearInterval(this._refreshInterval); - if (this.appConfig.context.autoRefresh) { - this._refreshInterval = setInterval($.proxy(this._refresh, this), 30000); - } + this.appConfig.context.autoRefresh = $('form.f2-app-view input[name="autoRefresh"]', this.$root).prop('checked'); + this.appConfig.context.provider = $('form.f2-app-view input[name="provider"]:checked', this.$root).val(); - this.ui.Views.change(F2.Constants.Views.HOME); - this._refresh(); - }; + clearInterval(this._refreshInterval); + if (this.appConfig.context.autoRefresh) { + this._refreshInterval = setInterval($.proxy(this._refresh, this), 30000); + } - App_Class.prototype._refresh = function (data) { - - data = data || {}; - this.appConfig.context.symbol = data.symbol || this.appConfig.context.symbol; + this.ui.Views.change(F2.Constants.Views.HOME); + this._refresh(); + }; - this.ui.showMask(this.$root, true); + App_Class.prototype._refresh = function (data) { - $.ajax({ - url: this.appConfig.manifestUrl, - data: { - params: JSON.stringify([this.appConfig], F2.appConfigReplacer) - }, - type: "post", - dataType: "jsonp", - jsonp:false, - jsonpCallback:F2.Constants.JSONP_CALLBACK + this.appConfig.appId, - context:this, - success:function (data) { - $("div.f2-app-view", this.$root).replaceWith($(data.apps[0].html).find("div.f2-app-view")); - this.ui.updateHeight(); - }, - complete:function() { - this.ui.hideMask(this.$root); - } - }) - }; + data = data || {}; + this.appConfig.context.symbol = data.symbol || this.appConfig.context.symbol; - App_Class.prototype._populateSettings = function() { + this.ui.showMask(this.$root, true); - $.each(this.appConfig.context, $.proxy(function(key, value) { + $.ajax({ + url: this.appConfig.manifestUrl, + data: { + params: JSON.stringify([this.appConfig], F2.appConfigReplacer) + }, + type: "post", + dataType: "jsonp", + jsonp: false, + jsonpCallback: F2.Constants.JSONP_CALLBACK + this.appConfig.appId, + context: this, + success: function (data) { + $("div.f2-app-view", this.$root).replaceWith($(data.apps[0].html).find("div.f2-app-view")); + this.ui.updateHeight(); + }, + complete: function () { + this.ui.hideMask(this.$root); + } + }) + }; - $('form.f2-app-view input[name="' + key + '"]', this.$root).val(value); + App_Class.prototype._populateSettings = function () { - }, this)); - }; + $.each(this.appConfig.context, $.proxy(function (key, value) { - return App_Class; + $('form.f2-app-view input[name="' + key + '"]', this.$root).val(value); + + }, this)); + }; + + return App_Class; })(); \ No newline at end of file diff --git a/examples/apps/PHP/News/news.php b/examples/apps/PHP/News/news.php index 6db5bdab..d8d246aa 100644 --- a/examples/apps/PHP/News/news.php +++ b/examples/apps/PHP/News/news.php @@ -1,141 +1,144 @@ array('display' => 'Google Finance', 'feed' => 'http://www.google.com/finance/company_news?output=rss&q='), - 'yahoo' => array('display' => 'Yahoo Finance', 'feed' => 'http://finance.yahoo.com/rss/headline?s=') - ); - - $apps = $_REQUEST["params"]; - $apps = get_magic_quotes_gpc() ? stripslashes($apps) : $apps; - $app = json_decode($apps); - $app = $app[0]; // this App doesn't support batchedRequests - $provider = (array_key_exists('context', $app) && array_key_exists('provider', $app->context) && array_key_exists($app->context->provider, $PROVIDERS)) - ? $app->context->provider - : $DEFAULT_PROVIDER; - $symbol = (array_key_exists('context', $app) && array_key_exists('symbol', $app->context)) - ? $app->context->symbol - : $DEFAULT_SYMBOL; - $serverPath = - ((!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] != "off") ? "https://" : "http://") . - $_SERVER["SERVER_NAME"] . - str_replace("news.php", "", $_SERVER["SCRIPT_NAME"]); - - // read in the news - $xml_source = file_get_contents($PROVIDERS[$provider]['feed'] . $symbol); - $doc = simplexml_load_string($xml_source); - - $newsItems = array(); - foreach ($doc->channel->item as $item) { - $newsItems[] = array ( - 'title' => $item->title, - 'desc' => $item->description, - 'link' => $item->link, - 'date' => $item->pubDate - ); - } - - // create the AppManifest object - $a = array( - "scripts" => array($serverPath . "appclass.js"), - "styles" => array($serverPath . "app.css"), - "apps" => array( - array( - "html" => join('', array( - '
    ', - renderNews($newsItems), - renderSettings(), - '
    ' - )) - ) - ) - ); - - // output the jsonp - header("Content-type: application/javascript"); - echo "F2_jsonpCallback_com_openf2_examples_php_news(" . json_encode($a, JSON_HEX_TAG) . ")"; - - /** - * Renders the news articles - * @method renderNews - * @param {Array} $newsItems The list of articles - * @return {string} The News HTML - */ - function renderNews($newsItems) { - global $MAX_ARTICLES; - global $PROVIDERS; - global $provider; - global $doc; - - $html = array( - '
    ', - /*'
    ', - '

    ', - $doc->channel->title, - '

    ', - '
    ',*/ - '
      ' - ); - - for ($i = 0; $i < $MAX_ARTICLES; $i++) { - $date = date_format(new DateTime($newsItems[$i]['date']), 'g:iA \o\n l M j, Y'); - $html[] = << array('display' => 'Google Finance', 'feed' => 'http://www.google.com/finance/company_news?output=rss&q='), + 'yahoo' => array('display' => 'Yahoo Finance', 'feed' => 'http://finance.yahoo.com/rss/headline?s=') +); + +$apps = $_REQUEST["params"]; +$apps = get_magic_quotes_gpc() ? stripslashes($apps) : $apps; +$app = json_decode($apps); +$app = $app[0]; // this App doesn't support batchedRequests +$provider = (array_key_exists('context', $app) && array_key_exists('provider', $app->context) && array_key_exists($app->context->provider, $PROVIDERS)) + ? $app->context->provider + : $DEFAULT_PROVIDER; +$symbol = (array_key_exists('context', $app) && array_key_exists('symbol', $app->context)) + ? $app->context->symbol + : $DEFAULT_SYMBOL; +$serverPath = + ((!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] != "off") ? "https://" : "http://") . + $_SERVER["SERVER_NAME"] . + str_replace("news.php", "", $_SERVER["SCRIPT_NAME"]); + +// read in the news +$xml_source = file_get_contents($PROVIDERS[$provider]['feed'] . $symbol); +$doc = simplexml_load_string($xml_source); + +$newsItems = array(); +foreach ($doc->channel->item as $item) { + $newsItems[] = array( + 'title' => $item->title, + 'desc' => $item->description, + 'link' => $item->link, + 'date' => $item->pubDate + ); +} + +// create the AppManifest object +$a = array( + "scripts" => array($serverPath . "appclass.js"), + "styles" => array($serverPath . "app.css"), + "apps" => array( + array( + "html" => join('', array( + '
      ', + renderNews($newsItems), + renderSettings(), + '
      ' + )) + ) + ) +); + +// output the jsonp +header("Content-type: application/javascript"); +echo "F2_jsonpCallback_com_openf2_examples_php_news(" . json_encode($a, JSON_HEX_TAG) . ")"; + +/** + * Renders the news articles + * @method renderNews + * @param {Array} $newsItems The list of articles + * @return {string} The News HTML + */ +function renderNews($newsItems) +{ + global $MAX_ARTICLES; + global $PROVIDERS; + global $provider; + global $doc; + + $html = array( + '
      ', + /*'
      ', + '

      ', + $doc->channel->title, + '

      ', + '
      ',*/ + '
        ' + ); + + for ($i = 0; $i < $MAX_ARTICLES; $i++) { + $date = date_format(new DateTime($newsItems[$i]['date']), 'g:iA \o\n l M j, Y'); + $html[] = << {$newsItems[$i]['title']} HTML; - } - - $html[] = join('', array( - '
      ', - '', - '
      ' - )); - - return join("", $html); - } - - /** - * Renders the settings view - * @method renderSettings - * @return {string} The settings HTML - */ - function renderSettings() { - - global $PROVIDERS; - global $provider; - $providerHtml = array(); - - foreach ($PROVIDERS as $key => $value) { - $providerHtml[] = join('', array( - '
      ' - )); - } - - $html = array( - '
      ', - '
      ', - 'News Provider:', - join('', $providerHtml), - '
      ', - ' ', - '', - '
      ', - '
      ' - ); - - return join("", $html); - } + } + + $html[] = join('', array( + '
    ', + '', + '
    ' + )); + + return join("", $html); +} + +/** + * Renders the settings view + * @method renderSettings + * @return {string} The settings HTML + */ +function renderSettings() +{ + + global $PROVIDERS; + global $provider; + $providerHtml = array(); + + foreach ($PROVIDERS as $key => $value) { + $providerHtml[] = join('', array( + '
    ' + )); + } + + $html = array( + '
    ', + '
    ', + 'News Provider:', + join('', $providerHtml), + '
    ', + ' ', + '', + '
    ', + '
    ' + ); + + return join("", $html); +} + ?> \ No newline at end of file diff --git a/examples/container-amd/css/README.md b/examples/container-amd/css/README.md index 45d10e38..57b0e974 100644 --- a/examples/container-amd/css/README.md +++ b/examples/container-amd/css/README.md @@ -4,7 +4,7 @@ F2 Containers can (and should) namespace their CSS so that the Container and App ```css .f2-example-container { - @import "bootstrap/bootstrap.less"; - @import "your-custom-css.less"; + @import "bootstrap/bootstrap.less"; + @import "your-custom-css.less"; } ``` \ No newline at end of file diff --git a/examples/container-amd/css/container.css b/examples/container-amd/css/container.css index f7e03405..f2ee377e 100644 --- a/examples/container-amd/css/container.css +++ b/examples/container-amd/css/container.css @@ -1,38 +1,38 @@ .f2-app { - margin-bottom:20px; + margin-bottom: 20px; } .f2-app-wrapper { - border: 1px solid #e7e7e7; - border-radius: 3px; + border: 1px solid #e7e7e7; + border-radius: 3px; } .f2-app-wrapper > header { - padding: 10px; - background-color: #f8f8f8 + padding: 10px; + background-color: #f8f8f8 } .f2-app header .glyphicon { - opacity: 0.7; + opacity: 0.7; } .f2-app header h2 { - margin: 0; - color: #444; - font-size: 18px; - line-height: normal; + margin: 0; + color: #444; + font-size: 18px; + line-height: normal; } -.f2-app header .btn-group{ - padding: 5px; +.f2-app header .btn-group { + padding: 5px; } .f2-app .f2-app-container { - margin-bottom: 0; - min-height: 100px; - padding: 10px; + margin-bottom: 0; + min-height: 100px; + padding: 10px; } .f2-app .f2-app-view h3 { - margin-top: 0; + margin-top: 0; } \ No newline at end of file diff --git a/examples/container-amd/index.html b/examples/container-amd/index.html index 90882815..b61c3b04 100644 --- a/examples/container-amd/index.html +++ b/examples/container-amd/index.html @@ -1,6 +1,6 @@ - + @@ -9,96 +9,103 @@ F2 - Container (AMD) Example - + - + - + - + - + - -
    +
    -