diff --git a/css/app.css b/css/app.css
index 0b6b76d..f552b3c 100644
--- a/css/app.css
+++ b/css/app.css
@@ -1,4 +1,4 @@
-/* line 17, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+/* line 17, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
@@ -15,50 +15,50 @@ time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
- font-size: 100%;
font: inherit;
+ font-size: 100%;
vertical-align: baseline;
}
-/* line 20, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
-body {
+/* line 22, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+html {
line-height: 1;
}
-/* line 22, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+/* line 24, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
ol, ul {
list-style: none;
}
-/* line 24, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+/* line 26, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
table {
border-collapse: collapse;
border-spacing: 0;
}
-/* line 26, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+/* line 28, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
caption, th, td {
text-align: left;
font-weight: normal;
vertical-align: middle;
}
-/* line 28, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+/* line 30, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
q, blockquote {
quotes: none;
}
-/* line 101, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+/* line 103, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
q:before, q:after, blockquote:before, blockquote:after {
content: "";
content: none;
}
-/* line 30, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+/* line 32, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
a img {
border: none;
}
-/* line 114, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
+/* line 116, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
display: block;
}
@@ -95,7 +95,6 @@ h1 small {
h1 span {
-webkit-transition: color 1s;
-moz-transition: color 1s;
- -ms-transition: color 1s;
-o-transition: color 1s;
transition: color 1s;
}
@@ -103,97 +102,96 @@ h1 span {
h1:hover .char1 {
-webkit-transition: color 0.2s;
-moz-transition: color 0.2s;
- -ms-transition: color 0.2s;
-o-transition: color 0.2s;
transition: color 0.2s;
color: red;
}
/* line 31, ../sass/app.sass */
h1:hover .char2 {
- -webkit-transition: color 0.2s 0.1s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.1s;
-moz-transition: color 0.2s 0.1s;
- -ms-transition: color 0.2s 0.1s;
-o-transition: color 0.2s 0.1s;
transition: color 0.2s 0.1s;
color: orange;
}
/* line 34, ../sass/app.sass */
h1:hover .char3 {
- -webkit-transition: color 0.2s 0.2s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.2s;
-moz-transition: color 0.2s 0.2s;
- -ms-transition: color 0.2s 0.2s;
-o-transition: color 0.2s 0.2s;
transition: color 0.2s 0.2s;
color: yellow;
}
/* line 37, ../sass/app.sass */
h1:hover .char4 {
- -webkit-transition: color 0.2s 0.3s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.3s;
-moz-transition: color 0.2s 0.3s;
- -ms-transition: color 0.2s 0.3s;
-o-transition: color 0.2s 0.3s;
transition: color 0.2s 0.3s;
color: green;
}
/* line 40, ../sass/app.sass */
h1:hover .char5 {
- -webkit-transition: color 0.2s 0.4s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.4s;
-moz-transition: color 0.2s 0.4s;
- -ms-transition: color 0.2s 0.4s;
-o-transition: color 0.2s 0.4s;
transition: color 0.2s 0.4s;
color: blue;
}
/* line 43, ../sass/app.sass */
h1:hover .char6 {
- -webkit-transition: color 0.2s 0.5s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.5s;
-moz-transition: color 0.2s 0.5s;
- -ms-transition: color 0.2s 0.5s;
-o-transition: color 0.2s 0.5s;
transition: color 0.2s 0.5s;
color: indigo;
}
/* line 46, ../sass/app.sass */
h1:hover .char7 {
- -webkit-transition: color 0.2s 0.6s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.6s;
-moz-transition: color 0.2s 0.6s;
- -ms-transition: color 0.2s 0.6s;
-o-transition: color 0.2s 0.6s;
transition: color 0.2s 0.6s;
color: violet;
}
/* line 49, ../sass/app.sass */
h1:hover .char8 {
- -webkit-transition: color 0.2s 0.7s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.7s;
-moz-transition: color 0.2s 0.7s;
- -ms-transition: color 0.2s 0.7s;
-o-transition: color 0.2s 0.7s;
transition: color 0.2s 0.7s;
color: red;
}
/* line 52, ../sass/app.sass */
h1:hover .char9 {
- -webkit-transition: color 0.2s 0.8s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.8s;
-moz-transition: color 0.2s 0.8s;
- -ms-transition: color 0.2s 0.8s;
-o-transition: color 0.2s 0.8s;
transition: color 0.2s 0.8s;
color: orange;
}
/* line 55, ../sass/app.sass */
h1:hover .char10 {
- -webkit-transition: color 0.2s 0.9s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 0.9s;
-moz-transition: color 0.2s 0.9s;
- -ms-transition: color 0.2s 0.9s;
-o-transition: color 0.2s 0.9s;
transition: color 0.2s 0.9s;
color: yellow;
}
/* line 58, ../sass/app.sass */
h1:hover .char11 {
- -webkit-transition: color 0.2s 1s;
+ -webkit-transition: color 0.2s;
+ -webkit-transition-delay: 1s;
-moz-transition: color 0.2s 1s;
- -ms-transition: color 0.2s 1s;
-o-transition: color 0.2s 1s;
transition: color 0.2s 1s;
color: green;
@@ -229,8 +227,28 @@ strong {
font-weight: bold;
}
+/* Drag and Drop area */
+/* line 84, ../sass/app.sass */
+.dropZone {
+ width: 900px;
+ height: 200px;
+ margin-bottom: 60px;
+ background: url("../img/drag_placeholder.png");
+}
+/* line 89, ../sass/app.sass */
+.dropZone.dragging {
+ -webkit-box-shadow: inset 0 1px 10px #09a1ec;
+ -moz-box-shadow: inset 0 1px 10px #09a1ec;
+ box-shadow: inset 0 1px 10px #09a1ec;
+}
+
+/* line 91, ../sass/app.sass */
+.droppedImage {
+ display: none;
+}
+
/* Forms */
-/* line 86, ../sass/app.sass */
+/* line 99, ../sass/app.sass */
input[type=text], input[type=password] {
background: #fafafa;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
@@ -245,7 +263,7 @@ input[type=text], input[type=password] {
border-radius: 4px;
}
-/* line 93, ../sass/app.sass */
+/* line 106, ../sass/app.sass */
textarea {
background: #fafafa;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
@@ -260,44 +278,44 @@ textarea {
border-radius: 4px;
}
-/* line 100, ../sass/app.sass */
+/* line 113, ../sass/app.sass */
input[type=text]:focus {
color: #373737;
}
-/* line 103, ../sass/app.sass */
+/* line 116, ../sass/app.sass */
textarea {
padding-left: 3px;
width: 98%;
}
-/* line 104, ../sass/app.sass */
+/* line 117, ../sass/app.sass */
textarea:focus {
color: #373737;
}
-/* line 109, ../sass/app.sass */
+/* line 122, ../sass/app.sass */
input[type=text] {
padding: 3px;
}
/* Links */
-/* line 114, ../sass/app.sass */
+/* line 127, ../sass/app.sass */
a {
color: #09a1ec;
text-decoration: none;
}
-/* line 117, ../sass/app.sass */
+/* line 130, ../sass/app.sass */
a:hover {
color: #7fd2fa;
}
-/* line 120, ../sass/app.sass */
+/* line 133, ../sass/app.sass */
#container {
width: 900px;
margin: 0 auto;
}
-/* line 124, ../sass/app.sass */
+/* line 137, ../sass/app.sass */
header {
padding-bottom: 40px;
text-align: center;
@@ -305,12 +323,12 @@ header {
margin: 0 auto;
}
-/* line 130, ../sass/app.sass */
+/* line 143, ../sass/app.sass */
.medianCutPalette h3 {
margin-top: 20px;
}
-/* line 133, ../sass/app.sass */
+/* line 146, ../sass/app.sass */
.imageSection {
margin-bottom: 80px;
background: #111111;
@@ -321,62 +339,46 @@ header {
border-radius: 10px;
*zoom: 1;
}
-/* line 38, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss */
+/* line 38, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss */
.imageSection:after {
content: "";
display: table;
clear: both;
}
-/* line 138, ../sass/app.sass */
+/* line 151, ../sass/app.sass */
.imageSection .imageWrap {
-moz-border-radius-topleft: 10px;
-webkit-border-top-left-radius: 10px;
- -ms-border-top-left-radius: 10px;
- -o-border-top-left-radius: 10px;
border-top-left-radius: 10px;
-moz-border-radius-bottomleft: 10px;
-webkit-border-bottom-left-radius: 10px;
- -ms-border-bottom-left-radius: 10px;
- -o-border-bottom-left-radius: 10px;
border-bottom-left-radius: 10px;
width: 400px;
height: 300px;
float: left;
margin-right: 20px;
background: url(../img/dark_checkered_bg.png);
+ overflow: hidden;
}
-/* line 145, ../sass/app.sass */
-.imageSection .imageWrap .targetImage {
- -moz-border-radius-topleft: 10px;
- -webkit-border-top-left-radius: 10px;
- -ms-border-top-left-radius: 10px;
- -o-border-top-left-radius: 10px;
- border-top-left-radius: 10px;
- -moz-border-radius-bottomleft: 10px;
- -webkit-border-bottom-left-radius: 10px;
- -ms-border-bottom-left-radius: 10px;
- -o-border-bottom-left-radius: 10px;
- border-bottom-left-radius: 10px;
-}
-/* line 147, ../sass/app.sass */
+/* line 160, ../sass/app.sass */
.imageSection .colors {
margin-top: 20px;
width: 400px;
float: left;
}
-/* line 151, ../sass/app.sass */
+/* line 164, ../sass/app.sass */
.imageSection .colors .function {
clear: left;
margin-bottom: 10px;
*zoom: 1;
}
-/* line 38, ../../../../.rvm/gems/ruby-1.9.2-p290/gems/compass-0.12.1/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss */
+/* line 38, ../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss */
.imageSection .colors .function:after {
content: "";
display: table;
clear: both;
}
-/* line 155, ../sass/app.sass */
+/* line 168, ../sass/app.sass */
.imageSection .colors .function .swatches .swatch {
width: 40px;
height: 20px;
@@ -385,15 +387,13 @@ header {
float: left;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
- -ms-transition: all 0.5s;
-o-transition: all 0.5s;
transition: all 0.5s;
}
-/* line 162, ../sass/app.sass */
+/* line 175, ../sass/app.sass */
.imageSection .colors .function .swatches .swatch:hover {
-webkit-transition: none;
-moz-transition: none;
- -ms-transition: none;
-o-transition: none;
transition: none;
-webkit-transform: scale(1.2, 1.2);
@@ -405,35 +405,27 @@ header {
-moz-box-shadow: 0 1px 10px black;
box-shadow: 0 1px 10px black;
}
-/* line 166, ../sass/app.sass */
+/* line 179, ../sass/app.sass */
.imageSection .colors .function .swatches .swatch:first-child {
-moz-border-radius-topleft: 4px;
-webkit-border-top-left-radius: 4px;
- -ms-border-top-left-radius: 4px;
- -o-border-top-left-radius: 4px;
border-top-left-radius: 4px;
-moz-border-radius-bottomleft: 4px;
-webkit-border-bottom-left-radius: 4px;
- -ms-border-bottom-left-radius: 4px;
- -o-border-bottom-left-radius: 4px;
border-bottom-left-radius: 4px;
}
-/* line 168, ../sass/app.sass */
+/* line 181, ../sass/app.sass */
.imageSection .colors .function .swatches .swatch:last-child {
-moz-border-radius-topright: 4px;
-webkit-border-top-right-radius: 4px;
- -ms-border-top-right-radius: 4px;
- -o-border-top-right-radius: 4px;
border-top-right-radius: 4px;
-moz-border-radius-bottomright: 4px;
-webkit-border-bottom-right-radius: 4px;
- -ms-border-bottom-right-radius: 4px;
- -o-border-bottom-right-radius: 4px;
border-bottom-right-radius: 4px;
}
/* Hardcoding the offset for the FB icon example */
-/* line 172, ../sass/app.sass */
+/* line 185, ../sass/app.sass */
.fbIcon .imageWrap .targetImage {
-webkit-border-radius: 0;
-moz-border-radius: 0;
@@ -445,7 +437,7 @@ header {
left: 192px;
}
-/* line 178, ../sass/app.sass */
+/* line 191, ../sass/app.sass */
canvas {
display: none;
}
diff --git a/img/drag_placeholder.png b/img/drag_placeholder.png
new file mode 100644
index 0000000..d495d2f
Binary files /dev/null and b/img/drag_placeholder.png differ
diff --git a/index.html b/index.html
index bc053b1..7fba344 100755
--- a/index.html
+++ b/index.html
@@ -28,13 +28,21 @@
-
Examples
+
+
Test it out
+
+
+
+
+
+
+
Examples
-
+
@@ -48,7 +56,7 @@
{{#images}}
-
+
diff --git a/index.js b/index.js
index 014c6d7..bf6da3f 100644
--- a/index.js
+++ b/index.js
@@ -3,43 +3,147 @@ $(document).ready(function () {
// Use mustache.js templating to create layout
var imageArray = { images: [
- {"file": "3.jpg"},
- {"file": "4.jpg"},
- {"file": "5.jpg"},
- {"file": "logo1.png"},
- {"file": "icon1.png", "colorCount": "4", "class": "fbIcon"}
+ {"file": "img/3.jpg"},
+ {"file": "img/4.jpg"},
+ {"file": "img/5.jpg"},
+ {"file": "img/logo1.png"},
+ {"file": "img/icon1.png", "colorCount": "4", "class": "fbIcon"}
]};
+ // Setup the drag and drop behavior if supported
+ if (typeof window.FileReader === 'function') {
+ $('#dragDrop').show();
+
+ var $dropZone = $('#dropZone');
+
+ var dragEnter = function( evt ){
+ evt.stopPropagation();
+ evt.preventDefault();
+ $dropZone.addClass('dragging');
+ };
+
+ var dragLeave = function( evt ){
+ evt.stopPropagation();
+ evt.preventDefault();
+ $dropZone.removeClass('dragging');
+ };
+
+ var dragOver = function( evt ){
+ evt.stopPropagation();
+ evt.preventDefault();
+ };
+
+ var drop = function( evt ){
+ evt.stopPropagation();
+ evt.preventDefault();
+ $dropZone.removeClass('dragging');
+
+ var dt = evt.originalEvent.dataTransfer;
+ var files = dt.files;
+
+ handleFiles( files );
+ };
+
+ $dropZone
+ .on('dragenter', dragEnter)
+ .on('dragleave', dragLeave)
+ .on('dragover', dragOver)
+ .on('drop', drop);
+ }
+
+ var displayColors = function( image ) {
+ var $image = $(image);
+ var imageSection = $image.closest('.imageSection');
+ var appendColors = function (colors, root) {
+ $.each(colors, function (index, value) {
+ var swatchEl = $('
', {'class': 'swatch'})
+ .css('background-color', 'rgba('+ value +', 1)');
+ root.append(swatchEl);
+ });
+ };
+
+ // Dominant Color
+ var dominantColor = getDominantColor(image);
+ var dominantSwatch = imageSection.find('.dominantColor .swatches');
+ appendColors([dominantColor], dominantSwatch);
+
+ // Palette
+ var colorCount = $image.attr('data-colorcount') ? $image.data('colorcount') : 10;
+ var medianPalette = createPalette(image, colorCount);
+ var medianCutPalette = imageSection.find('.medianCutPalette .swatches');
+ appendColors(medianPalette, medianCutPalette);
+ };
+
+ function handleFiles( files ) {
+ var imageType = /image.*/;
+ var fileCount = files.length;
+
+ for (var i = 0; i < fileCount; i++) {
+ var file = files[i];
+
+ if ( file.type.match(imageType) ) {
+ var reader = new FileReader();
+ reader.onload = function( e ) {
+ imageInfo = { images: [
+ {'class': 'droppedImage', file: e.target.result}
+ ]};
+
+ var html = Mustache.to_html($('#template').html(), imageInfo);
+ $('#draggedImages').prepend( html );
+
+ var img = $('.droppedImage .targetImage').get(0);
+
+ // Must wait for image to load in DOM, not just load from FileReader
+ $(img).on('load', function() {
+ displayColors( img );
+ util.centerImg( img, 400, 300);
+
+ $('.droppedImage').slideDown();
+ });
+ };
+ reader.readAsDataURL(file);
+ } else {
+ alert('File must be a supported image type.');
+ }
+ }
+ }
+
var html = Mustache.to_html($('#template').html(), imageArray);
$('#main').append(html);
// Use lettering.js to give letter by letter styling control for the h1 title
$("h1").lettering();
-
// For each image:
// Once image is loaded, get dominant color and palette and display them.
$('img').bind('load', function (event) {
- var image = event.target;
- var $image = $(image);
- var imageSection = $image.closest('.imageSection');
- var appendColors = function (colors, root) {
- $.each(colors, function (index, value) {
- var swatchEl = $('
', {'class': 'swatch'})
- .css('background-color', 'rgba('+ value +', 1)');
- root.append(swatchEl);
- });
- };
-
- // Dominant Color
- var dominantColor = getDominantColor(image);
- var dominantSwatch = imageSection.find('.dominantColor .swatches');
- appendColors([dominantColor], dominantSwatch);
-
- // Palette
- var colorCount = $image.attr('data-colorcount') ? $image.data('colorcount') : 10;
- var medianPalette = createPalette(image, colorCount);
- var medianCutPalette = imageSection.find('.medianCutPalette .swatches');
- appendColors(medianPalette, medianCutPalette);
+ var image = event.target;
+ displayColors( image );
});
-});
\ No newline at end of file
+});
+
+var util = {
+ centerImg: function( img, containerWidth, containerHeight) {
+ var $img = $(img);
+ var imgWidth = $img.get(0).width;
+ var imgHeight = $img.get(0).height;
+ var imgAspectRatio = imgHeight/imgWidth;
+
+ if ( imgHeight > containerHeight ) {
+ imgWidth = containerHeight / imgAspectRatio;
+ $img.css('width', ( imgWidth + "px" ));
+ }
+ if ( imgWidth > containerWidth ) {
+ $img.css('width', ( containerWidth + "px" ));
+ imgHeight = imgAspectRatio * containerWidth;
+ }
+ if ( imgWidth < containerWidth ) {
+ var hOffset = ( containerWidth - imgWidth )/2;
+ $img.css('margin-left', ( hOffset + "px" ));
+ }
+ if ( imgHeight < containerHeight ) {
+ var vOffset = ( containerHeight - imgHeight )/2;
+ $img.css('margin-top', ( vOffset + "px" ));
+ }
+ }
+};
diff --git a/js/libs/jquery-1.6.2.min.js b/js/libs/jquery-1.6.2.min.js
deleted file mode 100755
index 48590ec..0000000
--- a/js/libs/jquery-1.6.2.min.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.6.2
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Jun 30 14:16:56 2011 -0400
- */
-(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="