From 66656edaba23f0ac8e83ba68e2db0e827cb950c2 Mon Sep 17 00:00:00 2001 From: sravanthimodepu Date: Thu, 20 May 2021 10:18:43 +0530 Subject: [PATCH 1/7] added content, images and quiz --- experiment/aim.md | 2 +- experiment/experiment-name.md | 2 +- experiment/objective.md | 5 ++++ experiment/pretest.json | 51 ++++++++++++++++++++++++++-------- experiment/procedure.md | 36 +++++++++++++++++++++++- experiment/references.md | 10 ++++++- experiment/theory.md | 52 ++++++++++++++++++++++++++++++++++- 7 files changed, 142 insertions(+), 16 deletions(-) create mode 100644 experiment/objective.md diff --git a/experiment/aim.md b/experiment/aim.md index 4bc1c54..ad05099 100644 --- a/experiment/aim.md +++ b/experiment/aim.md @@ -1 +1 @@ -### Aim of the experiment +In image arithmetic, we consider operations such as I(x,y) = A (x,y) o B(x,y) where o is an arithmetic operation such as addition, subtraction, multiplication or division. Here, A and B could be derived from different sources. Such operations are particularly used in modelling image acquisition as a result of a perfect image corrupted with (additive or multiplicative) noise. The noise is often introduced either by a transmission medium or the camera. \ No newline at end of file diff --git a/experiment/experiment-name.md b/experiment/experiment-name.md index b0d364b..36db231 100644 --- a/experiment/experiment-name.md +++ b/experiment/experiment-name.md @@ -1 +1 @@ -## Experiment name +## Image Arithmetic \ No newline at end of file diff --git a/experiment/objective.md b/experiment/objective.md new file mode 100644 index 0000000..73e0d20 --- /dev/null +++ b/experiment/objective.md @@ -0,0 +1,5 @@ +1. To learn to use arithmetic operations to combine images. + +2. To study the effect of these operations on the dynamic range of the output image. + +3. To study methods to enforce closure - force the output image to also be an 8 bit image. diff --git a/experiment/pretest.json b/experiment/pretest.json index 6edba59..b7ee55e 100644 --- a/experiment/pretest.json +++ b/experiment/pretest.json @@ -1,18 +1,47 @@ [ -{"question":"This is a Sample Question 1?", +{"question":"1. How many bits are required to add three 8 bits gray-scale images without losing precision in the data?", "answers":{ - "a":"answer1", - "b":"answer2", - "c":"answer3", - "d":"answer4" + "a":"9", + "b":"10", + "c":"11", + "d":"8" }, "correctAnswer":"a"}, -{"question":"This is a Sample Question 2?", + +{"question":"2. You have added two 8-bit images. To maintain the result in 8 bits which of the following would you perform?", "answers":{ - "a":"answer1", - "b":"answer2", - "c":"answer3", - "d":"answer4" + "a":"Scale down the intensity values of two images by half before performing addition", + "b":"Set the overflowing pixel value to the maximum", + "c":"After performing addition, scale down the output image intensities values by half", + "d":"All of the above" }, -"correctAnswer":"c"} +"correctAnswer":"c"}, + +{"question":"3. After performing division operation, to display the quotient image which operation would you perform?", +"answers":{ + "a":"Clipping", + "b":"Auto Scaling", + "c":"Both", + "d":"None" + }, +"correctAnswer":"a"}, + +{"question":"4. In a bolt manufacturing plant quality of the bolts produced is of interest. Consider an assembly line of these bolts, and assume an image can be taken of individual bolts coming in the line. One way to assess the quality of a final bolt is to compare the images of the bolt with standard bolt image. In such a scenario, what image arithmetic operation would you perform to identify a faulty bolt?", +"answers":{ + "a":"Addition", + "b":"Subtraction", + "c":"Division", + "d":"Multiplication" + }, +"correctAnswer":"c"}, + +{"question":"5. To remove the background of a face image, which image arithmetic operation is useful?", +"answers":{ + "a":"Addition", + "b":"Subtraction", + "c":"Division", + "d":"Multiplication" + }, +"correctAnswer":"a"} + ] diff --git a/experiment/procedure.md b/experiment/procedure.md index 37929cc..62b4f54 100644 --- a/experiment/procedure.md +++ b/experiment/procedure.md @@ -1 +1,35 @@ -### Procedure \ No newline at end of file +The experiment is design to understand and learn the image arithmetic concepts. This experiment consists five parts: + +1. Image addition + +2. Image Subtraction + +3. Image Difference + +4. Image Multiplication + +5. Image Division + +**Steps to run the experiments** + +1. Select image from the mosaic using 'select imag' option + + 1. Select region of the image to load it in the input image panel + + 2. Select secondary image by choosing either of the 'dull' , 'bright' or 'gradient' images + + 2. Select one option from 'addition', 'subtraction', 'difference', 'multiplication' and 'division' + + 1. Select the one option from 'clipping' and 'auto-scaling' + +3. Select run option to perform the operations + + 1. Output result will be displayed in the output panel + + 2. Along with intermediate results + +Interesting Observations + +1. Do the Subtraction and Difference operations, and compare the results. + +2. Do the Multiplication operation first with clipping and then with auto-scaling, and compare the results. diff --git a/experiment/references.md b/experiment/references.md index b15b47e..088e417 100644 --- a/experiment/references.md +++ b/experiment/references.md @@ -1 +1,9 @@ -### Link your references in here \ No newline at end of file +1. Image Arithmetic - [http://homepages.inf.ed.ac.uk/rbf/HIPR2/arthops.htm](http://homepages.inf.ed.ac.uk/rbf/HIPR2/arthops.htm) + +2. Image Arithmetic - [http://www.student.kuleuven.be/~m0216922/CG/imagearithmetic.html](http://www.student.kuleuven.be/~m0216922/CG/imagearithmetic.html) + +Books: + +1. A.K.Jain, Fundamentals of Digital Image Processing, Prentice-Hall, 1989. + +2. Rafael C. Gonzalez, Digital Image Processing, Second Ed., Pearson Education,2004. \ No newline at end of file diff --git a/experiment/theory.md b/experiment/theory.md index ef57af9..42ac289 100644 --- a/experiment/theory.md +++ b/experiment/theory.md @@ -1 +1,51 @@ -### Link your theory in here \ No newline at end of file + A (x,y) o B(x,y) = I(x,y) + +The important requirement in image arithmetic is that all (input and output) the images are of the same size MxM. + +Arithmetic operations are done pixelwise. Let p = A(x,y) and q = B(x,y) be the pixel values to be operated on and r =I(x,y) be the result of the operation. + +**Addition :** + +I(x,y) = A(x,y) + B(x,y) ¡ú r = p + q + +**Subtraction :** + +I(x,y) = A(x,y) - B(x,y) ¡ú r = p - q + +**Difference :** + +I(x,y) = |A(x,y) - B(x,y)| ¡ú r = |p - q| + +**Multiplication :** + +I(x,y) = A(x,y) X B(x,y) ¡ú r = p x q + +**Division :** + +I(x,y) = A(x,y) / B(x,y) ¡ú r = p / q + +**Implementation issues:** + +Digital images are stored as b - bit images. Hence, the range of values a pixel can take is restricted to the range [ 0, 1,... (2b -1)]. With b= 8 this range is [0,1,...255]. The closed interval poses a problem when performing arithmetic operations in practice, as the results are not guaranteed to be within this interval. For an 8-bit image the intervals for the output pixel for each operation are: + +Addition: r ¡Ê [0, (2x255=510)] + +Subtraction: r ¡Ê [-255, 255] + +Difference: r ¡Ê [0, 255] + +Multiplication: r ¡Ê [0, (2552 = 65025)] + +Division: r ¡Ê [0,¡Þ] + +Since we need r to be in [0,255], we will have an underflow or overflow. A final processing step is generally required to handle this problem. + +There are two options: + +Clipping- Map all negative pixel values ( r < 0) to zero and all values above 255 to 255. + +Auto scaling - This operation remaps the range of r to fit to be in [0, 255] as follows. Let ra be the autoscaled value. + +ra = 255 x (r - rmin)/(rmax-rmin) + +Where, rmax and rmin are the maximum and minimum values of an arithmetic operation. \ No newline at end of file From 240e69d41c369aa6550489fa9396c9421ed128ac Mon Sep 17 00:00:00 2001 From: sravanthimodepu Date: Mon, 24 May 2021 14:50:05 +0530 Subject: [PATCH 2/7] fixed special characters issue --- experiment/theory.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/experiment/theory.md b/experiment/theory.md index 42ac289..c0b5cc1 100644 --- a/experiment/theory.md +++ b/experiment/theory.md @@ -1,4 +1,4 @@ - A (x,y) o B(x,y) = I(x,y) +A (x,y) o B(x,y) = I(x,y) The important requirement in image arithmetic is that all (input and output) the images are of the same size MxM. @@ -6,37 +6,38 @@ Arithmetic operations are done pixelwise. Let p = A(x,y) and q = B(x,y) be the p **Addition :** -I(x,y) = A(x,y) + B(x,y) ¡ú r = p + q +I(x,y) = A(x,y) + B(x,y) ¡ú r = p + q **Subtraction :** -I(x,y) = A(x,y) - B(x,y) ¡ú r = p - q +I(x,y) = A(x,y) - B(x,y) ¡ú r = p - q **Difference :** -I(x,y) = |A(x,y) - B(x,y)| ¡ú r = |p - q| +I(x,y) = |A(x,y) - B(x,y)| ¡ú r = |p - q| **Multiplication :** -I(x,y) = A(x,y) X B(x,y) ¡ú r = p x q +I(x,y) = A(x,y) X B(x,y) ¡ú r = p x q **Division :** -I(x,y) = A(x,y) / B(x,y) ¡ú r = p / q +I(x,y) = A(x,y) / B(x,y) ¡ú r = p / q + **Implementation issues:** Digital images are stored as b - bit images. Hence, the range of values a pixel can take is restricted to the range [ 0, 1,... (2b -1)]. With b= 8 this range is [0,1,...255]. The closed interval poses a problem when performing arithmetic operations in practice, as the results are not guaranteed to be within this interval. For an 8-bit image the intervals for the output pixel for each operation are: -Addition: r ¡Ê [0, (2x255=510)] +Addition: r ∈ [0, (2x255=510)] -Subtraction: r ¡Ê [-255, 255] +Subtraction: r ∈ [-255, 255] -Difference: r ¡Ê [0, 255] +Difference: r ∈ [0, 255] -Multiplication: r ¡Ê [0, (2552 = 65025)] +Multiplication: r ∈ [0, (2552 = 65025)] -Division: r ¡Ê [0,¡Þ] +Division: r ∈ [0,∞] Since we need r to be in [0,255], we will have an underflow or overflow. A final processing step is generally required to handle this problem. From 06cc6ec70a310d76242abc8e76c2e2baa9dd724f Mon Sep 17 00:00:00 2001 From: sravanthimodepu Date: Tue, 15 Jun 2021 15:45:24 +0530 Subject: [PATCH 3/7] added json script --- experiment-descriptor.json | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 experiment-descriptor.json diff --git a/experiment-descriptor.json b/experiment-descriptor.json new file mode 100644 index 0000000..4789807 --- /dev/null +++ b/experiment-descriptor.json @@ -0,0 +1,53 @@ +{ + "unit-type": "lu", + "label": "", + "basedir": ".", + "units": [ + { + "unit-type": "aim" + }, + { + "target": "theory.html", + "source": "theory.md", + "label": "Theory", + "unit-type": "task", + "content-type": "text" + }, + { + "target": "pretest.html", + "source": "pretest.json", + "label": "Pretest", + "unit-type": "task", + "content-type": "assesment" + }, + { + "target": "procedure.html", + "source": "procedure.md", + "label": "Procedure", + "unit-type": "task", + "content-type": "text" + }, + { + "target": "simulation.html", + "source": "simulation/index.html", + "label": "Simulation", + "unit-type": "task", + "content-type": "simulation" + }, + { + "target": "assignment.html", + "source": "assignment.md", + "label": "Assignment", + "unit-type": "task", + "content-type": "text" + }, + { + "target": "references.html", + "source": "references.md", + "label": "References", + "unit-type": "task", + "content-type": "text" + } + ] +} + From 8d2f6b6f35a70cde47978102efeff4f74433ba3c Mon Sep 17 00:00:00 2001 From: sravanthimodepu Date: Wed, 15 Sep 2021 00:02:49 +0530 Subject: [PATCH 4/7] added simulation and assignment --- experiment-descriptor.json | 18 +- experiment/assignment/assign.php | 87 + experiment/assignment/css/README.md | 1 + experiment/assignment/css/border-h.gif | Bin 0 -> 72 bytes experiment/assignment/css/border-v.gif | Bin 0 -> 72 bytes experiment/assignment/css/carpe-slider.css | 114 + experiment/assignment/css/common.css | 33 + .../images/ui-bg_flat_30_cccccc_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 0 -> 167 bytes .../ui-bg_highlight-hard_20_0972a5_1x100.png | Bin 0 -> 114 bytes .../ui-bg_highlight-soft_33_003147_1x100.png | Bin 0 -> 171 bytes .../ui-bg_highlight-soft_35_222222_1x100.png | Bin 0 -> 113 bytes .../ui-bg_highlight-soft_44_444444_1x100.png | Bin 0 -> 117 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 0 -> 95 bytes .../images/ui-bg_loop_25_000000_21x21.png | Bin 0 -> 235 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_a83300_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cccccc_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../css/dark-hive/jquery-ui-1.8.4.custom.css | 374 ++ experiment/assignment/css/default.css | 277 ++ .../assignment/css/imgareaselect-default.css | 41 + experiment/assignment/css/jquery-slider.css | 10 + experiment/assignment/css/jquery-slider2.css | 10 + experiment/assignment/css/main.css | 1 + experiment/assignment/css/override.css | 6 + experiment/assignment/css/psd2css.css | 300 ++ experiment/assignment/css/style-main.scss | 3034 +++++++++++++++++ experiment/assignment/css/style.css | 1471 ++++++++ experiment/assignment/css/style.css_old | 357 ++ experiment/assignment/js/README.md | 1 + experiment/assignment/js/carpe-slider.js | 212 ++ experiment/assignment/js/jquery-1.4.2.min.js | 154 + experiment/assignment/js/jquery-1.js | 154 + .../js/jquery-ui-1.8.4.custom.min.js | 137 + experiment/assignment/js/jquery.flot.js | 2119 ++++++++++++ .../assignment/js/jquery.imgareaselect.js | 717 ++++ experiment/assignment/js/main.js | 1 + experiment/assignment/js/modernizr-1.5.min.js | 28 + experiment/assignment/js/pageload.js | 24 + experiment/assignment/js/psd2css.js | 24 + experiment/assignment/menu/images/Thumbs.db | Bin 0 -> 5120 bytes experiment/assignment/menu/images/hover.gif | Bin 0 -> 60 bytes experiment/assignment/menu/images/hover2.png | Bin 0 -> 184 bytes .../assignment/menu/images/hover_sub.gif | Bin 0 -> 833 bytes .../assignment/menu/images/seperator.gif | Bin 0 -> 155 bytes experiment/assignment/menu/menu_style.css | 92 + experiment/objective.md | 8 +- experiment/posttest.json | 25 +- experiment/pretest.json | 18 - experiment/simulation/arith.php | 469 +++ experiment/simulation/css/border-h.gif | Bin 0 -> 72 bytes experiment/simulation/css/border-v.gif | Bin 0 -> 72 bytes experiment/simulation/css/carpe-slider.css | 114 + experiment/simulation/css/common.css | 33 + .../images/ui-bg_flat_30_cccccc_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 0 -> 167 bytes .../ui-bg_highlight-hard_20_0972a5_1x100.png | Bin 0 -> 114 bytes .../ui-bg_highlight-soft_33_003147_1x100.png | Bin 0 -> 171 bytes .../ui-bg_highlight-soft_35_222222_1x100.png | Bin 0 -> 113 bytes .../ui-bg_highlight-soft_44_444444_1x100.png | Bin 0 -> 117 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 0 -> 95 bytes .../images/ui-bg_loop_25_000000_21x21.png | Bin 0 -> 235 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_a83300_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cccccc_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../css/dark-hive/jquery-ui-1.8.4.custom.css | 374 ++ experiment/simulation/css/default.css | 277 ++ .../simulation/css/imgareaselect-default.css | 41 + experiment/simulation/css/jquery-slider.css | 10 + experiment/simulation/css/jquery-slider2.css | 10 + experiment/simulation/css/override.css | 6 + experiment/simulation/css/psd2css.css | 300 ++ experiment/simulation/css/style-main.scss | 3034 +++++++++++++++++ experiment/simulation/css/style.css | 1471 ++++++++ experiment/simulation/css/style.css_old | 357 ++ experiment/simulation/index.html | 2 + experiment/simulation/js/carpe-slider.js | 212 ++ experiment/simulation/js/jquery-1.4.2.min.js | 154 + experiment/simulation/js/jquery-1.js | 154 + .../js/jquery-ui-1.8.4.custom.min.js | 137 + experiment/simulation/js/jquery.flot.js | 2119 ++++++++++++ .../simulation/js/jquery.imgareaselect.js | 717 ++++ experiment/simulation/js/modernizr-1.5.min.js | 28 + experiment/simulation/js/pageload.js | 24 + experiment/simulation/js/psd2css.js | 24 + experiment/simulation/menu/images/Thumbs.db | Bin 0 -> 5120 bytes experiment/simulation/menu/images/hover.gif | Bin 0 -> 60 bytes experiment/simulation/menu/images/hover2.png | Bin 0 -> 184 bytes .../simulation/menu/images/hover_sub.gif | Bin 0 -> 833 bytes .../simulation/menu/images/seperator.gif | Bin 0 -> 155 bytes experiment/simulation/menu/menu_style.css | 92 + 97 files changed, 19970 insertions(+), 37 deletions(-) create mode 100644 experiment/assignment/assign.php create mode 100644 experiment/assignment/css/README.md create mode 100644 experiment/assignment/css/border-h.gif create mode 100644 experiment/assignment/css/border-v.gif create mode 100644 experiment/assignment/css/carpe-slider.css create mode 100644 experiment/assignment/css/common.css create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-bg_loop_25_000000_21x21.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-icons_222222_256x240.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-icons_4b8e0b_256x240.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-icons_a83300_256x240.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-icons_cccccc_256x240.png create mode 100644 experiment/assignment/css/dark-hive/images/ui-icons_ffffff_256x240.png create mode 100644 experiment/assignment/css/dark-hive/jquery-ui-1.8.4.custom.css create mode 100755 experiment/assignment/css/default.css create mode 100644 experiment/assignment/css/imgareaselect-default.css create mode 100644 experiment/assignment/css/jquery-slider.css create mode 100644 experiment/assignment/css/jquery-slider2.css create mode 100644 experiment/assignment/css/main.css create mode 100644 experiment/assignment/css/override.css create mode 100644 experiment/assignment/css/psd2css.css create mode 100644 experiment/assignment/css/style-main.scss create mode 100644 experiment/assignment/css/style.css create mode 100644 experiment/assignment/css/style.css_old create mode 100644 experiment/assignment/js/README.md create mode 100644 experiment/assignment/js/carpe-slider.js create mode 100644 experiment/assignment/js/jquery-1.4.2.min.js create mode 100644 experiment/assignment/js/jquery-1.js create mode 100644 experiment/assignment/js/jquery-ui-1.8.4.custom.min.js create mode 100644 experiment/assignment/js/jquery.flot.js create mode 100644 experiment/assignment/js/jquery.imgareaselect.js create mode 100644 experiment/assignment/js/main.js create mode 100755 experiment/assignment/js/modernizr-1.5.min.js create mode 100644 experiment/assignment/js/pageload.js create mode 100644 experiment/assignment/js/psd2css.js create mode 100644 experiment/assignment/menu/images/Thumbs.db create mode 100644 experiment/assignment/menu/images/hover.gif create mode 100644 experiment/assignment/menu/images/hover2.png create mode 100644 experiment/assignment/menu/images/hover_sub.gif create mode 100644 experiment/assignment/menu/images/seperator.gif create mode 100644 experiment/assignment/menu/menu_style.css create mode 100644 experiment/simulation/arith.php create mode 100644 experiment/simulation/css/border-h.gif create mode 100644 experiment/simulation/css/border-v.gif create mode 100644 experiment/simulation/css/carpe-slider.css create mode 100644 experiment/simulation/css/common.css create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-bg_loop_25_000000_21x21.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-icons_222222_256x240.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-icons_4b8e0b_256x240.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-icons_a83300_256x240.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-icons_cccccc_256x240.png create mode 100644 experiment/simulation/css/dark-hive/images/ui-icons_ffffff_256x240.png create mode 100644 experiment/simulation/css/dark-hive/jquery-ui-1.8.4.custom.css create mode 100755 experiment/simulation/css/default.css create mode 100644 experiment/simulation/css/imgareaselect-default.css create mode 100644 experiment/simulation/css/jquery-slider.css create mode 100644 experiment/simulation/css/jquery-slider2.css create mode 100644 experiment/simulation/css/override.css create mode 100644 experiment/simulation/css/psd2css.css create mode 100644 experiment/simulation/css/style-main.scss create mode 100644 experiment/simulation/css/style.css create mode 100644 experiment/simulation/css/style.css_old create mode 100644 experiment/simulation/js/carpe-slider.js create mode 100644 experiment/simulation/js/jquery-1.4.2.min.js create mode 100644 experiment/simulation/js/jquery-1.js create mode 100644 experiment/simulation/js/jquery-ui-1.8.4.custom.min.js create mode 100644 experiment/simulation/js/jquery.flot.js create mode 100644 experiment/simulation/js/jquery.imgareaselect.js create mode 100755 experiment/simulation/js/modernizr-1.5.min.js create mode 100644 experiment/simulation/js/pageload.js create mode 100644 experiment/simulation/js/psd2css.js create mode 100644 experiment/simulation/menu/images/Thumbs.db create mode 100644 experiment/simulation/menu/images/hover.gif create mode 100644 experiment/simulation/menu/images/hover2.png create mode 100644 experiment/simulation/menu/images/hover_sub.gif create mode 100644 experiment/simulation/menu/images/seperator.gif create mode 100644 experiment/simulation/menu/menu_style.css diff --git a/experiment-descriptor.json b/experiment-descriptor.json index 4789807..c8b2fb6 100644 --- a/experiment-descriptor.json +++ b/experiment-descriptor.json @@ -13,6 +13,13 @@ "unit-type": "task", "content-type": "text" }, + { + "target": "objective.html", + "source": "objective.md", + "label": "Objective", + "unit-type": "task", + "content-type": "text" + }, { "target": "pretest.html", "source": "pretest.json", @@ -36,10 +43,17 @@ }, { "target": "assignment.html", - "source": "assignment.md", + "source": "assignment/index.html", "label": "Assignment", "unit-type": "task", - "content-type": "text" + "content-type": "simulation" + }, + { + "target": "posttest.html", + "source": "posttest.json", + "label": "Posttest", + "unit-type": "task", + "content-type": "assesment" }, { "target": "references.html", diff --git a/experiment/assignment/assign.php b/experiment/assignment/assign.php new file mode 100644 index 0000000..dc9d9b9 --- /dev/null +++ b/experiment/assignment/assign.php @@ -0,0 +1,87 @@ + + + + + + Assignment - Virtual Lab in Image Processing + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + +
  • Assignment
  • + + + +
    +
    +
    + +Obtain the figure of the right from the figure on the left. +

    +"/>   "/> +
    + +Click here to try it out. +
    + + + + diff --git a/experiment/assignment/css/README.md b/experiment/assignment/css/README.md new file mode 100644 index 0000000..14b4fe3 --- /dev/null +++ b/experiment/assignment/css/README.md @@ -0,0 +1 @@ +### This folder contains all the css files used in the simulation. \ No newline at end of file diff --git a/experiment/assignment/css/border-h.gif b/experiment/assignment/css/border-h.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2aa5b0d09bf7215199dbf9a291b34b11d0352d4 GIT binary patch literal 72 zcmZ?wbhEHbWMg1tSjfQe|Nnmm1_m=TGay6ppOkY^YGO%hib8p2NrpmVR$@g?eqxGV XW?ou8gAPy~14tJG6LU)|D}yxvaY_|= literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/border-v.gif b/experiment/assignment/css/border-v.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bfd55564099537d38d4112f550b8974744de3ca GIT binary patch literal 72 zcmZ?wbhEHbWMp7tSjfQe|Nnmm1_m=TGay6ppOkY^YGO%hib8p2NrpmVR$@g?eqxGV XW?ou8gAPy~14tJG6LU)|D}yxvaW)ls literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/carpe-slider.css b/experiment/assignment/css/carpe-slider.css new file mode 100644 index 0000000..dc57165 --- /dev/null +++ b/experiment/assignment/css/carpe-slider.css @@ -0,0 +1,114 @@ +/* Default stylesheet for the Carpe Slider + By Tom Hermansson Snickars + 2005-12-17 version 1.5 + Copyright CARPE Design + carpe.ambiprospect.com +*/ +*.carpe_horizontal_slider_display_combo { + clear: left; + margin: 0; +} +*.carpe_vertical_slider_display_combo { + float: left; + margin: 0; +} +*.carpe_horizontal_slider_track { + background-color: #bbb; + color: #333; + width: 120px; + float: left; + margin: 0; + line-height: 0px; + font-size: 0px; + text-align: left; + padding: 4px; + border: 1px solid; + border-color: #ddd #999 #999 #ddd; +} +*.carpe_vertical_slider_track { + background-color: #bbb; + color: #333; + padding: 3px 6px 15px 6px; + width: 24px; + height: 100px; + border: 1px solid; + border-color: #ddd #999 #999 #ddd; +} +*.carpe_horizontal_slider_track *.carpe_slider_slit { + background-color: #333; + color: #ccc; + width: 110px; + height: 2px; + margin: 4px 4px 2px 4px; + line-height: 0px; + position: absolute; + z-index: 1; + border: 1px solid; + border-color: #999 #ddd #ddd #999; +} +*.carpe_vertical_slider_track *.carpe_slider_slit { + background-color: #000; + color: #333; + width: 2px; + height: 100px; + position: absolute; + margin: 4px 10px 4px 10px; + padding: 4px 0 1px 0; + line-height: 0px; + font-size: 0; + border: 1px solid; + border-color: #666 #ccc #ccc #666; +} +*.carpe_horizontal_slider_track *.carpe_slider { + width: 16px; + background-color: #666; + color: #333; + position: relative; + margin: 0; + height: 8px; + z-index: 1; + line-height: 0px; + font-size: 0px; + text-align: left; + border: 2px solid; + border-color: #999 #333 #333 #999; +} +*.carpe_vertical_slider_track *.carpe_slider { + width: 20px; + background-color: #666; + color: #333; + position: relative; + margin: 0; + height: 8px; + z-index: 1; + line-height: 0px; + font-size: 0px; + text-align: left; + border: 2px solid; + border-color: #999 #333 #333 #999; +} +*.carpe_slider_display_holder { + background-color: #bbb; + color: #333; + width: 34px; + margin: 0; + float: left; + padding: 0 2px 0 0; + height: 20px; + text-align: right; + border: 1px solid; + border-color: #ddd #999 #999 #ddd; +} +.carpe_slider_display { + background-color: #bbb; + color: #333; + padding: 3px 1px 0 0; + width: 30px; + text-align: right; + font-size: 11px; + line-height: 10px; + font-family: verdana, arial, helvetica, sans-serif; + font-weight: bold; + border: 0; + cursor: default; +} \ No newline at end of file diff --git a/experiment/assignment/css/common.css b/experiment/assignment/css/common.css new file mode 100644 index 0000000..4b9538a --- /dev/null +++ b/experiment/assignment/css/common.css @@ -0,0 +1,33 @@ +@charset "utf-8"; +/* CSS for styling header of the page */ + +/* reset default browser CSS */ + +body, div, h1,h2,h3,p,ul,ol,li,img,header,section,aside, footer, button{ + margin:0; padding:0; list-style:none; +} + +a { + text-decoration: none; /* no underlines */ + color: #961b25;/* dusty read */ +} + +a:hover { + color:#6f92a7; /*dusty blue */ +} + +:focus { + outline:0; /* no outline on focus */ +} + +h1,h2,h3 { + font-family: Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif; /* web safe colors */ + font-weight: normal; +} + +article { + margin:0; + padding:0; + position:relative; + display:block; +} diff --git a/experiment/assignment/css/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png b/experiment/assignment/css/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5473afffbc2662173f5af5c27d966c072de8039b GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`Ta z<$H)q$%zYm;;c7~Kd+Iuj%U9o62cnl7#bi-T}u42J&U%yNJ})(84RATelF{r5}E*| CoG&2& literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png b/experiment/assignment/css/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5950a8db9e64e8d00bb28726cb869947abfdc7fc GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7&<)v zy**H+;L+$#xLfUbvbRHKYdf;lnuLjR)5ZSVxA@w`{_x44Wr={X$x~Z$@7FAbSn&fgFuwGW_=oi~RXFcbPJmlyqtxte`W`Coi8H-DB~ Wz+8vrD+++NGkCiCxvXwA zrKA4;KgZ7h|Nko&3m&<@zkcB+pg^k-2d7Et4IYOXHXr^iHDYAQDR=FqD`wVF*V31rtx^1O-i2-*%VR!`&-n>;7Qxw|F%2EX3gO;DXM(c Q3!pg+p00i_>zopr07oh&m;e9( literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png b/experiment/assignment/css/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..e56eefd612ae74339bd45ae91ddfc2ae2eb7092b GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l$xiDV~E7mQ98UlM literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/images/ui-bg_loop_25_000000_21x21.png b/experiment/assignment/css/dark-hive/images/ui-bg_loop_25_000000_21x21.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7ea5f78045721fcbc80c11a7833566ab81f5d2 GIT binary patch literal 235 zcmVe7JuL4hN&d0+x^U% zf*@uFBAPNH8aC#f>GHEBX56nA2az`Z)Mst7aSvDO*P4b(W!ikxEmSJgCesbL>5ZBy l)n`Swhbr~&FF)@1NA1MND3Ij(>C6BC002ovPDHLkV1j6)YcT)- literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/images/ui-icons_222222_256x240.png b/experiment/assignment/css/dark-hive/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/images/ui-icons_4b8e0b_256x240.png b/experiment/assignment/css/dark-hive/images/ui-icons_4b8e0b_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..3bdb67be8f85c00d44940330a9a8cb07a73e83a4 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/images/ui-icons_a83300_256x240.png b/experiment/assignment/css/dark-hive/images/ui-icons_a83300_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..95993eab7625fb91819ce8d3d72fd6f71a520eda GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/images/ui-icons_cccccc_256x240.png b/experiment/assignment/css/dark-hive/images/ui-icons_cccccc_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..9254e05cfb964be56241b5bb4d0a0eb51c02df80 GIT binary patch literal 4369 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 oBo%DI*Kv;w;*%(i9W@e`=?odH?_b literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/images/ui-icons_ffffff_256x240.png b/experiment/assignment/css/dark-hive/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/experiment/assignment/css/dark-hive/jquery-ui-1.8.4.custom.css b/experiment/assignment/css/dark-hive/jquery-ui-1.8.4.custom.css new file mode 100644 index 0000000..cc569b3 --- /dev/null +++ b/experiment/assignment/css/dark-hive/jquery-ui-1.8.4.custom.css @@ -0,0 +1,374 @@ +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=444444&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=44&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=14_loop.png&bgImgOpacityContent=25&borderColorContent=555555&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=222222&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=444444&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=003147&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=33&borderColorHover=0b93d5&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=0972a5&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=20&borderColorActive=26b3f7&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=02_glass.png&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #555555; background: #000000 url(images/ui-bg_loop_25_000000_21x21.png) 50% 50% repeat; color: #ffffff; } +.ui-widget-content a { color: #ffffff; } +.ui-widget-header { border: 1px solid #333333; background: #444444 url(images/ui-bg_highlight-soft_44_444444_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #444444; background: #222222 url(images/ui-bg_highlight-soft_35_222222_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #eeeeee; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #eeeeee; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #0b93d5; background: #003147 url(images/ui-bg_highlight-soft_33_003147_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #26b3f7; background: #0972a5 url(images/ui-bg_highlight-hard_20_0972a5_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #cccccc; background: #eeeeee url(images/ui-bg_highlight-soft_80_eeeeee_1x100.png) 50% top repeat-x; color: #2e7db2; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #2e7db2; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #ffb73d; background: #ffc73d url(images/ui-bg_glass_40_ffc73d_1x400.png) 50% 50% repeat-x; color: #111111; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #111111; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #111111; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cccccc_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_cccccc_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4b8e0b_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_a83300_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; } +.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; } +.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } +.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } +.ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } +.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; } +.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } + +/* Overlays */ +.ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); } +.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* + * jQuery UI Accordion @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .1em .5em .2em .7em } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; }/* + * jQuery UI Button @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1; } +.ui-button-text-only .ui-button-text { padding: .4em .6em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/* + * jQuery UI Slider @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } diff --git a/experiment/assignment/css/default.css b/experiment/assignment/css/default.css new file mode 100755 index 0000000..d146a44 --- /dev/null +++ b/experiment/assignment/css/default.css @@ -0,0 +1,277 @@ +/*-----------------------------------------------------------*/ + +/* style.css contains a reset, font normalization and some base + styles. + + credit is left where credit is due. + additionally, much inspiration was taken from these projects: + * yui.yahooapis.com/2.8.1/build/base/base.css + * camendesign.com/design/ + * praegnanz.de/weblog/htmlcssjs-kickstart +*/ + +/* + html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + + HTML5 baseline) + v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark + html5doctor.com/html-5-reset-stylesheet/ +*/ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +abbr, address, cite, code, +del, dfn, em, img, ins, kbd, q, samp, +small, strong, sub, sup, var, +b, i, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, figure, footer, header, +hgroup, menu, nav, section, menu, +time, mark, audio, video { + margin:0; + padding:0; + border:0; + outline:0; + font-size:100%; + vertical-align:baseline; + background:transparent; +} + +article, aside, figure, footer, header, +hgroup, nav, section { display:block; } + +nav ul { list-style:none; } + +blockquote, q { quotes:none; } + +blockquote:before, blockquote:after, +q:before, q:after { content:''; content:none; } + +a { margin:0; padding:0; font-size:100%; + vertical-align:baseline; background:transparent; } + +ins { background-color:#ff9; color:#000; text-decoration:none;} + +mark { background-color:#ff9; color:#000; font-style:italic; + font-weight:bold; } + +del { text-decoration: line-through; } + +abbr[title], dfn[title] { border-bottom:1px dotted #000; +cursor:help; } + +/* tables still need cellspacing="0" in the markup */ +table { border-collapse:collapse; border-spacing:0; } + +hr { display:block; height:1px; border:0; + border-top:1px solid #ccc; margin:1em 0; padding:0; } + +input, select { vertical-align:middle; } +/* END RESET CSS */ + + +/* +fonts.css from the YUI Library: developer.yahoo.com/yui/ +Please refer to developer.yahoo.com/yui/fonts/ for font sizing +percentages + +There are three custom edits: + * remove arial, helvetica from explicit font stack + * make the line-height relative and unit-less + * remove the pre, code styles +*/ + +body { font:13px sans-serif; *font-size:small; *font:x-small; + line-height:1.22; } + +table { font-size:inherit; font:100%; } + +select, input, textarea { font:99% sans-serif; } + + +/* normalize monospace sizing + en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11# + Teletype_style_fix_for_Chrome +*/ +pre, code, kbd, samp { font-family: monospace, sans-serif; } + + + +/* + * minimal base styles + */ + + +/* #444 looks better than black: twitter.com/H_FJ/statuses/ + 11800719859 */ +body, select, input, textarea { color:#444; } + +/* Headers (h1,h2,etc) have no default font-size or margin, + you'll want to define those yourself. */ + +/* www.aestheticallyloyal.com/public/optimize-legibility/ */ + +h1,h2,h3,h4,h5,h6 { font-weight: bold; + text-rendering: optimizeLegibility; } + +/* maxvoltar.com/archive/-webkit-font-smoothing */ +html { -webkit-font-smoothing: antialiased; } + + +/* Accessible focus treatment: people.opera.com/patrickl/ + experiments/keyboard/test */ +a:hover, a:active { outline: none; } + +a, a:active, a:visited { color:#607890; } +a:hover { color:#036; } + + +ul { margin-left:30px; } +ol { margin-left:30px; list-style-type: decimal; } + +small { font-size:85%; } +strong, th { font-weight: bold; } + +td, td img { vertical-align:top; } + +sub { vertical-align: sub; font-size: smaller; } +sup { vertical-align: super; font-size: smaller; } + +pre { + padding: 15px; + + /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in- + blog-posts-css21-white-space-pre-wrap/ */ + white-space: pre; /* CSS2 */ + white-space: pre-wrap; /* CSS 2.1 */ + white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ + word-wrap: break-word; /* IE */ +} + +/* align checkboxes, radios, text inputs with their label + by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */ +input[type="radio"] { vertical-align: text-bottom; } +input[type="checkbox"] { vertical-align: bottom; + *vertical-align: baseline; } +.ie6 input { vertical-align: text-bottom; } + +/* hand cursor on clickable input elements */ +label, input[type=button], input[type=submit], + button { cursor: pointer; } + + +/* These selection declarations have to be separate. + No text-shadow: twitter.com/miketaylr/status/12228805301 + Also: hot pink. */ +/* +::-moz-selection{ background: #FF5E99; color:#fff; + text-shadow: none; } +::selection { background:#FF5E99; color:#fff; + text-shadow: none; } +*/ + +/* j.mp/webkit-tap-highlight-color */ +a:link { -webkit-tap-highlight-color: #FF5E99; } + + +/* always force a scrollbar in non-IE */ +html { overflow-y: scroll; } + +/* make buttons play nice in IE: + www.viget.com/inspire/styling-the-button-element-in-internet + -explorer/ */ +button { width: auto; overflow: visible; } + +/* bicubic resizing for non-native sized IMG: + code.flickr.com/blog/2008/11/12/on-ui-quality-the-little- + things-client-side-image-resizing/ */ +.ie7 img { -ms-interpolation-mode: bicubic; } + + + +/* + Non-semantic helper classes +*/ + +/* for image replacement */ +.ir { display:block; text-indent:-999em; overflow:hidden; + background-repeat: no-repeat; } + +/* Hide for both screenreaders and browsers + css-discuss.incutio.com/wiki/Screenreader_Visibility */ +.hidden { display:none; visibility:hidden; } + +/* Hide only visually, but have it available for screenreaders + www.webaim.org/techniques/css/invisiblecontent/ + Solution from: j.mp/visuallyhidden - Thanks Jonathan Neal!*/ +.visuallyhidden { position:absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); } + +/* Hide visually and from screenreaders, but maintain layout */ +.invisible { visibility: hidden; } + +/* >> The Magnificent CLEARFIX << */ +.clearfix:after { content: "."; display: block; height: 0; +clear: both; visibility: hidden; } +.clearfix { display: inline-block; } +* html .clearfix { height: 1%; } /* Hides from IE-mac \*/ +.clearfix { display: block; } + +/* + print styles inlined to avoid required HTTP connection + www.phpied.com/delay-loading-your-print-css/ +*/ +@media print { + * { background: transparent !important; +color: #444 !important; text-shadow: none; } + + a, a:visited { color: #444 !important; + text-decoration: underline; } + + a:after { content: " (" attr(href) ")"; } + + abbr:after { content: " (" attr(title) ")"; } + + .ir a:after { content: ""; } /*Don't show links for images*/ + + pre, blockquote { border: 1px solid #999; + page-break-inside: avoid; } + + img { page-break-inside: avoid; } + + @page { margin: 0.5cm; } + + p, h2, h3 { orphans: 3; widows: 3; } + + h2, h3{ page-break-after: avoid; } +} + + + +/* + * Media queries for responsive design + */ + +@media all and (orientation:portrait) { + /* Style adjustments for portrait mode goes here */ + +} + +@media all and (orientation:landscape) { + /* Style adjustments for landscape mode goes here */ + +} + +/* Grade-A Mobile Browsers (Opera Mobile, iPhone Safari, Android Chrome) + Consider this: www.cloudfour.com/css-media-query-for-mobile- + is-fools-gold/ */ +@media screen and (max-device-width: 480px) { + + + /* Prevent iOS, WinMobile from adjusting font size */ + html { -webkit-text-size-adjust:none; + -ms-text-size-adjust:none; } +} + diff --git a/experiment/assignment/css/imgareaselect-default.css b/experiment/assignment/css/imgareaselect-default.css new file mode 100644 index 0000000..18bf07b --- /dev/null +++ b/experiment/assignment/css/imgareaselect-default.css @@ -0,0 +1,41 @@ +/* + * imgAreaSelect default style + */ + +.imgareaselect-border1 { + background: url(border-v.gif) repeat-y left top; +} + +.imgareaselect-border2 { + background: url(border-h.gif) repeat-x left top; +} + +.imgareaselect-border3 { + background: url(border-v.gif) repeat-y right top; +} + +.imgareaselect-border4 { + background: url(border-h.gif) repeat-x left bottom; +} + +.imgareaselect-border1, .imgareaselect-border2, +.imgareaselect-border3, .imgareaselect-border4 { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-handle { + background-color: #fff; + border: solid 1px #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-outer { + background-color: #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-selection { +} \ No newline at end of file diff --git a/experiment/assignment/css/jquery-slider.css b/experiment/assignment/css/jquery-slider.css new file mode 100644 index 0000000..6913f7a --- /dev/null +++ b/experiment/assignment/css/jquery-slider.css @@ -0,0 +1,10 @@ +#sliderContent { position: absolute; left: 0; top: 0; width: 562px ; margin:0; padding:11px; background-color:#2b2b2b; visibility: visible; } +.viewer { width:549px; margin:0; padding:0; overflow:hidden; position:relative; border:0px solid #898989; } +.content-conveyor { width:549px; position:relative; } +.item { width:160px; float:left; text-align:center; image-rendering: -moz-crisp-edges;} +.item h2 { text-align:center; margin:0 0; font-size:14px;} +.item dl { margin:0 0; } +.item dt, .item dd { float:left; width:149px; text-align:center; margin:0; font-size:90%; } +.item dt { margin-right:0px; } +.item dd { text-align:center; } +.item img { border:1px solid #CDCDCD; padding:1px; } diff --git a/experiment/assignment/css/jquery-slider2.css b/experiment/assignment/css/jquery-slider2.css new file mode 100644 index 0000000..e1f661b --- /dev/null +++ b/experiment/assignment/css/jquery-slider2.css @@ -0,0 +1,10 @@ +#sliderContent { position: absolute; left: 0; top: 0; width: 550px ; margin:0; padding:11px; background-color:#2b2b2b; visibility: visible; } +.viewer { width:549px; margin:0; padding:0; overflow:hidden; position:relative; border:0px solid #898989; } +.content-conveyor { width:549px; position:relative; } +.item { width:310px; float:left; text-align:center; image-rendering: -moz-crisp-edges;} +.item h2 { text-align:center; margin:0 0; font-size:14px;} +.item dl { margin:0 0; } +.item dt, .item dd { float:left; width:310px; text-align:center; margin:0; font-size:90%; } +.item dt { margin-right:0px; } +.item dd { text-align:center; } +.item img { border:1px solid #CDCDCD; padding:10px; } diff --git a/experiment/assignment/css/main.css b/experiment/assignment/css/main.css new file mode 100644 index 0000000..20bf42b --- /dev/null +++ b/experiment/assignment/css/main.css @@ -0,0 +1 @@ +/* You CSS goes in here */ \ No newline at end of file diff --git a/experiment/assignment/css/override.css b/experiment/assignment/css/override.css new file mode 100644 index 0000000..eb222c0 --- /dev/null +++ b/experiment/assignment/css/override.css @@ -0,0 +1,6 @@ +span.term { + font-family: monospace; + font-style: normal; + font-weight: bold; + color: #556B2F; +} diff --git a/experiment/assignment/css/psd2css.css b/experiment/assignment/css/psd2css.css new file mode 100644 index 0000000..591a885 --- /dev/null +++ b/experiment/assignment/css/psd2css.css @@ -0,0 +1,300 @@ +/* + * psd2css.css + * + * This is your external CSS style sheet. It defines all of the CSS styles that you + * are using in your page. If you are going to create multiple pages from the same + * PSD file (like a template), you will share this CSS style sheet between the various + * pages. + * + * This file was originally generated at http://psd2cssonline.com + * September 16, 2010, 10:04 am with psd2css Online version 1.85 + * + */ + + +.front { +color: black; +} + +body { + margin: 0; + padding: 0; + font-family: Verdana; + text-align: left; + font-size: 12px; + color: #c2c2c2; + background-color: #171717; +// background-image:url("../images/bck.png"); + background-repeat: repeat; +} + +.imageFull { + position: absolute; + left: 105px; + top: 54px; + max-height: 700px; + min-height: 100px; + min-width: 100px; + max-width: 700px; + z-index: 25; + background-color: #171717; + padding: 10px; + border: solid 2px white; + +} +.wrapper { + height: 100%; + width: 100%; + position: absolute; + top: 110px; +z-index: 13; +margin: auto; + +} + +.experiment { + padding: 15px; + overflow: auto; + margin: 30px; + border: dashed 2px grey; + z-index: 12; + height: auto; + font-size:14px; +background-color: #222222; +line-height: 150%; +} + +#popUp { + position: absolute; + left: 200px; + top: 200px; + z-index: 22; + background-color: #171717; + padding: 10px; + border: solid 2px grey; +} + +h1 { +font-size: 23px; +font-weight: normal; +} + +input[type="text"] { + background: transparent; + border-width: 0; + color: #FFFFFF; +} + +/* You named this layer Backgound_bkgnd_center_jpg */ +#Layer-1 { + position: absolute; + margin-left: -462.5px; + left: 50%; + top: +0px; + width: 925px; + height: 627px; + z-index: 1; +} + + +/* You named this layer Parameters_jpg */ +#Layer-2 { + position: absolute; + left: 14px; + top: 123px; + width: 289px; + height: 282px; + z-index: 2; +} + +.Parameters { + line-height: 20px; + border: dashed grey 1px; + padding: 0px 20px 20px 10px; + margin: 10px; +} + +h3 { + font-size: 12px; + line-height: 30px; + + padding: 0; + margin: 15px 0 0 -10px; +} + + + + +/* You named this layer TopBar_jpg */ +#Layer-3 { + position: absolute; + left: 14px; + top: 11px; + width: 894px; + height: 96px; + z-index: 3; +} + +/* You named this layer InputLayer_jpg */ +#Layer-4 { +image-rendering: -moz-crisp-edges; + + position: absolute; + left: 325px; + top: 124px; + width: 281px; + height: 281px; + z-index: 4; + border: 2px solid #DEE01F; +} + +#Listlayer { +image-rendering: -moz-crisp-edges; + + position: absolute; + left: 325px; + top: 124px; + width: 575px; + height: 450px; + z-index: 4; + border: 2px solid #DEE01F; +} + +/* You named this layer outputLayer_jpg */ +#Layer-5 { +image-rendering: -moz-crisp-edges; + + position: absolute; + left: 627px; + top: 124px; + width: 281px; + height: 281px; + z-index: -1; + margin:0 auto; + overflow: hidden; + border: 2px solid #57AEFF; +} + +#nextBox { + margin: 1em; + padding: 1em; + border: dashed grey 1px; + } + +/* You named this layer IIIT */ +#Layer-6 { + position: absolute; + left: 30px; + top: 5px; + width: 100px; + height: 80px; + z-index: 6; +} + +#topMenu { + position: absolute; + left: 150px; + top: 0; + width: 744px; + height: 59px; + z-index: 99; +} + +#imgInfo { + position: absolute; + left: 330px; + top: 410px; + z-index: 12; + } + +#ruler1{position: absolute; top: 1px;left: 298px;width: 281px; border-left:1px solid white; border-right: 1px solid white; height: 25px;} +#ruler1 ee{float:left;width:0in;border-left:1px solid white;height:10px;padding:0;margin:0;margin-bottom:14px;} +#ruler1 e2{float:left;width:0in;border-left:1px solid white;height:13px;padding:0;margin:0;margin-bottom:14px; text-align: center;} +#ruler1 mm{float:left;width:17.5px;height:20px;padding:0;margin:0;vertical-align:top;} +#ruler1 tt{position: absolute; top: 15px; color: white;} + +#ruler2{position: absolute; top: 125px;right: -20px;width: 30px; border-top:1px solid white; border-bottom: 1px solid white; height: 281px; z-index: 24;} +#ruler2 ee{float:left;width:10px;border-top:1px solid white;height:0px;padding:0;margin:0;margin-right:14px;} +#ruler2 e2{float:left;width:10px;border-top:1px solid white;height:0px;padding:0;margin:0;margin-right:14px} +#ruler2 mm{float:left;height:17.5px;width:20px;padding:0;margin:0;vertical-align:top;} +#ruler2 tt{position: absolute; left: 15px; color: white;} + + + + +#zoom { + position: absolute; + left: 800px; + right: 20px; + top: 425px; + z-index: 11; + } + +/* You named this layer Thumbnails_jpg */ +#Layer-7 { + position: absolute; + left: 325px; + top: 480px; + width: 584px; + height: 184px; + z-index: 7; +} + +/* You named this layer Mosaic_jpg */ +#Mosaic { +image-rendering: -moz-crisp-edges; + + position: absolute; + left: 185px; + top: 54px; + width: 513px; + height: 513px; + z-index: 20; +} + +/* Here are some examples of how you might want to change the + * look and behavior of the links on your page. Some examples for + * further customization are included in comments. */ +a { + cursor: pointer; + outline: none; +} +a:link { color: #888888; } +a:visited { color: #888888; } +a:hover { + color: #F00; + /* text-decoration: underline; */ + /* font-weight: bold; */ +} + +.transdiv { + filter:alpha(opacity=40); + -moz-opacity:0.40; + -khtml-opacity: 0.40; + opacity: 0.40; + } + +.highlight { + color: red; + } + +#para_pop { +width: 200px; + line-height: 20px; + border: solid red 1px; + padding: 0px 20px 20px 10px; + margin: 10px; +z-index: 50; +display: none; +position: absolute; +left: 300px; + + background-color: #171717; +} + +.home { +position: absolute; +right: 10px; +top: 39px; +font-weight: normal; +} diff --git a/experiment/assignment/css/style-main.scss b/experiment/assignment/css/style-main.scss new file mode 100644 index 0000000..0e41334 --- /dev/null +++ b/experiment/assignment/css/style-main.scss @@ -0,0 +1,3034 @@ +/*----------------------------------------*/ +/* CSS +/*----------------------------------------*/ + +html, body { + height: 100%; +} + +.floatleft { + float: left; +} + +.floatright { + float: right; +} + +.alignleft { + float: left; + margin-right: 15px; + margin-bottom: 15px; +} + +.alignright { + float: right; + margin-left: 15px; + margin-bottom: 15px; +} + +.aligncenter { + display: block; + margin: 0 auto 15px; +} + +a:focus { + outline: 0px solid; +} + +img { + max-width: 100%; + height: auto; +} + +.fix { + overflow: hidden; +} + +p { + margin: 0 0 15px; + font-size:17.5px; +} +li{ + font-size:17.5px; + line-height:1.6; +} +i{ + font-size:16px; + line-height:1.6; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Open Sans', sans-serif; + margin: 0 0 15px; + /*color: #444;*/ + font-weight: 500; +} + +h1 { + font-size: 48px; + line-height: 50px; +} + +h2 { + font-size: 38px; + line-height: 40px; +} + +h3 { + font-size: 30px; + line-height: 32px; +} + +h4 { + font-size: 24px; + line-height: 26px; +} + +h5 { + font-size: 20px; + line-height: 22px; +} + +h6 { + font-size: 16px; + line-height: 20px; +} + +a { + transition: all 0.3s ease 0s; + text-decoration: none; +} + +a:hover { + color: #3EC1D5; + text-decoration: none; +} + +a:active, a:hover { + outline: 0 none; +} + +body { + background: #fff none repeat scroll 0 0; + color: #444; + font-family: 'Open Sans', sans-serif; + font-size: 14px; + text-align: left; + overflow-x: hidden; + line-height: 22px; +} + +/* Back to top button */ +.back-to-top { + position: fixed; + display: none; + background: #3EC1D5; + color: #fff; + padding: 6px 12px 9px 12px; + font-size: 16px; + border-radius: 2px; + right: 15px; + bottom: 15px; + transition: background 0.5s; +} + +@media (max-width: 768px) { + .back-to-top { + bottom: 15px; + } +} + +.back-to-top:focus { + background: #3EC1D5; + color: #fff; + outline: none; +} + +.back-to-top:hover { + background: #3cd6ed; + color: #fff; +} + +.clear { + clear: both; +} + +ul { + list-style: outside none none; + margin: 0; + padding: 0; +} + +input, select, textarea, input[type="text"], input[type="date"], input[type="url"], input[type="email"], input[type="password"], input[type="tel"], button, button[type="submit"] { + -moz-appearance: none; + box-shadow: none !important; +} + +div#preloader { + position: fixed; + left: 0; + top: 0; + z-index: 99999; + width: 100%; + height: 100%; + overflow: visible; + background: #fff url('../img/preloader.gif') no-repeat center center; +} + +::-moz-selection { + background: #3EC1D5; + text-shadow: none; +} + +::selection { + background: #3EC1D5; + text-shadow: none; +} + +.area-padding { + /* padding: 31px 0px 80px;*/ +} + +.area-padding-2 { + padding: 70px 0px 50px; +} + +.padding-2 { + padding-bottom: 90px; +} + +.section-headline h2 { + display: inline-block; + font-size: 40px; + /*font-weight: 600;*/ + margin-bottom: 59px; + margin-top:42px; + position: relative; + text-transform: capitalize; +} + +.section-headline h2::after { + border: 1px solid #333; + bottom: -20px; + content: ""; + left: 0; + margin: 0 auto; + position: absolute; + right: 0; + width: 40%; +} + +.sec-head { + display: inline-block; + font-size: 17px; + font-weight: 600; + margin-bottom: 0; + padding: 0 0 10px; + text-transform: uppercase; + transition: all 0.4s ease 0s; +} + +/*--------------------------------*/ + +/* 2. Header top Area +/*--------------------------------*/ + +.header-area { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: auto; + background-color:#fff; + /*background: rgba(0, 0, 0, 0.40);*/ + z-index: 9; +} + +.navbar-header a.navbar-brand { + display: inline-block; + height: 90px; + /* padding: 15px 0;*/ +} + +.main-menu ul.navbar-nav li { + display: inline-block; + padding: 0px 13px; +} + +.main-menu ul.navbar-nav li a { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + color: #a7a9ab; + font-size: 15px; + font-weight: 500; + padding: 24px 0px; + text-transform: capitalize; + letter-spacing: 1px; +} + +.main-menu ul.navbar-nav li.active a::after { + border: 1px solid #3cd6ed; + bottom: 0px; + content: ""; + left: 0; + position: absolute; + width: 100%; +} + +.main-menu ul.navbar-nav li.active a:hover { + background: none; + color: #3EC1D5; +} + +.main-menu ul.navbar-nav li.active a:focus { + color: #3cd6ed; +} + +.main-menu ul.navbar-nav li.active a { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + color: #a7a9ab; + position: relative; +} + +.main-menu ul.navbar-nav li a:hover { + color: #3EC1D5; +} + +.navbar { + border: medium none; + margin-bottom: 0; +} + +.navbar-default { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; +} + +.main-menu ul.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus { + background: none; + color: #333; +} + +.navbar-default .navbar-toggle { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + + border: medium none; + border-radius: 0; + padding: 25px 0px; +} + +.navbar-default .navbar-nav>li>a:hover, .navbar-default .navbar-nav>li>a:focus { + background-color: transparent; + color: #a7a9ab; +} + +.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { + background: none; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + width: 30px; + height: 2px; +} + +.top-right.text-right { + float: right; + position: relative; + top: 24px; + margin-left: 20px; +} + +.top-right.text-right>li { + float: right; + margin: 0px 8px; +} + +.top-right.text-right li a { + color: #fff; +} + +/*--------------------------------*/ + +/* menu +/*--------------------------------*/ + +.header-area.stick { + /*background-color: rgba(0, 0, 0, 1);*/ + background-color:#fff; + height: 90px; + position: fixed; + top: 0; + width: 100%; + z-index: 999999; +} + +.stick .navbar-header a.navbar-brand { + display: inline-block; + height: 90px; +} + +.stick .navbar-brand>img { + display: none; +} + +.stick .navbar-brand.sticky-logo>img { + display: block; +} + +.sticky-logo h1 { + color: #fff; + padding: 0; + margin: 0; + font-size: 36px; + font-weight: bold; + line-height: 1; +} + +.sticky-logo h1 span { + color: #3ec1d5; +} +.stick .main-menu ul.navbar-nav li.active a::after { + border: 1px solid #3EC1D5; + bottom: 0px; + content: ""; + left: 0; + position: absolute; + width: 100%; +} + +.stick .main-menu ul.nav>li>a:hover { + color: #3EC1D5; +} + +.stick .main-menu ul.navbar-nav li.active a { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + color: #3EC1D5; + position: relative; +} + +.stick .mainmenu ul#nav>li:hover>a, .stick .mainmenu ul#nav li .mega-menu, .stick .mainmenu ul#nav li ul.sub-menu { + background-color: #f5f5f5; + color: #fff; + outline: medium none; +} + +.stick .mainmenu ul#nav li:hover ul.sub-menu li a:hover, .mainmenu ul#nav li .mega-menu span>a:hover, .stick .mainmenu ul#nav li .mega-menu-shop a.mega-menu-title:hover { + color: #fff; +} + +.stick .logo { + height: 20px; +} + +.stick .logo a { + margin-top: 0px; +} + +.stick .main-menu ul.nav>li>a { + color: #a7a9ab; + line-height: 22px; + padding: 24px 0px; + text-transform: capitalize; + letter-spacing: 1px; +} + +.stick .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + width: 30px; + height: 2px; +} + +.stick .navbar-default .navbar-toggle { + padding: 10px 0px; +} + + +/*--------------------------------*/ + +/* Services +/*--------------------------------*/ + +.services-icon { + color: #444; + display: inline-block; + font-size: 36px; + line-height: 36px; + margin-bottom: 20px; +} + +.section-headline.services-head>h2 { + margin-bottom: 25px; +} + +.services-details { + padding-top: 40px; + transition: all 0.5s ease 0s; + padding-top: 20px; +} + +.services-details:hover h4, .services-details:hover .services-icon { + color: #3EC1D5; +} + +.row.second-row { + margin-top: 40px; +} + +.section-head>h2 { + color: #333; +} + +.single-services>h4 { + color: #444; + font-size: 24px; + font-weight: 500; +} + +.single-services>p { + color: #333; + font-size: 14px; +} + +/*---------------------------------------- + Skill Area +----------------------------------------*/ + +.our-skill-area { + position: relative; +} + +.our-skill-area { + background: rgba(248, 248, 248, 0.8) url("../img/background/bg1.jpg") no-repeat fixed center top / cover; +} + +.test-overly { + background: rgba(0, 0, 0, 0.80); + position: absolute; + width: 100%; + height: 100%; +} + +.progress-h4 { + color: #fff; + font-weight: 500; +} + + +/*---------------------------------------- + Css +----------------------------------------*/ + +.wellcome-area { + background: rgba(248, 248, 248, 0.8) url("../img/background/bg1.jpg"); + background-size: cover; + background-position: center top; + background-repeat: no-repeat; + background-attachment: fixed; +} + +.well-bg { + position: relative; +} + +.wellcome-text { + /* margin: 70px 0;*/ + padding: 30px 40px; +} + +.well-text>h2 { + color: #fff; + font-size: 44px; + font-weight: 500; + line-height: 50px; +} + +.well-text p { + font-size: 18px; + font-style: italic; + color: #fff; +} + +.wellcome-text .section-headline p { + margin-bottom: 0; +} + +.subs-feilds { + border: 1px solid #fff; + display: inline-block; + height: 52px; + margin-top: 30px; + width: 60%; + border-radius: 30px; + overflow: hidden; +} + +.suscribe-input input { + background: transparent none repeat scroll 0 0; + border: medium none; + color: #fff; + float: left; + font-size: 15px; + line-height: 24px; + padding: 11px 15px; + width: 70%; + height: 50px; +} + +.suscribe-input button { + background: #3ec1d5 none repeat scroll 0 0; + border: medium none; + border-radius: 0 20px 20px 0; + color: #fff; + float: left; + font-size: 20px; + font-weight: 700; + padding: 14px 20px; + width: 30%; +} + +.suscribe-input button:hover { + background: #fff none repeat scroll 0 0; + color: #3ec1d5; +} + +/*---------------------------------------- + career section +----------------------------------------*/ + +.team-member { + background: rgba(0, 0, 0, 0.65) none repeat scroll 0 0; + display: block; + margin-right: -15px; + padding: 10px; + position: relative; + overflow: hidden; +} + +.team-member::before { + background: rgba(0, 0, 0, 0) url("../img/team/team01.jpg") repeat scroll 0 0; + content: ""; + display: block; + height: 100%; + left: 0; + margin-right: -15px; + padding: 10px; + position: absolute; + top: 0; + width: 100%; + z-index: -1; + background-repeat: no-repeat; + background-size: cover; + background-position: top center; + transition: 5s; + transform: scale(1); +} + +.team-member:hover.team-member::before { + transform: scale(1.2); +} + +.single-team-member { + border: 1px solid #ddd; +} + +.team-left-text h4 { + color: #fff; + font-size: 30px; + font-weight: 700; + text-transform: uppercase; +} + +.team-left-text p { + color: #fff; + font-size: 17px; + line-height: 26px; +} + +.email-news { + display: block; + margin: 30px 0; + overflow: hidden; + text-align: center; + width: 100%; +} + +.email-news .email_button input { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + border: 1px solid #fff; + color: #fff; + float: left; + font-size: 13px; + padding: 8px; + width: 81%; +} + +.email-news .email_button>button { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + border: 1px solid #fff; + color: #fff; + float: left; + font-size: 16px; + padding: 8px 12px; + text-align: center; +} + +.email-news .email_button>button:hover { + background: #3EC1D5; + border: 1px solid #fff; + color: #fff; +} + +.team-left-icon ul li { + display: inline-block; +} + +.team-left-icon ul li a:hover { + color: #3EC1D5; + background: #fff; + border: 2px solid #fff; +} + +.team-left-icon ul li a { + border: 2px solid #fff; + color: #fff; + display: block; + font-size: 16px; + height: 40px; + line-height: 37px; + margin: 0 3px; + width: 40px; +} + +.team-member-carousel .single-team-member { + overflow: hidden; + width: 100%; +} + +.single-team-member:hover .team-img a:after { + opacity: 1; +} + +.single-team-member:hover .team-social-icon { + top: 45%; + opacity: 1; +} + +.team-img { + position: relative; +} + +.team-img>a { + display: block; +} + +.team-img>a::after { + background: rgba(0, 0, 0, 0.70); + bottom: 0; + content: ""; + height: 100%; + left: 0; + position: absolute; + transition: all 0.5s ease 0s; + width: 100%; + opacity: 0; +} + +.team-social-icon { + left: 50%; + margin-left: -61px; + opacity: 0; + position: absolute; + top: 30%; + transition: 1.3s; +} + +.team-social-icon ul li { + display: inline-block; +} + +.team-social-icon ul li a { + border: 1px solid #fff; + border-radius: 50%; + color: #fff; + display: block; + font-size: 14px; + height: 34px; + line-height: 35px; + margin: 0 3px; + width: 34px; +} + +.team-social-icon ul li a:hover { + color: #fff; + border: 1px solid #3EC1D5; + background: #3EC1D5; +} + +.team-content { + padding: 10px 0px; +} + +.team-content>h4, .team-content>p { + color: #444; + margin-bottom: 5px; +} + +.team-content.head-team p { + margin-bottom: 0; +} + +.team-left-icon.text-center { + margin-bottom: 20px; +} + +.head-team h4 { + display: inline-block; + font-size: 25px; + font-weight: 600; + padding-bottom: 10px; + text-transform: uppercase; +} + + + + + + +#top { + display: grid; + min-height: 100%; + grid-template-rows: max-content auto max-content; +} + + + + + + + +/*-------------------------------------------------------------- +# Footer +--------------------------------------------------------------*/ + +#footer { + background: #000; + color: #eee; + font-size: 14px; +} + +#footer .footer-top { + background: #111; + /*padding: 60px 0 30px 0;*/ + padding: 15px 0 0px 0; +} + +#footer .footer-top .footer-info h3 { + font-size: 34px; + margin: 0 0 20px 0; + padding: 2px 0 2px 10px; + line-height: 1; + font-family: "Open Sans", sans-serif; + font-weight: 700; + letter-spacing: 3px; + border-left: 4px solid #18d26e; +} + +#footer .footer-top p { + font-size: 1.4rem; + margin-bottom: 0; + color: #eee; +} + +#footer .footer-top .social-links a { + font-size: 18px; + display: inline-block; + background: #333; + color: #eee; + line-height: 1; + padding: 8px 0; + margin-right: 4px; + border-radius: 50%; + text-align: center; + width: 36px; + height: 36px; + transition: 0.3s; +} + +#footer .footer-top .social-links a:hover { + background: #3cd6ed; + color: #fff; +} + +#footer .footer-top h4 { + font-size: 14px; + color: #fff; + position: relative; + padding-bottom: 12px; +} + +#footer .footer-top h4::before, #footer .footer-top h4::after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + height: 2px; +} + +#footer .footer-top h4::before { + right: 0; + background: #555; +} + +#footer .footer-top h4::after { + background: #3EC1D5; + width: 60px; +} +#footer .footer-top i { + color:#fff; +} + +#footer .footer-top a { + color:#fff; +} + +/*-------------------------------------------------------------- +# Intro Section +--------------------------------------------------------------*/ +#intro { + + width: 100%; + + /* background: #000; + display: table; + height: 100vh; + */ +} + +#intro .carousel-item { + width: 100%; + /* height: 100vh;*/ + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +#intro .carousel-item::before { + content: ''; + background-color: rgba(0, 0, 0, 0.4); + position: absolute; + height: 100%; + width: 100%; + top: 0; + right: 0; + left: 0; + bottom: 0; +} + +#intro .carousel-container { + display: flex; + justify-content: left; + align-items: center; + position: absolute; + bottom: 0; + top: 0; + left: 0; + right: 0; +} + +#intro .carousel-content { + text-align: left; + padding-top:220px; +} + +#intro h2 { + color: #fff; + margin-bottom: 30px; + font-size: 48px; + font-weight: 700; +} + +@media (max-width: 768px) { + #intro h2 { + font-size: 28px; + } +} + +#intro p { + width: 100%; + margin: 0 auto 30px auto; + color: #fff; +} + +@media (min-width: 1024px) { + #intro p { + width: 100%; + font-size:45px; + } +} + +#intro .carousel-fade .carousel-inner .carousel-item { + -webkit-transition-property: opacity; + transition-property: opacity; +} + +#intro .carousel-fade .carousel-inner .carousel-item, +#intro .carousel-fade .carousel-inner .active.carousel-item-left, +#intro .carousel-fade .carousel-inner .active.carousel-item-right { + opacity: 0; +} + +#intro .carousel-fade .carousel-inner .active, +#intro .carousel-fade .carousel-inner .carousel-item-next.carousel-item-left, +#intro .carousel-fade .carousel-inner .carousel-item-prev.carousel-item-right { + opacity: 1; + transition: 0.5s; +} + +#intro .carousel-fade .carousel-inner .carousel-item-next, +#intro .carousel-fade .carousel-inner .carousel-item-prev, +#intro .carousel-fade .carousel-inner .active.carousel-item-left, +#intro .carousel-fade .carousel-inner .active.carousel-item-right { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +#intro .carousel-control-prev, #intro .carousel-control-next { + width: 10%; +} + +@media (min-width: 1024px) { + #intro .carousel-control-prev, #intro .carousel-control-next { + width: 5%; + } +} + +#intro .carousel-control-next-icon, #intro .carousel-control-prev-icon { + background: none; + font-size: 32px; + line-height: 1; +} + +#intro .carousel-indicators li { + cursor: pointer; +} + +#intro .btn-get-started { + font-family: "Open Sans", sans-serif; + font-weight: 500; + font-size: 16px; + letter-spacing: 1px; + display: inline-block; + padding: 8px 32px; + border-radius: 50px; + transition: 0.5s; + margin: 10px; + color: #fff; + background: #18d26e; +} + +#intro .btn-get-started:hover { + background: #fff; + color: #18d26e; +} + +.downArrow{ + position: absolute; + bottom: 0%; + left: 50%; +} +.bounce { + -moz-animation: bounce 3s infinite; + -webkit-animation: bounce 3s infinite; + animation: bounce 3s infinite; +} +@-moz-keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + -moz-transform: translateY(0); + transform: translateY(0); + } + 40% { + -moz-transform: translateY(-30px); + transform: translateY(-30px); + } + 60% { + -moz-transform: translateY(-15px); + transform: translateY(-15px); + } +} +@-webkit-keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + 40% { + -webkit-transform: translateY(-30px); + transform: translateY(-30px); + } + 60% { + -webkit-transform: translateY(-15px); + transform: translateY(-15px); + } +} +@keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -webkit-transform: translateY(0); + transform: translateY(0); + } + 40% { + -moz-transform: translateY(-30px); + -ms-transform: translateY(-30px); + -webkit-transform: translateY(-30px); + transform: translateY(-30px); + } + 60% { + -moz-transform: translateY(-15px); + -ms-transform: translateY(-15px); + -webkit-transform: translateY(-15px); + transform: translateY(-15px); + } +} + +/* the blue circle with only one line of text, centered vertically */ +.oneline:after { + content: ""; + display: block; + width: 100%; + height: 0; + padding-bottom: 100%; + background: cadetblue; + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + border-radius: 50%; +} +.oneline:hover:after { + background-color: #3EC1D5; +} +.oneline div { + float: left; + width: 100%; + padding-top: 19%; + line-height: 1em; + margin-top: -1.7em; + text-align: center; + color: white; +} +.oneline p { + text-align: center; + font-size: 1.2em; +} + +@media only screen and (min-width: 350px) { + .col { + display: inline-block; + position: relative; + width: 100%; + margin: 4% 0 5% 9%; + padding: 0; + background-color: transparent; + border-top: none; + height:260px; + } + .col .spacer { + position: relative; + padding-top: 100%; + } + .col:nth-child(3n+1) { + margin-left: 1%; + } + + .circle { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: powderblue; + color: #333; + border-radius: 50%; + box-sizing: border-box; + text-align: center; + display: block; + padding: 5px; + border: 5px solid #9dd8e0; + -webkit-transition: all 1s ease-out; + -moz-transition: all 1s ease-out; + -o-transition: all 1s ease-out; + transition: all 1s ease-out; + } + .circle:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; + margin-right: -2%; + } + .circle:hover { + /* background-color: #a7a9ab;*/ + background-color:#3EC1D5; + border: 5px solid #444; + color: #fff; + } +/*new class added for text hover*/ + .circle:hover h4{ + /* background-color: #a7a9ab;*/ + background-color:#3EC1D5; + + color: #fff; + } + + .outline { + border: 5px solid grey; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + border-radius: 50%; + box-sizing: border-box; + } + + .circle h1 { + font-size: 0.9em; + line-height: 1em; + } + .circle p { + font-size: 0.8em; + line-height: 1em; + color: white; + text-align: center; + } + .circle a { + color: inherit; + } + .circle > p, .circle > h1, .circle > .wrapcontent { + display: inline-block; + vertical-align: middle; + } + .circle > p > p, .circle > p > h1, .circle > h1 > p, .circle > h1 > h1, .circle > .wrapcontent > p, .circle > .wrapcontent > h1 { + display: block; + } +} +@media only screen and (min-width: 481px) { + .circle h1 { + font-size: 1.2em; + line-height: 1em; + } + .circle p { + font-size: 1em; + line-height: 1em; + } +} +@media only screen and (min-width: 768px) { + .circle h1 { + font-size: 1.6em; + line-height: 1em; + } + .circle p { + font-size: 1.2em; + line-height: 1em; + } +} + + +/*Accordian*/ + +.accordion { + width: 100%; + max-width: 1080px; + height: 250px; + overflow: hidden; + margin: 50px auto; + +} +.accordion ul { + width: 100%; + display: table; + table-layout: fixed; + margin: 0; + padding: 0; + +} +.accordion ul li { + display: table-cell; + vertical-align: bottom; + position: relative; + width: 16.666%; + height: 250px; + background-repeat: no-repeat; + background-position: center center; + transition: all 500ms ease; +} +.accordion ul li div { + display: block; + overflow: hidden; + width: 100%; + padding:32px; +height: 287px; +margin-top: -124px; +} +.accordion ul li div a{ + display: block; + /*height: 250px;*/ + width: 100%; + position: relative; + z-index: 3; + vertical-align: bottom; + /* padding: 15px 20px;*/ + box-sizing: border-box; + color: #fff; + text-decoration: none; + font-family: Open Sans, sans-serif; + transition: all 200ms ease; + +} +.accordion ul li div a * { + opacity: 0; + margin: 0; + width: 100%; + text-overflow: ellipsis; + position: relative; + z-index: 5; + white-space: nowrap; + overflow: hidden; + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + -webkit-transition: all 400ms ease; + transition: all 400ms ease; +} +.accordion ul li div a h2 { + font-family: Montserrat,sans-serif; + text-overflow: clip; + font-size: 24px; + text-transform: uppercase; + margin-bottom: 2px; + /*top: 160px;*/ +} +.accordion ul li div a p { + /* top: 160px; + font-size: 13.5px;*/ + font-size: 16px; + line-height:2.2; + +} +.accordion ul li:nth-child(1) { + + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); +} +.accordion ul li:nth-child(2) { + + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); +} +.accordion ul li:nth-child(3) { + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); + +} +.accordion ul li:nth-child(4) { + + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); +} +.accordion ul li:nth-child(5) { + + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); +} +.accordion ul li:nth-child(6) { + /* background-image: url("http://michael-ferry.com/assets/accordion6.jpg");*/ +} +.accordion ul:hover li { + width: 8%; +} +.accordion ul:hover li:hover { + width: 60%; +} +.accordion ul:hover li:hover a { + /*background: rgba(0, 0, 0, 0.4);*/ +} +.accordion ul:hover li:hover a * { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); +} + +@media screen and (max-width: 600px) { + body { + margin: 0; + } + + .accordion { + /*height: auto;*/ +} + .accordion ul li, .accordion ul li:hover, .accordion ul:hover li, .accordion ul:hover li:hover { + position: relative; + display: table; + table-layout: fixed; + width: 100%; + -webkit-transition: none; + transition: none; +} +} +.about { + text-align: center; + font-family: 'Open Sans', sans-serif; + font-size: 12px; + color: #666; +} +.about a { + color: blue; + text-decoration: none; +} +.about a:hover { + text-decoration: underline; +} +/*accordion ends here*/ + + + +/*logo line*/ +.vline { + border-left: 2px solid #a7a9ab; +height: 62px; +position: absolute; +/*left: 10.5%;*/ +margin-left: -3px; +top: 15px; +} +/*logo line ends here*/ + + +/* style.scss */ + + +// Fonts +@import url(https://fonts.googleapis.com/css?family=Open+Sans); +@import url(https://fonts.googleapis.com/css?family=Montserrat:700); + +// Accordion Height +$a-height: 250px; + +// Position text along bottom +$text-offset: $a-height - 90; + +// Page Title +h1 { + + text-align:center; + font-family:Montserrat,sans-serif; + color:#333; + +} + +.accordion { + + width:100%; + max-width:1080px; + height:$a-height; + overflow:hidden; + margin:50px auto; + + ul { + + width:100%; + display:table; + table-layout:fixed; + margin:0; + padding:0; + + li { + + display:table-cell; + vertical-align:bottom; + position: relative; + width:16.666%; // 6 into 100 + height:$a-height; + + background-repeat:no-repeat; + background-position:center center; + + transition:all 500ms ease; + + div { + + display:block; + overflow:hidden; + width:100%; + + a { + + display:block; + height:$a-height; + width:100%; + + position:relative; + z-index:3; + vertical-align:bottom; + padding:15px 20px; + box-sizing:border-box; + color:#fff; + text-decoration:none; + font-family:Open Sans, sans-serif; + + transition:all 200ms ease; + + * { + + opacity:0; + margin:0; + width:100%; + text-overflow:ellipsis; + position:relative; + z-index:5; + + white-space:nowrap; + overflow:hidden; + + -webkit-transform:translateX(-20px); + transform:translateX(-20px); + + -webkit-transition:all 400ms ease; + transition:all 400ms ease; + + } + + h2 { + + font-family:Montserrat,sans-serif; + text-overflow:clip; + font-size:24px; + text-transform:uppercase; + margin-bottom:2px; + + top:$text-offset; + + } + + p { + + top:$text-offset; + font-size:13.5px; + + } + + } + + } + + } + + // Background images + li:nth-child(1) { background-image:url('http://michael-ferry.com/assets/accordion1.jpg'); } + li:nth-child(2) { background-image:url('http://michael-ferry.com/assets/accordion2.jpg'); } + li:nth-child(3) { background-image:url('http://michael-ferry.com/assets/accordion3.jpg'); } + li:nth-child(4) { background-image:url('http://michael-ferry.com/assets/accordion4.jpg'); } + li:nth-child(5) { background-image:url('http://michael-ferry.com/assets/accordion5.jpg'); } + li:nth-child(6) { background-image:url('http://michael-ferry.com/assets/accordion6.jpg'); } + + &:hover li, + &:focus-within li { width:8%; } + + li:focus { + outline: none; + } + + &:hover li:hover, + // allow users to tab through active slides + li:focus, + &:focus-within li:focus { + + width:60%; + + a { + + background:rgba(0,0,0,.4); + + * { + + opacity:1; + -webkit-transform:translateX(0); + transform:translateX(0); + + } + + } + + } + + &:hover li { + width: 8% !important; + + a * { opacity: 0 !important; } + } + + &:hover li:hover { + width:60% !important; + + a { + + background:rgba(0,0,0,.4); + + * { + + opacity:1 !important; + -webkit-transform:translateX(0); + transform:translateX(0); + + } + + } + } + + } + +} + +// Stack items +@media screen and (max-width: 600px) { + + // IE gets fussy if this isn't here + body { margin:0; } + + .accordion { + + height:auto; + + ul,ul:hover { + + li,li:hover { + + position:relative; + display:table; + table-layout:fixed; + width:100%; + + -webkit-transition:none; + transition:none; + + } + + } + + } + +} + +.about { + + text-align:center; + font-family:'Open Sans', sans-serif; + font-size:12px; + color:#666; + + a { + + color:blue; + text-decoration:none; + + &:hover { text-decoration:underline; } + + } + +} + +/* style.css */ + +/* +Theme Name: Vlabs +Theme URI: http://www.vlabs.ac.in +Author: Vlabs.co.in +Author URI: http://www.vlabs.ac.in +Description: The theme to accompany the profile site for vlabs.ac.in +Version: 1.0 +*/ +@import url(https://fonts.googleapis.com/css?family=Raleway:400,300,700,500,600); +body { + overflow-x: hidden; + font-family:'Raleway' !important; +} + +p { + font-size: 16px; +} + +/*** Calendar **********************/ +.content .container-fluid div.calender { position: relative; } + +.container-fluid .calender table { +cursor:pointer; +border:1px solid #ccc; +font-size: 11px; +color: #000; +background: #fff; +font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; +} + +.container-fluid .calender .button { +text-align: center; +padding: 2px; +} + +.container-fluid .calender .nav { +background:#f5f5f5; +} + +.container-fluid .calender thead .title { +font-weight: bold; +text-align: center; +background: #dedede; +color: #000; +padding: 2px 0 3px 0; +} + +.container-fluid .calender thead .headrow { +background: #f5f5f5; +color: #444; +font-weight:bold; +} + +.container-fluid .calender thead .daynames { +background: #fff; +color:#333; +font-weight:bold; +} + +.container-fluid .calender thead .name { +border-bottom: 1px dotted #ccc; +padding: 2px; +text-align: center; +color: #000; +} + +.container-fluid .calender thead .weekend { +color: #666; +} + +.container-fluid .calender thead .hilite { +background-color: #444; +color: #fff; +padding: 1px; +} + +.container-fluid .calender thead .active { +background-color: #d12f19; +color:#fff; +padding: 2px 0px 0px 2px; +} + + +.container-fluid .calender tbody .day { +width:1.8em; +color: #222; +text-align: right; +padding: 2px 2px 2px 2px; +} +.container-fluid .calender tbody .day.othermonth { +font-size: 80%; +color: #bbb; +} +.container-fluid .calender tbody .day.othermonth.oweekend { +color: #fbb; +} + +.container-fluid .calender table .wn { +padding: 2px 2px 2px 2px; +border-right: 1px solid #000; +background: #666; +} + +.container-fluid .calender tbody .rowhilite td { +background: #FFF1AF; +} + +.container-fluid .calender tbody .rowhilite td.wn { +background: #FFF1AF; +} + +.container-fluid .calender tbody td.hilite { +padding: 1px 1px 1px 1px; +background:#444 !important; +color:#fff !important; +} + +.container-fluid .calender tbody td.active { +color:#fff; +background: #529214 !important; +padding: 2px 2px 0px 2px; +} + +.container-fluid .calender tbody td.selected { +font-weight: bold; +border: 1px solid #888; +padding: 1px 1px 1px 1px; +background: #f5f5f5 !important; +color: #222 !important; +} + +.container-fluid .calender tbody td.weekend { +color: #666; +} + +.container-fluid .calender tbody td.today { +font-weight: bold; +color: #529214; +background:#D9EFC2; +} + +.container-fluid .calender tbody .disabled { color: #999; } + +.container-fluid .calender tbody .emptycell { +visibility: hidden; +} + +.container-fluid .calender tbody .emptyrow { +display: none; +} + +.container-fluid .calender tfoot .footrow { +text-align: center; +background: #556; +color: #fff; +} + +.container-fluid .calender tfoot .ttip { +background: #222; +color: #fff; +font-size:10px; +border-top: 1px solid #dedede; +padding: 3px; +} + +.container-fluid .calender tfoot .hilite { +background: #aaf; +border: 1px solid #04f; +color: #000; +padding: 1px; +} + +.container-fluid .calender tfoot .active { +background: #77c; +padding: 2px 0px 0px 2px; +} + +.container-fluid .calender .combo { +position: absolute; +display: none; +top: 0px; +left: 0px; +width: 4em; +border: 1px solid #ccc; +background: #f5f5f5; +color: #222; +font-size: 90%; +z-index: 100; +} + +.container-fluid .calender .combo .label, +.container-fluid .calender .combo .label-IEfix { +text-align: center; +padding: 1px; +} + +.container-fluid .calender .combo .label-IEfix { +width: 4em; +} + +.container-fluid .calender .combo .hilite { +background: #444; +color:#fff; +} + +.container-fluid .calender .combo .active { +border-top: 1px solid #999; +border-bottom: 1px solid #999; +background: #dedede; +font-weight: bold; +} +.container-fluid form li div label +{ + clear:both; + color:#444; + display:block; + font-size:9px; + line-height:9px; + margin:0; + padding-top:3px; +} + +.container-fluid form li span label +{ + clear:both; + color:#444; + display:block; + font-size:9px; + line-height:9px; + margin:0; + padding-top:3px; +} +.container-fluid form li .datepicker +{ + cursor:pointer !important; + float:left; + height:16px; + margin:.1em 5px 0 0; + padding:0; + width:16px; +} +.container-fluid input.text +{ + background:#fff url(../../../images/shadow.gif) repeat-x top; + border-bottom:1px solid #ddd; + border-left:1px solid #c3c3c3; + border-right:1px solid #c3c3c3; + border-top:1px solid #7c7c7c; + color:#333; + font-size:100%; + margin:0; + padding:2px 0; +} +p.small { + font-size: 16px; +} + + +.container-fluid form ul +{ + font-size:200%; + list-style-type:none; + margin:0; + padding:0; + width:100%; +} + +.container-fluid form li +{ + display:block; + margin:0; + padding:4px 5px 2px 9px; + position:relative; +} +a, +a:hover, +a:focus, +a:active, +a.active { + outline: 0; +} +@media(min-width:768px) { + .navbar-fixed-top { + padding: 25px 0; + -webkit-transition: padding .3s; + -moz-transition: padding .3s; + transition: padding .3s; + } + + .navbar-fixed-top .navbar-brand { + font-size: 2em; + -webkit-transition: all .3s; + -moz-transition: all .3s; + transition: all .3s; + } + + .navbar-fixed-top.navbar-shrink { + padding: 10px 0; + } + + .navbar-fixed-top.navbar-shrink .navbar-brand { + font-size: 1.5em; + } +} + +.navbar a:focus { + outline: 0; +} + +.navbar .navbar-nav li a:focus { + outline: 0; +} + +.navbar-default, +.navbar-inverse { + border: 0; +} +.footer-div +{ +margin-top:120px; +} + +/*******************************************************************************/ +/*****************************CUSTOME STYLE*************************************/ +/*******************************************************************************/ + +.search-textbox +{ + background: url("../images/search-box.png") no-repeat; + border: 0 none; + color: #666666; + float: left; + font-family: 'Raleway'; + font-size: 15px; + height: 36px; + margin: 0; + padding-left: 15px; + transition: background 0.3s ease-in-out 0s; + width: 220px; + +} + +.search-button +{ + background: url("../images/search.png") no-repeat; + cursor: pointer; + height: 36px; + text-indent: -99999em; + width: 36px; + border: 0px; + +} +.main-logo-a +{ + height: auto; + overflow: visible; + margin-left: 0px !important; + padding-bottom: 10px !important; + padding-top: 10px !important; +} + +.menu-a +{ + font-size: 14px !important; + font-family: 'Raleway' !important; + color: #2C99CD !important; + padding-left: 10px !important; + padding-bottom: 5px !important; + padding-top: 5px !important; + padding-right: 10px !important; + +} + +.menu-a-active +{ + color: white !important; +} + +.menu-li +{ + /* float: right; */ + border-radius: 10px; + margin-left: 20px; + margin-right: 20px; +} + +.menu-li:HOVER +{ + background-color: #77BB41 !important; +} + +.menu-a:HOVER +{ + color: white !important; +} +.menu-li-active +{ + background-color: #77BB41; +} + +.menu-div +{ + /* margin-top: 30px; */ + +} + +.menu-ul +{ + margin-top: 45px; +} + +@media only screen and (max-width: 375px) { + .featured-labs-experiment-div + { + text-align: center; + } + .featured-labs-experiment-icon + { + float: left; + min-width: 78px; + } +} + + +@media only screen and (min-width: 401px) { + + .custom-toggle + { + margin-bottom: 0px !important; + margin-top: 27px !important; + } +} + +@media only screen and (max-width: 400px) { + + .main-logo-a + { + width: 60%; + } + + .custom-toggle + { + margin-bottom: 0px !important; + margin-top: 12% !important; + } + + +/* .menu-div + { + margin-top: 30px !important; + } */ + +} + + + +@media only screen and (min-width: 401px) and (max-width: 523px) { + +/* .menu-div + { + margin-top: 30px !important; + } */ +} + +@media only screen and (max-width: 496px) { + + .featured-labs-div + { + background: none !important; + } +} + +@media only screen and (max-width: 540px) { + .broad-labs-empty-div + { + display: none; + } + .border-right-green-dotted + { + margin-top: 60px !important; + } +} + +@media only screen and (min-width: 401px) and (max-width: 767px) { + + .main-logo + { + width: 70%; + } +} + +@media only screen and (max-width: 767px) { + + .menu-ul + { + margin-top: 0px !important; + } + + .menu-li-active + { + background-color: white !important; + } + + .menu-a-active + { + color: #2C99CE !important; + } + + .search-ul + { + display: none !important; + } + + + +} + +@media only screen and (min-width: 768px) and (max-width: 991px) { + .menu-a + { + font-size: 1.4em !important; + } + + .main-logo + { + width: 70%; + } + + .banner-text-small + { + font-size: 1.2em !important; + } + + .banner-text-medium + { + font-size: 1.7em !important; + } + + .banner-text-big + { + font-size: 2.0em !important; + } + +} + +@media only screen and (max-width: 991px) { + .menu-ul + { + margin-top: 30px; + } + + .search-textbox + { + width: 150px; + font-size: 0.9em; + } + + .menu-li + { + margin-left: 10px; + margin-right: 10px; + } + .aboutus-col-8 + { + padding-right: 15px !important; + } + .footer-div + { + background-size: cover !important; + } + + .lab-list-col-10 + { + /* background: none !important; */ + overflow:hidden; + } + + .featured-labs-main-div + { + margin-top: -35px !important; + } +} + + +@media only screen and (min-width: 992px) and (max-width: 1199px) { + +} + + +/*====================new grid================================*/ +@media only screen and (min-width: 992px) { + .col-md-2-5 + { + width: 20%; + float: left; + } +} + +@media only screen and (max-width: 991px) { + .col-md-2-5 + { + width: 33.33%; + float: left; + } + .col-md-2-5-1-l + { + background: url("../images/dotted-devider-h-o.png") no-repeat; + background-position: left bottom; + } +} + +@media only screen and (max-width: 767px) { + .col-md-2-5 + { + width: 50%; + float: left; + } +} + +@media only screen and (max-width: 540px) { + .col-md-2-5 + { + width: 100%; + float: left; + } +} +.col-md-2-5 +{ + position: relative; + min-height: 1px; + vertical-align: bottom; + /* display: flex; */ + min-height: 228px; +} + +.col-md-2-5-1-l +{ + width: 100%; + min-height: 228px; + height: 100%; +} + +.col-md-2-5-1-withbg +{ + background: url("../images/dotted-devider-h-o.png") no-repeat; + background-position: left bottom; + width: 100%; + min-height: 228px; + height: 100%; +} + +.col-md-2-5-2 +{ + padding-right: 15px; + padding-left: 15px; +} +/*************************************************************/ + +.featured-labs-div +{ + margin-left: 0px !important; + margin-right: 0px !important; + padding-left: 15px !important; +} +.border-bottom-img +{ + /* border-bottom: 2px dotted; + border-top : 0px; + border-left: 0px; + border-right: 0px; + -webkit-border-image: url(../images/dotted-devider-h-o.png) 30 round; Safari 3.1-5 + -o-border-image: url(../images/dotted-devider-h-o.png) 30 round; Opera 11-12.1 + border-image: url(../images/dotted-devider-h-o.png) 30 round; */ +} + +.broad-labs-a:HOVER +{ + text-decoration: none !important; + +} +.col-md-2-5-1-l:HOVER, .col-md-2-5-1-withbg:HOVER +{ + background-color: #e4e4e4 !important; +} + +.border-right-green-dotted +{ + border-right: 2px dotted; + margin-top: 30px; + border-right-color: #678f48; + min-height: 115px; +} +.border-right-green-dotted a{ + padding-left: 1px; + display: block; + margin-bottom: 10px; +} +a:focus +{ + color: #72AB44 !important; +} + +.featured-labs +{ + min-height: 190px !important; +} +/*========================font classes=======================*/ +.text-h2-lightblue +{ + color: #2C99CE; + font-size: 1.8em; + +} + +.text-a-lightgreen +{ + color: #72AB44; + font-size: 1.3em; + text-decoration: underline; +} + +.text-a-lightgreen:HOVER +{ + color: #72AB44 !important; +} + +.text-a-white +{ + color: white; + font-size: 1.4em; + text-decoration: underline; +} + + +.text-h2-lightblue-small +{ + color: #2C99CE; + font-size: 1.5em; +} + +.text-h3-darkblue-bold +{ + color: #3e6389; + font-size: 1.4em; + font-weight: bold; +} + +.text-h3-darkblue +{ + color: #3e6389; + font-size: 1.4em; +} + +.text-normal-gray-small +{ + color: #888; + font-size: 16px; +} + +.text-normal-gray-big +{ + color: #888; + font-size: 30px; +} +#experiment-article-section-1-heading +{ +color: #888; +font-size: 30px; +} +.text-normal-gray-smallest +{ + color: #888; + font-size: 13px; +} + +.featured-labs-icon-text +{ + color: #888; + font-size: 13px; +} + +.featured-labs-main-div +{ + margin-top: -50px; +} + +.nounderline +{ + text-decoration: none; +} + +.nounderline:HOVER +{ + text-decoration: none !important; +} +.text-normal-gray-medium +{ + color: #888; + font-size: 1.4em; +} +/*===========================================================*/ + +.shadow +{ + -webkit-box-shadow: inset 0 8px 6px -6px black; + -moz-box-shadow: inset 0 8px 6px -6px black; + box-shadow: inset 0 8px 6px -6px black; +} + + +/*owl style sheet*/ +#owl-demo .item{ + display: block; + padding: 1px 10px; + margin: 5px; + color: #888; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.owl-theme .owl-controls .owl-buttons div { + padding: 5px 9px; +} + +.owl-theme .owl-buttons i{ + margin-top: 2px; +} + +//To move navigation buttons outside use these settings: + +#owl-demo .owl-controls .owl-buttons div, #owl-partner-institutions .owl-controls .owl-buttons div{ + position: absolute; +} + +#owl-demo .owl-controls .owl-buttons .owl-prev{ + left: -45px; + top: 55px; + position: absolute; + background: none !important; +} + + #owl-partner-institutions .owl-controls .owl-buttons .owl-prev + { + left: -45px; + top: 20px; + position: absolute; + background: none !important; + } + +#owl-demo .owl-controls .owl-buttons .owl-next{ + right: -45px; + top: 55px; + position: absolute; + background: none !important; +} + +#owl-partner-institutions .owl-controls .owl-buttons .owl-next +{ + right: -45px; + top: 20px; + position: absolute; + background: none !important; +} + +#owl-demo .owl-controls .owl-pagination, #owl-partner-institutions .owl-controls .owl-pagination +{ + display: none; +} + +#owl-aboutus .owl-controls .owl-buttons +{ + display: none; +} + +#owl-aboutus .owl-controls .owl-pagination +{ + text-align: left; +} +#owl-aboutus .owl-controls .owl-page span +{ + background-color: white; + border: 2px solid; + height: 20px; + width: 20px; +} + +#owl-aboutus .owl-controls .owl-page.active span, #owl-aboutus .owl-controls.clickable .owl-page:hover span +{ + background-color: #FF6600; + border: 0px; +} +/*******************/ + + +/*Labs page*/ +.sidebar-col-2 +{ + +} + +.lab-list-col-10 +{ + background: url("../images/devider-blue-v-o.png") repeat-y; + background-position: left top; + margin-bottom: 25px; +} + +.sidebar-a:HOVER, .text-h3-darkblue:HOVER { + color: #ff6600 !important; +} + +.lab-list-row-div +{ + background: url('../images/bottom-line-n.png') no-repeat; + background-position: left bottom; + height: auto; + overflow: hidden; + border-bottom: 1.5px dotted; + border-bottom-color: #888; + padding-bottom: 10px; +} + +.lab-list-row-col-2 +{ + margin-top: 15px; +} + +/**********************************************************************************/ + +.banner-text +{ + position: relative; + top: -59px; + color: white !important; +} + +.banner-text-small +{ + font-size: 1.7em; +} + +.banner-text-medium +{ + font-size: 2.2em; +} + +.banner-text-big +{ + font-size: 2.7em; +} + +.baneer-text-sub-div +{ + position: relative; + float: left +} + +.banner-text-1 +{ + left: 3.7%; +} + +.banner-text-2 +{ + left: 9.6%; +} + +.banner-text-3 +{ + left: 15%; +} + +.banner-text-4 +{ + left:22%; +} + +.banner-caption-div +{ + position: absolute; + top: 140px; + left: 42%; +} + +.banner-caption-text +{ + font-size: 2.0em; + line-height: normal; + color: black; +} + + +/*==========================RESPONSIVE+++++++++++++++++++++++++++++++*/ + +@media only screen and (max-width: 399px) { + + .banner-text-small + { + font-size: 0.8em !important; + } + + .banner-text-medium + { + font-size: 0.9em !important; + } + + .banner-text-big + { + font-size: 1.1em !important; + } + + .banner-text + { + top: -21px; + letter-spacing: -1.5px; + } + + .banner-text-1 + { + left: 1.5%; + } + + .banner-text-2 + { + left: 3.0%; + } + + .banner-text-3 + { + left: 5%; + } + + .banner-text-4 + { + left: 8%; + } + +} + +@media only screen and (min-width: 400px) and (max-width: 500px) { + .banner-text-small + { + font-size: 0.9em !important; + } + + .banner-text-medium + { + font-size: 1.1em !important; + } + + .banner-text-big + { + font-size: 1.2em !important; + } + + .banner-text + { + top: -24px; + letter-spacing: -1px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } +} + +@media only screen and (min-width: 501px) and (max-width: 767px) { + .banner-text-small + { + font-size: 0.9em !important; + } + + .banner-text-medium + { + font-size: 1.2em !important; + } + + .banner-text-big + { + font-size: 1.4em !important; + } + .banner-text + { + top: -30px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } +} + + +@media only screen and (max-width: 349px) { + + .banner-caption-text + { + font-size: 0.5em; + } + +} + +@media only screen and (min-width: 350px) and (max-width: 400px) { + + .banner-caption-text + { + font-size: 0.6em; + } + +} + + +@media only screen and (min-width: 401px) and (max-width: 444px) { + + .banner-caption-text + { + font-size: 0.7em; + } + +} + + +@media only screen and (min-width: 445px) and (max-width: 609px) { + + .banner-caption-text + { + font-size: 0.9em; + } + +} + +@media only screen and (min-width: 610px) and (max-width: 767px) { + + .banner-caption-text + { + font-size: 1.1em; + } + +} + +@media only screen and (max-width: 767px) { + .banner-caption-div + { + position: relative !important; + } +} + +@media only screen and (max-width: 346px) { + .banner-caption-div + { + top: -39px; + left: -32%; + } +} + +@media only screen and (min-width: 347px) and (max-width: 399px) { + .banner-caption-div + { + top: -43px; + left: -22%; + } +} + +@media only screen and (min-width: 400px) and (max-width: 444px) { + .banner-caption-div + { + top: -50px; + left: -31%; + } +} + +@media only screen and (min-width: 445px) and (max-width: 500px) { + .banner-caption-div + { + top: -57px; + left: -23%; + } +} + +@media only screen and (min-width: 501px) and (max-width: 569px) { + .banner-caption-div + { + top: -65px; + left: -30%; + } +} + +@media only screen and (min-width: 570px) and (max-width: 639px) { + .banner-caption-div + { + top: -74px; + left: -22%; + } +} + +@media only screen and (min-width: 640px) and (max-width: 709px) { + .banner-caption-div + { + top: -83px; + left: -16%; + } +} + +@media only screen and (min-width: 710px) and (max-width: 767px) { + .banner-caption-div + { + top: -92px; + left: -11%; + } +} + + +@media only screen and (min-width: 768px) and (max-width: 991px) { + + .banner-text-small + { + font-size: 1.2em !important; + } + + .banner-text-medium + { + font-size: 1.7em !important; + } + + .banner-text-big + { + font-size: 2.0em !important; + } + + .banner-text + { + top: -40px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } + + .banner-caption-text + { + font-size: 1.5em; + } + .banner-caption-div + { + top: 99px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1100px) { + + .banner-text + { + top: -52px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1150px) { + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 9%; + } + + .banner-text-4 + { + left: 12%; + } + + .banner-caption-text + { + font-size: 1.6em; + } + .banner-caption-div + { + top: 133px; + } +} + +@media only screen and (min-width: 1150px) and (max-width: 1275px) { + + .banner-text-2 + { + left: 8.3%; + } + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } + + .banner-caption-text + { + font-size: 1.8em; + } +} + +/* Rules to fix the footer at the bottom of the page */ +/*html{ height:100%; } +body{ min-height:100%; padding:0; margin:0; position:relative; } + +body::after{ content:''; display:block; height:100px; }*/ + +footer{ + width:100%; +} + +/* To justify the paragraph text */ +p { + text-align: justify; +} + +/* Styles for feedback button in feedback section */ +#feedback-btn { + color: #2C99CE !important; + border-color: #2C99CE !important; +} + +#feedback-btn-link { + display: block; + margin: auto; + width: 17%; +} + +#feedback-btn-link:hover { + text-decoration: inherit !important; + color: inherit !important; +} + +/*Styles for list*/ +ul li span, ol li span { + font-size: 1.3em +} + +ul li, ol li{ + font-size: 1.1em +} + +/*Styles for progress bars*/ +.progress { + font-weight: bold; +} + +.progress-bar-green { + background-color: #008000; +} + +.progress-bar-blue { + background-color: #130e71; +} + +.progress-bar-red { + background-color: #d9534f; +} + +#progress-bar-header { + background-color: #fff; + border-radius: 6px; + padding: 22px; + box-shadow: 0 0 4px 0 rgba(17,22,26,.16),0 2px 4px 0 rgba(17,22,26,.08),0 4px 8px 0 rgba(17,22,26,.08); +} diff --git a/experiment/assignment/css/style.css b/experiment/assignment/css/style.css new file mode 100644 index 0000000..e6050ad --- /dev/null +++ b/experiment/assignment/css/style.css @@ -0,0 +1,1471 @@ +/* +Theme Name: Vlabs +Theme URI: http://www.vlabs.ac.in +Author: Vlabs.co.in +Author URI: http://www.vlabs.ac.in +Description: The theme to accompany the profile site for vlabs.ac.in +Version: 1.0 +*/ +@import url(https://fonts.googleapis.com/css?family=Raleway:400,300,700,500,600); +body { + overflow-x: hidden; + font-family:'Raleway' !important; + min-height: 100%; +} + +html { + height: 100%; +} + +p { + font-size: 16px; +} + +/*** Calendar **********************/ +.content .container-fluid div.calender { position: relative; } + +.container-fluid .calender table { +cursor:pointer; +border:1px solid #ccc; +font-size: 11px; +color: #000; +background: #fff; +font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; +} + +/* Styles for feedback button in feedback section */ +#feedback-btn { + color: #2C99CE !important; + border-color: #2C99CE !important; +} + +#feedback-btn-link { + display: block; + margin: auto; + width: 17%; +} + +#feedback-btn-link:hover { + text-decoration: inherit !important; + color: inherit !important; +} + +.container-fluid .calender .nav { +background:#f5f5f5; +} + +.container-fluid .calender thead .title { +font-weight: bold; +text-align: center; +background: #dedede; +color: #000; +padding: 2px 0 3px 0; +} + +.container-fluid .calender thead .headrow { +background: #f5f5f5; +color: #444; +font-weight:bold; +} + +.container-fluid .calender thead .daynames { +background: #fff; +color:#333; +font-weight:bold; +} + +.container-fluid .calender thead .name { +border-bottom: 1px dotted #ccc; +padding: 2px; +text-align: center; +color: #000; +} + +.container-fluid .calender thead .weekend { +color: #666; +} + +.container-fluid .calender thead .hilite { +background-color: #444; +color: #fff; +padding: 1px; +} + +.container-fluid .calender thead .active { +background-color: #d12f19; +color:#fff; +padding: 2px 0px 0px 2px; +} + + +.container-fluid .calender tbody .day { +width:1.8em; +color: #222; +text-align: right; +padding: 2px 2px 2px 2px; +} +.container-fluid .calender tbody .day.othermonth { +font-size: 80%; +color: #bbb; +} +.container-fluid .calender tbody .day.othermonth.oweekend { +color: #fbb; +} + +.container-fluid .calender table .wn { +padding: 2px 2px 2px 2px; +border-right: 1px solid #000; +background: #666; +} + +.container-fluid .calender tbody .rowhilite td { +background: #FFF1AF; +} + +.container-fluid .calender tbody .rowhilite td.wn { +background: #FFF1AF; +} + +.container-fluid .calender tbody td.hilite { +padding: 1px 1px 1px 1px; +background:#444 !important; +color:#fff !important; +} + +.container-fluid .calender tbody td.active { +color:#fff; +background: #529214 !important; +padding: 2px 2px 0px 2px; +} + +.container-fluid .calender tbody td.selected { +font-weight: bold; +border: 1px solid #888; +padding: 1px 1px 1px 1px; +background: #f5f5f5 !important; +color: #222 !important; +} + +.container-fluid .calender tbody td.weekend { +color: #666; +} + +.container-fluid .calender tbody td.today { +font-weight: bold; +color: #529214; +background:#D9EFC2; +} + +.container-fluid .calender tbody .disabled { color: #999; } + +.container-fluid .calender tbody .emptycell { +visibility: hidden; +} + +.container-fluid .calender tbody .emptyrow { +display: none; +} + +.container-fluid .calender tfoot .footrow { +text-align: center; +background: #556; +color: #fff; +} + +.container-fluid .calender tfoot .ttip { +background: #222; +color: #fff; +font-size:10px; +border-top: 1px solid #dedede; +padding: 3px; +} + +.container-fluid .calender tfoot .hilite { +background: #aaf; +border: 1px solid #04f; +color: #000; +padding: 1px; +} + +.container-fluid .calender tfoot .active { +background: #77c; +padding: 2px 0px 0px 2px; +} + +.container-fluid .calender .combo { +position: absolute; +display: none; +top: 0px; +left: 0px; +width: 4em; +border: 1px solid #ccc; +background: #f5f5f5; +color: #222; +font-size: 90%; +z-index: 100; +} + +.container-fluid .calender .combo .label, +.container-fluid .calender .combo .label-IEfix { +text-align: center; +padding: 1px; +} + +.container-fluid .calender .combo .label-IEfix { +width: 4em; +} + +.container-fluid .calender .combo .hilite { +background: #444; +color:#fff; +} + +.container-fluid .calender .combo .active { +border-top: 1px solid #999; +border-bottom: 1px solid #999; +background: #dedede; +font-weight: bold; +} +.container-fluid form li div label +{ + clear:both; + color:#444; + display:block; + font-size:9px; + line-height:9px; + margin:0; + padding-top:3px; +} + +.container-fluid form li span label +{ + clear:both; + color:#444; + display:block; + font-size:9px; + line-height:9px; + margin:0; + padding-top:3px; +} +.container-fluid form li .datepicker +{ + cursor:pointer !important; + float:left; + height:16px; + margin:.1em 5px 0 0; + padding:0; + width:16px; +} +.container-fluid input.text +{ + background:#fff url(../../../images/shadow.gif) repeat-x top; + border-bottom:1px solid #ddd; + border-left:1px solid #c3c3c3; + border-right:1px solid #c3c3c3; + border-top:1px solid #7c7c7c; + color:#333; + font-size:100%; + margin:0; + padding:2px 0; +} +p.small { + font-size: 16px; +} + + +.container-fluid form ul +{ + font-size:200%; + list-style-type:none; + margin:0; + padding:0; + width:100%; +} + +.container-fluid form li +{ + display:block; + margin:0; + padding:4px 5px 2px 9px; + position:relative; +} +a, +a:hover, +a:focus, +a:active, +a.active { + outline: 0; +} +@media(min-width:768px) { + .navbar-fixed-top { + padding: 25px 0; + -webkit-transition: padding .3s; + -moz-transition: padding .3s; + transition: padding .3s; + } + + .navbar-fixed-top .navbar-brand { + font-size: 2em; + -webkit-transition: all .3s; + -moz-transition: all .3s; + transition: all .3s; + } + + .navbar-fixed-top.navbar-shrink { + padding: 10px 0; + } + + .navbar-fixed-top.navbar-shrink .navbar-brand { + font-size: 1.5em; + } +} + +.navbar a:focus { + outline: 0; +} + +.navbar .navbar-nav li a:focus { + outline: 0; +} + +.navbar-default, +.navbar-inverse { + border: 0; +} +.footer-div +{ +margin-top:120px; +} + + +#top { + min-height: 100vh; + display: grid; + grid-template-rows: max-content auto max-content; +} + + +#footer { + color: #eee; + font-size: 14px; + width: 100%; + bottom: 0; +} + +#footer .footer-top { + background: #111; + padding: 15px 0 0px 0; +} + +#footer .row { + padding-bottom: 2rem; +} + +#footer .footer-top .footer-info h3 { + font-size: 34px; + margin: 0 0 20px 0; + padding: 2px 0 2px 10px; + line-height: 1; + font-family: "Open Sans", sans-serif; + font-weight: 700; + letter-spacing: 3px; + border-left: 4px solid #18d26e; +} + +#footer .footer-top p { + font-size: 1.4rem; + margin-bottom: 0; + color: #eee; +} + +#footer .footer-top .social-links a { + font-size: 18px; + display: inline-block; + background: #333; + color: #eee; + line-height: 1; + padding: 8px 0; + margin-right: 4px; + border-radius: 50%; + text-align: center; + width: 36px; + height: 36px; + transition: 0.3s; +} + +#footer .footer-top .social-links a:hover { + background: #3cd6ed; + color: #fff; +} + +#footer .footer-top h4 { + font-size: 14px; + color: #fff; + position: relative; + padding-bottom: 12px; +} + +#footer .footer-top h4::before, #footer .footer-top h4::after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + height: 2px; +} + +#footer .footer-top h4::before { + right: 0; + background: #555; +} + +#footer .footer-top h4::after { + background: #3EC1D5; + width: 60px; +} +#footer .footer-top i { + color:#fff; +} + +#footer .footer-top a { + color:#fff; +} + + + + +/*******************************************************************************/ +/*****************************CUSTOME STYLE*************************************/ +/*******************************************************************************/ + +.search-textbox +{ + background: url("../images/search-box.png") no-repeat; + border: 0 none; + color: #666666; + float: left; + font-family: 'Raleway'; + font-size: 15px; + height: 36px; + margin: 0; + padding-left: 15px; + transition: background 0.3s ease-in-out 0s; + width: 220px; + +} + +.search-button +{ + background: url("../images/search.png") no-repeat; + cursor: pointer; + height: 36px; + text-indent: -99999em; + width: 36px; + border: 0px; + +} +.main-logo-a +{ + height: auto; + overflow: visible; + margin-left: 0px !important; + padding-bottom: 10px !important; + padding-top: 10px !important; +} + +.menu-a +{ + font-size: 14px !important; + font-family: 'Raleway' !important; + color: #2C99CD !important; + padding-left: 10px !important; + padding-bottom: 5px !important; + padding-top: 5px !important; + padding-right: 10px !important; + +} + +.menu-a-active +{ + color: white !important; +} + +.menu-li +{ + /* float: right; */ + border-radius: 10px; + margin-left: 20px; + margin-right: 20px; +} + +.menu-li:HOVER +{ + background-color: #77BB41 !important; +} + +.menu-a:HOVER +{ + color: white !important; +} +.menu-li-active +{ + background-color: #77BB41; +} + +.menu-div +{ + /* margin-top: 30px; */ + +} + +.menu-ul +{ + margin-top: 45px; +} + +@media only screen and (max-width: 375px) { + .featured-labs-experiment-div + { + text-align: center; + } + .featured-labs-experiment-icon + { + float: left; + min-width: 78px; + } +} + + +@media only screen and (min-width: 401px) { + + .custom-toggle + { + margin-bottom: 0px !important; + margin-top: 27px !important; + } +} + +@media only screen and (max-width: 400px) { + + .main-logo-a + { + width: 60%; + } + + .custom-toggle + { + margin-bottom: 0px !important; + margin-top: 12% !important; + } + + +/* .menu-div + { + margin-top: 30px !important; + } */ + +} + + + +@media only screen and (min-width: 401px) and (max-width: 523px) { + +/* .menu-div + { + margin-top: 30px !important; + } */ +} + +@media only screen and (max-width: 496px) { + + .featured-labs-div + { + background: none !important; + } +} + +@media only screen and (max-width: 540px) { + .broad-labs-empty-div + { + display: none; + } + .border-right-green-dotted + { + margin-top: 60px !important; + } +} + +@media only screen and (min-width: 401px) and (max-width: 767px) { + + .main-logo + { + width: 70%; + } +} + +@media only screen and (max-width: 767px) { + + .menu-ul + { + margin-top: 0px !important; + } + + .menu-li-active + { + background-color: white !important; + } + + .menu-a-active + { + color: #2C99CE !important; + } + + .search-ul + { + display: none !important; + } + + + +} + +@media only screen and (min-width: 768px) and (max-width: 991px) { + .menu-a + { + font-size: 1.4em !important; + } + + .main-logo + { + width: 70%; + } + + .banner-text-small + { + font-size: 1.2em !important; + } + + .banner-text-medium + { + font-size: 1.7em !important; + } + + .banner-text-big + { + font-size: 2.0em !important; + } + +} + +@media only screen and (max-width: 991px) { + .menu-ul + { + margin-top: 30px; + } + + .search-textbox + { + width: 150px; + font-size: 0.9em; + } + + .menu-li + { + margin-left: 10px; + margin-right: 10px; + } + .aboutus-col-8 + { + padding-right: 15px !important; + } + .footer-div + { + background-size: cover !important; + } + + .lab-list-col-10 + { + /* background: none !important; */ + overflow:hidden; + } + + .featured-labs-main-div + { + margin-top: -35px !important; + } +} + + +@media only screen and (min-width: 992px) and (max-width: 1199px) { + +} + + +/*====================new grid================================*/ +@media only screen and (min-width: 992px) { + .col-md-2-5 + { + width: 20%; + float: left; + } +} + +@media only screen and (max-width: 991px) { + .col-md-2-5 + { + width: 33.33%; + float: left; + } + .col-md-2-5-1-l + { + background: url("../images/dotted-devider-h-o.png") no-repeat; + background-position: left bottom; + } +} + +@media only screen and (max-width: 767px) { + .col-md-2-5 + { + width: 50%; + float: left; + } +} + +@media only screen and (max-width: 540px) { + .col-md-2-5 + { + width: 100%; + float: left; + } +} +.col-md-2-5 +{ + position: relative; + min-height: 1px; + vertical-align: bottom; + /* display: flex; */ + min-height: 228px; +} + +.col-md-2-5-1-l +{ + width: 100%; + min-height: 228px; + height: 100%; +} + +.col-md-2-5-1-withbg +{ + background: url("../images/dotted-devider-h-o.png") no-repeat; + background-position: left bottom; + width: 100%; + min-height: 228px; + height: 100%; +} + +.col-md-2-5-2 +{ + padding-right: 15px; + padding-left: 15px; +} +/*************************************************************/ + +.featured-labs-div +{ + margin-left: 0px !important; + margin-right: 0px !important; + padding-left: 15px !important; +} +.border-bottom-img +{ + /* border-bottom: 2px dotted; + border-top : 0px; + border-left: 0px; + border-right: 0px; + -webkit-border-image: url(../images/dotted-devider-h-o.png) 30 round; Safari 3.1-5 + -o-border-image: url(../images/dotted-devider-h-o.png) 30 round; Opera 11-12.1 + border-image: url(../images/dotted-devider-h-o.png) 30 round; */ +} + +.broad-labs-a:HOVER +{ + text-decoration: none !important; + +} +.col-md-2-5-1-l:HOVER, .col-md-2-5-1-withbg:HOVER +{ + background-color: #e4e4e4 !important; +} + +.border-right-green-dotted +{ + border-right: 2px dotted; + margin-top: 30px; + border-right-color: #678f48; + min-height: 115px; +} +.border-right-green-dotted a{ + padding-left: 10px; + display: block; + margin-bottom: 10px; +} +a:focus +{ + color: #72AB44 !important; +} + +.featured-labs +{ + min-height: 190px !important; +} +/*========================font classes=======================*/ +.text-h2-lightblue +{ + color: #2C99CE; + font-size: 1.8em; + margin-top: 5px; + margin-bottom:20px; +} +.text-h1-lightblue +{ + color: #2C99CE; + font-size: 1.8em; + font-weight: bold; + text-align : center; + +} + +.text-a-lightgreen +{ + color: #72AB44; + font-size: 1.3em; + text-decoration: underline; +} + +.text-a-lightgreen:HOVER +{ + color: #72AB44 !important; +} + +.text-a-white +{ + color: white; + font-size: 1.4em; + text-decoration: underline; +} + + +.text-h2-lightblue-small +{ + color: #2C99CE; + font-size: 1.5em; +} + +.text-h3-darkblue-bold +{ + color: #3e6389; + font-size: 1.4em; + font-weight: bold; +} + +.text-h3-darkblue +{ + color: #3e6389; + font-size: 1.4em; +} + +.text-normal-gray-small +{ + color: #888; + font-size: 16px; +} + +.text-normal-gray-big +{ + color: #888; + font-size: 30px; +} +#experiment-article-section-1-heading +{ +color: #888; +font-size: 30px; +} +.text-normal-gray-smallest +{ + color: #888; + font-size: 13px; +} + +.featured-labs-icon-text +{ + color: #888; + font-size: 13px; +} + +.featured-labs-main-div +{ + margin-top: -50px; +} + +.nounderline +{ + text-decoration: none; +} + +.nounderline:HOVER +{ + text-decoration: none !important; +} +.text-normal-gray-medium +{ + color: #888; + font-size: 1.4em; +} +/*===========================================================*/ + +.shadow +{ + -webkit-box-shadow: inset 0 8px 6px -6px black; + -moz-box-shadow: inset 0 8px 6px -6px black; + box-shadow: inset 0 8px 6px -6px black; +} + + +/*owl style sheet*/ +#owl-demo .item{ + display: block; + padding: 1px 10px; + margin: 5px; + color: #888; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.owl-theme .owl-controls .owl-buttons div { + padding: 5px 9px; +} + +.owl-theme .owl-buttons i{ + margin-top: 2px; +} + +//To move navigation buttons outside use these settings: + +#owl-demo .owl-controls .owl-buttons div, #owl-partner-institutions .owl-controls .owl-buttons div{ + position: absolute; +} + +#owl-demo .owl-controls .owl-buttons .owl-prev{ + left: -45px; + top: 55px; + position: absolute; + background: none !important; +} + + #owl-partner-institutions .owl-controls .owl-buttons .owl-prev + { + left: -45px; + top: 20px; + position: absolute; + background: none !important; + } + +#owl-demo .owl-controls .owl-buttons .owl-next{ + right: -45px; + top: 55px; + position: absolute; + background: none !important; +} + +#owl-partner-institutions .owl-controls .owl-buttons .owl-next +{ + right: -45px; + top: 20px; + position: absolute; + background: none !important; +} + +#owl-demo .owl-controls .owl-pagination, #owl-partner-institutions .owl-controls .owl-pagination +{ + display: none; +} + +#owl-aboutus .owl-controls .owl-buttons +{ + display: none; +} + +#owl-aboutus .owl-controls .owl-pagination +{ + text-align: left; +} +#owl-aboutus .owl-controls .owl-page span +{ + background-color: white; + border: 2px solid; + height: 20px; + width: 20px; +} + +#owl-aboutus .owl-controls .owl-page.active span, #owl-aboutus .owl-controls.clickable .owl-page:hover span +{ + background-color: #FF6600; + border: 0px; +} +/*******************/ + + +/*Labs page*/ +.sidebar-col-2 +{ + margin-bottom : 15px; +} + +.lab-list-col-10 +{ + background: url("../images/devider-blue-v-o.png") repeat-y; + background-position: left top; + margin-bottom: 15px; +} + +.sidebar-a:HOVER, .text-h3-darkblue:HOVER { + color: #ff6600 !important; + } +h3 +{ + line-height: 32px; +} +h1 +{ + line-height:50px; + font-family: 'Montserrat', sans-serif; +} +h2 +{ + margin-bottom: 15px ; +} + +.lab-list-row-div +{ + background: url('../images/bottom-line-n.png') no-repeat; + background-position: left bottom; + height: auto; + overflow: hidden; + border-bottom: 1.5px dotted; + border-bottom-color: #888; + padding-bottom: 10px; +} + +.lab-list-row-col-2 +{ + margin-top: 15px; +} + +/**********************************************************************************/ + +.banner-text +{ + position: relative; + top: -59px; + color: white !important; +} + +.banner-text-small +{ + font-size: 1.7em; +} + +.banner-text-medium +{ + font-size: 2.2em; +} + +.banner-text-big +{ + font-size: 2.7em; +} + +.baneer-text-sub-div +{ + position: relative; + float: left +} + +.banner-text-1 +{ + left: 3.7%; +} + +.banner-text-2 +{ + left: 9.6%; +} + +.banner-text-3 +{ + left: 15%; +} + +.banner-text-4 +{ + left:22%; +} + +.banner-caption-div +{ + position: absolute; + top: 140px; + left: 42%; +} + +.banner-caption-text +{ + font-size: 2.0em; + line-height: normal; + color: black; +} + + +/*==========================RESPONSIVE+++++++++++++++++++++++++++++++*/ + +@media only screen and (max-width: 399px) { + + .banner-text-small + { + font-size: 0.8em !important; + } + + .banner-text-medium + { + font-size: 0.9em !important; + } + + .banner-text-big + { + font-size: 1.1em !important; + } + + .banner-text + { + top: -21px; + letter-spacing: -1.5px; + } + + .banner-text-1 + { + left: 1.5%; + } + + .banner-text-2 + { + left: 3.0%; + } + + .banner-text-3 + { + left: 5%; + } + + .banner-text-4 + { + left: 8%; + } + +} + +@media only screen and (min-width: 400px) and (max-width: 500px) { + .banner-text-small + { + font-size: 0.9em !important; + } + + .banner-text-medium + { + font-size: 1.1em !important; + } + + .banner-text-big + { + font-size: 1.2em !important; + } + + .banner-text + { + top: -24px; + letter-spacing: -1px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } +} + +@media only screen and (min-width: 501px) and (max-width: 767px) { + .banner-text-small + { + font-size: 0.9em !important; + } + + .banner-text-medium + { + font-size: 1.2em !important; + } + + .banner-text-big + { + font-size: 1.4em !important; + } + .banner-text + { + top: -30px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } +} + + +@media only screen and (max-width: 349px) { + + .banner-caption-text + { + font-size: 0.5em; + } + +} + +@media only screen and (min-width: 350px) and (max-width: 400px) { + + .banner-caption-text + { + font-size: 0.6em; + } + +} + + +@media only screen and (min-width: 401px) and (max-width: 444px) { + + .banner-caption-text + { + font-size: 0.7em; + } + +} + + +@media only screen and (min-width: 445px) and (max-width: 609px) { + + .banner-caption-text + { + font-size: 0.9em; + } + +} + +@media only screen and (min-width: 610px) and (max-width: 767px) { + + .banner-caption-text + { + font-size: 1.1em; + } + +} + +@media only screen and (max-width: 767px) { + .banner-caption-div + { + position: relative !important; + } +} + +@media only screen and (max-width: 346px) { + .banner-caption-div + { + top: -39px; + left: -32%; + } +} + +@media only screen and (min-width: 347px) and (max-width: 399px) { + .banner-caption-div + { + top: -43px; + left: -22%; + } +} + +@media only screen and (min-width: 400px) and (max-width: 444px) { + .banner-caption-div + { + top: -50px; + left: -31%; + } +} + +@media only screen and (min-width: 445px) and (max-width: 500px) { + .banner-caption-div + { + top: -57px; + left: -23%; + } +} + +@media only screen and (min-width: 501px) and (max-width: 569px) { + .banner-caption-div + { + top: -65px; + left: -30%; + } +} + +@media only screen and (min-width: 570px) and (max-width: 639px) { + .banner-caption-div + { + top: -74px; + left: -22%; + } +} + +@media only screen and (min-width: 640px) and (max-width: 709px) { + .banner-caption-div + { + top: -83px; + left: -16%; + } +} + +@media only screen and (min-width: 710px) and (max-width: 767px) { + .banner-caption-div + { + top: -92px; + left: -11%; + } +} + + +@media only screen and (min-width: 768px) and (max-width: 991px) { + + .banner-text-small + { + font-size: 1.2em !important; + } + + .banner-text-medium + { + font-size: 1.7em !important; + } + + .banner-text-big + { + font-size: 2.0em !important; + } + + .banner-text + { + top: -40px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } + + .banner-caption-text + { + font-size: 1.5em; + } + .banner-caption-div + { + top: 99px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1100px) { + + .banner-text + { + top: -52px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1150px) { + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 9%; + } + + .banner-text-4 + { + left: 12%; + } + + .banner-caption-text + { + font-size: 1.6em; + } + .banner-caption-div + { + top: 133px; + } +} + +@media only screen and (min-width: 1150px) and (max-width: 1275px) { + + .banner-text-2 + { + left: 8.3%; + } + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } + + .banner-caption-text + { + font-size: 1.8em; + } +} \ No newline at end of file diff --git a/experiment/assignment/css/style.css_old b/experiment/assignment/css/style.css_old new file mode 100644 index 0000000..e184d62 --- /dev/null +++ b/experiment/assignment/css/style.css_old @@ -0,0 +1,357 @@ +/* Primary Styles -------------------------------------------*/ +/* Author: Rohit Khot ---------------------------------------*/ + +/* Basic styling for the complete body tag ------------------*/ +/* BODY TEXT : 12px Lucida font with Cobalt color -----------*/ +/* BACKGROUND : white ---------------------------------------*/ + +body +{ + font-family:"Lucida Grande","Lucida Sans Unicode", + "Lucida Sans", Verdana,Arial,sans-serif; + font-size:12px; + margin:0 auto; + padding:0; + background: #012943; +} + +#container +{ + margin:0 auto; + padding:0 + width:100%; +} + +#lab-header, #experiment-header +{ + margin: 0 auto; + width: 1024px; +} + +#lab-header-logo, #experiment-header-logo +{ + +} + +#lab-header-logo img, #experiment-header-logo img +{ + width:1024px; + margin:0 auto; + +} +#lab-header-heading, #experiment-header-heading +{ + background:url(../images/header-blue.gif) no-repeat left top; + height:50px; + margin:0 auto; +} + +#lab-header-heading a:link, #experiment-header-heading a:link, +#lab-header-heading a:visited, #experiment-header-heading a:visited, +#lab-footer-heading a:link, #experiment-footer-heading a:link, +#lab-footer-heading a:visited, #experiment-footer-heading a:visited +{ + color:#fff; + text-decoration: none; + float: left; + font-size: 24px; + font-weight:bold; + text-transform:uppercase; + padding: 5px 25px 0px; +} + +#lab-header-heading a:focus, #experiment-header-heading a:focus, +#lab-header-heading a:hover, #experiment-header-heading a:hover, +#lab-footer-heading a:focus, #experiment-footer-heading a:focus, +#lab-footer-heading a:hover, #experiment-footer-heading a:hover +{ + color:#fff; + background-color:#02568e; +} + + +#lab-article, #experiment-article +{ + + + font-size: 16px; + line-height: 24px; + margin:0 auto; +} + +#lab-article-heading, #experiment-article-heading +{ + font-size: 50px; + font-family: Georgia, "Times New Roman", Times, Serif; + font-weight: normal; + text-transform: none; + line-height: 60px; + color: #3d414c; + padding: 10px 30px; + letter-spacing: 0; + position: relative; + margin:auto; + width: 964px; + background-color: rgb(227, 242, 252); +} + +nav#lab-article-navigation, nav#experiment-article-navigation +{ + height:90px; + margin: 0 auto; + width:1024px; + background: url(../images/content_bg.jpg); +} +nav#lab-article-navigation ul, nav#experiment-article-navigation ul +{ + /*margin-left:21px;*/ +} + +nav#lab-article-navigation ul li, nav#experiment-article-navigation ul li +{ + float: left; + list-style: none; + margin-right: 0.3em; +} + +nav#lab-article-navigation ul li img, nav#experiment-article-navigation ul li img +{ + width:50px; + height:50px; +} +nav#lab-article-navigation ul li a:link, nav#experiment-article-navigation ul li a:link, +nav#lab-article-navigation ul li a:visited, nav#experiment-article-navigation ul li a:visited +{ + color:#02568e; + text-decoration: underline; + float: right; + font-size: 16px; + text-transform:uppercase; + padding: 9px; +} + +nav#lab-article-navigation ul li a:hover, nav#experiment-article-navigation ul li a:hover, +nav#lab-article-navigation ul li a:focus, nav#experiment-article-navigation ul li a:focus +{ + color: #ffffff; + background-color:#02568e; +} + +#lab-article-sections-view, #experiment-article-sections-view +{ + padding-top:30px; + width:1024px; + min-height:400px; + + font-size: 16px; + line-height: 24px; + margin:0 auto; + background: url(../images/content_bg.jpg); +} + +#lab-article-sections, #experiment-article-sections +{ + padding-top:30px; + width:1024px; + min-height:400px; + + font-size: 16px; + line-height: 24px; + margin:0 auto; + background: url(../images/content_bg.jpg); + +} + +#lab-article-sections .heading, #experiment-article-sections .heading +{ + color:#222222; + font-family:"proxima-nova-extra-condensed-1", + "proxima-nova-extra-condensed-2", + "Trebuchet MS","Lucida Grande", + "Lucida Sans Unicode","Lucida Sans",Verdana, + Arial,sans-serif; + font-size:24px; + font-weight:300; + margin-left: 40px; + padding:5px 0 30px; +} + +#lab-article-sections .subheading, #experiment-article-sections .subheading, .content h2, .content h3 +{ + color:#222222; + font-family:"proxima-nova-extra-condensed-1", + "proxima-nova-extra-condensed-2", + "Trebuchet MS","Lucida Grande", + "Lucida Sans Unicode","Lucida Sans",Verdana, + Arial,sans-serif; + font-size:20px; + font-weight:300; + margin-left:40px; + padding:10px 0 10px; +} +.content p +{ + padding-left:40px; + width:90%; + padding-bottom:10px; +} + +.content p a:link, .content p a:visited +{ + text-decoration: underline; + color: #961b25;/* dusty read */ +} +.content img +{ + width:800px; + height:400px; + padding-left:40px; + padding-bottom:10px; +} + +.content pre +{ + padding-left:40px; + padding-bottom:10px; +} +.content embed +{ + width:800px; + padding-left:80px; + height:400px; + padding-bottom:10px; + border: solid 1px #b2bbc0; +} + +/* styles for button color */ +.button +{ + color: #fef4e9; + border: solid 1px #da7c0c; + background: #f78d1d; + background: -webkit-gradient(linear, left top, left bottom, + from(#faa51a), to(#f47a20)); + background: -moz-linear-gradient(top, #faa51a, #f47a20); + +} +.button:hover +{ + background: #f47c20; + background: -webkit-gradient(linear, left top, left bottom, + from(#f88e11), to(#f06015)); + background: -moz-linear-gradient(top, #f88e11, #f06015); + +} + +.button:active +{ + background: -webkit-gradient(linear, left top, left bottom, + from(#f47a20), to(#faa51a)); + background: -moz-linear-gradient(top, #f47a20, #faa51a); +} + +/* basic styles for button size, padding, etc. */ +.button +{ + display: inline-block; + outline: none; + font-size: 16px; + cursor: pointer; + text-align: center; + text-decoration: none; + line-height: 100%; + padding: .55em 2em .55em; + text-transform: uppercase; + -webkit-border-radius: 0.5em; + -moz-border-radius: 0.5em; + border-radius: 0.5em; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); + -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); + box-shadow: 0 1px 2px rgba(0,0,0,.2); +} +.button:hover +{ + text-decoration: none; +} +.button:active +{ + position: relative; + top: 1px; +} + + +.content table +{ + /*font-family: "Trebuchet MS", sans-serif; + font-size: 16px; + font-weight: bold;*/ + border-collapse:separate; + margin-left:40px; + padding-bottom:10px; +} + +.content table thead th +{ + color: #961b25; + font-size: 16px; + font-weight: normal; + text-transform:uppercase; + padding: 10px; + border:1px solid #b2bbc0; +} +.content table tbody th +{ + color: #961b25; + font-size: 16px; + font-weight: normal; + text-transform:uppercase; + padding: 10px; + border:1px solid #b2bbc0; +} + +.content table tbody td +{ + padding:10px; + text-align:left; + border:1px solid #b2bbc0; + max-width:700px; + +} + +.content ul, .content ol +{ + margin-left:50px; +} + +aside +{ + float:right; + width:200px; + position:relative; +} + +#hidden-content +{ + display:none; +} + +.icon +{ + display:none; +} + +#experiment-article-breadcrumb +{ + /*margin-left: 30px;*/ + width:1024px; + margin:0 auto; +} + +#experiment-article-breadcrumb a:link, #experiment-article-breadcrumb a:visited +{ + color: #fefefe; +} + +#lab-footer{ + text-align : center; +} diff --git a/experiment/assignment/js/README.md b/experiment/assignment/js/README.md new file mode 100644 index 0000000..b6e0cff --- /dev/null +++ b/experiment/assignment/js/README.md @@ -0,0 +1 @@ +### This folder contains all the js files used in the simulation. \ No newline at end of file diff --git a/experiment/assignment/js/carpe-slider.js b/experiment/assignment/js/carpe-slider.js new file mode 100644 index 0000000..5889b2c --- /dev/null +++ b/experiment/assignment/js/carpe-slider.js @@ -0,0 +1,212 @@ +//---------------------------------+ +// CARPE S l i d e r 1.5.1 | +// 2008 - 07 - 09 | +// By Tom Hermansson Snickars | +// Copyright CARPE Design | +// http://carpe.ambiprospect.com/ | +//---------------------------------+ + +// Global vars. You don't need to make changes here to change your sliders. +// Changing the attributes in your (X)HTML file is enough. +var carpemouseover = false; +var carpeDefaultSliderLength = 100; +var carpeSliderDefaultOrientation = 'horizontal'; +var carpeSliderClassName = 'carpe_slider'; +var carpeSliderDisplayClassName = 'carpe_slider_display'; +var carpesliders = []; +var carpedisplays = []; +var carpeslider = {}; +var carpedisplay = {}; + +// carpeAddLoadEvent +function carpeAddLoadEvent(func) +{ + var oldonload = window.onload; + if (typeof window.onload != 'function') { + window.onload = func; + } + else { + window.onload = function() { + oldonload(); + func(); + }; + } +} +// carpeGetElementsByClass: Cross-browser function that returns +// an array with all elements that have a class attribute that +// contains className +function carpeGetElementsByClass(className) +{ + var classElements = new Array(); + var els = document.getElementsByTagName("*"); + var elsLen = els.length; + var pattern = new RegExp("\\b" + className + "\\b"); + for (var i = 0, j = 0; i < elsLen; i++) { + if ( pattern.test(els[i].className) ) { + classElements[j] = els[i]; + j++; + } + } + return classElements; +} +// carpeLeft: Cross-browser version of "element.style.left" +// Returns or sets the horizontal position of an element. +function carpeLeft(elmnt, pos) +{ + if (!(elmnt = document.getElementById(elmnt))) return 0; + if (elmnt.style && (typeof(elmnt.style.left) == 'string')) { + if (typeof(pos) == 'number') elmnt.style.left = pos + 'px'; + else { + pos = parseInt(elmnt.style.left); + if (isNaN(pos)) pos = 0; + } + } + else if (elmnt.style && elmnt.style.pixelLeft) { + if (typeof(pos) == 'number') elmnt.style.pixelLeft = pos; + else pos = elmnt.style.pixelLeft; + } + return pos; +} +// carpeTop: Cross-browser version of "element.style.top" +// Returns or sets the vertical position of an element. +function carpeTop(elmnt, pos) +{ + if (!(elmnt = document.getElementById(elmnt))) return 0; + if (elmnt.style && (typeof(elmnt.style.top) == 'string')) { + if (typeof(pos) == 'number') elmnt.style.top = pos + 'px'; + else { + pos = parseInt(elmnt.style.top); + if (isNaN(pos)) pos = 0; + } + } + else if (elmnt.style && elmnt.style.pixelTop) { + if (typeof(pos) == 'number') elmnt.style.pixelTop = pos; + else pos = elmnt.style.pixelTop; + } + return pos; +} +// moveSlider: Handles slider and display while dragging +function moveSlider(evnt) +{ + var evnt = (!evnt) ? window.event : evnt; // The mousemove event + if (carpemouseover) { // Only if slider is dragged + carpeslider.x = carpeslider.startOffsetX + evnt.screenX; // Horizontal mouse position relative to allowed slider positions + carpeslider.y = carpeslider.startOffsetY + evnt.screenY; // Horizontal mouse position relative to allowed slider positions + if (carpeslider.x > carpeslider.xMax) carpeslider.x = carpeslider.xMax; // Limit horizontal movement + if (carpeslider.x < 0) carpeslider.x = 0; // Limit horizontal movement + if (carpeslider.y > carpeslider.yMax) carpeslider.y = carpeslider.yMax; // Limit vertical movement + if (carpeslider.y < 0) carpeslider.y = 0; // Limit vertical movement + carpeLeft(carpeslider.id, carpeslider.x); // move slider to new horizontal position + carpeTop(carpeslider.id, carpeslider.y); // move slider to new vertical position + var sliderVal = carpeslider.x + carpeslider.y; // pixel value of slider regardless of orientation + var sliderPos = (carpeslider.distance / carpedisplay.valuecount) * + Math.round(carpedisplay.valuecount * sliderVal / carpeslider.distance); + var v = Math.round((sliderPos * carpeslider.scale + carpeslider.from) * // calculate display value + Math.pow(10, carpedisplay.decimals)) / Math.pow(10, carpedisplay.decimals); + carpedisplay.value = v; // put the new value in the slider display element + return false; + } + return +} +// slide: Handles the start of a slider move. +function slide(evnt) +{ + if (!evnt) evnt = window.event; // Get the mouse event causing the slider activation. + carpeslider = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated slider element. + var dist = parseInt(carpeslider.getAttribute('distance')); // The allowed slider movement in pixels. + carpeslider.distance = dist ? dist : carpeDefaultSliderLength; // Deafault distance from global var. + var ori = carpeslider.getAttribute('orientation'); // Slider orientation: 'horizontal' or 'vertical'. + var orientation = ((ori == 'horizontal') || (ori == 'vertical')) ? ori : carpeSliderDefaultOrientation; + // Default orientation from global variable. + var displayId = carpeslider.getAttribute('display'); // ID of associated display element. + carpedisplay = document.getElementById(displayId); // Get the associated display element. + carpedisplay.sliderId = carpeslider.id; // Associate the display with the correct slider. + var dec = parseInt(carpedisplay.getAttribute('decimals')); // Number of decimals to be displayed. + carpedisplay.decimals = dec ? dec : 0; // Default number of decimals: 0. + var val = parseInt(carpedisplay.getAttribute('valuecount')) // Allowed number of values in the interval. + carpedisplay.valuecount = val ? val : carpeslider.distance + 1 // Default number of values: the sliding distance. + var from = parseFloat(carpedisplay.getAttribute('from')) // Min/start value for the display. + from = from ? from : 0 // Default min/start value: 0. + var to = parseFloat(carpedisplay.getAttribute('to')) // Max value for the display. + to = to ? to : carpeslider.distance // Default number of values: the sliding distance. + carpeslider.scale = (to - from) / carpeslider.distance // Slider-display scale [value-change per pixel of movement]. + if (orientation == 'vertical') { // Set limits and scale for vertical sliders. + carpeslider.from = to // Invert for vertical sliders. "Higher is more." + carpeslider.xMax = 0 + carpeslider.yMax = carpeslider.distance + carpeslider.scale = -carpeslider.scale // Invert scale for vertical sliders. "Higher is more." + } + else { // Set limits for horizontal sliders. + carpeslider.from = from; + carpeslider.xMax = carpeslider.distance; + carpeslider.yMax = 0; + } + carpeslider.startOffsetX = carpeLeft(carpeslider.id) - evnt.screenX; // Slider-mouse horizontal offset at start of slide. + carpeslider.startOffsetY = carpeTop(carpeslider.id) - evnt.screenY; // Slider-mouse vertical offset at start of slide. + carpemouseover = true; + document.onmousemove = moveSlider; // Start the action if the mouse is dragged. + document.onmouseup = sliderMouseUp; // Stop sliding. + return false; +} +// sliderMouseUp: Handles the mouseup event after moving a slider. +// Snaps the slider position to allowed/displayed value. +function sliderMouseUp() +{ + if (carpemouseover) { + var v = (carpedisplay.value) ? carpedisplay.value : 0 // Find last display value. + var pos = (v - carpeslider.from)/(carpeslider.scale) // Calculate slider position (regardless of orientation). + if (carpeslider.yMax == 0) { + pos = (pos > carpeslider.xMax) ? carpeslider.xMax : pos; + pos = (pos < 0) ? 0 : pos; + carpeLeft(carpeslider.id, pos); // Snap horizontal slider to corresponding display position. + } + if (carpeslider.xMax == 0) { + pos = (pos > carpeslider.yMax) ? carpeslider.yMax : pos; + pos = (pos < 0) ? 0 : pos; + carpeTop(carpeslider.id, pos); // Snap vertical slider to corresponding display position. + } + if (document.removeEventListener) { // Remove event listeners from 'document' (W3C). + document.removeEventListener('mousemove', moveSlider, false); + document.removeEventListener('mouseup', sliderMouseUp, false); + } + else if (document.detachEvent) { // Remove event listeners from 'document' (IE). + document.detachEvent('onmousemove', moveSlider); + document.detachEvent('onmouseup', sliderMouseUp); + document.releaseCapture(); + } + } + carpemouseover = false; // Stop the sliding. +} +function resetPos () { + var pos,tmp; + for (var i = 0; i < carpesliders.length; i++) { + tmp = carpedisplays[i].defaultValue; + pos = (tmp - carpesliders[i].from)/(carpesliders[i].scale) // Calculate slider position (regardless of orientation). + carpeLeft(carpesliders[i].id, pos); // Snap horizontal slider to corresponding display position. + carpedisplays[i].value = tmp; // Resets display on page reload. + } + return; +} +function focusDisplay(evnt) +{ + if (!evnt) evnt = window.event; // Get the mouse event causing the display activation. + var carpedisplay = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated display element. + var lock = carpedisplay.getAttribute('typelock'); // Is the user allowed to type into the display? + if (lock == 'on') { + carpedisplay.blur(); + } + return; +} +function carpeInit() // Set up the sliders and the displays. +{ + carpesliders = carpeGetElementsByClass(carpeSliderClassName) // Find the horizontal sliders. + for (var i = 0; i < carpesliders.length; i++) { + carpesliders[i].addEventListener("mousedown",slide,true); // Attach event listener. + } + carpedisplays = carpeGetElementsByClass(carpeSliderDisplayClassName) // Find the displays. + for (var i = 0; i < carpedisplays.length; i++) { + carpedisplays[i].value = carpedisplays[i].defaultValue; // Resets display on page reload. + carpedisplays[i].onfocus = focusDisplay; // Attach event listener. + } +} +carpeAddLoadEvent(carpeInit); diff --git a/experiment/assignment/js/jquery-1.4.2.min.js b/experiment/assignment/js/jquery-1.4.2.min.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/experiment/assignment/js/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
    a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

    ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
    ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
    "; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/experiment/assignment/js/jquery-1.js b/experiment/assignment/js/jquery-1.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/experiment/assignment/js/jquery-1.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
    a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

    ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
    ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
    "; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/experiment/assignment/js/jquery-ui-1.8.4.custom.min.js b/experiment/assignment/js/jquery-ui-1.8.4.custom.min.js new file mode 100644 index 0000000..437d104 --- /dev/null +++ b/experiment/assignment/js/jquery-ui-1.8.4.custom.min.js @@ -0,0 +1,137 @@ +/*! + * jQuery UI 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); +b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): +this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); +this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Accordion 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var f=d.closest(".ui-accordion-header");a.active=f.length?f:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",function(g){return a._keydown(g)}).next().attr("role", +"tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(g){a._clickHandler.call(a,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers); +this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(g){c(a.target).attr("tabIndex",-1);c(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected); +a.next().addClass("ui-accordion-content-active")}h=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):h,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(h,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},h=this.active=c([]);this._toggle(h,f,g)}},_toggle:function(a,b,d,f,g){var h=this,e=h.options;h.toShow=a;h.toHide=b;h.data=d;var j=function(){if(h)return h._completed.apply(h,arguments)};h._trigger("changestart",null,h.data);h.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]),toHide:b,complete:j, +down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!f[k]&&!c.easing[k])k="slide";f[k]||(f[k]=function(l){this.slide(l,{easing:k,duration:i||700})}); +f[k](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.4",animations:{slide:function(a, +b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},h={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){h[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);g[i]={value:j[1], +unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(h,{step:function(j,i){if(i.prop=="height")f=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=f*g[i.prop].value+g[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide", +paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Button 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",i);this._determineButtonType(); +this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button", +function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button", +function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button", +function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")? +"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("label[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()); +this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed", +true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"), +c=a("").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Slider 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");b.disabled&&this.element.addClass("ui-slider-disabled ui-disabled"); +this.range=d([]);if(b.range){if(b.range===true){this.range=d("
    ");if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}else this.range=d("
    ");this.range.appendTo(this.element).addClass("ui-slider-range");if(b.range==="min"||b.range==="max")this.range.addClass("ui-slider-range-"+b.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(b.values&&b.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!a.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");h=a._start(c,f);if(h===false)return}break}i=a.options.step;h=a.options.values&&a.options.values.length?(g=a.values(f)):(g=a.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=a._valueMin();break;case d.ui.keyCode.END:g=a._valueMax();break;case d.ui.keyCode.PAGE_UP:g=a._trimAlignValue(h+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=a._trimAlignValue(h-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +a._valueMax())return;g=a._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===a._valueMin())return;g=a._trimAlignValue(h-i);break}a._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(c,e);a._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(a){var b=this.options,c,e,f,h,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(b.range===true&&this.values(1)===b.min){g+=1;f=d(this.handles[g])}if(this._start(a, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();b=f.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-f.width()/2,top:a.pageY-b.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b= +this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b= +this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b); +c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var e;if(this.options.values&&this.options.values.length){e=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>e||b===1&&c1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;fthis._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=a%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a= +this.options.range,b=this.options,c=this,e=!this._animateOff?b.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({width:f- +g+"%"},{queue:false,duration:b.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:b.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"}, +b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.4"})})(jQuery); +; \ No newline at end of file diff --git a/experiment/assignment/js/jquery.flot.js b/experiment/assignment/js/jquery.flot.js new file mode 100644 index 0000000..6534a46 --- /dev/null +++ b/experiment/assignment/js/jquery.flot.js @@ -0,0 +1,2119 @@ +/* Javascript plotting library for jQuery, v. 0.6. + * + * Released under the MIT license by IOLA, December 2007. + * + */ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.0. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() work in-place instead of returning + * new objects. + */ +(function(){jQuery.color={};jQuery.color.make=function(E,D,B,C){var F={};F.r=E||0;F.g=D||0;F.b=B||0;F.a=C!=null?C:1;F.add=function(I,H){for(var G=0;G=1){return"rgb("+[F.r,F.g,F.b].join(",")+")"}else{return"rgba("+[F.r,F.g,F.b,F.a].join(",")+")"}};F.normalize=function(){function G(I,J,H){return JH?H:J)}F.r=G(0,parseInt(F.r),255);F.g=G(0,parseInt(F.g),255);F.b=G(0,parseInt(F.b),255);F.a=G(0,F.a,1);return F};F.clone=function(){return jQuery.color.make(F.r,F.b,F.g,F.a)};return F.normalize()};jQuery.color.extract=function(C,B){var D;do{D=C.css(B).toLowerCase();if(D!=""&&D!="transparent"){break}C=C.parent()}while(!jQuery.nodeName(C.get(0),"body"));if(D=="rgba(0, 0, 0, 0)"){D="transparent"}return jQuery.color.parse(D)};jQuery.color.parse=function(E){var D,B=jQuery.color.make;if(D=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(E)){return B(parseInt(D[1],10),parseInt(D[2],10),parseInt(D[3],10))}if(D=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E)){return B(parseInt(D[1],10),parseInt(D[2],10),parseInt(D[3],10),parseFloat(D[4]))}if(D=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(E)){return B(parseFloat(D[1])*2.55,parseFloat(D[2])*2.55,parseFloat(D[3])*2.55)}if(D=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E)){return B(parseFloat(D[1])*2.55,parseFloat(D[2])*2.55,parseFloat(D[3])*2.55,parseFloat(D[4]))}if(D=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(E)){return B(parseInt(D[1],16),parseInt(D[2],16),parseInt(D[3],16))}if(D=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(E)){return B(parseInt(D[1]+D[1],16),parseInt(D[2]+D[2],16),parseInt(D[3]+D[3],16))}var C=jQuery.trim(E).toLowerCase();if(C=="transparent"){return B(255,255,255,0)}else{D=A[C];return B(D[0],D[1],D[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(); + +// the actual Flot code +(function($) { + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85 // set to 0 to avoid background + }, + xaxis: { + mode: null, // null or "time" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + + // mode specific options + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null, // number or [number, "unit"] + monthNames: null, // list of names of months + timeformat: null, // format string to use + twelveHourClock: false // 12 or 24 time in time mode + }, + yaxis: { + autoscaleMargin: 0.02 + }, + x2axis: { + autoscaleMargin: null + }, + y2axis: { + autoscaleMargin: 0.02 + }, + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff" + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // or "center" + horizontal: false // when horizontal, left is now top + }, + shadowSize: 3 + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + tickColor: "rgba(0,0,0,0.15)", // color used for the ticks + labelMargin: 5, // in pixels + borderWidth: 2, // in pixels + borderColor: null, // set if different from the grid color + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + hooks: {} + }, + canvas = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + axes = { xaxis: {}, yaxis: {}, x2axis: {}, y2axis: {} }, + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + canvasWidth = 0, canvasHeight = 0, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + draw: [], + bindEvents: [], + drawOverlay: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return canvas; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function() { return series; }; + plot.getAxes = function() { return axes; }; + plot.getOptions = function() { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { left: parseInt(axisSpecToRealAxis(point, "xaxis").p2c(+point.x) + plotOffset.left), + top: parseInt(axisSpecToRealAxis(point, "yaxis").p2c(+point.y) + plotOffset.top) }; + }; + + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + constructCanvas(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + $.extend(true, options, opts); + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize) + options.series.shadowSize = options.shadowSize; + + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisSpecToRealAxis(obj, attr) { + var a = obj[attr]; + if (!a || a == 1) + return axes[attr]; + if (typeof a == "number") + return axes[attr.charAt(0) + a + attr.slice(1)]; + return a; // assume it's OK + } + + function fillInSeriesOptions() { + var i; + + // collect what we already got of colors + var neededColors = series.length, + usedColors = [], + assignedColors = []; + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + --neededColors; + if (typeof sc == "number") + assignedColors.push(sc); + else + usedColors.push($.color.parse(series[i].color)); + } + } + + // we might need to generate more colors if higher indices + // are assigned + for (i = 0; i < assignedColors.length; ++i) { + neededColors = Math.max(neededColors, assignedColors[i] + 1); + } + + // produce colors as needed + var colors = [], variation = 0; + i = 0; + while (colors.length < neededColors) { + var c; + if (options.colors.length == i) // check degenerate case + c = $.color.make(100, 100, 100); + else + c = $.color.parse(options.colors[i]); + + // vary color if needed + var sign = variation % 2 == 1 ? -1 : 1; + c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2) + + // FIXME: if we're getting to close to something else, + // we should probably skip this one + colors.push(c); + + ++i; + if (i >= options.colors.length) { + i = 0; + ++variation; + } + } + + // fill in the options + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // setup axes + s.xaxis = axisSpecToRealAxis(s, "xaxis"); + s.yaxis = axisSpecToRealAxis(s, "yaxis"); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p; + + for (axis in axes) { + axes[axis].datamin = topSentry; + axes[axis].datamax = bottomSentry; + axes[axis].used = false; + } + + function updateAxis(axis, min, max) { + if (min < axis.datamin) + axis.datamin = min; + if (max > axis.datamax) + axis.datamax = max; + } + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + var data = s.data, format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show) + format.push({ y: true, number: true, required: false, defaultValue: 0 }); + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + if (s.datapoints.pointsize == null) + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.x) + updateAxis(s.xaxis, val, val); + if (f.y) + updateAxis(s.yaxis, val, val); + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points, + ps = s.datapoints.pointsize; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta = s.bars.align == "left" ? 0 : -s.bars.barWidth/2; + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + for (axis in axes) { + if (axes[axis].datamin == topSentry) + axes[axis].datamin = null; + if (axes[axis].datamax == bottomSentry) + axes[axis].datamax = null; + } + } + + function constructCanvas() { + function makeCanvas(width, height) { + var c = document.createElement('canvas'); + c.width = width; + c.height = height; + if ($.browser.msie) // excanvas hack + c = window.G_vmlCanvasManager.initElement(c); + return c; + } + + canvasWidth = placeholder.width(); + canvasHeight = placeholder.height(); + placeholder.html(""); // clear placeholder + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + if (canvasWidth <= 0 || canvasHeight <= 0) + throw "Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight; + + if ($.browser.msie) // excanvas hack + window.G_vmlCanvasManager.init_(document); // make sure everything is setup + + // the canvas + canvas = $(makeCanvas(canvasWidth, canvasHeight)).appendTo(placeholder).get(0); + ctx = canvas.getContext("2d"); + + // overlay canvas for interactive features + overlay = $(makeCanvas(canvasWidth, canvasHeight)).css({ position: 'absolute', left: 0, top: 0 }).appendTo(placeholder).get(0); + octx = overlay.getContext("2d"); + octx.stroke(); + } + + function bindEvents() { + // we include the canvas in the event holder too, because IE 7 + // sometimes has trouble with the stacking order + eventHolder = $([overlay, canvas]); + + // bind events + if (options.grid.hoverable) + eventHolder.mousemove(onMouseMove); + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function setupGrid() { + function setTransformationHelpers(axis, o) { + function identity(x) { return x; } + + var s, m, t = o.transform || identity, + it = o.inverseTransform; + + // add transformation helpers + if (axis == axes.xaxis || axis == axes.x2axis) { + // precompute how much the axis is scaling a point + // in canvas space + s = axis.scale = plotWidth / (t(axis.max) - t(axis.min)); + m = t(axis.min); + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + else { + s = axis.scale = plotHeight / (t(axis.max) - t(axis.min)); + m = t(axis.max); + + if (t == identity) + axis.p2c = function (p) { return (m - p) * s; }; + else + axis.p2c = function (p) { return (m - t(p)) * s; }; + if (!it) + axis.c2p = function (c) { return m - c / s; }; + else + axis.c2p = function (c) { return it(m - c / s); }; + } + } + + function measureLabels(axis, axisOptions) { + var i, labels = [], l; + + axis.labelWidth = axisOptions.labelWidth; + axis.labelHeight = axisOptions.labelHeight; + + if (axis == axes.xaxis || axis == axes.x2axis) { + // to avoid measuring the widths of the labels, we + // construct fixed-size boxes and put the labels inside + // them, we don't need the exact figures and the + // fixed-size box content is easy to center + if (axis.labelWidth == null) + axis.labelWidth = canvasWidth / (axis.ticks.length > 0 ? axis.ticks.length : 1); + + // measure x label heights + if (axis.labelHeight == null) { + labels = []; + for (i = 0; i < axis.ticks.length; ++i) { + l = axis.ticks[i].label; + if (l) + labels.push('
    ' + l + '
    '); + } + + if (labels.length > 0) { + var dummyDiv = $('
    ' + + labels.join("") + '
    ').appendTo(placeholder); + axis.labelHeight = dummyDiv.height(); + dummyDiv.remove(); + } + } + } + else if (axis.labelWidth == null || axis.labelHeight == null) { + // calculate y label dimensions + for (i = 0; i < axis.ticks.length; ++i) { + l = axis.ticks[i].label; + if (l) + labels.push('
    ' + l + '
    '); + } + + if (labels.length > 0) { + var dummyDiv = $('
    ' + + labels.join("") + '
    ').appendTo(placeholder); + if (axis.labelWidth == null) + axis.labelWidth = dummyDiv.width(); + if (axis.labelHeight == null) + axis.labelHeight = dummyDiv.find("div").height(); + dummyDiv.remove(); + } + + } + + if (axis.labelWidth == null) + axis.labelWidth = 0; + if (axis.labelHeight == null) + axis.labelHeight = 0; + } + + function setGridSpacing() { + // get the most space needed around the grid for things + // that may stick out + var maxOutset = options.grid.borderWidth; + for (i = 0; i < series.length; ++i) + maxOutset = Math.max(maxOutset, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + + plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = maxOutset; + + var margin = options.grid.labelMargin + options.grid.borderWidth; + + if (axes.xaxis.labelHeight > 0) + plotOffset.bottom = Math.max(maxOutset, axes.xaxis.labelHeight + margin); + if (axes.yaxis.labelWidth > 0) + plotOffset.left = Math.max(maxOutset, axes.yaxis.labelWidth + margin); + if (axes.x2axis.labelHeight > 0) + plotOffset.top = Math.max(maxOutset, axes.x2axis.labelHeight + margin); + if (axes.y2axis.labelWidth > 0) + plotOffset.right = Math.max(maxOutset, axes.y2axis.labelWidth + margin); + + plotWidth = canvasWidth - plotOffset.left - plotOffset.right; + plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top; + } + + var axis; + for (axis in axes) + setRange(axes[axis], options[axis]); + + if (options.grid.show) { + for (axis in axes) { + prepareTickGeneration(axes[axis], options[axis]); + setTicks(axes[axis], options[axis]); + measureLabels(axes[axis], options[axis]); + } + + setGridSpacing(); + } + else { + plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0; + plotWidth = canvasWidth; + plotHeight = canvasHeight; + } + + for (axis in axes) + setTransformationHelpers(axes[axis], options[axis]); + + if (options.grid.show) + insertLabels(); + + insertLegend(); + } + + function setRange(axis, axisOptions) { + var min = +(axisOptions.min != null ? axisOptions.min : axis.datamin), + max = +(axisOptions.max != null ? axisOptions.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (axisOptions.min == null) + min -= widen; + // alway widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (axisOptions.max == null || axisOptions.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = axisOptions.autoscaleMargin; + if (margin != null) { + if (axisOptions.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (axisOptions.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function prepareTickGeneration(axis, axisOptions) { + // estimate number of ticks + var noTicks; + if (typeof axisOptions.ticks == "number" && axisOptions.ticks > 0) + noTicks = axisOptions.ticks; + else if (axis == axes.xaxis || axis == axes.x2axis) + // heuristic based on the model a*sqrt(x) fitted to + // some reasonable data points + noTicks = 0.3 * Math.sqrt(canvasWidth); + else + noTicks = 0.3 * Math.sqrt(canvasHeight); + + var delta = (axis.max - axis.min) / noTicks, + size, generator, unit, formatter, i, magn, norm; + + if (axisOptions.mode == "time") { + // pretty handling of time + + // map of app. size of time units in milliseconds + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + var spec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"], [3, "month"], [6, "month"], + [1, "year"] + ]; + + var minSize = 0; + if (axisOptions.minTickSize != null) { + if (typeof axisOptions.tickSize == "number") + minSize = axisOptions.tickSize; + else + minSize = axisOptions.minTickSize[0] * timeUnitSize[axisOptions.minTickSize[1]]; + } + + for (i = 0; i < spec.length - 1; ++i) + if (delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) + break; + size = spec[i][0]; + unit = spec[i][1]; + + // special-case the possibility of several years + if (unit == "year") { + magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10)); + norm = (delta / timeUnitSize.year) / magn; + if (norm < 1.5) + size = 1; + else if (norm < 3) + size = 2; + else if (norm < 7.5) + size = 5; + else + size = 10; + + size *= magn; + } + + if (axisOptions.tickSize) { + size = axisOptions.tickSize[0]; + unit = axisOptions.tickSize[1]; + } + + generator = function(axis) { + var ticks = [], + tickSize = axis.tickSize[0], unit = axis.tickSize[1], + d = new Date(axis.min); + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") + d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize)); + if (unit == "minute") + d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize)); + if (unit == "hour") + d.setUTCHours(floorInBase(d.getUTCHours(), tickSize)); + if (unit == "month") + d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize)); + if (unit == "year") + d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize)); + + // reset smaller components + d.setUTCMilliseconds(0); + if (step >= timeUnitSize.minute) + d.setUTCSeconds(0); + if (step >= timeUnitSize.hour) + d.setUTCMinutes(0); + if (step >= timeUnitSize.day) + d.setUTCHours(0); + if (step >= timeUnitSize.day * 4) + d.setUTCDate(1); + if (step >= timeUnitSize.year) + d.setUTCMonth(0); + + + var carry = 0, v = Number.NaN, prev; + do { + prev = v; + v = d.getTime(); + ticks.push({ v: v, label: axis.tickFormatter(v, axis) }); + if (unit == "month") { + if (tickSize < 1) { + // a bit complicated - we'll divide the month + // up but we need to take care of fractions + // so we don't end up in the middle of a day + d.setUTCDate(1); + var start = d.getTime(); + d.setUTCMonth(d.getUTCMonth() + 1); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getUTCHours(); + d.setUTCHours(0); + } + else + d.setUTCMonth(d.getUTCMonth() + tickSize); + } + else if (unit == "year") { + d.setUTCFullYear(d.getUTCFullYear() + tickSize); + } + else + d.setTime(v + step); + } while (v < axis.max && v != prev); + + return ticks; + }; + + formatter = function (v, axis) { + var d = new Date(v); + + // first check global format + if (axisOptions.timeformat != null) + return $.plot.formatDate(d, axisOptions.timeformat, axisOptions.monthNames); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (axisOptions.twelveHourClock) ? " %p" : ""; + + if (t < timeUnitSize.minute) + fmt = "%h:%M:%S" + suffix; + else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) + fmt = "%h:%M" + suffix; + else + fmt = "%b %d %h:%M" + suffix; + } + else if (t < timeUnitSize.month) + fmt = "%b %d"; + else if (t < timeUnitSize.year) { + if (span < timeUnitSize.year) + fmt = "%b"; + else + fmt = "%b %y"; + } + else + fmt = "%y"; + + return $.plot.formatDate(d, fmt, axisOptions.monthNames); + }; + } + else { + // pretty rounding of base-10 numbers + var maxDec = axisOptions.tickDecimals; + var dec = -Math.floor(Math.log(delta) / Math.LN10); + if (maxDec != null && dec > maxDec) + dec = maxDec; + + magn = Math.pow(10, -dec); + norm = delta / magn; // norm is between 1.0 and 10.0 + + if (norm < 1.5) + size = 1; + else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } + else if (norm < 7.5) + size = 5; + else + size = 10; + + size *= magn; + + if (axisOptions.minTickSize != null && size < axisOptions.minTickSize) + size = axisOptions.minTickSize; + + if (axisOptions.tickSize != null) + size = axisOptions.tickSize; + + axis.tickDecimals = Math.max(0, (maxDec != null) ? maxDec : dec); + + generator = function (axis) { + var ticks = []; + + // spew out all possible ticks + var start = floorInBase(axis.min, axis.tickSize), + i = 0, v = Number.NaN, prev; + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push({ v: v, label: axis.tickFormatter(v, axis) }); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + formatter = function (v, axis) { + return v.toFixed(axis.tickDecimals); + }; + } + + axis.tickSize = unit ? [size, unit] : size; + axis.tickGenerator = generator; + if ($.isFunction(axisOptions.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + axisOptions.tickFormatter(v, axis); }; + else + axis.tickFormatter = formatter; + } + + function setTicks(axis, axisOptions) { + axis.ticks = []; + + if (!axis.used) + return; + + if (axisOptions.ticks == null) + axis.ticks = axis.tickGenerator(axis); + else if (typeof axisOptions.ticks == "number") { + if (axisOptions.ticks > 0) + axis.ticks = axis.tickGenerator(axis); + } + else if (axisOptions.ticks) { + var ticks = axisOptions.ticks; + + if ($.isFunction(ticks)) + // generate the ticks + ticks = ticks({ min: axis.min, max: axis.max }); + + // clean up the user-supplied ticks, copy them over + var i, v; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = t; + if (label == null) + label = axis.tickFormatter(v, axis); + axis.ticks[i] = { v: v, label: label }; + } + } + + if (axisOptions.autoscaleMargin != null && axis.ticks.length > 0) { + // snap to ticks + if (axisOptions.min == null) + axis.min = Math.min(axis.min, axis.ticks[0].v); + if (axisOptions.max == null && axis.ticks.length > 1) + axis.max = Math.max(axis.max, axis.ticks[axis.ticks.length - 1].v); + } + } + + function draw() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + + var grid = options.grid; + + if (grid.show && !grid.aboveData) + drawGrid(); + + for (var i = 0; i < series.length; ++i) + drawSeries(series[i]); + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) + drawGrid(); + } + + function extractRange(ranges, coord) { + var firstAxis = coord + "axis", + secondaryAxis = coord + "2axis", + axis, from, to, reverse; + + if (ranges[firstAxis]) { + axis = axes[firstAxis]; + from = ranges[firstAxis].from; + to = ranges[firstAxis].to; + } + else if (ranges[secondaryAxis]) { + axis = axes[secondaryAxis]; + from = ranges[secondaryAxis].from; + to = ranges[secondaryAxis].to; + } + else { + // backwards-compat stuff - to be removed in future + axis = axes[firstAxis]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) + return { from: to, to: from, axis: axis }; + + return { from: from, to: to, axis: axis }; + } + + function drawGrid() { + var i; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw background, if any + if (options.grid.backgroundColor) { + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + } + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) + // xmin etc. are backwards-compatible, to be removed in future + markings = markings({ xmin: axes.xaxis.min, xmax: axes.xaxis.max, ymin: axes.yaxis.min, ymax: axes.yaxis.max, xaxis: axes.xaxis, yaxis: axes.yaxis, x2axis: axes.x2axis, y2axis: axes.y2axis }); + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + if (xrange.from == xrange.to && yrange.from == yrange.to) + continue; + + // then draw + xrange.from = xrange.axis.p2c(xrange.from); + xrange.to = xrange.axis.p2c(xrange.to); + yrange.from = yrange.axis.p2c(yrange.from); + yrange.to = yrange.axis.p2c(yrange.to); + + if (xrange.from == xrange.to || yrange.from == yrange.to) { + // draw line + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; + //ctx.moveTo(Math.floor(xrange.from), yrange.from); + //ctx.lineTo(Math.floor(xrange.to), yrange.to); + ctx.moveTo(xrange.from, yrange.from); + ctx.lineTo(xrange.to, yrange.to); + ctx.stroke(); + } + else { + // fill area + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the inner grid + ctx.lineWidth = 1; + ctx.strokeStyle = options.grid.tickColor; + ctx.beginPath(); + var v, axis = axes.xaxis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axes.xaxis.max) + continue; // skip those lying on the axes + + ctx.moveTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, 0); + ctx.lineTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, plotHeight); + } + + axis = axes.yaxis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(0, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + ctx.lineTo(plotWidth, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + } + + axis = axes.x2axis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, -5); + ctx.lineTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, 5); + } + + axis = axes.y2axis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(plotWidth-5, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + ctx.lineTo(plotWidth+5, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + } + + ctx.stroke(); + + if (options.grid.borderWidth) { + // draw border + var bw = options.grid.borderWidth; + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + + ctx.restore(); + } + + function insertLabels() { + placeholder.find(".tickLabels").remove(); + + var html = ['
    ']; + + function addLabels(axis, labelGenerator) { + for (var i = 0; i < axis.ticks.length; ++i) { + var tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + html.push(labelGenerator(tick, axis)); + } + } + + var margin = options.grid.labelMargin + options.grid.borderWidth; + + addLabels(axes.xaxis, function (tick, axis) { + return '
    ' + tick.label + "
    "; + }); + + + addLabels(axes.yaxis, function (tick, axis) { + return '
    ' + tick.label + "
    "; + }); + + addLabels(axes.x2axis, function (tick, axis) { + return '
    ' + tick.label + "
    "; + }); + + addLabels(axes.y2axis, function (tick, axis) { + return '
    ' + tick.label + "
    "; + }); + + html.push('
    '); + + placeholder.append(html.join("")); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + top, lastX = 0, areaOpen = false; + + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (areaOpen && x1 != null && x2 == null) { + // close area + ctx.lineTo(axisx.p2c(lastX), axisy.p2c(bottom)); + ctx.fill(); + areaOpen = false; + continue; + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + lastX = x2; + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + lastX = x2; + continue; + } + + // else it's a bit more complicated, there might + // be two rectangles and two triangles we need to fill + // in; to find these keep track of the current x values + var x1old = x1, x2old = x2; + + // and clip the y values, without shortcutting + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + if (y1 <= axisy.min) + top = axisy.min; + else + top = axisy.max; + + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(top)); + ctx.lineTo(axisx.p2c(x1), axisy.p2c(top)); + } + + // fill the triangles + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + if (y2 <= axisy.min) + top = axisy.min; + else + top = axisy.max; + + ctx.lineTo(axisx.p2c(x2), axisy.p2c(top)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(top)); + } + + lastX = Math.max(x2, x2old); + } + + if (areaOpen) { + ctx.lineTo(axisx.p2c(lastX), axisy.p2c(bottom)); + ctx.fill(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, circumference, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + ctx.arc(axisx.p2c(x), axisy.p2c(y) + offset, radius, 0, circumference, false); + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.lines.lineWidth, + sw = series.shadowSize, + radius = series.points.radius; + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, Math.PI, + series.xaxis, series.yaxis); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, Math.PI, + series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, 2 * Math.PI, + series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.beginPath(); + c.moveTo(left, bottom); + c.lineTo(left, top); + c.lineTo(right, top); + c.lineTo(right, bottom); + c.fillStyle = fillStyleCallback(bottom, top); + c.fill(); + } + + // draw outline + if (drawLeft || drawRight || drawTop || drawBottom) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom + offset); + if (drawLeft) + c.lineTo(left, top + offset); + else + c.moveTo(left, top + offset); + if (drawTop) + c.lineTo(right, top + offset); + else + c.moveTo(right, top + offset); + if (drawRight) + c.lineTo(right, bottom + offset); + else + c.moveTo(right, bottom + offset); + if (drawBottom) + c.lineTo(left, bottom + offset); + else + c.moveTo(left, bottom + offset); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + placeholder.find(".legend").remove(); + + if (!options.legend.show) + return; + + var fragments = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + for (i = 0; i < series.length; ++i) { + s = series[i]; + label = s.label; + if (!label) + continue; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push(''); + rowStarted = true; + } + + if (lf) + label = lf(label, s); + + fragments.push( + '
    ' + + '' + label + ''); + } + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '' + fragments.join("") + '
    '; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
    ' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
    ').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
    ').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j; + + for (i = 0; i < series.length; ++i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + ps = s.datapoints.pointsize, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist <= smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + var barLeft = s.bars.align == "left" ? 0 : -s.bars.barWidth/2, + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + pos = { pageX: event.pageX, pageY: event.pageY }, + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top; + + if (axes.xaxis.used) + pos.x = axes.xaxis.c2p(canvasX); + if (axes.yaxis.used) + pos.y = axes.yaxis.c2p(canvasY); + if (axes.x2axis.used) + pos.x2 = axes.x2axis.c2p(canvasX); + if (axes.y2axis.used) + pos.y2 = axes.y2axis.c2p(canvasY); + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && h.point == item.datapoint)) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, 30); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + octx.clearRect(0, 0, canvasWidth, canvasHeight); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") + point = s.data[point]; + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") + point = s.data[point]; + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis; + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var radius = 1.5 * pointRadius; + octx.beginPath(); + octx.arc(axisx.p2c(x), axisy.p2c(y), radius, 0, 2 * Math.PI, false); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + 0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + c = $.color.parse(defaultColor).scale('rgb', c.brightness); + c.a *= c.opacity; + c = c.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + $.plot = function(placeholder, data, options) { + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + /*var t0 = new Date(); + var t1 = new Date(); + var tstr = "time used (msecs): " + (t1.getTime() - t0.getTime()) + if (window.console) + console.log(tstr); + else + alert(tstr);*/ + return plot; + }; + + $.plot.plugins = []; + + // returns a string with the date d formatted according to fmt + $.plot.formatDate = function(d, fmt, monthNames) { + var leftPad = function(n) { + n = "" + n; + return n.length == 1 ? "0" + n : n; + }; + + var r = []; + var escape = false; + var hours = d.getUTCHours(); + var isAM = hours < 12; + if (monthNames == null) + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + + if (fmt.search(/%p|%P/) != -1) { + if (hours > 12) { + hours = hours - 12; + } else if (hours == 0) { + hours = 12; + } + } + for (var i = 0; i < fmt.length; ++i) { + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'h': c = "" + hours; break; + case 'H': c = leftPad(hours); break; + case 'M': c = leftPad(d.getUTCMinutes()); break; + case 'S': c = leftPad(d.getUTCSeconds()); break; + case 'd': c = "" + d.getUTCDate(); break; + case 'm': c = "" + (d.getUTCMonth() + 1); break; + case 'y': c = "" + d.getUTCFullYear(); break; + case 'b': c = "" + monthNames[d.getUTCMonth()]; break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + } + r.push(c); + escape = false; + } + else { + if (c == "%") + escape = true; + else + r.push(c); + } + } + return r.join(""); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); diff --git a/experiment/assignment/js/jquery.imgareaselect.js b/experiment/assignment/js/jquery.imgareaselect.js new file mode 100644 index 0000000..198dffb --- /dev/null +++ b/experiment/assignment/js/jquery.imgareaselect.js @@ -0,0 +1,717 @@ + +/* + * imgAreaSelect jQuery plugin + * version 0.9.2 + * + * Copyright (c) 2008-2010 Michal Wojciechowski (odyniec.net) + * + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://odyniec.net/projects/imgareaselect/ + * + */ + +(function($) { + +var abs = Math.abs, + max = Math.max, + min = Math.min, + round = Math.round; + +function div() { + return $('
    '); +} + +$.imgAreaSelect = function (img, options) { + var + + $img = $(img), + + imgLoaded, + + $box = div(), + $area = div(), + $border = div().add(div()).add(div()).add(div()), + $outer = div().add(div()).add(div()).add(div()), + $handles = $([]), + + $areaOpera, + + left, top, + + imgOfs, + + imgWidth, imgHeight, + + $parent, + + parOfs, + + zIndex = 0, + + position = 'absolute', + + startX, startY, + + scaleX, scaleY, + + resizeMargin = 10, + + resize, + + minWidth, minHeight, maxWidth, maxHeight, + + aspectRatio, + + shown, + + x1, y1, x2, y2, + + selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 }, + + docElem = document.documentElement, + + $p, d, i, o, w, h, adjusted; + + function viewX(x) { + return x + imgOfs.left - parOfs.left; + } + + function viewY(y) { + return y + imgOfs.top - parOfs.top; + } + + function selX(x) { + return x - imgOfs.left + parOfs.left; + } + + function selY(y) { + return y - imgOfs.top + parOfs.top; + } + + function evX(event) { + return event.pageX - parOfs.left; + } + + function evY(event) { + return event.pageY - parOfs.top; + } + + function getSelection(noScale) { + var sx = noScale || scaleX, sy = noScale || scaleY; + + return { x1: round(selection.x1 * sx), + y1: round(selection.y1 * sy), + x2: round(selection.x2 * sx), + y2: round(selection.y2 * sy), + width: round(selection.x2 * sx) - round(selection.x1 * sx), + height: round(selection.y2 * sy) - round(selection.y1 * sy) }; + } + + function setSelection(x1, y1, x2, y2, noScale) { + var sx = noScale || scaleX, sy = noScale || scaleY; + + selection = { + x1: round(x1 / sx), + y1: round(y1 / sy), + x2: round(x2 / sx), + y2: round(y2 / sy) + }; + + selection.width = selection.x2 - selection.x1; + selection.height = selection.y2 - selection.y1; + } + + function adjust() { + if (!$img.width()) + return; + + imgOfs = { left: round($img.offset().left), top: round($img.offset().top) }; + + imgWidth = $img.width(); + imgHeight = $img.height(); + + minWidth = options.minWidth || 0; + minHeight = options.minHeight || 0; + maxWidth = min(options.maxWidth || 1<<24, imgWidth); + maxHeight = min(options.maxHeight || 1<<24, imgHeight); + + if ($().jquery == '1.3.2' && position == 'fixed' && + !docElem['getBoundingClientRect']) + { + imgOfs.top += max(document.body.scrollTop, docElem.scrollTop); + imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft); + } + + parOfs = $.inArray($parent.css('position'), ['absolute', 'relative']) + 1 ? + { left: round($parent.offset().left) - $parent.scrollLeft(), + top: round($parent.offset().top) - $parent.scrollTop() } : + position == 'fixed' ? + { left: $(document).scrollLeft(), top: $(document).scrollTop() } : + { left: 0, top: 0 }; + + left = viewX(0); + top = viewY(0); + + if (selection.x2 > imgWidth || selection.y2 > imgHeight) + doResize(); + } + + function update(resetKeyPress) { + if (!shown) return; + + $box.css({ left: viewX(selection.x1), top: viewY(selection.y1) }) + .add($area).width(w = selection.width).height(h = selection.height); + + $area.add($border).add($handles).css({ left: 0, top: 0 }); + + $border + .width(max(w - $border.outerWidth() + $border.innerWidth(), 0)) + .height(max(h - $border.outerHeight() + $border.innerHeight(), 0)); + + $($outer[0]).css({ left: left, top: top, + width: selection.x1, height: imgHeight }); + $($outer[1]).css({ left: left + selection.x1, top: top, + width: w, height: selection.y1 }); + $($outer[2]).css({ left: left + selection.x2, top: top, + width: imgWidth - selection.x2, height: imgHeight }); + $($outer[3]).css({ left: left + selection.x1, top: top + selection.y2, + width: w, height: imgHeight - selection.y2 }); + + w -= $handles.outerWidth(); + h -= $handles.outerHeight(); + + switch ($handles.length) { + case 8: + $($handles[4]).css({ left: w / 2 }); + $($handles[5]).css({ left: w, top: h / 2 }); + $($handles[6]).css({ left: w / 2, top: h }); + $($handles[7]).css({ top: h / 2 }); + case 4: + $handles.slice(1,3).css({ left: w }); + $handles.slice(2,4).css({ top: h }); + } + + if (resetKeyPress !== false) { + if ($.imgAreaSelect.keyPress != docKeyPress) + $(document).unbind($.imgAreaSelect.keyPress, + $.imgAreaSelect.onKeyPress); + + if (options.keys) + $(document)[$.imgAreaSelect.keyPress]( + $.imgAreaSelect.onKeyPress = docKeyPress); + } + + if ($.browser.msie && $border.outerWidth() - $border.innerWidth() == 2) { + $border.css('margin', 0); + setTimeout(function () { $border.css('margin', 'auto'); }, 0); + } + } + + function doUpdate(resetKeyPress) { + adjust(); + update(resetKeyPress); + x1 = viewX(selection.x1); y1 = viewY(selection.y1); + x2 = viewX(selection.x2); y2 = viewY(selection.y2); + } + + function hide($elem, fn) { + options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide(); + + } + + function areaMouseMove(event) { + var x = selX(evX(event)) - selection.x1, + y = selY(evY(event)) - selection.y1; + + if (!adjusted) { + adjust(); + adjusted = true; + + $box.one('mouseout', function () { adjusted = false; }); + } + + resize = ''; + + if (options.resizable) { + if (y <= resizeMargin) + resize = 'n'; + else if (y >= selection.height - resizeMargin) + resize = 's'; + if (x <= resizeMargin) + resize += 'w'; + else if (x >= selection.width - resizeMargin) + resize += 'e'; + } + + $box.css('cursor', resize ? resize + '-resize' : + options.movable ? 'move' : ''); + if ($areaOpera) + $areaOpera.toggle(); + } + + function docMouseUp(event) { + $('body').css('cursor', ''); + + if (options.autoHide || selection.width * selection.height == 0) + hide($box.add($outer), function () { $(this).hide(); }); + + options.onSelectEnd(img, getSelection()); + + + $(document).unbind('mousemove', selectingMouseMove); + $box.mousemove(areaMouseMove); + } + + function areaMouseDown(event) { + if (event.which != 1) return false; + + adjust(); + + if (resize) { + $('body').css('cursor', resize + '-resize'); + + x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']); + y1 = viewY(selection[/n/.test(resize) ? 'y2' : 'y1']); + + $(document).mousemove(selectingMouseMove) + .one('mouseup', docMouseUp); + $box.unbind('mousemove', areaMouseMove); + } + else if (options.movable) { + startX = left + selection.x1 - evX(event); + startY = top + selection.y1 - evY(event); + + $box.unbind('mousemove', areaMouseMove); + + $(document).mousemove(movingMouseMove) + .one('mouseup', function () { + + set_crop(); + toggleMosaic(); + options.onSelectEnd(img, getSelection()); + + $(document).unbind('mousemove', movingMouseMove); + $box.mousemove(areaMouseMove); + }); + } + else + $img.mousedown(event); + + return false; + } + + function fixAspectRatio(xFirst) { + if (aspectRatio) + if (xFirst) { + x2 = max(left, min(left + imgWidth, + x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1))); + + y2 = round(max(top, min(top + imgHeight, + y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1)))); + x2 = round(x2); + } + else { + y2 = max(top, min(top + imgHeight, + y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))); + x2 = round(max(left, min(left + imgWidth, + x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)))); + y2 = round(y2); + } + } + + function doResize() { + x1 = min(x1, left + imgWidth); + y1 = min(y1, top + imgHeight); + + if (abs(x2 - x1) < minWidth) { + x2 = x1 - minWidth * (x2 < x1 || -1); + + if (x2 < left) + x1 = left + minWidth; + else if (x2 > left + imgWidth) + x1 = left + imgWidth - minWidth; + } + + if (abs(y2 - y1) < minHeight) { + y2 = y1 - minHeight * (y2 < y1 || -1); + + if (y2 < top) + y1 = top + minHeight; + else if (y2 > top + imgHeight) + y1 = top + imgHeight - minHeight; + } + + x2 = max(left, min(x2, left + imgWidth)); + y2 = max(top, min(y2, top + imgHeight)); + + fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio); + + if (abs(x2 - x1) > maxWidth) { + x2 = x1 - maxWidth * (x2 < x1 || -1); + fixAspectRatio(); + } + + if (abs(y2 - y1) > maxHeight) { + y2 = y1 - maxHeight * (y2 < y1 || -1); + fixAspectRatio(true); + } + + selection = { x1: selX(min(x1, x2)), x2: selX(max(x1, x2)), + y1: selY(min(y1, y2)), y2: selY(max(y1, y2)), + width: abs(x2 - x1), height: abs(y2 - y1) }; + + update(); + + options.onSelectChange(img, getSelection()); + } + + function selectingMouseMove(event) { + x2 = resize == '' || /w|e/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2); + y2 = resize == '' || /n|s/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2); + + doResize(); + + return false; + + } + + function doMove(newX1, newY1) { + x2 = (x1 = newX1) + selection.width; + y2 = (y1 = newY1) + selection.height; + + $.extend(selection, { x1: selX(x1), y1: selY(y1), x2: selX(x2), + y2: selY(y2) }); + + update(); + + options.onSelectChange(img, getSelection()); + } + + function movingMouseMove(event) { + x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width)); + y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height)); + + doMove(x1, y1); + + event.preventDefault(); + + return false; + } + + function startSelection() { + adjust(); + + x2 = x1; + y2 = y1; + + doResize(); + + resize = ''; + + if ($outer.is(':not(:visible)')) + $box.add($outer).hide().fadeIn(options.fadeSpeed||0); + + shown = true; + + $(document).unbind('mouseup', cancelSelection) + .mousemove(selectingMouseMove).one('mouseup', docMouseUp); + $box.unbind('mousemove', areaMouseMove); + + options.onSelectStart(img, getSelection()); + } + + function cancelSelection() { + $(document).unbind('mousemove', startSelection); + hide($box.add($outer)); + + selection = { x1: selX(x1), y1: selY(y1), x2: selX(x1), y2: selY(y1), + width: 0, height: 0 }; + + options.onSelectChange(img, getSelection()); + options.onSelectEnd(img, getSelection()); + } + + function imgMouseDown(event) { + if (event.which != 1 || $outer.is(':animated')) return false; + + adjust(); + startX = x1 = evX(event); + startY = y1 = evY(event); + $(document).one('mousemove', startSelection) + .one('mouseup', cancelSelection); + + return false; + } + + function windowResize() { + doUpdate(false); + } + + function imgLoad() { + imgLoaded = true; + + setOptions(options = $.extend({ + classPrefix: 'imgareaselect', + movable: true, + resizable: true, + parent: 'body', + onInit: function () {}, + onSelectStart: function () {}, + onSelectChange: function () {}, + onSelectEnd: function () {} + }, options)); + + $box.add($outer).css({ visibility: '' }); + + if (options.show) { + shown = true; + adjust(); + update(); + $box.add($outer).hide().fadeIn(options.fadeSpeed||0); + } + + setTimeout(function () { options.onInit(img, getSelection()); }, 0); + } + + var docKeyPress = function(event) { + var k = options.keys, d, t, key = event.keyCode; + + d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt : + !isNaN(k.ctrl) && event.ctrlKey ? k.ctrl : + !isNaN(k.shift) && event.shiftKey ? k.shift : + !isNaN(k.arrows) ? k.arrows : 10; + + if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) || + (k.ctrl == 'resize' && event.ctrlKey) || + (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey))) + { + switch (key) { + case 37: + d = -d; + case 39: + t = max(x1, x2); + x1 = min(x1, x2); + x2 = max(t + d, x1); + fixAspectRatio(); + break; + case 38: + d = -d; + case 40: + t = max(y1, y2); + y1 = min(y1, y2); + y2 = max(t + d, y1); + fixAspectRatio(true); + break; + default: + return; + } + + doResize(); + } + else { + x1 = min(x1, x2); + y1 = min(y1, y2); + + switch (key) { + case 37: + doMove(max(x1 - d, left), y1); + break; + case 38: + doMove(x1, max(y1 - d, top)); + break; + case 39: + doMove(x1 + min(d, imgWidth - selX(x2)), y1); + break; + case 40: + doMove(x1, y1 + min(d, imgHeight - selY(y2))); + break; + default: + return; + } + } + + return false; + }; + + function styleOptions($elem, props) { + for (option in props) + if (options[option] !== undefined) + $elem.css(props[option], options[option]); + } + + function setOptions(newOptions) { + if (newOptions.parent) + ($parent = $(newOptions.parent)).append($box.add($outer)); + + $.extend(options, newOptions); + + adjust(); + + if (newOptions.handles != null) { + $handles.remove(); + $handles = $([]); + + i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0; + + while (i--) + $handles = $handles.add(div()); + + $handles.addClass(options.classPrefix + '-handle').css({ + position: 'absolute', + fontSize: 0, + zIndex: zIndex + 1 || 1 + }); + + if (!parseInt($handles.css('width'))) + $handles.width(5).height(5); + + if (o = options.borderWidth) + $handles.css({ borderWidth: o, borderStyle: 'solid' }); + + styleOptions($handles, { borderColor1: 'border-color', + borderColor2: 'background-color', + borderOpacity: 'opacity' }); + } + + scaleX = options.imageWidth / imgWidth || 1; + scaleY = options.imageHeight / imgHeight || 1; + + if (newOptions.x1 != null) { + setSelection(newOptions.x1, newOptions.y1, newOptions.x2, + newOptions.y2); + newOptions.show = !newOptions.hide; + } + + if (newOptions.keys) + options.keys = $.extend({ shift: 1, ctrl: 'resize' }, + newOptions.keys); + + $outer.addClass(options.classPrefix + '-outer'); + $area.addClass(options.classPrefix + '-selection'); + for (i = 0; i++ < 4;) + $($border[i-1]).addClass(options.classPrefix + '-border' + i); + + styleOptions($area, { selectionColor: 'background-color', + selectionOpacity: 'opacity' }); + styleOptions($border, { borderOpacity: 'opacity', + borderWidth: 'border-width' }); + styleOptions($outer, { outerColor: 'background-color', + outerOpacity: 'opacity' }); + if (o = options.borderColor1) + $($border[0]).css({ borderStyle: 'solid', borderColor: o }); + if (o = options.borderColor2) + $($border[1]).css({ borderStyle: 'dashed', borderColor: o }); + + $box.append($area.add($border).add($handles).add($areaOpera)); + + if ($.browser.msie) { + if (o = $outer.css('filter').match(/opacity=([0-9]+)/)) + $outer.css('opacity', o[1]/100); + if (o = $border.css('filter').match(/opacity=([0-9]+)/)) + $border.css('opacity', o[1]/100); + } + + if (newOptions.hide) + hide($box.add($outer)); + else if (newOptions.show && imgLoaded) { + shown = true; + $box.add($outer).fadeIn(options.fadeSpeed||0); + doUpdate(); + } + + aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1]; + + if (options.disable || options.enable === false) { + $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown); + $img.add($outer).unbind('mousedown', imgMouseDown); + $(window).unbind('resize', windowResize); + } + else if (options.enable || options.disable === false) { + if (options.resizable || options.movable) + $box.mousemove(areaMouseMove).mousedown(areaMouseDown); + + if (!options.persistent) + $img.add($outer).mousedown(imgMouseDown); + + $(window).resize(windowResize); + } + + options.enable = options.disable = undefined; + } + + this.remove = function () { + $img.unbind('mousedown', imgMouseDown); + $box.add($outer).remove(); + }; + + this.getOptions = function () { return options; }; + + this.setOptions = setOptions; + + this.getSelection = getSelection; + + this.setSelection = setSelection; + + this.update = doUpdate; + + $p = $img; + + while ($p.length) { + zIndex = max(zIndex, + !isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex); + if ($p.css('position') == 'fixed') + position = 'fixed'; + + $p = $p.parent(':not(body)'); + } + + zIndex = options.zIndex || zIndex; + + if ($.browser.msie) + $img.attr('unselectable', 'on'); + + $.imgAreaSelect.keyPress = $.browser.msie || + $.browser.safari ? 'keydown' : 'keypress'; + + if ($.browser.opera) + $areaOpera = div().css({ width: '100%', height: '100%', + position: 'absolute', zIndex: zIndex + 2 || 2 }); + + $box.add($outer).css({ visibility: 'hidden', position: position, + overflow: 'hidden', zIndex: zIndex || '0' }); + $box.css({ zIndex: zIndex + 2 || 2 }); + $area.add($border).css({ position: 'absolute', fontSize: 0 }); + + img.complete || img.readyState == 'complete' || !$img.is('img') ? + imgLoad() : $img.one('load', imgLoad); +}; + +$.fn.imgAreaSelect = function (options) { + options = options || {}; + + this.each(function () { + if ($(this).data('imgAreaSelect')) { + if (options.remove) { + $(this).data('imgAreaSelect').remove(); + $(this).removeData('imgAreaSelect'); + } + else + $(this).data('imgAreaSelect').setOptions(options); + } + else if (!options.remove) { + if (options.enable === undefined && options.disable === undefined) + options.enable = true; + + $(this).data('imgAreaSelect', new $.imgAreaSelect(this, options)); + } + }); + + if (options.instance) + return $(this).data('imgAreaSelect'); + + return this; +}; + +})(jQuery); diff --git a/experiment/assignment/js/main.js b/experiment/assignment/js/main.js new file mode 100644 index 0000000..4dbe1cf --- /dev/null +++ b/experiment/assignment/js/main.js @@ -0,0 +1 @@ +//Your JavaScript goes in here diff --git a/experiment/assignment/js/modernizr-1.5.min.js b/experiment/assignment/js/modernizr-1.5.min.js new file mode 100755 index 0000000..a1de3f7 --- /dev/null +++ b/experiment/assignment/js/modernizr-1.5.min.js @@ -0,0 +1,28 @@ +/*! + * Modernizr JavaScript library 1.5 + * http://www.modernizr.com/ + * + * Copyright (c) 2009-2010 Faruk Ates - http://farukat.es/ + * Dual-licensed under the BSD and MIT licenses. + * http://www.modernizr.com/license/ + * + * Featuring major contributions by + * Paul Irish - http://paulirish.com + */ + window.Modernizr=function(i,e,I){function C(a,b){for(var c in a)if(m[a[c]]!==I&&(!b||b(a[c],D)))return true}function r(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1);return!!C([a,"Webkit"+c,"Moz"+c,"O"+c,"ms"+c,"Khtml"+c],b)}function P(){j[E]=function(a){for(var b=0,c=a.length;b7)};d.historymanagement=function(){return!!(i.history&&history.pushState)};d.draganddrop=function(){return u("drag")&&u("dragstart")&&u("dragenter")&&u("dragover")&&u("dragleave")&&u("dragend")&&u("drop")};d.websockets=function(){return"WebSocket"in i};d.rgba=function(){m.cssText="background-color:rgba(150,255,150,.5)";return(""+m.backgroundColor).indexOf("rgba")!==-1};d.hsla=function(){m.cssText="background-color:hsla(120,40%,100%,.5)";return(""+ + m.backgroundColor).indexOf("rgba")!==-1};d.multiplebgs=function(){m.cssText="background:url(//:),url(//:),red url(//:)";return/(url\s*\(.*?){3}/.test(m.background)};d.backgroundsize=function(){return r("backgroundSize")};d.borderimage=function(){return r("borderImage")};d.borderradius=function(){return r("borderRadius","",function(a){return(""+a).indexOf("orderRadius")!==-1})};d.boxshadow=function(){return r("boxShadow")};d.opacity=function(){var a=y.join("opacity:.5;")+"";m.cssText=a;return(""+m.opacity).indexOf("0.5")!== + -1};d.cssanimations=function(){return r("animationName")};d.csscolumns=function(){return r("columnCount")};d.cssgradients=function(){var a=("background-image:"+y.join("gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:")+y.join("linear-gradient(left top,#9f9, white);background-image:")).slice(0,-17);m.cssText=a;return(""+m.backgroundImage).indexOf("gradient")!==-1};d.cssreflections=function(){return r("boxReflect")};d.csstransforms=function(){return!!C(["transformProperty", + "WebkitTransform","MozTransform","OTransform","msTransform"])};d.csstransforms3d=function(){var a=!!C(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);if(a){var b=document.createElement("style"),c=e.createElement("div");b.textContent="@media ("+y.join("transform-3d),(")+"modernizr){#modernizr{height:3px}}";e.getElementsByTagName("head")[0].appendChild(b);c.id="modernizr";s.appendChild(c);a=c.offsetHeight===3;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}return a}; + d.csstransitions=function(){return r("transitionProperty")};d.fontface=function(){var a;if(/*@cc_on@if(@_jscript_version>=5)!@end@*/0)a=true;else{var b=e.createElement("style"),c=e.createElement("span"),h,t=false,g=e.body,o,w;b.textContent="@font-face{font-family:testfont;src:url('data:font/ttf;base64,AAEAAAAMAIAAAwBAT1MvMliohmwAAADMAAAAVmNtYXCp5qrBAAABJAAAANhjdnQgACICiAAAAfwAAAAEZ2FzcP//AAMAAAIAAAAACGdseWYv5OZoAAACCAAAANxoZWFk69bnvwAAAuQAAAA2aGhlYQUJAt8AAAMcAAAAJGhtdHgGDgC4AAADQAAAABRsb2NhAIQAwgAAA1QAAAAMbWF4cABVANgAAANgAAAAIG5hbWUgXduAAAADgAAABPVwb3N03NkzmgAACHgAAAA4AAECBAEsAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAACAAMDAAAAAAAAgAACbwAAAAoAAAAAAAAAAFBmRWQAAAAgqS8DM/8zAFwDMwDNAAAABQAAAAAAAAAAAAMAAAADAAAAHAABAAAAAABGAAMAAQAAAK4ABAAqAAAABgAEAAEAAgAuqQD//wAAAC6pAP///9ZXAwAAAAAAAAACAAAABgBoAAAAAAAvAAEAAAAAAAAAAAAAAAAAAAABAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEACoAAAAGAAQAAQACAC6pAP//AAAALqkA////1lcDAAAAAAAAAAIAAAAiAogAAAAB//8AAgACACIAAAEyAqoAAwAHAC6xAQAvPLIHBADtMrEGBdw8sgMCAO0yALEDAC88sgUEAO0ysgcGAfw8sgECAO0yMxEhESczESMiARDuzMwCqv1WIgJmAAACAFUAAAIRAc0ADwAfAAATFRQWOwEyNj0BNCYrASIGARQGKwEiJj0BNDY7ATIWFX8aIvAiGhoi8CIaAZIoN/43KCg3/jcoAWD0JB4eJPQkHh7++EY2NkbVRjY2RgAAAAABAEH/+QCdAEEACQAANjQ2MzIWFAYjIkEeEA8fHw8QDxwWFhwWAAAAAQAAAAIAAIuYbWpfDzz1AAsEAAAAAADFn9IuAAAAAMWf0i797/8zA4gDMwAAAAgAAgAAAAAAAAABAAADM/8zAFwDx/3v/98DiAABAAAAAAAAAAAAAAAAAAAABQF2ACIAAAAAAVUAAAJmAFUA3QBBAAAAKgAqACoAWgBuAAEAAAAFAFAABwBUAAQAAgAAAAEAAQAAAEAALgADAAMAAAAQAMYAAQAAAAAAAACLAAAAAQAAAAAAAQAhAIsAAQAAAAAAAgAFAKwAAQAAAAAAAwBDALEAAQAAAAAABAAnAPQAAQAAAAAABQAKARsAAQAAAAAABgAmASUAAQAAAAAADgAaAUsAAwABBAkAAAEWAWUAAwABBAkAAQBCAnsAAwABBAkAAgAKAr0AAwABBAkAAwCGAscAAwABBAkABABOA00AAwABBAkABQAUA5sAAwABBAkABgBMA68AAwABBAkADgA0A/tDb3B5cmlnaHQgMjAwOSBieSBEYW5pZWwgSm9obnNvbi4gIFJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgT3BlbiBGb250IExpY2Vuc2UuIEtheWFoIExpIGdseXBocyBhcmUgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTCB2ZXJzaW9uIDMuYmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhTGlnaHRiYWVjMmE5MmJmZmU1MDMyIC0gc3Vic2V0IG9mIEZvbnRGb3JnZSAyLjAgOiBKdXJhIExpZ2h0IDogMjMtMS0yMDA5YmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhIExpZ2h0VmVyc2lvbiAyIGJhZWMyYTkyYmZmZTUwMzIgLSBzdWJzZXQgb2YgSnVyYUxpZ2h0aHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMAA5ACAAYgB5ACAARABhAG4AaQBlAGwAIABKAG8AaABuAHMAbwBuAC4AIAAgAFIAZQBsAGUAYQBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAdABlAHIAbQBzACAAbwBmACAAdABoAGUAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALgAgAEsAYQB5AGEAaAAgAEwAaQAgAGcAbAB5AHAAaABzACAAYQByAGUAIAByAGUAbABlAGEAcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEcAUABMACAAdgBlAHIAcwBpAG8AbgAgADMALgBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQBMAGkAZwBoAHQAYgBhAGUAYwAyAGEAOQAyAGIAZgBmAGUANQAwADMAMgAgAC0AIABzAHUAYgBzAGUAdAAgAG8AZgAgAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASgB1AHIAYQAgAEwAaQBnAGgAdAAgADoAIAAyADMALQAxAC0AMgAwADAAOQBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQAgAEwAaQBnAGgAdABWAGUAcgBzAGkAbwBuACAAMgAgAGIAYQBlAGMAMgBhADkAMgBiAGYAZgBlADUAMAAzADIAIAAtACAAcwB1AGIAcwBlAHQAIABvAGYAIABKAHUAcgBhAEwAaQBnAGgAdABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAAAAgAAAAAAAP+BADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQACAQIAEQt6ZXJva2F5YWhsaQ==')}"; + e.getElementsByTagName("head")[0].appendChild(b);c.setAttribute("style","font:99px _,arial,helvetica;position:absolute;visibility:hidden");if(!g){g=s.appendChild(e.createElement("fontface"));t=true}c.innerHTML="........";c.id="fonttest";g.appendChild(c);h=c.offsetWidth*c.offsetHeight;c.style.font="99px testfont,_,arial,helvetica";a=h!==c.offsetWidth*c.offsetHeight;var v=function(){if(g.parentNode){a=j.fontface=h!==c.offsetWidth*c.offsetHeight;s.className=s.className.replace(/(no-)?fontface\b/,"")+ + (a?" ":" no-")+"fontface"}};setTimeout(v,75);setTimeout(v,150);addEventListener("load",function(){v();(w=true)&&o&&o(a);setTimeout(function(){t||(g=c);g.parentNode.removeChild(g);b.parentNode.removeChild(b)},50)},false)}j._fontfaceready=function(p){w||a?p(a):(o=p)};return a||h!==c.offsetWidth};d.video=function(){var a=e.createElement("video"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('video/ogg; codecs="theora"');b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"');b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return b}; + d.audio=function(){var a=e.createElement("audio"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"');b.mp3=a.canPlayType("audio/mpeg;");b.wav=a.canPlayType('audio/wav; codecs="1"');b.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")}return b};d.localStorage=function(){return"localStorage"in i&&i.localStorage!==null};d.sessionStorage=function(){try{return"sessionStorage"in i&&i.sessionStorage!==null}catch(a){return false}};d.webworkers=function(){return!!i.Worker}; + d.applicationCache=function(){var a=i.applicationCache;return!!(a&&typeof a.status!="undefined"&&typeof a.update=="function"&&typeof a.swapCache=="function")};d.svg=function(){return!!e.createElementNS&&!!e.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect};d.smil=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg","animate")))};d.svgclippaths=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg", + "clipPath")))};for(var z in d)if(O(d,z))N.push(((j[z.toLowerCase()]=d[z]())?"":"no-")+z.toLowerCase());j[E]||P();j.addTest=function(a,b){a=a.toLowerCase();if(!j[a]){b=!!b();s.className+=" "+(b?"":"no-")+a;j[a]=b;return j}};m.cssText="";D=n=null;(function(){var a=e.createElement("div");a.innerHTML="";return a.childNodes.length!==1})()&&function(a,b){function c(f,k){if(o[f])o[f].styleSheet.cssText+=k;else{var l=t[G],q=b[A]("style");q.media=f;l.insertBefore(q,l[G]);o[f]=q;c(f,k)}}function h(f, + k){for(var l=new RegExp("\\b("+w+")\\b(?!.*[;}])","gi"),q=function(B){return".iepp_"+B},x=-1;++x\\s*$","i");g.innerHTML=f.outerHTML.replace(/\r|\n/g," ").replace(l,f.currentStyle.display=="block"?"":"");l=g.childNodes[0];l.className+=" iepp_"+q;l=p[p.length]=[f,l];f.parentNode.replaceChild(l[1],l[0])}h(b.styleSheets,"all")});a.attachEvent("onafterprint", + function(){for(var f=-1,k;++f1F@;RXN5c1BbQ%MYgAclM(EMZV!aAn8?(nSoFz*r|9hyha! z%t~eg+8VwT^UFq^W(28g;DjhPB%p_oGz$Y0Bg}pfO-MaVek!Q&0s?1-M4+z|8FGN3 zkPZY{OIx@;|5y2IXC1{m%nbdmie4kX{fI6eqC!4=N8p zWdJDugQAHGh(YCp3XtXnVm=_|2V!6qz#s_3LO?7G#3Dc}3dCYSEDppVJ(56L3W%kF zSO$n?fmjZR<$+iMh!ufY35b<}7^GemN`w3|3TPh!ptJx=1D(J`@c+jD2MhvUZk}!o zjKD;d0E7(xZv(RkGZPaC0RamTv2w7ovaqmnv9q&r@Nn_)aC32U^YRG^@bU@radQiZ z2?z>{h>D8x@QX``iAV^Eh>Cy=VPppCVPWNDW#ts%<>nP38T>!MAjknsCydODN(@Yb zjLd?J|Bryu5hE+mwIByW0V5O8jcn{3oLt;M1zUkRl#!X4iG>;DYM|;`pgaSMAghp~ zp(C4cU?RIxp@>oA#DyHnP8$!323`E1Vw_ae#K|QlE+HwUs-~`?sbyknW^Q3= z=I-I?6&w;879J59m7J2AmY$KBRa{b9R$ftA)!fqB*51+CHEHscsne#9glAUcUPH>GPMb z-@gC&`3vMPMh0exx8OcQ^OqpdUra14%q;96e=#zZ12MB83#+0bn~-B5dt#xml2Idv zh||P{8xL|S8wY(5O)9#`C8lEXQ1v6oYha%d=dmWTdvdW&tymgs$*bKV}Paq!$Tzfvodgvrhjn09{TBj@=TxO#y0SFkq;PXDDVU PWk^D4Q;<}247g$dYC1t2 literal 0 HcmV?d00001 diff --git a/experiment/assignment/menu/images/hover.gif b/experiment/assignment/menu/images/hover.gif new file mode 100644 index 0000000000000000000000000000000000000000..98fc8e993cc97670ed88088e297500d285eab1fd GIT binary patch literal 60 zcmZ?wbhEHbU6Cf+Hm1>AzC<}`bF KU45g=U=08>mR|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dc{<>}%WQgJKki-&enL*s7sZ_J*l z-0nL#92g80PuJFcmFZCEQeaSMm@(n0LQaY(1LKhvwf1F9Kmp16{|=Lz8{*^l*VO)J bQ#iojrl#BWqO`voXexuJtDnm{r-UW|LM1vV literal 0 HcmV?d00001 diff --git a/experiment/assignment/menu/images/hover_sub.gif b/experiment/assignment/menu/images/hover_sub.gif new file mode 100644 index 0000000000000000000000000000000000000000..7446d4b50097fc2b75bf7e32fafb8905285eca86 GIT binary patch literal 833 zcmZ?wbhEHbWM$xD_|Cu}YwjQ=C8gT1h+!0rhQP=R0mYvzU{C9SNKl?&;E-cr6N5DXNCpj{ literal 0 HcmV?d00001 diff --git a/experiment/assignment/menu/images/seperator.gif b/experiment/assignment/menu/images/seperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f7aedf7e4d37c172e6bf26d80d649975f5eb904 GIT binary patch literal 155 zcmZ?wbhEHbWMoigIKseSZ*Om7W8>!L=H%pLW@hH#;9zTOYh`6+Zf@@4;$mWAVrOS( zZEfxB?Cj|1XklUD>gsA~X=!R|YHV!GKm<_y$pTiT10q3oGO$WKQ0ZH&G?(R*O<;*Z T<3@(o$2`819VQ4cF<1itnrs{h literal 0 HcmV?d00001 diff --git a/experiment/assignment/menu/menu_style.css b/experiment/assignment/menu/menu_style.css new file mode 100644 index 0000000..b2f5002 --- /dev/null +++ b/experiment/assignment/menu/menu_style.css @@ -0,0 +1,92 @@ +.menu{ + border:none; + border:0px; + margin:0px; + padding:0px; + font: 67.5% "Lucida Sans Unicode", "Bitstream Vera Sans", "Trebuchet Unicode MS", "Lucida Grande", Verdana, Helvetica, sans-serif; + font-size:14px; + font-weight:bold; + z-index: 98; + } +.menu ul{ + background:#333333; + height:35px; + list-style:none; + margin:0; + padding:0; + } + .menu li{ + float:left; + padding:0px; + } + .menu li a{ + background:#333333 url("images/seperator.gif") bottom right no-repeat; + color:#cccccc; + display:block; + font-weight:normal; + line-height:35px; + margin:0px; + padding:0px 15px; + text-align:center; + text-decoration:none; + } + .menu li a:hover, .menu ul li:hover a{ + background: #2580a2 url("images/hover.gif") bottom center no-repeat; + color:#FFFFFF; + text-decoration:none; + } + .menu li sel a{ background: #486672 url("images/hover2.png") bottom center no-repeat; + color:#FFFFFF; + text-decoration:none; + } + + + .menu li ul{ + background:#333333; + display:none; + height:auto; + padding:0px; + margin:0px; + border:0px; + position:absolute; + width:225px; + z-index:200; + /*top:1em; + /*left:0;*/ + } + .menu li:hover ul{ + display:block; + + } + .menu li li { + background:url('images/sub_sep.gif') bottom left no-repeat; + display:block; + float:none; + margin:0px; + padding:0px; + width:225px; + } + .menu li:hover li a{ + background:none; + + } + .menu li ul a{ + display:block; + height:35px; + font-size:12px; + font-style:normal; + margin:0px; + padding:0px 10px 0px 15px; + text-align:left; + } + .menu li ul a:hover, .menu li ul li:hover a{ + background:#2580a2 url('images/hover_sub.gif') center left no-repeat; + border:0px; + color:#ffffff; + text-decoration:none; + } + .menu p{ + clear:left; + } + + diff --git a/experiment/objective.md b/experiment/objective.md index 73e0d20..a629782 100644 --- a/experiment/objective.md +++ b/experiment/objective.md @@ -1,5 +1,3 @@ -1. To learn to use arithmetic operations to combine images. - -2. To study the effect of these operations on the dynamic range of the output image. - -3. To study methods to enforce closure - force the output image to also be an 8 bit image. +1. To learn to use arithmetic operations to combine images. +2. To study the effect of these operations on the dynamic range of the output image. +3. To study methods to enforce closure - force the output image to also be an 8 bit image. diff --git a/experiment/posttest.json b/experiment/posttest.json index 6edba59..9619874 100644 --- a/experiment/posttest.json +++ b/experiment/posttest.json @@ -1,18 +1,19 @@ [ -{"question":"This is a Sample Question 1?", +{"question":"1. In a bolt manufacturing plant quality of the bolts produced is of interest. Consider an assembly line of these bolts, and assume an image can be taken of individual bolts coming in the line. One way to assess the quality of a final bolt is to compare the images of the bolt with standard bolt image. In such a scenario, what image arithmetic operation would you perform to identify a faulty bolt?", "answers":{ - "a":"answer1", - "b":"answer2", - "c":"answer3", - "d":"answer4" + "a":"Addition", + "b":"Subtraction", + "c":"Division", + "d":"Multiplication" }, -"correctAnswer":"a"}, -{"question":"This is a Sample Question 2?", +"correctAnswer":"c"}, + +{"question":"2. To remove the background of a face image, which image arithmetic operation is useful?", "answers":{ - "a":"answer1", - "b":"answer2", - "c":"answer3", - "d":"answer4" + "a":"Addition", + "b":"Subtraction", + "c":"Division", + "d":"Multiplication" }, -"correctAnswer":"c"} +"correctAnswer":"a"} ] diff --git a/experiment/pretest.json b/experiment/pretest.json index b7ee55e..dd615a4 100644 --- a/experiment/pretest.json +++ b/experiment/pretest.json @@ -24,24 +24,6 @@ "c":"Both", "d":"None" }, -"correctAnswer":"a"}, - -{"question":"4. In a bolt manufacturing plant quality of the bolts produced is of interest. Consider an assembly line of these bolts, and assume an image can be taken of individual bolts coming in the line. One way to assess the quality of a final bolt is to compare the images of the bolt with standard bolt image. In such a scenario, what image arithmetic operation would you perform to identify a faulty bolt?", -"answers":{ - "a":"Addition", - "b":"Subtraction", - "c":"Division", - "d":"Multiplication" - }, -"correctAnswer":"c"}, - -{"question":"5. To remove the background of a face image, which image arithmetic operation is useful?", -"answers":{ - "a":"Addition", - "b":"Subtraction", - "c":"Division", - "d":"Multiplication" - }, "correctAnswer":"a"} ] diff --git a/experiment/simulation/arith.php b/experiment/simulation/arith.php new file mode 100644 index 0000000..76f66f4 --- /dev/null +++ b/experiment/simulation/arith.php @@ -0,0 +1,469 @@ + + + + + + + + + + + + +Virtual Lab in Image Processing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + Mosaic
    + + +
    +
    +
    +
    +
    +

    + " alt="picture" width="140px" height="140px"/> +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + + +
    + outputLayer
    + + +
    + " width="281" height="281" alt="InputLayer" />
    + + +
    + TopBar + +
    + IIIT +
    + +
    +

    Virtual Lab for IMAGE PROCESSING

    +
    +home +
    + +
    + + +
    + +
    + + + +
    + Input size + + Output size +
    + 300 x 300 + + ____ x ____ +
    +
    + + + +
    + +

    Image Arithmetic

    +
    +
    + + Select Image";} ?> + Reset + Run +

    + +
    +
    +

    Select Operation

    +
    +Addition
    +Subtraction
    +Difference
    +Multiplication
    +Division
    +
    + +
    +

    Select Fitting

    + +Clipping
    +Auto-Scaling
    +
    +
    +

    Select Secondary Image

    + +
    + + + + + +
    + +
    +
    + + +
    +
    + + + diff --git a/experiment/simulation/css/border-h.gif b/experiment/simulation/css/border-h.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2aa5b0d09bf7215199dbf9a291b34b11d0352d4 GIT binary patch literal 72 zcmZ?wbhEHbWMg1tSjfQe|Nnmm1_m=TGay6ppOkY^YGO%hib8p2NrpmVR$@g?eqxGV XW?ou8gAPy~14tJG6LU)|D}yxvaY_|= literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/border-v.gif b/experiment/simulation/css/border-v.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bfd55564099537d38d4112f550b8974744de3ca GIT binary patch literal 72 zcmZ?wbhEHbWMp7tSjfQe|Nnmm1_m=TGay6ppOkY^YGO%hib8p2NrpmVR$@g?eqxGV XW?ou8gAPy~14tJG6LU)|D}yxvaW)ls literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/carpe-slider.css b/experiment/simulation/css/carpe-slider.css new file mode 100644 index 0000000..dc57165 --- /dev/null +++ b/experiment/simulation/css/carpe-slider.css @@ -0,0 +1,114 @@ +/* Default stylesheet for the Carpe Slider + By Tom Hermansson Snickars + 2005-12-17 version 1.5 + Copyright CARPE Design + carpe.ambiprospect.com +*/ +*.carpe_horizontal_slider_display_combo { + clear: left; + margin: 0; +} +*.carpe_vertical_slider_display_combo { + float: left; + margin: 0; +} +*.carpe_horizontal_slider_track { + background-color: #bbb; + color: #333; + width: 120px; + float: left; + margin: 0; + line-height: 0px; + font-size: 0px; + text-align: left; + padding: 4px; + border: 1px solid; + border-color: #ddd #999 #999 #ddd; +} +*.carpe_vertical_slider_track { + background-color: #bbb; + color: #333; + padding: 3px 6px 15px 6px; + width: 24px; + height: 100px; + border: 1px solid; + border-color: #ddd #999 #999 #ddd; +} +*.carpe_horizontal_slider_track *.carpe_slider_slit { + background-color: #333; + color: #ccc; + width: 110px; + height: 2px; + margin: 4px 4px 2px 4px; + line-height: 0px; + position: absolute; + z-index: 1; + border: 1px solid; + border-color: #999 #ddd #ddd #999; +} +*.carpe_vertical_slider_track *.carpe_slider_slit { + background-color: #000; + color: #333; + width: 2px; + height: 100px; + position: absolute; + margin: 4px 10px 4px 10px; + padding: 4px 0 1px 0; + line-height: 0px; + font-size: 0; + border: 1px solid; + border-color: #666 #ccc #ccc #666; +} +*.carpe_horizontal_slider_track *.carpe_slider { + width: 16px; + background-color: #666; + color: #333; + position: relative; + margin: 0; + height: 8px; + z-index: 1; + line-height: 0px; + font-size: 0px; + text-align: left; + border: 2px solid; + border-color: #999 #333 #333 #999; +} +*.carpe_vertical_slider_track *.carpe_slider { + width: 20px; + background-color: #666; + color: #333; + position: relative; + margin: 0; + height: 8px; + z-index: 1; + line-height: 0px; + font-size: 0px; + text-align: left; + border: 2px solid; + border-color: #999 #333 #333 #999; +} +*.carpe_slider_display_holder { + background-color: #bbb; + color: #333; + width: 34px; + margin: 0; + float: left; + padding: 0 2px 0 0; + height: 20px; + text-align: right; + border: 1px solid; + border-color: #ddd #999 #999 #ddd; +} +.carpe_slider_display { + background-color: #bbb; + color: #333; + padding: 3px 1px 0 0; + width: 30px; + text-align: right; + font-size: 11px; + line-height: 10px; + font-family: verdana, arial, helvetica, sans-serif; + font-weight: bold; + border: 0; + cursor: default; +} \ No newline at end of file diff --git a/experiment/simulation/css/common.css b/experiment/simulation/css/common.css new file mode 100644 index 0000000..4b9538a --- /dev/null +++ b/experiment/simulation/css/common.css @@ -0,0 +1,33 @@ +@charset "utf-8"; +/* CSS for styling header of the page */ + +/* reset default browser CSS */ + +body, div, h1,h2,h3,p,ul,ol,li,img,header,section,aside, footer, button{ + margin:0; padding:0; list-style:none; +} + +a { + text-decoration: none; /* no underlines */ + color: #961b25;/* dusty read */ +} + +a:hover { + color:#6f92a7; /*dusty blue */ +} + +:focus { + outline:0; /* no outline on focus */ +} + +h1,h2,h3 { + font-family: Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif; /* web safe colors */ + font-weight: normal; +} + +article { + margin:0; + padding:0; + position:relative; + display:block; +} diff --git a/experiment/simulation/css/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png b/experiment/simulation/css/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5473afffbc2662173f5af5c27d966c072de8039b GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`Ta z<$H)q$%zYm;;c7~Kd+Iuj%U9o62cnl7#bi-T}u42J&U%yNJ})(84RATelF{r5}E*| CoG&2& literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png b/experiment/simulation/css/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5950a8db9e64e8d00bb28726cb869947abfdc7fc GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7&<)v zy**H+;L+$#xLfUbvbRHKYdf;lnuLjR)5ZSVxA@w`{_x44Wr={X$x~Z$@7FAbSn&fgFuwGW_=oi~RXFcbPJmlyqtxte`W`Coi8H-DB~ Wz+8vrD+++NGkCiCxvXwA zrKA4;KgZ7h|Nko&3m&<@zkcB+pg^k-2d7Et4IYOXHXr^iHDYAQDR=FqD`wVF*V31rtx^1O-i2-*%VR!`&-n>;7Qxw|F%2EX3gO;DXM(c Q3!pg+p00i_>zopr07oh&m;e9( literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png b/experiment/simulation/css/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..e56eefd612ae74339bd45ae91ddfc2ae2eb7092b GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l$xiDV~E7mQ98UlM literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/images/ui-bg_loop_25_000000_21x21.png b/experiment/simulation/css/dark-hive/images/ui-bg_loop_25_000000_21x21.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7ea5f78045721fcbc80c11a7833566ab81f5d2 GIT binary patch literal 235 zcmVe7JuL4hN&d0+x^U% zf*@uFBAPNH8aC#f>GHEBX56nA2az`Z)Mst7aSvDO*P4b(W!ikxEmSJgCesbL>5ZBy l)n`Swhbr~&FF)@1NA1MND3Ij(>C6BC002ovPDHLkV1j6)YcT)- literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/images/ui-icons_222222_256x240.png b/experiment/simulation/css/dark-hive/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/images/ui-icons_4b8e0b_256x240.png b/experiment/simulation/css/dark-hive/images/ui-icons_4b8e0b_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..3bdb67be8f85c00d44940330a9a8cb07a73e83a4 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/images/ui-icons_a83300_256x240.png b/experiment/simulation/css/dark-hive/images/ui-icons_a83300_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..95993eab7625fb91819ce8d3d72fd6f71a520eda GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/images/ui-icons_cccccc_256x240.png b/experiment/simulation/css/dark-hive/images/ui-icons_cccccc_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..9254e05cfb964be56241b5bb4d0a0eb51c02df80 GIT binary patch literal 4369 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 oBo%DI*Kv;w;*%(i9W@e`=?odH?_b literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/images/ui-icons_ffffff_256x240.png b/experiment/simulation/css/dark-hive/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/experiment/simulation/css/dark-hive/jquery-ui-1.8.4.custom.css b/experiment/simulation/css/dark-hive/jquery-ui-1.8.4.custom.css new file mode 100644 index 0000000..cc569b3 --- /dev/null +++ b/experiment/simulation/css/dark-hive/jquery-ui-1.8.4.custom.css @@ -0,0 +1,374 @@ +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=444444&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=44&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=14_loop.png&bgImgOpacityContent=25&borderColorContent=555555&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=222222&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=444444&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=003147&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=33&borderColorHover=0b93d5&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=0972a5&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=20&borderColorActive=26b3f7&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=02_glass.png&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #555555; background: #000000 url(images/ui-bg_loop_25_000000_21x21.png) 50% 50% repeat; color: #ffffff; } +.ui-widget-content a { color: #ffffff; } +.ui-widget-header { border: 1px solid #333333; background: #444444 url(images/ui-bg_highlight-soft_44_444444_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #444444; background: #222222 url(images/ui-bg_highlight-soft_35_222222_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #eeeeee; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #eeeeee; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #0b93d5; background: #003147 url(images/ui-bg_highlight-soft_33_003147_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #26b3f7; background: #0972a5 url(images/ui-bg_highlight-hard_20_0972a5_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #cccccc; background: #eeeeee url(images/ui-bg_highlight-soft_80_eeeeee_1x100.png) 50% top repeat-x; color: #2e7db2; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #2e7db2; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #ffb73d; background: #ffc73d url(images/ui-bg_glass_40_ffc73d_1x400.png) 50% 50% repeat-x; color: #111111; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #111111; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #111111; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cccccc_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_cccccc_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4b8e0b_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_a83300_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; } +.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; } +.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } +.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } +.ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } +.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; } +.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } + +/* Overlays */ +.ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); } +.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* + * jQuery UI Accordion @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .1em .5em .2em .7em } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; }/* + * jQuery UI Button @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1; } +.ui-button-text-only .ui-button-text { padding: .4em .6em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/* + * jQuery UI Slider @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } diff --git a/experiment/simulation/css/default.css b/experiment/simulation/css/default.css new file mode 100755 index 0000000..d146a44 --- /dev/null +++ b/experiment/simulation/css/default.css @@ -0,0 +1,277 @@ +/*-----------------------------------------------------------*/ + +/* style.css contains a reset, font normalization and some base + styles. + + credit is left where credit is due. + additionally, much inspiration was taken from these projects: + * yui.yahooapis.com/2.8.1/build/base/base.css + * camendesign.com/design/ + * praegnanz.de/weblog/htmlcssjs-kickstart +*/ + +/* + html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + + HTML5 baseline) + v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark + html5doctor.com/html-5-reset-stylesheet/ +*/ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +abbr, address, cite, code, +del, dfn, em, img, ins, kbd, q, samp, +small, strong, sub, sup, var, +b, i, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, figure, footer, header, +hgroup, menu, nav, section, menu, +time, mark, audio, video { + margin:0; + padding:0; + border:0; + outline:0; + font-size:100%; + vertical-align:baseline; + background:transparent; +} + +article, aside, figure, footer, header, +hgroup, nav, section { display:block; } + +nav ul { list-style:none; } + +blockquote, q { quotes:none; } + +blockquote:before, blockquote:after, +q:before, q:after { content:''; content:none; } + +a { margin:0; padding:0; font-size:100%; + vertical-align:baseline; background:transparent; } + +ins { background-color:#ff9; color:#000; text-decoration:none;} + +mark { background-color:#ff9; color:#000; font-style:italic; + font-weight:bold; } + +del { text-decoration: line-through; } + +abbr[title], dfn[title] { border-bottom:1px dotted #000; +cursor:help; } + +/* tables still need cellspacing="0" in the markup */ +table { border-collapse:collapse; border-spacing:0; } + +hr { display:block; height:1px; border:0; + border-top:1px solid #ccc; margin:1em 0; padding:0; } + +input, select { vertical-align:middle; } +/* END RESET CSS */ + + +/* +fonts.css from the YUI Library: developer.yahoo.com/yui/ +Please refer to developer.yahoo.com/yui/fonts/ for font sizing +percentages + +There are three custom edits: + * remove arial, helvetica from explicit font stack + * make the line-height relative and unit-less + * remove the pre, code styles +*/ + +body { font:13px sans-serif; *font-size:small; *font:x-small; + line-height:1.22; } + +table { font-size:inherit; font:100%; } + +select, input, textarea { font:99% sans-serif; } + + +/* normalize monospace sizing + en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11# + Teletype_style_fix_for_Chrome +*/ +pre, code, kbd, samp { font-family: monospace, sans-serif; } + + + +/* + * minimal base styles + */ + + +/* #444 looks better than black: twitter.com/H_FJ/statuses/ + 11800719859 */ +body, select, input, textarea { color:#444; } + +/* Headers (h1,h2,etc) have no default font-size or margin, + you'll want to define those yourself. */ + +/* www.aestheticallyloyal.com/public/optimize-legibility/ */ + +h1,h2,h3,h4,h5,h6 { font-weight: bold; + text-rendering: optimizeLegibility; } + +/* maxvoltar.com/archive/-webkit-font-smoothing */ +html { -webkit-font-smoothing: antialiased; } + + +/* Accessible focus treatment: people.opera.com/patrickl/ + experiments/keyboard/test */ +a:hover, a:active { outline: none; } + +a, a:active, a:visited { color:#607890; } +a:hover { color:#036; } + + +ul { margin-left:30px; } +ol { margin-left:30px; list-style-type: decimal; } + +small { font-size:85%; } +strong, th { font-weight: bold; } + +td, td img { vertical-align:top; } + +sub { vertical-align: sub; font-size: smaller; } +sup { vertical-align: super; font-size: smaller; } + +pre { + padding: 15px; + + /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in- + blog-posts-css21-white-space-pre-wrap/ */ + white-space: pre; /* CSS2 */ + white-space: pre-wrap; /* CSS 2.1 */ + white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ + word-wrap: break-word; /* IE */ +} + +/* align checkboxes, radios, text inputs with their label + by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */ +input[type="radio"] { vertical-align: text-bottom; } +input[type="checkbox"] { vertical-align: bottom; + *vertical-align: baseline; } +.ie6 input { vertical-align: text-bottom; } + +/* hand cursor on clickable input elements */ +label, input[type=button], input[type=submit], + button { cursor: pointer; } + + +/* These selection declarations have to be separate. + No text-shadow: twitter.com/miketaylr/status/12228805301 + Also: hot pink. */ +/* +::-moz-selection{ background: #FF5E99; color:#fff; + text-shadow: none; } +::selection { background:#FF5E99; color:#fff; + text-shadow: none; } +*/ + +/* j.mp/webkit-tap-highlight-color */ +a:link { -webkit-tap-highlight-color: #FF5E99; } + + +/* always force a scrollbar in non-IE */ +html { overflow-y: scroll; } + +/* make buttons play nice in IE: + www.viget.com/inspire/styling-the-button-element-in-internet + -explorer/ */ +button { width: auto; overflow: visible; } + +/* bicubic resizing for non-native sized IMG: + code.flickr.com/blog/2008/11/12/on-ui-quality-the-little- + things-client-side-image-resizing/ */ +.ie7 img { -ms-interpolation-mode: bicubic; } + + + +/* + Non-semantic helper classes +*/ + +/* for image replacement */ +.ir { display:block; text-indent:-999em; overflow:hidden; + background-repeat: no-repeat; } + +/* Hide for both screenreaders and browsers + css-discuss.incutio.com/wiki/Screenreader_Visibility */ +.hidden { display:none; visibility:hidden; } + +/* Hide only visually, but have it available for screenreaders + www.webaim.org/techniques/css/invisiblecontent/ + Solution from: j.mp/visuallyhidden - Thanks Jonathan Neal!*/ +.visuallyhidden { position:absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); } + +/* Hide visually and from screenreaders, but maintain layout */ +.invisible { visibility: hidden; } + +/* >> The Magnificent CLEARFIX << */ +.clearfix:after { content: "."; display: block; height: 0; +clear: both; visibility: hidden; } +.clearfix { display: inline-block; } +* html .clearfix { height: 1%; } /* Hides from IE-mac \*/ +.clearfix { display: block; } + +/* + print styles inlined to avoid required HTTP connection + www.phpied.com/delay-loading-your-print-css/ +*/ +@media print { + * { background: transparent !important; +color: #444 !important; text-shadow: none; } + + a, a:visited { color: #444 !important; + text-decoration: underline; } + + a:after { content: " (" attr(href) ")"; } + + abbr:after { content: " (" attr(title) ")"; } + + .ir a:after { content: ""; } /*Don't show links for images*/ + + pre, blockquote { border: 1px solid #999; + page-break-inside: avoid; } + + img { page-break-inside: avoid; } + + @page { margin: 0.5cm; } + + p, h2, h3 { orphans: 3; widows: 3; } + + h2, h3{ page-break-after: avoid; } +} + + + +/* + * Media queries for responsive design + */ + +@media all and (orientation:portrait) { + /* Style adjustments for portrait mode goes here */ + +} + +@media all and (orientation:landscape) { + /* Style adjustments for landscape mode goes here */ + +} + +/* Grade-A Mobile Browsers (Opera Mobile, iPhone Safari, Android Chrome) + Consider this: www.cloudfour.com/css-media-query-for-mobile- + is-fools-gold/ */ +@media screen and (max-device-width: 480px) { + + + /* Prevent iOS, WinMobile from adjusting font size */ + html { -webkit-text-size-adjust:none; + -ms-text-size-adjust:none; } +} + diff --git a/experiment/simulation/css/imgareaselect-default.css b/experiment/simulation/css/imgareaselect-default.css new file mode 100644 index 0000000..18bf07b --- /dev/null +++ b/experiment/simulation/css/imgareaselect-default.css @@ -0,0 +1,41 @@ +/* + * imgAreaSelect default style + */ + +.imgareaselect-border1 { + background: url(border-v.gif) repeat-y left top; +} + +.imgareaselect-border2 { + background: url(border-h.gif) repeat-x left top; +} + +.imgareaselect-border3 { + background: url(border-v.gif) repeat-y right top; +} + +.imgareaselect-border4 { + background: url(border-h.gif) repeat-x left bottom; +} + +.imgareaselect-border1, .imgareaselect-border2, +.imgareaselect-border3, .imgareaselect-border4 { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-handle { + background-color: #fff; + border: solid 1px #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-outer { + background-color: #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-selection { +} \ No newline at end of file diff --git a/experiment/simulation/css/jquery-slider.css b/experiment/simulation/css/jquery-slider.css new file mode 100644 index 0000000..6913f7a --- /dev/null +++ b/experiment/simulation/css/jquery-slider.css @@ -0,0 +1,10 @@ +#sliderContent { position: absolute; left: 0; top: 0; width: 562px ; margin:0; padding:11px; background-color:#2b2b2b; visibility: visible; } +.viewer { width:549px; margin:0; padding:0; overflow:hidden; position:relative; border:0px solid #898989; } +.content-conveyor { width:549px; position:relative; } +.item { width:160px; float:left; text-align:center; image-rendering: -moz-crisp-edges;} +.item h2 { text-align:center; margin:0 0; font-size:14px;} +.item dl { margin:0 0; } +.item dt, .item dd { float:left; width:149px; text-align:center; margin:0; font-size:90%; } +.item dt { margin-right:0px; } +.item dd { text-align:center; } +.item img { border:1px solid #CDCDCD; padding:1px; } diff --git a/experiment/simulation/css/jquery-slider2.css b/experiment/simulation/css/jquery-slider2.css new file mode 100644 index 0000000..e1f661b --- /dev/null +++ b/experiment/simulation/css/jquery-slider2.css @@ -0,0 +1,10 @@ +#sliderContent { position: absolute; left: 0; top: 0; width: 550px ; margin:0; padding:11px; background-color:#2b2b2b; visibility: visible; } +.viewer { width:549px; margin:0; padding:0; overflow:hidden; position:relative; border:0px solid #898989; } +.content-conveyor { width:549px; position:relative; } +.item { width:310px; float:left; text-align:center; image-rendering: -moz-crisp-edges;} +.item h2 { text-align:center; margin:0 0; font-size:14px;} +.item dl { margin:0 0; } +.item dt, .item dd { float:left; width:310px; text-align:center; margin:0; font-size:90%; } +.item dt { margin-right:0px; } +.item dd { text-align:center; } +.item img { border:1px solid #CDCDCD; padding:10px; } diff --git a/experiment/simulation/css/override.css b/experiment/simulation/css/override.css new file mode 100644 index 0000000..eb222c0 --- /dev/null +++ b/experiment/simulation/css/override.css @@ -0,0 +1,6 @@ +span.term { + font-family: monospace; + font-style: normal; + font-weight: bold; + color: #556B2F; +} diff --git a/experiment/simulation/css/psd2css.css b/experiment/simulation/css/psd2css.css new file mode 100644 index 0000000..591a885 --- /dev/null +++ b/experiment/simulation/css/psd2css.css @@ -0,0 +1,300 @@ +/* + * psd2css.css + * + * This is your external CSS style sheet. It defines all of the CSS styles that you + * are using in your page. If you are going to create multiple pages from the same + * PSD file (like a template), you will share this CSS style sheet between the various + * pages. + * + * This file was originally generated at http://psd2cssonline.com + * September 16, 2010, 10:04 am with psd2css Online version 1.85 + * + */ + + +.front { +color: black; +} + +body { + margin: 0; + padding: 0; + font-family: Verdana; + text-align: left; + font-size: 12px; + color: #c2c2c2; + background-color: #171717; +// background-image:url("../images/bck.png"); + background-repeat: repeat; +} + +.imageFull { + position: absolute; + left: 105px; + top: 54px; + max-height: 700px; + min-height: 100px; + min-width: 100px; + max-width: 700px; + z-index: 25; + background-color: #171717; + padding: 10px; + border: solid 2px white; + +} +.wrapper { + height: 100%; + width: 100%; + position: absolute; + top: 110px; +z-index: 13; +margin: auto; + +} + +.experiment { + padding: 15px; + overflow: auto; + margin: 30px; + border: dashed 2px grey; + z-index: 12; + height: auto; + font-size:14px; +background-color: #222222; +line-height: 150%; +} + +#popUp { + position: absolute; + left: 200px; + top: 200px; + z-index: 22; + background-color: #171717; + padding: 10px; + border: solid 2px grey; +} + +h1 { +font-size: 23px; +font-weight: normal; +} + +input[type="text"] { + background: transparent; + border-width: 0; + color: #FFFFFF; +} + +/* You named this layer Backgound_bkgnd_center_jpg */ +#Layer-1 { + position: absolute; + margin-left: -462.5px; + left: 50%; + top: +0px; + width: 925px; + height: 627px; + z-index: 1; +} + + +/* You named this layer Parameters_jpg */ +#Layer-2 { + position: absolute; + left: 14px; + top: 123px; + width: 289px; + height: 282px; + z-index: 2; +} + +.Parameters { + line-height: 20px; + border: dashed grey 1px; + padding: 0px 20px 20px 10px; + margin: 10px; +} + +h3 { + font-size: 12px; + line-height: 30px; + + padding: 0; + margin: 15px 0 0 -10px; +} + + + + +/* You named this layer TopBar_jpg */ +#Layer-3 { + position: absolute; + left: 14px; + top: 11px; + width: 894px; + height: 96px; + z-index: 3; +} + +/* You named this layer InputLayer_jpg */ +#Layer-4 { +image-rendering: -moz-crisp-edges; + + position: absolute; + left: 325px; + top: 124px; + width: 281px; + height: 281px; + z-index: 4; + border: 2px solid #DEE01F; +} + +#Listlayer { +image-rendering: -moz-crisp-edges; + + position: absolute; + left: 325px; + top: 124px; + width: 575px; + height: 450px; + z-index: 4; + border: 2px solid #DEE01F; +} + +/* You named this layer outputLayer_jpg */ +#Layer-5 { +image-rendering: -moz-crisp-edges; + + position: absolute; + left: 627px; + top: 124px; + width: 281px; + height: 281px; + z-index: -1; + margin:0 auto; + overflow: hidden; + border: 2px solid #57AEFF; +} + +#nextBox { + margin: 1em; + padding: 1em; + border: dashed grey 1px; + } + +/* You named this layer IIIT */ +#Layer-6 { + position: absolute; + left: 30px; + top: 5px; + width: 100px; + height: 80px; + z-index: 6; +} + +#topMenu { + position: absolute; + left: 150px; + top: 0; + width: 744px; + height: 59px; + z-index: 99; +} + +#imgInfo { + position: absolute; + left: 330px; + top: 410px; + z-index: 12; + } + +#ruler1{position: absolute; top: 1px;left: 298px;width: 281px; border-left:1px solid white; border-right: 1px solid white; height: 25px;} +#ruler1 ee{float:left;width:0in;border-left:1px solid white;height:10px;padding:0;margin:0;margin-bottom:14px;} +#ruler1 e2{float:left;width:0in;border-left:1px solid white;height:13px;padding:0;margin:0;margin-bottom:14px; text-align: center;} +#ruler1 mm{float:left;width:17.5px;height:20px;padding:0;margin:0;vertical-align:top;} +#ruler1 tt{position: absolute; top: 15px; color: white;} + +#ruler2{position: absolute; top: 125px;right: -20px;width: 30px; border-top:1px solid white; border-bottom: 1px solid white; height: 281px; z-index: 24;} +#ruler2 ee{float:left;width:10px;border-top:1px solid white;height:0px;padding:0;margin:0;margin-right:14px;} +#ruler2 e2{float:left;width:10px;border-top:1px solid white;height:0px;padding:0;margin:0;margin-right:14px} +#ruler2 mm{float:left;height:17.5px;width:20px;padding:0;margin:0;vertical-align:top;} +#ruler2 tt{position: absolute; left: 15px; color: white;} + + + + +#zoom { + position: absolute; + left: 800px; + right: 20px; + top: 425px; + z-index: 11; + } + +/* You named this layer Thumbnails_jpg */ +#Layer-7 { + position: absolute; + left: 325px; + top: 480px; + width: 584px; + height: 184px; + z-index: 7; +} + +/* You named this layer Mosaic_jpg */ +#Mosaic { +image-rendering: -moz-crisp-edges; + + position: absolute; + left: 185px; + top: 54px; + width: 513px; + height: 513px; + z-index: 20; +} + +/* Here are some examples of how you might want to change the + * look and behavior of the links on your page. Some examples for + * further customization are included in comments. */ +a { + cursor: pointer; + outline: none; +} +a:link { color: #888888; } +a:visited { color: #888888; } +a:hover { + color: #F00; + /* text-decoration: underline; */ + /* font-weight: bold; */ +} + +.transdiv { + filter:alpha(opacity=40); + -moz-opacity:0.40; + -khtml-opacity: 0.40; + opacity: 0.40; + } + +.highlight { + color: red; + } + +#para_pop { +width: 200px; + line-height: 20px; + border: solid red 1px; + padding: 0px 20px 20px 10px; + margin: 10px; +z-index: 50; +display: none; +position: absolute; +left: 300px; + + background-color: #171717; +} + +.home { +position: absolute; +right: 10px; +top: 39px; +font-weight: normal; +} diff --git a/experiment/simulation/css/style-main.scss b/experiment/simulation/css/style-main.scss new file mode 100644 index 0000000..0e41334 --- /dev/null +++ b/experiment/simulation/css/style-main.scss @@ -0,0 +1,3034 @@ +/*----------------------------------------*/ +/* CSS +/*----------------------------------------*/ + +html, body { + height: 100%; +} + +.floatleft { + float: left; +} + +.floatright { + float: right; +} + +.alignleft { + float: left; + margin-right: 15px; + margin-bottom: 15px; +} + +.alignright { + float: right; + margin-left: 15px; + margin-bottom: 15px; +} + +.aligncenter { + display: block; + margin: 0 auto 15px; +} + +a:focus { + outline: 0px solid; +} + +img { + max-width: 100%; + height: auto; +} + +.fix { + overflow: hidden; +} + +p { + margin: 0 0 15px; + font-size:17.5px; +} +li{ + font-size:17.5px; + line-height:1.6; +} +i{ + font-size:16px; + line-height:1.6; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Open Sans', sans-serif; + margin: 0 0 15px; + /*color: #444;*/ + font-weight: 500; +} + +h1 { + font-size: 48px; + line-height: 50px; +} + +h2 { + font-size: 38px; + line-height: 40px; +} + +h3 { + font-size: 30px; + line-height: 32px; +} + +h4 { + font-size: 24px; + line-height: 26px; +} + +h5 { + font-size: 20px; + line-height: 22px; +} + +h6 { + font-size: 16px; + line-height: 20px; +} + +a { + transition: all 0.3s ease 0s; + text-decoration: none; +} + +a:hover { + color: #3EC1D5; + text-decoration: none; +} + +a:active, a:hover { + outline: 0 none; +} + +body { + background: #fff none repeat scroll 0 0; + color: #444; + font-family: 'Open Sans', sans-serif; + font-size: 14px; + text-align: left; + overflow-x: hidden; + line-height: 22px; +} + +/* Back to top button */ +.back-to-top { + position: fixed; + display: none; + background: #3EC1D5; + color: #fff; + padding: 6px 12px 9px 12px; + font-size: 16px; + border-radius: 2px; + right: 15px; + bottom: 15px; + transition: background 0.5s; +} + +@media (max-width: 768px) { + .back-to-top { + bottom: 15px; + } +} + +.back-to-top:focus { + background: #3EC1D5; + color: #fff; + outline: none; +} + +.back-to-top:hover { + background: #3cd6ed; + color: #fff; +} + +.clear { + clear: both; +} + +ul { + list-style: outside none none; + margin: 0; + padding: 0; +} + +input, select, textarea, input[type="text"], input[type="date"], input[type="url"], input[type="email"], input[type="password"], input[type="tel"], button, button[type="submit"] { + -moz-appearance: none; + box-shadow: none !important; +} + +div#preloader { + position: fixed; + left: 0; + top: 0; + z-index: 99999; + width: 100%; + height: 100%; + overflow: visible; + background: #fff url('../img/preloader.gif') no-repeat center center; +} + +::-moz-selection { + background: #3EC1D5; + text-shadow: none; +} + +::selection { + background: #3EC1D5; + text-shadow: none; +} + +.area-padding { + /* padding: 31px 0px 80px;*/ +} + +.area-padding-2 { + padding: 70px 0px 50px; +} + +.padding-2 { + padding-bottom: 90px; +} + +.section-headline h2 { + display: inline-block; + font-size: 40px; + /*font-weight: 600;*/ + margin-bottom: 59px; + margin-top:42px; + position: relative; + text-transform: capitalize; +} + +.section-headline h2::after { + border: 1px solid #333; + bottom: -20px; + content: ""; + left: 0; + margin: 0 auto; + position: absolute; + right: 0; + width: 40%; +} + +.sec-head { + display: inline-block; + font-size: 17px; + font-weight: 600; + margin-bottom: 0; + padding: 0 0 10px; + text-transform: uppercase; + transition: all 0.4s ease 0s; +} + +/*--------------------------------*/ + +/* 2. Header top Area +/*--------------------------------*/ + +.header-area { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: auto; + background-color:#fff; + /*background: rgba(0, 0, 0, 0.40);*/ + z-index: 9; +} + +.navbar-header a.navbar-brand { + display: inline-block; + height: 90px; + /* padding: 15px 0;*/ +} + +.main-menu ul.navbar-nav li { + display: inline-block; + padding: 0px 13px; +} + +.main-menu ul.navbar-nav li a { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + color: #a7a9ab; + font-size: 15px; + font-weight: 500; + padding: 24px 0px; + text-transform: capitalize; + letter-spacing: 1px; +} + +.main-menu ul.navbar-nav li.active a::after { + border: 1px solid #3cd6ed; + bottom: 0px; + content: ""; + left: 0; + position: absolute; + width: 100%; +} + +.main-menu ul.navbar-nav li.active a:hover { + background: none; + color: #3EC1D5; +} + +.main-menu ul.navbar-nav li.active a:focus { + color: #3cd6ed; +} + +.main-menu ul.navbar-nav li.active a { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + color: #a7a9ab; + position: relative; +} + +.main-menu ul.navbar-nav li a:hover { + color: #3EC1D5; +} + +.navbar { + border: medium none; + margin-bottom: 0; +} + +.navbar-default { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; +} + +.main-menu ul.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus { + background: none; + color: #333; +} + +.navbar-default .navbar-toggle { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + + border: medium none; + border-radius: 0; + padding: 25px 0px; +} + +.navbar-default .navbar-nav>li>a:hover, .navbar-default .navbar-nav>li>a:focus { + background-color: transparent; + color: #a7a9ab; +} + +.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { + background: none; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + width: 30px; + height: 2px; +} + +.top-right.text-right { + float: right; + position: relative; + top: 24px; + margin-left: 20px; +} + +.top-right.text-right>li { + float: right; + margin: 0px 8px; +} + +.top-right.text-right li a { + color: #fff; +} + +/*--------------------------------*/ + +/* menu +/*--------------------------------*/ + +.header-area.stick { + /*background-color: rgba(0, 0, 0, 1);*/ + background-color:#fff; + height: 90px; + position: fixed; + top: 0; + width: 100%; + z-index: 999999; +} + +.stick .navbar-header a.navbar-brand { + display: inline-block; + height: 90px; +} + +.stick .navbar-brand>img { + display: none; +} + +.stick .navbar-brand.sticky-logo>img { + display: block; +} + +.sticky-logo h1 { + color: #fff; + padding: 0; + margin: 0; + font-size: 36px; + font-weight: bold; + line-height: 1; +} + +.sticky-logo h1 span { + color: #3ec1d5; +} +.stick .main-menu ul.navbar-nav li.active a::after { + border: 1px solid #3EC1D5; + bottom: 0px; + content: ""; + left: 0; + position: absolute; + width: 100%; +} + +.stick .main-menu ul.nav>li>a:hover { + color: #3EC1D5; +} + +.stick .main-menu ul.navbar-nav li.active a { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + color: #3EC1D5; + position: relative; +} + +.stick .mainmenu ul#nav>li:hover>a, .stick .mainmenu ul#nav li .mega-menu, .stick .mainmenu ul#nav li ul.sub-menu { + background-color: #f5f5f5; + color: #fff; + outline: medium none; +} + +.stick .mainmenu ul#nav li:hover ul.sub-menu li a:hover, .mainmenu ul#nav li .mega-menu span>a:hover, .stick .mainmenu ul#nav li .mega-menu-shop a.mega-menu-title:hover { + color: #fff; +} + +.stick .logo { + height: 20px; +} + +.stick .logo a { + margin-top: 0px; +} + +.stick .main-menu ul.nav>li>a { + color: #a7a9ab; + line-height: 22px; + padding: 24px 0px; + text-transform: capitalize; + letter-spacing: 1px; +} + +.stick .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + width: 30px; + height: 2px; +} + +.stick .navbar-default .navbar-toggle { + padding: 10px 0px; +} + + +/*--------------------------------*/ + +/* Services +/*--------------------------------*/ + +.services-icon { + color: #444; + display: inline-block; + font-size: 36px; + line-height: 36px; + margin-bottom: 20px; +} + +.section-headline.services-head>h2 { + margin-bottom: 25px; +} + +.services-details { + padding-top: 40px; + transition: all 0.5s ease 0s; + padding-top: 20px; +} + +.services-details:hover h4, .services-details:hover .services-icon { + color: #3EC1D5; +} + +.row.second-row { + margin-top: 40px; +} + +.section-head>h2 { + color: #333; +} + +.single-services>h4 { + color: #444; + font-size: 24px; + font-weight: 500; +} + +.single-services>p { + color: #333; + font-size: 14px; +} + +/*---------------------------------------- + Skill Area +----------------------------------------*/ + +.our-skill-area { + position: relative; +} + +.our-skill-area { + background: rgba(248, 248, 248, 0.8) url("../img/background/bg1.jpg") no-repeat fixed center top / cover; +} + +.test-overly { + background: rgba(0, 0, 0, 0.80); + position: absolute; + width: 100%; + height: 100%; +} + +.progress-h4 { + color: #fff; + font-weight: 500; +} + + +/*---------------------------------------- + Css +----------------------------------------*/ + +.wellcome-area { + background: rgba(248, 248, 248, 0.8) url("../img/background/bg1.jpg"); + background-size: cover; + background-position: center top; + background-repeat: no-repeat; + background-attachment: fixed; +} + +.well-bg { + position: relative; +} + +.wellcome-text { + /* margin: 70px 0;*/ + padding: 30px 40px; +} + +.well-text>h2 { + color: #fff; + font-size: 44px; + font-weight: 500; + line-height: 50px; +} + +.well-text p { + font-size: 18px; + font-style: italic; + color: #fff; +} + +.wellcome-text .section-headline p { + margin-bottom: 0; +} + +.subs-feilds { + border: 1px solid #fff; + display: inline-block; + height: 52px; + margin-top: 30px; + width: 60%; + border-radius: 30px; + overflow: hidden; +} + +.suscribe-input input { + background: transparent none repeat scroll 0 0; + border: medium none; + color: #fff; + float: left; + font-size: 15px; + line-height: 24px; + padding: 11px 15px; + width: 70%; + height: 50px; +} + +.suscribe-input button { + background: #3ec1d5 none repeat scroll 0 0; + border: medium none; + border-radius: 0 20px 20px 0; + color: #fff; + float: left; + font-size: 20px; + font-weight: 700; + padding: 14px 20px; + width: 30%; +} + +.suscribe-input button:hover { + background: #fff none repeat scroll 0 0; + color: #3ec1d5; +} + +/*---------------------------------------- + career section +----------------------------------------*/ + +.team-member { + background: rgba(0, 0, 0, 0.65) none repeat scroll 0 0; + display: block; + margin-right: -15px; + padding: 10px; + position: relative; + overflow: hidden; +} + +.team-member::before { + background: rgba(0, 0, 0, 0) url("../img/team/team01.jpg") repeat scroll 0 0; + content: ""; + display: block; + height: 100%; + left: 0; + margin-right: -15px; + padding: 10px; + position: absolute; + top: 0; + width: 100%; + z-index: -1; + background-repeat: no-repeat; + background-size: cover; + background-position: top center; + transition: 5s; + transform: scale(1); +} + +.team-member:hover.team-member::before { + transform: scale(1.2); +} + +.single-team-member { + border: 1px solid #ddd; +} + +.team-left-text h4 { + color: #fff; + font-size: 30px; + font-weight: 700; + text-transform: uppercase; +} + +.team-left-text p { + color: #fff; + font-size: 17px; + line-height: 26px; +} + +.email-news { + display: block; + margin: 30px 0; + overflow: hidden; + text-align: center; + width: 100%; +} + +.email-news .email_button input { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + border: 1px solid #fff; + color: #fff; + float: left; + font-size: 13px; + padding: 8px; + width: 81%; +} + +.email-news .email_button>button { + background: rgba(0, 0, 0, 0) none repeat scroll 0 0; + border: 1px solid #fff; + color: #fff; + float: left; + font-size: 16px; + padding: 8px 12px; + text-align: center; +} + +.email-news .email_button>button:hover { + background: #3EC1D5; + border: 1px solid #fff; + color: #fff; +} + +.team-left-icon ul li { + display: inline-block; +} + +.team-left-icon ul li a:hover { + color: #3EC1D5; + background: #fff; + border: 2px solid #fff; +} + +.team-left-icon ul li a { + border: 2px solid #fff; + color: #fff; + display: block; + font-size: 16px; + height: 40px; + line-height: 37px; + margin: 0 3px; + width: 40px; +} + +.team-member-carousel .single-team-member { + overflow: hidden; + width: 100%; +} + +.single-team-member:hover .team-img a:after { + opacity: 1; +} + +.single-team-member:hover .team-social-icon { + top: 45%; + opacity: 1; +} + +.team-img { + position: relative; +} + +.team-img>a { + display: block; +} + +.team-img>a::after { + background: rgba(0, 0, 0, 0.70); + bottom: 0; + content: ""; + height: 100%; + left: 0; + position: absolute; + transition: all 0.5s ease 0s; + width: 100%; + opacity: 0; +} + +.team-social-icon { + left: 50%; + margin-left: -61px; + opacity: 0; + position: absolute; + top: 30%; + transition: 1.3s; +} + +.team-social-icon ul li { + display: inline-block; +} + +.team-social-icon ul li a { + border: 1px solid #fff; + border-radius: 50%; + color: #fff; + display: block; + font-size: 14px; + height: 34px; + line-height: 35px; + margin: 0 3px; + width: 34px; +} + +.team-social-icon ul li a:hover { + color: #fff; + border: 1px solid #3EC1D5; + background: #3EC1D5; +} + +.team-content { + padding: 10px 0px; +} + +.team-content>h4, .team-content>p { + color: #444; + margin-bottom: 5px; +} + +.team-content.head-team p { + margin-bottom: 0; +} + +.team-left-icon.text-center { + margin-bottom: 20px; +} + +.head-team h4 { + display: inline-block; + font-size: 25px; + font-weight: 600; + padding-bottom: 10px; + text-transform: uppercase; +} + + + + + + +#top { + display: grid; + min-height: 100%; + grid-template-rows: max-content auto max-content; +} + + + + + + + +/*-------------------------------------------------------------- +# Footer +--------------------------------------------------------------*/ + +#footer { + background: #000; + color: #eee; + font-size: 14px; +} + +#footer .footer-top { + background: #111; + /*padding: 60px 0 30px 0;*/ + padding: 15px 0 0px 0; +} + +#footer .footer-top .footer-info h3 { + font-size: 34px; + margin: 0 0 20px 0; + padding: 2px 0 2px 10px; + line-height: 1; + font-family: "Open Sans", sans-serif; + font-weight: 700; + letter-spacing: 3px; + border-left: 4px solid #18d26e; +} + +#footer .footer-top p { + font-size: 1.4rem; + margin-bottom: 0; + color: #eee; +} + +#footer .footer-top .social-links a { + font-size: 18px; + display: inline-block; + background: #333; + color: #eee; + line-height: 1; + padding: 8px 0; + margin-right: 4px; + border-radius: 50%; + text-align: center; + width: 36px; + height: 36px; + transition: 0.3s; +} + +#footer .footer-top .social-links a:hover { + background: #3cd6ed; + color: #fff; +} + +#footer .footer-top h4 { + font-size: 14px; + color: #fff; + position: relative; + padding-bottom: 12px; +} + +#footer .footer-top h4::before, #footer .footer-top h4::after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + height: 2px; +} + +#footer .footer-top h4::before { + right: 0; + background: #555; +} + +#footer .footer-top h4::after { + background: #3EC1D5; + width: 60px; +} +#footer .footer-top i { + color:#fff; +} + +#footer .footer-top a { + color:#fff; +} + +/*-------------------------------------------------------------- +# Intro Section +--------------------------------------------------------------*/ +#intro { + + width: 100%; + + /* background: #000; + display: table; + height: 100vh; + */ +} + +#intro .carousel-item { + width: 100%; + /* height: 100vh;*/ + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +#intro .carousel-item::before { + content: ''; + background-color: rgba(0, 0, 0, 0.4); + position: absolute; + height: 100%; + width: 100%; + top: 0; + right: 0; + left: 0; + bottom: 0; +} + +#intro .carousel-container { + display: flex; + justify-content: left; + align-items: center; + position: absolute; + bottom: 0; + top: 0; + left: 0; + right: 0; +} + +#intro .carousel-content { + text-align: left; + padding-top:220px; +} + +#intro h2 { + color: #fff; + margin-bottom: 30px; + font-size: 48px; + font-weight: 700; +} + +@media (max-width: 768px) { + #intro h2 { + font-size: 28px; + } +} + +#intro p { + width: 100%; + margin: 0 auto 30px auto; + color: #fff; +} + +@media (min-width: 1024px) { + #intro p { + width: 100%; + font-size:45px; + } +} + +#intro .carousel-fade .carousel-inner .carousel-item { + -webkit-transition-property: opacity; + transition-property: opacity; +} + +#intro .carousel-fade .carousel-inner .carousel-item, +#intro .carousel-fade .carousel-inner .active.carousel-item-left, +#intro .carousel-fade .carousel-inner .active.carousel-item-right { + opacity: 0; +} + +#intro .carousel-fade .carousel-inner .active, +#intro .carousel-fade .carousel-inner .carousel-item-next.carousel-item-left, +#intro .carousel-fade .carousel-inner .carousel-item-prev.carousel-item-right { + opacity: 1; + transition: 0.5s; +} + +#intro .carousel-fade .carousel-inner .carousel-item-next, +#intro .carousel-fade .carousel-inner .carousel-item-prev, +#intro .carousel-fade .carousel-inner .active.carousel-item-left, +#intro .carousel-fade .carousel-inner .active.carousel-item-right { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +#intro .carousel-control-prev, #intro .carousel-control-next { + width: 10%; +} + +@media (min-width: 1024px) { + #intro .carousel-control-prev, #intro .carousel-control-next { + width: 5%; + } +} + +#intro .carousel-control-next-icon, #intro .carousel-control-prev-icon { + background: none; + font-size: 32px; + line-height: 1; +} + +#intro .carousel-indicators li { + cursor: pointer; +} + +#intro .btn-get-started { + font-family: "Open Sans", sans-serif; + font-weight: 500; + font-size: 16px; + letter-spacing: 1px; + display: inline-block; + padding: 8px 32px; + border-radius: 50px; + transition: 0.5s; + margin: 10px; + color: #fff; + background: #18d26e; +} + +#intro .btn-get-started:hover { + background: #fff; + color: #18d26e; +} + +.downArrow{ + position: absolute; + bottom: 0%; + left: 50%; +} +.bounce { + -moz-animation: bounce 3s infinite; + -webkit-animation: bounce 3s infinite; + animation: bounce 3s infinite; +} +@-moz-keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + -moz-transform: translateY(0); + transform: translateY(0); + } + 40% { + -moz-transform: translateY(-30px); + transform: translateY(-30px); + } + 60% { + -moz-transform: translateY(-15px); + transform: translateY(-15px); + } +} +@-webkit-keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + 40% { + -webkit-transform: translateY(-30px); + transform: translateY(-30px); + } + 60% { + -webkit-transform: translateY(-15px); + transform: translateY(-15px); + } +} +@keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -webkit-transform: translateY(0); + transform: translateY(0); + } + 40% { + -moz-transform: translateY(-30px); + -ms-transform: translateY(-30px); + -webkit-transform: translateY(-30px); + transform: translateY(-30px); + } + 60% { + -moz-transform: translateY(-15px); + -ms-transform: translateY(-15px); + -webkit-transform: translateY(-15px); + transform: translateY(-15px); + } +} + +/* the blue circle with only one line of text, centered vertically */ +.oneline:after { + content: ""; + display: block; + width: 100%; + height: 0; + padding-bottom: 100%; + background: cadetblue; + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + border-radius: 50%; +} +.oneline:hover:after { + background-color: #3EC1D5; +} +.oneline div { + float: left; + width: 100%; + padding-top: 19%; + line-height: 1em; + margin-top: -1.7em; + text-align: center; + color: white; +} +.oneline p { + text-align: center; + font-size: 1.2em; +} + +@media only screen and (min-width: 350px) { + .col { + display: inline-block; + position: relative; + width: 100%; + margin: 4% 0 5% 9%; + padding: 0; + background-color: transparent; + border-top: none; + height:260px; + } + .col .spacer { + position: relative; + padding-top: 100%; + } + .col:nth-child(3n+1) { + margin-left: 1%; + } + + .circle { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: powderblue; + color: #333; + border-radius: 50%; + box-sizing: border-box; + text-align: center; + display: block; + padding: 5px; + border: 5px solid #9dd8e0; + -webkit-transition: all 1s ease-out; + -moz-transition: all 1s ease-out; + -o-transition: all 1s ease-out; + transition: all 1s ease-out; + } + .circle:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; + margin-right: -2%; + } + .circle:hover { + /* background-color: #a7a9ab;*/ + background-color:#3EC1D5; + border: 5px solid #444; + color: #fff; + } +/*new class added for text hover*/ + .circle:hover h4{ + /* background-color: #a7a9ab;*/ + background-color:#3EC1D5; + + color: #fff; + } + + .outline { + border: 5px solid grey; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + border-radius: 50%; + box-sizing: border-box; + } + + .circle h1 { + font-size: 0.9em; + line-height: 1em; + } + .circle p { + font-size: 0.8em; + line-height: 1em; + color: white; + text-align: center; + } + .circle a { + color: inherit; + } + .circle > p, .circle > h1, .circle > .wrapcontent { + display: inline-block; + vertical-align: middle; + } + .circle > p > p, .circle > p > h1, .circle > h1 > p, .circle > h1 > h1, .circle > .wrapcontent > p, .circle > .wrapcontent > h1 { + display: block; + } +} +@media only screen and (min-width: 481px) { + .circle h1 { + font-size: 1.2em; + line-height: 1em; + } + .circle p { + font-size: 1em; + line-height: 1em; + } +} +@media only screen and (min-width: 768px) { + .circle h1 { + font-size: 1.6em; + line-height: 1em; + } + .circle p { + font-size: 1.2em; + line-height: 1em; + } +} + + +/*Accordian*/ + +.accordion { + width: 100%; + max-width: 1080px; + height: 250px; + overflow: hidden; + margin: 50px auto; + +} +.accordion ul { + width: 100%; + display: table; + table-layout: fixed; + margin: 0; + padding: 0; + +} +.accordion ul li { + display: table-cell; + vertical-align: bottom; + position: relative; + width: 16.666%; + height: 250px; + background-repeat: no-repeat; + background-position: center center; + transition: all 500ms ease; +} +.accordion ul li div { + display: block; + overflow: hidden; + width: 100%; + padding:32px; +height: 287px; +margin-top: -124px; +} +.accordion ul li div a{ + display: block; + /*height: 250px;*/ + width: 100%; + position: relative; + z-index: 3; + vertical-align: bottom; + /* padding: 15px 20px;*/ + box-sizing: border-box; + color: #fff; + text-decoration: none; + font-family: Open Sans, sans-serif; + transition: all 200ms ease; + +} +.accordion ul li div a * { + opacity: 0; + margin: 0; + width: 100%; + text-overflow: ellipsis; + position: relative; + z-index: 5; + white-space: nowrap; + overflow: hidden; + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + -webkit-transition: all 400ms ease; + transition: all 400ms ease; +} +.accordion ul li div a h2 { + font-family: Montserrat,sans-serif; + text-overflow: clip; + font-size: 24px; + text-transform: uppercase; + margin-bottom: 2px; + /*top: 160px;*/ +} +.accordion ul li div a p { + /* top: 160px; + font-size: 13.5px;*/ + font-size: 16px; + line-height:2.2; + +} +.accordion ul li:nth-child(1) { + + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); +} +.accordion ul li:nth-child(2) { + + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); +} +.accordion ul li:nth-child(3) { + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); + +} +.accordion ul li:nth-child(4) { + + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); +} +.accordion ul li:nth-child(5) { + + background-image: url("http://files.vlabs.ac.in/iiith-landing-pages/img/disciplines/computer-science.jpg"); +} +.accordion ul li:nth-child(6) { + /* background-image: url("http://michael-ferry.com/assets/accordion6.jpg");*/ +} +.accordion ul:hover li { + width: 8%; +} +.accordion ul:hover li:hover { + width: 60%; +} +.accordion ul:hover li:hover a { + /*background: rgba(0, 0, 0, 0.4);*/ +} +.accordion ul:hover li:hover a * { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); +} + +@media screen and (max-width: 600px) { + body { + margin: 0; + } + + .accordion { + /*height: auto;*/ +} + .accordion ul li, .accordion ul li:hover, .accordion ul:hover li, .accordion ul:hover li:hover { + position: relative; + display: table; + table-layout: fixed; + width: 100%; + -webkit-transition: none; + transition: none; +} +} +.about { + text-align: center; + font-family: 'Open Sans', sans-serif; + font-size: 12px; + color: #666; +} +.about a { + color: blue; + text-decoration: none; +} +.about a:hover { + text-decoration: underline; +} +/*accordion ends here*/ + + + +/*logo line*/ +.vline { + border-left: 2px solid #a7a9ab; +height: 62px; +position: absolute; +/*left: 10.5%;*/ +margin-left: -3px; +top: 15px; +} +/*logo line ends here*/ + + +/* style.scss */ + + +// Fonts +@import url(https://fonts.googleapis.com/css?family=Open+Sans); +@import url(https://fonts.googleapis.com/css?family=Montserrat:700); + +// Accordion Height +$a-height: 250px; + +// Position text along bottom +$text-offset: $a-height - 90; + +// Page Title +h1 { + + text-align:center; + font-family:Montserrat,sans-serif; + color:#333; + +} + +.accordion { + + width:100%; + max-width:1080px; + height:$a-height; + overflow:hidden; + margin:50px auto; + + ul { + + width:100%; + display:table; + table-layout:fixed; + margin:0; + padding:0; + + li { + + display:table-cell; + vertical-align:bottom; + position: relative; + width:16.666%; // 6 into 100 + height:$a-height; + + background-repeat:no-repeat; + background-position:center center; + + transition:all 500ms ease; + + div { + + display:block; + overflow:hidden; + width:100%; + + a { + + display:block; + height:$a-height; + width:100%; + + position:relative; + z-index:3; + vertical-align:bottom; + padding:15px 20px; + box-sizing:border-box; + color:#fff; + text-decoration:none; + font-family:Open Sans, sans-serif; + + transition:all 200ms ease; + + * { + + opacity:0; + margin:0; + width:100%; + text-overflow:ellipsis; + position:relative; + z-index:5; + + white-space:nowrap; + overflow:hidden; + + -webkit-transform:translateX(-20px); + transform:translateX(-20px); + + -webkit-transition:all 400ms ease; + transition:all 400ms ease; + + } + + h2 { + + font-family:Montserrat,sans-serif; + text-overflow:clip; + font-size:24px; + text-transform:uppercase; + margin-bottom:2px; + + top:$text-offset; + + } + + p { + + top:$text-offset; + font-size:13.5px; + + } + + } + + } + + } + + // Background images + li:nth-child(1) { background-image:url('http://michael-ferry.com/assets/accordion1.jpg'); } + li:nth-child(2) { background-image:url('http://michael-ferry.com/assets/accordion2.jpg'); } + li:nth-child(3) { background-image:url('http://michael-ferry.com/assets/accordion3.jpg'); } + li:nth-child(4) { background-image:url('http://michael-ferry.com/assets/accordion4.jpg'); } + li:nth-child(5) { background-image:url('http://michael-ferry.com/assets/accordion5.jpg'); } + li:nth-child(6) { background-image:url('http://michael-ferry.com/assets/accordion6.jpg'); } + + &:hover li, + &:focus-within li { width:8%; } + + li:focus { + outline: none; + } + + &:hover li:hover, + // allow users to tab through active slides + li:focus, + &:focus-within li:focus { + + width:60%; + + a { + + background:rgba(0,0,0,.4); + + * { + + opacity:1; + -webkit-transform:translateX(0); + transform:translateX(0); + + } + + } + + } + + &:hover li { + width: 8% !important; + + a * { opacity: 0 !important; } + } + + &:hover li:hover { + width:60% !important; + + a { + + background:rgba(0,0,0,.4); + + * { + + opacity:1 !important; + -webkit-transform:translateX(0); + transform:translateX(0); + + } + + } + } + + } + +} + +// Stack items +@media screen and (max-width: 600px) { + + // IE gets fussy if this isn't here + body { margin:0; } + + .accordion { + + height:auto; + + ul,ul:hover { + + li,li:hover { + + position:relative; + display:table; + table-layout:fixed; + width:100%; + + -webkit-transition:none; + transition:none; + + } + + } + + } + +} + +.about { + + text-align:center; + font-family:'Open Sans', sans-serif; + font-size:12px; + color:#666; + + a { + + color:blue; + text-decoration:none; + + &:hover { text-decoration:underline; } + + } + +} + +/* style.css */ + +/* +Theme Name: Vlabs +Theme URI: http://www.vlabs.ac.in +Author: Vlabs.co.in +Author URI: http://www.vlabs.ac.in +Description: The theme to accompany the profile site for vlabs.ac.in +Version: 1.0 +*/ +@import url(https://fonts.googleapis.com/css?family=Raleway:400,300,700,500,600); +body { + overflow-x: hidden; + font-family:'Raleway' !important; +} + +p { + font-size: 16px; +} + +/*** Calendar **********************/ +.content .container-fluid div.calender { position: relative; } + +.container-fluid .calender table { +cursor:pointer; +border:1px solid #ccc; +font-size: 11px; +color: #000; +background: #fff; +font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; +} + +.container-fluid .calender .button { +text-align: center; +padding: 2px; +} + +.container-fluid .calender .nav { +background:#f5f5f5; +} + +.container-fluid .calender thead .title { +font-weight: bold; +text-align: center; +background: #dedede; +color: #000; +padding: 2px 0 3px 0; +} + +.container-fluid .calender thead .headrow { +background: #f5f5f5; +color: #444; +font-weight:bold; +} + +.container-fluid .calender thead .daynames { +background: #fff; +color:#333; +font-weight:bold; +} + +.container-fluid .calender thead .name { +border-bottom: 1px dotted #ccc; +padding: 2px; +text-align: center; +color: #000; +} + +.container-fluid .calender thead .weekend { +color: #666; +} + +.container-fluid .calender thead .hilite { +background-color: #444; +color: #fff; +padding: 1px; +} + +.container-fluid .calender thead .active { +background-color: #d12f19; +color:#fff; +padding: 2px 0px 0px 2px; +} + + +.container-fluid .calender tbody .day { +width:1.8em; +color: #222; +text-align: right; +padding: 2px 2px 2px 2px; +} +.container-fluid .calender tbody .day.othermonth { +font-size: 80%; +color: #bbb; +} +.container-fluid .calender tbody .day.othermonth.oweekend { +color: #fbb; +} + +.container-fluid .calender table .wn { +padding: 2px 2px 2px 2px; +border-right: 1px solid #000; +background: #666; +} + +.container-fluid .calender tbody .rowhilite td { +background: #FFF1AF; +} + +.container-fluid .calender tbody .rowhilite td.wn { +background: #FFF1AF; +} + +.container-fluid .calender tbody td.hilite { +padding: 1px 1px 1px 1px; +background:#444 !important; +color:#fff !important; +} + +.container-fluid .calender tbody td.active { +color:#fff; +background: #529214 !important; +padding: 2px 2px 0px 2px; +} + +.container-fluid .calender tbody td.selected { +font-weight: bold; +border: 1px solid #888; +padding: 1px 1px 1px 1px; +background: #f5f5f5 !important; +color: #222 !important; +} + +.container-fluid .calender tbody td.weekend { +color: #666; +} + +.container-fluid .calender tbody td.today { +font-weight: bold; +color: #529214; +background:#D9EFC2; +} + +.container-fluid .calender tbody .disabled { color: #999; } + +.container-fluid .calender tbody .emptycell { +visibility: hidden; +} + +.container-fluid .calender tbody .emptyrow { +display: none; +} + +.container-fluid .calender tfoot .footrow { +text-align: center; +background: #556; +color: #fff; +} + +.container-fluid .calender tfoot .ttip { +background: #222; +color: #fff; +font-size:10px; +border-top: 1px solid #dedede; +padding: 3px; +} + +.container-fluid .calender tfoot .hilite { +background: #aaf; +border: 1px solid #04f; +color: #000; +padding: 1px; +} + +.container-fluid .calender tfoot .active { +background: #77c; +padding: 2px 0px 0px 2px; +} + +.container-fluid .calender .combo { +position: absolute; +display: none; +top: 0px; +left: 0px; +width: 4em; +border: 1px solid #ccc; +background: #f5f5f5; +color: #222; +font-size: 90%; +z-index: 100; +} + +.container-fluid .calender .combo .label, +.container-fluid .calender .combo .label-IEfix { +text-align: center; +padding: 1px; +} + +.container-fluid .calender .combo .label-IEfix { +width: 4em; +} + +.container-fluid .calender .combo .hilite { +background: #444; +color:#fff; +} + +.container-fluid .calender .combo .active { +border-top: 1px solid #999; +border-bottom: 1px solid #999; +background: #dedede; +font-weight: bold; +} +.container-fluid form li div label +{ + clear:both; + color:#444; + display:block; + font-size:9px; + line-height:9px; + margin:0; + padding-top:3px; +} + +.container-fluid form li span label +{ + clear:both; + color:#444; + display:block; + font-size:9px; + line-height:9px; + margin:0; + padding-top:3px; +} +.container-fluid form li .datepicker +{ + cursor:pointer !important; + float:left; + height:16px; + margin:.1em 5px 0 0; + padding:0; + width:16px; +} +.container-fluid input.text +{ + background:#fff url(../../../images/shadow.gif) repeat-x top; + border-bottom:1px solid #ddd; + border-left:1px solid #c3c3c3; + border-right:1px solid #c3c3c3; + border-top:1px solid #7c7c7c; + color:#333; + font-size:100%; + margin:0; + padding:2px 0; +} +p.small { + font-size: 16px; +} + + +.container-fluid form ul +{ + font-size:200%; + list-style-type:none; + margin:0; + padding:0; + width:100%; +} + +.container-fluid form li +{ + display:block; + margin:0; + padding:4px 5px 2px 9px; + position:relative; +} +a, +a:hover, +a:focus, +a:active, +a.active { + outline: 0; +} +@media(min-width:768px) { + .navbar-fixed-top { + padding: 25px 0; + -webkit-transition: padding .3s; + -moz-transition: padding .3s; + transition: padding .3s; + } + + .navbar-fixed-top .navbar-brand { + font-size: 2em; + -webkit-transition: all .3s; + -moz-transition: all .3s; + transition: all .3s; + } + + .navbar-fixed-top.navbar-shrink { + padding: 10px 0; + } + + .navbar-fixed-top.navbar-shrink .navbar-brand { + font-size: 1.5em; + } +} + +.navbar a:focus { + outline: 0; +} + +.navbar .navbar-nav li a:focus { + outline: 0; +} + +.navbar-default, +.navbar-inverse { + border: 0; +} +.footer-div +{ +margin-top:120px; +} + +/*******************************************************************************/ +/*****************************CUSTOME STYLE*************************************/ +/*******************************************************************************/ + +.search-textbox +{ + background: url("../images/search-box.png") no-repeat; + border: 0 none; + color: #666666; + float: left; + font-family: 'Raleway'; + font-size: 15px; + height: 36px; + margin: 0; + padding-left: 15px; + transition: background 0.3s ease-in-out 0s; + width: 220px; + +} + +.search-button +{ + background: url("../images/search.png") no-repeat; + cursor: pointer; + height: 36px; + text-indent: -99999em; + width: 36px; + border: 0px; + +} +.main-logo-a +{ + height: auto; + overflow: visible; + margin-left: 0px !important; + padding-bottom: 10px !important; + padding-top: 10px !important; +} + +.menu-a +{ + font-size: 14px !important; + font-family: 'Raleway' !important; + color: #2C99CD !important; + padding-left: 10px !important; + padding-bottom: 5px !important; + padding-top: 5px !important; + padding-right: 10px !important; + +} + +.menu-a-active +{ + color: white !important; +} + +.menu-li +{ + /* float: right; */ + border-radius: 10px; + margin-left: 20px; + margin-right: 20px; +} + +.menu-li:HOVER +{ + background-color: #77BB41 !important; +} + +.menu-a:HOVER +{ + color: white !important; +} +.menu-li-active +{ + background-color: #77BB41; +} + +.menu-div +{ + /* margin-top: 30px; */ + +} + +.menu-ul +{ + margin-top: 45px; +} + +@media only screen and (max-width: 375px) { + .featured-labs-experiment-div + { + text-align: center; + } + .featured-labs-experiment-icon + { + float: left; + min-width: 78px; + } +} + + +@media only screen and (min-width: 401px) { + + .custom-toggle + { + margin-bottom: 0px !important; + margin-top: 27px !important; + } +} + +@media only screen and (max-width: 400px) { + + .main-logo-a + { + width: 60%; + } + + .custom-toggle + { + margin-bottom: 0px !important; + margin-top: 12% !important; + } + + +/* .menu-div + { + margin-top: 30px !important; + } */ + +} + + + +@media only screen and (min-width: 401px) and (max-width: 523px) { + +/* .menu-div + { + margin-top: 30px !important; + } */ +} + +@media only screen and (max-width: 496px) { + + .featured-labs-div + { + background: none !important; + } +} + +@media only screen and (max-width: 540px) { + .broad-labs-empty-div + { + display: none; + } + .border-right-green-dotted + { + margin-top: 60px !important; + } +} + +@media only screen and (min-width: 401px) and (max-width: 767px) { + + .main-logo + { + width: 70%; + } +} + +@media only screen and (max-width: 767px) { + + .menu-ul + { + margin-top: 0px !important; + } + + .menu-li-active + { + background-color: white !important; + } + + .menu-a-active + { + color: #2C99CE !important; + } + + .search-ul + { + display: none !important; + } + + + +} + +@media only screen and (min-width: 768px) and (max-width: 991px) { + .menu-a + { + font-size: 1.4em !important; + } + + .main-logo + { + width: 70%; + } + + .banner-text-small + { + font-size: 1.2em !important; + } + + .banner-text-medium + { + font-size: 1.7em !important; + } + + .banner-text-big + { + font-size: 2.0em !important; + } + +} + +@media only screen and (max-width: 991px) { + .menu-ul + { + margin-top: 30px; + } + + .search-textbox + { + width: 150px; + font-size: 0.9em; + } + + .menu-li + { + margin-left: 10px; + margin-right: 10px; + } + .aboutus-col-8 + { + padding-right: 15px !important; + } + .footer-div + { + background-size: cover !important; + } + + .lab-list-col-10 + { + /* background: none !important; */ + overflow:hidden; + } + + .featured-labs-main-div + { + margin-top: -35px !important; + } +} + + +@media only screen and (min-width: 992px) and (max-width: 1199px) { + +} + + +/*====================new grid================================*/ +@media only screen and (min-width: 992px) { + .col-md-2-5 + { + width: 20%; + float: left; + } +} + +@media only screen and (max-width: 991px) { + .col-md-2-5 + { + width: 33.33%; + float: left; + } + .col-md-2-5-1-l + { + background: url("../images/dotted-devider-h-o.png") no-repeat; + background-position: left bottom; + } +} + +@media only screen and (max-width: 767px) { + .col-md-2-5 + { + width: 50%; + float: left; + } +} + +@media only screen and (max-width: 540px) { + .col-md-2-5 + { + width: 100%; + float: left; + } +} +.col-md-2-5 +{ + position: relative; + min-height: 1px; + vertical-align: bottom; + /* display: flex; */ + min-height: 228px; +} + +.col-md-2-5-1-l +{ + width: 100%; + min-height: 228px; + height: 100%; +} + +.col-md-2-5-1-withbg +{ + background: url("../images/dotted-devider-h-o.png") no-repeat; + background-position: left bottom; + width: 100%; + min-height: 228px; + height: 100%; +} + +.col-md-2-5-2 +{ + padding-right: 15px; + padding-left: 15px; +} +/*************************************************************/ + +.featured-labs-div +{ + margin-left: 0px !important; + margin-right: 0px !important; + padding-left: 15px !important; +} +.border-bottom-img +{ + /* border-bottom: 2px dotted; + border-top : 0px; + border-left: 0px; + border-right: 0px; + -webkit-border-image: url(../images/dotted-devider-h-o.png) 30 round; Safari 3.1-5 + -o-border-image: url(../images/dotted-devider-h-o.png) 30 round; Opera 11-12.1 + border-image: url(../images/dotted-devider-h-o.png) 30 round; */ +} + +.broad-labs-a:HOVER +{ + text-decoration: none !important; + +} +.col-md-2-5-1-l:HOVER, .col-md-2-5-1-withbg:HOVER +{ + background-color: #e4e4e4 !important; +} + +.border-right-green-dotted +{ + border-right: 2px dotted; + margin-top: 30px; + border-right-color: #678f48; + min-height: 115px; +} +.border-right-green-dotted a{ + padding-left: 1px; + display: block; + margin-bottom: 10px; +} +a:focus +{ + color: #72AB44 !important; +} + +.featured-labs +{ + min-height: 190px !important; +} +/*========================font classes=======================*/ +.text-h2-lightblue +{ + color: #2C99CE; + font-size: 1.8em; + +} + +.text-a-lightgreen +{ + color: #72AB44; + font-size: 1.3em; + text-decoration: underline; +} + +.text-a-lightgreen:HOVER +{ + color: #72AB44 !important; +} + +.text-a-white +{ + color: white; + font-size: 1.4em; + text-decoration: underline; +} + + +.text-h2-lightblue-small +{ + color: #2C99CE; + font-size: 1.5em; +} + +.text-h3-darkblue-bold +{ + color: #3e6389; + font-size: 1.4em; + font-weight: bold; +} + +.text-h3-darkblue +{ + color: #3e6389; + font-size: 1.4em; +} + +.text-normal-gray-small +{ + color: #888; + font-size: 16px; +} + +.text-normal-gray-big +{ + color: #888; + font-size: 30px; +} +#experiment-article-section-1-heading +{ +color: #888; +font-size: 30px; +} +.text-normal-gray-smallest +{ + color: #888; + font-size: 13px; +} + +.featured-labs-icon-text +{ + color: #888; + font-size: 13px; +} + +.featured-labs-main-div +{ + margin-top: -50px; +} + +.nounderline +{ + text-decoration: none; +} + +.nounderline:HOVER +{ + text-decoration: none !important; +} +.text-normal-gray-medium +{ + color: #888; + font-size: 1.4em; +} +/*===========================================================*/ + +.shadow +{ + -webkit-box-shadow: inset 0 8px 6px -6px black; + -moz-box-shadow: inset 0 8px 6px -6px black; + box-shadow: inset 0 8px 6px -6px black; +} + + +/*owl style sheet*/ +#owl-demo .item{ + display: block; + padding: 1px 10px; + margin: 5px; + color: #888; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.owl-theme .owl-controls .owl-buttons div { + padding: 5px 9px; +} + +.owl-theme .owl-buttons i{ + margin-top: 2px; +} + +//To move navigation buttons outside use these settings: + +#owl-demo .owl-controls .owl-buttons div, #owl-partner-institutions .owl-controls .owl-buttons div{ + position: absolute; +} + +#owl-demo .owl-controls .owl-buttons .owl-prev{ + left: -45px; + top: 55px; + position: absolute; + background: none !important; +} + + #owl-partner-institutions .owl-controls .owl-buttons .owl-prev + { + left: -45px; + top: 20px; + position: absolute; + background: none !important; + } + +#owl-demo .owl-controls .owl-buttons .owl-next{ + right: -45px; + top: 55px; + position: absolute; + background: none !important; +} + +#owl-partner-institutions .owl-controls .owl-buttons .owl-next +{ + right: -45px; + top: 20px; + position: absolute; + background: none !important; +} + +#owl-demo .owl-controls .owl-pagination, #owl-partner-institutions .owl-controls .owl-pagination +{ + display: none; +} + +#owl-aboutus .owl-controls .owl-buttons +{ + display: none; +} + +#owl-aboutus .owl-controls .owl-pagination +{ + text-align: left; +} +#owl-aboutus .owl-controls .owl-page span +{ + background-color: white; + border: 2px solid; + height: 20px; + width: 20px; +} + +#owl-aboutus .owl-controls .owl-page.active span, #owl-aboutus .owl-controls.clickable .owl-page:hover span +{ + background-color: #FF6600; + border: 0px; +} +/*******************/ + + +/*Labs page*/ +.sidebar-col-2 +{ + +} + +.lab-list-col-10 +{ + background: url("../images/devider-blue-v-o.png") repeat-y; + background-position: left top; + margin-bottom: 25px; +} + +.sidebar-a:HOVER, .text-h3-darkblue:HOVER { + color: #ff6600 !important; +} + +.lab-list-row-div +{ + background: url('../images/bottom-line-n.png') no-repeat; + background-position: left bottom; + height: auto; + overflow: hidden; + border-bottom: 1.5px dotted; + border-bottom-color: #888; + padding-bottom: 10px; +} + +.lab-list-row-col-2 +{ + margin-top: 15px; +} + +/**********************************************************************************/ + +.banner-text +{ + position: relative; + top: -59px; + color: white !important; +} + +.banner-text-small +{ + font-size: 1.7em; +} + +.banner-text-medium +{ + font-size: 2.2em; +} + +.banner-text-big +{ + font-size: 2.7em; +} + +.baneer-text-sub-div +{ + position: relative; + float: left +} + +.banner-text-1 +{ + left: 3.7%; +} + +.banner-text-2 +{ + left: 9.6%; +} + +.banner-text-3 +{ + left: 15%; +} + +.banner-text-4 +{ + left:22%; +} + +.banner-caption-div +{ + position: absolute; + top: 140px; + left: 42%; +} + +.banner-caption-text +{ + font-size: 2.0em; + line-height: normal; + color: black; +} + + +/*==========================RESPONSIVE+++++++++++++++++++++++++++++++*/ + +@media only screen and (max-width: 399px) { + + .banner-text-small + { + font-size: 0.8em !important; + } + + .banner-text-medium + { + font-size: 0.9em !important; + } + + .banner-text-big + { + font-size: 1.1em !important; + } + + .banner-text + { + top: -21px; + letter-spacing: -1.5px; + } + + .banner-text-1 + { + left: 1.5%; + } + + .banner-text-2 + { + left: 3.0%; + } + + .banner-text-3 + { + left: 5%; + } + + .banner-text-4 + { + left: 8%; + } + +} + +@media only screen and (min-width: 400px) and (max-width: 500px) { + .banner-text-small + { + font-size: 0.9em !important; + } + + .banner-text-medium + { + font-size: 1.1em !important; + } + + .banner-text-big + { + font-size: 1.2em !important; + } + + .banner-text + { + top: -24px; + letter-spacing: -1px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } +} + +@media only screen and (min-width: 501px) and (max-width: 767px) { + .banner-text-small + { + font-size: 0.9em !important; + } + + .banner-text-medium + { + font-size: 1.2em !important; + } + + .banner-text-big + { + font-size: 1.4em !important; + } + .banner-text + { + top: -30px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } +} + + +@media only screen and (max-width: 349px) { + + .banner-caption-text + { + font-size: 0.5em; + } + +} + +@media only screen and (min-width: 350px) and (max-width: 400px) { + + .banner-caption-text + { + font-size: 0.6em; + } + +} + + +@media only screen and (min-width: 401px) and (max-width: 444px) { + + .banner-caption-text + { + font-size: 0.7em; + } + +} + + +@media only screen and (min-width: 445px) and (max-width: 609px) { + + .banner-caption-text + { + font-size: 0.9em; + } + +} + +@media only screen and (min-width: 610px) and (max-width: 767px) { + + .banner-caption-text + { + font-size: 1.1em; + } + +} + +@media only screen and (max-width: 767px) { + .banner-caption-div + { + position: relative !important; + } +} + +@media only screen and (max-width: 346px) { + .banner-caption-div + { + top: -39px; + left: -32%; + } +} + +@media only screen and (min-width: 347px) and (max-width: 399px) { + .banner-caption-div + { + top: -43px; + left: -22%; + } +} + +@media only screen and (min-width: 400px) and (max-width: 444px) { + .banner-caption-div + { + top: -50px; + left: -31%; + } +} + +@media only screen and (min-width: 445px) and (max-width: 500px) { + .banner-caption-div + { + top: -57px; + left: -23%; + } +} + +@media only screen and (min-width: 501px) and (max-width: 569px) { + .banner-caption-div + { + top: -65px; + left: -30%; + } +} + +@media only screen and (min-width: 570px) and (max-width: 639px) { + .banner-caption-div + { + top: -74px; + left: -22%; + } +} + +@media only screen and (min-width: 640px) and (max-width: 709px) { + .banner-caption-div + { + top: -83px; + left: -16%; + } +} + +@media only screen and (min-width: 710px) and (max-width: 767px) { + .banner-caption-div + { + top: -92px; + left: -11%; + } +} + + +@media only screen and (min-width: 768px) and (max-width: 991px) { + + .banner-text-small + { + font-size: 1.2em !important; + } + + .banner-text-medium + { + font-size: 1.7em !important; + } + + .banner-text-big + { + font-size: 2.0em !important; + } + + .banner-text + { + top: -40px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } + + .banner-caption-text + { + font-size: 1.5em; + } + .banner-caption-div + { + top: 99px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1100px) { + + .banner-text + { + top: -52px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1150px) { + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 9%; + } + + .banner-text-4 + { + left: 12%; + } + + .banner-caption-text + { + font-size: 1.6em; + } + .banner-caption-div + { + top: 133px; + } +} + +@media only screen and (min-width: 1150px) and (max-width: 1275px) { + + .banner-text-2 + { + left: 8.3%; + } + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } + + .banner-caption-text + { + font-size: 1.8em; + } +} + +/* Rules to fix the footer at the bottom of the page */ +/*html{ height:100%; } +body{ min-height:100%; padding:0; margin:0; position:relative; } + +body::after{ content:''; display:block; height:100px; }*/ + +footer{ + width:100%; +} + +/* To justify the paragraph text */ +p { + text-align: justify; +} + +/* Styles for feedback button in feedback section */ +#feedback-btn { + color: #2C99CE !important; + border-color: #2C99CE !important; +} + +#feedback-btn-link { + display: block; + margin: auto; + width: 17%; +} + +#feedback-btn-link:hover { + text-decoration: inherit !important; + color: inherit !important; +} + +/*Styles for list*/ +ul li span, ol li span { + font-size: 1.3em +} + +ul li, ol li{ + font-size: 1.1em +} + +/*Styles for progress bars*/ +.progress { + font-weight: bold; +} + +.progress-bar-green { + background-color: #008000; +} + +.progress-bar-blue { + background-color: #130e71; +} + +.progress-bar-red { + background-color: #d9534f; +} + +#progress-bar-header { + background-color: #fff; + border-radius: 6px; + padding: 22px; + box-shadow: 0 0 4px 0 rgba(17,22,26,.16),0 2px 4px 0 rgba(17,22,26,.08),0 4px 8px 0 rgba(17,22,26,.08); +} diff --git a/experiment/simulation/css/style.css b/experiment/simulation/css/style.css new file mode 100644 index 0000000..e6050ad --- /dev/null +++ b/experiment/simulation/css/style.css @@ -0,0 +1,1471 @@ +/* +Theme Name: Vlabs +Theme URI: http://www.vlabs.ac.in +Author: Vlabs.co.in +Author URI: http://www.vlabs.ac.in +Description: The theme to accompany the profile site for vlabs.ac.in +Version: 1.0 +*/ +@import url(https://fonts.googleapis.com/css?family=Raleway:400,300,700,500,600); +body { + overflow-x: hidden; + font-family:'Raleway' !important; + min-height: 100%; +} + +html { + height: 100%; +} + +p { + font-size: 16px; +} + +/*** Calendar **********************/ +.content .container-fluid div.calender { position: relative; } + +.container-fluid .calender table { +cursor:pointer; +border:1px solid #ccc; +font-size: 11px; +color: #000; +background: #fff; +font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; +} + +/* Styles for feedback button in feedback section */ +#feedback-btn { + color: #2C99CE !important; + border-color: #2C99CE !important; +} + +#feedback-btn-link { + display: block; + margin: auto; + width: 17%; +} + +#feedback-btn-link:hover { + text-decoration: inherit !important; + color: inherit !important; +} + +.container-fluid .calender .nav { +background:#f5f5f5; +} + +.container-fluid .calender thead .title { +font-weight: bold; +text-align: center; +background: #dedede; +color: #000; +padding: 2px 0 3px 0; +} + +.container-fluid .calender thead .headrow { +background: #f5f5f5; +color: #444; +font-weight:bold; +} + +.container-fluid .calender thead .daynames { +background: #fff; +color:#333; +font-weight:bold; +} + +.container-fluid .calender thead .name { +border-bottom: 1px dotted #ccc; +padding: 2px; +text-align: center; +color: #000; +} + +.container-fluid .calender thead .weekend { +color: #666; +} + +.container-fluid .calender thead .hilite { +background-color: #444; +color: #fff; +padding: 1px; +} + +.container-fluid .calender thead .active { +background-color: #d12f19; +color:#fff; +padding: 2px 0px 0px 2px; +} + + +.container-fluid .calender tbody .day { +width:1.8em; +color: #222; +text-align: right; +padding: 2px 2px 2px 2px; +} +.container-fluid .calender tbody .day.othermonth { +font-size: 80%; +color: #bbb; +} +.container-fluid .calender tbody .day.othermonth.oweekend { +color: #fbb; +} + +.container-fluid .calender table .wn { +padding: 2px 2px 2px 2px; +border-right: 1px solid #000; +background: #666; +} + +.container-fluid .calender tbody .rowhilite td { +background: #FFF1AF; +} + +.container-fluid .calender tbody .rowhilite td.wn { +background: #FFF1AF; +} + +.container-fluid .calender tbody td.hilite { +padding: 1px 1px 1px 1px; +background:#444 !important; +color:#fff !important; +} + +.container-fluid .calender tbody td.active { +color:#fff; +background: #529214 !important; +padding: 2px 2px 0px 2px; +} + +.container-fluid .calender tbody td.selected { +font-weight: bold; +border: 1px solid #888; +padding: 1px 1px 1px 1px; +background: #f5f5f5 !important; +color: #222 !important; +} + +.container-fluid .calender tbody td.weekend { +color: #666; +} + +.container-fluid .calender tbody td.today { +font-weight: bold; +color: #529214; +background:#D9EFC2; +} + +.container-fluid .calender tbody .disabled { color: #999; } + +.container-fluid .calender tbody .emptycell { +visibility: hidden; +} + +.container-fluid .calender tbody .emptyrow { +display: none; +} + +.container-fluid .calender tfoot .footrow { +text-align: center; +background: #556; +color: #fff; +} + +.container-fluid .calender tfoot .ttip { +background: #222; +color: #fff; +font-size:10px; +border-top: 1px solid #dedede; +padding: 3px; +} + +.container-fluid .calender tfoot .hilite { +background: #aaf; +border: 1px solid #04f; +color: #000; +padding: 1px; +} + +.container-fluid .calender tfoot .active { +background: #77c; +padding: 2px 0px 0px 2px; +} + +.container-fluid .calender .combo { +position: absolute; +display: none; +top: 0px; +left: 0px; +width: 4em; +border: 1px solid #ccc; +background: #f5f5f5; +color: #222; +font-size: 90%; +z-index: 100; +} + +.container-fluid .calender .combo .label, +.container-fluid .calender .combo .label-IEfix { +text-align: center; +padding: 1px; +} + +.container-fluid .calender .combo .label-IEfix { +width: 4em; +} + +.container-fluid .calender .combo .hilite { +background: #444; +color:#fff; +} + +.container-fluid .calender .combo .active { +border-top: 1px solid #999; +border-bottom: 1px solid #999; +background: #dedede; +font-weight: bold; +} +.container-fluid form li div label +{ + clear:both; + color:#444; + display:block; + font-size:9px; + line-height:9px; + margin:0; + padding-top:3px; +} + +.container-fluid form li span label +{ + clear:both; + color:#444; + display:block; + font-size:9px; + line-height:9px; + margin:0; + padding-top:3px; +} +.container-fluid form li .datepicker +{ + cursor:pointer !important; + float:left; + height:16px; + margin:.1em 5px 0 0; + padding:0; + width:16px; +} +.container-fluid input.text +{ + background:#fff url(../../../images/shadow.gif) repeat-x top; + border-bottom:1px solid #ddd; + border-left:1px solid #c3c3c3; + border-right:1px solid #c3c3c3; + border-top:1px solid #7c7c7c; + color:#333; + font-size:100%; + margin:0; + padding:2px 0; +} +p.small { + font-size: 16px; +} + + +.container-fluid form ul +{ + font-size:200%; + list-style-type:none; + margin:0; + padding:0; + width:100%; +} + +.container-fluid form li +{ + display:block; + margin:0; + padding:4px 5px 2px 9px; + position:relative; +} +a, +a:hover, +a:focus, +a:active, +a.active { + outline: 0; +} +@media(min-width:768px) { + .navbar-fixed-top { + padding: 25px 0; + -webkit-transition: padding .3s; + -moz-transition: padding .3s; + transition: padding .3s; + } + + .navbar-fixed-top .navbar-brand { + font-size: 2em; + -webkit-transition: all .3s; + -moz-transition: all .3s; + transition: all .3s; + } + + .navbar-fixed-top.navbar-shrink { + padding: 10px 0; + } + + .navbar-fixed-top.navbar-shrink .navbar-brand { + font-size: 1.5em; + } +} + +.navbar a:focus { + outline: 0; +} + +.navbar .navbar-nav li a:focus { + outline: 0; +} + +.navbar-default, +.navbar-inverse { + border: 0; +} +.footer-div +{ +margin-top:120px; +} + + +#top { + min-height: 100vh; + display: grid; + grid-template-rows: max-content auto max-content; +} + + +#footer { + color: #eee; + font-size: 14px; + width: 100%; + bottom: 0; +} + +#footer .footer-top { + background: #111; + padding: 15px 0 0px 0; +} + +#footer .row { + padding-bottom: 2rem; +} + +#footer .footer-top .footer-info h3 { + font-size: 34px; + margin: 0 0 20px 0; + padding: 2px 0 2px 10px; + line-height: 1; + font-family: "Open Sans", sans-serif; + font-weight: 700; + letter-spacing: 3px; + border-left: 4px solid #18d26e; +} + +#footer .footer-top p { + font-size: 1.4rem; + margin-bottom: 0; + color: #eee; +} + +#footer .footer-top .social-links a { + font-size: 18px; + display: inline-block; + background: #333; + color: #eee; + line-height: 1; + padding: 8px 0; + margin-right: 4px; + border-radius: 50%; + text-align: center; + width: 36px; + height: 36px; + transition: 0.3s; +} + +#footer .footer-top .social-links a:hover { + background: #3cd6ed; + color: #fff; +} + +#footer .footer-top h4 { + font-size: 14px; + color: #fff; + position: relative; + padding-bottom: 12px; +} + +#footer .footer-top h4::before, #footer .footer-top h4::after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + height: 2px; +} + +#footer .footer-top h4::before { + right: 0; + background: #555; +} + +#footer .footer-top h4::after { + background: #3EC1D5; + width: 60px; +} +#footer .footer-top i { + color:#fff; +} + +#footer .footer-top a { + color:#fff; +} + + + + +/*******************************************************************************/ +/*****************************CUSTOME STYLE*************************************/ +/*******************************************************************************/ + +.search-textbox +{ + background: url("../images/search-box.png") no-repeat; + border: 0 none; + color: #666666; + float: left; + font-family: 'Raleway'; + font-size: 15px; + height: 36px; + margin: 0; + padding-left: 15px; + transition: background 0.3s ease-in-out 0s; + width: 220px; + +} + +.search-button +{ + background: url("../images/search.png") no-repeat; + cursor: pointer; + height: 36px; + text-indent: -99999em; + width: 36px; + border: 0px; + +} +.main-logo-a +{ + height: auto; + overflow: visible; + margin-left: 0px !important; + padding-bottom: 10px !important; + padding-top: 10px !important; +} + +.menu-a +{ + font-size: 14px !important; + font-family: 'Raleway' !important; + color: #2C99CD !important; + padding-left: 10px !important; + padding-bottom: 5px !important; + padding-top: 5px !important; + padding-right: 10px !important; + +} + +.menu-a-active +{ + color: white !important; +} + +.menu-li +{ + /* float: right; */ + border-radius: 10px; + margin-left: 20px; + margin-right: 20px; +} + +.menu-li:HOVER +{ + background-color: #77BB41 !important; +} + +.menu-a:HOVER +{ + color: white !important; +} +.menu-li-active +{ + background-color: #77BB41; +} + +.menu-div +{ + /* margin-top: 30px; */ + +} + +.menu-ul +{ + margin-top: 45px; +} + +@media only screen and (max-width: 375px) { + .featured-labs-experiment-div + { + text-align: center; + } + .featured-labs-experiment-icon + { + float: left; + min-width: 78px; + } +} + + +@media only screen and (min-width: 401px) { + + .custom-toggle + { + margin-bottom: 0px !important; + margin-top: 27px !important; + } +} + +@media only screen and (max-width: 400px) { + + .main-logo-a + { + width: 60%; + } + + .custom-toggle + { + margin-bottom: 0px !important; + margin-top: 12% !important; + } + + +/* .menu-div + { + margin-top: 30px !important; + } */ + +} + + + +@media only screen and (min-width: 401px) and (max-width: 523px) { + +/* .menu-div + { + margin-top: 30px !important; + } */ +} + +@media only screen and (max-width: 496px) { + + .featured-labs-div + { + background: none !important; + } +} + +@media only screen and (max-width: 540px) { + .broad-labs-empty-div + { + display: none; + } + .border-right-green-dotted + { + margin-top: 60px !important; + } +} + +@media only screen and (min-width: 401px) and (max-width: 767px) { + + .main-logo + { + width: 70%; + } +} + +@media only screen and (max-width: 767px) { + + .menu-ul + { + margin-top: 0px !important; + } + + .menu-li-active + { + background-color: white !important; + } + + .menu-a-active + { + color: #2C99CE !important; + } + + .search-ul + { + display: none !important; + } + + + +} + +@media only screen and (min-width: 768px) and (max-width: 991px) { + .menu-a + { + font-size: 1.4em !important; + } + + .main-logo + { + width: 70%; + } + + .banner-text-small + { + font-size: 1.2em !important; + } + + .banner-text-medium + { + font-size: 1.7em !important; + } + + .banner-text-big + { + font-size: 2.0em !important; + } + +} + +@media only screen and (max-width: 991px) { + .menu-ul + { + margin-top: 30px; + } + + .search-textbox + { + width: 150px; + font-size: 0.9em; + } + + .menu-li + { + margin-left: 10px; + margin-right: 10px; + } + .aboutus-col-8 + { + padding-right: 15px !important; + } + .footer-div + { + background-size: cover !important; + } + + .lab-list-col-10 + { + /* background: none !important; */ + overflow:hidden; + } + + .featured-labs-main-div + { + margin-top: -35px !important; + } +} + + +@media only screen and (min-width: 992px) and (max-width: 1199px) { + +} + + +/*====================new grid================================*/ +@media only screen and (min-width: 992px) { + .col-md-2-5 + { + width: 20%; + float: left; + } +} + +@media only screen and (max-width: 991px) { + .col-md-2-5 + { + width: 33.33%; + float: left; + } + .col-md-2-5-1-l + { + background: url("../images/dotted-devider-h-o.png") no-repeat; + background-position: left bottom; + } +} + +@media only screen and (max-width: 767px) { + .col-md-2-5 + { + width: 50%; + float: left; + } +} + +@media only screen and (max-width: 540px) { + .col-md-2-5 + { + width: 100%; + float: left; + } +} +.col-md-2-5 +{ + position: relative; + min-height: 1px; + vertical-align: bottom; + /* display: flex; */ + min-height: 228px; +} + +.col-md-2-5-1-l +{ + width: 100%; + min-height: 228px; + height: 100%; +} + +.col-md-2-5-1-withbg +{ + background: url("../images/dotted-devider-h-o.png") no-repeat; + background-position: left bottom; + width: 100%; + min-height: 228px; + height: 100%; +} + +.col-md-2-5-2 +{ + padding-right: 15px; + padding-left: 15px; +} +/*************************************************************/ + +.featured-labs-div +{ + margin-left: 0px !important; + margin-right: 0px !important; + padding-left: 15px !important; +} +.border-bottom-img +{ + /* border-bottom: 2px dotted; + border-top : 0px; + border-left: 0px; + border-right: 0px; + -webkit-border-image: url(../images/dotted-devider-h-o.png) 30 round; Safari 3.1-5 + -o-border-image: url(../images/dotted-devider-h-o.png) 30 round; Opera 11-12.1 + border-image: url(../images/dotted-devider-h-o.png) 30 round; */ +} + +.broad-labs-a:HOVER +{ + text-decoration: none !important; + +} +.col-md-2-5-1-l:HOVER, .col-md-2-5-1-withbg:HOVER +{ + background-color: #e4e4e4 !important; +} + +.border-right-green-dotted +{ + border-right: 2px dotted; + margin-top: 30px; + border-right-color: #678f48; + min-height: 115px; +} +.border-right-green-dotted a{ + padding-left: 10px; + display: block; + margin-bottom: 10px; +} +a:focus +{ + color: #72AB44 !important; +} + +.featured-labs +{ + min-height: 190px !important; +} +/*========================font classes=======================*/ +.text-h2-lightblue +{ + color: #2C99CE; + font-size: 1.8em; + margin-top: 5px; + margin-bottom:20px; +} +.text-h1-lightblue +{ + color: #2C99CE; + font-size: 1.8em; + font-weight: bold; + text-align : center; + +} + +.text-a-lightgreen +{ + color: #72AB44; + font-size: 1.3em; + text-decoration: underline; +} + +.text-a-lightgreen:HOVER +{ + color: #72AB44 !important; +} + +.text-a-white +{ + color: white; + font-size: 1.4em; + text-decoration: underline; +} + + +.text-h2-lightblue-small +{ + color: #2C99CE; + font-size: 1.5em; +} + +.text-h3-darkblue-bold +{ + color: #3e6389; + font-size: 1.4em; + font-weight: bold; +} + +.text-h3-darkblue +{ + color: #3e6389; + font-size: 1.4em; +} + +.text-normal-gray-small +{ + color: #888; + font-size: 16px; +} + +.text-normal-gray-big +{ + color: #888; + font-size: 30px; +} +#experiment-article-section-1-heading +{ +color: #888; +font-size: 30px; +} +.text-normal-gray-smallest +{ + color: #888; + font-size: 13px; +} + +.featured-labs-icon-text +{ + color: #888; + font-size: 13px; +} + +.featured-labs-main-div +{ + margin-top: -50px; +} + +.nounderline +{ + text-decoration: none; +} + +.nounderline:HOVER +{ + text-decoration: none !important; +} +.text-normal-gray-medium +{ + color: #888; + font-size: 1.4em; +} +/*===========================================================*/ + +.shadow +{ + -webkit-box-shadow: inset 0 8px 6px -6px black; + -moz-box-shadow: inset 0 8px 6px -6px black; + box-shadow: inset 0 8px 6px -6px black; +} + + +/*owl style sheet*/ +#owl-demo .item{ + display: block; + padding: 1px 10px; + margin: 5px; + color: #888; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.owl-theme .owl-controls .owl-buttons div { + padding: 5px 9px; +} + +.owl-theme .owl-buttons i{ + margin-top: 2px; +} + +//To move navigation buttons outside use these settings: + +#owl-demo .owl-controls .owl-buttons div, #owl-partner-institutions .owl-controls .owl-buttons div{ + position: absolute; +} + +#owl-demo .owl-controls .owl-buttons .owl-prev{ + left: -45px; + top: 55px; + position: absolute; + background: none !important; +} + + #owl-partner-institutions .owl-controls .owl-buttons .owl-prev + { + left: -45px; + top: 20px; + position: absolute; + background: none !important; + } + +#owl-demo .owl-controls .owl-buttons .owl-next{ + right: -45px; + top: 55px; + position: absolute; + background: none !important; +} + +#owl-partner-institutions .owl-controls .owl-buttons .owl-next +{ + right: -45px; + top: 20px; + position: absolute; + background: none !important; +} + +#owl-demo .owl-controls .owl-pagination, #owl-partner-institutions .owl-controls .owl-pagination +{ + display: none; +} + +#owl-aboutus .owl-controls .owl-buttons +{ + display: none; +} + +#owl-aboutus .owl-controls .owl-pagination +{ + text-align: left; +} +#owl-aboutus .owl-controls .owl-page span +{ + background-color: white; + border: 2px solid; + height: 20px; + width: 20px; +} + +#owl-aboutus .owl-controls .owl-page.active span, #owl-aboutus .owl-controls.clickable .owl-page:hover span +{ + background-color: #FF6600; + border: 0px; +} +/*******************/ + + +/*Labs page*/ +.sidebar-col-2 +{ + margin-bottom : 15px; +} + +.lab-list-col-10 +{ + background: url("../images/devider-blue-v-o.png") repeat-y; + background-position: left top; + margin-bottom: 15px; +} + +.sidebar-a:HOVER, .text-h3-darkblue:HOVER { + color: #ff6600 !important; + } +h3 +{ + line-height: 32px; +} +h1 +{ + line-height:50px; + font-family: 'Montserrat', sans-serif; +} +h2 +{ + margin-bottom: 15px ; +} + +.lab-list-row-div +{ + background: url('../images/bottom-line-n.png') no-repeat; + background-position: left bottom; + height: auto; + overflow: hidden; + border-bottom: 1.5px dotted; + border-bottom-color: #888; + padding-bottom: 10px; +} + +.lab-list-row-col-2 +{ + margin-top: 15px; +} + +/**********************************************************************************/ + +.banner-text +{ + position: relative; + top: -59px; + color: white !important; +} + +.banner-text-small +{ + font-size: 1.7em; +} + +.banner-text-medium +{ + font-size: 2.2em; +} + +.banner-text-big +{ + font-size: 2.7em; +} + +.baneer-text-sub-div +{ + position: relative; + float: left +} + +.banner-text-1 +{ + left: 3.7%; +} + +.banner-text-2 +{ + left: 9.6%; +} + +.banner-text-3 +{ + left: 15%; +} + +.banner-text-4 +{ + left:22%; +} + +.banner-caption-div +{ + position: absolute; + top: 140px; + left: 42%; +} + +.banner-caption-text +{ + font-size: 2.0em; + line-height: normal; + color: black; +} + + +/*==========================RESPONSIVE+++++++++++++++++++++++++++++++*/ + +@media only screen and (max-width: 399px) { + + .banner-text-small + { + font-size: 0.8em !important; + } + + .banner-text-medium + { + font-size: 0.9em !important; + } + + .banner-text-big + { + font-size: 1.1em !important; + } + + .banner-text + { + top: -21px; + letter-spacing: -1.5px; + } + + .banner-text-1 + { + left: 1.5%; + } + + .banner-text-2 + { + left: 3.0%; + } + + .banner-text-3 + { + left: 5%; + } + + .banner-text-4 + { + left: 8%; + } + +} + +@media only screen and (min-width: 400px) and (max-width: 500px) { + .banner-text-small + { + font-size: 0.9em !important; + } + + .banner-text-medium + { + font-size: 1.1em !important; + } + + .banner-text-big + { + font-size: 1.2em !important; + } + + .banner-text + { + top: -24px; + letter-spacing: -1px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } +} + +@media only screen and (min-width: 501px) and (max-width: 767px) { + .banner-text-small + { + font-size: 0.9em !important; + } + + .banner-text-medium + { + font-size: 1.2em !important; + } + + .banner-text-big + { + font-size: 1.4em !important; + } + .banner-text + { + top: -30px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } +} + + +@media only screen and (max-width: 349px) { + + .banner-caption-text + { + font-size: 0.5em; + } + +} + +@media only screen and (min-width: 350px) and (max-width: 400px) { + + .banner-caption-text + { + font-size: 0.6em; + } + +} + + +@media only screen and (min-width: 401px) and (max-width: 444px) { + + .banner-caption-text + { + font-size: 0.7em; + } + +} + + +@media only screen and (min-width: 445px) and (max-width: 609px) { + + .banner-caption-text + { + font-size: 0.9em; + } + +} + +@media only screen and (min-width: 610px) and (max-width: 767px) { + + .banner-caption-text + { + font-size: 1.1em; + } + +} + +@media only screen and (max-width: 767px) { + .banner-caption-div + { + position: relative !important; + } +} + +@media only screen and (max-width: 346px) { + .banner-caption-div + { + top: -39px; + left: -32%; + } +} + +@media only screen and (min-width: 347px) and (max-width: 399px) { + .banner-caption-div + { + top: -43px; + left: -22%; + } +} + +@media only screen and (min-width: 400px) and (max-width: 444px) { + .banner-caption-div + { + top: -50px; + left: -31%; + } +} + +@media only screen and (min-width: 445px) and (max-width: 500px) { + .banner-caption-div + { + top: -57px; + left: -23%; + } +} + +@media only screen and (min-width: 501px) and (max-width: 569px) { + .banner-caption-div + { + top: -65px; + left: -30%; + } +} + +@media only screen and (min-width: 570px) and (max-width: 639px) { + .banner-caption-div + { + top: -74px; + left: -22%; + } +} + +@media only screen and (min-width: 640px) and (max-width: 709px) { + .banner-caption-div + { + top: -83px; + left: -16%; + } +} + +@media only screen and (min-width: 710px) and (max-width: 767px) { + .banner-caption-div + { + top: -92px; + left: -11%; + } +} + + +@media only screen and (min-width: 768px) and (max-width: 991px) { + + .banner-text-small + { + font-size: 1.2em !important; + } + + .banner-text-medium + { + font-size: 1.7em !important; + } + + .banner-text-big + { + font-size: 2.0em !important; + } + + .banner-text + { + top: -40px; + } + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } + + .banner-caption-text + { + font-size: 1.5em; + } + .banner-caption-div + { + top: 99px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1100px) { + + .banner-text + { + top: -52px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1150px) { + + .banner-text-2 + { + left: 7.0%; + } + + .banner-text-3 + { + left: 9%; + } + + .banner-text-4 + { + left: 12%; + } + + .banner-caption-text + { + font-size: 1.6em; + } + .banner-caption-div + { + top: 133px; + } +} + +@media only screen and (min-width: 1150px) and (max-width: 1275px) { + + .banner-text-2 + { + left: 8.3%; + } + .banner-text-3 + { + left: 12%; + } + + .banner-text-4 + { + left: 17%; + } + + .banner-caption-text + { + font-size: 1.8em; + } +} \ No newline at end of file diff --git a/experiment/simulation/css/style.css_old b/experiment/simulation/css/style.css_old new file mode 100644 index 0000000..e184d62 --- /dev/null +++ b/experiment/simulation/css/style.css_old @@ -0,0 +1,357 @@ +/* Primary Styles -------------------------------------------*/ +/* Author: Rohit Khot ---------------------------------------*/ + +/* Basic styling for the complete body tag ------------------*/ +/* BODY TEXT : 12px Lucida font with Cobalt color -----------*/ +/* BACKGROUND : white ---------------------------------------*/ + +body +{ + font-family:"Lucida Grande","Lucida Sans Unicode", + "Lucida Sans", Verdana,Arial,sans-serif; + font-size:12px; + margin:0 auto; + padding:0; + background: #012943; +} + +#container +{ + margin:0 auto; + padding:0 + width:100%; +} + +#lab-header, #experiment-header +{ + margin: 0 auto; + width: 1024px; +} + +#lab-header-logo, #experiment-header-logo +{ + +} + +#lab-header-logo img, #experiment-header-logo img +{ + width:1024px; + margin:0 auto; + +} +#lab-header-heading, #experiment-header-heading +{ + background:url(../images/header-blue.gif) no-repeat left top; + height:50px; + margin:0 auto; +} + +#lab-header-heading a:link, #experiment-header-heading a:link, +#lab-header-heading a:visited, #experiment-header-heading a:visited, +#lab-footer-heading a:link, #experiment-footer-heading a:link, +#lab-footer-heading a:visited, #experiment-footer-heading a:visited +{ + color:#fff; + text-decoration: none; + float: left; + font-size: 24px; + font-weight:bold; + text-transform:uppercase; + padding: 5px 25px 0px; +} + +#lab-header-heading a:focus, #experiment-header-heading a:focus, +#lab-header-heading a:hover, #experiment-header-heading a:hover, +#lab-footer-heading a:focus, #experiment-footer-heading a:focus, +#lab-footer-heading a:hover, #experiment-footer-heading a:hover +{ + color:#fff; + background-color:#02568e; +} + + +#lab-article, #experiment-article +{ + + + font-size: 16px; + line-height: 24px; + margin:0 auto; +} + +#lab-article-heading, #experiment-article-heading +{ + font-size: 50px; + font-family: Georgia, "Times New Roman", Times, Serif; + font-weight: normal; + text-transform: none; + line-height: 60px; + color: #3d414c; + padding: 10px 30px; + letter-spacing: 0; + position: relative; + margin:auto; + width: 964px; + background-color: rgb(227, 242, 252); +} + +nav#lab-article-navigation, nav#experiment-article-navigation +{ + height:90px; + margin: 0 auto; + width:1024px; + background: url(../images/content_bg.jpg); +} +nav#lab-article-navigation ul, nav#experiment-article-navigation ul +{ + /*margin-left:21px;*/ +} + +nav#lab-article-navigation ul li, nav#experiment-article-navigation ul li +{ + float: left; + list-style: none; + margin-right: 0.3em; +} + +nav#lab-article-navigation ul li img, nav#experiment-article-navigation ul li img +{ + width:50px; + height:50px; +} +nav#lab-article-navigation ul li a:link, nav#experiment-article-navigation ul li a:link, +nav#lab-article-navigation ul li a:visited, nav#experiment-article-navigation ul li a:visited +{ + color:#02568e; + text-decoration: underline; + float: right; + font-size: 16px; + text-transform:uppercase; + padding: 9px; +} + +nav#lab-article-navigation ul li a:hover, nav#experiment-article-navigation ul li a:hover, +nav#lab-article-navigation ul li a:focus, nav#experiment-article-navigation ul li a:focus +{ + color: #ffffff; + background-color:#02568e; +} + +#lab-article-sections-view, #experiment-article-sections-view +{ + padding-top:30px; + width:1024px; + min-height:400px; + + font-size: 16px; + line-height: 24px; + margin:0 auto; + background: url(../images/content_bg.jpg); +} + +#lab-article-sections, #experiment-article-sections +{ + padding-top:30px; + width:1024px; + min-height:400px; + + font-size: 16px; + line-height: 24px; + margin:0 auto; + background: url(../images/content_bg.jpg); + +} + +#lab-article-sections .heading, #experiment-article-sections .heading +{ + color:#222222; + font-family:"proxima-nova-extra-condensed-1", + "proxima-nova-extra-condensed-2", + "Trebuchet MS","Lucida Grande", + "Lucida Sans Unicode","Lucida Sans",Verdana, + Arial,sans-serif; + font-size:24px; + font-weight:300; + margin-left: 40px; + padding:5px 0 30px; +} + +#lab-article-sections .subheading, #experiment-article-sections .subheading, .content h2, .content h3 +{ + color:#222222; + font-family:"proxima-nova-extra-condensed-1", + "proxima-nova-extra-condensed-2", + "Trebuchet MS","Lucida Grande", + "Lucida Sans Unicode","Lucida Sans",Verdana, + Arial,sans-serif; + font-size:20px; + font-weight:300; + margin-left:40px; + padding:10px 0 10px; +} +.content p +{ + padding-left:40px; + width:90%; + padding-bottom:10px; +} + +.content p a:link, .content p a:visited +{ + text-decoration: underline; + color: #961b25;/* dusty read */ +} +.content img +{ + width:800px; + height:400px; + padding-left:40px; + padding-bottom:10px; +} + +.content pre +{ + padding-left:40px; + padding-bottom:10px; +} +.content embed +{ + width:800px; + padding-left:80px; + height:400px; + padding-bottom:10px; + border: solid 1px #b2bbc0; +} + +/* styles for button color */ +.button +{ + color: #fef4e9; + border: solid 1px #da7c0c; + background: #f78d1d; + background: -webkit-gradient(linear, left top, left bottom, + from(#faa51a), to(#f47a20)); + background: -moz-linear-gradient(top, #faa51a, #f47a20); + +} +.button:hover +{ + background: #f47c20; + background: -webkit-gradient(linear, left top, left bottom, + from(#f88e11), to(#f06015)); + background: -moz-linear-gradient(top, #f88e11, #f06015); + +} + +.button:active +{ + background: -webkit-gradient(linear, left top, left bottom, + from(#f47a20), to(#faa51a)); + background: -moz-linear-gradient(top, #f47a20, #faa51a); +} + +/* basic styles for button size, padding, etc. */ +.button +{ + display: inline-block; + outline: none; + font-size: 16px; + cursor: pointer; + text-align: center; + text-decoration: none; + line-height: 100%; + padding: .55em 2em .55em; + text-transform: uppercase; + -webkit-border-radius: 0.5em; + -moz-border-radius: 0.5em; + border-radius: 0.5em; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); + -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); + box-shadow: 0 1px 2px rgba(0,0,0,.2); +} +.button:hover +{ + text-decoration: none; +} +.button:active +{ + position: relative; + top: 1px; +} + + +.content table +{ + /*font-family: "Trebuchet MS", sans-serif; + font-size: 16px; + font-weight: bold;*/ + border-collapse:separate; + margin-left:40px; + padding-bottom:10px; +} + +.content table thead th +{ + color: #961b25; + font-size: 16px; + font-weight: normal; + text-transform:uppercase; + padding: 10px; + border:1px solid #b2bbc0; +} +.content table tbody th +{ + color: #961b25; + font-size: 16px; + font-weight: normal; + text-transform:uppercase; + padding: 10px; + border:1px solid #b2bbc0; +} + +.content table tbody td +{ + padding:10px; + text-align:left; + border:1px solid #b2bbc0; + max-width:700px; + +} + +.content ul, .content ol +{ + margin-left:50px; +} + +aside +{ + float:right; + width:200px; + position:relative; +} + +#hidden-content +{ + display:none; +} + +.icon +{ + display:none; +} + +#experiment-article-breadcrumb +{ + /*margin-left: 30px;*/ + width:1024px; + margin:0 auto; +} + +#experiment-article-breadcrumb a:link, #experiment-article-breadcrumb a:visited +{ + color: #fefefe; +} + +#lab-footer{ + text-align : center; +} diff --git a/experiment/simulation/index.html b/experiment/simulation/index.html index ee9be23..a57e32b 100644 --- a/experiment/simulation/index.html +++ b/experiment/simulation/index.html @@ -6,6 +6,8 @@ + +

    Click here to perform the experiment

    diff --git a/experiment/simulation/js/carpe-slider.js b/experiment/simulation/js/carpe-slider.js new file mode 100644 index 0000000..5889b2c --- /dev/null +++ b/experiment/simulation/js/carpe-slider.js @@ -0,0 +1,212 @@ +//---------------------------------+ +// CARPE S l i d e r 1.5.1 | +// 2008 - 07 - 09 | +// By Tom Hermansson Snickars | +// Copyright CARPE Design | +// http://carpe.ambiprospect.com/ | +//---------------------------------+ + +// Global vars. You don't need to make changes here to change your sliders. +// Changing the attributes in your (X)HTML file is enough. +var carpemouseover = false; +var carpeDefaultSliderLength = 100; +var carpeSliderDefaultOrientation = 'horizontal'; +var carpeSliderClassName = 'carpe_slider'; +var carpeSliderDisplayClassName = 'carpe_slider_display'; +var carpesliders = []; +var carpedisplays = []; +var carpeslider = {}; +var carpedisplay = {}; + +// carpeAddLoadEvent +function carpeAddLoadEvent(func) +{ + var oldonload = window.onload; + if (typeof window.onload != 'function') { + window.onload = func; + } + else { + window.onload = function() { + oldonload(); + func(); + }; + } +} +// carpeGetElementsByClass: Cross-browser function that returns +// an array with all elements that have a class attribute that +// contains className +function carpeGetElementsByClass(className) +{ + var classElements = new Array(); + var els = document.getElementsByTagName("*"); + var elsLen = els.length; + var pattern = new RegExp("\\b" + className + "\\b"); + for (var i = 0, j = 0; i < elsLen; i++) { + if ( pattern.test(els[i].className) ) { + classElements[j] = els[i]; + j++; + } + } + return classElements; +} +// carpeLeft: Cross-browser version of "element.style.left" +// Returns or sets the horizontal position of an element. +function carpeLeft(elmnt, pos) +{ + if (!(elmnt = document.getElementById(elmnt))) return 0; + if (elmnt.style && (typeof(elmnt.style.left) == 'string')) { + if (typeof(pos) == 'number') elmnt.style.left = pos + 'px'; + else { + pos = parseInt(elmnt.style.left); + if (isNaN(pos)) pos = 0; + } + } + else if (elmnt.style && elmnt.style.pixelLeft) { + if (typeof(pos) == 'number') elmnt.style.pixelLeft = pos; + else pos = elmnt.style.pixelLeft; + } + return pos; +} +// carpeTop: Cross-browser version of "element.style.top" +// Returns or sets the vertical position of an element. +function carpeTop(elmnt, pos) +{ + if (!(elmnt = document.getElementById(elmnt))) return 0; + if (elmnt.style && (typeof(elmnt.style.top) == 'string')) { + if (typeof(pos) == 'number') elmnt.style.top = pos + 'px'; + else { + pos = parseInt(elmnt.style.top); + if (isNaN(pos)) pos = 0; + } + } + else if (elmnt.style && elmnt.style.pixelTop) { + if (typeof(pos) == 'number') elmnt.style.pixelTop = pos; + else pos = elmnt.style.pixelTop; + } + return pos; +} +// moveSlider: Handles slider and display while dragging +function moveSlider(evnt) +{ + var evnt = (!evnt) ? window.event : evnt; // The mousemove event + if (carpemouseover) { // Only if slider is dragged + carpeslider.x = carpeslider.startOffsetX + evnt.screenX; // Horizontal mouse position relative to allowed slider positions + carpeslider.y = carpeslider.startOffsetY + evnt.screenY; // Horizontal mouse position relative to allowed slider positions + if (carpeslider.x > carpeslider.xMax) carpeslider.x = carpeslider.xMax; // Limit horizontal movement + if (carpeslider.x < 0) carpeslider.x = 0; // Limit horizontal movement + if (carpeslider.y > carpeslider.yMax) carpeslider.y = carpeslider.yMax; // Limit vertical movement + if (carpeslider.y < 0) carpeslider.y = 0; // Limit vertical movement + carpeLeft(carpeslider.id, carpeslider.x); // move slider to new horizontal position + carpeTop(carpeslider.id, carpeslider.y); // move slider to new vertical position + var sliderVal = carpeslider.x + carpeslider.y; // pixel value of slider regardless of orientation + var sliderPos = (carpeslider.distance / carpedisplay.valuecount) * + Math.round(carpedisplay.valuecount * sliderVal / carpeslider.distance); + var v = Math.round((sliderPos * carpeslider.scale + carpeslider.from) * // calculate display value + Math.pow(10, carpedisplay.decimals)) / Math.pow(10, carpedisplay.decimals); + carpedisplay.value = v; // put the new value in the slider display element + return false; + } + return +} +// slide: Handles the start of a slider move. +function slide(evnt) +{ + if (!evnt) evnt = window.event; // Get the mouse event causing the slider activation. + carpeslider = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated slider element. + var dist = parseInt(carpeslider.getAttribute('distance')); // The allowed slider movement in pixels. + carpeslider.distance = dist ? dist : carpeDefaultSliderLength; // Deafault distance from global var. + var ori = carpeslider.getAttribute('orientation'); // Slider orientation: 'horizontal' or 'vertical'. + var orientation = ((ori == 'horizontal') || (ori == 'vertical')) ? ori : carpeSliderDefaultOrientation; + // Default orientation from global variable. + var displayId = carpeslider.getAttribute('display'); // ID of associated display element. + carpedisplay = document.getElementById(displayId); // Get the associated display element. + carpedisplay.sliderId = carpeslider.id; // Associate the display with the correct slider. + var dec = parseInt(carpedisplay.getAttribute('decimals')); // Number of decimals to be displayed. + carpedisplay.decimals = dec ? dec : 0; // Default number of decimals: 0. + var val = parseInt(carpedisplay.getAttribute('valuecount')) // Allowed number of values in the interval. + carpedisplay.valuecount = val ? val : carpeslider.distance + 1 // Default number of values: the sliding distance. + var from = parseFloat(carpedisplay.getAttribute('from')) // Min/start value for the display. + from = from ? from : 0 // Default min/start value: 0. + var to = parseFloat(carpedisplay.getAttribute('to')) // Max value for the display. + to = to ? to : carpeslider.distance // Default number of values: the sliding distance. + carpeslider.scale = (to - from) / carpeslider.distance // Slider-display scale [value-change per pixel of movement]. + if (orientation == 'vertical') { // Set limits and scale for vertical sliders. + carpeslider.from = to // Invert for vertical sliders. "Higher is more." + carpeslider.xMax = 0 + carpeslider.yMax = carpeslider.distance + carpeslider.scale = -carpeslider.scale // Invert scale for vertical sliders. "Higher is more." + } + else { // Set limits for horizontal sliders. + carpeslider.from = from; + carpeslider.xMax = carpeslider.distance; + carpeslider.yMax = 0; + } + carpeslider.startOffsetX = carpeLeft(carpeslider.id) - evnt.screenX; // Slider-mouse horizontal offset at start of slide. + carpeslider.startOffsetY = carpeTop(carpeslider.id) - evnt.screenY; // Slider-mouse vertical offset at start of slide. + carpemouseover = true; + document.onmousemove = moveSlider; // Start the action if the mouse is dragged. + document.onmouseup = sliderMouseUp; // Stop sliding. + return false; +} +// sliderMouseUp: Handles the mouseup event after moving a slider. +// Snaps the slider position to allowed/displayed value. +function sliderMouseUp() +{ + if (carpemouseover) { + var v = (carpedisplay.value) ? carpedisplay.value : 0 // Find last display value. + var pos = (v - carpeslider.from)/(carpeslider.scale) // Calculate slider position (regardless of orientation). + if (carpeslider.yMax == 0) { + pos = (pos > carpeslider.xMax) ? carpeslider.xMax : pos; + pos = (pos < 0) ? 0 : pos; + carpeLeft(carpeslider.id, pos); // Snap horizontal slider to corresponding display position. + } + if (carpeslider.xMax == 0) { + pos = (pos > carpeslider.yMax) ? carpeslider.yMax : pos; + pos = (pos < 0) ? 0 : pos; + carpeTop(carpeslider.id, pos); // Snap vertical slider to corresponding display position. + } + if (document.removeEventListener) { // Remove event listeners from 'document' (W3C). + document.removeEventListener('mousemove', moveSlider, false); + document.removeEventListener('mouseup', sliderMouseUp, false); + } + else if (document.detachEvent) { // Remove event listeners from 'document' (IE). + document.detachEvent('onmousemove', moveSlider); + document.detachEvent('onmouseup', sliderMouseUp); + document.releaseCapture(); + } + } + carpemouseover = false; // Stop the sliding. +} +function resetPos () { + var pos,tmp; + for (var i = 0; i < carpesliders.length; i++) { + tmp = carpedisplays[i].defaultValue; + pos = (tmp - carpesliders[i].from)/(carpesliders[i].scale) // Calculate slider position (regardless of orientation). + carpeLeft(carpesliders[i].id, pos); // Snap horizontal slider to corresponding display position. + carpedisplays[i].value = tmp; // Resets display on page reload. + } + return; +} +function focusDisplay(evnt) +{ + if (!evnt) evnt = window.event; // Get the mouse event causing the display activation. + var carpedisplay = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated display element. + var lock = carpedisplay.getAttribute('typelock'); // Is the user allowed to type into the display? + if (lock == 'on') { + carpedisplay.blur(); + } + return; +} +function carpeInit() // Set up the sliders and the displays. +{ + carpesliders = carpeGetElementsByClass(carpeSliderClassName) // Find the horizontal sliders. + for (var i = 0; i < carpesliders.length; i++) { + carpesliders[i].addEventListener("mousedown",slide,true); // Attach event listener. + } + carpedisplays = carpeGetElementsByClass(carpeSliderDisplayClassName) // Find the displays. + for (var i = 0; i < carpedisplays.length; i++) { + carpedisplays[i].value = carpedisplays[i].defaultValue; // Resets display on page reload. + carpedisplays[i].onfocus = focusDisplay; // Attach event listener. + } +} +carpeAddLoadEvent(carpeInit); diff --git a/experiment/simulation/js/jquery-1.4.2.min.js b/experiment/simulation/js/jquery-1.4.2.min.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/experiment/simulation/js/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
    a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

    ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
    ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
    "; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/experiment/simulation/js/jquery-1.js b/experiment/simulation/js/jquery-1.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/experiment/simulation/js/jquery-1.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
    a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

    ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
    ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
    "; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/experiment/simulation/js/jquery-ui-1.8.4.custom.min.js b/experiment/simulation/js/jquery-ui-1.8.4.custom.min.js new file mode 100644 index 0000000..437d104 --- /dev/null +++ b/experiment/simulation/js/jquery-ui-1.8.4.custom.min.js @@ -0,0 +1,137 @@ +/*! + * jQuery UI 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); +b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): +this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); +this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Accordion 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var f=d.closest(".ui-accordion-header");a.active=f.length?f:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",function(g){return a._keydown(g)}).next().attr("role", +"tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(g){a._clickHandler.call(a,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers); +this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(g){c(a.target).attr("tabIndex",-1);c(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected); +a.next().addClass("ui-accordion-content-active")}h=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):h,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(h,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},h=this.active=c([]);this._toggle(h,f,g)}},_toggle:function(a,b,d,f,g){var h=this,e=h.options;h.toShow=a;h.toHide=b;h.data=d;var j=function(){if(h)return h._completed.apply(h,arguments)};h._trigger("changestart",null,h.data);h.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]),toHide:b,complete:j, +down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!f[k]&&!c.easing[k])k="slide";f[k]||(f[k]=function(l){this.slide(l,{easing:k,duration:i||700})}); +f[k](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.4",animations:{slide:function(a, +b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},h={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){h[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);g[i]={value:j[1], +unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(h,{step:function(j,i){if(i.prop=="height")f=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=f*g[i.prop].value+g[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide", +paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Button 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",i);this._determineButtonType(); +this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button", +function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button", +function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button", +function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")? +"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("label[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()); +this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed", +true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"), +c=a("").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Slider 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");b.disabled&&this.element.addClass("ui-slider-disabled ui-disabled"); +this.range=d([]);if(b.range){if(b.range===true){this.range=d("
    ");if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}else this.range=d("
    ");this.range.appendTo(this.element).addClass("ui-slider-range");if(b.range==="min"||b.range==="max")this.range.addClass("ui-slider-range-"+b.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(b.values&&b.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!a.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");h=a._start(c,f);if(h===false)return}break}i=a.options.step;h=a.options.values&&a.options.values.length?(g=a.values(f)):(g=a.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=a._valueMin();break;case d.ui.keyCode.END:g=a._valueMax();break;case d.ui.keyCode.PAGE_UP:g=a._trimAlignValue(h+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=a._trimAlignValue(h-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +a._valueMax())return;g=a._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===a._valueMin())return;g=a._trimAlignValue(h-i);break}a._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(c,e);a._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(a){var b=this.options,c,e,f,h,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(b.range===true&&this.values(1)===b.min){g+=1;f=d(this.handles[g])}if(this._start(a, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();b=f.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-f.width()/2,top:a.pageY-b.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b= +this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b= +this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b); +c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var e;if(this.options.values&&this.options.values.length){e=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>e||b===1&&c1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;fthis._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=a%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a= +this.options.range,b=this.options,c=this,e=!this._animateOff?b.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({width:f- +g+"%"},{queue:false,duration:b.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:b.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"}, +b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.4"})})(jQuery); +; \ No newline at end of file diff --git a/experiment/simulation/js/jquery.flot.js b/experiment/simulation/js/jquery.flot.js new file mode 100644 index 0000000..6534a46 --- /dev/null +++ b/experiment/simulation/js/jquery.flot.js @@ -0,0 +1,2119 @@ +/* Javascript plotting library for jQuery, v. 0.6. + * + * Released under the MIT license by IOLA, December 2007. + * + */ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.0. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() work in-place instead of returning + * new objects. + */ +(function(){jQuery.color={};jQuery.color.make=function(E,D,B,C){var F={};F.r=E||0;F.g=D||0;F.b=B||0;F.a=C!=null?C:1;F.add=function(I,H){for(var G=0;G=1){return"rgb("+[F.r,F.g,F.b].join(",")+")"}else{return"rgba("+[F.r,F.g,F.b,F.a].join(",")+")"}};F.normalize=function(){function G(I,J,H){return JH?H:J)}F.r=G(0,parseInt(F.r),255);F.g=G(0,parseInt(F.g),255);F.b=G(0,parseInt(F.b),255);F.a=G(0,F.a,1);return F};F.clone=function(){return jQuery.color.make(F.r,F.b,F.g,F.a)};return F.normalize()};jQuery.color.extract=function(C,B){var D;do{D=C.css(B).toLowerCase();if(D!=""&&D!="transparent"){break}C=C.parent()}while(!jQuery.nodeName(C.get(0),"body"));if(D=="rgba(0, 0, 0, 0)"){D="transparent"}return jQuery.color.parse(D)};jQuery.color.parse=function(E){var D,B=jQuery.color.make;if(D=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(E)){return B(parseInt(D[1],10),parseInt(D[2],10),parseInt(D[3],10))}if(D=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E)){return B(parseInt(D[1],10),parseInt(D[2],10),parseInt(D[3],10),parseFloat(D[4]))}if(D=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(E)){return B(parseFloat(D[1])*2.55,parseFloat(D[2])*2.55,parseFloat(D[3])*2.55)}if(D=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E)){return B(parseFloat(D[1])*2.55,parseFloat(D[2])*2.55,parseFloat(D[3])*2.55,parseFloat(D[4]))}if(D=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(E)){return B(parseInt(D[1],16),parseInt(D[2],16),parseInt(D[3],16))}if(D=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(E)){return B(parseInt(D[1]+D[1],16),parseInt(D[2]+D[2],16),parseInt(D[3]+D[3],16))}var C=jQuery.trim(E).toLowerCase();if(C=="transparent"){return B(255,255,255,0)}else{D=A[C];return B(D[0],D[1],D[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(); + +// the actual Flot code +(function($) { + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85 // set to 0 to avoid background + }, + xaxis: { + mode: null, // null or "time" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + + // mode specific options + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null, // number or [number, "unit"] + monthNames: null, // list of names of months + timeformat: null, // format string to use + twelveHourClock: false // 12 or 24 time in time mode + }, + yaxis: { + autoscaleMargin: 0.02 + }, + x2axis: { + autoscaleMargin: null + }, + y2axis: { + autoscaleMargin: 0.02 + }, + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff" + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // or "center" + horizontal: false // when horizontal, left is now top + }, + shadowSize: 3 + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + tickColor: "rgba(0,0,0,0.15)", // color used for the ticks + labelMargin: 5, // in pixels + borderWidth: 2, // in pixels + borderColor: null, // set if different from the grid color + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + hooks: {} + }, + canvas = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + axes = { xaxis: {}, yaxis: {}, x2axis: {}, y2axis: {} }, + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + canvasWidth = 0, canvasHeight = 0, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + draw: [], + bindEvents: [], + drawOverlay: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return canvas; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function() { return series; }; + plot.getAxes = function() { return axes; }; + plot.getOptions = function() { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { left: parseInt(axisSpecToRealAxis(point, "xaxis").p2c(+point.x) + plotOffset.left), + top: parseInt(axisSpecToRealAxis(point, "yaxis").p2c(+point.y) + plotOffset.top) }; + }; + + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + constructCanvas(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + $.extend(true, options, opts); + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize) + options.series.shadowSize = options.shadowSize; + + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisSpecToRealAxis(obj, attr) { + var a = obj[attr]; + if (!a || a == 1) + return axes[attr]; + if (typeof a == "number") + return axes[attr.charAt(0) + a + attr.slice(1)]; + return a; // assume it's OK + } + + function fillInSeriesOptions() { + var i; + + // collect what we already got of colors + var neededColors = series.length, + usedColors = [], + assignedColors = []; + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + --neededColors; + if (typeof sc == "number") + assignedColors.push(sc); + else + usedColors.push($.color.parse(series[i].color)); + } + } + + // we might need to generate more colors if higher indices + // are assigned + for (i = 0; i < assignedColors.length; ++i) { + neededColors = Math.max(neededColors, assignedColors[i] + 1); + } + + // produce colors as needed + var colors = [], variation = 0; + i = 0; + while (colors.length < neededColors) { + var c; + if (options.colors.length == i) // check degenerate case + c = $.color.make(100, 100, 100); + else + c = $.color.parse(options.colors[i]); + + // vary color if needed + var sign = variation % 2 == 1 ? -1 : 1; + c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2) + + // FIXME: if we're getting to close to something else, + // we should probably skip this one + colors.push(c); + + ++i; + if (i >= options.colors.length) { + i = 0; + ++variation; + } + } + + // fill in the options + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // setup axes + s.xaxis = axisSpecToRealAxis(s, "xaxis"); + s.yaxis = axisSpecToRealAxis(s, "yaxis"); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p; + + for (axis in axes) { + axes[axis].datamin = topSentry; + axes[axis].datamax = bottomSentry; + axes[axis].used = false; + } + + function updateAxis(axis, min, max) { + if (min < axis.datamin) + axis.datamin = min; + if (max > axis.datamax) + axis.datamax = max; + } + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + var data = s.data, format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show) + format.push({ y: true, number: true, required: false, defaultValue: 0 }); + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + if (s.datapoints.pointsize == null) + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.x) + updateAxis(s.xaxis, val, val); + if (f.y) + updateAxis(s.yaxis, val, val); + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points, + ps = s.datapoints.pointsize; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta = s.bars.align == "left" ? 0 : -s.bars.barWidth/2; + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + for (axis in axes) { + if (axes[axis].datamin == topSentry) + axes[axis].datamin = null; + if (axes[axis].datamax == bottomSentry) + axes[axis].datamax = null; + } + } + + function constructCanvas() { + function makeCanvas(width, height) { + var c = document.createElement('canvas'); + c.width = width; + c.height = height; + if ($.browser.msie) // excanvas hack + c = window.G_vmlCanvasManager.initElement(c); + return c; + } + + canvasWidth = placeholder.width(); + canvasHeight = placeholder.height(); + placeholder.html(""); // clear placeholder + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + if (canvasWidth <= 0 || canvasHeight <= 0) + throw "Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight; + + if ($.browser.msie) // excanvas hack + window.G_vmlCanvasManager.init_(document); // make sure everything is setup + + // the canvas + canvas = $(makeCanvas(canvasWidth, canvasHeight)).appendTo(placeholder).get(0); + ctx = canvas.getContext("2d"); + + // overlay canvas for interactive features + overlay = $(makeCanvas(canvasWidth, canvasHeight)).css({ position: 'absolute', left: 0, top: 0 }).appendTo(placeholder).get(0); + octx = overlay.getContext("2d"); + octx.stroke(); + } + + function bindEvents() { + // we include the canvas in the event holder too, because IE 7 + // sometimes has trouble with the stacking order + eventHolder = $([overlay, canvas]); + + // bind events + if (options.grid.hoverable) + eventHolder.mousemove(onMouseMove); + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function setupGrid() { + function setTransformationHelpers(axis, o) { + function identity(x) { return x; } + + var s, m, t = o.transform || identity, + it = o.inverseTransform; + + // add transformation helpers + if (axis == axes.xaxis || axis == axes.x2axis) { + // precompute how much the axis is scaling a point + // in canvas space + s = axis.scale = plotWidth / (t(axis.max) - t(axis.min)); + m = t(axis.min); + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + else { + s = axis.scale = plotHeight / (t(axis.max) - t(axis.min)); + m = t(axis.max); + + if (t == identity) + axis.p2c = function (p) { return (m - p) * s; }; + else + axis.p2c = function (p) { return (m - t(p)) * s; }; + if (!it) + axis.c2p = function (c) { return m - c / s; }; + else + axis.c2p = function (c) { return it(m - c / s); }; + } + } + + function measureLabels(axis, axisOptions) { + var i, labels = [], l; + + axis.labelWidth = axisOptions.labelWidth; + axis.labelHeight = axisOptions.labelHeight; + + if (axis == axes.xaxis || axis == axes.x2axis) { + // to avoid measuring the widths of the labels, we + // construct fixed-size boxes and put the labels inside + // them, we don't need the exact figures and the + // fixed-size box content is easy to center + if (axis.labelWidth == null) + axis.labelWidth = canvasWidth / (axis.ticks.length > 0 ? axis.ticks.length : 1); + + // measure x label heights + if (axis.labelHeight == null) { + labels = []; + for (i = 0; i < axis.ticks.length; ++i) { + l = axis.ticks[i].label; + if (l) + labels.push('
    ' + l + '
    '); + } + + if (labels.length > 0) { + var dummyDiv = $('
    ' + + labels.join("") + '
    ').appendTo(placeholder); + axis.labelHeight = dummyDiv.height(); + dummyDiv.remove(); + } + } + } + else if (axis.labelWidth == null || axis.labelHeight == null) { + // calculate y label dimensions + for (i = 0; i < axis.ticks.length; ++i) { + l = axis.ticks[i].label; + if (l) + labels.push('
    ' + l + '
    '); + } + + if (labels.length > 0) { + var dummyDiv = $('
    ' + + labels.join("") + '
    ').appendTo(placeholder); + if (axis.labelWidth == null) + axis.labelWidth = dummyDiv.width(); + if (axis.labelHeight == null) + axis.labelHeight = dummyDiv.find("div").height(); + dummyDiv.remove(); + } + + } + + if (axis.labelWidth == null) + axis.labelWidth = 0; + if (axis.labelHeight == null) + axis.labelHeight = 0; + } + + function setGridSpacing() { + // get the most space needed around the grid for things + // that may stick out + var maxOutset = options.grid.borderWidth; + for (i = 0; i < series.length; ++i) + maxOutset = Math.max(maxOutset, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + + plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = maxOutset; + + var margin = options.grid.labelMargin + options.grid.borderWidth; + + if (axes.xaxis.labelHeight > 0) + plotOffset.bottom = Math.max(maxOutset, axes.xaxis.labelHeight + margin); + if (axes.yaxis.labelWidth > 0) + plotOffset.left = Math.max(maxOutset, axes.yaxis.labelWidth + margin); + if (axes.x2axis.labelHeight > 0) + plotOffset.top = Math.max(maxOutset, axes.x2axis.labelHeight + margin); + if (axes.y2axis.labelWidth > 0) + plotOffset.right = Math.max(maxOutset, axes.y2axis.labelWidth + margin); + + plotWidth = canvasWidth - plotOffset.left - plotOffset.right; + plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top; + } + + var axis; + for (axis in axes) + setRange(axes[axis], options[axis]); + + if (options.grid.show) { + for (axis in axes) { + prepareTickGeneration(axes[axis], options[axis]); + setTicks(axes[axis], options[axis]); + measureLabels(axes[axis], options[axis]); + } + + setGridSpacing(); + } + else { + plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0; + plotWidth = canvasWidth; + plotHeight = canvasHeight; + } + + for (axis in axes) + setTransformationHelpers(axes[axis], options[axis]); + + if (options.grid.show) + insertLabels(); + + insertLegend(); + } + + function setRange(axis, axisOptions) { + var min = +(axisOptions.min != null ? axisOptions.min : axis.datamin), + max = +(axisOptions.max != null ? axisOptions.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (axisOptions.min == null) + min -= widen; + // alway widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (axisOptions.max == null || axisOptions.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = axisOptions.autoscaleMargin; + if (margin != null) { + if (axisOptions.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (axisOptions.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function prepareTickGeneration(axis, axisOptions) { + // estimate number of ticks + var noTicks; + if (typeof axisOptions.ticks == "number" && axisOptions.ticks > 0) + noTicks = axisOptions.ticks; + else if (axis == axes.xaxis || axis == axes.x2axis) + // heuristic based on the model a*sqrt(x) fitted to + // some reasonable data points + noTicks = 0.3 * Math.sqrt(canvasWidth); + else + noTicks = 0.3 * Math.sqrt(canvasHeight); + + var delta = (axis.max - axis.min) / noTicks, + size, generator, unit, formatter, i, magn, norm; + + if (axisOptions.mode == "time") { + // pretty handling of time + + // map of app. size of time units in milliseconds + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + var spec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"], [3, "month"], [6, "month"], + [1, "year"] + ]; + + var minSize = 0; + if (axisOptions.minTickSize != null) { + if (typeof axisOptions.tickSize == "number") + minSize = axisOptions.tickSize; + else + minSize = axisOptions.minTickSize[0] * timeUnitSize[axisOptions.minTickSize[1]]; + } + + for (i = 0; i < spec.length - 1; ++i) + if (delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) + break; + size = spec[i][0]; + unit = spec[i][1]; + + // special-case the possibility of several years + if (unit == "year") { + magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10)); + norm = (delta / timeUnitSize.year) / magn; + if (norm < 1.5) + size = 1; + else if (norm < 3) + size = 2; + else if (norm < 7.5) + size = 5; + else + size = 10; + + size *= magn; + } + + if (axisOptions.tickSize) { + size = axisOptions.tickSize[0]; + unit = axisOptions.tickSize[1]; + } + + generator = function(axis) { + var ticks = [], + tickSize = axis.tickSize[0], unit = axis.tickSize[1], + d = new Date(axis.min); + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") + d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize)); + if (unit == "minute") + d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize)); + if (unit == "hour") + d.setUTCHours(floorInBase(d.getUTCHours(), tickSize)); + if (unit == "month") + d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize)); + if (unit == "year") + d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize)); + + // reset smaller components + d.setUTCMilliseconds(0); + if (step >= timeUnitSize.minute) + d.setUTCSeconds(0); + if (step >= timeUnitSize.hour) + d.setUTCMinutes(0); + if (step >= timeUnitSize.day) + d.setUTCHours(0); + if (step >= timeUnitSize.day * 4) + d.setUTCDate(1); + if (step >= timeUnitSize.year) + d.setUTCMonth(0); + + + var carry = 0, v = Number.NaN, prev; + do { + prev = v; + v = d.getTime(); + ticks.push({ v: v, label: axis.tickFormatter(v, axis) }); + if (unit == "month") { + if (tickSize < 1) { + // a bit complicated - we'll divide the month + // up but we need to take care of fractions + // so we don't end up in the middle of a day + d.setUTCDate(1); + var start = d.getTime(); + d.setUTCMonth(d.getUTCMonth() + 1); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getUTCHours(); + d.setUTCHours(0); + } + else + d.setUTCMonth(d.getUTCMonth() + tickSize); + } + else if (unit == "year") { + d.setUTCFullYear(d.getUTCFullYear() + tickSize); + } + else + d.setTime(v + step); + } while (v < axis.max && v != prev); + + return ticks; + }; + + formatter = function (v, axis) { + var d = new Date(v); + + // first check global format + if (axisOptions.timeformat != null) + return $.plot.formatDate(d, axisOptions.timeformat, axisOptions.monthNames); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (axisOptions.twelveHourClock) ? " %p" : ""; + + if (t < timeUnitSize.minute) + fmt = "%h:%M:%S" + suffix; + else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) + fmt = "%h:%M" + suffix; + else + fmt = "%b %d %h:%M" + suffix; + } + else if (t < timeUnitSize.month) + fmt = "%b %d"; + else if (t < timeUnitSize.year) { + if (span < timeUnitSize.year) + fmt = "%b"; + else + fmt = "%b %y"; + } + else + fmt = "%y"; + + return $.plot.formatDate(d, fmt, axisOptions.monthNames); + }; + } + else { + // pretty rounding of base-10 numbers + var maxDec = axisOptions.tickDecimals; + var dec = -Math.floor(Math.log(delta) / Math.LN10); + if (maxDec != null && dec > maxDec) + dec = maxDec; + + magn = Math.pow(10, -dec); + norm = delta / magn; // norm is between 1.0 and 10.0 + + if (norm < 1.5) + size = 1; + else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } + else if (norm < 7.5) + size = 5; + else + size = 10; + + size *= magn; + + if (axisOptions.minTickSize != null && size < axisOptions.minTickSize) + size = axisOptions.minTickSize; + + if (axisOptions.tickSize != null) + size = axisOptions.tickSize; + + axis.tickDecimals = Math.max(0, (maxDec != null) ? maxDec : dec); + + generator = function (axis) { + var ticks = []; + + // spew out all possible ticks + var start = floorInBase(axis.min, axis.tickSize), + i = 0, v = Number.NaN, prev; + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push({ v: v, label: axis.tickFormatter(v, axis) }); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + formatter = function (v, axis) { + return v.toFixed(axis.tickDecimals); + }; + } + + axis.tickSize = unit ? [size, unit] : size; + axis.tickGenerator = generator; + if ($.isFunction(axisOptions.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + axisOptions.tickFormatter(v, axis); }; + else + axis.tickFormatter = formatter; + } + + function setTicks(axis, axisOptions) { + axis.ticks = []; + + if (!axis.used) + return; + + if (axisOptions.ticks == null) + axis.ticks = axis.tickGenerator(axis); + else if (typeof axisOptions.ticks == "number") { + if (axisOptions.ticks > 0) + axis.ticks = axis.tickGenerator(axis); + } + else if (axisOptions.ticks) { + var ticks = axisOptions.ticks; + + if ($.isFunction(ticks)) + // generate the ticks + ticks = ticks({ min: axis.min, max: axis.max }); + + // clean up the user-supplied ticks, copy them over + var i, v; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = t; + if (label == null) + label = axis.tickFormatter(v, axis); + axis.ticks[i] = { v: v, label: label }; + } + } + + if (axisOptions.autoscaleMargin != null && axis.ticks.length > 0) { + // snap to ticks + if (axisOptions.min == null) + axis.min = Math.min(axis.min, axis.ticks[0].v); + if (axisOptions.max == null && axis.ticks.length > 1) + axis.max = Math.max(axis.max, axis.ticks[axis.ticks.length - 1].v); + } + } + + function draw() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + + var grid = options.grid; + + if (grid.show && !grid.aboveData) + drawGrid(); + + for (var i = 0; i < series.length; ++i) + drawSeries(series[i]); + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) + drawGrid(); + } + + function extractRange(ranges, coord) { + var firstAxis = coord + "axis", + secondaryAxis = coord + "2axis", + axis, from, to, reverse; + + if (ranges[firstAxis]) { + axis = axes[firstAxis]; + from = ranges[firstAxis].from; + to = ranges[firstAxis].to; + } + else if (ranges[secondaryAxis]) { + axis = axes[secondaryAxis]; + from = ranges[secondaryAxis].from; + to = ranges[secondaryAxis].to; + } + else { + // backwards-compat stuff - to be removed in future + axis = axes[firstAxis]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) + return { from: to, to: from, axis: axis }; + + return { from: from, to: to, axis: axis }; + } + + function drawGrid() { + var i; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw background, if any + if (options.grid.backgroundColor) { + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + } + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) + // xmin etc. are backwards-compatible, to be removed in future + markings = markings({ xmin: axes.xaxis.min, xmax: axes.xaxis.max, ymin: axes.yaxis.min, ymax: axes.yaxis.max, xaxis: axes.xaxis, yaxis: axes.yaxis, x2axis: axes.x2axis, y2axis: axes.y2axis }); + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + if (xrange.from == xrange.to && yrange.from == yrange.to) + continue; + + // then draw + xrange.from = xrange.axis.p2c(xrange.from); + xrange.to = xrange.axis.p2c(xrange.to); + yrange.from = yrange.axis.p2c(yrange.from); + yrange.to = yrange.axis.p2c(yrange.to); + + if (xrange.from == xrange.to || yrange.from == yrange.to) { + // draw line + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; + //ctx.moveTo(Math.floor(xrange.from), yrange.from); + //ctx.lineTo(Math.floor(xrange.to), yrange.to); + ctx.moveTo(xrange.from, yrange.from); + ctx.lineTo(xrange.to, yrange.to); + ctx.stroke(); + } + else { + // fill area + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the inner grid + ctx.lineWidth = 1; + ctx.strokeStyle = options.grid.tickColor; + ctx.beginPath(); + var v, axis = axes.xaxis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axes.xaxis.max) + continue; // skip those lying on the axes + + ctx.moveTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, 0); + ctx.lineTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, plotHeight); + } + + axis = axes.yaxis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(0, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + ctx.lineTo(plotWidth, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + } + + axis = axes.x2axis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, -5); + ctx.lineTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, 5); + } + + axis = axes.y2axis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(plotWidth-5, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + ctx.lineTo(plotWidth+5, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + } + + ctx.stroke(); + + if (options.grid.borderWidth) { + // draw border + var bw = options.grid.borderWidth; + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + + ctx.restore(); + } + + function insertLabels() { + placeholder.find(".tickLabels").remove(); + + var html = ['
    ']; + + function addLabels(axis, labelGenerator) { + for (var i = 0; i < axis.ticks.length; ++i) { + var tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + html.push(labelGenerator(tick, axis)); + } + } + + var margin = options.grid.labelMargin + options.grid.borderWidth; + + addLabels(axes.xaxis, function (tick, axis) { + return '
    ' + tick.label + "
    "; + }); + + + addLabels(axes.yaxis, function (tick, axis) { + return '
    ' + tick.label + "
    "; + }); + + addLabels(axes.x2axis, function (tick, axis) { + return '
    ' + tick.label + "
    "; + }); + + addLabels(axes.y2axis, function (tick, axis) { + return '
    ' + tick.label + "
    "; + }); + + html.push('
    '); + + placeholder.append(html.join("")); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + top, lastX = 0, areaOpen = false; + + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (areaOpen && x1 != null && x2 == null) { + // close area + ctx.lineTo(axisx.p2c(lastX), axisy.p2c(bottom)); + ctx.fill(); + areaOpen = false; + continue; + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + lastX = x2; + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + lastX = x2; + continue; + } + + // else it's a bit more complicated, there might + // be two rectangles and two triangles we need to fill + // in; to find these keep track of the current x values + var x1old = x1, x2old = x2; + + // and clip the y values, without shortcutting + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + if (y1 <= axisy.min) + top = axisy.min; + else + top = axisy.max; + + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(top)); + ctx.lineTo(axisx.p2c(x1), axisy.p2c(top)); + } + + // fill the triangles + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + if (y2 <= axisy.min) + top = axisy.min; + else + top = axisy.max; + + ctx.lineTo(axisx.p2c(x2), axisy.p2c(top)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(top)); + } + + lastX = Math.max(x2, x2old); + } + + if (areaOpen) { + ctx.lineTo(axisx.p2c(lastX), axisy.p2c(bottom)); + ctx.fill(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, circumference, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + ctx.arc(axisx.p2c(x), axisy.p2c(y) + offset, radius, 0, circumference, false); + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.lines.lineWidth, + sw = series.shadowSize, + radius = series.points.radius; + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, Math.PI, + series.xaxis, series.yaxis); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, Math.PI, + series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, 2 * Math.PI, + series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.beginPath(); + c.moveTo(left, bottom); + c.lineTo(left, top); + c.lineTo(right, top); + c.lineTo(right, bottom); + c.fillStyle = fillStyleCallback(bottom, top); + c.fill(); + } + + // draw outline + if (drawLeft || drawRight || drawTop || drawBottom) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom + offset); + if (drawLeft) + c.lineTo(left, top + offset); + else + c.moveTo(left, top + offset); + if (drawTop) + c.lineTo(right, top + offset); + else + c.moveTo(right, top + offset); + if (drawRight) + c.lineTo(right, bottom + offset); + else + c.moveTo(right, bottom + offset); + if (drawBottom) + c.lineTo(left, bottom + offset); + else + c.moveTo(left, bottom + offset); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + placeholder.find(".legend").remove(); + + if (!options.legend.show) + return; + + var fragments = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + for (i = 0; i < series.length; ++i) { + s = series[i]; + label = s.label; + if (!label) + continue; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push(''); + rowStarted = true; + } + + if (lf) + label = lf(label, s); + + fragments.push( + '
    ' + + '' + label + ''); + } + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '' + fragments.join("") + '
    '; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
    ' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
    ').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
    ').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j; + + for (i = 0; i < series.length; ++i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + ps = s.datapoints.pointsize, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist <= smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + var barLeft = s.bars.align == "left" ? 0 : -s.bars.barWidth/2, + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + pos = { pageX: event.pageX, pageY: event.pageY }, + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top; + + if (axes.xaxis.used) + pos.x = axes.xaxis.c2p(canvasX); + if (axes.yaxis.used) + pos.y = axes.yaxis.c2p(canvasY); + if (axes.x2axis.used) + pos.x2 = axes.x2axis.c2p(canvasX); + if (axes.y2axis.used) + pos.y2 = axes.y2axis.c2p(canvasY); + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && h.point == item.datapoint)) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, 30); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + octx.clearRect(0, 0, canvasWidth, canvasHeight); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") + point = s.data[point]; + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") + point = s.data[point]; + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis; + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var radius = 1.5 * pointRadius; + octx.beginPath(); + octx.arc(axisx.p2c(x), axisy.p2c(y), radius, 0, 2 * Math.PI, false); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + 0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + c = $.color.parse(defaultColor).scale('rgb', c.brightness); + c.a *= c.opacity; + c = c.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + $.plot = function(placeholder, data, options) { + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + /*var t0 = new Date(); + var t1 = new Date(); + var tstr = "time used (msecs): " + (t1.getTime() - t0.getTime()) + if (window.console) + console.log(tstr); + else + alert(tstr);*/ + return plot; + }; + + $.plot.plugins = []; + + // returns a string with the date d formatted according to fmt + $.plot.formatDate = function(d, fmt, monthNames) { + var leftPad = function(n) { + n = "" + n; + return n.length == 1 ? "0" + n : n; + }; + + var r = []; + var escape = false; + var hours = d.getUTCHours(); + var isAM = hours < 12; + if (monthNames == null) + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + + if (fmt.search(/%p|%P/) != -1) { + if (hours > 12) { + hours = hours - 12; + } else if (hours == 0) { + hours = 12; + } + } + for (var i = 0; i < fmt.length; ++i) { + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'h': c = "" + hours; break; + case 'H': c = leftPad(hours); break; + case 'M': c = leftPad(d.getUTCMinutes()); break; + case 'S': c = leftPad(d.getUTCSeconds()); break; + case 'd': c = "" + d.getUTCDate(); break; + case 'm': c = "" + (d.getUTCMonth() + 1); break; + case 'y': c = "" + d.getUTCFullYear(); break; + case 'b': c = "" + monthNames[d.getUTCMonth()]; break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + } + r.push(c); + escape = false; + } + else { + if (c == "%") + escape = true; + else + r.push(c); + } + } + return r.join(""); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); diff --git a/experiment/simulation/js/jquery.imgareaselect.js b/experiment/simulation/js/jquery.imgareaselect.js new file mode 100644 index 0000000..198dffb --- /dev/null +++ b/experiment/simulation/js/jquery.imgareaselect.js @@ -0,0 +1,717 @@ + +/* + * imgAreaSelect jQuery plugin + * version 0.9.2 + * + * Copyright (c) 2008-2010 Michal Wojciechowski (odyniec.net) + * + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://odyniec.net/projects/imgareaselect/ + * + */ + +(function($) { + +var abs = Math.abs, + max = Math.max, + min = Math.min, + round = Math.round; + +function div() { + return $('
    '); +} + +$.imgAreaSelect = function (img, options) { + var + + $img = $(img), + + imgLoaded, + + $box = div(), + $area = div(), + $border = div().add(div()).add(div()).add(div()), + $outer = div().add(div()).add(div()).add(div()), + $handles = $([]), + + $areaOpera, + + left, top, + + imgOfs, + + imgWidth, imgHeight, + + $parent, + + parOfs, + + zIndex = 0, + + position = 'absolute', + + startX, startY, + + scaleX, scaleY, + + resizeMargin = 10, + + resize, + + minWidth, minHeight, maxWidth, maxHeight, + + aspectRatio, + + shown, + + x1, y1, x2, y2, + + selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 }, + + docElem = document.documentElement, + + $p, d, i, o, w, h, adjusted; + + function viewX(x) { + return x + imgOfs.left - parOfs.left; + } + + function viewY(y) { + return y + imgOfs.top - parOfs.top; + } + + function selX(x) { + return x - imgOfs.left + parOfs.left; + } + + function selY(y) { + return y - imgOfs.top + parOfs.top; + } + + function evX(event) { + return event.pageX - parOfs.left; + } + + function evY(event) { + return event.pageY - parOfs.top; + } + + function getSelection(noScale) { + var sx = noScale || scaleX, sy = noScale || scaleY; + + return { x1: round(selection.x1 * sx), + y1: round(selection.y1 * sy), + x2: round(selection.x2 * sx), + y2: round(selection.y2 * sy), + width: round(selection.x2 * sx) - round(selection.x1 * sx), + height: round(selection.y2 * sy) - round(selection.y1 * sy) }; + } + + function setSelection(x1, y1, x2, y2, noScale) { + var sx = noScale || scaleX, sy = noScale || scaleY; + + selection = { + x1: round(x1 / sx), + y1: round(y1 / sy), + x2: round(x2 / sx), + y2: round(y2 / sy) + }; + + selection.width = selection.x2 - selection.x1; + selection.height = selection.y2 - selection.y1; + } + + function adjust() { + if (!$img.width()) + return; + + imgOfs = { left: round($img.offset().left), top: round($img.offset().top) }; + + imgWidth = $img.width(); + imgHeight = $img.height(); + + minWidth = options.minWidth || 0; + minHeight = options.minHeight || 0; + maxWidth = min(options.maxWidth || 1<<24, imgWidth); + maxHeight = min(options.maxHeight || 1<<24, imgHeight); + + if ($().jquery == '1.3.2' && position == 'fixed' && + !docElem['getBoundingClientRect']) + { + imgOfs.top += max(document.body.scrollTop, docElem.scrollTop); + imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft); + } + + parOfs = $.inArray($parent.css('position'), ['absolute', 'relative']) + 1 ? + { left: round($parent.offset().left) - $parent.scrollLeft(), + top: round($parent.offset().top) - $parent.scrollTop() } : + position == 'fixed' ? + { left: $(document).scrollLeft(), top: $(document).scrollTop() } : + { left: 0, top: 0 }; + + left = viewX(0); + top = viewY(0); + + if (selection.x2 > imgWidth || selection.y2 > imgHeight) + doResize(); + } + + function update(resetKeyPress) { + if (!shown) return; + + $box.css({ left: viewX(selection.x1), top: viewY(selection.y1) }) + .add($area).width(w = selection.width).height(h = selection.height); + + $area.add($border).add($handles).css({ left: 0, top: 0 }); + + $border + .width(max(w - $border.outerWidth() + $border.innerWidth(), 0)) + .height(max(h - $border.outerHeight() + $border.innerHeight(), 0)); + + $($outer[0]).css({ left: left, top: top, + width: selection.x1, height: imgHeight }); + $($outer[1]).css({ left: left + selection.x1, top: top, + width: w, height: selection.y1 }); + $($outer[2]).css({ left: left + selection.x2, top: top, + width: imgWidth - selection.x2, height: imgHeight }); + $($outer[3]).css({ left: left + selection.x1, top: top + selection.y2, + width: w, height: imgHeight - selection.y2 }); + + w -= $handles.outerWidth(); + h -= $handles.outerHeight(); + + switch ($handles.length) { + case 8: + $($handles[4]).css({ left: w / 2 }); + $($handles[5]).css({ left: w, top: h / 2 }); + $($handles[6]).css({ left: w / 2, top: h }); + $($handles[7]).css({ top: h / 2 }); + case 4: + $handles.slice(1,3).css({ left: w }); + $handles.slice(2,4).css({ top: h }); + } + + if (resetKeyPress !== false) { + if ($.imgAreaSelect.keyPress != docKeyPress) + $(document).unbind($.imgAreaSelect.keyPress, + $.imgAreaSelect.onKeyPress); + + if (options.keys) + $(document)[$.imgAreaSelect.keyPress]( + $.imgAreaSelect.onKeyPress = docKeyPress); + } + + if ($.browser.msie && $border.outerWidth() - $border.innerWidth() == 2) { + $border.css('margin', 0); + setTimeout(function () { $border.css('margin', 'auto'); }, 0); + } + } + + function doUpdate(resetKeyPress) { + adjust(); + update(resetKeyPress); + x1 = viewX(selection.x1); y1 = viewY(selection.y1); + x2 = viewX(selection.x2); y2 = viewY(selection.y2); + } + + function hide($elem, fn) { + options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide(); + + } + + function areaMouseMove(event) { + var x = selX(evX(event)) - selection.x1, + y = selY(evY(event)) - selection.y1; + + if (!adjusted) { + adjust(); + adjusted = true; + + $box.one('mouseout', function () { adjusted = false; }); + } + + resize = ''; + + if (options.resizable) { + if (y <= resizeMargin) + resize = 'n'; + else if (y >= selection.height - resizeMargin) + resize = 's'; + if (x <= resizeMargin) + resize += 'w'; + else if (x >= selection.width - resizeMargin) + resize += 'e'; + } + + $box.css('cursor', resize ? resize + '-resize' : + options.movable ? 'move' : ''); + if ($areaOpera) + $areaOpera.toggle(); + } + + function docMouseUp(event) { + $('body').css('cursor', ''); + + if (options.autoHide || selection.width * selection.height == 0) + hide($box.add($outer), function () { $(this).hide(); }); + + options.onSelectEnd(img, getSelection()); + + + $(document).unbind('mousemove', selectingMouseMove); + $box.mousemove(areaMouseMove); + } + + function areaMouseDown(event) { + if (event.which != 1) return false; + + adjust(); + + if (resize) { + $('body').css('cursor', resize + '-resize'); + + x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']); + y1 = viewY(selection[/n/.test(resize) ? 'y2' : 'y1']); + + $(document).mousemove(selectingMouseMove) + .one('mouseup', docMouseUp); + $box.unbind('mousemove', areaMouseMove); + } + else if (options.movable) { + startX = left + selection.x1 - evX(event); + startY = top + selection.y1 - evY(event); + + $box.unbind('mousemove', areaMouseMove); + + $(document).mousemove(movingMouseMove) + .one('mouseup', function () { + + set_crop(); + toggleMosaic(); + options.onSelectEnd(img, getSelection()); + + $(document).unbind('mousemove', movingMouseMove); + $box.mousemove(areaMouseMove); + }); + } + else + $img.mousedown(event); + + return false; + } + + function fixAspectRatio(xFirst) { + if (aspectRatio) + if (xFirst) { + x2 = max(left, min(left + imgWidth, + x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1))); + + y2 = round(max(top, min(top + imgHeight, + y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1)))); + x2 = round(x2); + } + else { + y2 = max(top, min(top + imgHeight, + y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))); + x2 = round(max(left, min(left + imgWidth, + x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)))); + y2 = round(y2); + } + } + + function doResize() { + x1 = min(x1, left + imgWidth); + y1 = min(y1, top + imgHeight); + + if (abs(x2 - x1) < minWidth) { + x2 = x1 - minWidth * (x2 < x1 || -1); + + if (x2 < left) + x1 = left + minWidth; + else if (x2 > left + imgWidth) + x1 = left + imgWidth - minWidth; + } + + if (abs(y2 - y1) < minHeight) { + y2 = y1 - minHeight * (y2 < y1 || -1); + + if (y2 < top) + y1 = top + minHeight; + else if (y2 > top + imgHeight) + y1 = top + imgHeight - minHeight; + } + + x2 = max(left, min(x2, left + imgWidth)); + y2 = max(top, min(y2, top + imgHeight)); + + fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio); + + if (abs(x2 - x1) > maxWidth) { + x2 = x1 - maxWidth * (x2 < x1 || -1); + fixAspectRatio(); + } + + if (abs(y2 - y1) > maxHeight) { + y2 = y1 - maxHeight * (y2 < y1 || -1); + fixAspectRatio(true); + } + + selection = { x1: selX(min(x1, x2)), x2: selX(max(x1, x2)), + y1: selY(min(y1, y2)), y2: selY(max(y1, y2)), + width: abs(x2 - x1), height: abs(y2 - y1) }; + + update(); + + options.onSelectChange(img, getSelection()); + } + + function selectingMouseMove(event) { + x2 = resize == '' || /w|e/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2); + y2 = resize == '' || /n|s/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2); + + doResize(); + + return false; + + } + + function doMove(newX1, newY1) { + x2 = (x1 = newX1) + selection.width; + y2 = (y1 = newY1) + selection.height; + + $.extend(selection, { x1: selX(x1), y1: selY(y1), x2: selX(x2), + y2: selY(y2) }); + + update(); + + options.onSelectChange(img, getSelection()); + } + + function movingMouseMove(event) { + x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width)); + y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height)); + + doMove(x1, y1); + + event.preventDefault(); + + return false; + } + + function startSelection() { + adjust(); + + x2 = x1; + y2 = y1; + + doResize(); + + resize = ''; + + if ($outer.is(':not(:visible)')) + $box.add($outer).hide().fadeIn(options.fadeSpeed||0); + + shown = true; + + $(document).unbind('mouseup', cancelSelection) + .mousemove(selectingMouseMove).one('mouseup', docMouseUp); + $box.unbind('mousemove', areaMouseMove); + + options.onSelectStart(img, getSelection()); + } + + function cancelSelection() { + $(document).unbind('mousemove', startSelection); + hide($box.add($outer)); + + selection = { x1: selX(x1), y1: selY(y1), x2: selX(x1), y2: selY(y1), + width: 0, height: 0 }; + + options.onSelectChange(img, getSelection()); + options.onSelectEnd(img, getSelection()); + } + + function imgMouseDown(event) { + if (event.which != 1 || $outer.is(':animated')) return false; + + adjust(); + startX = x1 = evX(event); + startY = y1 = evY(event); + $(document).one('mousemove', startSelection) + .one('mouseup', cancelSelection); + + return false; + } + + function windowResize() { + doUpdate(false); + } + + function imgLoad() { + imgLoaded = true; + + setOptions(options = $.extend({ + classPrefix: 'imgareaselect', + movable: true, + resizable: true, + parent: 'body', + onInit: function () {}, + onSelectStart: function () {}, + onSelectChange: function () {}, + onSelectEnd: function () {} + }, options)); + + $box.add($outer).css({ visibility: '' }); + + if (options.show) { + shown = true; + adjust(); + update(); + $box.add($outer).hide().fadeIn(options.fadeSpeed||0); + } + + setTimeout(function () { options.onInit(img, getSelection()); }, 0); + } + + var docKeyPress = function(event) { + var k = options.keys, d, t, key = event.keyCode; + + d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt : + !isNaN(k.ctrl) && event.ctrlKey ? k.ctrl : + !isNaN(k.shift) && event.shiftKey ? k.shift : + !isNaN(k.arrows) ? k.arrows : 10; + + if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) || + (k.ctrl == 'resize' && event.ctrlKey) || + (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey))) + { + switch (key) { + case 37: + d = -d; + case 39: + t = max(x1, x2); + x1 = min(x1, x2); + x2 = max(t + d, x1); + fixAspectRatio(); + break; + case 38: + d = -d; + case 40: + t = max(y1, y2); + y1 = min(y1, y2); + y2 = max(t + d, y1); + fixAspectRatio(true); + break; + default: + return; + } + + doResize(); + } + else { + x1 = min(x1, x2); + y1 = min(y1, y2); + + switch (key) { + case 37: + doMove(max(x1 - d, left), y1); + break; + case 38: + doMove(x1, max(y1 - d, top)); + break; + case 39: + doMove(x1 + min(d, imgWidth - selX(x2)), y1); + break; + case 40: + doMove(x1, y1 + min(d, imgHeight - selY(y2))); + break; + default: + return; + } + } + + return false; + }; + + function styleOptions($elem, props) { + for (option in props) + if (options[option] !== undefined) + $elem.css(props[option], options[option]); + } + + function setOptions(newOptions) { + if (newOptions.parent) + ($parent = $(newOptions.parent)).append($box.add($outer)); + + $.extend(options, newOptions); + + adjust(); + + if (newOptions.handles != null) { + $handles.remove(); + $handles = $([]); + + i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0; + + while (i--) + $handles = $handles.add(div()); + + $handles.addClass(options.classPrefix + '-handle').css({ + position: 'absolute', + fontSize: 0, + zIndex: zIndex + 1 || 1 + }); + + if (!parseInt($handles.css('width'))) + $handles.width(5).height(5); + + if (o = options.borderWidth) + $handles.css({ borderWidth: o, borderStyle: 'solid' }); + + styleOptions($handles, { borderColor1: 'border-color', + borderColor2: 'background-color', + borderOpacity: 'opacity' }); + } + + scaleX = options.imageWidth / imgWidth || 1; + scaleY = options.imageHeight / imgHeight || 1; + + if (newOptions.x1 != null) { + setSelection(newOptions.x1, newOptions.y1, newOptions.x2, + newOptions.y2); + newOptions.show = !newOptions.hide; + } + + if (newOptions.keys) + options.keys = $.extend({ shift: 1, ctrl: 'resize' }, + newOptions.keys); + + $outer.addClass(options.classPrefix + '-outer'); + $area.addClass(options.classPrefix + '-selection'); + for (i = 0; i++ < 4;) + $($border[i-1]).addClass(options.classPrefix + '-border' + i); + + styleOptions($area, { selectionColor: 'background-color', + selectionOpacity: 'opacity' }); + styleOptions($border, { borderOpacity: 'opacity', + borderWidth: 'border-width' }); + styleOptions($outer, { outerColor: 'background-color', + outerOpacity: 'opacity' }); + if (o = options.borderColor1) + $($border[0]).css({ borderStyle: 'solid', borderColor: o }); + if (o = options.borderColor2) + $($border[1]).css({ borderStyle: 'dashed', borderColor: o }); + + $box.append($area.add($border).add($handles).add($areaOpera)); + + if ($.browser.msie) { + if (o = $outer.css('filter').match(/opacity=([0-9]+)/)) + $outer.css('opacity', o[1]/100); + if (o = $border.css('filter').match(/opacity=([0-9]+)/)) + $border.css('opacity', o[1]/100); + } + + if (newOptions.hide) + hide($box.add($outer)); + else if (newOptions.show && imgLoaded) { + shown = true; + $box.add($outer).fadeIn(options.fadeSpeed||0); + doUpdate(); + } + + aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1]; + + if (options.disable || options.enable === false) { + $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown); + $img.add($outer).unbind('mousedown', imgMouseDown); + $(window).unbind('resize', windowResize); + } + else if (options.enable || options.disable === false) { + if (options.resizable || options.movable) + $box.mousemove(areaMouseMove).mousedown(areaMouseDown); + + if (!options.persistent) + $img.add($outer).mousedown(imgMouseDown); + + $(window).resize(windowResize); + } + + options.enable = options.disable = undefined; + } + + this.remove = function () { + $img.unbind('mousedown', imgMouseDown); + $box.add($outer).remove(); + }; + + this.getOptions = function () { return options; }; + + this.setOptions = setOptions; + + this.getSelection = getSelection; + + this.setSelection = setSelection; + + this.update = doUpdate; + + $p = $img; + + while ($p.length) { + zIndex = max(zIndex, + !isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex); + if ($p.css('position') == 'fixed') + position = 'fixed'; + + $p = $p.parent(':not(body)'); + } + + zIndex = options.zIndex || zIndex; + + if ($.browser.msie) + $img.attr('unselectable', 'on'); + + $.imgAreaSelect.keyPress = $.browser.msie || + $.browser.safari ? 'keydown' : 'keypress'; + + if ($.browser.opera) + $areaOpera = div().css({ width: '100%', height: '100%', + position: 'absolute', zIndex: zIndex + 2 || 2 }); + + $box.add($outer).css({ visibility: 'hidden', position: position, + overflow: 'hidden', zIndex: zIndex || '0' }); + $box.css({ zIndex: zIndex + 2 || 2 }); + $area.add($border).css({ position: 'absolute', fontSize: 0 }); + + img.complete || img.readyState == 'complete' || !$img.is('img') ? + imgLoad() : $img.one('load', imgLoad); +}; + +$.fn.imgAreaSelect = function (options) { + options = options || {}; + + this.each(function () { + if ($(this).data('imgAreaSelect')) { + if (options.remove) { + $(this).data('imgAreaSelect').remove(); + $(this).removeData('imgAreaSelect'); + } + else + $(this).data('imgAreaSelect').setOptions(options); + } + else if (!options.remove) { + if (options.enable === undefined && options.disable === undefined) + options.enable = true; + + $(this).data('imgAreaSelect', new $.imgAreaSelect(this, options)); + } + }); + + if (options.instance) + return $(this).data('imgAreaSelect'); + + return this; +}; + +})(jQuery); diff --git a/experiment/simulation/js/modernizr-1.5.min.js b/experiment/simulation/js/modernizr-1.5.min.js new file mode 100755 index 0000000..a1de3f7 --- /dev/null +++ b/experiment/simulation/js/modernizr-1.5.min.js @@ -0,0 +1,28 @@ +/*! + * Modernizr JavaScript library 1.5 + * http://www.modernizr.com/ + * + * Copyright (c) 2009-2010 Faruk Ates - http://farukat.es/ + * Dual-licensed under the BSD and MIT licenses. + * http://www.modernizr.com/license/ + * + * Featuring major contributions by + * Paul Irish - http://paulirish.com + */ + window.Modernizr=function(i,e,I){function C(a,b){for(var c in a)if(m[a[c]]!==I&&(!b||b(a[c],D)))return true}function r(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1);return!!C([a,"Webkit"+c,"Moz"+c,"O"+c,"ms"+c,"Khtml"+c],b)}function P(){j[E]=function(a){for(var b=0,c=a.length;b7)};d.historymanagement=function(){return!!(i.history&&history.pushState)};d.draganddrop=function(){return u("drag")&&u("dragstart")&&u("dragenter")&&u("dragover")&&u("dragleave")&&u("dragend")&&u("drop")};d.websockets=function(){return"WebSocket"in i};d.rgba=function(){m.cssText="background-color:rgba(150,255,150,.5)";return(""+m.backgroundColor).indexOf("rgba")!==-1};d.hsla=function(){m.cssText="background-color:hsla(120,40%,100%,.5)";return(""+ + m.backgroundColor).indexOf("rgba")!==-1};d.multiplebgs=function(){m.cssText="background:url(//:),url(//:),red url(//:)";return/(url\s*\(.*?){3}/.test(m.background)};d.backgroundsize=function(){return r("backgroundSize")};d.borderimage=function(){return r("borderImage")};d.borderradius=function(){return r("borderRadius","",function(a){return(""+a).indexOf("orderRadius")!==-1})};d.boxshadow=function(){return r("boxShadow")};d.opacity=function(){var a=y.join("opacity:.5;")+"";m.cssText=a;return(""+m.opacity).indexOf("0.5")!== + -1};d.cssanimations=function(){return r("animationName")};d.csscolumns=function(){return r("columnCount")};d.cssgradients=function(){var a=("background-image:"+y.join("gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:")+y.join("linear-gradient(left top,#9f9, white);background-image:")).slice(0,-17);m.cssText=a;return(""+m.backgroundImage).indexOf("gradient")!==-1};d.cssreflections=function(){return r("boxReflect")};d.csstransforms=function(){return!!C(["transformProperty", + "WebkitTransform","MozTransform","OTransform","msTransform"])};d.csstransforms3d=function(){var a=!!C(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);if(a){var b=document.createElement("style"),c=e.createElement("div");b.textContent="@media ("+y.join("transform-3d),(")+"modernizr){#modernizr{height:3px}}";e.getElementsByTagName("head")[0].appendChild(b);c.id="modernizr";s.appendChild(c);a=c.offsetHeight===3;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}return a}; + d.csstransitions=function(){return r("transitionProperty")};d.fontface=function(){var a;if(/*@cc_on@if(@_jscript_version>=5)!@end@*/0)a=true;else{var b=e.createElement("style"),c=e.createElement("span"),h,t=false,g=e.body,o,w;b.textContent="@font-face{font-family:testfont;src:url('data:font/ttf;base64,AAEAAAAMAIAAAwBAT1MvMliohmwAAADMAAAAVmNtYXCp5qrBAAABJAAAANhjdnQgACICiAAAAfwAAAAEZ2FzcP//AAMAAAIAAAAACGdseWYv5OZoAAACCAAAANxoZWFk69bnvwAAAuQAAAA2aGhlYQUJAt8AAAMcAAAAJGhtdHgGDgC4AAADQAAAABRsb2NhAIQAwgAAA1QAAAAMbWF4cABVANgAAANgAAAAIG5hbWUgXduAAAADgAAABPVwb3N03NkzmgAACHgAAAA4AAECBAEsAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAACAAMDAAAAAAAAgAACbwAAAAoAAAAAAAAAAFBmRWQAAAAgqS8DM/8zAFwDMwDNAAAABQAAAAAAAAAAAAMAAAADAAAAHAABAAAAAABGAAMAAQAAAK4ABAAqAAAABgAEAAEAAgAuqQD//wAAAC6pAP///9ZXAwAAAAAAAAACAAAABgBoAAAAAAAvAAEAAAAAAAAAAAAAAAAAAAABAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEACoAAAAGAAQAAQACAC6pAP//AAAALqkA////1lcDAAAAAAAAAAIAAAAiAogAAAAB//8AAgACACIAAAEyAqoAAwAHAC6xAQAvPLIHBADtMrEGBdw8sgMCAO0yALEDAC88sgUEAO0ysgcGAfw8sgECAO0yMxEhESczESMiARDuzMwCqv1WIgJmAAACAFUAAAIRAc0ADwAfAAATFRQWOwEyNj0BNCYrASIGARQGKwEiJj0BNDY7ATIWFX8aIvAiGhoi8CIaAZIoN/43KCg3/jcoAWD0JB4eJPQkHh7++EY2NkbVRjY2RgAAAAABAEH/+QCdAEEACQAANjQ2MzIWFAYjIkEeEA8fHw8QDxwWFhwWAAAAAQAAAAIAAIuYbWpfDzz1AAsEAAAAAADFn9IuAAAAAMWf0i797/8zA4gDMwAAAAgAAgAAAAAAAAABAAADM/8zAFwDx/3v/98DiAABAAAAAAAAAAAAAAAAAAAABQF2ACIAAAAAAVUAAAJmAFUA3QBBAAAAKgAqACoAWgBuAAEAAAAFAFAABwBUAAQAAgAAAAEAAQAAAEAALgADAAMAAAAQAMYAAQAAAAAAAACLAAAAAQAAAAAAAQAhAIsAAQAAAAAAAgAFAKwAAQAAAAAAAwBDALEAAQAAAAAABAAnAPQAAQAAAAAABQAKARsAAQAAAAAABgAmASUAAQAAAAAADgAaAUsAAwABBAkAAAEWAWUAAwABBAkAAQBCAnsAAwABBAkAAgAKAr0AAwABBAkAAwCGAscAAwABBAkABABOA00AAwABBAkABQAUA5sAAwABBAkABgBMA68AAwABBAkADgA0A/tDb3B5cmlnaHQgMjAwOSBieSBEYW5pZWwgSm9obnNvbi4gIFJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgT3BlbiBGb250IExpY2Vuc2UuIEtheWFoIExpIGdseXBocyBhcmUgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTCB2ZXJzaW9uIDMuYmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhTGlnaHRiYWVjMmE5MmJmZmU1MDMyIC0gc3Vic2V0IG9mIEZvbnRGb3JnZSAyLjAgOiBKdXJhIExpZ2h0IDogMjMtMS0yMDA5YmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhIExpZ2h0VmVyc2lvbiAyIGJhZWMyYTkyYmZmZTUwMzIgLSBzdWJzZXQgb2YgSnVyYUxpZ2h0aHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMAA5ACAAYgB5ACAARABhAG4AaQBlAGwAIABKAG8AaABuAHMAbwBuAC4AIAAgAFIAZQBsAGUAYQBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAdABlAHIAbQBzACAAbwBmACAAdABoAGUAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALgAgAEsAYQB5AGEAaAAgAEwAaQAgAGcAbAB5AHAAaABzACAAYQByAGUAIAByAGUAbABlAGEAcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEcAUABMACAAdgBlAHIAcwBpAG8AbgAgADMALgBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQBMAGkAZwBoAHQAYgBhAGUAYwAyAGEAOQAyAGIAZgBmAGUANQAwADMAMgAgAC0AIABzAHUAYgBzAGUAdAAgAG8AZgAgAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASgB1AHIAYQAgAEwAaQBnAGgAdAAgADoAIAAyADMALQAxAC0AMgAwADAAOQBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQAgAEwAaQBnAGgAdABWAGUAcgBzAGkAbwBuACAAMgAgAGIAYQBlAGMAMgBhADkAMgBiAGYAZgBlADUAMAAzADIAIAAtACAAcwB1AGIAcwBlAHQAIABvAGYAIABKAHUAcgBhAEwAaQBnAGgAdABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAAAAgAAAAAAAP+BADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQACAQIAEQt6ZXJva2F5YWhsaQ==')}"; + e.getElementsByTagName("head")[0].appendChild(b);c.setAttribute("style","font:99px _,arial,helvetica;position:absolute;visibility:hidden");if(!g){g=s.appendChild(e.createElement("fontface"));t=true}c.innerHTML="........";c.id="fonttest";g.appendChild(c);h=c.offsetWidth*c.offsetHeight;c.style.font="99px testfont,_,arial,helvetica";a=h!==c.offsetWidth*c.offsetHeight;var v=function(){if(g.parentNode){a=j.fontface=h!==c.offsetWidth*c.offsetHeight;s.className=s.className.replace(/(no-)?fontface\b/,"")+ + (a?" ":" no-")+"fontface"}};setTimeout(v,75);setTimeout(v,150);addEventListener("load",function(){v();(w=true)&&o&&o(a);setTimeout(function(){t||(g=c);g.parentNode.removeChild(g);b.parentNode.removeChild(b)},50)},false)}j._fontfaceready=function(p){w||a?p(a):(o=p)};return a||h!==c.offsetWidth};d.video=function(){var a=e.createElement("video"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('video/ogg; codecs="theora"');b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"');b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return b}; + d.audio=function(){var a=e.createElement("audio"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"');b.mp3=a.canPlayType("audio/mpeg;");b.wav=a.canPlayType('audio/wav; codecs="1"');b.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")}return b};d.localStorage=function(){return"localStorage"in i&&i.localStorage!==null};d.sessionStorage=function(){try{return"sessionStorage"in i&&i.sessionStorage!==null}catch(a){return false}};d.webworkers=function(){return!!i.Worker}; + d.applicationCache=function(){var a=i.applicationCache;return!!(a&&typeof a.status!="undefined"&&typeof a.update=="function"&&typeof a.swapCache=="function")};d.svg=function(){return!!e.createElementNS&&!!e.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect};d.smil=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg","animate")))};d.svgclippaths=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg", + "clipPath")))};for(var z in d)if(O(d,z))N.push(((j[z.toLowerCase()]=d[z]())?"":"no-")+z.toLowerCase());j[E]||P();j.addTest=function(a,b){a=a.toLowerCase();if(!j[a]){b=!!b();s.className+=" "+(b?"":"no-")+a;j[a]=b;return j}};m.cssText="";D=n=null;(function(){var a=e.createElement("div");a.innerHTML="";return a.childNodes.length!==1})()&&function(a,b){function c(f,k){if(o[f])o[f].styleSheet.cssText+=k;else{var l=t[G],q=b[A]("style");q.media=f;l.insertBefore(q,l[G]);o[f]=q;c(f,k)}}function h(f, + k){for(var l=new RegExp("\\b("+w+")\\b(?!.*[;}])","gi"),q=function(B){return".iepp_"+B},x=-1;++x\\s*$","i");g.innerHTML=f.outerHTML.replace(/\r|\n/g," ").replace(l,f.currentStyle.display=="block"?"":"");l=g.childNodes[0];l.className+=" iepp_"+q;l=p[p.length]=[f,l];f.parentNode.replaceChild(l[1],l[0])}h(b.styleSheets,"all")});a.attachEvent("onafterprint", + function(){for(var f=-1,k;++f1F@;RXN5c1BbQ%MYgAclM(EMZV!aAn8?(nSoFz*r|9hyha! z%t~eg+8VwT^UFq^W(28g;DjhPB%p_oGz$Y0Bg}pfO-MaVek!Q&0s?1-M4+z|8FGN3 zkPZY{OIx@;|5y2IXC1{m%nbdmie4kX{fI6eqC!4=N8p zWdJDugQAHGh(YCp3XtXnVm=_|2V!6qz#s_3LO?7G#3Dc}3dCYSEDppVJ(56L3W%kF zSO$n?fmjZR<$+iMh!ufY35b<}7^GemN`w3|3TPh!ptJx=1D(J`@c+jD2MhvUZk}!o zjKD;d0E7(xZv(RkGZPaC0RamTv2w7ovaqmnv9q&r@Nn_)aC32U^YRG^@bU@radQiZ z2?z>{h>D8x@QX``iAV^Eh>Cy=VPppCVPWNDW#ts%<>nP38T>!MAjknsCydODN(@Yb zjLd?J|Bryu5hE+mwIByW0V5O8jcn{3oLt;M1zUkRl#!X4iG>;DYM|;`pgaSMAghp~ zp(C4cU?RIxp@>oA#DyHnP8$!323`E1Vw_ae#K|QlE+HwUs-~`?sbyknW^Q3= z=I-I?6&w;879J59m7J2AmY$KBRa{b9R$ftA)!fqB*51+CHEHscsne#9glAUcUPH>GPMb z-@gC&`3vMPMh0exx8OcQ^OqpdUra14%q;96e=#zZ12MB83#+0bn~-B5dt#xml2Idv zh||P{8xL|S8wY(5O)9#`C8lEXQ1v6oYha%d=dmWTdvdW&tymgs$*bKV}Paq!$Tzfvodgvrhjn09{TBj@=TxO#y0SFkq;PXDDVU PWk^D4Q;<}247g$dYC1t2 literal 0 HcmV?d00001 diff --git a/experiment/simulation/menu/images/hover.gif b/experiment/simulation/menu/images/hover.gif new file mode 100644 index 0000000000000000000000000000000000000000..98fc8e993cc97670ed88088e297500d285eab1fd GIT binary patch literal 60 zcmZ?wbhEHbU6Cf+Hm1>AzC<}`bF KU45g=U=08>mR|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dc{<>}%WQgJKki-&enL*s7sZ_J*l z-0nL#92g80PuJFcmFZCEQeaSMm@(n0LQaY(1LKhvwf1F9Kmp16{|=Lz8{*^l*VO)J bQ#iojrl#BWqO`voXexuJtDnm{r-UW|LM1vV literal 0 HcmV?d00001 diff --git a/experiment/simulation/menu/images/hover_sub.gif b/experiment/simulation/menu/images/hover_sub.gif new file mode 100644 index 0000000000000000000000000000000000000000..7446d4b50097fc2b75bf7e32fafb8905285eca86 GIT binary patch literal 833 zcmZ?wbhEHbWM$xD_|Cu}YwjQ=C8gT1h+!0rhQP=R0mYvzU{C9SNKl?&;E-cr6N5DXNCpj{ literal 0 HcmV?d00001 diff --git a/experiment/simulation/menu/images/seperator.gif b/experiment/simulation/menu/images/seperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f7aedf7e4d37c172e6bf26d80d649975f5eb904 GIT binary patch literal 155 zcmZ?wbhEHbWMoigIKseSZ*Om7W8>!L=H%pLW@hH#;9zTOYh`6+Zf@@4;$mWAVrOS( zZEfxB?Cj|1XklUD>gsA~X=!R|YHV!GKm<_y$pTiT10q3oGO$WKQ0ZH&G?(R*O<;*Z T<3@(o$2`819VQ4cF<1itnrs{h literal 0 HcmV?d00001 diff --git a/experiment/simulation/menu/menu_style.css b/experiment/simulation/menu/menu_style.css new file mode 100644 index 0000000..b2f5002 --- /dev/null +++ b/experiment/simulation/menu/menu_style.css @@ -0,0 +1,92 @@ +.menu{ + border:none; + border:0px; + margin:0px; + padding:0px; + font: 67.5% "Lucida Sans Unicode", "Bitstream Vera Sans", "Trebuchet Unicode MS", "Lucida Grande", Verdana, Helvetica, sans-serif; + font-size:14px; + font-weight:bold; + z-index: 98; + } +.menu ul{ + background:#333333; + height:35px; + list-style:none; + margin:0; + padding:0; + } + .menu li{ + float:left; + padding:0px; + } + .menu li a{ + background:#333333 url("images/seperator.gif") bottom right no-repeat; + color:#cccccc; + display:block; + font-weight:normal; + line-height:35px; + margin:0px; + padding:0px 15px; + text-align:center; + text-decoration:none; + } + .menu li a:hover, .menu ul li:hover a{ + background: #2580a2 url("images/hover.gif") bottom center no-repeat; + color:#FFFFFF; + text-decoration:none; + } + .menu li sel a{ background: #486672 url("images/hover2.png") bottom center no-repeat; + color:#FFFFFF; + text-decoration:none; + } + + + .menu li ul{ + background:#333333; + display:none; + height:auto; + padding:0px; + margin:0px; + border:0px; + position:absolute; + width:225px; + z-index:200; + /*top:1em; + /*left:0;*/ + } + .menu li:hover ul{ + display:block; + + } + .menu li li { + background:url('images/sub_sep.gif') bottom left no-repeat; + display:block; + float:none; + margin:0px; + padding:0px; + width:225px; + } + .menu li:hover li a{ + background:none; + + } + .menu li ul a{ + display:block; + height:35px; + font-size:12px; + font-style:normal; + margin:0px; + padding:0px 10px 0px 15px; + text-align:left; + } + .menu li ul a:hover, .menu li ul li:hover a{ + background:#2580a2 url('images/hover_sub.gif') center left no-repeat; + border:0px; + color:#ffffff; + text-decoration:none; + } + .menu p{ + clear:left; + } + + From 662709d4a57f75d35a009657872d8288b6c1888d Mon Sep 17 00:00:00 2001 From: sravanthimodepu Date: Wed, 15 Sep 2021 00:06:35 +0530 Subject: [PATCH 5/7] added assignment --- experiment/assignment/index.html | 15 +++++++++++++++ experiment/assignment/index.html~ | 15 +++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 experiment/assignment/index.html create mode 100644 experiment/assignment/index.html~ diff --git a/experiment/assignment/index.html b/experiment/assignment/index.html new file mode 100644 index 0000000..577f227 --- /dev/null +++ b/experiment/assignment/index.html @@ -0,0 +1,15 @@ + + + + + + + + + +

    Click here to perform the assignment

    + + + + + diff --git a/experiment/assignment/index.html~ b/experiment/assignment/index.html~ new file mode 100644 index 0000000..47434ff --- /dev/null +++ b/experiment/assignment/index.html~ @@ -0,0 +1,15 @@ + + + + + + + + + +

    Click here to perform the experiment

    + + + + + From 080e51d99350e52cf9abff1340ce081fa228d314 Mon Sep 17 00:00:00 2001 From: sravanthimodepu Date: Wed, 15 Sep 2021 16:54:12 +0530 Subject: [PATCH 6/7] fixed special characters in theory --- experiment/theory.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/experiment/theory.md b/experiment/theory.md index c0b5cc1..b1d33fc 100644 --- a/experiment/theory.md +++ b/experiment/theory.md @@ -6,23 +6,23 @@ Arithmetic operations are done pixelwise. Let p = A(x,y) and q = B(x,y) be the p **Addition :** -I(x,y) = A(x,y) + B(x,y) ¡ú r = p + q +I(x,y) = A(x,y) + B(x,y) → r = p + q **Subtraction :** -I(x,y) = A(x,y) - B(x,y) ¡ú r = p - q +I(x,y) = A(x,y) - B(x,y) → r = p - q **Difference :** -I(x,y) = |A(x,y) - B(x,y)| ¡ú r = |p - q| +I(x,y) = |A(x,y) - B(x,y)| → r = |p - q| **Multiplication :** -I(x,y) = A(x,y) X B(x,y) ¡ú r = p x q +I(x,y) = A(x,y) X B(x,y) → r = p x q **Division :** -I(x,y) = A(x,y) / B(x,y) ¡ú r = p / q +I(x,y) = A(x,y) / B(x,y) → r = p / q **Implementation issues:** @@ -49,4 +49,4 @@ Auto scaling - This operation remaps the range of r to fit to be in [0, 255] as ra = 255 x (r - rmin)/(rmax-rmin) -Where, rmax and rmin are the maximum and minimum values of an arithmetic operation. \ No newline at end of file +Where, rmax and rmin are the maximum and minimum values of an arithmetic operation. \ No newline at end of file From 7ff9b69f5c2345cf81be5b27b197907433766dcf Mon Sep 17 00:00:00 2001 From: sravanthimodepu Date: Wed, 15 Sep 2021 18:31:21 +0530 Subject: [PATCH 7/7] Update references.md --- experiment/references.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/experiment/references.md b/experiment/references.md index 088e417..d0cadc7 100644 --- a/experiment/references.md +++ b/experiment/references.md @@ -1,9 +1,7 @@ 1. Image Arithmetic - [http://homepages.inf.ed.ac.uk/rbf/HIPR2/arthops.htm](http://homepages.inf.ed.ac.uk/rbf/HIPR2/arthops.htm) -2. Image Arithmetic - [http://www.student.kuleuven.be/~m0216922/CG/imagearithmetic.html](http://www.student.kuleuven.be/~m0216922/CG/imagearithmetic.html) - -Books: +**Books:** 1. A.K.Jain, Fundamentals of Digital Image Processing, Prentice-Hall, 1989. -2. Rafael C. Gonzalez, Digital Image Processing, Second Ed., Pearson Education,2004. \ No newline at end of file +2. Rafael C. Gonzalez, Digital Image Processing, Second Ed., Pearson Education,2004.