diff --git a/static/css/main.css b/static/css/main.css new file mode 100644 index 0000000..0ab83e9 --- /dev/null +++ b/static/css/main.css @@ -0,0 +1,430 @@ +@charset "UTF-8"; +/* CSS Document */ + +@font-face { + font-family: 'MyriadProRegular'; + src: url('myriadpro-regular-webfont.eot'); + src: local('☺'), url('myriadpro-regular-webfont.woff') format('woff'), url('myriadpro-regular-webfont.ttf') format('truetype'), url('myriadpro-regular-webfont.svg#webfonto70rnzVV') format('svg'); + font-weight: normal; + font-style: normal; + } + +body { + background-image:url(../img/page_bground.jpg); + margin: 0px; + padding: 0px; + background-repeat:repeat-x; + } + +p { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:16px; + color: #8d8e92; + text-shadow:#000000 -1px -1px 0px; + line-height: 18px; + padding-bottom: 15px; + } + +.intro_text { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:18px; + color: #8d8e92; + text-shadow:#000000 -1px -1px 0px; + line-height: 22px; + } + +h1 { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:40px; + color: #afb0b4; + text-shadow:#000000 -1px -1px 0px; + letter-spacing:-2px; + line-height: 50px; + text-transform:uppercase; + } + +h2 { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:24px; + color: #afb0b4; + text-shadow:#000000 -1px -1px 0px; + letter-spacing:-2px; + text-transform:uppercase; + } + +h3 { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:30px; + color: #afb0b4; + text-shadow:#000000 -1px -1px 0px; + line-height: 30px; + letter-spacing:-1px; + text-transform:uppercase; + } +div.hr hr { display: none;} +div.hr { + height: 30px; + background: url(../img/hr.png) no-repeat scroll center; + clear: both; + margin: 30px 0 40px 0; + } + + +.clear { + clear: both; + margin: 0 0 30px 0; + } + + +.section_title { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:30px; + color: #afb0b4; + text-shadow:#000000 -1px -1px 0px; + line-height: 40px; + letter-spacing:-1px; + text-transform:uppercase; + margin-bottom: 30px; + } + +.footer_heading { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:24px; + color: #afb0b4; + text-shadow:#000000 1px 1px 0px; + letter-spacing:-.05em; + } + + +.large_quote { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:24px; + color: #afb0b4; + text-shadow:#000000 -1px -1px 0px; + line-height: 40px; + letter-spacing:-.05em; + } + +.small_quote { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:14px; + color: #707174; + text-shadow:#000000 -1px -1px 0px; + letter-spacing:-.05em; + } + +.benefit_header { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:24px; + color: #afb0b4; + text-shadow:#000000 -1px -1px 0px; + letter-spacing:-.05em; + } + +#header_fullwidth { + margin: 0 auto; + background-image:url(../img/header_bground.jpg); + background-repeat:repeat-x; + width: 100%; + height: 223px; + } + +#header { + width: 960px; + margin: 0 auto; + height: 223px; + } + +#wrapper { + width: 960px; + margin: 0 auto; + } + + +#top_logo { + width: 960px; + margin: 0 auto; + text-align: center; + padding-top: 30px; + } + +a img { + border: none; + } + +img { +border: none; +} + +img.left { + float: left; + } + +img.right { + float: right; + } + +.content_section { + width: 960px; + text-align: left; + clear: both; + padding-top: 6r0px; + } + +.content_section ul.gallery li { + display: inline; + margin: 0 34px 0 0; + } + +.intro_section { + width: 960px; + text-align: center; + clear: both; + padding-top: 30px; + } + +.quotes_wrapper { + margin: 0 auto; + clear: both; + background-image:url(../img/quote_bground.jpg); + background-repeat:no-repeat; + width: 960px; + height: 130px; + padding-top: 20px; + } + +.left_quote { + width: 480px; + float: left; + text-align:center; + } + +.right_quote { + width: 480px; + float: right; + text-align:center; + } + +.left_content { + width: 480px; + float: left; + text-align:left; + } + +.benefit { + float: left; + width: 480px; + margin-top: 30px; + } + +.benefit_right { + float: right; + width: 390px; + } + +.content_section ul.social li { + display: inline; + margin: 0 15px 0 0; + padding:2px 0 0 0; + } + +.social { + padding:20px 0 20px 0; + } + +.social img, img.a { + padding:2px 0 0 0; + } + +.social a:hover { + filter: gray; + } + +.right_content { + width: 480px; + float: right; + text-align:left; + } + +.right_content ul.gallery li { + display: inline; + margin: 0 9px 0 0; + } + +#gallery { + padding:20px 0 20px 0; + } + +#gallery img, img.a { + padding:2px 0 0 0; + } + +ul { + margin:0; + padding: 0; + list-style:none; + list-style-position: inside; + line-height: 1.8em; + list-style-type:disc; + } + +li { + padding: 0 0 0 0; + margin:0; + font-family:Helvetica, sans-serif; + font-size:12px; + } + +.tiny { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:10px; + color: #8f8f8f; + } + + + +#footer_wrapper { + clear: both; + background-image:url(../img/footer_bground.jpg); + background-repeat:repeat-x; + min-height:224px; + margin-top: 0 auto; + } + +#footer_container { + margin: 0 auto; + width: 960px; + } + +#footer_left { + float: left; + width: 400px; + margin-top: 100px; + } + +#footer_right { + float: right; + width: 500px; + margin-top: 80px; + text-align:right; + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:11px; + color: #737373; + } + +#footer_bottom { + margin: 0 auto; + width: 960px; +} + +.follow a { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:11px; + color: #c1c1c1; + font-style:italic; + text-decoration:none; + } + + +.copyright { + float:left; + clear: both; + width: 520px; + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:11px; + color: #737373; + } + +.copyright a { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:11px; + color: #737373; + text-decoration:underline; + } + +.bottom_logo { + float:right; + width: 300px; + text-align: right; + } + +/*********************************************************************************************************************** + STYLES FOR TWITTER FEED +************************************************************************************************************************/ + +.tweet, .query { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:12px; + color:#333333; + line-height:1.5em; } + +.tweet .tweet_list, .query .tweet_list { + list-style-type: none; + } + +.tweet .tweet_list .awesome, .tweet .tweet_list .epic, .query .tweet_list .awesome, .query .tweet_list .epic { + text-transform: uppercase; } + +.tweet .tweet_list li, .query .tweet_list li { + overflow-y: auto; + overflow-x: hidden; + padding: 0; + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:12px; + color:#737373; +list-style:none; +margin-bottom:10px; +padding-top:10px; +padding-bottom:10px;} + +.tweet .tweet_list li a, .query .tweet_list li a { + color: #c1c1c1; } + +.tweet .tweet_list .tweet_avatar, .query .tweet_list .tweet_avatar { + padding-right: .5em; + float: left; } + +.tweet .tweet_list .tweet_avatar img, .query .tweet_list .tweet_avatar img { + vertical-align: middle; + padding:0 10px 0 0;} + +.tweet .tweet_first { + padding: 0;} + +.tweet-button_container { + margin-bottom: 20px;} + + + +/*********************************************************************************************************************** + STYLES FOR Tipsy Rollovers +************************************************************************************************************************/ + +.tipsy { padding: 5px; font-size: 11px; opacity: 1.0; filter: alpha(opacity=100); background-repeat: no-repeat; background-image: url(../img/tipsy.gif); margin-top: 10px; color:#1F242F; font-family: Helvetica, Arial, sans-serif; } + .tipsy-inner { padding: 5px 8px 4px 8px; background-color: #0969a6; color: white; max-width: 500px; text-align: center; } + .tipsy-inner { -moz-border-radius:3px; -webkit-border-radius:3px; } + .tipsy-north { background-position: top center; } + .tipsy-south { background-position: bottom center;} + .tipsy-east { background-position: right center; } + .tipsy-west { background-position: left center; } + + + .pp_nav p { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:20px; + color: #8d8e92; + letter-spacing:-.05em; + margin:10px 0 5px 15px; + z-index:9999; + text-shadow: none; + } + +.pp_description { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:20px; + color: #8d8e92; + letter-spacing:-.05em; + margin:10px 0 5px 15px; + z-index:9999; + text-shadow: none; + } diff --git a/static/css/myriadpro-regular-webfont.eot b/static/css/myriadpro-regular-webfont.eot new file mode 100644 index 0000000..25f5828 Binary files /dev/null and b/static/css/myriadpro-regular-webfont.eot differ diff --git a/static/css/myriadpro-regular-webfont.svg b/static/css/myriadpro-regular-webfont.svg new file mode 100644 index 0000000..bf656f0 --- /dev/null +++ b/static/css/myriadpro-regular-webfont.svg @@ -0,0 +1,240 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Designer : Robert Slimbach and Carol Twombly +Foundry URL : http://www.adobe.com/type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/css/myriadpro-regular-webfont.ttf b/static/css/myriadpro-regular-webfont.ttf new file mode 100644 index 0000000..2fdbccf Binary files /dev/null and b/static/css/myriadpro-regular-webfont.ttf differ diff --git a/static/css/myriadpro-regular-webfont.woff b/static/css/myriadpro-regular-webfont.woff new file mode 100644 index 0000000..3fcc22a Binary files /dev/null and b/static/css/myriadpro-regular-webfont.woff differ diff --git a/static/css/prettyPhoto.css b/static/css/prettyPhoto.css new file mode 100644 index 0000000..500d00d --- /dev/null +++ b/static/css/prettyPhoto.css @@ -0,0 +1,463 @@ +/* ------------------------------------------------------------------------ + This you can edit. +------------------------------------------------------------------------- */ + + div.light_rounded .pp_top .pp_left { background: url(../img/prettyPhoto/light_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */ + div.light_rounded .pp_top .pp_middle { background: #fff; } /* Top pattern/color */ + div.light_rounded .pp_top .pp_right { background: url(../img/prettyPhoto/light_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */ + + div.light_rounded .pp_content .ppt { color: #000; } + div.light_rounded .pp_content_container .pp_left, + div.light_rounded .pp_content_container .pp_right { background: #fff; } + div.light_rounded .pp_content { background-color: #fff; } /* Content background */ + div.light_rounded .pp_next:hover { background: url(../img/prettyPhoto/light_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.light_rounded .pp_previous:hover { background: url(../img/prettyPhoto/light_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + div.light_rounded .pp_expand { background: url(../img/prettyPhoto/light_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.light_rounded .pp_expand:hover { background: url(../img/prettyPhoto/light_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.light_rounded .pp_contract { background: url(../img/prettyPhoto/light_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.light_rounded .pp_contract:hover { background: url(../img/prettyPhoto/light_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.light_rounded .pp_close { width: 75px; height: 22px; background: url(../img/prettyPhoto/light_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.light_rounded #pp_full_res .pp_inline { color: #000; } + div.light_rounded .pp_gallery a.pp_arrow_previous, + div.light_rounded .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } + div.light_rounded .pp_nav .pp_play { background: url(../img/prettyPhoto/light_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } + div.light_rounded .pp_nav .pp_pause { background: url(../img/prettyPhoto/light_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } + + div.light_rounded .pp_arrow_previous { background: url(../img/prettyPhoto/light_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ + div.light_rounded .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } + div.light_rounded .pp_arrow_next { background: url(../img/prettyPhoto/light_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ + div.light_rounded .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } + + div.light_rounded .pp_bottom .pp_left { background: url(../img/prettyPhoto/light_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ + div.light_rounded .pp_bottom .pp_middle { background: #fff; } /* Bottom pattern/color */ + div.light_rounded .pp_bottom .pp_right { background: url(../img/prettyPhoto/light_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ + + div.light_rounded .pp_loaderIcon { background: url(../img/prettyPhoto/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */ + + /* ---------------------------------- + Dark Rounded Theme + ----------------------------------- */ + + div.dark_rounded .pp_top .pp_left { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */ + div.dark_rounded .pp_top .pp_middle { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Top pattern/color */ + div.dark_rounded .pp_top .pp_right { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */ + + div.dark_rounded .pp_content_container .pp_left { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat-y; } /* Left Content background */ + div.dark_rounded .pp_content_container .pp_right { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top right repeat-y; } /* Right Content background */ + div.dark_rounded .pp_content { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Content background */ + div.dark_rounded .pp_next:hover { background: url(../img/prettyPhoto/dark_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.dark_rounded .pp_previous:hover { background: url(../img/prettyPhoto/dark_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + div.dark_rounded .pp_expand { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.dark_rounded .pp_expand:hover { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.dark_rounded .pp_contract { background: url(../img/prettyPhoto/dark_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.dark_rounded .pp_contract:hover { background: url(../img/prettyPhoto/dark_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.dark_rounded .pp_close { width: 75px; height: 22px; background: url(../img/prettyPhoto/dark_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.dark_rounded .currentTextHolder { color: #c4c4c4; } + div.dark_rounded .pp_description { color: #fff; } + div.dark_rounded #pp_full_res .pp_inline { color: #fff; } + div.dark_rounded .pp_gallery a.pp_arrow_previous, + div.dark_rounded .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } + div.dark_rounded .pp_nav .pp_play { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } + div.dark_rounded .pp_nav .pp_pause { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } + + div.dark_rounded .pp_arrow_previous { background: url(../img/prettyPhoto/dark_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ + div.dark_rounded .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } + div.dark_rounded .pp_arrow_next { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ + div.dark_rounded .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } + + div.dark_rounded .pp_bottom .pp_left { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ + div.dark_rounded .pp_bottom .pp_middle { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Bottom pattern/color */ + div.dark_rounded .pp_bottom .pp_right { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ + + div.dark_rounded .pp_loaderIcon { background: url(../img/prettyPhoto/dark_rounded/loader.gif) center center no-repeat; } /* Loader icon */ + + + /* ---------------------------------- + Dark Square Theme + ----------------------------------- */ + + div.dark_square .pp_left , + div.dark_square .pp_middle, + div.dark_square .pp_right, + div.dark_square .pp_content { background: url(../img/prettyPhoto/dark_square/contentPattern.png) top left repeat; } + div.dark_square .currentTextHolder { color: #c4c4c4; } + div.dark_square .pp_description { color: #fff; } + div.dark_square .pp_loaderIcon { background: url(../img/prettyPhoto/dark_rounded/loader.gif) center center no-repeat; } /* Loader icon */ + + div.dark_square .pp_content_container .pp_left { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat-y; } /* Left Content background */ + div.dark_square .pp_content_container .pp_right { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top right repeat-y; } /* Right Content background */ + div.dark_square .pp_expand { background: url(../img/prettyPhoto/dark_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.dark_square .pp_expand:hover { background: url(../img/prettyPhoto/dark_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.dark_square .pp_contract { background: url(../img/prettyPhoto/dark_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.dark_square .pp_contract:hover { background: url(../img/prettyPhoto/dark_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.dark_square .pp_close { width: 75px; height: 22px; background: url(../img/prettyPhoto/dark_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.dark_square #pp_full_res .pp_inline { color: #fff; } + div.dark_square .pp_gallery a.pp_arrow_previous, + div.dark_square .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } + div.dark_square .pp_nav .pp_play { background: url(../img/prettyPhoto/dark_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } + div.dark_square .pp_nav .pp_pause { background: url(../img/prettyPhoto/dark_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } + + div.dark_square .pp_arrow_previous { background: url(../img/prettyPhoto/dark_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ + div.dark_square .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } + div.dark_square .pp_arrow_next { background: url(../img/prettyPhoto/dark_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ + div.dark_square .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } + + div.dark_square .pp_next:hover { background: url(../img/prettyPhoto/dark_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.dark_square .pp_previous:hover { background: url(../img/prettyPhoto/dark_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + + + /* ---------------------------------- + Light Square Theme + ----------------------------------- */ + + div.light_square .pp_left , + div.light_square .pp_middle, + div.light_square .pp_right, + div.light_square .pp_content { background: #fff; } + + div.light_square .pp_content .ppt { color: #000; } + div.light_square .pp_expand { background: url(../img/prettyPhoto/light_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.light_square .pp_expand:hover { background: url(../img/prettyPhoto/light_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.light_square .pp_contract { background: url(../img/prettyPhoto/light_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.light_square .pp_contract:hover { background: url(../img/prettyPhoto/light_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.light_square .pp_close { width: 75px; height: 22px; background: url(../img/prettyPhoto/light_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.light_square #pp_full_res .pp_inline { color: #000; } + div.light_square .pp_gallery a.pp_arrow_previous, + div.light_square .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } + div.light_square .pp_nav .pp_play { background: url(../img/prettyPhoto/light_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } + div.light_square .pp_nav .pp_pause { background: url(../img/prettyPhoto/light_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } + + div.light_square .pp_arrow_previous { background: url(../img/prettyPhoto/light_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ + div.light_square .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } + div.light_square .pp_arrow_next { background: url(../img/prettyPhoto/light_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ + div.light_square .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } + + div.light_square .pp_next:hover { background: url(../img/prettyPhoto/light_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.light_square .pp_previous:hover { background: url(../img/prettyPhoto/light_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + + + /* ---------------------------------- + Facebook style Theme + ----------------------------------- */ + + div.facebook .pp_top .pp_left { background: url(../img/prettyPhoto/facebook/sprite.png) -88px -53px no-repeat; } /* Top left corner */ + div.facebook .pp_top .pp_middle { background: url(../img/prettyPhoto/facebook/contentPatternTop.png) top left repeat-x; } /* Top pattern/color */ + div.facebook .pp_top .pp_right { background: url(../img/prettyPhoto/facebook/sprite.png) -110px -53px no-repeat; } /* Top right corner */ + + div.facebook .pp_content .ppt { color: #000; } + div.facebook .pp_content_container .pp_left { background: url(../img/prettyPhoto/facebook/contentPatternLeft.png) top left repeat-y; } /* Content background */ + div.facebook .pp_content_container .pp_right { background: url(../img/prettyPhoto/facebook/contentPatternRight.png) top right repeat-y; } /* Content background */ + div.facebook .pp_content { background: #fff; } /* Content background */ + div.facebook .pp_expand { background: url(../img/prettyPhoto/facebook/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.facebook .pp_expand:hover { background: url(../img/prettyPhoto/facebook/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.facebook .pp_contract { background: url(../img/prettyPhoto/facebook/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.facebook .pp_contract:hover { background: url(../img/prettyPhoto/facebook/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.facebook .pp_close { width: 22px; height: 22px; background: url(../img/prettyPhoto/facebook/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.facebook #pp_full_res .pp_inline { color: #000; } + div.facebook .pp_loaderIcon { background: url(../img/prettyPhoto/facebook/loader.gif) center center no-repeat; } /* Loader icon */ + + div.facebook .pp_arrow_previous { background: url(../img/prettyPhoto/facebook/sprite.png) 0 -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The previous arrow in the bottom nav */ + div.facebook .pp_arrow_previous.disabled { background-position: 0 -96px; cursor: default; } + div.facebook .pp_arrow_next { background: url(../img/prettyPhoto/facebook/sprite.png) -32px -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The next arrow in the bottom nav */ + div.facebook .pp_arrow_next.disabled { background-position: -32px -96px; cursor: default; } + div.facebook .pp_nav { margin-top: 0; } + div.facebook .pp_nav p { font-size: 15px; padding: 0 3px 0 4px; } + div.facebook .pp_nav .pp_play { background: url(../img/prettyPhoto/facebook/sprite.png) -1px -123px no-repeat; height: 22px; width: 22px; } + div.facebook .pp_nav .pp_pause { background: url(../img/prettyPhoto/facebook/sprite.png) -32px -123px no-repeat; height: 22px; width: 22px; } + + div.facebook .pp_next:hover { background: url(../img/prettyPhoto/facebook/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.facebook .pp_previous:hover { background: url(../img/prettyPhoto/facebook/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + + div.facebook .pp_bottom .pp_left { background: url(../img/prettyPhoto/facebook/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ + div.facebook .pp_bottom .pp_middle { background: url(../img/prettyPhoto/facebook/contentPatternBottom.png) top left repeat-x; } /* Bottom pattern/color */ + div.facebook .pp_bottom .pp_right { background: url(../img/prettyPhoto/facebook/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ + + +/* ------------------------------------------------------------------------ + DO NOT CHANGE +------------------------------------------------------------------------- */ + + div.pp_pic_holder a:focus { outline:none; } + + div.pp_overlay { + background: #000; + display: none; + left: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 9500; + } + + div.pp_pic_holder { + display: none; + position: absolute; + width: 100px; + z-index: 10000; + } + + .pp_top { + height: 20px; + position: relative; + } + * html .pp_top { padding: 0 20px; } + + .pp_top .pp_left { + height: 20px; + left: 0; + position: absolute; + width: 20px; + } + .pp_top .pp_middle { + height: 20px; + left: 20px; + position: absolute; + right: 20px; + } + * html .pp_top .pp_middle { + left: 0; + position: static; + } + + .pp_top .pp_right { + height: 20px; + left: auto; + position: absolute; + right: 0; + top: 0; + width: 20px; + } + + .pp_content { height: 40px; } + + .pp_fade { display: none; } + + .pp_content_container { + position: relative; + text-align: left; + width: 100%; + } + + .pp_content_container .pp_left { padding-left: 20px; } + .pp_content_container .pp_right { padding-right: 20px; } + + .pp_content_container .pp_details { + float: left; + margin: 10px 0 2px 0; + } + .pp_description { + display: none; + margin: 0 0 5px 0; + } + + .pp_nav { + clear: left; + float: left; + margin: 3px 0 0 0; + } + + .pp_nav p { + float: left; + margin: 2px 4px; + } + + .pp_nav .pp_play, + .pp_nav .pp_pause { + float: left; + margin-right: 4px; + text-indent: -10000px; + } + + a.pp_arrow_previous, + a.pp_arrow_next { + display: block; + float: left; + height: 15px; + margin-top: 3px; + overflow: hidden; + text-indent: -10000px; + width: 14px; + } + + .pp_hoverContainer { + position: absolute; + top: 0; + width: 100%; + z-index: 2000; + } + + .pp_gallery { + left: 50%; + margin-top: -50px; + position: absolute; + z-index: 10000; + } + + .pp_gallery ul { + float: left; + height: 35px; + margin: 0 0 0 5px; + overflow: hidden; + position: relative; + } + + .pp_gallery ul a { + border: 1px #000 solid; + border: 1px rgba(0,0,0,0.5) solid; + display: block; + float: left; + height: 33px; + overflow: hidden; + } + + .pp_gallery ul a:hover, + .pp_gallery li.selected a { border-color: #fff; } + + .pp_gallery ul a img { border: 0; } + + .pp_gallery li { + display: block; + float: left; + margin: 0 5px 0 0; + } + + .pp_gallery li.default a { + background: url(../img/prettyPhoto/facebook/default_thumbnail.gif) 0 0 no-repeat; + display: block; + height: 33px; + width: 50px; + } + + .pp_gallery li.default a img { display: none; } + + .pp_gallery .pp_arrow_previous, + .pp_gallery .pp_arrow_next { + margin-top: 7px !important; + } + + a.pp_next { + background: url(../img/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat; + display: block; + float: right; + height: 100%; + text-indent: -10000px; + width: 49%; + } + + a.pp_previous { + background: url(../img/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat; + display: block; + float: left; + height: 100%; + text-indent: -10000px; + width: 49%; + } + + a.pp_expand, + a.pp_contract { + cursor: pointer; + display: none; + height: 20px; + position: absolute; + right: 30px; + text-indent: -10000px; + top: 10px; + width: 20px; + z-index: 20000; + } + + a.pp_close { + display: block; + float: right; + line-height:22px; + text-indent: -10000px; + } + + .pp_bottom { + height: 20px; + position: relative; + } + * html .pp_bottom { padding: 0 20px; } + + .pp_bottom .pp_left { + height: 20px; + left: 0; + position: absolute; + width: 20px; + } + .pp_bottom .pp_middle { + height: 20px; + left: 20px; + position: absolute; + right: 20px; + } + * html .pp_bottom .pp_middle { + left: 0; + position: static; + } + + .pp_bottom .pp_right { + height: 20px; + left: auto; + position: absolute; + right: 0; + top: 0; + width: 20px; + } + + .pp_loaderIcon { + display: block; + height: 24px; + left: 50%; + margin: -12px 0 0 -12px; + position: absolute; + top: 50%; + width: 24px; + } + + #pp_full_res { + line-height: 1 !important; + } + + #pp_full_res .pp_inline { + text-align: left; + } + + #pp_full_res .pp_inline p { margin: 0 0 15px 0; } + + div.ppt { + color: #fff; + display: none; + font-size: 17px; + margin: 0 0 5px 15px; + z-index: 9999; + } + +/* ------------------------------------------------------------------------ + Miscellaneous +------------------------------------------------------------------------- */ + + .clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; + } + + .clearfix {display: inline-block;} + + /* Hides from IE-mac \*/ + * html .clearfix {height: 1%;} + .clearfix {display: block;} + /* End hide from IE-mac */ + + div.ppt { + font-family:MyriadProRegular, Helvetica, sans-serif; + font-size:20px; + color: #8d8e92; + letter-spacing:-.05em; + margin:10px 0 5px 15px; + z-index:9999; + text-shadow: none; + } \ No newline at end of file diff --git a/static/img/1.jpg b/static/img/1.jpg new file mode 100644 index 0000000..49e8887 Binary files /dev/null and b/static/img/1.jpg differ diff --git a/static/img/bottom_logo.png b/static/img/bottom_logo.png new file mode 100644 index 0000000..915a33f Binary files /dev/null and b/static/img/bottom_logo.png differ diff --git a/static/img/buy_button.png b/static/img/buy_button.png new file mode 100644 index 0000000..c258860 Binary files /dev/null and b/static/img/buy_button.png differ diff --git a/static/img/delicious_color.png b/static/img/delicious_color.png new file mode 100644 index 0000000..d1f8438 Binary files /dev/null and b/static/img/delicious_color.png differ diff --git a/static/img/digg_color.png b/static/img/digg_color.png new file mode 100644 index 0000000..b00a448 Binary files /dev/null and b/static/img/digg_color.png differ diff --git a/static/img/facebook_color.png b/static/img/facebook_color.png new file mode 100644 index 0000000..fc40607 Binary files /dev/null and b/static/img/facebook_color.png differ diff --git a/static/img/footer_bground.jpg b/static/img/footer_bground.jpg new file mode 100644 index 0000000..ab6f2b7 Binary files /dev/null and b/static/img/footer_bground.jpg differ diff --git a/static/img/header_bground.jpg b/static/img/header_bground.jpg new file mode 100644 index 0000000..9fe8e34 Binary files /dev/null and b/static/img/header_bground.jpg differ diff --git a/static/img/hr.png b/static/img/hr.png new file mode 100644 index 0000000..45a7a2b Binary files /dev/null and b/static/img/hr.png differ diff --git a/static/img/imac_iphone.jpg b/static/img/imac_iphone.jpg new file mode 100644 index 0000000..f1388af Binary files /dev/null and b/static/img/imac_iphone.jpg differ diff --git a/static/img/image_well.jpg b/static/img/image_well.jpg new file mode 100644 index 0000000..fcb75d1 Binary files /dev/null and b/static/img/image_well.jpg differ diff --git a/static/img/indented_star.png b/static/img/indented_star.png new file mode 100644 index 0000000..e5fc4d0 Binary files /dev/null and b/static/img/indented_star.png differ diff --git a/static/img/ipad.jpg b/static/img/ipad.jpg new file mode 100644 index 0000000..9e6af0b Binary files /dev/null and b/static/img/ipad.jpg differ diff --git a/static/img/linkedin_color.png b/static/img/linkedin_color.png new file mode 100644 index 0000000..88e4a59 Binary files /dev/null and b/static/img/linkedin_color.png differ diff --git a/static/img/page_bground.jpg b/static/img/page_bground.jpg new file mode 100644 index 0000000..fcc99f0 Binary files /dev/null and b/static/img/page_bground.jpg differ diff --git a/static/img/prettyPhoto/dark_rounded/btnNext.png b/static/img/prettyPhoto/dark_rounded/btnNext.png new file mode 100755 index 0000000..b28c1ef Binary files /dev/null and b/static/img/prettyPhoto/dark_rounded/btnNext.png differ diff --git a/static/img/prettyPhoto/dark_rounded/btnPrevious.png b/static/img/prettyPhoto/dark_rounded/btnPrevious.png new file mode 100755 index 0000000..e0cd9c4 Binary files /dev/null and b/static/img/prettyPhoto/dark_rounded/btnPrevious.png differ diff --git a/static/img/prettyPhoto/dark_rounded/contentPattern.png b/static/img/prettyPhoto/dark_rounded/contentPattern.png new file mode 100755 index 0000000..e5a047c Binary files /dev/null and b/static/img/prettyPhoto/dark_rounded/contentPattern.png differ diff --git a/static/img/prettyPhoto/dark_rounded/default_thumbnail.gif b/static/img/prettyPhoto/dark_rounded/default_thumbnail.gif new file mode 100755 index 0000000..2b1280f Binary files /dev/null and b/static/img/prettyPhoto/dark_rounded/default_thumbnail.gif differ diff --git a/static/img/prettyPhoto/dark_rounded/loader.gif b/static/img/prettyPhoto/dark_rounded/loader.gif new file mode 100755 index 0000000..50820ee Binary files /dev/null and b/static/img/prettyPhoto/dark_rounded/loader.gif differ diff --git a/static/img/prettyPhoto/dark_rounded/sprite.png b/static/img/prettyPhoto/dark_rounded/sprite.png new file mode 100755 index 0000000..fb8c0f8 Binary files /dev/null and b/static/img/prettyPhoto/dark_rounded/sprite.png differ diff --git a/static/img/prettyPhoto/dark_square/btnNext.png b/static/img/prettyPhoto/dark_square/btnNext.png new file mode 100755 index 0000000..b28c1ef Binary files /dev/null and b/static/img/prettyPhoto/dark_square/btnNext.png differ diff --git a/static/img/prettyPhoto/dark_square/btnPrevious.png b/static/img/prettyPhoto/dark_square/btnPrevious.png new file mode 100755 index 0000000..e0cd9c4 Binary files /dev/null and b/static/img/prettyPhoto/dark_square/btnPrevious.png differ diff --git a/static/img/prettyPhoto/dark_square/contentPattern.png b/static/img/prettyPhoto/dark_square/contentPattern.png new file mode 100755 index 0000000..7b50aff Binary files /dev/null and b/static/img/prettyPhoto/dark_square/contentPattern.png differ diff --git a/static/img/prettyPhoto/dark_square/default_thumbnail.gif b/static/img/prettyPhoto/dark_square/default_thumbnail.gif new file mode 100755 index 0000000..2b1280f Binary files /dev/null and b/static/img/prettyPhoto/dark_square/default_thumbnail.gif differ diff --git a/static/img/prettyPhoto/dark_square/loader.gif b/static/img/prettyPhoto/dark_square/loader.gif new file mode 100755 index 0000000..50820ee Binary files /dev/null and b/static/img/prettyPhoto/dark_square/loader.gif differ diff --git a/static/img/prettyPhoto/dark_square/sprite.png b/static/img/prettyPhoto/dark_square/sprite.png new file mode 100755 index 0000000..4fe3547 Binary files /dev/null and b/static/img/prettyPhoto/dark_square/sprite.png differ diff --git a/static/img/prettyPhoto/facebook/btnNext.png b/static/img/prettyPhoto/facebook/btnNext.png new file mode 100755 index 0000000..e809c3b Binary files /dev/null and b/static/img/prettyPhoto/facebook/btnNext.png differ diff --git a/static/img/prettyPhoto/facebook/btnPrevious.png b/static/img/prettyPhoto/facebook/btnPrevious.png new file mode 100755 index 0000000..0812542 Binary files /dev/null and b/static/img/prettyPhoto/facebook/btnPrevious.png differ diff --git a/static/img/prettyPhoto/facebook/contentPatternBottom.png b/static/img/prettyPhoto/facebook/contentPatternBottom.png new file mode 100755 index 0000000..a9be3b2 Binary files /dev/null and b/static/img/prettyPhoto/facebook/contentPatternBottom.png differ diff --git a/static/img/prettyPhoto/facebook/contentPatternLeft.png b/static/img/prettyPhoto/facebook/contentPatternLeft.png new file mode 100755 index 0000000..277c87a Binary files /dev/null and b/static/img/prettyPhoto/facebook/contentPatternLeft.png differ diff --git a/static/img/prettyPhoto/facebook/contentPatternRight.png b/static/img/prettyPhoto/facebook/contentPatternRight.png new file mode 100755 index 0000000..76e50d0 Binary files /dev/null and b/static/img/prettyPhoto/facebook/contentPatternRight.png differ diff --git a/static/img/prettyPhoto/facebook/contentPatternTop.png b/static/img/prettyPhoto/facebook/contentPatternTop.png new file mode 100755 index 0000000..8b110ba Binary files /dev/null and b/static/img/prettyPhoto/facebook/contentPatternTop.png differ diff --git a/static/img/prettyPhoto/facebook/default_thumbnail.gif b/static/img/prettyPhoto/facebook/default_thumbnail.gif new file mode 100755 index 0000000..2b1280f Binary files /dev/null and b/static/img/prettyPhoto/facebook/default_thumbnail.gif differ diff --git a/static/img/prettyPhoto/facebook/loader.gif b/static/img/prettyPhoto/facebook/loader.gif new file mode 100755 index 0000000..7ac990c Binary files /dev/null and b/static/img/prettyPhoto/facebook/loader.gif differ diff --git a/static/img/prettyPhoto/facebook/sprite.png b/static/img/prettyPhoto/facebook/sprite.png new file mode 100755 index 0000000..660a254 Binary files /dev/null and b/static/img/prettyPhoto/facebook/sprite.png differ diff --git a/static/img/prettyPhoto/light_rounded/btnNext.png b/static/img/prettyPhoto/light_rounded/btnNext.png new file mode 100755 index 0000000..b28c1ef Binary files /dev/null and b/static/img/prettyPhoto/light_rounded/btnNext.png differ diff --git a/static/img/prettyPhoto/light_rounded/btnPrevious.png b/static/img/prettyPhoto/light_rounded/btnPrevious.png new file mode 100755 index 0000000..e0cd9c4 Binary files /dev/null and b/static/img/prettyPhoto/light_rounded/btnPrevious.png differ diff --git a/static/img/prettyPhoto/light_rounded/default_thumbnail.gif b/static/img/prettyPhoto/light_rounded/default_thumbnail.gif new file mode 100755 index 0000000..2b1280f Binary files /dev/null and b/static/img/prettyPhoto/light_rounded/default_thumbnail.gif differ diff --git a/static/img/prettyPhoto/light_rounded/loader.gif b/static/img/prettyPhoto/light_rounded/loader.gif new file mode 100755 index 0000000..7ac990c Binary files /dev/null and b/static/img/prettyPhoto/light_rounded/loader.gif differ diff --git a/static/img/prettyPhoto/light_rounded/sprite.png b/static/img/prettyPhoto/light_rounded/sprite.png new file mode 100755 index 0000000..7f28379 Binary files /dev/null and b/static/img/prettyPhoto/light_rounded/sprite.png differ diff --git a/static/img/prettyPhoto/light_square/btnNext.png b/static/img/prettyPhoto/light_square/btnNext.png new file mode 100755 index 0000000..b28c1ef Binary files /dev/null and b/static/img/prettyPhoto/light_square/btnNext.png differ diff --git a/static/img/prettyPhoto/light_square/btnPrevious.png b/static/img/prettyPhoto/light_square/btnPrevious.png new file mode 100755 index 0000000..e0cd9c4 Binary files /dev/null and b/static/img/prettyPhoto/light_square/btnPrevious.png differ diff --git a/static/img/prettyPhoto/light_square/default_thumbnail.gif b/static/img/prettyPhoto/light_square/default_thumbnail.gif new file mode 100755 index 0000000..2b1280f Binary files /dev/null and b/static/img/prettyPhoto/light_square/default_thumbnail.gif differ diff --git a/static/img/prettyPhoto/light_square/loader.gif b/static/img/prettyPhoto/light_square/loader.gif new file mode 100755 index 0000000..7ac990c Binary files /dev/null and b/static/img/prettyPhoto/light_square/loader.gif differ diff --git a/static/img/prettyPhoto/light_square/sprite.png b/static/img/prettyPhoto/light_square/sprite.png new file mode 100755 index 0000000..4fe3547 Binary files /dev/null and b/static/img/prettyPhoto/light_square/sprite.png differ diff --git a/static/img/quote_bground.jpg b/static/img/quote_bground.jpg new file mode 100644 index 0000000..4fddf0b Binary files /dev/null and b/static/img/quote_bground.jpg differ diff --git a/static/img/report_icon.jpg b/static/img/report_icon.jpg new file mode 100644 index 0000000..833c2e0 Binary files /dev/null and b/static/img/report_icon.jpg differ diff --git a/static/img/share_icon.jpg b/static/img/share_icon.jpg new file mode 100644 index 0000000..17d3f60 Binary files /dev/null and b/static/img/share_icon.jpg differ diff --git a/static/img/star.png b/static/img/star.png new file mode 100644 index 0000000..2837e20 Binary files /dev/null and b/static/img/star.png differ diff --git a/static/img/star_icon.jpg b/static/img/star_icon.jpg new file mode 100644 index 0000000..d8ab185 Binary files /dev/null and b/static/img/star_icon.jpg differ diff --git a/static/img/stumbleupon_color.png b/static/img/stumbleupon_color.png new file mode 100644 index 0000000..f4c3a79 Binary files /dev/null and b/static/img/stumbleupon_color.png differ diff --git a/static/img/tipsy.gif b/static/img/tipsy.gif new file mode 100644 index 0000000..aa6fba8 Binary files /dev/null and b/static/img/tipsy.gif differ diff --git a/static/img/top_logo.png b/static/img/top_logo.png new file mode 100644 index 0000000..5ecfa5f Binary files /dev/null and b/static/img/top_logo.png differ diff --git a/static/img/tut_icon.jpg b/static/img/tut_icon.jpg new file mode 100644 index 0000000..c1892b7 Binary files /dev/null and b/static/img/tut_icon.jpg differ diff --git a/static/img/twitter_color.png b/static/img/twitter_color.png new file mode 100644 index 0000000..9eb6f10 Binary files /dev/null and b/static/img/twitter_color.png differ diff --git a/static/img/usability_icon.jpg b/static/img/usability_icon.jpg new file mode 100644 index 0000000..4a4a0ba Binary files /dev/null and b/static/img/usability_icon.jpg differ diff --git a/static/img/video_link.jpg b/static/img/video_link.jpg new file mode 100644 index 0000000..c899432 Binary files /dev/null and b/static/img/video_link.jpg differ diff --git a/static/js/jquery-1.3.2.min.js b/static/js/jquery-1.3.2.min.js new file mode 100755 index 0000000..b1ae21d --- /dev/null +++ b/static/js/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/static/js/jquery.prettyPhoto.js b/static/js/jquery.prettyPhoto.js new file mode 100644 index 0000000..2eb7035 --- /dev/null +++ b/static/js/jquery.prettyPhoto.js @@ -0,0 +1,832 @@ +/* ------------------------------------------------------------------------ + Class: prettyPhoto + Use: Lightbox clone for jQuery + Author: Stephane Caron (http://www.no-margin-for-errors.com) + Version: 3.0 +------------------------------------------------------------------------- */ + +(function($) { + $.prettyPhoto = {version: '3.0'}; + + $.fn.prettyPhoto = function(pp_settings) { + pp_settings = jQuery.extend({ + animation_speed: 'fast', /* fast/slow/normal */ + slideshow: false, /* false OR interval time in ms */ + autoplay_slideshow: false, /* true/false */ + opacity: 0.80, /* Value between 0 and 1 */ + show_title: true, /* true/false */ + allow_resize: true, /* Resize the photos bigger than viewport. true/false */ + default_width: 500, + default_height: 344, + counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */ + theme: 'facebook', /* light_rounded / dark_rounded / light_square / dark_square / facebook */ + hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */ + wmode: 'opaque', /* Set the flash wmode attribute */ + autoplay: true, /* Automatically start videos: True/False */ + modal: false, /* If set to true, only the close button will close the window */ + overlay_gallery: true, /* If set to true, a gallery will overlay the fullscreen image on mouse over */ + keyboard_shortcuts: true, /* Set to false if you open forms inside prettyPhoto */ + changepicturecallback: function(){}, /* Called everytime an item is shown/changed */ + callback: function(){}, /* Called when prettyPhoto is closed */ + markup: '
\ +
 
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ + Expand \ +
\ + next \ + previous \ +
\ +
\ +
\ +

\ + Close \ +
\ + Previous \ +

0/0

\ + Next \ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
', + gallery_markup: '', + image_markup: '', + flash_markup: '', + quicktime_markup: '', + iframe_markup: '', + inline_markup: '
{content}
', + custom_markup: '' + }, pp_settings); + + // Global variables accessible only by prettyPhoto + var matchedObjects = this, percentBased = false, correctSizes, pp_open, + + // prettyPhoto container specific + pp_contentHeight, pp_contentWidth, pp_containerHeight, pp_containerWidth, + + // Window size + windowHeight = $(window).height(), windowWidth = $(window).width(), + + // Global elements + pp_slideshow; + + doresize = true, scroll_pos = _get_scroll(); + + // Window/Keyboard events + $(window).unbind('resize').resize(function(){ _center_overlay(); _resize_overlay(); }); + + if(pp_settings.keyboard_shortcuts) { + $(document).unbind('keydown').keydown(function(e){ + if(typeof $pp_pic_holder != 'undefined'){ + if($pp_pic_holder.is(':visible')){ + switch(e.keyCode){ + case 37: + $.prettyPhoto.changePage('previous'); + break; + case 39: + $.prettyPhoto.changePage('next'); + break; + case 27: + if(!settings.modal) + $.prettyPhoto.close(); + break; + }; + return false; + }; + }; + }); + } + + + /** + * Initialize prettyPhoto. + */ + $.prettyPhoto.initialize = function() { + settings = pp_settings; + + if($.browser.msie && parseInt($.browser.version) == 6) settings.theme = "light_square"; // Fallback to a supported theme for IE6 + + _buildOverlay(this); // Build the overlay {this} being the caller + + if(settings.allow_resize) + $(window).scroll(function(){ _center_overlay(); }); + + _center_overlay(); + + set_position = jQuery.inArray($(this).attr('href'), pp_images); // Define where in the array the clicked item is positionned + + $.prettyPhoto.open(); + + return false; + } + + + /** + * Opens the prettyPhoto modal box. + * @param image {String,Array} Full path to the image to be open, can also be an array containing full images paths. + * @param title {String,Array} The title to be displayed with the picture, can also be an array containing all the titles. + * @param description {String,Array} The description to be displayed with the picture, can also be an array containing all the descriptions. + */ + $.prettyPhoto.open = function() { + if(typeof settings == "undefined"){ // Means it's an API call, need to manually get the settings and set the variables + settings = pp_settings; + if($.browser.msie && $.browser.version == 6) settings.theme = "light_square"; // Fallback to a supported theme for IE6 + _buildOverlay(this); // Build the overlay {this} being the caller + pp_images = $.makeArray(arguments[0]); + pp_titles = (arguments[1]) ? $.makeArray(arguments[1]) : $.makeArray(""); + pp_descriptions = (arguments[2]) ? $.makeArray(arguments[2]) : $.makeArray(""); + isSet = (pp_images.length > 1) ? true : false; + set_position = 0; + } + + if($.browser.msie && $.browser.version == 6) $('select').css('visibility','hidden'); // To fix the bug with IE select boxes + + if(settings.hideflash) $('object,embed').css('visibility','hidden'); // Hide the flash + + _checkPosition($(pp_images).size()); // Hide the next/previous links if on first or last images. + + $('.pp_loaderIcon').show(); + + // Fade the content in + if($ppt.is(':hidden')) $ppt.css('opacity',0).show(); + $pp_overlay.show().fadeTo(settings.animation_speed,settings.opacity); + + // Display the current position + $pp_pic_holder.find('.currentTextHolder').text((set_position+1) + settings.counter_separator_label + $(pp_images).size()); + + // Set the description + $pp_pic_holder.find('.pp_description').show().html(unescape(pp_descriptions[set_position])); + + // Set the title + (settings.show_title && pp_titles[set_position] != "") ? $ppt.html(unescape(pp_titles[set_position])) : $ppt.html(' '); + + // Get the dimensions + movie_width = ( parseFloat(grab_param('width',pp_images[set_position])) ) ? grab_param('width',pp_images[set_position]) : settings.default_width.toString(); + movie_height = ( parseFloat(grab_param('height',pp_images[set_position])) ) ? grab_param('height',pp_images[set_position]) : settings.default_height.toString(); + + // If the size is % based, calculate according to window dimensions + if(movie_width.indexOf('%') != -1 || movie_height.indexOf('%') != -1){ + movie_height = parseFloat(($(window).height() * parseFloat(movie_height) / 100) - 150); + movie_width = parseFloat(($(window).width() * parseFloat(movie_width) / 100) - 150); + percentBased = true; + }else{ + percentBased = false; + } + + // Fade the holder + $pp_pic_holder.fadeIn(function(){ + imgPreloader = ""; + + // Inject the proper content + switch(_getFileType(pp_images[set_position])){ + case 'image': + imgPreloader = new Image(); + + // Preload the neighbour images + nextImage = new Image(); + if(isSet && set_position > $(pp_images).size()) nextImage.src = pp_images[set_position + 1]; + prevImage = new Image(); + if(isSet && pp_images[set_position - 1]) prevImage.src = pp_images[set_position - 1]; + + $pp_pic_holder.find('#pp_full_res')[0].innerHTML = settings.image_markup; + $pp_pic_holder.find('#fullResImage').attr('src',pp_images[set_position]); + + imgPreloader.onload = function(){ + // Fit item to viewport + correctSizes = _fitToViewport(imgPreloader.width,imgPreloader.height); + + _showContent(); + }; + + imgPreloader.onerror = function(){ + alert('Image cannot be loaded. Make sure the path is correct and image exist.'); + $.prettyPhoto.close(); + }; + + imgPreloader.src = pp_images[set_position]; + break; + + case 'youtube': + correctSizes = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + movie = 'http://www.youtube.com/v/'+grab_param('v',pp_images[set_position]); + if(settings.autoplay) movie += "&autoplay=1"; + + toInject = settings.flash_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie); + break; + + case 'vimeo': + correctSizes = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + movie_id = pp_images[set_position]; + var regExp = /http:\/\/(www\.)?vimeo.com\/(\d+)/; + var match = movie_id.match(regExp); + + movie = 'http://player.vimeo.com/video/'+ match[2] +'?title=0&byline=0&portrait=0'; + if(settings.autoplay) movie += "&autoplay=1;"; + + vimeo_width = correctSizes['width'] + '/embed/?moog_width='+ correctSizes['width']; + + toInject = settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,correctSizes['height']).replace(/{path}/g,movie); + break; + + case 'quicktime': + correctSizes = _fitToViewport(movie_width,movie_height); // Fit item to viewport + correctSizes['height']+=15; correctSizes['contentHeight']+=15; correctSizes['containerHeight']+=15; // Add space for the control bar + + toInject = settings.quicktime_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,pp_images[set_position]).replace(/{autoplay}/g,settings.autoplay); + break; + + case 'flash': + correctSizes = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + flash_vars = pp_images[set_position]; + flash_vars = flash_vars.substring(pp_images[set_position].indexOf('flashvars') + 10,pp_images[set_position].length); + + filename = pp_images[set_position]; + filename = filename.substring(0,filename.indexOf('?')); + + toInject = settings.flash_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,filename+'?'+flash_vars); + break; + + case 'iframe': + correctSizes = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + frame_url = pp_images[set_position]; + frame_url = frame_url.substr(0,frame_url.indexOf('iframe')-1); + + toInject = settings.iframe_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{path}/g,frame_url); + break; + + case 'custom': + correctSizes = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + toInject = settings.custom_markup; + break; + + case 'inline': + // to get the item height clone it, apply default width, wrap it in the prettyPhoto containers , then delete + myClone = $(pp_images[set_position]).clone().css({'width':settings.default_width}).wrapInner('
').appendTo($('body')); + correctSizes = _fitToViewport($(myClone).width(),$(myClone).height()); + $(myClone).remove(); + toInject = settings.inline_markup.replace(/{content}/g,$(pp_images[set_position]).html()); + break; + }; + + if(!imgPreloader){ + $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; + + // Show content + _showContent(); + }; + }); + + return false; + }; + + + /** + * Change page in the prettyPhoto modal box + * @param direction {String} Direction of the paging, previous or next. + */ + $.prettyPhoto.changePage = function(direction){ + currentGalleryPage = 0; + + if(direction == 'previous') { + set_position--; + if (set_position < 0){ + set_position = 0; + return; + }; + }else if(direction == 'next'){ + set_position++; + if(set_position > $(pp_images).size()-1) { + set_position = 0; + } + }else{ + set_position=direction; + }; + + if(!doresize) doresize = true; // Allow the resizing of the images + $('.pp_contract').removeClass('pp_contract').addClass('pp_expand'); + + _hideContent(function(){ $.prettyPhoto.open(); }); + }; + + + /** + * Change gallery page in the prettyPhoto modal box + * @param direction {String} Direction of the paging, previous or next. + */ + $.prettyPhoto.changeGalleryPage = function(direction){ + if(direction=='next'){ + currentGalleryPage ++; + + if(currentGalleryPage > totalPage){ + currentGalleryPage = 0; + }; + }else if(direction=='previous'){ + currentGalleryPage --; + + if(currentGalleryPage < 0){ + currentGalleryPage = totalPage; + }; + }else{ + currentGalleryPage = direction; + }; + + // Slide the pages, if we're on the last page, find out how many items we need to slide. To make sure we don't have an empty space. + itemsToSlide = (currentGalleryPage == totalPage) ? pp_images.length - ((totalPage) * itemsPerPage) : itemsPerPage; + + $pp_pic_holder.find('.pp_gallery li').each(function(i){ + $(this).animate({ + 'left': (i * itemWidth) - ((itemsToSlide * itemWidth) * currentGalleryPage) + }); + }); + }; + + + /** + * Start the slideshow... + */ + $.prettyPhoto.startSlideshow = function(){ + if(typeof pp_slideshow == 'undefined'){ + $pp_pic_holder.find('.pp_play').unbind('click').removeClass('pp_play').addClass('pp_pause').click(function(){ + $.prettyPhoto.stopSlideshow(); + return false; + }); + pp_slideshow = setInterval($.prettyPhoto.startSlideshow,settings.slideshow); + }else{ + $.prettyPhoto.changePage('next'); + }; + } + + + /** + * Stop the slideshow... + */ + $.prettyPhoto.stopSlideshow = function(){ + $pp_pic_holder.find('.pp_pause').unbind('click').removeClass('pp_pause').addClass('pp_play').click(function(){ + $.prettyPhoto.startSlideshow(); + return false; + }); + clearInterval(pp_slideshow); + pp_slideshow=undefined; + } + + + /** + * Closes prettyPhoto. + */ + $.prettyPhoto.close = function(){ + + clearInterval(pp_slideshow); + + $pp_pic_holder.stop().find('object,embed').css('visibility','hidden'); + + $('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animation_speed,function(){ $(this).remove(); }); + + $pp_overlay.fadeOut(settings.animation_speed, function(){ + if($.browser.msie && $.browser.version == 6) $('select').css('visibility','visible'); // To fix the bug with IE select boxes + + if(settings.hideflash) $('object,embed').css('visibility','visible'); // Show the flash + + $(this).remove(); // No more need for the prettyPhoto markup + + $(window).unbind('scroll'); + + settings.callback(); + + doresize = true; + + pp_open = false; + + delete settings; + }); + }; + + /** + * Set the proper sizes on the containers and animate the content in. + */ + _showContent = function(){ + $('.pp_loaderIcon').hide(); + + $ppt.fadeTo(settings.animation_speed,1); + + // Calculate the opened top position of the pic holder + projectedTop = scroll_pos['scrollTop'] + ((windowHeight/2) - (correctSizes['containerHeight']/2)); + if(projectedTop < 0) projectedTop = 0; + + // Resize the content holder + $pp_pic_holder.find('.pp_content').animate({'height':correctSizes['contentHeight']},settings.animation_speed); + + // Resize picture the holder + $pp_pic_holder.animate({ + 'top': projectedTop, + 'left': (windowWidth/2) - (correctSizes['containerWidth']/2), + 'width': correctSizes['containerWidth'] + },settings.animation_speed,function(){ + $pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(correctSizes['height']).width(correctSizes['width']); + + $pp_pic_holder.find('.pp_fade').fadeIn(settings.animation_speed); // Fade the new content + + // Show the nav + if(isSet && _getFileType(pp_images[set_position])=="image") { $pp_pic_holder.find('.pp_hoverContainer').show(); }else{ $pp_pic_holder.find('.pp_hoverContainer').hide(); } + + if(correctSizes['resized']) $('a.pp_expand,a.pp_contract').fadeIn(settings.animation_speed); // Fade the resizing link if the image is resized + + if(settings.autoplay_slideshow && !pp_slideshow && !pp_open) $.prettyPhoto.startSlideshow(); + + settings.changepicturecallback(); // Callback! + + pp_open = true; + }); + + _insert_gallery(); + }; + + /** + * Hide the content...DUH! + */ + function _hideContent(callback){ + // Fade out the current picture + $pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden'); + $pp_pic_holder.find('.pp_fade').fadeOut(settings.animation_speed,function(){ + $('.pp_loaderIcon').show(); + + callback(); + }); + }; + + /** + * Check the item position in the gallery array, hide or show the navigation links + * @param setCount {integer} The total number of items in the set + */ + function _checkPosition(setCount){ + // If at the end, hide the next link + if(set_position == setCount-1) { + $pp_pic_holder.find('a.pp_next').css('visibility','hidden'); + $pp_pic_holder.find('a.pp_next').addClass('disabled').unbind('click'); + }else{ + $pp_pic_holder.find('a.pp_next').css('visibility','visible'); + $pp_pic_holder.find('a.pp_next.disabled').removeClass('disabled').bind('click',function(){ + $.prettyPhoto.changePage('next'); + return false; + }); + }; + + // If at the beginning, hide the previous link + if(set_position == 0) { + $pp_pic_holder + .find('a.pp_previous') + .css('visibility','hidden') + .addClass('disabled') + .unbind('click'); + }else{ + $pp_pic_holder.find('a.pp_previous.disabled') + .css('visibility','visible') + .removeClass('disabled') + .bind('click',function(){ + $.prettyPhoto.changePage('previous'); + return false; + }); + }; + + (setCount > 1) ? $('.pp_nav').show() : $('.pp_nav').hide(); // Hide the bottom nav if it's not a set. + }; + + /** + * Resize the item dimensions if it's bigger than the viewport + * @param width {integer} Width of the item to be opened + * @param height {integer} Height of the item to be opened + * @return An array containin the "fitted" dimensions + */ + function _fitToViewport(width,height){ + resized = false; + + _getDimensions(width,height); + + // Define them in case there's no resize needed + imageWidth = width, imageHeight = height; + + if( ((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allow_resize && !percentBased) { + resized = true, fitting = false; + + while (!fitting){ + if((pp_containerWidth > windowWidth)){ + imageWidth = (windowWidth - 200); + imageHeight = (height/width) * imageWidth; + }else if((pp_containerHeight > windowHeight)){ + imageHeight = (windowHeight - 200); + imageWidth = (width/height) * imageHeight; + }else{ + fitting = true; + }; + + pp_containerHeight = imageHeight, pp_containerWidth = imageWidth; + }; + + _getDimensions(imageWidth,imageHeight); + }; + + return { + width:Math.floor(imageWidth), + height:Math.floor(imageHeight), + containerHeight:Math.floor(pp_containerHeight), + containerWidth:Math.floor(pp_containerWidth) + 40, // 40 behind the side padding + contentHeight:Math.floor(pp_contentHeight), + contentWidth:Math.floor(pp_contentWidth), + resized:resized + }; + }; + + /** + * Get the containers dimensions according to the item size + * @param width {integer} Width of the item to be opened + * @param height {integer} Height of the item to be opened + */ + function _getDimensions(width,height){ + width = parseFloat(width); + height = parseFloat(height); + + // Get the details height, to do so, I need to clone it since it's invisible + $pp_details = $pp_pic_holder.find('.pp_details'); + $pp_details.width(width); + detailsHeight = parseFloat($pp_details.css('marginTop')) + parseFloat($pp_details.css('marginBottom')); + $pp_details = $pp_details.clone().appendTo($('body')).css({ + 'position':'absolute', + 'top':-10000 + }); + detailsHeight += $pp_details.height(); + detailsHeight = (detailsHeight <= 34) ? 36 : detailsHeight; // Min-height for the details + if($.browser.msie && $.browser.version==7) detailsHeight+=8; + $pp_details.remove(); + + // Get the container size, to resize the holder to the right dimensions + pp_contentHeight = height + detailsHeight; + pp_contentWidth = width; + pp_containerHeight = pp_contentHeight + $ppt.height() + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height(); + pp_containerWidth = width; + } + + function _getFileType(itemSrc){ + if (itemSrc.match(/youtube\.com\/watch/i)) { + return 'youtube'; + }else if (itemSrc.match(/vimeo\.com/i)) { + return 'vimeo'; + }else if(itemSrc.indexOf('.mov') != -1){ + return 'quicktime'; + }else if(itemSrc.indexOf('.swf') != -1){ + return 'flash'; + }else if(itemSrc.indexOf('iframe') != -1){ + return 'iframe'; + }else if(itemSrc.indexOf('custom') != -1){ + return 'custom'; + }else if(itemSrc.substr(0,1) == '#'){ + return 'inline'; + }else{ + return 'image'; + }; + }; + + function _center_overlay(){ + if(doresize && typeof $pp_pic_holder != 'undefined') { + scroll_pos = _get_scroll(); + + titleHeight = $ppt.height(), contentHeight = $pp_pic_holder.height(), contentwidth = $pp_pic_holder.width(); + + projectedTop = (windowHeight/2) + scroll_pos['scrollTop'] - (contentHeight/2); + + $pp_pic_holder.css({ + 'top': projectedTop, + 'left': (windowWidth/2) + scroll_pos['scrollLeft'] - (contentwidth/2) + }); + }; + }; + + function _get_scroll(){ + if (self.pageYOffset) { + return {scrollTop:self.pageYOffset,scrollLeft:self.pageXOffset}; + } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict + return {scrollTop:document.documentElement.scrollTop,scrollLeft:document.documentElement.scrollLeft}; + } else if (document.body) {// all other Explorers + return {scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft}; + }; + }; + + function _resize_overlay() { + windowHeight = $(window).height(), windowWidth = $(window).width(); + + if(typeof $pp_overlay != "undefined") $pp_overlay.height($(document).height()); + }; + + function _insert_gallery(){ + if(isSet && settings.overlay_gallery && _getFileType(pp_images[set_position])=="image") { + itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. + navWidth = (settings.theme == "facebook") ? 58 : 38; // Define the arrow width depending on the theme + + itemsPerPage = Math.floor((correctSizes['containerWidth'] - 100 - navWidth) / itemWidth); + itemsPerPage = (itemsPerPage < pp_images.length) ? itemsPerPage : pp_images.length; + totalPage = Math.ceil(pp_images.length / itemsPerPage) - 1; + + // Hide the nav in the case there's no need for links + if(totalPage == 0){ + navWidth = 0; // No nav means no width! + $pp_pic_holder.find('.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous').hide(); + }else{ + $pp_pic_holder.find('.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous').show(); + }; + + galleryWidth = itemsPerPage * itemWidth + navWidth; + + // Set the proper width to the gallery items + $pp_pic_holder.find('.pp_gallery') + .width(galleryWidth) + .css('margin-left',-(galleryWidth/2)); + + $pp_pic_holder + .find('.pp_gallery ul') + .width(itemsPerPage * itemWidth) + .find('li.selected') + .removeClass('selected'); + + goToPage = (Math.floor(set_position/itemsPerPage) <= totalPage) ? Math.floor(set_position/itemsPerPage) : totalPage; + + + if(itemsPerPage) { + $pp_pic_holder.find('.pp_gallery').hide().show().removeClass('disabled'); + }else{ + $pp_pic_holder.find('.pp_gallery').hide().addClass('disabled'); + } + + $.prettyPhoto.changeGalleryPage(goToPage); + + $pp_pic_holder + .find('.pp_gallery ul li:eq('+set_position+')') + .addClass('selected'); + }else{ + $pp_pic_holder.find('.pp_content').unbind('mouseenter mouseleave'); + $pp_pic_holder.find('.pp_gallery').hide(); + } + } + + function _buildOverlay(caller){ + // Find out if the picture is part of a set + theRel = $(caller).attr('rel'); + galleryRegExp = /\[(?:.*)\]/; + isSet = (galleryRegExp.exec(theRel)) ? true : false; + + // Put the SRCs, TITLEs, ALTs into an array. + pp_images = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr('rel').indexOf(theRel) != -1) return $(n).attr('href'); }) : $.makeArray($(caller).attr('href')); + pp_titles = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr('rel').indexOf(theRel) != -1) return ($(n).find('img').attr('alt')) ? $(n).find('img').attr('alt') : ""; }) : $.makeArray($(caller).find('img').attr('alt')); + pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr('rel').indexOf(theRel) != -1) return ($(n).attr('title')) ? $(n).attr('title') : ""; }) : $.makeArray($(caller).attr('title')); + + $('body').append(settings.markup); // Inject the markup + + $pp_pic_holder = $('.pp_pic_holder') , $ppt = $('.ppt'), $pp_overlay = $('div.pp_overlay'); // Set my global selectors + + // Inject the inline gallery! + if(isSet && settings.overlay_gallery) { + currentGalleryPage = 0; + toInject = ""; + for (var i=0; i < pp_images.length; i++) { + var regex = new RegExp("(.*?)\.(jpg|jpeg|png|gif)$"); + var results = regex.exec( pp_images[i] ); + if(!results){ + classname = 'default'; + }else{ + classname = ''; + } + toInject += "
  • "; + }; + + toInject = settings.gallery_markup.replace(/{gallery}/g,toInject); + + $pp_pic_holder.find('#pp_full_res').after(toInject); + + $pp_pic_holder.find('.pp_gallery .pp_arrow_next').click(function(){ + $.prettyPhoto.changeGalleryPage('next'); + $.prettyPhoto.stopSlideshow(); + return false; + }); + + $pp_pic_holder.find('.pp_gallery .pp_arrow_previous').click(function(){ + $.prettyPhoto.changeGalleryPage('previous'); + $.prettyPhoto.stopSlideshow(); + return false; + }); + + $pp_pic_holder.find('.pp_content').hover( + function(){ + $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeIn(); + }, + function(){ + $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeOut(); + }); + + itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. + $pp_pic_holder.find('.pp_gallery ul li').each(function(i){ + $(this).css({ + 'position':'absolute', + 'left': i * itemWidth + }); + + $(this).find('a').unbind('click').click(function(){ + $.prettyPhoto.changePage(i); + $.prettyPhoto.stopSlideshow(); + return false; + }); + }); + }; + + + // Inject the play/pause if it's a slideshow + if(settings.slideshow){ + $pp_pic_holder.find('.pp_nav').prepend('Play') + $pp_pic_holder.find('.pp_nav .pp_play').click(function(){ + $.prettyPhoto.startSlideshow(); + return false; + }); + } + + $pp_pic_holder.attr('class','pp_pic_holder ' + settings.theme); // Set the proper theme + + $pp_overlay + .css({ + 'opacity':0, + 'height':$(document).height(), + 'width':$(document).width() + }) + .bind('click',function(){ + if(!settings.modal) $.prettyPhoto.close(); + }); + + $('a.pp_close').bind('click',function(){ $.prettyPhoto.close(); return false; }); + + $('a.pp_expand').bind('click',function(e){ + // Expand the image + if($(this).hasClass('pp_expand')){ + $(this).removeClass('pp_expand').addClass('pp_contract'); + doresize = false; + }else{ + $(this).removeClass('pp_contract').addClass('pp_expand'); + doresize = true; + }; + + _hideContent(function(){ $.prettyPhoto.open(); }); + + return false; + }); + + $pp_pic_holder.find('.pp_previous, .pp_nav .pp_arrow_previous').bind('click',function(){ + $.prettyPhoto.changePage('previous'); + $.prettyPhoto.stopSlideshow(); + return false; + }); + + $pp_pic_holder.find('.pp_next, .pp_nav .pp_arrow_next').bind('click',function(){ + $.prettyPhoto.changePage('next'); + $.prettyPhoto.stopSlideshow(); + return false; + }); + + _center_overlay(); // Center it + }; + + return this.unbind('click').click($.prettyPhoto.initialize); // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once + }; + + function grab_param(name,url){ + name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); + var regexS = "[\\?&]"+name+"=([^&#]*)"; + var regex = new RegExp( regexS ); + var results = regex.exec( url ); + return ( results == null ) ? "" : results[1]; + } + +})(jQuery); \ No newline at end of file diff --git a/static/js/tipsy.js b/static/js/tipsy.js new file mode 100644 index 0000000..c236b80 --- /dev/null +++ b/static/js/tipsy.js @@ -0,0 +1,109 @@ +/*************************************************** + SOCIAL ICON HOVERS +***************************************************/ + + +(function($) { + $.fn.tipsy = function(options) { + + options = $.extend({}, $.fn.tipsy.defaults, options); + + return this.each(function() { + + var opts = $.fn.tipsy.elementOptions(this, options); + + $(this).hover(function() { + + $.data(this, 'cancel.tipsy', true); + + var tip = $.data(this, 'active.tipsy'); + if (!tip) { + tip = $('
    '); + tip.css({position: 'absolute', zIndex: 100000}); + $.data(this, 'active.tipsy', tip); + } + + if ($(this).attr('title') || typeof($(this).attr('original-title')) != 'string') { + $(this).attr('original-title', $(this).attr('title') || '').removeAttr('title'); + } + + var title; + if (typeof opts.title == 'string') { + title = $(this).attr(opts.title == 'title' ? 'original-title' : opts.title); + } else if (typeof opts.title == 'function') { + title = opts.title.call(this); + } + + tip.find('.tipsy-inner')[opts.html ? 'html' : 'text'](title || opts.fallback); + + var pos = $.extend({}, $(this).offset(), {width: this.offsetWidth, height: this.offsetHeight}); + tip.get(0).className = 'tipsy'; // reset classname in case of dynamic gravity + tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body); + var actualWidth = tip[0].offsetWidth, actualHeight = tip[0].offsetHeight; + var gravity = (typeof opts.gravity == 'function') ? opts.gravity.call(this) : opts.gravity; + + switch (gravity.charAt(0)) { + case 'n': + tip.css({top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-north'); + break; + case 's': + tip.css({top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-south'); + break; + case 'e': + tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}).addClass('tipsy-east'); + break; + case 'w': + tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}).addClass('tipsy-west'); + break; + } + + if (opts.fade) { + tip.css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: 1.0}); + } else { + tip.css({visibility: 'visible'}); + } + + }, function() { + $.data(this, 'cancel.tipsy', false); + var self = this; + setTimeout(function() { + if ($.data(this, 'cancel.tipsy')) return; + var tip = $.data(self, 'active.tipsy'); + if (opts.fade) { + tip.stop().fadeOut(function() { $(this).remove(); }); + } else { + tip.remove(); + } + }, 100); + + }); + + }); + + }; + + // Overwrite this method to provide options on a per-element basis. + // For example, you could store the gravity in a 'tipsy-gravity' attribute: + // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' }); + // (remember - do not modify 'options' in place!) + $.fn.tipsy.elementOptions = function(ele, options) { + return $.metadata ? $.extend({}, options, $(ele).metadata()) : options; + }; + + $.fn.tipsy.defaults = { + fade: false, + fallback: '', + gravity: 'n', + html: false, + title: 'title' + }; + + $.fn.tipsy.autoNS = function() { + return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n'; + }; + + $.fn.tipsy.autoWE = function() { + return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w'; + }; + +})(jQuery); \ No newline at end of file diff --git a/static/js/twitter.js b/static/js/twitter.js new file mode 100644 index 0000000..ab2ac24 --- /dev/null +++ b/static/js/twitter.js @@ -0,0 +1,169 @@ +/*************************************************** + TWITTER FEED +***************************************************/ + + + +(function($) { + + $.fn.tweet = function(o){ + var s = { + username: ["seaofclouds"], // [string] required, unless you want to display our tweets. :) it can be an array, just do ["username1","username2","etc"] + list: null, //[string] optional name of list belonging to username + avatar_size: null, // [integer] height and width of avatar if displayed (48px max) + count: 3, // [integer] how many tweets to display? + intro_text: null, // [string] do you want text BEFORE your your tweets? + outro_text: null, // [string] do you want text AFTER your tweets? + join_text: null, // [string] optional text in between date and tweet, try setting to "auto" + auto_join_text_default: "i said,", // [string] auto text for non verb: "i said" bullocks + auto_join_text_ed: "i", // [string] auto text for past tense: "i" surfed + auto_join_text_ing: "i am", // [string] auto tense for present tense: "i was" surfing + auto_join_text_reply: "i replied to", // [string] auto tense for replies: "i replied to" @someone "with" + auto_join_text_url: "i was looking at", // [string] auto tense for urls: "i was looking at" http:... + loading_text: null, // [string] optional loading text, displayed while tweets load + query: null // [string] optional search query + }; + + if(o) $.extend(s, o); + + $.fn.extend({ + linkUrl: function() { + var returning = []; + var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi; + this.each(function() { + returning.push(this.replace(regexp,"$1")); + }); + return $(returning); + }, + linkUser: function() { + var returning = []; + var regexp = /[\@]+([A-Za-z0-9-_]+)/gi; + this.each(function() { + returning.push(this.replace(regexp,"@$1")); + }); + return $(returning); + }, + linkHash: function() { + var returning = []; + var regexp = /(?:^| )[\#]+([A-Za-z0-9-_]+)/gi; + this.each(function() { + returning.push(this.replace(regexp, ' #$1')); + }); + return $(returning); + }, + capAwesome: function() { + var returning = []; + this.each(function() { + returning.push(this.replace(/\b(awesome)\b/gi, '$1')); + }); + return $(returning); + }, + capEpic: function() { + var returning = []; + this.each(function() { + returning.push(this.replace(/\b(epic)\b/gi, '$1')); + }); + return $(returning); + }, + makeHeart: function() { + var returning = []; + this.each(function() { + returning.push(this.replace(/(<)+[3]/gi, "")); + }); + return $(returning); + } + }); + + function parse_date(date_str) { + // The non-search twitter APIs return inconsistently-formatted dates, which Date.parse + // cannot handle in IE. We therefore perform the following transformation: + // "Wed Apr 29 08:53:31 +0000 2009" => "Wed, Apr 29 2009 08:53:31 +0000" + return Date.parse(date_str.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i, '$1,$2$4$3')); + } + + function relative_time(time_value) { + var parsed_date = parse_date(time_value); + var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); + var delta = parseInt((relative_to.getTime() - parsed_date) / 1000); + var pluralize = function (singular, n) { + return '' + n + ' ' + singular + (n == 1 ? '' : 's'); + }; + if(delta < 60) { + return 'less than a minute ago'; + } else if(delta < (60*60)) { + return 'about ' + pluralize("minute", parseInt(delta / 60)) + ' ago'; + } else if(delta < (24*60*60)) { + return 'about ' + pluralize("hour", parseInt(delta / 3600)) + ' ago'; + } else { + return 'about ' + pluralize("day", parseInt(delta / 86400)) + ' ago'; + } + } + + function build_url() { + var proto = ('https:' == document.location.protocol ? 'https:' : 'http:'); + if (s.list) { + return proto+"//api.twitter.com/1/"+s.username[0]+"/lists/"+s.list+"/statuses.json?per_page="+s.count+"&callback=?"; + } else if (s.query == null && s.username.length == 1) { + return proto+'//api.twitter.com/1/statuses/user_timeline.json?screen_name='+s.username[0]+'&count='+s.count+'&include_rts=1&callback=?'; + } else { + var query = (s.query || 'from:'+s.username.join(' OR from:')); + return proto+'//search.twitter.com/search.json?&q='+encodeURIComponent(query)+'&rpp='+s.count+'&callback=?'; + } + } + + return this.each(function(i, widget){ + var list = $('
      ').appendTo(widget); + var intro = '

      '+s.intro_text+'

      '; + var outro = '

      '+s.outro_text+'

      '; + var loading = $('

      '+s.loading_text+'

      '); + + if(typeof(s.username) == "string"){ + s.username = [s.username]; + } + + if (s.loading_text) $(widget).append(loading); + $.getJSON(build_url(), function(data){ + if (s.loading_text) loading.remove(); + if (s.intro_text) list.before(intro); + var tweets = (data.results || data); + $.each(tweets, function(i,item){ + // auto join text based on verb tense and content + if (s.join_text == "auto") { + if (item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) { + var join_text = s.auto_join_text_reply; + } else if (item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)) { + var join_text = s.auto_join_text_url; + } else if (item.text.match(/^((\w+ed)|just) .*/im)) { + var join_text = s.auto_join_text_ed; + } else if (item.text.match(/^(\w*ing) .*/i)) { + var join_text = s.auto_join_text_ing; + } else { + var join_text = s.auto_join_text_default; + } + } else { + var join_text = s.join_text; + }; + + var from_user = item.from_user || item.user.screen_name; + var profile_image_url = item.profile_image_url || item.user.profile_image_url; + var join_template = ' '+join_text+' '; + var join = ((s.join_text) ? join_template : ' '); + var avatar_template = ''+from_user+'\'s avatar'; + var avatar = (s.avatar_size ? avatar_template : ''); + var date = ''+relative_time(item.created_at)+''; + var text = '' +$([item.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0]+ ''; + + // until we create a template option, arrange the items below to alter a tweet's display. + list.append('
    • ' + avatar + date + join + text + '
    • '); + + list.children('li:first').addClass('tweet_first'); + list.children('li:odd').addClass('tweet_even'); + list.children('li:even').addClass('tweet_odd'); + }); + if (s.outro_text) list.after(outro); + $(widget).trigger("loaded").trigger((tweets.length == 0 ? "empty" : "full")); + }); + + }); + }; +})(jQuery); diff --git a/templates/root.html b/templates/root.html new file mode 100644 index 0000000..3266d60 --- /dev/null +++ b/templates/root.html @@ -0,0 +1,438 @@ +{% import random,string %} + + + + +Slate - Landing Page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + + +
      + + + + +
      + +

      Generate Unique images from any text

      + +

      Robohash is a easy web service that makes it easy to provide unique, robot/alien/monster/whatever images for any text.
      + Put in any text, such as IP address, email, filename, userid, or whatever else you like, and get back a pretty image for your site.

      With hundreds of millions of variations, Robohash is the among the leading robot-based hashing tools on the web.

      + +
      + + + + + + +
      + + +
      + + You! + +
      + + +
      + +
      How cool is this?
      + +

      That guy to your left there? He was specially generated Just for you.
      + Try on your phone, and I bet you get someone different!

      + +

      buy now

      + +
      + +
      + +
      + + + + + + +
      + + +
      + +1 star1 star1 star1 star1 star + +
      + +"Eliminates sources of Human Error." + +
      + +Dr. Chandra, RobotCrunch + +
      + + +
      + +1 star1 star1 star1 star1 star + +
      + +"Klaatu barada nikto!" + +
      + +Gort's Web Emporium + +
      + +
      + + +
      + + + + + +
      + +
      Here are five Robots, Randomly generated, Just for you!
      + +

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra.

      + + + +
      + +
      + + + + + + +
      + +
      Robohashes are awesome.
      + + +
      + + + + +
      + + Super Easy to use + + +
      + + Super Easy +

      Anytime you need a Robohash, just embed
      <img src="http://robohash.org/YOUR-TEXT.png">
      +

      + +
      + +
      + + + + +
      + + Supported Formats + + +
      + + Styles of Robot +

      Want a JPG instead? Fine. Want it over HTTPS? FINE! Want it as a bitmap? I think you're nutty. But fine. Just change the URL to request in any format you want.

      + +
      + +
      + + + + +
      + + Very infrequent murderous rampages. + + +
      + + Very Infrequent Rampages +

      Due to Robot caching modules and CDN usage, our robots stay speedy, and only rarely go on murderous rampages. That's a Fact!

      + +
      + +
      + + +
      + + + + +
      + + + + +
      + + 3 classes to choose from + + +
      + + Multiple designs +

      Want robots from a specific set? Use Robohash.org/Collection1/whatever.png.
      Try out Collection1, Collection2, Collection3, see which best decorate your site.

      + +
      + +
      + + + + +
      + + Robots on Vacation + + +
      + + Vacationing Robots +

      Our robots like to travel. If you append ?background=true to your URL, our robots will appear with a random background picture from their travels.

      + +
      + +
      + + + + +
      + + Robotic Values + + +
      + + Robotic Value +

      Robohash.org robots believe in Family, Warmth, and killing-all-humans. To that end, we provide this service for free *.

      + +
      + +
      + +
      + +
      + +
      + + + + + + + +
      + + + + + + + + + + + + + diff --git a/templates/unused-video-section.html b/templates/unused-video-section.html new file mode 100644 index 0000000..c68cf4d --- /dev/null +++ b/templates/unused-video-section.html @@ -0,0 +1,32 @@ + + + + +
      + + +
      + +
      LOOK A VIDEO... nice!
      + +

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra.

      + +

      click to view video

      + +

      buy now

      + +
      + + +
      + + mac and iphone + +
      + +
      + +
      + diff --git a/webfront.py b/webfront.py index 2dcf504..1042f65 100755 --- a/webfront.py +++ b/webfront.py @@ -75,7 +75,10 @@ class Robohash(object): - +class MainHandler(tornado.web.RequestHandler): + def get(self): + ip = self.request.remote_ip + self.write(self.render_string('templates/root.html',ip=ip)) class ImgHandler(tornado.web.RequestHandler): def get(self,string=None): @@ -90,6 +93,8 @@ class ImgHandler(tornado.web.RequestHandler): #Change to a usuable format if string.endswith(('.png','.gif','.jpg','bmp','im','jpeg','pcx','ppm','tiff','xbm')): ext = string[string.rfind('.') +1 :len(string)] + if ext == '.jpg': + ext = '.jpeg' else: ext = "png" self.set_header("Content-Type", "image/" + ext) @@ -100,15 +105,19 @@ class ImgHandler(tornado.web.RequestHandler): for png in hashlist: img = Image.open(png) robohash.paste(img,(0,0),img) + if ext == 'bmp': + #Flatten bmps + r, g, b, a = robohash.split() + robohash = Image.merge("RGB", (r, g, b)) robohash.save(self,format=ext) # self.write("Running in Random mode:
      ") # self.write("") application = tornado.web.Application([ - (r"/images/(.*)", tornado.web.StaticFileHandler, {"path": os.path.join(os.path.dirname(__file__), - "static/images")}), + (r"/static/(.*)", tornado.web.StaticFileHandler, {"path": os.path.join(os.path.dirname(__file__), + "static/")}), - (r"/", ImgHandler), + (r"/", MainHandler), (r"/(.*)", ImgHandler), ])