From 0b3d2000c0bcd2bb5a3af5d49a514a90f001a7d2 Mon Sep 17 00:00:00 2001 From: Alexandru DAMIAN Date: Wed, 11 Dec 2013 16:40:05 +0000 Subject: [PATCH] toaster: update static media for Toaster GUI In the process of making the GUI more usable, we bring in the static assets used during the design phase into the application. Licenses used: Bootstrap 2.3.2 under Apache License 2.0 Font Awesome under SIL OFL 1.1 (GPL compatible) and MIT licence GLYPHICONS Halflings released with Bootstrap, CC BY 3.0 jQuery 2.0.3 under MIT licence prettify.js under Apache Licence 2.0 Signed-off-by: Alexandru DAMIAN --- .../static/css/bootstrap-responsive.min.css | 9 + .../toastergui/static/css/bootstrap.min.css | 9 + lib/toaster/toastergui/static/css/default.css | 174 + .../static/css/font-awesome.min.css | 33 + .../toastergui/static/css/prettify.css | 1 + .../toastergui/static/fonts/FontAwesome.otf | Bin 0 -> 48748 bytes .../static/fonts/fontawesome-webfont.eot | Bin 0 -> 25395 bytes .../static/fonts/fontawesome-webfont.svg | 284 + .../static/fonts/fontawesome-webfont.ttf | Bin 0 -> 55096 bytes .../static/fonts/fontawesome-webfont.woff | Bin 0 -> 29380 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20290 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41236 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23292 bytes lib/toaster/toastergui/static/img/logo.png | Bin 0 -> 3020 bytes .../toastergui/static/js/bootstrap.min.js | 7 + .../{jquery-2.0.3.js => jquery-2.0.3.min.js} | 0 .../toastergui/static/js/jquery-2.0.3.min.map | 1 + lib/toaster/toastergui/static/js/jquery-ui.js | 15003 ++++++++++++++++ lib/toaster/toastergui/static/js/main.js | 497 + lib/toaster/toastergui/static/js/prettify.js | 28 + 21 files changed, 16275 insertions(+) create mode 100755 lib/toaster/toastergui/static/css/bootstrap-responsive.min.css create mode 100755 lib/toaster/toastergui/static/css/bootstrap.min.css create mode 100644 lib/toaster/toastergui/static/css/default.css create mode 100755 lib/toaster/toastergui/static/css/font-awesome.min.css create mode 100755 lib/toaster/toastergui/static/css/prettify.css create mode 100644 lib/toaster/toastergui/static/fonts/FontAwesome.otf create mode 100644 lib/toaster/toastergui/static/fonts/fontawesome-webfont.eot create mode 100644 lib/toaster/toastergui/static/fonts/fontawesome-webfont.svg create mode 100644 lib/toaster/toastergui/static/fonts/fontawesome-webfont.ttf create mode 100644 lib/toaster/toastergui/static/fonts/fontawesome-webfont.woff create mode 100644 lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.eot create mode 100644 lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.svg create mode 100644 lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.ttf create mode 100644 lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff create mode 100644 lib/toaster/toastergui/static/img/logo.png create mode 100644 lib/toaster/toastergui/static/js/bootstrap.min.js rename lib/toaster/toastergui/static/js/{jquery-2.0.3.js => jquery-2.0.3.min.js} (100%) create mode 100644 lib/toaster/toastergui/static/js/jquery-2.0.3.min.map create mode 100644 lib/toaster/toastergui/static/js/jquery-ui.js create mode 100755 lib/toaster/toastergui/static/js/main.js create mode 100755 lib/toaster/toastergui/static/js/prettify.js diff --git a/lib/toaster/toastergui/static/css/bootstrap-responsive.min.css b/lib/toaster/toastergui/static/css/bootstrap-responsive.min.css new file mode 100755 index 00000000000..05978601011 --- /dev/null +++ b/lib/toaster/toastergui/static/css/bootstrap-responsive.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.3.0 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.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}@-ms-viewport{width:device-width}.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}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.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;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.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}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.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;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.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}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;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"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;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}.row-fluid [class*="offset"]:first-child{margin-left:0}.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;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.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-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.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 .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.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:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/lib/toaster/toastergui/static/css/bootstrap.min.css b/lib/toaster/toastergui/static/css/bootstrap.min.css new file mode 100755 index 00000000000..565ea6fe797 --- /dev/null +++ b/lib/toaster/toastergui/static/css/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.3.0 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.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}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{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps 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,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}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}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;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;line-height:0;content:""}.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;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.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;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.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:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}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}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}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;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;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:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;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;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}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:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,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:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}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:#fff;border:1px solid #ccc;-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:1px \9;*margin-top:0;line-height:normal}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;background-color:#fff;border:1px solid #ccc}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:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-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)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.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}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}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.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.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:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus: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;line-height:0;content:""}.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;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.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;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 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 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{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:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 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 input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left: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;margin-bottom:0;vertical-align:middle;*zoom:1}.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;line-height:0;content:""}.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,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.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 #ddd}.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 #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;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 #ddd}.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,.table-bordered tbody:first-child tr:first-child>th: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,.table-bordered tbody:first-child tr:first-child>th: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 tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-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 tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.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-topright: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 td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;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-top:1px;*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}.icon-white,.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:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>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{width:16px;background-position:-216px -120px}.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{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.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 #000;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:#fff;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 #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.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 #000;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}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;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 .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border: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);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-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:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{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-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left: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-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);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:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;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;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);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);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:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;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;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);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);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:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;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;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);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);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:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;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;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);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);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:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);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:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \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{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.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,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright: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-top:5px;padding-right:8px;*padding-bottom:5px;padding-left: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)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.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:#04c}.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:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.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}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{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-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-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,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.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 #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.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,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.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,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.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;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.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{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.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:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.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,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{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,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.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,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top: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:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,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;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-right:0;padding-left: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{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow: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:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.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:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.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{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.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:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-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:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline: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)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;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;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);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:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \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;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-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:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>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 li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;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;outline:0;-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{top:-25%;-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}.modal.fade.in{top:10%}.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{position:relative;max-height:400px;padding:15px;overflow-y:auto}.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;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-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-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:400px;padding:1px;text-align:left;white-space:normal;background-color:#fff;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);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;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-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.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 .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-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-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;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:#333}.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{height:20px;margin-bottom:20px;overflow:hidden;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;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;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)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;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 .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .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{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.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:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} diff --git a/lib/toaster/toastergui/static/css/default.css b/lib/toaster/toastergui/static/css/default.css new file mode 100644 index 00000000000..844f6dcd567 --- /dev/null +++ b/lib/toaster/toastergui/static/css/default.css @@ -0,0 +1,174 @@ +.block-centered { margin: auto; display: block;} +.error, .red { color: #b94a48;} + +.error:hover {color:#943A38;text-decoration:none;} + +.success, +.green { color: /*#4EAC4B*/#468847;} + +.success:hover {color:#347132;text-decoration: underline;} +td > .success:hover {text-decoration: underline;} +.warning, .yellow { color: #c09853;} +.overflow-hidden { overflow: hidden;} +.large { font-size: x-large; font-weight: normal; line-height: 30px;} +.max-width { width: 100%;} +.text-right { text-align: right !important;} +.visibility-hidden { visibility: hidden;} +.hover-show:hover .visibility-hidden { visibility: visible;} +.alpha { margin-left: 0 !important;} +.omega { margin-right: 0 !important;} + +.recent-activity { margin: 40px 0;} +.recent-activity .alert, +.recent-activity .alert .progress { margin-bottom: 1em;} +.recent-activity .row-fluid, +.recent-activity .row-fluid [class*="span"] { min-height: 0;} +.recent-activity .alert-blank {color: black; background: none; border: none;} +.breadcrumb { display: inline-block;} +.section, .margin { margin: 20px 0;} +.middle { vertical-align:middle;} +select { width: auto;} + +.contributors ul { margin-left: 7px;} +.contributors li {list-style: none;} + +.box { border: 1px solid #ddd; -webkit-border-top-right-radius: 4px;border-top-right-radius: 4px;-webkit-border-top-left-radius: 4px;border-top-left-radius: 4px;-moz-border-radius-topright: 4px;-moz-border-radius-topleft: 4px;margin-bottom: 20px;} +.box-header { background-color: #f5f5f5;padding: 8px;border-bottom: 1px solid #ddd;font-size: 18px;font-weight: bold;color: #1684DA;} +.box-content { padding: 20px;} +.box-single { padding: 8px;} + +a.icon-button { color: #555; text-decoration: none;} +/*a.icon-button:after { content: " "; nbsp} */ + +.stats { margin-right: 30px;} +.stats .large { font-size: x-large; font-weight: normal; display: inline; line-height: 30px} +.stats small { width: 50px; display: inline-block; font-size: 85%;line-height: 14px;} +.task-header { column-count: 2; -webkit-column-count: 2; -moz-column-count: 2;} +.task-header strong { display: inline-block; width: 100px;} +.no-list-style { list-style: none; margin-left: 0;} +.modal { width: 800px; margin-left: -400px;} + +.right-padding td:first-child { padding-right: 40px;} +.right-padding td { padding: 4px 0px;} +.centered {margin: 0 20%;} +.auto-width { width: auto;} +.auto-width td { min-width: 150px;} + +/*a.muted:hover {cursor: default;}*/ + +#infovis { position:relative; width:600px; height:600px; margin:auto; overflow:hidden;} + +/*.tablesorter th {cursor: s-resize;} +.tablesorter th.headerSortDown {cursor: n-resize;}*/ + +.combobox input {width: 60%;margin: 0;} + +/*.custom-column, +.custom-column thead tr:last-child td:last-child {border-right: none;} +.custom-column tbody td:last-child {border-top: none;} +.custom-column thead td:last-child {border-right: 1px solid #ddd;} +.custom-column .column-button-column .column-button {padding: 4px 4px;} +.column-button-column li {margin: 10px;}*/ + +ul.tree, +ul.tree ul { list-style-type: none;background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAKAQMAAABPHKYJAAAAA1BMVEWIiIhYZW6zAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1ggGExMZBky19AAAAAtJREFUCNdjYMAEAAAUAAHlhrBKAAAAAElFTkSuQmCC) repeat-y;margin: 0;padding: 0;} +ul.tree ul { margin-left: 10px;} +ul.tree li {margin-top: 10px;padding: 0 0 0 10px;line-height: 20px;background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAUAQMAAACK1e4oAAAABlBMVEUAAwCIiIgd2JB2AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YIBhQIJYVaFGwAAAARSURBVAjXY2hgQIf/GTDFGgDSkwqATqpCHAAAAABJRU5ErkJggg==) no-repeat 0 0;} +ul.tree ul li:last-child {background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAUAQMAAACK1e4oAAAABlBMVEUAAwCIiIgd2JB2AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YIBhQIIhs+gc8AAAAQSURBVAjXY2hgQIf/GbAAAKCTBYBUjWvCAAAAAElFTkSuQmCC) no-repeat 0 0;} +ul.tree, +ul.tree > li {background: none;} + +.inline-centered {text-align: center;} + +/* Sorry in advance for these !importants. It's an emergency and the logo + doesn't fit and I'm at the pub !!! */ +.logo img {height: 30px;width: auto !important;} +.logo {padding-top: 4px !important;padding-bottom: 0px !important;} + +tr.selected {background-color: yellow;} + +.dependencies-graph img {display: none;} +.dependencies-graph .base {display: block;} +.dependencies-graph:hover {cursor: pointer;} +.dependencies-graph:hover .base {display: none;} +.dependencies-graph:hover .dependencies {display: block;} +.dependencies-graph.recommended-show:hover .base {display: none;} +.dependencies-graph.recommended-show:hover .dependencies {display: none;} +.dependencies-graph.recommended-show:hover .recommended {display: block;} +.dependencies-table.hover .package-selected {background-color: #FECF5E;} +.dependencies-table.hover .package-dependancy { background-color: #fefca3;} +.dependencies-table.hover.recommended-show .package-recommended {background-color: #fffee6;} +.bar.building {transition: none 0s ease 0s;} +.build-image {background-color: black;color: white;padding: 200px;text-align: center;} +.dropdown-menu {padding: 10px;} +.modal-footer .btn {float: left;} + +a.error:hover, a.error:focus {color:#943A38;text-decoration:underline;} +a.warning {background-color: transparent;} +a.warning:hover, a.warning:focus {color:#B38942;text-decoration:underline;} +.clickable_row:hover {background-color: #FAFAFA;cursor: pointer;} +td a {color: #333333;} +td a:hover {color: #000000;text-decoration: underline;} + +.get-help {color:#CCCCCC;} +.get-help:hover {color:#999999;cursor:pointer;} +.get-help-blue {color:#3A87AD;} +.get-help-blue:hover {color:#005580;cursor:pointer;} +.outcome-help:hover {text-decoration:none;} + +dd ul {list-style-type:none;margin-left:0px;} + +.alert-warning code, .alert-warning pre {background-color: transparent;border: none;color: #C09853;margin-bottom:0px;} +.alert-error code {background-color: transparent;border: none;color: #B94A48;margin-bottom:0px;} +.alert-error pre {background-color: transparent;border: none;color: #B94A48;word-break:normal;margin-bottom:0px;} +.alert-warning pre {word-break:normal;} +.alert-info a {font-weight:bold;} +dt, dd {line-height:25px;} +dd li {list-style-type:none;line-height:25px;} +/*.taskchanges dt {width: 300px;} +.taskchanges dd {margin-left: 320px;} +.diffsigs dt {width: 200px;} +.diffsigs dd {margin-left: 220px;} +/*.dl-horizontal dt {width: 300px;} +.dl-horizontal dd {margin-left: 320px;}*/ + +.orderBy{ cursor:pointer;} +.orderBy.ordering{font-weight: bold !important;color: #333333; text-decoration: none; } +.orderBy.ordering:hover{color: #000000; text-decoration: underline;} + +/* Belen's styles */ + +.sorted {color: #333333;} +.sorted:hover {color: #000000;text-decoration: underline;} +.icon-remove-sign:hover {color: #999999; cursor: pointer;} +.details {margin-top:30px;} +code {background-color:transparent;border:none;color: #333333;} +.muted a {color:#999999;} +.muted a:hover {color:#999999;} +dd code, .alert code {white-space: pre-wrap; word-break: break-all; word-wrap: break-word;} +dd p {line-height:20px;} +.iscommit {white-space: pre-wrap; word-break: break-all; word-wrap: break-word;} +.wrap {word-break: break-all; word-wrap: break-word;} +.divide {border-right: 1px solid #E5E5E5;} +.get-info {color:#0088CC;} +.get-info:hover {color:#005580;cursor:pointer;text-decoration:none;} +.well > .lead, .alert .lead {margin-bottom:0px;} +.one {padding-left:18px !important;} +.two {padding-left:36px !important;} +.three {padding-left:54px !important;} +.content-directory a {color:#0088CC;} +.content-directory a:hover {color:#005580;text-decoration:underline;} +.page-header {color:#5A5A5A;} +.breadcrumb {background-color:transparent;} +.progress {margin-bottom:0px;} +.lead .badge {font-size:18px; font-weight:normal; border-radius:15px; padding: 9px;} +.symlink {color:#CCCCCC;} +.highlight {background-color: #D9EDF7;} +.flash:target {-webkit-animation: target-fade 7s 1; -moz-animation: target-fade 7s 1; animation: target-fade 7s 1;} +@-webkit-keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } } +@-moz-keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } } +@keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } } +.tooltip { z-index: 2000 !important; } /* this makes tooltips work inside modal dialogs */ +.tooltip code { background-color:transparent; color:#FFFFFF; font-weight:normal; border:none; font-size: 1em; } +.manual { margin-top:11px;} +.heading-help { font-size:14px;} \ No newline at end of file diff --git a/lib/toaster/toastergui/static/css/font-awesome.min.css b/lib/toaster/toastergui/static/css/font-awesome.min.css new file mode 100755 index 00000000000..fa15fd528fe --- /dev/null +++ b/lib/toaster/toastergui/static/css/font-awesome.min.css @@ -0,0 +1,33 @@ +/*! + * Font Awesome 3.0.2 + * the iconic font designed for use with Twitter Bootstrap + * ------------------------------------------------------- + * The full suite of pictographic icons, examples, and documentation + * can be found at: http://fortawesome.github.com/Font-Awesome/ + * + * License + * ------------------------------------------------------- + * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - + * http://opensource.org/licenses/mit-license.html + * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" + + * Contact + * ------------------------------------------------------- + * Email: dave@davegandy.com + * Twitter: http://twitter.com/fortaweso_me + * Work: Lead Product Designer @ http://kyruus.com + */ + +@font-face{ + font-family:'FontAwesome'; + src:url('../fonts/fontawesome-webfont.eot?v=3.0.1'); + src:url('../fonts/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'), + url('../fonts/fontawesome-webfont.woff?v=3.0.1') format('woff'), + url('../fonts/fontawesome-webfont.ttf?v=3.0.1') format('truetype'); + font-weight:normal; + font-style:normal } + +[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0}.icon-white,.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-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}a [class^="icon-"],a [class*=" icon-"]{display:inline-block}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}.btn [class^="icon-"],.nav [class^="icon-"],.btn [class*=" icon-"],.nav [class*=" icon-"]{display:inline}.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em}.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block}.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em}li [class^="icon-"],.nav li [class^="icon-"],li [class*=" icon-"],.nav li [class*=" icon-"]{display:inline-block;width:1.25em;text-align:center}li [class^="icon-"].icon-large,.nav li [class^="icon-"].icon-large,li [class*=" icon-"].icon-large,.nav li [class*=" icon-"].icon-large{width:1.5625em}ul.icons{list-style-type:none;text-indent:-0.75em}ul.icons li [class^="icon-"],ul.icons li [class*=" icon-"]{width:.75em}.icon-muted{color:#eee}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em}.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em}.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em}.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em}.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}@-moz-document url-prefix(){.icon-spin{height:.9em}.btn .icon-spin{height:auto}.icon-spin.icon-large{height:1.25em}.btn .icon-spin.icon-large{height:.75em}}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope-alt:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"} diff --git a/lib/toaster/toastergui/static/css/prettify.css b/lib/toaster/toastergui/static/css/prettify.css new file mode 100755 index 00000000000..d44b3a2282a --- /dev/null +++ b/lib/toaster/toastergui/static/css/prettify.css @@ -0,0 +1 @@ +.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}}@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}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/lib/toaster/toastergui/static/fonts/FontAwesome.otf b/lib/toaster/toastergui/static/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..64049bf2e79940063b59be135872baadc37df6f6 GIT binary patch literal 48748 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

|K#hNQX#n1dZWY|vl>sIXthoUR~!9PBM|ff(o| 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­h5YiTlmY_*G$`Xw3Htc-}+#~ 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 LS{`)$#K_1$`0#s@ literal 0 Hc-jL100001 diff --git a/lib/toaster/toastergui/static/fonts/fontawesome-webfont.eot b/lib/toaster/toastergui/static/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..7d81019e4f174caaf5ccd785fc361f6bff196b53 GIT binary patch literal 25395 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 Xiej~G#kDNJWHI}I0000000000(xuA3 literal 0 Hc-jL100001 diff --git a/lib/toaster/toastergui/static/fonts/fontawesome-webfont.svg b/lib/toaster/toastergui/static/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000000..ba0afe5ef67 --- /dev/null +++ b/lib/toaster/toastergui/static/fonts/fontawesome-webfont.svg @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/toaster/toastergui/static/fonts/fontawesome-webfont.ttf b/lib/toaster/toastergui/static/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d46172476a3c7caf4f44946e3c40218559f3edfa GIT binary patch literal 55096 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 XNlza2a70?t$cMuW^!>+q1H=3uRsZ4F literal 0 Hc-jL100001 diff --git a/lib/toaster/toastergui/static/fonts/fontawesome-webfont.woff b/lib/toaster/toastergui/static/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..3c89ae09b88b38d3bc8563ca69f7f401b7301f45 GIT binary patch literal 29380 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 literal 0 Hc-jL100001 diff --git a/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.eot b/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..423bd5d3a20b804f596e04e5cd02fb4f16cfcbc1 GIT binary patch literal 20290 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.ttf b/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a498ef4e7c8b556fc36f580c5ff524025bb11c84 GIT binary patch literal 41236 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 TV{=Py{uFzCWO01OKaKepQ$Q2j literal 0 Hc-jL100001 diff --git a/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff b/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..d83c539b8266366dc331c5f746714caefb84c47d GIT binary patch literal 23292 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 literal 0 Hc-jL100001 diff --git a/lib/toaster/toastergui/static/img/logo.png b/lib/toaster/toastergui/static/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..35ad733ed6306e05dab94c2ba8d45c32fa19ca71 GIT binary patch literal 3020 zc-nPUc|25a7r&IUrW8sU60$RMXUNPQjWHXtWTzCx$j*?h*P0~RsiE~pw4o4@w|=H% zi|m9X`%Y<7S$gla{NB&|$NTv__uO;NbDr;czUQ2|bIH`0F2pav4*-CWK7(Qgzc0cM z$h!%aai^w_!LQ9Ox<CW$oIgb$*L`WV7$iZux@A|f#`CV{3wVj!tWBn=&^rluZ9p}~*VPM;-AZNm!cNldk2w5#>F75)VGlKwnz}YBYIqtNk5m<>vsMIT1~C6L5nA`Ja%XH% zro*{5CT(pbU`f%^(g$@Y>o-{)0A$9HU?dj?+JHs;NXOTpkQA%M#IAZ^YVh!XM-3vs zvSoiWV{^cKv*v5wy?0l9ByQPX^XA#aB@pp_V2etR5zZy!&BFZ4Bt>p1-P0HD+;4g) zO7yzj@_VM@lC|`MU2;2x-5a$!mlOFvObRNc1WdVpP3YIN3%&OPh!O9{@QnSZg-r+BBrbIAp7IvrO$k*s8VwF75Rc6!xJHY$vhvr@d}5% ze&A-kCwC2p%l1UD&fiAVqt1rm=ptwP9ku#G0&|nR8jnmx{8-yZu=%YPPO&e}bSwL9 z9h3bep5|fPFes+|9{)vzT3zxMlx!PS`&O51Q}(a+j%a9`YLIW%u^LChDJF-NY7+Ub z>IkLR!1sGtI`TC+Wk{z0u{@Ft*x>VF*!sa=iU8!{3hj()1b{8^`V?IYo2prxb3sSw zyDFn?=IfYRWH}Mp{ft6hnOAmvBF+8s^Rd>kyqA*i)3wqy6G~5bM(Hq0c~v{vI+vdA zZL?BTQp(Z2pKVg|Py)L^XZ!aZq;r! z1Y9}x+u^+T$?TX?sukZ=oMjqV~c63tAo%%CB@lE zSr3mkL8C8cq>AGnWXHr0)z3=J&3y^o5v{9u+3@z*#P-w$hbuuUw@YTVpAGQaz;TIV?rg>#`9o-!t!CFk>E z%w38vRmNl+?l5$lU-CD0#9bR>4-Rf?cjRX;T1SOvc%p^}-Y-Tlx6n+d^Bn5jaZlX^vs=x+!K5=p8`{g{9W%*74qt~v2C^(i zTDdqhP3av>Gq0fEnQz{>+dB_ArAK|L9(rkbVo&DYq6xpZHxgsPzIK~PV;hBSS1M|hv zfw{x6AEq4-w}pi96z?ju4Tcdu(a-_exA-vMj1ncUL7} zkoxu9t(wlh$ANNrJ|xB;dnPaLItyM3+KRB z)U0Puxm(pc7ajbnKE#y&(B_rM>KmUgew#mN0FejOhuW)B7eSW1A}%nC0X5#=$K`=n zYEy~0Q$0cEj1S13l}(LP`C+;9i9mqo-g&7^^MQe79KIi6e)nRlEq}UY^vNAm!HBxVx4L z`nEEvdxkkFWbv<-MFaS2N;dwP-!cutm=dm{@gYTn+RESjD&|JX|H?nrK-_Y7c;9K3 zGL>~S;hl{=z4?IEgp|IPGRjyY&sRJ{+CK8%B0^e~Q{z0fp2qA{L8je$`iAc#o^G;@{|45k!*@Yb@)zt_3OnItkId-Af3>jv#mv;fyVV$ z_sSS}kZ(VOt{Pfsskr5;_ZYrs^WLg^@wKkk2NYXAa<=2IDs_bmQ|&D=V`co7L(4JZ zUV%)fBAYYyQi&~=uSdlDWu-g5DBHOg9eR0Zr#R!IkRysYr->(bc-TL75h!nqtx(E)NCuuj>UTkKx)?c_1Q+Qf))Hp1w&NBp{!1~$zv(8GV&=;An5YS z_JdNnwU^84`C|LjjN=UD=M|KcSaNQ^qU=WZPsbg{xr)OegPN_G^mQksG`vp z=tFok8jl8*H8k)V8r~>A!T&kn>Fwmo4F3NIPthis.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('

'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); \ No newline at end of file diff --git a/lib/toaster/toastergui/static/js/jquery-2.0.3.js b/lib/toaster/toastergui/static/js/jquery-2.0.3.min.js similarity index 100% rename from lib/toaster/toastergui/static/js/jquery-2.0.3.js rename to lib/toaster/toastergui/static/js/jquery-2.0.3.min.js diff --git a/lib/toaster/toastergui/static/js/jquery-2.0.3.min.map b/lib/toaster/toastergui/static/js/jquery-2.0.3.min.map new file mode 100644 index 00000000000..472d71bb0be --- /dev/null +++ b/lib/toaster/toastergui/static/js/jquery-2.0.3.min.map @@ -0,0 +1 @@ +{"version":3,"file":"jquery-2.0.3.min.js","sources":["jquery-2.0.3.js"],"names":["window","undefined","rootjQuery","readyList","core_strundefined","location","document","docElem","documentElement","_jQuery","jQuery","_$","$","class2type","core_deletedIds","core_version","core_concat","concat","core_push","push","core_slice","slice","core_indexOf","indexOf","core_toString","toString","core_hasOwn","hasOwnProperty","core_trim","trim","selector","context","fn","init","core_pnum","source","core_rnotwhite","rquickExpr","rsingleTag","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","completed","removeEventListener","ready","prototype","jquery","constructor","match","elem","this","charAt","length","exec","find","merge","parseHTML","nodeType","ownerDocument","test","isPlainObject","isFunction","attr","getElementById","parentNode","makeArray","toArray","call","get","num","pushStack","elems","ret","prevObject","each","callback","args","promise","done","apply","arguments","first","eq","last","i","len","j","map","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isArray","expando","Math","random","replace","noConflict","isReady","readyWait","holdReady","hold","wait","resolveWith","trigger","off","obj","type","Array","isWindow","isNumeric","isNaN","parseFloat","isFinite","String","e","isEmptyObject","error","msg","Error","data","keepScripts","parsed","scripts","createElement","buildFragment","remove","childNodes","parseJSON","JSON","parse","parseXML","xml","tmp","DOMParser","parseFromString","getElementsByTagName","noop","globalEval","code","script","indirect","eval","text","head","appendChild","removeChild","camelCase","string","nodeName","toLowerCase","value","isArraylike","arr","results","Object","inArray","second","l","grep","inv","retVal","arg","guid","proxy","access","key","chainable","emptyGet","raw","bulk","now","Date","swap","old","style","Deferred","readyState","setTimeout","addEventListener","split","support","cachedruns","Expr","getText","isXML","compile","outermostContext","sortInput","setDocument","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","hasDuplicate","sortOrder","a","b","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rtrim","RegExp","rcomma","rcombinators","rsibling","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rnative","rinputs","rheader","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","els","Sizzle","seed","m","groups","nid","newContext","newSelector","id","getElementsByClassName","qsa","tokenize","getAttribute","setAttribute","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","keys","cache","cacheLength","shift","markFunction","assert","div","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","doc","parent","defaultView","attachEvent","top","className","createComment","innerHTML","firstChild","getById","getElementsByName","filter","attrId","getAttributeNode","tag","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","dirkey","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","matcherCachedRuns","bySet","byElement","superMatcher","expandContext","setMatched","matchedCount","outermost","contextBackup","dirrunsUnique","group","contexts","token","div1","defaultValue","unique","isXMLDoc","optionsCache","createOptions","object","flag","Callbacks","memory","fired","firing","firingStart","firingLength","firingIndex","list","stack","once","fire","stopOnFalse","self","disable","add","index","lock","locked","fireWith","func","tuples","state","always","deferred","fail","then","fns","newDefer","tuple","action","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","progressContexts","resolveContexts","fragment","createDocumentFragment","opt","checkOn","optSelected","reliableMarginRight","boxSizingReliable","pixelPosition","noCloneChecked","cloneNode","optDisabled","radioValue","checkClone","focusinBubbles","backgroundClip","clearCloneStyle","container","marginDiv","divReset","body","cssText","zoom","boxSizing","offsetWidth","getComputedStyle","width","marginRight","data_user","data_priv","rbrace","rmultiDash","Data","defineProperty","uid","accepts","owner","descriptor","unlock","defineProperties","set","prop","stored","camel","hasData","discard","acceptData","removeData","_data","_removeData","dataAttr","camelKey","queue","dequeue","startLength","hooks","_queueHooks","next","stop","setter","delay","time","fx","speeds","timeout","clearTimeout","clearQueue","count","defer","nodeHook","boolHook","rclass","rreturn","rfocusable","removeAttr","removeProp","propFix","addClass","classes","clazz","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","valHooks","option","one","max","optionSet","nType","attrHooks","propName","attrNames","for","class","notxml","propHooks","hasAttribute","getter","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","event","global","types","handleObjIn","eventHandle","events","t","handleObj","special","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","bubbleType","ontype","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","props","fixHooks","keyHooks","original","which","charCode","keyCode","mouseHooks","eventDoc","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","load","blur","click","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","getPreventDefault","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","orig","related","relatedTarget","attaches","on","origFn","triggerHandler","isSimple","rparentsprev","rneedsContext","guaranteedUnique","children","contents","prev","targets","winnow","is","closest","pos","prevAll","addBack","sibling","parents","parentsUntil","until","nextAll","nextUntil","prevUntil","siblings","contentDocument","reverse","truncate","n","qualifier","rxhtmlTag","rtagName","rhtml","rnoInnerhtml","manipulation_rcheckableType","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","append","createTextNode","domManip","manipulationTarget","prepend","insertBefore","before","after","keepData","cleanData","getAll","setGlobalEval","dataAndEvents","deepDataAndEvents","html","replaceWith","detach","allowIntersection","hasScripts","iNoClone","disableScript","restoreScript","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","srcElements","destElements","inPage","fixInput","cloneCopyEvent","selection","wrap","nodes","url","ajax","dataType","async","throws","content","refElements","dest","pdataOld","pdataCur","udataOld","udataCur","wrapAll","firstElementChild","wrapInner","unwrap","curCSS","iframe","rdisplayswap","rmargin","rnumsplit","rnumnonpx","rrelNum","elemdisplay","BODY","cssShow","position","visibility","display","cssNormalTransform","letterSpacing","fontWeight","cssExpand","cssPrefixes","vendorPropName","capName","origName","isHidden","el","css","getStyles","showHide","show","hidden","css_defaultDisplay","styles","hide","toggle","cssHooks","opacity","computed","cssNumber","columnCount","fillOpacity","lineHeight","order","orphans","widows","zIndex","cssProps","float","extra","_computed","minWidth","maxWidth","getPropertyValue","setPositiveNumber","subtract","augmentWidthOrHeight","isBorderBox","getWidthOrHeight","valueIsBorderBox","offsetHeight","actualDisplay","contentWindow","write","close","visible","margin","padding","border","prefix","suffix","expand","expanded","parts","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","serialize","param","serializeArray","traditional","s","encodeURIComponent","ajaxSettings","buildParams","v","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","ajaxLocParts","ajaxLocation","ajax_nonce","ajax_rquery","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","_load","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","params","response","responseText","complete","status","active","lastModified","etag","isLocal","processData","contentType","*","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","abort","statusText","finalText","success","method","crossDomain","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ajaxHandleResponses","ajaxConvert","rejectWith","getJSON","getScript","ct","finalDataType","firstDataType","conv2","current","conv","dataFilter","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","xhr","XMLHttpRequest","xhrSupported","xhrSuccessStatus",1223,"xhrId","xhrCallbacks","ActiveXObject","cors","open","username","xhrFields","onload","onerror","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","tween","createTween","unit","scale","maxIterations","createFxNow","animation","collection","Animation","properties","stopped","tick","currentTime","startTime","duration","percent","tweens","run","opts","specialEasing","originalProperties","Tween","easing","gotoEnd","propFilter","timer","anim","tweener","prefilter","oldfire","dataShow","unqueued","overflow","overflowX","overflowY","eased","step","cssFn","speed","animate","genFx","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","includeWidth","height","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","linear","p","swing","cos","PI","interval","setInterval","clearInterval","slow","fast","animated","offset","setOffset","win","box","left","getBoundingClientRect","getWindow","pageYOffset","pageXOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","module","exports","define","amd"],"mappings":"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"} \ No newline at end of file diff --git a/lib/toaster/toastergui/static/js/jquery-ui.js b/lib/toaster/toastergui/static/js/jquery-ui.js new file mode 100644 index 00000000000..7b727e74350 --- /dev/null +++ b/lib/toaster/toastergui/static/js/jquery-ui.js @@ -0,0 +1,15003 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ +(function( $, undefined ) { + +var uuid = 0, + runiqueId = /^ui-id-\d+$/; + +// $.ui might exist from components with no dependencies, e.g., $.ui.position +$.ui = $.ui || {}; + +$.extend( $.ui, { + version: "1.10.3", + + keyCode: { + BACKSPACE: 8, + COMMA: 188, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + LEFT: 37, + NUMPAD_ADD: 107, + NUMPAD_DECIMAL: 110, + NUMPAD_DIVIDE: 111, + NUMPAD_ENTER: 108, + NUMPAD_MULTIPLY: 106, + NUMPAD_SUBTRACT: 109, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SPACE: 32, + TAB: 9, + UP: 38 + } +}); + +// plugins +$.fn.extend({ + focus: (function( orig ) { + return function( delay, fn ) { + return typeof delay === "number" ? + this.each(function() { + var elem = this; + setTimeout(function() { + $( elem ).focus(); + if ( fn ) { + fn.call( elem ); + } + }, delay ); + }) : + orig.apply( this, arguments ); + }; + })( $.fn.focus ), + + scrollParent: function() { + var scrollParent; + if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) { + scrollParent = this.parents().filter(function() { + return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); + }).eq(0); + } else { + scrollParent = this.parents().filter(function() { + return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); + }).eq(0); + } + + return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent; + }, + + zIndex: function( zIndex ) { + if ( zIndex !== undefined ) { + return this.css( "zIndex", zIndex ); + } + + if ( this.length ) { + var elem = $( this[ 0 ] ), position, value; + while ( elem.length && elem[ 0 ] !== document ) { + // Ignore z-index if position is set to a value where z-index is ignored by the browser + // This makes behavior of this function consistent across browsers + // WebKit always returns auto if the element is positioned + position = elem.css( "position" ); + if ( position === "absolute" || position === "relative" || position === "fixed" ) { + // IE returns 0 when zIndex is not specified + // other browsers return a string + // we ignore the case of nested elements with an explicit value of 0 + //
+ value = parseInt( elem.css( "zIndex" ), 10 ); + if ( !isNaN( value ) && value !== 0 ) { + return value; + } + } + elem = elem.parent(); + } + } + + return 0; + }, + + uniqueId: function() { + return this.each(function() { + if ( !this.id ) { + this.id = "ui-id-" + (++uuid); + } + }); + }, + + removeUniqueId: function() { + return this.each(function() { + if ( runiqueId.test( this.id ) ) { + $( this ).removeAttr( "id" ); + } + }); + } +}); + +// selectors +function focusable( element, isTabIndexNotNaN ) { + var map, mapName, img, + nodeName = element.nodeName.toLowerCase(); + if ( "area" === nodeName ) { + map = element.parentNode; + mapName = map.name; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = $( "img[usemap=#" + mapName + "]" )[0]; + return !!img && visible( img ); + } + return ( /input|select|textarea|button|object/.test( nodeName ) ? + !element.disabled : + "a" === nodeName ? + element.href || isTabIndexNotNaN : + isTabIndexNotNaN) && + // the element and all of its ancestors must be visible + visible( element ); +} + +function visible( element ) { + return $.expr.filters.visible( element ) && + !$( element ).parents().addBack().filter(function() { + return $.css( this, "visibility" ) === "hidden"; + }).length; +} + +$.extend( $.expr[ ":" ], { + data: $.expr.createPseudo ? + $.expr.createPseudo(function( dataName ) { + return function( elem ) { + return !!$.data( elem, dataName ); + }; + }) : + // support: jQuery <1.8 + function( elem, i, match ) { + return !!$.data( elem, match[ 3 ] ); + }, + + focusable: function( element ) { + return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); + }, + + tabbable: function( element ) { + var tabIndex = $.attr( element, "tabindex" ), + isTabIndexNaN = isNaN( tabIndex ); + return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); + } +}); + +// support: jQuery <1.8 +if ( !$( "
" ).outerWidth( 1 ).jquery ) { + $.each( [ "Width", "Height" ], function( i, name ) { + var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], + type = name.toLowerCase(), + orig = { + innerWidth: $.fn.innerWidth, + innerHeight: $.fn.innerHeight, + outerWidth: $.fn.outerWidth, + outerHeight: $.fn.outerHeight + }; + + function reduce( elem, size, border, margin ) { + $.each( side, function() { + size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; + if ( border ) { + size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; + } + if ( margin ) { + size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; + } + }); + return size; + } + + $.fn[ "inner" + name ] = function( size ) { + if ( size === undefined ) { + return orig[ "inner" + name ].call( this ); + } + + return this.each(function() { + $( this ).css( type, reduce( this, size ) + "px" ); + }); + }; + + $.fn[ "outer" + name] = function( size, margin ) { + if ( typeof size !== "number" ) { + return orig[ "outer" + name ].call( this, size ); + } + + return this.each(function() { + $( this).css( type, reduce( this, size, true, margin ) + "px" ); + }); + }; + }); +} + +// support: jQuery <1.8 +if ( !$.fn.addBack ) { + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) +if ( $( "" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { + $.fn.removeData = (function( removeData ) { + return function( key ) { + if ( arguments.length ) { + return removeData.call( this, $.camelCase( key ) ); + } else { + return removeData.call( this ); + } + }; + })( $.fn.removeData ); +} + + + + + +// deprecated +$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); + +$.support.selectstart = "onselectstart" in document.createElement( "div" ); +$.fn.extend({ + disableSelection: function() { + return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) + + ".ui-disableSelection", function( event ) { + event.preventDefault(); + }); + }, + + enableSelection: function() { + return this.unbind( ".ui-disableSelection" ); + } +}); + +$.extend( $.ui, { + // $.ui.plugin is deprecated. Use $.widget() extensions instead. + plugin: { + add: function( module, option, set ) { + var i, + proto = $.ui[ module ].prototype; + for ( i in set ) { + proto.plugins[ i ] = proto.plugins[ i ] || []; + proto.plugins[ i ].push( [ option, set[ i ] ] ); + } + }, + call: function( instance, name, args ) { + var i, + set = instance.plugins[ name ]; + if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) { + return; + } + + for ( i = 0; i < set.length; i++ ) { + if ( instance.options[ set[ i ][ 0 ] ] ) { + set[ i ][ 1 ].apply( instance.element, args ); + } + } + } + }, + + // only used by resizable + hasScroll: function( el, a ) { + + //If overflow is hidden, the element might have extra content, but the user wants to hide it + if ( $( el ).css( "overflow" ) === "hidden") { + return false; + } + + var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", + has = false; + + if ( el[ scroll ] > 0 ) { + return true; + } + + // TODO: determine which cases actually cause this to happen + // if the element doesn't have the scroll set, see if it's possible to + // set the scroll + el[ scroll ] = 1; + has = ( el[ scroll ] > 0 ); + el[ scroll ] = 0; + return has; + } +}); + +})( jQuery ); + +(function( $, undefined ) { + +var uuid = 0, + slice = Array.prototype.slice, + _cleanData = $.cleanData; +$.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + try { + $( elem ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} + } + _cleanData( elems ); +}; + +$.widget = function( name, base, prototype ) { + var fullName, existingConstructor, constructor, basePrototype, + // proxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + proxiedPrototype = {}, + namespace = name.split( "." )[ 0 ]; + + name = name.split( "." )[ 1 ]; + fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + // allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + // extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + // copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + // track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + }); + + basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( !$.isFunction( value ) ) { + proxiedPrototype[ prop ] = value; + return; + } + proxiedPrototype[ prop ] = (function() { + var _super = function() { + return base.prototype[ prop ].apply( this, arguments ); + }, + _superApply = function( args ) { + return base.prototype[ prop ].apply( this, args ); + }; + return function() { + var __super = this._super, + __superApply = this._superApply, + returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + })(); + }); + constructor.prototype = $.widget.extend( basePrototype, { + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + }); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); + }); + // remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); +}; + +$.widget.extend = function( target ) { + var input = slice.call( arguments, 1 ), + inputIndex = 0, + inputLength = input.length, + key, + value; + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName || name; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string", + args = slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.widget.extend.apply( null, [ options ].concat(args) ) : + options; + + if ( isMethodCall ) { + this.each(function() { + var methodValue, + instance = $.data( this, fullName ); + if ( !instance ) { + return $.error( "cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + " widget instance" ); + } + methodValue = instance[ options ].apply( instance, args ); + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} )._init(); + } else { + $.data( this, fullName, new object( options, this ) ); + } + }); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
", + options: { + disabled: false, + + // callbacks + create: null + }, + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = uuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + }); + this.document = $( element.style ? + // element within the document + element.ownerDocument : + // element is window or document + element.document || element ); + this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); + } + + this._create(); + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + _getCreateOptions: $.noop, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, + + destroy: function() { + this._destroy(); + // we can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .unbind( this.eventNamespace ) + // 1.9 BC for #7810 + // TODO remove dual storage + .removeData( this.widgetName ) + .removeData( this.widgetFullName ) + // support: jquery <1.6.3 + // http://bugs.jquery.com/ticket/9413 + .removeData( $.camelCase( this.widgetFullName ) ); + this.widget() + .unbind( this.eventNamespace ) + .removeAttr( "aria-disabled" ) + .removeClass( + this.widgetFullName + "-disabled " + + "ui-state-disabled" ); + + // clean up events and states + this.bindings.unbind( this.eventNamespace ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + }, + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key, + parts, + curOption, + i; + + if ( arguments.length === 0 ) { + // don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( value === undefined ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( value === undefined ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + _setOption: function( key, value ) { + this.options[ key ] = value; + + if ( key === "disabled" ) { + this.widget() + .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) + .attr( "aria-disabled", value ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + } + + return this; + }, + + enable: function() { + return this._setOption( "disabled", false ); + }, + disable: function() { + return this._setOption( "disabled", true ); + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement, + instance = this; + + // no suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // no element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + // accept selectors, DOM elements + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + // allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^(\w+)\s*(.*)$/ ), + eventName = match[1] + instance.eventNamespace, + selector = match[2]; + if ( selector ) { + delegateElement.delegate( selector, eventName, handlerProxy ); + } else { + element.bind( eventName, handlerProxy ); + } + }); + }, + + _off: function( element, eventName ) { + eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; + element.unbind( eventName ).undelegate( eventName ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + $( event.currentTarget ).addClass( "ui-state-hover" ); + }, + mouseleave: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-hover" ); + } + }); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + $( event.currentTarget ).addClass( "ui-state-focus" ); + }, + focusout: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-focus" ); + } + }); + }, + + _trigger: function( type, event, data ) { + var prop, orig, + callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[0], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + var hasOptions, + effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + if ( options.delay ) { + element.delay( options.delay ); + } + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue(function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + }); + } + }; +}); + +})( jQuery ); + +(function( $, undefined ) { + +var mouseHandled = false; +$( document ).mouseup( function() { + mouseHandled = false; +}); + +$.widget("ui.mouse", { + version: "1.10.3", + options: { + cancel: "input,textarea,button,select,option", + distance: 1, + delay: 0 + }, + _mouseInit: function() { + var that = this; + + this.element + .bind("mousedown."+this.widgetName, function(event) { + return that._mouseDown(event); + }) + .bind("click."+this.widgetName, function(event) { + if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { + $.removeData(event.target, that.widgetName + ".preventClickEvent"); + event.stopImmediatePropagation(); + return false; + } + }); + + this.started = false; + }, + + // TODO: make sure destroying one instance of mouse doesn't mess with + // other instances of mouse + _mouseDestroy: function() { + this.element.unbind("."+this.widgetName); + if ( this._mouseMoveDelegate ) { + $(document) + .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) + .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); + } + }, + + _mouseDown: function(event) { + // don't let more than one widget handle mouseStart + if( mouseHandled ) { return; } + + // we may have missed mouseup (out of window) + (this._mouseStarted && this._mouseUp(event)); + + this._mouseDownEvent = event; + + var that = this, + btnIsLeft = (event.which === 1), + // event.target.nodeName works around a bug in IE 8 with + // disabled inputs (#7620) + elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); + if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { + return true; + } + + this.mouseDelayMet = !this.options.delay; + if (!this.mouseDelayMet) { + this._mouseDelayTimer = setTimeout(function() { + that.mouseDelayMet = true; + }, this.options.delay); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = (this._mouseStart(event) !== false); + if (!this._mouseStarted) { + event.preventDefault(); + return true; + } + } + + // Click event may never have fired (Gecko & Opera) + if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { + $.removeData(event.target, this.widgetName + ".preventClickEvent"); + } + + // these delegates are required to keep context + this._mouseMoveDelegate = function(event) { + return that._mouseMove(event); + }; + this._mouseUpDelegate = function(event) { + return that._mouseUp(event); + }; + $(document) + .bind("mousemove."+this.widgetName, this._mouseMoveDelegate) + .bind("mouseup."+this.widgetName, this._mouseUpDelegate); + + event.preventDefault(); + + mouseHandled = true; + return true; + }, + + _mouseMove: function(event) { + // IE mouseup check - mouseup happened when mouse was out of window + if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) { + return this._mouseUp(event); + } + + if (this._mouseStarted) { + this._mouseDrag(event); + return event.preventDefault(); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = + (this._mouseStart(this._mouseDownEvent, event) !== false); + (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); + } + + return !this._mouseStarted; + }, + + _mouseUp: function(event) { + $(document) + .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) + .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); + + if (this._mouseStarted) { + this._mouseStarted = false; + + if (event.target === this._mouseDownEvent.target) { + $.data(event.target, this.widgetName + ".preventClickEvent", true); + } + + this._mouseStop(event); + } + + return false; + }, + + _mouseDistanceMet: function(event) { + return (Math.max( + Math.abs(this._mouseDownEvent.pageX - event.pageX), + Math.abs(this._mouseDownEvent.pageY - event.pageY) + ) >= this.options.distance + ); + }, + + _mouseDelayMet: function(/* event */) { + return this.mouseDelayMet; + }, + + // These are placeholder methods, to be overriden by extending plugin + _mouseStart: function(/* event */) {}, + _mouseDrag: function(/* event */) {}, + _mouseStop: function(/* event */) {}, + _mouseCapture: function(/* event */) { return true; } +}); + +})(jQuery); + +(function( $, undefined ) { + +$.widget("ui.draggable", $.ui.mouse, { + version: "1.10.3", + widgetEventPrefix: "drag", + options: { + addClasses: true, + appendTo: "parent", + axis: false, + connectToSortable: false, + containment: false, + cursor: "auto", + cursorAt: false, + grid: false, + handle: false, + helper: "original", + iframeFix: false, + opacity: false, + refreshPositions: false, + revert: false, + revertDuration: 500, + scope: "default", + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + snap: false, + snapMode: "both", + snapTolerance: 20, + stack: false, + zIndex: false, + + // callbacks + drag: null, + start: null, + stop: null + }, + _create: function() { + + if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) { + this.element[0].style.position = "relative"; + } + if (this.options.addClasses){ + this.element.addClass("ui-draggable"); + } + if (this.options.disabled){ + this.element.addClass("ui-draggable-disabled"); + } + + this._mouseInit(); + + }, + + _destroy: function() { + this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" ); + this._mouseDestroy(); + }, + + _mouseCapture: function(event) { + + var o = this.options; + + // among others, prevent a drag on a resizable-handle + if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) { + return false; + } + + //Quit if we're not on a valid handle + this.handle = this._getHandle(event); + if (!this.handle) { + return false; + } + + $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { + $("
") + .css({ + width: this.offsetWidth+"px", height: this.offsetHeight+"px", + position: "absolute", opacity: "0.001", zIndex: 1000 + }) + .css($(this).offset()) + .appendTo("body"); + }); + + return true; + + }, + + _mouseStart: function(event) { + + var o = this.options; + + //Create and append the visible helper + this.helper = this._createHelper(event); + + this.helper.addClass("ui-draggable-dragging"); + + //Cache the helper size + this._cacheHelperProportions(); + + //If ddmanager is used for droppables, set the global draggable + if($.ui.ddmanager) { + $.ui.ddmanager.current = this; + } + + /* + * - Position generation - + * This block generates everything position related - it's the core of draggables. + */ + + //Cache the margins of the original element + this._cacheMargins(); + + //Store the helper's css position + this.cssPosition = this.helper.css( "position" ); + this.scrollParent = this.helper.scrollParent(); + this.offsetParent = this.helper.offsetParent(); + this.offsetParentCssPosition = this.offsetParent.css( "position" ); + + //The element's absolute position on the page minus margins + this.offset = this.positionAbs = this.element.offset(); + this.offset = { + top: this.offset.top - this.margins.top, + left: this.offset.left - this.margins.left + }; + + //Reset scroll cache + this.offset.scroll = false; + + $.extend(this.offset, { + click: { //Where the click happened, relative to the element + left: event.pageX - this.offset.left, + top: event.pageY - this.offset.top + }, + parent: this._getParentOffset(), + relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper + }); + + //Generate the original position + this.originalPosition = this.position = this._generatePosition(event); + this.originalPageX = event.pageX; + this.originalPageY = event.pageY; + + //Adjust the mouse offset relative to the helper if "cursorAt" is supplied + (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); + + //Set a containment if given in the options + this._setContainment(); + + //Trigger event + callbacks + if(this._trigger("start", event) === false) { + this._clear(); + return false; + } + + //Recache the helper size + this._cacheHelperProportions(); + + //Prepare the droppable offsets + if ($.ui.ddmanager && !o.dropBehaviour) { + $.ui.ddmanager.prepareOffsets(this, event); + } + + + this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position + + //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003) + if ( $.ui.ddmanager ) { + $.ui.ddmanager.dragStart(this, event); + } + + return true; + }, + + _mouseDrag: function(event, noPropagation) { + // reset any necessary cached properties (see #5009) + if ( this.offsetParentCssPosition === "fixed" ) { + this.offset.parent = this._getParentOffset(); + } + + //Compute the helpers position + this.position = this._generatePosition(event); + this.positionAbs = this._convertPositionTo("absolute"); + + //Call plugins and callbacks and use the resulting position if something is returned + if (!noPropagation) { + var ui = this._uiHash(); + if(this._trigger("drag", event, ui) === false) { + this._mouseUp({}); + return false; + } + this.position = ui.position; + } + + if(!this.options.axis || this.options.axis !== "y") { + this.helper[0].style.left = this.position.left+"px"; + } + if(!this.options.axis || this.options.axis !== "x") { + this.helper[0].style.top = this.position.top+"px"; + } + if($.ui.ddmanager) { + $.ui.ddmanager.drag(this, event); + } + + return false; + }, + + _mouseStop: function(event) { + + //If we are using droppables, inform the manager about the drop + var that = this, + dropped = false; + if ($.ui.ddmanager && !this.options.dropBehaviour) { + dropped = $.ui.ddmanager.drop(this, event); + } + + //if a drop comes from outside (a sortable) + if(this.dropped) { + dropped = this.dropped; + this.dropped = false; + } + + //if the original element is no longer in the DOM don't bother to continue (see #8269) + if ( this.options.helper === "original" && !$.contains( this.element[ 0 ].ownerDocument, this.element[ 0 ] ) ) { + return false; + } + + if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { + $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() { + if(that._trigger("stop", event) !== false) { + that._clear(); + } + }); + } else { + if(this._trigger("stop", event) !== false) { + this._clear(); + } + } + + return false; + }, + + _mouseUp: function(event) { + //Remove frame helpers + $("div.ui-draggable-iframeFix").each(function() { + this.parentNode.removeChild(this); + }); + + //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003) + if( $.ui.ddmanager ) { + $.ui.ddmanager.dragStop(this, event); + } + + return $.ui.mouse.prototype._mouseUp.call(this, event); + }, + + cancel: function() { + + if(this.helper.is(".ui-draggable-dragging")) { + this._mouseUp({}); + } else { + this._clear(); + } + + return this; + + }, + + _getHandle: function(event) { + return this.options.handle ? + !!$( event.target ).closest( this.element.find( this.options.handle ) ).length : + true; + }, + + _createHelper: function(event) { + + var o = this.options, + helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element); + + if(!helper.parents("body").length) { + helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo)); + } + + if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) { + helper.css("position", "absolute"); + } + + return helper; + + }, + + _adjustOffsetFromHelper: function(obj) { + if (typeof obj === "string") { + obj = obj.split(" "); + } + if ($.isArray(obj)) { + obj = {left: +obj[0], top: +obj[1] || 0}; + } + if ("left" in obj) { + this.offset.click.left = obj.left + this.margins.left; + } + if ("right" in obj) { + this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + } + if ("top" in obj) { + this.offset.click.top = obj.top + this.margins.top; + } + if ("bottom" in obj) { + this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + } + }, + + _getParentOffset: function() { + + //Get the offsetParent and cache its position + var po = this.offsetParent.offset(); + + // This is a special case where we need to modify a offset calculated on start, since the following happened: + // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent + // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that + // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag + if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { + po.left += this.scrollParent.scrollLeft(); + po.top += this.scrollParent.scrollTop(); + } + + //This needs to be actually done for all browsers, since pageX/pageY includes this information + //Ugly IE fix + if((this.offsetParent[0] === document.body) || + (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { + po = { top: 0, left: 0 }; + } + + return { + top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), + left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + }; + + }, + + _getRelativeOffset: function() { + + if(this.cssPosition === "relative") { + var p = this.element.position(); + return { + top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), + left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + }; + } else { + return { top: 0, left: 0 }; + } + + }, + + _cacheMargins: function() { + this.margins = { + left: (parseInt(this.element.css("marginLeft"),10) || 0), + top: (parseInt(this.element.css("marginTop"),10) || 0), + right: (parseInt(this.element.css("marginRight"),10) || 0), + bottom: (parseInt(this.element.css("marginBottom"),10) || 0) + }; + }, + + _cacheHelperProportions: function() { + this.helperProportions = { + width: this.helper.outerWidth(), + height: this.helper.outerHeight() + }; + }, + + _setContainment: function() { + + var over, c, ce, + o = this.options; + + if ( !o.containment ) { + this.containment = null; + return; + } + + if ( o.containment === "window" ) { + this.containment = [ + $( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left, + $( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top, + $( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left, + $( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top + ]; + return; + } + + if ( o.containment === "document") { + this.containment = [ + 0, + 0, + $( document ).width() - this.helperProportions.width - this.margins.left, + ( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top + ]; + return; + } + + if ( o.containment.constructor === Array ) { + this.containment = o.containment; + return; + } + + if ( o.containment === "parent" ) { + o.containment = this.helper[ 0 ].parentNode; + } + + c = $( o.containment ); + ce = c[ 0 ]; + + if( !ce ) { + return; + } + + over = c.css( "overflow" ) !== "hidden"; + + this.containment = [ + ( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ), + ( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ) , + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right, + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top - this.margins.bottom + ]; + this.relative_container = c; + }, + + _convertPositionTo: function(d, pos) { + + if(!pos) { + pos = this.position; + } + + var mod = d === "absolute" ? 1 : -1, + scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent; + + //Cache the scroll + if (!this.offset.scroll) { + this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()}; + } + + return { + top: ( + pos.top + // The absolute mouse position + this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top ) * mod ) + ), + left: ( + pos.left + // The absolute mouse position + this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left ) * mod ) + ) + }; + + }, + + _generatePosition: function(event) { + + var containment, co, top, left, + o = this.options, + scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent, + pageX = event.pageX, + pageY = event.pageY; + + //Cache the scroll + if (!this.offset.scroll) { + this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()}; + } + + /* + * - Position constraining - + * Constrain the position to a mix of grid, containment. + */ + + // If we are not dragging yet, we won't check for options + if ( this.originalPosition ) { + if ( this.containment ) { + if ( this.relative_container ){ + co = this.relative_container.offset(); + containment = [ + this.containment[ 0 ] + co.left, + this.containment[ 1 ] + co.top, + this.containment[ 2 ] + co.left, + this.containment[ 3 ] + co.top + ]; + } + else { + containment = this.containment; + } + + if(event.pageX - this.offset.click.left < containment[0]) { + pageX = containment[0] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top < containment[1]) { + pageY = containment[1] + this.offset.click.top; + } + if(event.pageX - this.offset.click.left > containment[2]) { + pageX = containment[2] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top > containment[3]) { + pageY = containment[3] + this.offset.click.top; + } + } + + if(o.grid) { + //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950) + top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; + pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; + + left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; + pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; + } + + } + + return { + top: ( + pageY - // The absolute mouse position + this.offset.click.top - // Click offset (relative to the element) + this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top + // The offsetParent's offset without borders (offset + border) + ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top ) + ), + left: ( + pageX - // The absolute mouse position + this.offset.click.left - // Click offset (relative to the element) + this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left + // The offsetParent's offset without borders (offset + border) + ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left ) + ) + }; + + }, + + _clear: function() { + this.helper.removeClass("ui-draggable-dragging"); + if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) { + this.helper.remove(); + } + this.helper = null; + this.cancelHelperRemoval = false; + }, + + // From now on bulk stuff - mainly helpers + + _trigger: function(type, event, ui) { + ui = ui || this._uiHash(); + $.ui.plugin.call(this, type, [event, ui]); + //The absolute position has to be recalculated after plugins + if(type === "drag") { + this.positionAbs = this._convertPositionTo("absolute"); + } + return $.Widget.prototype._trigger.call(this, type, event, ui); + }, + + plugins: {}, + + _uiHash: function() { + return { + helper: this.helper, + position: this.position, + originalPosition: this.originalPosition, + offset: this.positionAbs + }; + } + +}); + +$.ui.plugin.add("draggable", "connectToSortable", { + start: function(event, ui) { + + var inst = $(this).data("ui-draggable"), o = inst.options, + uiSortable = $.extend({}, ui, { item: inst.element }); + inst.sortables = []; + $(o.connectToSortable).each(function() { + var sortable = $.data(this, "ui-sortable"); + if (sortable && !sortable.options.disabled) { + inst.sortables.push({ + instance: sortable, + shouldRevert: sortable.options.revert + }); + sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page). + sortable._trigger("activate", event, uiSortable); + } + }); + + }, + stop: function(event, ui) { + + //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper + var inst = $(this).data("ui-draggable"), + uiSortable = $.extend({}, ui, { item: inst.element }); + + $.each(inst.sortables, function() { + if(this.instance.isOver) { + + this.instance.isOver = 0; + + inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance + this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work) + + //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid" + if(this.shouldRevert) { + this.instance.options.revert = this.shouldRevert; + } + + //Trigger the stop of the sortable + this.instance._mouseStop(event); + + this.instance.options.helper = this.instance.options._helper; + + //If the helper has been the original item, restore properties in the sortable + if(inst.options.helper === "original") { + this.instance.currentItem.css({ top: "auto", left: "auto" }); + } + + } else { + this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance + this.instance._trigger("deactivate", event, uiSortable); + } + + }); + + }, + drag: function(event, ui) { + + var inst = $(this).data("ui-draggable"), that = this; + + $.each(inst.sortables, function() { + + var innermostIntersecting = false, + thisSortable = this; + + //Copy over some variables to allow calling the sortable's native _intersectsWith + this.instance.positionAbs = inst.positionAbs; + this.instance.helperProportions = inst.helperProportions; + this.instance.offset.click = inst.offset.click; + + if(this.instance._intersectsWith(this.instance.containerCache)) { + innermostIntersecting = true; + $.each(inst.sortables, function () { + this.instance.positionAbs = inst.positionAbs; + this.instance.helperProportions = inst.helperProportions; + this.instance.offset.click = inst.offset.click; + if (this !== thisSortable && + this.instance._intersectsWith(this.instance.containerCache) && + $.contains(thisSortable.instance.element[0], this.instance.element[0]) + ) { + innermostIntersecting = false; + } + return innermostIntersecting; + }); + } + + + if(innermostIntersecting) { + //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once + if(!this.instance.isOver) { + + this.instance.isOver = 1; + //Now we fake the start of dragging for the sortable instance, + //by cloning the list group item, appending it to the sortable and using it as inst.currentItem + //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one) + this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true); + this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it + this.instance.options.helper = function() { return ui.helper[0]; }; + + event.target = this.instance.currentItem[0]; + this.instance._mouseCapture(event, true); + this.instance._mouseStart(event, true, true); + + //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes + this.instance.offset.click.top = inst.offset.click.top; + this.instance.offset.click.left = inst.offset.click.left; + this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left; + this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top; + + inst._trigger("toSortable", event); + inst.dropped = this.instance.element; //draggable revert needs that + //hack so receive/update callbacks work (mostly) + inst.currentItem = inst.element; + this.instance.fromOutside = inst; + + } + + //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable + if(this.instance.currentItem) { + this.instance._mouseDrag(event); + } + + } else { + + //If it doesn't intersect with the sortable, and it intersected before, + //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval + if(this.instance.isOver) { + + this.instance.isOver = 0; + this.instance.cancelHelperRemoval = true; + + //Prevent reverting on this forced stop + this.instance.options.revert = false; + + // The out event needs to be triggered independently + this.instance._trigger("out", event, this.instance._uiHash(this.instance)); + + this.instance._mouseStop(event, true); + this.instance.options.helper = this.instance.options._helper; + + //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size + this.instance.currentItem.remove(); + if(this.instance.placeholder) { + this.instance.placeholder.remove(); + } + + inst._trigger("fromSortable", event); + inst.dropped = false; //draggable revert needs that + } + + } + + }); + + } +}); + +$.ui.plugin.add("draggable", "cursor", { + start: function() { + var t = $("body"), o = $(this).data("ui-draggable").options; + if (t.css("cursor")) { + o._cursor = t.css("cursor"); + } + t.css("cursor", o.cursor); + }, + stop: function() { + var o = $(this).data("ui-draggable").options; + if (o._cursor) { + $("body").css("cursor", o._cursor); + } + } +}); + +$.ui.plugin.add("draggable", "opacity", { + start: function(event, ui) { + var t = $(ui.helper), o = $(this).data("ui-draggable").options; + if(t.css("opacity")) { + o._opacity = t.css("opacity"); + } + t.css("opacity", o.opacity); + }, + stop: function(event, ui) { + var o = $(this).data("ui-draggable").options; + if(o._opacity) { + $(ui.helper).css("opacity", o._opacity); + } + } +}); + +$.ui.plugin.add("draggable", "scroll", { + start: function() { + var i = $(this).data("ui-draggable"); + if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { + i.overflowOffset = i.scrollParent.offset(); + } + }, + drag: function( event ) { + + var i = $(this).data("ui-draggable"), o = i.options, scrolled = false; + + if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { + + if(!o.axis || o.axis !== "x") { + if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { + i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; + } else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) { + i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed; + } + } + + if(!o.axis || o.axis !== "y") { + if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { + i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; + } else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) { + i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed; + } + } + + } else { + + if(!o.axis || o.axis !== "x") { + if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) { + scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); + } else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) { + scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); + } + } + + if(!o.axis || o.axis !== "y") { + if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) { + scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); + } else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) { + scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); + } + } + + } + + if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { + $.ui.ddmanager.prepareOffsets(i, event); + } + + } +}); + +$.ui.plugin.add("draggable", "snap", { + start: function() { + + var i = $(this).data("ui-draggable"), + o = i.options; + + i.snapElements = []; + + $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() { + var $t = $(this), + $o = $t.offset(); + if(this !== i.element[0]) { + i.snapElements.push({ + item: this, + width: $t.outerWidth(), height: $t.outerHeight(), + top: $o.top, left: $o.left + }); + } + }); + + }, + drag: function(event, ui) { + + var ts, bs, ls, rs, l, r, t, b, i, first, + inst = $(this).data("ui-draggable"), + o = inst.options, + d = o.snapTolerance, + x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, + y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; + + for (i = inst.snapElements.length - 1; i >= 0; i--){ + + l = inst.snapElements[i].left; + r = l + inst.snapElements[i].width; + t = inst.snapElements[i].top; + b = t + inst.snapElements[i].height; + + if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) { + if(inst.snapElements[i].snapping) { + (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); + } + inst.snapElements[i].snapping = false; + continue; + } + + if(o.snapMode !== "inner") { + ts = Math.abs(t - y2) <= d; + bs = Math.abs(b - y1) <= d; + ls = Math.abs(l - x2) <= d; + rs = Math.abs(r - x1) <= d; + if(ts) { + ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; + } + if(bs) { + ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; + } + if(ls) { + ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; + } + if(rs) { + ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left; + } + } + + first = (ts || bs || ls || rs); + + if(o.snapMode !== "outer") { + ts = Math.abs(t - y1) <= d; + bs = Math.abs(b - y2) <= d; + ls = Math.abs(l - x1) <= d; + rs = Math.abs(r - x2) <= d; + if(ts) { + ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; + } + if(bs) { + ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; + } + if(ls) { + ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; + } + if(rs) { + ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left; + } + } + + if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) { + (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); + } + inst.snapElements[i].snapping = (ts || bs || ls || rs || first); + + } + + } +}); + +$.ui.plugin.add("draggable", "stack", { + start: function() { + var min, + o = this.data("ui-draggable").options, + group = $.makeArray($(o.stack)).sort(function(a,b) { + return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0); + }); + + if (!group.length) { return; } + + min = parseInt($(group[0]).css("zIndex"), 10) || 0; + $(group).each(function(i) { + $(this).css("zIndex", min + i); + }); + this.css("zIndex", (min + group.length)); + } +}); + +$.ui.plugin.add("draggable", "zIndex", { + start: function(event, ui) { + var t = $(ui.helper), o = $(this).data("ui-draggable").options; + if(t.css("zIndex")) { + o._zIndex = t.css("zIndex"); + } + t.css("zIndex", o.zIndex); + }, + stop: function(event, ui) { + var o = $(this).data("ui-draggable").options; + if(o._zIndex) { + $(ui.helper).css("zIndex", o._zIndex); + } + } +}); + +})(jQuery); + +(function( $, undefined ) { + +function isOverAxis( x, reference, size ) { + return ( x > reference ) && ( x < ( reference + size ) ); +} + +$.widget("ui.droppable", { + version: "1.10.3", + widgetEventPrefix: "drop", + options: { + accept: "*", + activeClass: false, + addClasses: true, + greedy: false, + hoverClass: false, + scope: "default", + tolerance: "intersect", + + // callbacks + activate: null, + deactivate: null, + drop: null, + out: null, + over: null + }, + _create: function() { + + var o = this.options, + accept = o.accept; + + this.isover = false; + this.isout = true; + + this.accept = $.isFunction(accept) ? accept : function(d) { + return d.is(accept); + }; + + //Store the droppable's proportions + this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight }; + + // Add the reference and positions to the manager + $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || []; + $.ui.ddmanager.droppables[o.scope].push(this); + + (o.addClasses && this.element.addClass("ui-droppable")); + + }, + + _destroy: function() { + var i = 0, + drop = $.ui.ddmanager.droppables[this.options.scope]; + + for ( ; i < drop.length; i++ ) { + if ( drop[i] === this ) { + drop.splice(i, 1); + } + } + + this.element.removeClass("ui-droppable ui-droppable-disabled"); + }, + + _setOption: function(key, value) { + + if(key === "accept") { + this.accept = $.isFunction(value) ? value : function(d) { + return d.is(value); + }; + } + $.Widget.prototype._setOption.apply(this, arguments); + }, + + _activate: function(event) { + var draggable = $.ui.ddmanager.current; + if(this.options.activeClass) { + this.element.addClass(this.options.activeClass); + } + if(draggable){ + this._trigger("activate", event, this.ui(draggable)); + } + }, + + _deactivate: function(event) { + var draggable = $.ui.ddmanager.current; + if(this.options.activeClass) { + this.element.removeClass(this.options.activeClass); + } + if(draggable){ + this._trigger("deactivate", event, this.ui(draggable)); + } + }, + + _over: function(event) { + + var draggable = $.ui.ddmanager.current; + + // Bail if draggable and droppable are same element + if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { + return; + } + + if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { + if(this.options.hoverClass) { + this.element.addClass(this.options.hoverClass); + } + this._trigger("over", event, this.ui(draggable)); + } + + }, + + _out: function(event) { + + var draggable = $.ui.ddmanager.current; + + // Bail if draggable and droppable are same element + if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { + return; + } + + if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { + if(this.options.hoverClass) { + this.element.removeClass(this.options.hoverClass); + } + this._trigger("out", event, this.ui(draggable)); + } + + }, + + _drop: function(event,custom) { + + var draggable = custom || $.ui.ddmanager.current, + childrenIntersection = false; + + // Bail if draggable and droppable are same element + if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { + return false; + } + + this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() { + var inst = $.data(this, "ui-droppable"); + if( + inst.options.greedy && + !inst.options.disabled && + inst.options.scope === draggable.options.scope && + inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) && + $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance) + ) { childrenIntersection = true; return false; } + }); + if(childrenIntersection) { + return false; + } + + if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { + if(this.options.activeClass) { + this.element.removeClass(this.options.activeClass); + } + if(this.options.hoverClass) { + this.element.removeClass(this.options.hoverClass); + } + this._trigger("drop", event, this.ui(draggable)); + return this.element; + } + + return false; + + }, + + ui: function(c) { + return { + draggable: (c.currentItem || c.element), + helper: c.helper, + position: c.position, + offset: c.positionAbs + }; + } + +}); + +$.ui.intersect = function(draggable, droppable, toleranceMode) { + + if (!droppable.offset) { + return false; + } + + var draggableLeft, draggableTop, + x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width, + y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height, + l = droppable.offset.left, r = l + droppable.proportions.width, + t = droppable.offset.top, b = t + droppable.proportions.height; + + switch (toleranceMode) { + case "fit": + return (l <= x1 && x2 <= r && t <= y1 && y2 <= b); + case "intersect": + return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half + x2 - (draggable.helperProportions.width / 2) < r && // Left Half + t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half + y2 - (draggable.helperProportions.height / 2) < b ); // Top Half + case "pointer": + draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left); + draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top); + return isOverAxis( draggableTop, t, droppable.proportions.height ) && isOverAxis( draggableLeft, l, droppable.proportions.width ); + case "touch": + return ( + (y1 >= t && y1 <= b) || // Top edge touching + (y2 >= t && y2 <= b) || // Bottom edge touching + (y1 < t && y2 > b) // Surrounded vertically + ) && ( + (x1 >= l && x1 <= r) || // Left edge touching + (x2 >= l && x2 <= r) || // Right edge touching + (x1 < l && x2 > r) // Surrounded horizontally + ); + default: + return false; + } + +}; + +/* + This manager tracks offsets of draggables and droppables +*/ +$.ui.ddmanager = { + current: null, + droppables: { "default": [] }, + prepareOffsets: function(t, event) { + + var i, j, + m = $.ui.ddmanager.droppables[t.options.scope] || [], + type = event ? event.type : null, // workaround for #2317 + list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack(); + + droppablesLoop: for (i = 0; i < m.length; i++) { + + //No disabled and non-accepted + if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) { + continue; + } + + // Filter out elements in the current dragged item + for (j=0; j < list.length; j++) { + if(list[j] === m[i].element[0]) { + m[i].proportions.height = 0; + continue droppablesLoop; + } + } + + m[i].visible = m[i].element.css("display") !== "none"; + if(!m[i].visible) { + continue; + } + + //Activate the droppable if used directly from draggables + if(type === "mousedown") { + m[i]._activate.call(m[i], event); + } + + m[i].offset = m[i].element.offset(); + m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight }; + + } + + }, + drop: function(draggable, event) { + + var dropped = false; + // Create a copy of the droppables in case the list changes during the drop (#9116) + $.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function() { + + if(!this.options) { + return; + } + if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) { + dropped = this._drop.call(this, event) || dropped; + } + + if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { + this.isout = true; + this.isover = false; + this._deactivate.call(this, event); + } + + }); + return dropped; + + }, + dragStart: function( draggable, event ) { + //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003) + draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() { + if( !draggable.options.refreshPositions ) { + $.ui.ddmanager.prepareOffsets( draggable, event ); + } + }); + }, + drag: function(draggable, event) { + + //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse. + if(draggable.options.refreshPositions) { + $.ui.ddmanager.prepareOffsets(draggable, event); + } + + //Run through all droppables and check their positions based on specific tolerance options + $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { + + if(this.options.disabled || this.greedyChild || !this.visible) { + return; + } + + var parentInstance, scope, parent, + intersects = $.ui.intersect(draggable, this, this.options.tolerance), + c = !intersects && this.isover ? "isout" : (intersects && !this.isover ? "isover" : null); + if(!c) { + return; + } + + if (this.options.greedy) { + // find droppable parents with same scope + scope = this.options.scope; + parent = this.element.parents(":data(ui-droppable)").filter(function () { + return $.data(this, "ui-droppable").options.scope === scope; + }); + + if (parent.length) { + parentInstance = $.data(parent[0], "ui-droppable"); + parentInstance.greedyChild = (c === "isover"); + } + } + + // we just moved into a greedy child + if (parentInstance && c === "isover") { + parentInstance.isover = false; + parentInstance.isout = true; + parentInstance._out.call(parentInstance, event); + } + + this[c] = true; + this[c === "isout" ? "isover" : "isout"] = false; + this[c === "isover" ? "_over" : "_out"].call(this, event); + + // we just moved out of a greedy child + if (parentInstance && c === "isout") { + parentInstance.isout = false; + parentInstance.isover = true; + parentInstance._over.call(parentInstance, event); + } + }); + + }, + dragStop: function( draggable, event ) { + draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" ); + //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003) + if( !draggable.options.refreshPositions ) { + $.ui.ddmanager.prepareOffsets( draggable, event ); + } + } +}; + +})(jQuery); + +(function( $, undefined ) { + +function num(v) { + return parseInt(v, 10) || 0; +} + +function isNumber(value) { + return !isNaN(parseInt(value, 10)); +} + +$.widget("ui.resizable", $.ui.mouse, { + version: "1.10.3", + widgetEventPrefix: "resize", + options: { + alsoResize: false, + animate: false, + animateDuration: "slow", + animateEasing: "swing", + aspectRatio: false, + autoHide: false, + containment: false, + ghost: false, + grid: false, + handles: "e,s,se", + helper: false, + maxHeight: null, + maxWidth: null, + minHeight: 10, + minWidth: 10, + // See #7960 + zIndex: 90, + + // callbacks + resize: null, + start: null, + stop: null + }, + _create: function() { + + var n, i, handle, axis, hname, + that = this, + o = this.options; + this.element.addClass("ui-resizable"); + + $.extend(this, { + _aspectRatio: !!(o.aspectRatio), + aspectRatio: o.aspectRatio, + originalElement: this.element, + _proportionallyResizeElements: [], + _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null + }); + + //Wrap the element if it cannot hold child nodes + if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { + + //Create a wrapper element and set the wrapper to the new current internal element + this.element.wrap( + $("
").css({ + position: this.element.css("position"), + width: this.element.outerWidth(), + height: this.element.outerHeight(), + top: this.element.css("top"), + left: this.element.css("left") + }) + ); + + //Overwrite the original this.element + this.element = this.element.parent().data( + "ui-resizable", this.element.data("ui-resizable") + ); + + this.elementIsWrapper = true; + + //Move margins to the wrapper + this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); + this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0}); + + //Prevent Safari textarea resize + this.originalResizeStyle = this.originalElement.css("resize"); + this.originalElement.css("resize", "none"); + + //Push the actual element to our proportionallyResize internal array + this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" })); + + // avoid IE jump (hard set the margin) + this.originalElement.css({ margin: this.originalElement.css("margin") }); + + // fix handlers offset + this._proportionallyResize(); + + } + + this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" }); + if(this.handles.constructor === String) { + + if ( this.handles === "all") { + this.handles = "n,e,s,w,se,sw,ne,nw"; + } + + n = this.handles.split(","); + this.handles = {}; + + for(i = 0; i < n.length; i++) { + + handle = $.trim(n[i]); + hname = "ui-resizable-"+handle; + axis = $("
"); + + // Apply zIndex to all handles - see #7960 + axis.css({ zIndex: o.zIndex }); + + //TODO : What's going on here? + if ("se" === handle) { + axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); + } + + //Insert into internal handles object and append to element + this.handles[handle] = ".ui-resizable-"+handle; + this.element.append(axis); + } + + } + + this._renderAxis = function(target) { + + var i, axis, padPos, padWrapper; + + target = target || this.element; + + for(i in this.handles) { + + if(this.handles[i].constructor === String) { + this.handles[i] = $(this.handles[i], this.element).show(); + } + + //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls) + if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { + + axis = $(this.handles[i], this.element); + + //Checking the correct pad and border + padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); + + //The padding type i have to apply... + padPos = [ "padding", + /ne|nw|n/.test(i) ? "Top" : + /se|sw|s/.test(i) ? "Bottom" : + /^e$/.test(i) ? "Right" : "Left" ].join(""); + + target.css(padPos, padWrapper); + + this._proportionallyResize(); + + } + + //TODO: What's that good for? There's not anything to be executed left + if(!$(this.handles[i]).length) { + continue; + } + } + }; + + //TODO: make renderAxis a prototype function + this._renderAxis(this.element); + + this._handles = $(".ui-resizable-handle", this.element) + .disableSelection(); + + //Matching axis name + this._handles.mouseover(function() { + if (!that.resizing) { + if (this.className) { + axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); + } + //Axis, default = se + that.axis = axis && axis[1] ? axis[1] : "se"; + } + }); + + //If we want to auto hide the elements + if (o.autoHide) { + this._handles.hide(); + $(this.element) + .addClass("ui-resizable-autohide") + .mouseenter(function() { + if (o.disabled) { + return; + } + $(this).removeClass("ui-resizable-autohide"); + that._handles.show(); + }) + .mouseleave(function(){ + if (o.disabled) { + return; + } + if (!that.resizing) { + $(this).addClass("ui-resizable-autohide"); + that._handles.hide(); + } + }); + } + + //Initialize the mouse interaction + this._mouseInit(); + + }, + + _destroy: function() { + + this._mouseDestroy(); + + var wrapper, + _destroy = function(exp) { + $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") + .removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove(); + }; + + //TODO: Unwrap at same DOM position + if (this.elementIsWrapper) { + _destroy(this.element); + wrapper = this.element; + this.originalElement.css({ + position: wrapper.css("position"), + width: wrapper.outerWidth(), + height: wrapper.outerHeight(), + top: wrapper.css("top"), + left: wrapper.css("left") + }).insertAfter( wrapper ); + wrapper.remove(); + } + + this.originalElement.css("resize", this.originalResizeStyle); + _destroy(this.originalElement); + + return this; + }, + + _mouseCapture: function(event) { + var i, handle, + capture = false; + + for (i in this.handles) { + handle = $(this.handles[i])[0]; + if (handle === event.target || $.contains(handle, event.target)) { + capture = true; + } + } + + return !this.options.disabled && capture; + }, + + _mouseStart: function(event) { + + var curleft, curtop, cursor, + o = this.options, + iniPos = this.element.position(), + el = this.element; + + this.resizing = true; + + // bugfix for http://dev.jquery.com/ticket/1749 + if ( (/absolute/).test( el.css("position") ) ) { + el.css({ position: "absolute", top: el.css("top"), left: el.css("left") }); + } else if (el.is(".ui-draggable")) { + el.css({ position: "absolute", top: iniPos.top, left: iniPos.left }); + } + + this._renderProxy(); + + curleft = num(this.helper.css("left")); + curtop = num(this.helper.css("top")); + + if (o.containment) { + curleft += $(o.containment).scrollLeft() || 0; + curtop += $(o.containment).scrollTop() || 0; + } + + //Store needed variables + this.offset = this.helper.offset(); + this.position = { left: curleft, top: curtop }; + this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; + this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; + this.originalPosition = { left: curleft, top: curtop }; + this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; + this.originalMousePosition = { left: event.pageX, top: event.pageY }; + + //Aspect Ratio + this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); + + cursor = $(".ui-resizable-" + this.axis).css("cursor"); + $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor); + + el.addClass("ui-resizable-resizing"); + this._propagate("start", event); + return true; + }, + + _mouseDrag: function(event) { + + //Increase performance, avoid regex + var data, + el = this.helper, props = {}, + smp = this.originalMousePosition, + a = this.axis, + prevTop = this.position.top, + prevLeft = this.position.left, + prevWidth = this.size.width, + prevHeight = this.size.height, + dx = (event.pageX-smp.left)||0, + dy = (event.pageY-smp.top)||0, + trigger = this._change[a]; + + if (!trigger) { + return false; + } + + // Calculate the attrs that will be change + data = trigger.apply(this, [event, dx, dy]); + + // Put this in the mouseDrag handler since the user can start pressing shift while resizing + this._updateVirtualBoundaries(event.shiftKey); + if (this._aspectRatio || event.shiftKey) { + data = this._updateRatio(data, event); + } + + data = this._respectSize(data, event); + + this._updateCache(data); + + // plugins callbacks need to be called first + this._propagate("resize", event); + + if (this.position.top !== prevTop) { + props.top = this.position.top + "px"; + } + if (this.position.left !== prevLeft) { + props.left = this.position.left + "px"; + } + if (this.size.width !== prevWidth) { + props.width = this.size.width + "px"; + } + if (this.size.height !== prevHeight) { + props.height = this.size.height + "px"; + } + el.css(props); + + if (!this._helper && this._proportionallyResizeElements.length) { + this._proportionallyResize(); + } + + // Call the user callback if the element was resized + if ( ! $.isEmptyObject(props) ) { + this._trigger("resize", event, this.ui()); + } + + return false; + }, + + _mouseStop: function(event) { + + this.resizing = false; + var pr, ista, soffseth, soffsetw, s, left, top, + o = this.options, that = this; + + if(this._helper) { + + pr = this._proportionallyResizeElements; + ista = pr.length && (/textarea/i).test(pr[0].nodeName); + soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height; + soffsetw = ista ? 0 : that.sizeDiff.width; + + s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) }; + left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null; + top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; + + if (!o.animate) { + this.element.css($.extend(s, { top: top, left: left })); + } + + that.helper.height(that.size.height); + that.helper.width(that.size.width); + + if (this._helper && !o.animate) { + this._proportionallyResize(); + } + } + + $("body").css("cursor", "auto"); + + this.element.removeClass("ui-resizable-resizing"); + + this._propagate("stop", event); + + if (this._helper) { + this.helper.remove(); + } + + return false; + + }, + + _updateVirtualBoundaries: function(forceAspectRatio) { + var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, + o = this.options; + + b = { + minWidth: isNumber(o.minWidth) ? o.minWidth : 0, + maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, + minHeight: isNumber(o.minHeight) ? o.minHeight : 0, + maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity + }; + + if(this._aspectRatio || forceAspectRatio) { + // We want to create an enclosing box whose aspect ration is the requested one + // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension + pMinWidth = b.minHeight * this.aspectRatio; + pMinHeight = b.minWidth / this.aspectRatio; + pMaxWidth = b.maxHeight * this.aspectRatio; + pMaxHeight = b.maxWidth / this.aspectRatio; + + if(pMinWidth > b.minWidth) { + b.minWidth = pMinWidth; + } + if(pMinHeight > b.minHeight) { + b.minHeight = pMinHeight; + } + if(pMaxWidth < b.maxWidth) { + b.maxWidth = pMaxWidth; + } + if(pMaxHeight < b.maxHeight) { + b.maxHeight = pMaxHeight; + } + } + this._vBoundaries = b; + }, + + _updateCache: function(data) { + this.offset = this.helper.offset(); + if (isNumber(data.left)) { + this.position.left = data.left; + } + if (isNumber(data.top)) { + this.position.top = data.top; + } + if (isNumber(data.height)) { + this.size.height = data.height; + } + if (isNumber(data.width)) { + this.size.width = data.width; + } + }, + + _updateRatio: function( data ) { + + var cpos = this.position, + csize = this.size, + a = this.axis; + + if (isNumber(data.height)) { + data.width = (data.height * this.aspectRatio); + } else if (isNumber(data.width)) { + data.height = (data.width / this.aspectRatio); + } + + if (a === "sw") { + data.left = cpos.left + (csize.width - data.width); + data.top = null; + } + if (a === "nw") { + data.top = cpos.top + (csize.height - data.height); + data.left = cpos.left + (csize.width - data.width); + } + + return data; + }, + + _respectSize: function( data ) { + + var o = this._vBoundaries, + a = this.axis, + ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), + isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height), + dw = this.originalPosition.left + this.originalSize.width, + dh = this.position.top + this.size.height, + cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); + if (isminw) { + data.width = o.minWidth; + } + if (isminh) { + data.height = o.minHeight; + } + if (ismaxw) { + data.width = o.maxWidth; + } + if (ismaxh) { + data.height = o.maxHeight; + } + + if (isminw && cw) { + data.left = dw - o.minWidth; + } + if (ismaxw && cw) { + data.left = dw - o.maxWidth; + } + if (isminh && ch) { + data.top = dh - o.minHeight; + } + if (ismaxh && ch) { + data.top = dh - o.maxHeight; + } + + // fixing jump error on top/left - bug #2330 + if (!data.width && !data.height && !data.left && data.top) { + data.top = null; + } else if (!data.width && !data.height && !data.top && data.left) { + data.left = null; + } + + return data; + }, + + _proportionallyResize: function() { + + if (!this._proportionallyResizeElements.length) { + return; + } + + var i, j, borders, paddings, prel, + element = this.helper || this.element; + + for ( i=0; i < this._proportionallyResizeElements.length; i++) { + + prel = this._proportionallyResizeElements[i]; + + if (!this.borderDif) { + this.borderDif = []; + borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")]; + paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")]; + + for ( j = 0; j < borders.length; j++ ) { + this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 ); + } + } + + prel.css({ + height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, + width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 + }); + + } + + }, + + _renderProxy: function() { + + var el = this.element, o = this.options; + this.elementOffset = el.offset(); + + if(this._helper) { + + this.helper = this.helper || $("
"); + + this.helper.addClass(this._helper).css({ + width: this.element.outerWidth() - 1, + height: this.element.outerHeight() - 1, + position: "absolute", + left: this.elementOffset.left +"px", + top: this.elementOffset.top +"px", + zIndex: ++o.zIndex //TODO: Don't modify option + }); + + this.helper + .appendTo("body") + .disableSelection(); + + } else { + this.helper = this.element; + } + + }, + + _change: { + e: function(event, dx) { + return { width: this.originalSize.width + dx }; + }, + w: function(event, dx) { + var cs = this.originalSize, sp = this.originalPosition; + return { left: sp.left + dx, width: cs.width - dx }; + }, + n: function(event, dx, dy) { + var cs = this.originalSize, sp = this.originalPosition; + return { top: sp.top + dy, height: cs.height - dy }; + }, + s: function(event, dx, dy) { + return { height: this.originalSize.height + dy }; + }, + se: function(event, dx, dy) { + return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); + }, + sw: function(event, dx, dy) { + return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); + }, + ne: function(event, dx, dy) { + return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); + }, + nw: function(event, dx, dy) { + return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); + } + }, + + _propagate: function(n, event) { + $.ui.plugin.call(this, n, [event, this.ui()]); + (n !== "resize" && this._trigger(n, event, this.ui())); + }, + + plugins: {}, + + ui: function() { + return { + originalElement: this.originalElement, + element: this.element, + helper: this.helper, + position: this.position, + size: this.size, + originalSize: this.originalSize, + originalPosition: this.originalPosition + }; + } + +}); + +/* + * Resizable Extensions + */ + +$.ui.plugin.add("resizable", "animate", { + + stop: function( event ) { + var that = $(this).data("ui-resizable"), + o = that.options, + pr = that._proportionallyResizeElements, + ista = pr.length && (/textarea/i).test(pr[0].nodeName), + soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height, + soffsetw = ista ? 0 : that.sizeDiff.width, + style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, + left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null, + top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; + + that.element.animate( + $.extend(style, top && left ? { top: top, left: left } : {}), { + duration: o.animateDuration, + easing: o.animateEasing, + step: function() { + + var data = { + width: parseInt(that.element.css("width"), 10), + height: parseInt(that.element.css("height"), 10), + top: parseInt(that.element.css("top"), 10), + left: parseInt(that.element.css("left"), 10) + }; + + if (pr && pr.length) { + $(pr[0]).css({ width: data.width, height: data.height }); + } + + // propagating resize, and updating values for each animation step + that._updateCache(data); + that._propagate("resize", event); + + } + } + ); + } + +}); + +$.ui.plugin.add("resizable", "containment", { + + start: function() { + var element, p, co, ch, cw, width, height, + that = $(this).data("ui-resizable"), + o = that.options, + el = that.element, + oc = o.containment, + ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; + + if (!ce) { + return; + } + + that.containerElement = $(ce); + + if (/document/.test(oc) || oc === document) { + that.containerOffset = { left: 0, top: 0 }; + that.containerPosition = { left: 0, top: 0 }; + + that.parentData = { + element: $(document), left: 0, top: 0, + width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight + }; + } + + // i'm a node, so compute top, left, right, bottom + else { + element = $(ce); + p = []; + $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); }); + + that.containerOffset = element.offset(); + that.containerPosition = element.position(); + that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; + + co = that.containerOffset; + ch = that.containerSize.height; + cw = that.containerSize.width; + width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ); + height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); + + that.parentData = { + element: ce, left: co.left, top: co.top, width: width, height: height + }; + } + }, + + resize: function( event ) { + var woset, hoset, isParent, isOffsetRelative, + that = $(this).data("ui-resizable"), + o = that.options, + co = that.containerOffset, cp = that.position, + pRatio = that._aspectRatio || event.shiftKey, + cop = { top:0, left:0 }, ce = that.containerElement; + + if (ce[0] !== document && (/static/).test(ce.css("position"))) { + cop = co; + } + + if (cp.left < (that._helper ? co.left : 0)) { + that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); + if (pRatio) { + that.size.height = that.size.width / that.aspectRatio; + } + that.position.left = o.helper ? co.left : 0; + } + + if (cp.top < (that._helper ? co.top : 0)) { + that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); + if (pRatio) { + that.size.width = that.size.height * that.aspectRatio; + } + that.position.top = that._helper ? co.top : 0; + } + + that.offset.left = that.parentData.left+that.position.left; + that.offset.top = that.parentData.top+that.position.top; + + woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ); + hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height ); + + isParent = that.containerElement.get(0) === that.element.parent().get(0); + isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position")); + + if(isParent && isOffsetRelative) { + woset -= that.parentData.left; + } + + if (woset + that.size.width >= that.parentData.width) { + that.size.width = that.parentData.width - woset; + if (pRatio) { + that.size.height = that.size.width / that.aspectRatio; + } + } + + if (hoset + that.size.height >= that.parentData.height) { + that.size.height = that.parentData.height - hoset; + if (pRatio) { + that.size.width = that.size.height * that.aspectRatio; + } + } + }, + + stop: function(){ + var that = $(this).data("ui-resizable"), + o = that.options, + co = that.containerOffset, + cop = that.containerPosition, + ce = that.containerElement, + helper = $(that.helper), + ho = helper.offset(), + w = helper.outerWidth() - that.sizeDiff.width, + h = helper.outerHeight() - that.sizeDiff.height; + + if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) { + $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); + } + + if (that._helper && !o.animate && (/static/).test(ce.css("position"))) { + $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); + } + + } +}); + +$.ui.plugin.add("resizable", "alsoResize", { + + start: function () { + var that = $(this).data("ui-resizable"), + o = that.options, + _store = function (exp) { + $(exp).each(function() { + var el = $(this); + el.data("ui-resizable-alsoresize", { + width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), + left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) + }); + }); + }; + + if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) { + if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); } + else { $.each(o.alsoResize, function (exp) { _store(exp); }); } + }else{ + _store(o.alsoResize); + } + }, + + resize: function (event, ui) { + var that = $(this).data("ui-resizable"), + o = that.options, + os = that.originalSize, + op = that.originalPosition, + delta = { + height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, + top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 + }, + + _alsoResize = function (exp, c) { + $(exp).each(function() { + var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {}, + css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"]; + + $.each(css, function (i, prop) { + var sum = (start[prop]||0) + (delta[prop]||0); + if (sum && sum >= 0) { + style[prop] = sum || null; + } + }); + + el.css(style); + }); + }; + + if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) { + $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); }); + }else{ + _alsoResize(o.alsoResize); + } + }, + + stop: function () { + $(this).removeData("resizable-alsoresize"); + } +}); + +$.ui.plugin.add("resizable", "ghost", { + + start: function() { + + var that = $(this).data("ui-resizable"), o = that.options, cs = that.size; + + that.ghost = that.originalElement.clone(); + that.ghost + .css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) + .addClass("ui-resizable-ghost") + .addClass(typeof o.ghost === "string" ? o.ghost : ""); + + that.ghost.appendTo(that.helper); + + }, + + resize: function(){ + var that = $(this).data("ui-resizable"); + if (that.ghost) { + that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); + } + }, + + stop: function() { + var that = $(this).data("ui-resizable"); + if (that.ghost && that.helper) { + that.helper.get(0).removeChild(that.ghost.get(0)); + } + } + +}); + +$.ui.plugin.add("resizable", "grid", { + + resize: function() { + var that = $(this).data("ui-resizable"), + o = that.options, + cs = that.size, + os = that.originalSize, + op = that.originalPosition, + a = that.axis, + grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid, + gridX = (grid[0]||1), + gridY = (grid[1]||1), + ox = Math.round((cs.width - os.width) / gridX) * gridX, + oy = Math.round((cs.height - os.height) / gridY) * gridY, + newWidth = os.width + ox, + newHeight = os.height + oy, + isMaxWidth = o.maxWidth && (o.maxWidth < newWidth), + isMaxHeight = o.maxHeight && (o.maxHeight < newHeight), + isMinWidth = o.minWidth && (o.minWidth > newWidth), + isMinHeight = o.minHeight && (o.minHeight > newHeight); + + o.grid = grid; + + if (isMinWidth) { + newWidth = newWidth + gridX; + } + if (isMinHeight) { + newHeight = newHeight + gridY; + } + if (isMaxWidth) { + newWidth = newWidth - gridX; + } + if (isMaxHeight) { + newHeight = newHeight - gridY; + } + + if (/^(se|s|e)$/.test(a)) { + that.size.width = newWidth; + that.size.height = newHeight; + } else if (/^(ne)$/.test(a)) { + that.size.width = newWidth; + that.size.height = newHeight; + that.position.top = op.top - oy; + } else if (/^(sw)$/.test(a)) { + that.size.width = newWidth; + that.size.height = newHeight; + that.position.left = op.left - ox; + } else { + that.size.width = newWidth; + that.size.height = newHeight; + that.position.top = op.top - oy; + that.position.left = op.left - ox; + } + } + +}); + +})(jQuery); + +(function( $, undefined ) { + +$.widget("ui.selectable", $.ui.mouse, { + version: "1.10.3", + options: { + appendTo: "body", + autoRefresh: true, + distance: 0, + filter: "*", + tolerance: "touch", + + // callbacks + selected: null, + selecting: null, + start: null, + stop: null, + unselected: null, + unselecting: null + }, + _create: function() { + var selectees, + that = this; + + this.element.addClass("ui-selectable"); + + this.dragged = false; + + // cache selectee children based on filter + this.refresh = function() { + selectees = $(that.options.filter, that.element[0]); + selectees.addClass("ui-selectee"); + selectees.each(function() { + var $this = $(this), + pos = $this.offset(); + $.data(this, "selectable-item", { + element: this, + $element: $this, + left: pos.left, + top: pos.top, + right: pos.left + $this.outerWidth(), + bottom: pos.top + $this.outerHeight(), + startselected: false, + selected: $this.hasClass("ui-selected"), + selecting: $this.hasClass("ui-selecting"), + unselecting: $this.hasClass("ui-unselecting") + }); + }); + }; + this.refresh(); + + this.selectees = selectees.addClass("ui-selectee"); + + this._mouseInit(); + + this.helper = $("
"); + }, + + _destroy: function() { + this.selectees + .removeClass("ui-selectee") + .removeData("selectable-item"); + this.element + .removeClass("ui-selectable ui-selectable-disabled"); + this._mouseDestroy(); + }, + + _mouseStart: function(event) { + var that = this, + options = this.options; + + this.opos = [event.pageX, event.pageY]; + + if (this.options.disabled) { + return; + } + + this.selectees = $(options.filter, this.element[0]); + + this._trigger("start", event); + + $(options.appendTo).append(this.helper); + // position helper (lasso) + this.helper.css({ + "left": event.pageX, + "top": event.pageY, + "width": 0, + "height": 0 + }); + + if (options.autoRefresh) { + this.refresh(); + } + + this.selectees.filter(".ui-selected").each(function() { + var selectee = $.data(this, "selectable-item"); + selectee.startselected = true; + if (!event.metaKey && !event.ctrlKey) { + selectee.$element.removeClass("ui-selected"); + selectee.selected = false; + selectee.$element.addClass("ui-unselecting"); + selectee.unselecting = true; + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + }); + + $(event.target).parents().addBack().each(function() { + var doSelect, + selectee = $.data(this, "selectable-item"); + if (selectee) { + doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected"); + selectee.$element + .removeClass(doSelect ? "ui-unselecting" : "ui-selected") + .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); + selectee.unselecting = !doSelect; + selectee.selecting = doSelect; + selectee.selected = doSelect; + // selectable (UN)SELECTING callback + if (doSelect) { + that._trigger("selecting", event, { + selecting: selectee.element + }); + } else { + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + return false; + } + }); + + }, + + _mouseDrag: function(event) { + + this.dragged = true; + + if (this.options.disabled) { + return; + } + + var tmp, + that = this, + options = this.options, + x1 = this.opos[0], + y1 = this.opos[1], + x2 = event.pageX, + y2 = event.pageY; + + if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; } + if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; } + this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); + + this.selectees.each(function() { + var selectee = $.data(this, "selectable-item"), + hit = false; + + //prevent helper from being selected if appendTo: selectable + if (!selectee || selectee.element === that.element[0]) { + return; + } + + if (options.tolerance === "touch") { + hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); + } else if (options.tolerance === "fit") { + hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); + } + + if (hit) { + // SELECT + if (selectee.selected) { + selectee.$element.removeClass("ui-selected"); + selectee.selected = false; + } + if (selectee.unselecting) { + selectee.$element.removeClass("ui-unselecting"); + selectee.unselecting = false; + } + if (!selectee.selecting) { + selectee.$element.addClass("ui-selecting"); + selectee.selecting = true; + // selectable SELECTING callback + that._trigger("selecting", event, { + selecting: selectee.element + }); + } + } else { + // UNSELECT + if (selectee.selecting) { + if ((event.metaKey || event.ctrlKey) && selectee.startselected) { + selectee.$element.removeClass("ui-selecting"); + selectee.selecting = false; + selectee.$element.addClass("ui-selected"); + selectee.selected = true; + } else { + selectee.$element.removeClass("ui-selecting"); + selectee.selecting = false; + if (selectee.startselected) { + selectee.$element.addClass("ui-unselecting"); + selectee.unselecting = true; + } + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + } + if (selectee.selected) { + if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { + selectee.$element.removeClass("ui-selected"); + selectee.selected = false; + + selectee.$element.addClass("ui-unselecting"); + selectee.unselecting = true; + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + } + } + }); + + return false; + }, + + _mouseStop: function(event) { + var that = this; + + this.dragged = false; + + $(".ui-unselecting", this.element[0]).each(function() { + var selectee = $.data(this, "selectable-item"); + selectee.$element.removeClass("ui-unselecting"); + selectee.unselecting = false; + selectee.startselected = false; + that._trigger("unselected", event, { + unselected: selectee.element + }); + }); + $(".ui-selecting", this.element[0]).each(function() { + var selectee = $.data(this, "selectable-item"); + selectee.$element.removeClass("ui-selecting").addClass("ui-selected"); + selectee.selecting = false; + selectee.selected = true; + selectee.startselected = true; + that._trigger("selected", event, { + selected: selectee.element + }); + }); + this._trigger("stop", event); + + this.helper.remove(); + + return false; + } + +}); + +})(jQuery); + +(function( $, undefined ) { + +/*jshint loopfunc: true */ + +function isOverAxis( x, reference, size ) { + return ( x > reference ) && ( x < ( reference + size ) ); +} + +function isFloating(item) { + return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); +} + +$.widget("ui.sortable", $.ui.mouse, { + version: "1.10.3", + widgetEventPrefix: "sort", + ready: false, + options: { + appendTo: "parent", + axis: false, + connectWith: false, + containment: false, + cursor: "auto", + cursorAt: false, + dropOnEmpty: true, + forcePlaceholderSize: false, + forceHelperSize: false, + grid: false, + handle: false, + helper: "original", + items: "> *", + opacity: false, + placeholder: false, + revert: false, + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + scope: "default", + tolerance: "intersect", + zIndex: 1000, + + // callbacks + activate: null, + beforeStop: null, + change: null, + deactivate: null, + out: null, + over: null, + receive: null, + remove: null, + sort: null, + start: null, + stop: null, + update: null + }, + _create: function() { + + var o = this.options; + this.containerCache = {}; + this.element.addClass("ui-sortable"); + + //Get the items + this.refresh(); + + //Let's determine if the items are being displayed horizontally + this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false; + + //Let's determine the parent's offset + this.offset = this.element.offset(); + + //Initialize mouse events for interaction + this._mouseInit(); + + //We're ready to go + this.ready = true; + + }, + + _destroy: function() { + this.element + .removeClass("ui-sortable ui-sortable-disabled"); + this._mouseDestroy(); + + for ( var i = this.items.length - 1; i >= 0; i-- ) { + this.items[i].item.removeData(this.widgetName + "-item"); + } + + return this; + }, + + _setOption: function(key, value){ + if ( key === "disabled" ) { + this.options[ key ] = value; + + this.widget().toggleClass( "ui-sortable-disabled", !!value ); + } else { + // Don't call widget base _setOption for disable as it adds ui-state-disabled class + $.Widget.prototype._setOption.apply(this, arguments); + } + }, + + _mouseCapture: function(event, overrideHandle) { + var currentItem = null, + validHandle = false, + that = this; + + if (this.reverting) { + return false; + } + + if(this.options.disabled || this.options.type === "static") { + return false; + } + + //We have to refresh the items data once first + this._refreshItems(event); + + //Find out if the clicked node (or one of its parents) is a actual item in this.items + $(event.target).parents().each(function() { + if($.data(this, that.widgetName + "-item") === that) { + currentItem = $(this); + return false; + } + }); + if($.data(event.target, that.widgetName + "-item") === that) { + currentItem = $(event.target); + } + + if(!currentItem) { + return false; + } + if(this.options.handle && !overrideHandle) { + $(this.options.handle, currentItem).find("*").addBack().each(function() { + if(this === event.target) { + validHandle = true; + } + }); + if(!validHandle) { + return false; + } + } + + this.currentItem = currentItem; + this._removeCurrentsFromItems(); + return true; + + }, + + _mouseStart: function(event, overrideHandle, noActivation) { + + var i, body, + o = this.options; + + this.currentContainer = this; + + //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture + this.refreshPositions(); + + //Create and append the visible helper + this.helper = this._createHelper(event); + + //Cache the helper size + this._cacheHelperProportions(); + + /* + * - Position generation - + * This block generates everything position related - it's the core of draggables. + */ + + //Cache the margins of the original element + this._cacheMargins(); + + //Get the next scrolling parent + this.scrollParent = this.helper.scrollParent(); + + //The element's absolute position on the page minus margins + this.offset = this.currentItem.offset(); + this.offset = { + top: this.offset.top - this.margins.top, + left: this.offset.left - this.margins.left + }; + + $.extend(this.offset, { + click: { //Where the click happened, relative to the element + left: event.pageX - this.offset.left, + top: event.pageY - this.offset.top + }, + parent: this._getParentOffset(), + relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper + }); + + // Only after we got the offset, we can change the helper's position to absolute + // TODO: Still need to figure out a way to make relative sorting possible + this.helper.css("position", "absolute"); + this.cssPosition = this.helper.css("position"); + + //Generate the original position + this.originalPosition = this._generatePosition(event); + this.originalPageX = event.pageX; + this.originalPageY = event.pageY; + + //Adjust the mouse offset relative to the helper if "cursorAt" is supplied + (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); + + //Cache the former DOM position + this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; + + //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way + if(this.helper[0] !== this.currentItem[0]) { + this.currentItem.hide(); + } + + //Create the placeholder + this._createPlaceholder(); + + //Set a containment if given in the options + if(o.containment) { + this._setContainment(); + } + + if( o.cursor && o.cursor !== "auto" ) { // cursor option + body = this.document.find( "body" ); + + // support: IE + this.storedCursor = body.css( "cursor" ); + body.css( "cursor", o.cursor ); + + this.storedStylesheet = $( "" ).appendTo( body ); + } + + if(o.opacity) { // opacity option + if (this.helper.css("opacity")) { + this._storedOpacity = this.helper.css("opacity"); + } + this.helper.css("opacity", o.opacity); + } + + if(o.zIndex) { // zIndex option + if (this.helper.css("zIndex")) { + this._storedZIndex = this.helper.css("zIndex"); + } + this.helper.css("zIndex", o.zIndex); + } + + //Prepare scrolling + if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { + this.overflowOffset = this.scrollParent.offset(); + } + + //Call callbacks + this._trigger("start", event, this._uiHash()); + + //Recache the helper size + if(!this._preserveHelperProportions) { + this._cacheHelperProportions(); + } + + + //Post "activate" events to possible containers + if( !noActivation ) { + for ( i = this.containers.length - 1; i >= 0; i-- ) { + this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); + } + } + + //Prepare possible droppables + if($.ui.ddmanager) { + $.ui.ddmanager.current = this; + } + + if ($.ui.ddmanager && !o.dropBehaviour) { + $.ui.ddmanager.prepareOffsets(this, event); + } + + this.dragging = true; + + this.helper.addClass("ui-sortable-helper"); + this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position + return true; + + }, + + _mouseDrag: function(event) { + var i, item, itemElement, intersection, + o = this.options, + scrolled = false; + + //Compute the helpers position + this.position = this._generatePosition(event); + this.positionAbs = this._convertPositionTo("absolute"); + + if (!this.lastPositionAbs) { + this.lastPositionAbs = this.positionAbs; + } + + //Do scrolling + if(this.options.scroll) { + if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { + + if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; + } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) { + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; + } + + if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; + } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) { + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; + } + + } else { + + if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) { + scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); + } else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) { + scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); + } + + if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) { + scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); + } else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) { + scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); + } + + } + + if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { + $.ui.ddmanager.prepareOffsets(this, event); + } + } + + //Regenerate the absolute position used for position checks + this.positionAbs = this._convertPositionTo("absolute"); + + //Set the helper position + if(!this.options.axis || this.options.axis !== "y") { + this.helper[0].style.left = this.position.left+"px"; + } + if(!this.options.axis || this.options.axis !== "x") { + this.helper[0].style.top = this.position.top+"px"; + } + + //Rearrange + for (i = this.items.length - 1; i >= 0; i--) { + + //Cache variables and intersection, continue if no intersection + item = this.items[i]; + itemElement = item.item[0]; + intersection = this._intersectsWithPointer(item); + if (!intersection) { + continue; + } + + // Only put the placeholder inside the current Container, skip all + // items form other containers. This works because when moving + // an item from one container to another the + // currentContainer is switched before the placeholder is moved. + // + // Without this moving items in "sub-sortables" can cause the placeholder to jitter + // beetween the outer and inner container. + if (item.instance !== this.currentContainer) { + continue; + } + + // cannot intersect with itself + // no useless actions that have been done before + // no action if the item moved is the parent of the item checked + if (itemElement !== this.currentItem[0] && + this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && + !$.contains(this.placeholder[0], itemElement) && + (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true) + ) { + + this.direction = intersection === 1 ? "down" : "up"; + + if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) { + this._rearrange(event, item); + } else { + break; + } + + this._trigger("change", event, this._uiHash()); + break; + } + } + + //Post events to containers + this._contactContainers(event); + + //Interconnect with droppables + if($.ui.ddmanager) { + $.ui.ddmanager.drag(this, event); + } + + //Call callbacks + this._trigger("sort", event, this._uiHash()); + + this.lastPositionAbs = this.positionAbs; + return false; + + }, + + _mouseStop: function(event, noPropagation) { + + if(!event) { + return; + } + + //If we are using droppables, inform the manager about the drop + if ($.ui.ddmanager && !this.options.dropBehaviour) { + $.ui.ddmanager.drop(this, event); + } + + if(this.options.revert) { + var that = this, + cur = this.placeholder.offset(), + axis = this.options.axis, + animation = {}; + + if ( !axis || axis === "x" ) { + animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft); + } + if ( !axis || axis === "y" ) { + animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop); + } + this.reverting = true; + $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() { + that._clear(event); + }); + } else { + this._clear(event, noPropagation); + } + + return false; + + }, + + cancel: function() { + + if(this.dragging) { + + this._mouseUp({ target: null }); + + if(this.options.helper === "original") { + this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); + } else { + this.currentItem.show(); + } + + //Post deactivating events to containers + for (var i = this.containers.length - 1; i >= 0; i--){ + this.containers[i]._trigger("deactivate", null, this._uiHash(this)); + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", null, this._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + } + + if (this.placeholder) { + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! + if(this.placeholder[0].parentNode) { + this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + } + if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { + this.helper.remove(); + } + + $.extend(this, { + helper: null, + dragging: false, + reverting: false, + _noFinalSort: null + }); + + if(this.domPosition.prev) { + $(this.domPosition.prev).after(this.currentItem); + } else { + $(this.domPosition.parent).prepend(this.currentItem); + } + } + + return this; + + }, + + serialize: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected), + str = []; + o = o || {}; + + $(items).each(function() { + var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); + if (res) { + str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2])); + } + }); + + if(!str.length && o.key) { + str.push(o.key + "="); + } + + return str.join("&"); + + }, + + toArray: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected), + ret = []; + + o = o || {}; + + items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); }); + return ret; + + }, + + /* Be careful with the following core functions */ + _intersectsWith: function(item) { + + var x1 = this.positionAbs.left, + x2 = x1 + this.helperProportions.width, + y1 = this.positionAbs.top, + y2 = y1 + this.helperProportions.height, + l = item.left, + r = l + item.width, + t = item.top, + b = t + item.height, + dyClick = this.offset.click.top, + dxClick = this.offset.click.left, + isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ), + isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ), + isOverElement = isOverElementHeight && isOverElementWidth; + + if ( this.options.tolerance === "pointer" || + this.options.forcePointerForContainers || + (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"]) + ) { + return isOverElement; + } else { + + return (l < x1 + (this.helperProportions.width / 2) && // Right Half + x2 - (this.helperProportions.width / 2) < r && // Left Half + t < y1 + (this.helperProportions.height / 2) && // Bottom Half + y2 - (this.helperProportions.height / 2) < b ); // Top Half + + } + }, + + _intersectsWithPointer: function(item) { + + var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), + isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), + isOverElement = isOverElementHeight && isOverElementWidth, + verticalDirection = this._getDragVerticalDirection(), + horizontalDirection = this._getDragHorizontalDirection(); + + if (!isOverElement) { + return false; + } + + return this.floating ? + ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 ) + : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) ); + + }, + + _intersectsWithSides: function(item) { + + var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), + isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), + verticalDirection = this._getDragVerticalDirection(), + horizontalDirection = this._getDragHorizontalDirection(); + + if (this.floating && horizontalDirection) { + return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf)); + } else { + return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf)); + } + + }, + + _getDragVerticalDirection: function() { + var delta = this.positionAbs.top - this.lastPositionAbs.top; + return delta !== 0 && (delta > 0 ? "down" : "up"); + }, + + _getDragHorizontalDirection: function() { + var delta = this.positionAbs.left - this.lastPositionAbs.left; + return delta !== 0 && (delta > 0 ? "right" : "left"); + }, + + refresh: function(event) { + this._refreshItems(event); + this.refreshPositions(); + return this; + }, + + _connectWith: function() { + var options = this.options; + return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith; + }, + + _getItemsAsjQuery: function(connected) { + + var i, j, cur, inst, + items = [], + queries = [], + connectWith = this._connectWith(); + + if(connectWith && connected) { + for (i = connectWith.length - 1; i >= 0; i--){ + cur = $(connectWith[i]); + for ( j = cur.length - 1; j >= 0; j--){ + inst = $.data(cur[j], this.widgetFullName); + if(inst && inst !== this && !inst.options.disabled) { + queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); + } + } + } + } + + queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); + + for (i = queries.length - 1; i >= 0; i--){ + queries[i][0].each(function() { + items.push(this); + }); + } + + return $(items); + + }, + + _removeCurrentsFromItems: function() { + + var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); + + this.items = $.grep(this.items, function (item) { + for (var j=0; j < list.length; j++) { + if(list[j] === item.item[0]) { + return false; + } + } + return true; + }); + + }, + + _refreshItems: function(event) { + + this.items = []; + this.containers = [this]; + + var i, j, cur, inst, targetData, _queries, item, queriesLength, + items = this.items, + queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], + connectWith = this._connectWith(); + + if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down + for (i = connectWith.length - 1; i >= 0; i--){ + cur = $(connectWith[i]); + for (j = cur.length - 1; j >= 0; j--){ + inst = $.data(cur[j], this.widgetFullName); + if(inst && inst !== this && !inst.options.disabled) { + queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); + this.containers.push(inst); + } + } + } + } + + for (i = queries.length - 1; i >= 0; i--) { + targetData = queries[i][1]; + _queries = queries[i][0]; + + for (j=0, queriesLength = _queries.length; j < queriesLength; j++) { + item = $(_queries[j]); + + item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) + + items.push({ + item: item, + instance: targetData, + width: 0, height: 0, + left: 0, top: 0 + }); + } + } + + }, + + refreshPositions: function(fast) { + + //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change + if(this.offsetParent && this.helper) { + this.offset.parent = this._getParentOffset(); + } + + var i, item, t, p; + + for (i = this.items.length - 1; i >= 0; i--){ + item = this.items[i]; + + //We ignore calculating positions of all connected containers when we're not over them + if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) { + continue; + } + + t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; + + if (!fast) { + item.width = t.outerWidth(); + item.height = t.outerHeight(); + } + + p = t.offset(); + item.left = p.left; + item.top = p.top; + } + + if(this.options.custom && this.options.custom.refreshContainers) { + this.options.custom.refreshContainers.call(this); + } else { + for (i = this.containers.length - 1; i >= 0; i--){ + p = this.containers[i].element.offset(); + this.containers[i].containerCache.left = p.left; + this.containers[i].containerCache.top = p.top; + this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); + this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); + } + } + + return this; + }, + + _createPlaceholder: function(that) { + that = that || this; + var className, + o = that.options; + + if(!o.placeholder || o.placeholder.constructor === String) { + className = o.placeholder; + o.placeholder = { + element: function() { + + var nodeName = that.currentItem[0].nodeName.toLowerCase(), + element = $( "<" + nodeName + ">", that.document[0] ) + .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") + .removeClass("ui-sortable-helper"); + + if ( nodeName === "tr" ) { + that.currentItem.children().each(function() { + $( " ", that.document[0] ) + .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) + .appendTo( element ); + }); + } else if ( nodeName === "img" ) { + element.attr( "src", that.currentItem.attr( "src" ) ); + } + + if ( !className ) { + element.css( "visibility", "hidden" ); + } + + return element; + }, + update: function(container, p) { + + // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that + // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified + if(className && !o.forcePlaceholderSize) { + return; + } + + //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item + if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } + if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); } + } + }; + } + + //Create the placeholder + that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); + + //Append it after the actual current item + that.currentItem.after(that.placeholder); + + //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) + o.placeholder.update(that, that.placeholder); + + }, + + _contactContainers: function(event) { + var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, + innermostContainer = null, + innermostIndex = null; + + // get innermost container that intersects with item + for (i = this.containers.length - 1; i >= 0; i--) { + + // never consider a container that's located within the item itself + if($.contains(this.currentItem[0], this.containers[i].element[0])) { + continue; + } + + if(this._intersectsWith(this.containers[i].containerCache)) { + + // if we've already found a container and it's more "inner" than this, then continue + if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { + continue; + } + + innermostContainer = this.containers[i]; + innermostIndex = i; + + } else { + // container doesn't intersect. trigger "out" event if necessary + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", event, this._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + } + + // if no intersecting containers found, return + if(!innermostContainer) { + return; + } + + // move the item into the container if it's not there already + if(this.containers.length === 1) { + if (!this.containers[innermostIndex].containerCache.over) { + this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); + this.containers[innermostIndex].containerCache.over = 1; + } + } else { + + //When entering a new container, we will find the item with the least distance and append our item near it + dist = 10000; + itemWithLeastDistance = null; + floating = innermostContainer.floating || isFloating(this.currentItem); + posProperty = floating ? "left" : "top"; + sizeProperty = floating ? "width" : "height"; + base = this.positionAbs[posProperty] + this.offset.click[posProperty]; + for (j = this.items.length - 1; j >= 0; j--) { + if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { + continue; + } + if(this.items[j].item[0] === this.currentItem[0]) { + continue; + } + if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) { + continue; + } + cur = this.items[j].item.offset()[posProperty]; + nearBottom = false; + if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ + nearBottom = true; + cur += this.items[j][sizeProperty]; + } + + if(Math.abs(cur - base) < dist) { + dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; + this.direction = nearBottom ? "up": "down"; + } + } + + //Check if dropOnEmpty is enabled + if(!itemWithLeastDistance && !this.options.dropOnEmpty) { + return; + } + + if(this.currentContainer === this.containers[innermostIndex]) { + return; + } + + itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); + this._trigger("change", event, this._uiHash()); + this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); + this.currentContainer = this.containers[innermostIndex]; + + //Update the placeholder + this.options.placeholder.update(this.currentContainer, this.placeholder); + + this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); + this.containers[innermostIndex].containerCache.over = 1; + } + + + }, + + _createHelper: function(event) { + + var o = this.options, + helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); + + //Add the helper to the DOM if that didn't happen already + if(!helper.parents("body").length) { + $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); + } + + if(helper[0] === this.currentItem[0]) { + this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; + } + + if(!helper[0].style.width || o.forceHelperSize) { + helper.width(this.currentItem.width()); + } + if(!helper[0].style.height || o.forceHelperSize) { + helper.height(this.currentItem.height()); + } + + return helper; + + }, + + _adjustOffsetFromHelper: function(obj) { + if (typeof obj === "string") { + obj = obj.split(" "); + } + if ($.isArray(obj)) { + obj = {left: +obj[0], top: +obj[1] || 0}; + } + if ("left" in obj) { + this.offset.click.left = obj.left + this.margins.left; + } + if ("right" in obj) { + this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + } + if ("top" in obj) { + this.offset.click.top = obj.top + this.margins.top; + } + if ("bottom" in obj) { + this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + } + }, + + _getParentOffset: function() { + + + //Get the offsetParent and cache its position + this.offsetParent = this.helper.offsetParent(); + var po = this.offsetParent.offset(); + + // This is a special case where we need to modify a offset calculated on start, since the following happened: + // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent + // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that + // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag + if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { + po.left += this.scrollParent.scrollLeft(); + po.top += this.scrollParent.scrollTop(); + } + + // This needs to be actually done for all browsers, since pageX/pageY includes this information + // with an ugly IE fix + if( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { + po = { top: 0, left: 0 }; + } + + return { + top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), + left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + }; + + }, + + _getRelativeOffset: function() { + + if(this.cssPosition === "relative") { + var p = this.currentItem.position(); + return { + top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), + left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + }; + } else { + return { top: 0, left: 0 }; + } + + }, + + _cacheMargins: function() { + this.margins = { + left: (parseInt(this.currentItem.css("marginLeft"),10) || 0), + top: (parseInt(this.currentItem.css("marginTop"),10) || 0) + }; + }, + + _cacheHelperProportions: function() { + this.helperProportions = { + width: this.helper.outerWidth(), + height: this.helper.outerHeight() + }; + }, + + _setContainment: function() { + + var ce, co, over, + o = this.options; + if(o.containment === "parent") { + o.containment = this.helper[0].parentNode; + } + if(o.containment === "document" || o.containment === "window") { + this.containment = [ + 0 - this.offset.relative.left - this.offset.parent.left, + 0 - this.offset.relative.top - this.offset.parent.top, + $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, + ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top + ]; + } + + if(!(/^(document|window|parent)$/).test(o.containment)) { + ce = $(o.containment)[0]; + co = $(o.containment).offset(); + over = ($(ce).css("overflow") !== "hidden"); + + this.containment = [ + co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, + co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, + co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, + co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top + ]; + } + + }, + + _convertPositionTo: function(d, pos) { + + if(!pos) { + pos = this.position; + } + var mod = d === "absolute" ? 1 : -1, + scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, + scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + return { + top: ( + pos.top + // The absolute mouse position + this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) + ), + left: ( + pos.left + // The absolute mouse position + this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) + ) + }; + + }, + + _generatePosition: function(event) { + + var top, left, + o = this.options, + pageX = event.pageX, + pageY = event.pageY, + scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + // This is another very weird special case that only happens for relative elements: + // 1. If the css position is relative + // 2. and the scroll parent is the document or similar to the offset parent + // we have to refresh the relative offset during the scroll so there are no jumps + if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) { + this.offset.relative = this._getRelativeOffset(); + } + + /* + * - Position constraining - + * Constrain the position to a mix of grid, containment. + */ + + if(this.originalPosition) { //If we are not dragging yet, we won't check for options + + if(this.containment) { + if(event.pageX - this.offset.click.left < this.containment[0]) { + pageX = this.containment[0] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top < this.containment[1]) { + pageY = this.containment[1] + this.offset.click.top; + } + if(event.pageX - this.offset.click.left > this.containment[2]) { + pageX = this.containment[2] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top > this.containment[3]) { + pageY = this.containment[3] + this.offset.click.top; + } + } + + if(o.grid) { + top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; + pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; + + left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; + pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; + } + + } + + return { + top: ( + pageY - // The absolute mouse position + this.offset.click.top - // Click offset (relative to the element) + this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top + // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) + ), + left: ( + pageX - // The absolute mouse position + this.offset.click.left - // Click offset (relative to the element) + this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left + // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) + ) + }; + + }, + + _rearrange: function(event, i, a, hardRefresh) { + + a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); + + //Various things done here to improve the performance: + // 1. we create a setTimeout, that calls refreshPositions + // 2. on the instance, we have a counter variable, that get's higher after every append + // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same + // 4. this lets only the last addition to the timeout stack through + this.counter = this.counter ? ++this.counter : 1; + var counter = this.counter; + + this._delay(function() { + if(counter === this.counter) { + this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove + } + }); + + }, + + _clear: function(event, noPropagation) { + + this.reverting = false; + // We delay all events that have to be triggered to after the point where the placeholder has been removed and + // everything else normalized again + var i, + delayedTriggers = []; + + // We first have to update the dom position of the actual currentItem + // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) + if(!this._noFinalSort && this.currentItem.parent().length) { + this.placeholder.before(this.currentItem); + } + this._noFinalSort = null; + + if(this.helper[0] === this.currentItem[0]) { + for(i in this._storedCSS) { + if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { + this._storedCSS[i] = ""; + } + } + this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); + } else { + this.currentItem.show(); + } + + if(this.fromOutside && !noPropagation) { + delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); + } + if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { + delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed + } + + // Check if the items Container has Changed and trigger appropriate + // events. + if (this !== this.currentContainer) { + if(!noPropagation) { + delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); + delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + } + } + + + //Post events to containers + for (i = this.containers.length - 1; i >= 0; i--){ + if(!noPropagation) { + delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i])); + } + if(this.containers[i].containerCache.over) { + delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i])); + this.containers[i].containerCache.over = 0; + } + } + + //Do what was originally in plugins + if ( this.storedCursor ) { + this.document.find( "body" ).css( "cursor", this.storedCursor ); + this.storedStylesheet.remove(); + } + if(this._storedOpacity) { + this.helper.css("opacity", this._storedOpacity); + } + if(this._storedZIndex) { + this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); + } + + this.dragging = false; + if(this.cancelHelperRemoval) { + if(!noPropagation) { + this._trigger("beforeStop", event, this._uiHash()); + for (i=0; i < delayedTriggers.length; i++) { + delayedTriggers[i].call(this, event); + } //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return false; + } + + if(!noPropagation) { + this._trigger("beforeStop", event, this._uiHash()); + } + + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! + this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + + if(this.helper[0] !== this.currentItem[0]) { + this.helper.remove(); + } + this.helper = null; + + if(!noPropagation) { + for (i=0; i < delayedTriggers.length; i++) { + delayedTriggers[i].call(this, event); + } //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return true; + + }, + + _trigger: function() { + if ($.Widget.prototype._trigger.apply(this, arguments) === false) { + this.cancel(); + } + }, + + _uiHash: function(_inst) { + var inst = _inst || this; + return { + helper: inst.helper, + placeholder: inst.placeholder || $([]), + position: inst.position, + originalPosition: inst.originalPosition, + offset: inst.positionAbs, + item: inst.currentItem, + sender: _inst ? _inst.element : null + }; + } + +}); + +})(jQuery); + +(function($, undefined) { + +var dataSpace = "ui-effects-"; + +$.effects = { + effect: {} +}; + +/*! + * jQuery Color Animations v2.1.2 + * https://github.com/jquery/jquery-color + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * Date: Wed Jan 16 08:47:09 2013 -0600 + */ +(function( jQuery, undefined ) { + + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", + + // plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, + // a set of RE's that can match strings and generate color tuples. + stringParsers = [{ + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ] * 2.55, + execResult[ 2 ] * 2.55, + execResult[ 3 ] * 2.55, + execResult[ 4 ] + ]; + } + }, { + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ) + ]; + } + }, { + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ] / 100, + execResult[ 3 ] / 100, + execResult[ 4 ] + ]; + } + }], + + // jQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); + }, + spaces = { + rgba: { + props: { + red: { + idx: 0, + type: "byte" + }, + green: { + idx: 1, + type: "byte" + }, + blue: { + idx: 2, + type: "byte" + } + } + }, + + hsla: { + props: { + hue: { + idx: 0, + type: "degrees" + }, + saturation: { + idx: 1, + type: "percent" + }, + lightness: { + idx: 2, + type: "percent" + } + } + } + }, + propTypes = { + "byte": { + floor: true, + max: 255 + }, + "percent": { + max: 1 + }, + "degrees": { + mod: 360, + floor: true + } + }, + support = color.support = {}, + + // element for support tests + supportElem = jQuery( "

" )[ 0 ], + + // colors = jQuery.Color.names + colors, + + // local aliases of functions called often + each = jQuery.each; + +// determine rgba support immediately +supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; +support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; + +// define cache name and alpha properties +// for rgba and hsla spaces +each( spaces, function( spaceName, space ) { + space.cache = "_" + spaceName; + space.props.alpha = { + idx: 3, + type: "percent", + def: 1 + }; +}); + +function clamp( value, prop, allowEmpty ) { + var type = propTypes[ prop.type ] || {}; + + if ( value == null ) { + return (allowEmpty || !prop.def) ? null : prop.def; + } + + // ~~ is an short way of doing floor for positive numbers + value = type.floor ? ~~value : parseFloat( value ); + + // IE will pass in empty strings as value for alpha, + // which will hit this case + if ( isNaN( value ) ) { + return prop.def; + } + + if ( type.mod ) { + // we add mod before modding to make sure that negatives values + // get converted properly: -10 -> 350 + return (value + type.mod) % type.mod; + } + + // for now all property types without mod have min and max + return 0 > value ? 0 : type.max < value ? type.max : value; +} + +function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; + + string = string.toLowerCase(); + + each( stringParsers, function( i, parser ) { + var parsed, + match = parser.re.exec( string ), + values = match && parser.parse( match ), + spaceName = parser.space || "rgba"; + + if ( values ) { + parsed = inst[ spaceName ]( values ); + + // if this was an rgba parse the assignment might happen twice + // oh well.... + inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; + rgba = inst._rgba = parsed._rgba; + + // exit each( stringParsers ) here because we matched + return false; + } + }); + + // Found a stringParser that handled it + if ( rgba.length ) { + + // if this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( rgba.join() === "0,0,0,0" ) { + jQuery.extend( rgba, colors.transparent ); + } + return inst; + } + + // named colors + return colors[ string ]; +} + +color.fn = jQuery.extend( color.prototype, { + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red.jquery || red.nodeType ) { + red = jQuery( red ).css( green ); + green = undefined; + } + + var inst = this, + type = jQuery.type( red ), + rgba = this._rgba = []; + + // more than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; + } + + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } + + if ( type === "array" ) { + each( spaces.rgba.props, function( key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + }); + return this; + } + + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + }); + } else { + each( spaces, function( spaceName, space ) { + var cache = space.cache; + each( space.props, function( key, prop ) { + + // if the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { + + // if the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( key === "alpha" || red[ key ] == null ) { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } + + // this is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + }); + + // everything defined but alpha? + if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { + // use the default of 1 + inst[ cache ][ 3 ] = 1; + if ( space.from ) { + inst._rgba = space.from( inst[ cache ] ); + } + } + }); + } + return this; + } + }, + is: function( compare ) { + var is = color( compare ), + same = true, + inst = this; + + each( spaces, function( _, space ) { + var localCache, + isCache = is[ space.cache ]; + if (isCache) { + localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); + return same; + } + }); + } + return same; + }); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + }); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + startColor = this.alpha() === 0 ? color( "transparent" ) : this, + start = startColor[ space.cache ] || space.to( startColor._rgba ), + result = start.slice(); + + end = end[ space.cache ]; + each( space.props, function( key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; + + // if null, don't override start value + if ( endValue === null ) { + return; + } + // if null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + }); + return this[ spaceName ]( result ); + }, + blend: function( opaque ) { + // if we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; + } + + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + })); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + return v == null ? ( i > 2 ? 1 : 0 ) : v; + }); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; + } + + return prefix + rgba.join() + ")"; + }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } + + // catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + }); + + if ( hsla[ 3 ] === 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join() + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); + + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); + } + + return "#" + jQuery.map( rgba, function( v ) { + + // default to 0 when nulls exist + v = ( v || 0 ).toString( 16 ); + return v.length === 1 ? "0" + v : v; + }).join(""); + }, + toString: function() { + return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); + } +}); +color.fn.parse.prototype = color.fn; + +// hsla conversions adapted from: +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 + +function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + (q - p) * h * 6; + } + if ( h * 2 < 1) { + return q; + } + if ( h * 3 < 2 ) { + return p + (q - p) * ((2/3) - h) * 6; + } + return p; +} + +spaces.hsla.to = function ( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; + + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } + + // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% + // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) + if ( diff === 0 ) { + s = 0; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; +}; + +spaces.hsla.from = function ( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q; + + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; +}; + + +each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; + + // makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { + + // generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } + + var ret, + type = jQuery.type( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(); + + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + }); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + // alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var vtype = jQuery.type( value ), + fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), + local = this[ fn ](), + cur = local[ prop.idx ], + match; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = jQuery.type( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); + } + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + }); +}); + +// add cssHook and .fx.step function for each named hook. +// accept a space separated string of properties +color.hook = function( hook ) { + var hooks = hook.split( " " ); + each( hooks, function( i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed, curElem, + backgroundColor = ""; + + if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { + value = color( parsed || value ); + if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { + curElem = hook === "backgroundColor" ? elem.parentNode : elem; + while ( + (backgroundColor === "" || backgroundColor === "transparent") && + curElem && curElem.style + ) { + try { + backgroundColor = jQuery.css( curElem, "backgroundColor" ); + curElem = curElem.parentNode; + } catch ( e ) { + } + } + + value = value.blend( backgroundColor && backgroundColor !== "transparent" ? + backgroundColor : + "_default" ); + } + + value = value.toRgbaString(); + } + try { + elem.style[ hook ] = value; + } catch( e ) { + // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' + } + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + }); + +}; + +color.hook( stepHooks ); + +jQuery.cssHooks.borderColor = { + expand: function( value ) { + var expanded = {}; + + each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { + expanded[ "border" + part + "Color" ] = value; + }); + return expanded; + } +}; + +// Basic color names only. +// Usage of any of the other color names requires adding yourself or including +// jquery.color.svg-names.js. +colors = jQuery.Color.names = { + // 4.1. Basic color keywords + aqua: "#00ffff", + black: "#000000", + blue: "#0000ff", + fuchsia: "#ff00ff", + gray: "#808080", + green: "#008000", + lime: "#00ff00", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + purple: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + teal: "#008080", + white: "#ffffff", + yellow: "#ffff00", + + // 4.2.3. "transparent" color keyword + transparent: [ null, null, null, 0 ], + + _default: "#ffffff" +}; + +})( jQuery ); + + +/******************************************************************************/ +/****************************** CLASS ANIMATIONS ******************************/ +/******************************************************************************/ +(function() { + +var classAnimationActions = [ "add", "remove", "toggle" ], + shorthandStyles = { + border: 1, + borderBottom: 1, + borderColor: 1, + borderLeft: 1, + borderRight: 1, + borderTop: 1, + borderWidth: 1, + margin: 1, + padding: 1 + }; + +$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { + $.fx.step[ prop ] = function( fx ) { + if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { + jQuery.style( fx.elem, prop, fx.end ); + fx.setAttr = true; + } + }; +}); + +function getElementStyles( elem ) { + var key, len, + style = elem.ownerDocument.defaultView ? + elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : + elem.currentStyle, + styles = {}; + + if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { + len = style.length; + while ( len-- ) { + key = style[ len ]; + if ( typeof style[ key ] === "string" ) { + styles[ $.camelCase( key ) ] = style[ key ]; + } + } + // support: Opera, IE <9 + } else { + for ( key in style ) { + if ( typeof style[ key ] === "string" ) { + styles[ key ] = style[ key ]; + } + } + } + + return styles; +} + + +function styleDifference( oldStyle, newStyle ) { + var diff = {}, + name, value; + + for ( name in newStyle ) { + value = newStyle[ name ]; + if ( oldStyle[ name ] !== value ) { + if ( !shorthandStyles[ name ] ) { + if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { + diff[ name ] = value; + } + } + } + } + + return diff; +} + +// support: jQuery <1.8 +if ( !$.fn.addBack ) { + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +$.effects.animateClass = function( value, duration, easing, callback ) { + var o = $.speed( duration, easing, callback ); + + return this.queue( function() { + var animated = $( this ), + baseClass = animated.attr( "class" ) || "", + applyClassChange, + allAnimations = o.children ? animated.find( "*" ).addBack() : animated; + + // map the animated objects to store the original styles. + allAnimations = allAnimations.map(function() { + var el = $( this ); + return { + el: el, + start: getElementStyles( this ) + }; + }); + + // apply class change + applyClassChange = function() { + $.each( classAnimationActions, function(i, action) { + if ( value[ action ] ) { + animated[ action + "Class" ]( value[ action ] ); + } + }); + }; + applyClassChange(); + + // map all animated objects again - calculate new styles and diff + allAnimations = allAnimations.map(function() { + this.end = getElementStyles( this.el[ 0 ] ); + this.diff = styleDifference( this.start, this.end ); + return this; + }); + + // apply original class + animated.attr( "class", baseClass ); + + // map all animated objects again - this time collecting a promise + allAnimations = allAnimations.map(function() { + var styleInfo = this, + dfd = $.Deferred(), + opts = $.extend({}, o, { + queue: false, + complete: function() { + dfd.resolve( styleInfo ); + } + }); + + this.el.animate( this.diff, opts ); + return dfd.promise(); + }); + + // once all animations have completed: + $.when.apply( $, allAnimations.get() ).done(function() { + + // set the final class + applyClassChange(); + + // for each animated element, + // clear all css properties that were animated + $.each( arguments, function() { + var el = this.el; + $.each( this.diff, function(key) { + el.css( key, "" ); + }); + }); + + // this is guarnteed to be there if you use jQuery.speed() + // it also handles dequeuing the next anim... + o.complete.call( animated[ 0 ] ); + }); + }); +}; + +$.fn.extend({ + addClass: (function( orig ) { + return function( classNames, speed, easing, callback ) { + return speed ? + $.effects.animateClass.call( this, + { add: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + })( $.fn.addClass ), + + removeClass: (function( orig ) { + return function( classNames, speed, easing, callback ) { + return arguments.length > 1 ? + $.effects.animateClass.call( this, + { remove: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + })( $.fn.removeClass ), + + toggleClass: (function( orig ) { + return function( classNames, force, speed, easing, callback ) { + if ( typeof force === "boolean" || force === undefined ) { + if ( !speed ) { + // without speed parameter + return orig.apply( this, arguments ); + } else { + return $.effects.animateClass.call( this, + (force ? { add: classNames } : { remove: classNames }), + speed, easing, callback ); + } + } else { + // without force parameter + return $.effects.animateClass.call( this, + { toggle: classNames }, force, speed, easing ); + } + }; + })( $.fn.toggleClass ), + + switchClass: function( remove, add, speed, easing, callback) { + return $.effects.animateClass.call( this, { + add: add, + remove: remove + }, speed, easing, callback ); + } +}); + +})(); + +/******************************************************************************/ +/*********************************** EFFECTS **********************************/ +/******************************************************************************/ + +(function() { + +$.extend( $.effects, { + version: "1.10.3", + + // Saves a set of properties in a data storage + save: function( element, set ) { + for( var i=0; i < set.length; i++ ) { + if ( set[ i ] !== null ) { + element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); + } + } + }, + + // Restores a set of previously saved properties from a data storage + restore: function( element, set ) { + var val, i; + for( i=0; i < set.length; i++ ) { + if ( set[ i ] !== null ) { + val = element.data( dataSpace + set[ i ] ); + // support: jQuery 1.6.2 + // http://bugs.jquery.com/ticket/9917 + // jQuery 1.6.2 incorrectly returns undefined for any falsy value. + // We can't differentiate between "" and 0 here, so we just assume + // empty string since it's likely to be a more common value... + if ( val === undefined ) { + val = ""; + } + element.css( set[ i ], val ); + } + } + }, + + setMode: function( el, mode ) { + if (mode === "toggle") { + mode = el.is( ":hidden" ) ? "show" : "hide"; + } + return mode; + }, + + // Translates a [top,left] array into a baseline value + // this should be a little more flexible in the future to handle a string & hash + getBaseline: function( origin, original ) { + var y, x; + switch ( origin[ 0 ] ) { + case "top": y = 0; break; + case "middle": y = 0.5; break; + case "bottom": y = 1; break; + default: y = origin[ 0 ] / original.height; + } + switch ( origin[ 1 ] ) { + case "left": x = 0; break; + case "center": x = 0.5; break; + case "right": x = 1; break; + default: x = origin[ 1 ] / original.width; + } + return { + x: x, + y: y + }; + }, + + // Wraps the element around a wrapper that copies position properties + createWrapper: function( element ) { + + // if the element is already wrapped, return it + if ( element.parent().is( ".ui-effects-wrapper" )) { + return element.parent(); + } + + // wrap the element + var props = { + width: element.outerWidth(true), + height: element.outerHeight(true), + "float": element.css( "float" ) + }, + wrapper = $( "

" ) + .addClass( "ui-effects-wrapper" ) + .css({ + fontSize: "100%", + background: "transparent", + border: "none", + margin: 0, + padding: 0 + }), + // Store the size in case width/height are defined in % - Fixes #5245 + size = { + width: element.width(), + height: element.height() + }, + active = document.activeElement; + + // support: Firefox + // Firefox incorrectly exposes anonymous content + // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 + try { + active.id; + } catch( e ) { + active = document.body; + } + + element.wrap( wrapper ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + + wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element + + // transfer positioning properties to the wrapper + if ( element.css( "position" ) === "static" ) { + wrapper.css({ position: "relative" }); + element.css({ position: "relative" }); + } else { + $.extend( props, { + position: element.css( "position" ), + zIndex: element.css( "z-index" ) + }); + $.each([ "top", "left", "bottom", "right" ], function(i, pos) { + props[ pos ] = element.css( pos ); + if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { + props[ pos ] = "auto"; + } + }); + element.css({ + position: "relative", + top: 0, + left: 0, + right: "auto", + bottom: "auto" + }); + } + element.css(size); + + return wrapper.css( props ).show(); + }, + + removeWrapper: function( element ) { + var active = document.activeElement; + + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + element.parent().replaceWith( element ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + } + + + return element; + }, + + setTransition: function( element, list, factor, value ) { + value = value || {}; + $.each( list, function( i, x ) { + var unit = element.cssUnit( x ); + if ( unit[ 0 ] > 0 ) { + value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; + } + }); + return value; + } +}); + +// return an effect options object for the given parameters: +function _normalizeArguments( effect, options, speed, callback ) { + + // allow passing all options as the first parameter + if ( $.isPlainObject( effect ) ) { + options = effect; + effect = effect.effect; + } + + // convert to an object + effect = { effect: effect }; + + // catch (effect, null, ...) + if ( options == null ) { + options = {}; + } + + // catch (effect, callback) + if ( $.isFunction( options ) ) { + callback = options; + speed = null; + options = {}; + } + + // catch (effect, speed, ?) + if ( typeof options === "number" || $.fx.speeds[ options ] ) { + callback = speed; + speed = options; + options = {}; + } + + // catch (effect, options, callback) + if ( $.isFunction( speed ) ) { + callback = speed; + speed = null; + } + + // add options to effect + if ( options ) { + $.extend( effect, options ); + } + + speed = speed || options.duration; + effect.duration = $.fx.off ? 0 : + typeof speed === "number" ? speed : + speed in $.fx.speeds ? $.fx.speeds[ speed ] : + $.fx.speeds._default; + + effect.complete = callback || options.complete; + + return effect; +} + +function standardAnimationOption( option ) { + // Valid standard speeds (nothing, number, named speed) + if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { + return true; + } + + // Invalid strings - treat as "normal" speed + if ( typeof option === "string" && !$.effects.effect[ option ] ) { + return true; + } + + // Complete callback + if ( $.isFunction( option ) ) { + return true; + } + + // Options hash (but not naming an effect) + if ( typeof option === "object" && !option.effect ) { + return true; + } + + // Didn't match any standard API + return false; +} + +$.fn.extend({ + effect: function( /* effect, options, speed, callback */ ) { + var args = _normalizeArguments.apply( this, arguments ), + mode = args.mode, + queue = args.queue, + effectMethod = $.effects.effect[ args.effect ]; + + if ( $.fx.off || !effectMethod ) { + // delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args.duration, args.complete ); + } else { + return this.each( function() { + if ( args.complete ) { + args.complete.call( this ); + } + }); + } + } + + function run( next ) { + var elem = $( this ), + complete = args.complete, + mode = args.mode; + + function done() { + if ( $.isFunction( complete ) ) { + complete.call( elem[0] ); + } + if ( $.isFunction( next ) ) { + next(); + } + } + + // If the element already has the correct final state, delegate to + // the core methods so the internal tracking of "olddisplay" works. + if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[0], args, done ); + } + } + + return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); + }, + + show: (function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "show"; + return this.effect.call( this, args ); + } + }; + })( $.fn.show ), + + hide: (function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "hide"; + return this.effect.call( this, args ); + } + }; + })( $.fn.hide ), + + toggle: (function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) || typeof option === "boolean" ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "toggle"; + return this.effect.call( this, args ); + } + }; + })( $.fn.toggle ), + + // helper functions + cssUnit: function(key) { + var style = this.css( key ), + val = []; + + $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { + if ( style.indexOf( unit ) > 0 ) { + val = [ parseFloat( style ), unit ]; + } + }); + return val; + } +}); + +})(); + +/******************************************************************************/ +/*********************************** EASING ***********************************/ +/******************************************************************************/ + +(function() { + +// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) + +var baseEasings = {}; + +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { + baseEasings[ name ] = function( p ) { + return Math.pow( p, i + 2 ); + }; +}); + +$.extend( baseEasings, { + Sine: function ( p ) { + return 1 - Math.cos( p * Math.PI / 2 ); + }, + Circ: function ( p ) { + return 1 - Math.sqrt( 1 - p * p ); + }, + Elastic: function( p ) { + return p === 0 || p === 1 ? p : + -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); + }, + Back: function( p ) { + return p * p * ( 3 * p - 2 ); + }, + Bounce: function ( p ) { + var pow2, + bounce = 4; + + while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} + return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); + } +}); + +$.each( baseEasings, function( name, easeIn ) { + $.easing[ "easeIn" + name ] = easeIn; + $.easing[ "easeOut" + name ] = function( p ) { + return 1 - easeIn( 1 - p ); + }; + $.easing[ "easeInOut" + name ] = function( p ) { + return p < 0.5 ? + easeIn( p * 2 ) / 2 : + 1 - easeIn( p * -2 + 2 ) / 2; + }; +}); + +})(); + +})(jQuery); + +(function( $, undefined ) { + +var uid = 0, + hideProps = {}, + showProps = {}; + +hideProps.height = hideProps.paddingTop = hideProps.paddingBottom = + hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide"; +showProps.height = showProps.paddingTop = showProps.paddingBottom = + showProps.borderTopWidth = showProps.borderBottomWidth = "show"; + +$.widget( "ui.accordion", { + version: "1.10.3", + options: { + active: 0, + animate: {}, + collapsible: false, + event: "click", + header: "> li > :first-child,> :not(li):even", + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, + + // callbacks + activate: null, + beforeActivate: null + }, + + _create: function() { + var options = this.options; + this.prevShow = this.prevHide = $(); + this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) + // ARIA + .attr( "role", "tablist" ); + + // don't allow collapsible: false and active: false / null + if ( !options.collapsible && (options.active === false || options.active == null) ) { + options.active = 0; + } + + this._processPanels(); + // handle negative values + if ( options.active < 0 ) { + options.active += this.headers.length; + } + this._refresh(); + }, + + _getCreateEventData: function() { + return { + header: this.active, + panel: !this.active.length ? $() : this.active.next(), + content: !this.active.length ? $() : this.active.next() + }; + }, + + _createIcons: function() { + var icons = this.options.icons; + if ( icons ) { + $( "" ) + .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) + .prependTo( this.headers ); + this.active.children( ".ui-accordion-header-icon" ) + .removeClass( icons.header ) + .addClass( icons.activeHeader ); + this.headers.addClass( "ui-accordion-icons" ); + } + }, + + _destroyIcons: function() { + this.headers + .removeClass( "ui-accordion-icons" ) + .children( ".ui-accordion-header-icon" ) + .remove(); + }, + + _destroy: function() { + var contents; + + // clean up main element + this.element + .removeClass( "ui-accordion ui-widget ui-helper-reset" ) + .removeAttr( "role" ); + + // clean up headers + this.headers + .removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) + .removeAttr( "role" ) + .removeAttr( "aria-selected" ) + .removeAttr( "aria-controls" ) + .removeAttr( "tabIndex" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + this._destroyIcons(); + + // clean up content panels + contents = this.headers.next() + .css( "display", "" ) + .removeAttr( "role" ) + .removeAttr( "aria-expanded" ) + .removeAttr( "aria-hidden" ) + .removeAttr( "aria-labelledby" ) + .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); + } + this._setupEvents( value ); + } + + this._super( key, value ); + + // setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); + } + + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } + + // #5332 - opacity doesn't cascade to positioned elements in IE + // so we need to add the disabled class to the headers and panels + if ( key === "disabled" ) { + this.headers.add( this.headers.next() ) + .toggleClass( "ui-state-disabled", !!value ); + } + }, + + _keydown: function( event ) { + /*jshint maxcomplexity:15*/ + if ( event.altKey || event.ctrlKey ) { + return; + } + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; + } + + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + toFocus.focus(); + event.preventDefault(); + } + }, + + _panelKeyDown : function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().focus(); + } + }, + + refresh: function() { + var options = this.options; + this._processPanels(); + + // was collapsed or no panel + if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { + options.active = false; + this.active = $(); + // active false only when collapsible is true + } else if ( options.active === false ) { + this._activate( 0 ); + // was active, but active panel is gone + } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + // all remaining panel are disabled + if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { + options.active = false; + this.active = $(); + // activate previous panel + } else { + this._activate( Math.max( 0, options.active - 1 ) ); + } + // was active, active panel still exists + } else { + // make sure active index is correct + options.active = this.headers.index( this.active ); + } + + this._destroyIcons(); + + this._refresh(); + }, + + _processPanels: function() { + this.headers = this.element.find( this.options.header ) + .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); + + this.headers.next() + .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) + .filter(":not(.ui-accordion-content-active)") + .hide(); + }, + + _refresh: function() { + var maxHeight, + options = this.options, + heightStyle = options.heightStyle, + parent = this.element.parent(), + accordionId = this.accordionId = "ui-accordion-" + + (this.element.attr( "id" ) || ++uid); + + this.active = this._findActive( options.active ) + .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ) + .removeClass( "ui-corner-all" ); + this.active.next() + .addClass( "ui-accordion-content-active" ) + .show(); + + this.headers + .attr( "role", "tab" ) + .each(function( i ) { + var header = $( this ), + headerId = header.attr( "id" ), + panel = header.next(), + panelId = panel.attr( "id" ); + if ( !headerId ) { + headerId = accordionId + "-header-" + i; + header.attr( "id", headerId ); + } + if ( !panelId ) { + panelId = accordionId + "-panel-" + i; + panel.attr( "id", panelId ); + } + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + }) + .next() + .attr( "role", "tabpanel" ); + + this.headers + .not( this.active ) + .attr({ + "aria-selected": "false", + tabIndex: -1 + }) + .next() + .attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }) + .hide(); + + // make sure at least one header is in the tab order + if ( !this.active.length ) { + this.headers.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active.attr({ + "aria-selected": "true", + tabIndex: 0 + }) + .next() + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }); + } + + this._createIcons(); + + this._setupEvents( options.event ); + + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + this.element.siblings( ":visible" ).each(function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + }); + + this.headers.each(function() { + maxHeight -= $( this ).outerHeight( true ); + }); + + this.headers.next() + .each(function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + }) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each(function() { + maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + }) + .height( maxHeight ); + } + }, + + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; + + // trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler({ + target: active, + currentTarget: active, + preventDefault: $.noop + }); + }, + + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, + + _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; + if ( event ) { + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + }); + } + + this._off( this.headers.add( this.headers.next() ) ); + this._on( this.headers, events ); + this._on( this.headers.next(), { keydown: "_panelKeyDown" }); + this._hoverable( this.headers ); + this._focusable( this.headers ); + }, + + _eventHandler: function( event ) { + var options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; + + event.preventDefault(); + + if ( + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.headers.index( clicked ); + + // when the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); + + // switch classes + // corner classes on the previously active header stay after the animation + active.removeClass( "ui-accordion-header-active ui-state-active" ); + if ( options.icons ) { + active.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.activeHeader ) + .addClass( options.icons.header ); + } + + if ( !clickedIsActive ) { + clicked + .removeClass( "ui-corner-all" ) + .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); + if ( options.icons ) { + clicked.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.header ) + .addClass( options.icons.activeHeader ); + } + + clicked + .next() + .addClass( "ui-accordion-content-active" ); + } + }, + + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }); + toHide.prev().attr( "aria-selected", "false" ); + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr( "tabIndex", -1 ); + } else if ( toShow.length ) { + this.headers.filter(function() { + return $( this ).attr( "tabIndex" ) === 0; + }) + .attr( "tabIndex", -1 ); + } + + toShow + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }) + .prev() + .attr({ + "aria-selected": "true", + tabIndex: 0 + }); + }, + + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; + } + if ( typeof options === "string" ) { + easing = options; + } + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( hideProps, duration, easing, complete ); + } + + total = toShow.show().outerHeight(); + toHide.animate( hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + }); + toShow + .hide() + .animate( showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + adjust += fx.now; + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + }); + }, + + _toggleComplete: function( data ) { + var toHide = data.oldPanel; + + toHide + .removeClass( "ui-accordion-content-active" ) + .prev() + .removeClass( "ui-corner-top" ) + .addClass( "ui-corner-all" ); + + // Work around for rendering bug in IE (#5421) + if ( toHide.length ) { + toHide.parent()[0].className = toHide.parent()[0].className; + } + + this._trigger( "activate", null, data ); + } +}); + +})( jQuery ); + +(function( $, undefined ) { + +// used to prevent race conditions with remote data sources +var requestIndex = 0; + +$.widget( "ui.autocomplete", { + version: "1.10.3", + defaultElement: "", + options: { + appendTo: null, + autoFocus: false, + delay: 300, + minLength: 1, + position: { + my: "left top", + at: "left bottom", + collision: "none" + }, + source: null, + + // callbacks + change: null, + close: null, + focus: null, + open: null, + response: null, + search: null, + select: null + }, + + pending: 0, + + _create: function() { + // Some browsers only repeat keydown events, not keypress events, + // so we use the suppressKeyPress flag to determine if we've already + // handled the keydown event. #7269 + // Unfortunately the code for & in keypress is the same as the up arrow, + // so we use the suppressKeyPressRepeat flag to avoid handling keypress + // events when we know the keydown event was used to modify the + // search term. #7799 + var suppressKeyPress, suppressKeyPressRepeat, suppressInput, + nodeName = this.element[0].nodeName.toLowerCase(), + isTextarea = nodeName === "textarea", + isInput = nodeName === "input"; + + this.isMultiLine = + // Textareas are always multi-line + isTextarea ? true : + // Inputs are always single-line, even if inside a contentEditable element + // IE also treats inputs as contentEditable + isInput ? false : + // All other element types are determined by whether or not they're contentEditable + this.element.prop( "isContentEditable" ); + + this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; + this.isNewMenu = true; + + this.element + .addClass( "ui-autocomplete-input" ) + .attr( "autocomplete", "off" ); + + this._on( this.element, { + keydown: function( event ) { + /*jshint maxcomplexity:15*/ + if ( this.element.prop( "readOnly" ) ) { + suppressKeyPress = true; + suppressInput = true; + suppressKeyPressRepeat = true; + return; + } + + suppressKeyPress = false; + suppressInput = false; + suppressKeyPressRepeat = false; + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + suppressKeyPress = true; + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + suppressKeyPress = true; + this._move( "nextPage", event ); + break; + case keyCode.UP: + suppressKeyPress = true; + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + suppressKeyPress = true; + this._keyEvent( "next", event ); + break; + case keyCode.ENTER: + case keyCode.NUMPAD_ENTER: + // when menu is open and has focus + if ( this.menu.active ) { + // #6055 - Opera still allows the keypress to occur + // which causes forms to submit + suppressKeyPress = true; + event.preventDefault(); + this.menu.select( event ); + } + break; + case keyCode.TAB: + if ( this.menu.active ) { + this.menu.select( event ); + } + break; + case keyCode.ESCAPE: + if ( this.menu.element.is( ":visible" ) ) { + this._value( this.term ); + this.close( event ); + // Different browsers have different default behavior for escape + // Single press can mean undo or clear + // Double press in IE means clear the whole form + event.preventDefault(); + } + break; + default: + suppressKeyPressRepeat = true; + // search timeout should be triggered before the input value is changed + this._searchTimeout( event ); + break; + } + }, + keypress: function( event ) { + if ( suppressKeyPress ) { + suppressKeyPress = false; + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + event.preventDefault(); + } + return; + } + if ( suppressKeyPressRepeat ) { + return; + } + + // replicate some key handlers to allow them to repeat in Firefox and Opera + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + this._move( "nextPage", event ); + break; + case keyCode.UP: + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + this._keyEvent( "next", event ); + break; + } + }, + input: function( event ) { + if ( suppressInput ) { + suppressInput = false; + event.preventDefault(); + return; + } + this._searchTimeout( event ); + }, + focus: function() { + this.selectedItem = null; + this.previous = this._value(); + }, + blur: function( event ) { + if ( this.cancelBlur ) { + delete this.cancelBlur; + return; + } + + clearTimeout( this.searching ); + this.close( event ); + this._change( event ); + } + }); + + this._initSource(); + this.menu = $( "