From 01b089d9be046db1253cb3bb90e8635b50fddd84 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 12:36:00 -0500 Subject: Added minify plugin --- .../min_unit_tests/HTTP_ConditionalGet/2.php | 44 + .../min_unit_tests/HTTP_ConditionalGet/3.php | 40 + .../min_unit_tests/HTTP_ConditionalGet/4.php | 49 + .../min_unit_tests/HTTP_ConditionalGet/5.php | 27 + .../HTTP_ConditionalGet/_include.php | 64 + .../min_unit_tests/HTTP_ConditionalGet/index.php | 36 + .../minify/min_unit_tests/HTTP_Encoder/green.png | Bin 0 -> 202 bytes .../minify/min_unit_tests/HTTP_Encoder/index.php | 60 + .../Minify/extlib/minify/min_unit_tests/_inc.php | 50 + .../min_unit_tests/_test_files/css/comments.css | 9 + .../_test_files/css/comments.min.css | 3 + .../min_unit_tests/_test_files/css/hacks.css | 66 + .../min_unit_tests/_test_files/css/hacks.min.css | 4 + .../min_unit_tests/_test_files/css/issue62.css | 890 +++++ .../min_unit_tests/_test_files/css/issue62.min.css | 25 + .../_test_files/css/paths_prepend.css | 12 + .../_test_files/css/paths_prepend.min.css | 1 + .../_test_files/css/paths_rewrite.css | 14 + .../_test_files/css/paths_rewrite.min.css | 1 + .../min_unit_tests/_test_files/css/readme.txt | 1 + .../min_unit_tests/_test_files/css/selectors.css | 42 + .../_test_files/css/selectors.min.css | 37 + .../min_unit_tests/_test_files/css/styles.css | 31 + .../min_unit_tests/_test_files/css/styles.min.css | 3 + .../min_unit_tests/_test_files/css/subsilver.css | 434 +++ .../_test_files/css/subsilver.min.css | 18 + .../_test_files/css/unusual_strings.css | 10 + .../_test_files/css/unusual_strings.min.css | 2 + .../min_unit_tests/_test_files/css/vladmirated.css | 658 ++++ .../_test_files/css/vladmirated.min.css | 79 + .../_test_files/css_uriRewriter/exp.css | 14 + .../_test_files/css_uriRewriter/in.css | 14 + .../min_unit_tests/_test_files/html/before.html | 96 + .../_test_files/html/before.min.html | 36 + .../min_unit_tests/_test_files/html/before2.html | 95 + .../_test_files/html/before2.min.html | 36 + .../_test_files/importProcessor/1/adjacent.css | 3 + .../_test_files/importProcessor/1/tv.css | 4 + .../_test_files/importProcessor/adjacent.css | 4 + .../_test_files/importProcessor/input.css | 4 + .../_test_files/importProcessor/output.css | 48 + .../minify/min_unit_tests/_test_files/js/before.js | 57 + .../min_unit_tests/_test_files/js/before.min.js | 22 + .../_test_files/js/before.min_plus.js | 22 + .../min_unit_tests/_test_files/js/condcomm.js | 14 + .../_test_files/js/condcomm.min_plus.js | 13 + .../min_unit_tests/_test_files/js/issue74.js | 4 + .../min_unit_tests/_test_files/js/issue74.min.js | 1 + .../_test_files/js/issue74.min_plus.js | 1 + .../min_unit_tests/_test_files/js/jquery-1.2.3.js | 3408 ++++++++++++++++++++ .../_test_files/minify/QueryString.js | 168 + .../min_unit_tests/_test_files/minify/email.js | 24 + .../min_unit_tests/_test_files/minify/issue73_1.js | 2 + .../min_unit_tests/_test_files/minify/issue73_2.js | 3 + .../_test_files/minify/issue89_1.css | 7 + .../_test_files/minify/issue89_2.css | 7 + .../_test_files/minify/issue89_out.min.css | 1 + .../_test_files/minify/lines_bugs.js | 2 + .../_test_files/minify/lines_output.js | 280 ++ .../min_unit_tests/_test_files/minify/minified.css | 5 + .../min_unit_tests/_test_files/minify/minified.js | 12 + .../min_unit_tests/test_HTTP_ConditionalGet.php | 137 + .../minify/min_unit_tests/test_HTTP_Encoder.php | 260 ++ .../extlib/minify/min_unit_tests/test_JSMin.php | 63 + .../minify/min_unit_tests/test_JSMinPlus.php | 80 + .../extlib/minify/min_unit_tests/test_Minify.php | 213 ++ .../minify/min_unit_tests/test_Minify_Build.php | 36 + .../minify/min_unit_tests/test_Minify_CSS.php | 53 + .../min_unit_tests/test_Minify_CSS_UriRewriter.php | 56 + .../min_unit_tests/test_Minify_Cache_APC.php | 33 + .../min_unit_tests/test_Minify_Cache_File.php | 54 + .../min_unit_tests/test_Minify_Cache_Memcache.php | 38 + .../test_Minify_CommentPreserver.php | 37 + .../minify/min_unit_tests/test_Minify_HTML.php | 59 + .../min_unit_tests/test_Minify_ImportProcessor.php | 48 + .../minify/min_unit_tests/test_Minify_Lines.php | 36 + .../extlib/minify/min_unit_tests/test_all.php | 17 + .../minify/min_unit_tests/test_environment.php | 100 + .../minify/min_unit_tests/test_js_in_browser.html | 4 + 79 files changed, 8441 insertions(+) create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/index.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/index.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_inc.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/QueryString.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/email.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue73_1.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue73_2.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_1.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_2.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_out.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/lines_bugs.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/lines_output.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/minified.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/minified.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_HTTP_ConditionalGet.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_HTTP_Encoder.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_JSMin.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_JSMinPlus.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Build.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CSS.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CSS_UriRewriter.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_APC.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_File.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_Memcache.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CommentPreserver.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_HTML.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_ImportProcessor.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Lines.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_all.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_environment.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_js_in_browser.html (limited to 'plugins/Minify/extlib/minify/min_unit_tests') diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php new file mode 100644 index 000000000..9b66f2493 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php @@ -0,0 +1,44 @@ + $lastModified +)); +if ($cg->cacheIsValid) { + $cg->sendHeaders(); + // we're done + exit(); +} + +// generate content +$title = 'Last-Modified is known : add Content-Length'; +$explain = ' +

Here, like the first example, we know the Last-Modified time, +but we also want to set the Content-Length to increase cacheability and allow +HTTP persistent connections. Instead of sending headers immediately, we first +generate our content, then use setContentLength(strlen($content)) +to add the header. Then finally call sendHeaders() and send the +content.

+

Note: This is not required if your PHP config buffers all +output and your script doesn\'t do any incremental flushing of the output +buffer. PHP will generally set Content-Length for you if it can.

+

This script emulates a document that changes every ' .$every. ' seconds. +
This is version: ' . date('r', $lastModified) . '

+'; + +require '_include.php'; +$content = get_content(array( + 'title' => $title + ,'explain' => $explain +)); + +$cg->setContentLength(strlen($content)); +$cg->sendHeaders(); +send_slowly($content); + diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php new file mode 100644 index 000000000..8f5482ba8 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php @@ -0,0 +1,40 @@ +When Last-Modified is unknown, you can still use ETags, but you need a short +string that is unique for that content. In the worst case, you have to generate +all the content first, then instantiate HTTP_ConditionalGet, setting +the array key contentHash to the output of a hash function of the +content. Since we have the full content, we might as well also use +setContentLength(strlen($content)) in the case where we need to +send it.

+

This script emulates a document that changes every ' .$every. ' seconds. +
This is version: ' . date('r', $lastModified) . '

+'; +require '_include.php'; +$content = get_content(array( + 'title' => $title + ,'explain' => $explain +)); + +$cg = new HTTP_ConditionalGet(array( + 'contentHash' => substr(md5($content), 7) +)); +if ($cg->cacheIsValid) { + $cg->sendHeaders(); + // we're done + exit(); +} +$cg->setContentLength(strlen($content)); +$cg->sendHeaders(); + +send_slowly($content); + diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php new file mode 100644 index 000000000..4b77d2084 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php @@ -0,0 +1,49 @@ + $lastModified + ,'encoding' => $enc +)); +$cg->sendHeaders(); +if ($cg->cacheIsValid) { + // we're done + exit(); +} + +// output encoded content + +$title = 'ConditionalGet + Encoder'; +$explain = ' +

Using ConditionalGet and Encoder is straightforward. First impliment the +ConditionalGet, then if the cache is not valid, encode and send the content

+

This script emulates a document that changes every ' .$every. ' seconds. +
This is version: ' . date('r', $lastModified) . '

+'; +require '_include.php'; +$content = get_content(array( + 'title' => $title + ,'explain' => $explain +)); + +$he = new HTTP_Encoder(array( + 'content' => get_content(array( + 'title' => $title + ,'explain' => $explain + )) +)); +$he->encode(); + +// usually you would just $he->sendAll(), but here we want to emulate slow +// connection +$he->sendHeaders(); +send_slowly($he->getContent()); diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php new file mode 100644 index 000000000..b443c1973 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php @@ -0,0 +1,27 @@ + 20 + ,'lastModifiedTime' => filemtime(__FILE__) +)); +$cg->sendHeaders(); + +// generate, send content +$title = 'Last-Modified + Expires'; +$explain = ' +

Here we set a static "lastModifiedTime" and "maxAge" to 20. The browser +will consider this document fresh for 20 seconds, then revalidate its cache. After +the 304 response, the cache will be good for another 20 seconds. Unless you force +a reload, there will only be 304 responses for this page after the initial download. +'; + +require '_include.php'; +echo get_content(array( + 'title' => $title + ,'explain' => $explain +)); + diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php new file mode 100644 index 000000000..9b65ae12e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php @@ -0,0 +1,64 @@ + + + + + +HTTP_ConditionalGet : <?php echo $data['title']; ?> + + +

HTTP_ConditionalGet

+

+ + +

Notes

+

How to distinguish 200 and 304 responses

+

For these pages all 200 responses are sent in chunks a second apart, so you +should notice that 304 responses are quicker. You can also use HTTP sniffers +like Fiddler (win) and +LiveHTTPHeaders (Firefox add-on) +to verify headers and content being sent.

+

Browser notes

+
+
Opera
+
Opera has a couple behaviors against the HTTP spec: Manual refreshes (F5) + prevents the ETag/If-Modified-Since headers from being sent; it only sends + them when following a link or bookmark. Also, Opera will not honor the + must-revalidate Cache-Control value unless max-age + is set. To get Opera to follow the spec, ConditionalGet will send Opera max-age=0 + (if one is not already set).
+
Safari
+
ETag validation is unsupported, but Safari supports HTTP/1.0 validation via + If-Modified-Since headers as long as the cache is explicitly marked + "public" or "private" ("private" is default in ConditionalGet).
+
+ + + $lastModified +)); +$cg->sendHeaders(); +if ($cg->cacheIsValid) { + // we're done + exit(); +} + +$title = 'Last-Modified is known : simple usage'; +$explain = ' +

If your content has not changed since a certain timestamp, set this via the +the lastModifiedTime array key when instantiating HTTP_ConditionalGet. +You can immediately call the method sendHeaders() to set the +Last-Modified, ETag, and Cache-Control headers. The, if cacheIsValid +property is false, you echo the content.

+

This script emulates a document that changes every ' .$every. ' seconds. +
This is version: ' . date('r', $lastModified) . '

+'; + +require '_include.php'; + +echo send_slowly(get_content(array( + 'title' => $title + ,'explain' => $explain +))); + diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png new file mode 100644 index 000000000..d9d3a308a Binary files /dev/null and b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png differ diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/index.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/index.php new file mode 100644 index 000000000..c9a391d07 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/index.php @@ -0,0 +1,60 @@ + + + + +HTTP_Encoder Test + + + +

HTTP_Encoder test

+

HTML

+

CSS

+

Javascript

+

image

+ + + + $content + ,'type' => $type +)); +$he->encode(); +$he->sendAll(); + +?> \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_inc.php b/plugins/Minify/extlib/minify/min_unit_tests/_inc.php new file mode 100644 index 000000000..bf416d4bb --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_inc.php @@ -0,0 +1,50 @@ +0, 'fail'=>0, 'total'=>0); + + $mode = $test ? 'pass' : 'fail'; + $outMode = $test ? 'PASS' : '!FAIL'; + printf("%s: %s (%d of %d tests run so far have %sed)\n", + $outMode, $message, ++$count[$mode], ++$count['total'], $mode); + + return (bool)$test; +} + +ob_start(); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css new file mode 100644 index 000000000..2ef9fac49 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css @@ -0,0 +1,9 @@ + +/* block comments get removed */ + +/*! YUI Compressor style comments are preserved */ + +/* but all other comments are removed */ + +/* comments that have any surrounding whitespace are replaced by a single space. */ +body{ background:#fff/*eef*/ url(/path/to/image.gif) repeat-y; } diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css new file mode 100644 index 000000000..3ea5c61a6 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css @@ -0,0 +1,3 @@ + +/* YUI Compressor style comments are preserved */ +body{background:#fff url(/path/to/image.gif) repeat-y} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css new file mode 100644 index 000000000..fccd32166 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css @@ -0,0 +1,66 @@ +/* hide from ie5/mac \*/ a{} +.foo {color:red} +/* necessary comment */ + +/* comment to attempt to confuse parser */ + +/* feed to ie5/mac \*//*/ +@import "ie5mac.css"; +/* necessary comment */ + +/* comment to attempt to confuse parser */ + +/*/ hide from nav4 */ +.foo {display:block;} +/* necessary comment */ + +/* comment to attempt to confuse parser */ + +/*/ feed to nav *//*/ +.foo {display:crazy;} +/* necessary comment */ + +/* hide props from various IE/win */ +div { + width: 140px; + width/* */:/**/100px; + width: /**/100px; +} + +html>/**/body {} + +/* Tantek's box model hack */ +div { + width:400px; + voice-family: "\"}\""; + voice-family:inherit; + width:300px; +} + +/* don't minimize hex colors in filters */ +div { + filter:chroma(color=#aabbcc); + filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000); +} + +@media screen { + /* for IE 5.x-6, hidden from IE 5 Mac */ /*\*/ + * html div#page { + height: 1%; + } + /**/ /* end hidden from IE 5 Mac */ +} + +foo { /* filters for IE */ + _height : 20px; + *height : 15px; +} + +/* http://tantek.com/CSS/Examples/midpass.html */ +@media tty { + i{content:"\";/*" "*/}} @import 'midpassafter.css'; /*";} +}/* */ + +/* leave at least 1 space between these pseudo elements and "{" for IE6: http://www.crankygeek.com/ie6pebug/ */ +p:first-letter {color:red;} +p:first-line {color:red;} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css new file mode 100644 index 000000000..68be2ee89 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css @@ -0,0 +1,4 @@ +/*\*/a{}.foo{color:red}/**/ /*\*//*/@import "ie5mac.css";/**/ /*/*/.foo{display:block}/**/ /*/*//*/.foo{display:crazy}/**/ div{width:140px;width/**/:/**/100px;width:/**/100px}html>/**/body{}div{width:400px;voice-family:"\"}\"";voice-family:inherit;width:300px}div{filter:chroma(color=#aabbcc);filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000)}@media +screen{/*\*/* html +div#page{height:1%}/**/}foo{_height:20px;*height:15px}@media +tty{i{content:"\";/*" "*/}}@import 'midpassafter.css';/*"}}/* */ p:first-letter {color:red}p:first-line {color:red} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css new file mode 100644 index 000000000..006c7a22f --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css @@ -0,0 +1,890 @@ +/* +* DEFINITION DES STYLES DE TEXTE +*/ + /*-----------------------------------------------------------------------------------*/ +h1 { + color: #339933; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + font-weight: bold; + text-decoration: none; +} + +h2 { + color: #339933; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + font-weight: bold; + text-decoration: none; +} + +h1,h2,h3,h4,h5 { + margin: 0px; + padding: 0px; +} + +.txt_10_noir { + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active { + color: black; +} + +.txt_10_noir:hover { + color: red; +} + +.txt_11_noir { + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active { + color: black; +} + +.txt_11_noir:hover { + color: red; +} + +.txt_12_noir { + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active { + color: black; +} + +.txt_12_noir:hover { + color: red; +} + +.txt_14_noir { + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active { + color: black; +} + +.txt_14_noir:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_gris { + color: grey; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active { + color: grey; +} + +.txt_10_gris:hover { + color: red; +} + +.txt_11_gris { + color: grey; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active { + color: grey; +} + +.txt_11_gris:hover { + color: red; +} + +.txt_12_gris { + color: grey; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active { + color: grey; +} + +.txt_12_gris:hover { + color: red; +} + +.txt_14_gris { + color: grey; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active { + color: grey; +} + +.txt_14_gris:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_blanc { + color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active { + color: #FFFFFF; +} + +.txt_10_blanc:hover { + color: #FF8800; /*ORANGE*/ +} + +.txt_11_blanc { + color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active { + color: #FFFFFF; +} + +.txt_11_blanc:hover { + color: #FF8800; +} + +.txt_12_blanc { + color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active { + color: #FFFFFF; +} + +.txt_12_blanc:hover { + color: #FFAA00; +} + +.txt_14_blanc { + color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active { + color: #FFFFFF; +} + +.txt_14_blanc:hover { + color: #FF8800; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_orange { + color: #FF8800; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active { + color: #FF8800; +} + +.txt_10_orange:hover { + color: darkblue +} + +.txt_11_orange { + color: #FF8800; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active { + color: #FF8800; +} + +.txt_11_orange:hover { + color: darkblue; +} + +.txt_12_orange { + color: #FF8800; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active { + color: #FF8800; +} + +.txt_12_orange:hover { + color: darkblue; +} + +.txt_14_orange { + color: #FF8800; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active { + color: #FF8800; +} + +.txt_14_orange:hover { + color: darkblue; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_rouge { + color: red; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active { + color: red; +} + +.txt_10_rouge:hover { + color: darkblue; +} + +.txt_11_rouge { + color: red; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active { + color: red; +} + +.txt_11_rouge:hover { + color: darkblue; +} + +.txt_12_rouge { + color: red; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active { + color: red; +} + +.txt_12_rouge:hover { + color: darkblue; +} + +.txt_14_rouge { + color: red; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active { + color: red; +} + +.txt_14_rouge:hover { + color: darkblue; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_bleu { + color: blue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active { + color: blue; +} + +.txt_10_bleu:hover { + color: red; +} + +.txt_11_bleu { + color: blue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active { + color: blue; +} + +.txt_11_bleu:hover { + color: red; +} + +.txt_12_bleu { + color: blue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active { + color: blue; +} + +.txt_12_bleu:hover { + color: red; +} + +.txt_14_bleu { + color: blue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active { + color: blue; +} + +.txt_14_bleu:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_bleu_f { + color: darkblue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active { + color: darkblue; +} + +.txt_10_bleu_f:hover { + color: red; +} + +.txt_11_bleu_f { + color: darkblue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active { + color: darkblue; +} + +.txt_11_bleu_f:hover { + color: red; +} + +.txt_12_bleu_f { + color: darkblue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active { + color: darkblue; +} + +.txt_12_bleu_f:hover { + color: red; +} + +.txt_14_bleu_f { + color: darkblue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active { + color: darkblue; +} + +.txt_14_bleu_f:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_vert_f { + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active { + color: darkgreen; +} + +.txt_10_vert_f:hover { + color: red; +} + +.txt_11_vert_f { + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active { + color: darkgreen; +} + +.txt_11_vert_f:hover { + color: red; +} + +.txt_12_vert_f { + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active { + color: darkgreen; +} + +.txt_12_vert_f:hover { + color: red; +} + +.txt_14_vert_f { + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active { + color: darkgreen; +} + +.txt_14_vert_f:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_vert { + color: green; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active { + color: green; +} + +.txt_10_vert:hover { + color: red; +} + +.txt_11_vert { + color: green; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active { + color: green; +} + +.txt_11_vert:hover { + color: red; +} + +.txt_12_vert { + color: green; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active { + color: green; +} + +.txt_12_vert:hover { + color: red; +} + +.txt_14_vert { + color: green; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active { + color: green; +} + +.txt_14_vert:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.fond_blanc { + background-color: #FFFFFF; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.fond_gris_c, .fond_gris_c tr { + background-color: #FFFFFF; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.fond_gris_c2, .fond_gris_c2 tr { + background-color: #FBFBFB; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.fond_bleu_c, .fond_bleu_c tr { + background-color: #D9EEF9; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; + background-image: url(../images/fond_1.bmp); +} + +.fond_bleu_c2 { + background-color: #ECF4FF; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.fond_bleu_f { + background-color: #003366; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.fond_orange { + background-color: #FEEFE7; + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + font-weight: bold; + text-decoration: none; + background-image: url(../images/fond_3.jpg); +} + +.fond_orange_2 { + background-color: #FFF8F4; + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + font-weight: bold; + text-decoration: none; + border: 1px solid orange; + border-collapse: collapse; +} + +.vccDlgBody { + border: 3px solid #336699; + border-collapse: collapse; + color: black; + background-color: #EEFFEE; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +/* DEFINITION DES STYLES DE TABLEAUX */ +.bordure_0 { + border: 0px solid; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.bordure_1_bleu { + border: 1px solid green; + border-collapse: collapse; + color: black; + background-color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.bordure_3_bleu { + border: 3px solid #336699; + border-collapse: collapse; + color: black; + background-color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.indent { + margin-left: 20px; +} + +/* DEFINITION DES STYLES D'OBJETS DE FORMULAIRE */ +.Btn { + color: #003366; + text-align: center; + font-weight: bold; + background-color: #FFFFFF; + background-image: url(../images/ongletStyle1.jpg); + background-repeat: no-repeat; + background-position: center center; +} + +.Btn:hover { + color: red; +} + +.menu1h { + background-color: #003366; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + font-weight: bold; + text-decoration: none; + border-top: 1px solid #003366; + border-bottom: 1px solid #003366; + border-left: 1px solid #003366; + border-right: 1px solid white; + border-collapse: collapse; + display: block; +} + +.menu1h:hover { + background-color: white; + color: red; + border: 1px solid darkgreen; + border-collapse: collapse; +} + +.menu1h_f { + background-color: #003366; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + font-weight: bold; + text-decoration: none; + border: 1px solid #003366; + display: block; +} + +.menu1h_f:hover { + background-color: white; + color: red; + border: 1px solid darkgreen; + border-collapse: collapse; +} + +.menu1v { + background-color: #003366; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + font-weight: bold; + text-decoration: none; + border: 1px solid #003366; + border-collapse: collapse; + display: block; +} + +.menu1v:hover { + background-color: white; + color: red; + border: 1px solid darkgreen; + border-collapse: collapse; +} + +.menu2v { + background-color: #5588BB; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + font-weight: bold; + text-decoration: none; + border: 1px solid #4277AB; + border-collapse: collapse; + float: left; + display: block; +} + +.menu2v:hover { + background-color: white; + color: red; + border: 1px solid darkgreen; + border-collapse: collapse; +} + +.menuEDF { + background-color: #003366; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.menuEDF:hover { + color: #FF8800; +} + +/*bouton bleu sur blanc*/ +.Bouton { + color: #003366; + text-align: center; + font-weight: bold; + /* Ricardo cursor: hand; */ + cursor: pointer; + background-color: #FFFFFF; +} + +input { + border: 2px solid green; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.disabled_input { + border: 1px solid gray; + color: grey; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.input0 { + border: 0px; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); +} + +.input2 { + border: 1px solid green; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.input3 { + border: 1px solid black; + color: #003366; + background-color: #EEEEEE; + background-image: url(); +} + +.input4 { + border: 1px solid blue; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.input5 { + border: 1px solid darkblue; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.input_btn { + border: 0px; + /* cursor: hand; */ + cursor: pointer; +} + +textarea { + border: 2px solid green; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_5.bmp); +} + +.TEXTAREA3 { + border: 1px solid green; + color: #003366; + background-color: #FFFFFF; + background-image: url(); +} + +.TEXTAREA4 { + border: 1px solid green; + color: #003366; + background-color: #EEEEEE; + background-image: url(); +} + +.hand { + cursor: hand; + cursor: pointer; +} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css new file mode 100644 index 000000000..5eb198228 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css @@ -0,0 +1,25 @@ +h1{color:#393;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;font-weight:bold;text-decoration:none}h2{color:#393;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none}h1,h2,h3,h4,h5{margin:0px;padding:0px}.txt_10_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active{color:black}.txt_10_noir:hover{color:red}.txt_11_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active{color:black}.txt_11_noir:hover{color:red}.txt_12_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active{color:black}.txt_12_noir:hover{color:red}.txt_14_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active{color:black}.txt_14_noir:hover{color:red}.txt_10_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active{color:grey}.txt_10_gris:hover{color:red}.txt_11_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active{color:grey}.txt_11_gris:hover{color:red}.txt_12_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active{color:grey}.txt_12_gris:hover{color:red}.txt_14_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active{color:grey}.txt_14_gris:hover{color:red}.txt_10_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active{color:#FFF}.txt_10_blanc:hover{color:#F80}.txt_11_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active{color:#FFF}.txt_11_blanc:hover{color:#F80}.txt_12_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active{color:#FFF}.txt_12_blanc:hover{color:#FA0}.txt_14_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active{color:#FFF}.txt_14_blanc:hover{color:#F80}.txt_10_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active{color:#F80}.txt_10_orange:hover{color:darkblue}.txt_11_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active{color:#F80}.txt_11_orange:hover{color:darkblue}.txt_12_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active{color:#F80}.txt_12_orange:hover{color:darkblue}.txt_14_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active{color:#F80}.txt_14_orange:hover{color:darkblue}.txt_10_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active{color:red}.txt_10_rouge:hover{color:darkblue}.txt_11_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active{color:red}.txt_11_rouge:hover{color:darkblue}.txt_12_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active{color:red}.txt_12_rouge:hover{color:darkblue}.txt_14_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active{color:red}.txt_14_rouge:hover{color:darkblue}.txt_10_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active{color:blue}.txt_10_bleu:hover{color:red}.txt_11_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active{color:blue}.txt_11_bleu:hover{color:red}.txt_12_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active{color:blue}.txt_12_bleu:hover{color:red}.txt_14_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active{color:blue}.txt_14_bleu:hover{color:red}.txt_10_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active{color:darkblue}.txt_10_bleu_f:hover{color:red}.txt_11_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active{color:darkblue}.txt_11_bleu_f:hover{color:red}.txt_12_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active{color:darkblue}.txt_12_bleu_f:hover{color:red}.txt_14_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active{color:darkblue}.txt_14_bleu_f:hover{color:red}.txt_10_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active{color:darkgreen}.txt_10_vert_f:hover{color:red}.txt_11_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active{color:darkgreen}.txt_11_vert_f:hover{color:red}.txt_12_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active{color:darkgreen}.txt_12_vert_f:hover{color:red}.txt_14_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active{color:darkgreen}.txt_14_vert_f:hover{color:red}.txt_10_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active{color:green}.txt_10_vert:hover{color:red}.txt_11_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active{color:green}.txt_11_vert:hover{color:red}.txt_12_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active{color:green}.txt_12_vert:hover{color:red}.txt_14_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active{color:green}.txt_14_vert:hover{color:red}.fond_blanc{background-color:#FFF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_gris_c, .fond_gris_c +tr{background-color:#FFF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.fond_gris_c2, .fond_gris_c2 +tr{background-color:#FBFBFB;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_bleu_c, .fond_bleu_c +tr{background-color:#D9EEF9;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none;background-image:url(../images/fond_1.bmp)}.fond_bleu_c2{background-color:#ECF4FF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_bleu_f{background-color:#036;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_orange{background-color:#FEEFE7;color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;background-image:url(../images/fond_3.jpg)}.fond_orange_2{background-color:#FFF8F4;color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;border:1px +solid orange;border-collapse:collapse}.vccDlgBody{border:3px +solid #369;border-collapse:collapse;color:black;background-color:#EFE;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_0{border:0px +solid;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_1_bleu{border:1px +solid green;border-collapse:collapse;color:black;background-color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_3_bleu{border:3px +solid #369;border-collapse:collapse;color:black;background-color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.indent{margin-left:20px}.Btn{color:#036;text-align:center;font-weight:bold;background-color:#FFF;background-image:url(../images/ongletStyle1.jpg);background-repeat:no-repeat;background-position:center center}.Btn:hover{color:red}.menu1h{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border-top:1px solid #036;border-bottom:1px solid #036;border-left:1px solid #036;border-right:1px solid white;border-collapse:collapse;display:block}.menu1h:hover{background-color:white;color:red;border:1px +solid darkgreen;border-collapse:collapse}.menu1h_f{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border:1px +solid #036;display:block}.menu1h_f:hover{background-color:white;color:red;border:1px +solid darkgreen;border-collapse:collapse}.menu1v{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border:1px +solid #036;border-collapse:collapse;display:block}.menu1v:hover{background-color:white;color:red;border:1px +solid darkgreen;border-collapse:collapse}.menu2v{background-color:#58B;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;border:1px +solid #4277AB;border-collapse:collapse;float:left;display:block}.menu2v:hover{background-color:white;color:red;border:1px +solid darkgreen;border-collapse:collapse}.menuEDF{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.menuEDF:hover{color:#F80}.Bouton{color:#036;text-align:center;font-weight:bold;cursor:pointer;background-color:#FFF}input{border:2px +solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.disabled_input{border:1px +solid gray;color:grey;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input0{border:0px;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp)}.input2{border:1px +solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input3{border:1px +solid black;color:#036;background-color:#EEE;background-image:url()}.input4{border:1px +solid blue;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input5{border:1px +solid darkblue;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input_btn{border:0px;cursor:pointer}textarea{border:2px +solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_5.bmp)}.TEXTAREA3{border:1px +solid green;color:#036;background-color:#FFF;background-image:url()}.TEXTAREA4{border:1px +solid green;color:#036;background-color:#EEE;background-image:url()}.hand{cursor:hand;cursor:pointer} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css new file mode 100644 index 000000000..da7cfca20 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css @@ -0,0 +1,12 @@ +@import "foo.css"; +@import 'bar/foo.css' print; +@import '/css/foo.css'; /* abs, should not alter */ +@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ +@import url(../foo.css) tv, projection; +@import url("/css/foo.css"); /* abs, should not alter */ +@import url(/css2/foo.css); /* abs, should not alter */ +@import url(data:image/gif;base64,AAAA); /* data, should not alter */ +foo {background:url('bar/foo.png')} +foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ +foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ +foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css new file mode 100644 index 000000000..ffb94e216 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css @@ -0,0 +1 @@ +@import "../foo.css";@import '../bar/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(../../foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('../bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css new file mode 100644 index 000000000..aa41d0a91 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css @@ -0,0 +1,14 @@ +@import "foo.css"; +@import 'bar/foo.css' print; +@import '../bar/foo.css' print; +@import '../../foo.css' print; +@import '/css/foo.css'; /* abs, should not alter */ +@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ +@import url(../foo.css) tv, projection; +@import url("/css/foo.css"); /* abs, should not alter */ +@import url(/css2/foo.css); /* abs, should not alter */ +@import url(data:image/gif;base64,AAAA); /* data, should not alter */ +foo {background:url('bar/foo.png')} +foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ +foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ +foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css new file mode 100644 index 000000000..34936155a --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css @@ -0,0 +1 @@ +@import "/_test_files/css/foo.css";@import '/_test_files/css/bar/foo.css' print;@import '/_test_files/bar/foo.css' print;@import '/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(/_test_files/foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('/_test_files/css/bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt new file mode 100644 index 000000000..018175529 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt @@ -0,0 +1 @@ +Test suite from http://search.cpan.org/~gtermars/CSS-Minifier-XS/ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css new file mode 100644 index 000000000..d74c9aa02 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css @@ -0,0 +1,42 @@ +/* http://www.w3.org/TR/css3-selectors/ */ + +* +E[foo] +E[foo="bar"] +E[foo~="bar"] +E[foo^="bar"] +E[foo$="bar"] +E[foo*="bar"] +E[hreflang|="en"] +E:root +E:nth-child(n) +E:nth-last-child(n) +E:nth-of-type(n) +E:nth-last-of-type(n) +E:first-child +E:last-child +E:first-of-type +E:last-of-type +E:only-child +E:only-of-type +E:empty +E:link +E:visited +E:active +E:hover +E:focus +E:target +E:lang(fr) +E:enabled +E:disabled +E:checked +E::first-line +E::first-letter +E::selection +E::before +E::after +E.warning#myid +E:not(s) + > F + + F + ~ F {color: red;} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css new file mode 100644 index 000000000..643089fcf --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css @@ -0,0 +1,37 @@ +* +E[foo] +E[foo="bar"] +E[foo~="bar"] +E[foo^="bar"] +E[foo$="bar"] +E[foo*="bar"] +E[hreflang|="en"] +E:root +E:nth-child(n) +E:nth-last-child(n) +E:nth-of-type(n) +E:nth-last-of-type(n) +E:first-child +E:last-child +E:first-of-type +E:last-of-type +E:only-child +E:only-of-type +E:empty +E:link +E:visited +E:active +E:hover +E:focus +E:target +E:lang(fr) +E:enabled +E:disabled +E:checked +E::first-line +E::first-letter +E::selection +E::before +E::after +E.warning#myid +E:not(s)>F+F~F{color:red} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css new file mode 100644 index 000000000..bf46c0af0 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css @@ -0,0 +1,31 @@ +/* some CSS to try to exercise things in general */ + +@import url( /more.css ); + + body, td, th { + font-family: Verdana , "Bitstream Vera Sans" , sans-serif ; + + font-size : 12px; +} + +.nav { + margin-left: 20%; +} +#main-nav { + background-color: red; + border: 1px solid #00ff77; +} + +div#content +h1 + p { + padding-top: 0; + margin-top: 0; +} + +@media all and (min-width: 640px) { + #media-queries-1 { background-color: #0f0; } +} + +@media screen and (max-width: 2000px) { + #media-queries-2 { background-color: #0f0; } +} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css new file mode 100644 index 000000000..a823b0550 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css @@ -0,0 +1,3 @@ +@import url(/more.css);body,td,th{font-family:Verdana,"Bitstream Vera Sans",sans-serif;font-size:12px}.nav{margin-left:20%}#main-nav{background-color:red;border:1px +solid #0f7}div#content +h1+p{padding-top:0;margin-top:0}@media all and (min-width: 640px){#media-queries-1{background-color:#0f0}}@media screen and (max-width: 2000px){#media-queries-2{background-color:#0f0}} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css new file mode 100644 index 000000000..79d34ec4a --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css @@ -0,0 +1,434 @@ +/* Based on the original Style Sheet for the fisubsilver v2 Theme for phpBB version 2+ +Edited by Daz - http://www.forumimages.com - last updated 26-06-03 */ +/* The content of the posts (body of text) */ +/* General page style */ + + + + /* begin suggest post */ + .float-l{ + float: left; + } + + .form-suggest{ + height:200px; + background:#DEE2D0; + vertical-align: top; + } + + .form-input input{ + font-size: 10px; + } + + .hide{ + display:none; + } + + .form-input textarea{ + font-size: 11px; + width: 350px; + } + + .form-label{ + font-size: 10px; + font-weight: bold; + line-height: 25px; + padding-right: 10px; + text-align: right; + width: 100px; + color: #39738F; + } + + .font-9{ + font-size: 9px; + } + + .form-topic{ + font-weight:bold; + + } + + .form-error{ + color:red; + } + + .inline{ + display: inline; + } + + .space-10{ + clear: both; + font-size: 10px; + height: 10px; + line-height: 10px; + } + + .suggest-success{ + color:green; + padding-left:10px; + font-size:11px; + font-weight:bold; + } + + .top{ + vertical-align: top; + } + /* end suggest post */ + +table td{ + padding:3px; +} + +a:link,a:active,a:visited,a.postlink{ + color: #006699; + text-decoration: none; +} + +a:hover{ + color: #DD6900; +} + +a.admin:hover,a.mod:hover{ + color: #DD6900; +} + +a.but,a.but:hover,a.but:visited{ + color: #000000; + text-decoration: none; +} + +a.topictitle:visited{ + color: #5493B4; +} + +a.topictitle:hover{ + color: #DD6900; +} + + + +body{ + color: #000000; + font: 11px Verdana,Arial,Helvetica,sans-serif; + margin: 0 10px 10px 10px; + padding: 0; + overflow:auto; +} + +/* General font families for common tags */ +font,th,td,p{ + font: 12px Verdana,Arial,Helvetica,sans-serif; +} + +/* Form elements */ +form{ + display: inline; +} + +hr{ + border: 0px solid #FFFFFF; + border-top-width: 1px; + height: 0px; +} + +/* Gets rid of the need for border="0" on hyperlinked images */ +img{ + border: 0 solid; +} + +input{ + font: 11px Verdana,Arial,Helvetica,sans-serif; +} + +input.button,input.liteoption,.fakebut{ + background: #FAFAFA; + border: 1px solid #000000; + font-size: 11px; +} + +input.catbutton{ + background: #FAFAFA; + border: 1px solid #000000; + font-size: 10px; +} + +input.mainoption{ + background: #FAFAFA; + border: 1px solid #000000; + font-size: 11px; + font-weight: bold; +} + +input.post,textarea.post{ + background: #FFFFFF; + border: 1px solid #000000; + font: 11px Verdana,Arial,Helvetica,sans-serif; + padding-bottom: 2px; + padding-left: 2px; +} + +select{ + background: #FFFFFF; + font: 11px Verdana,Arial,Helvetica,sans-serif; +} + +table{ + text-align: left; +} + +td{ + vertical-align: middle; +} + +/* Category gradients*/ +td.cat{ + background-color: #C2C6BA; + font-weight: bold; + height: 20px; + letter-spacing: 1px; + text-indent: 4px; +} + +td.genmed,.genmed{ + font-size: 11px; +} + +/* This is for the table cell above the Topics,Post & Last posts on the index.php */ +td.rowpic{ + background: #C2C6BA; +} + +td.spacerow{ + background: #E5E6E2; +} + +/* Table Header cells */ +th{ + background-color: #FADD31; + background-image: url(images/cellpic3.gif); + background-repeat: repeat-x; + color: #68685E; + font-size: 11px; + font-weight: bold; + line-height:16px; + height: 16px; + padding-left: 8px; + padding-right: 8px; + text-align: center; + white-space: nowrap; +} + +/* Admin & Moderator Colours MODification */ +.admin,.mod{ + font-size: 11px; + font-weight: bold; +} + +.admin,a.admin,a.admin:visited{ + color: #FFA34F; +} + +/* This is the border line & background colour round the entire page */ +.bodyline{ + background: #FFFFFF; + border: 1px solid #98AAB1; +} + +.center{ + text-align: center; +} + +/* Code blocks */ +.code{ + background: #FAFAFA; + border: 1px solid #D1D7DC; + color: #006600; + font: 12px Courier,"Courier New",sans-serif; + padding: 5px; +} + +/* This is for the error messages that pop up */ +.errorline{ + background: #E5E6E2; + border: 1px solid #8F8B8B; + color:#D92A2A; +} + +.explaintitle{ + color: #5C81B1; + font-size: 11px; + font-weight: bold; +} + +/* This is the outline round the main forum tables */ +.forumline{ + background: #FFFFFF; +} + +/* General text */ +.gensmall{ + font-size: 10px; +} + +.h1-font{ + color: #006699; + display: inline; + font: bold 13px Verdana, Arial, Helvetica, sans-serif; + margin: 0; + text-decoration: none; +} + +.h2-font{ + display: inline; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +.height1{ + height: 1px; +} + +.height22{ + height: 22px; +} + +.height25{ + height: 25px; +} + +.height28{ + height: 28px; +} + +.height30{ + height: 30px; +} + +.height40{ + height: 40px; +} + +/* This is the line in the posting page which shows the rollover +help line. Colour value in row2 */ +.helpline{ + border: 0 solid; + font-size: 10px; +} + +.imgfolder{ + margin: 1px 4px 1px 4px; +} + +.imgspace{ + margin-left: 1px; + margin-right: 2px; +} + +/* Specify the space around images */ +.imgtopic,.imgicon{ + margin-left: 3px; +} + +.left{ + text-align: left; +} + +/* The largest text used in the index page title and toptic title etc. */ +.maintitle,h1,h2{ + color: #5C81B1; + font: bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif; + text-decoration: none; +} + +.maxwidth{ + width: 100%; +} + +.mod,a.mod,a.mod:visited{ + color: #006600; +} + +/* Name of poster in viewmsg.php and viewtopic.php and other places */ +.name{ + font-size: 11px; + font-weight: bold; +} + +/* Used for the navigation text,(Page 1,2,3 etc) and the navigation bar when in a forum */ +.nav{ + font-size: 11px; + font-weight: bold; +} + +.nowrap{ + white-space: nowrap; +} + +.postbody{ + font-size: 12px; + line-height: 125%; +} + +.postbody a{ + text-decoration: underline; +} + +/* Location,number of posts,post date etc */ +.postdetails{ + color: #00396A; + font-size: 10px; +} + +/* Quote blocks */ +.quote{ + background: #F3F3EF; + border: 1px solid #C2C6BA; + color: #006699; + font-size: 11px; + line-height: 125%; +} + +.right{ + text-align: right; +} + +/* Main table cell colours and backgrounds */ +.row1{ + background: #F0F0EB; +} + +.row2,.helpline{ + background: #E5E6E2; +} + +.row3{ + background: #DBDBD4; +} + +.subtitle,h2{ + font: bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif; + text-decoration: none; +} + +/* titles for the topics:could specify viewed link colour too */ +.topictitle { + color: #000000; + font-size: 11px; + font-weight: bold; +} + +.underline{ + text-decoration: underline; +} + +.top{ +vertical-align:top; +} + +.image-hspace{ +margin-right:3px; +} + +.clear{ +clear:both; +} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css new file mode 100644 index 000000000..f59b15a92 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css @@ -0,0 +1,18 @@ +.float-l{float:left}.form-suggest{height:200px;background:#DEE2D0;vertical-align:top}.form-input +input{font-size:10px}.hide{display:none}.form-input +textarea{font-size:11px;width:350px}.form-label{font-size:10px;font-weight:bold;line-height:25px;padding-right:10px;text-align:right;width:100px;color:#39738F}.font-9{font-size:9px}.form-topic{font-weight:bold}.form-error{color:red}.inline{display:inline}.space-10{clear:both;font-size:10px;height:10px;line-height:10px}.suggest-success{color:green;padding-left:10px;font-size:11px;font-weight:bold}.top{vertical-align:top}table +td{padding:3px}a:link,a:active,a:visited,a.postlink{color:#069;text-decoration:none}a:hover{color:#DD6900}a.admin:hover,a.mod:hover{color:#DD6900}a.but,a.but:hover,a.but:visited{color:#000;text-decoration:none}a.topictitle:visited{color:#5493B4}a.topictitle:hover{color:#DD6900}body{color:#000;font:11px Verdana,Arial,Helvetica,sans-serif;margin:0 +10px 10px 10px;padding:0;overflow:auto}font,th,td,p{font:12px Verdana,Arial,Helvetica,sans-serif}form{display:inline}hr{border:0px +solid #FFF;border-top-width:1px;height:0px}img{border:0 +solid}input{font:11px Verdana,Arial,Helvetica,sans-serif}input.button,input.liteoption,.fakebut{background:#FAFAFA;border:1px +solid #000;font-size:11px}input.catbutton{background:#FAFAFA;border:1px +solid #000;font-size:10px}input.mainoption{background:#FAFAFA;border:1px +solid #000;font-size:11px;font-weight:bold}input.post,textarea.post{background:#FFF;border:1px +solid #000;font:11px Verdana,Arial,Helvetica,sans-serif;padding-bottom:2px;padding-left:2px}select{background:#FFF;font:11px Verdana,Arial,Helvetica,sans-serif}table{text-align:left}td{vertical-align:middle}td.cat{background-color:#C2C6BA;font-weight:bold;height:20px;letter-spacing:1px;text-indent:4px}td.genmed,.genmed{font-size:11px}td.rowpic{background:#C2C6BA}td.spacerow{background:#E5E6E2}th{background-color:#FADD31;background-image:url(images/cellpic3.gif);background-repeat:repeat-x;color:#68685E;font-size:11px;font-weight:bold;line-height:16px;height:16px;padding-left:8px;padding-right:8px;text-align:center;white-space:nowrap}.admin,.mod{font-size:11px;font-weight:bold}.admin,a.admin,a.admin:visited{color:#FFA34F}.bodyline{background:#FFF;border:1px +solid #98AAB1}.center{text-align:center}.code{background:#FAFAFA;border:1px +solid #D1D7DC;color:#060;font:12px Courier,"Courier New",sans-serif;padding:5px}.errorline{background:#E5E6E2;border:1px +solid #8F8B8B;color:#D92A2A}.explaintitle{color:#5C81B1;font-size:11px;font-weight:bold}.forumline{background:#FFF}.gensmall{font-size:10px}.h1-font{color:#069;display:inline;font:bold 13px Verdana,Arial,Helvetica,sans-serif;margin:0;text-decoration:none}.h2-font{display:inline;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.height1{height:1px}.height22{height:22px}.height25{height:25px}.height28{height:28px}.height30{height:30px}.height40{height:40px}.helpline{border:0 +solid;font-size:10px}.imgfolder{margin:1px +4px 1px 4px}.imgspace{margin-left:1px;margin-right:2px}.imgtopic,.imgicon{margin-left:3px}.left{text-align:left}.maintitle,h1,h2{color:#5C81B1;font:bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.maxwidth{width:100%}.mod,a.mod,a.mod:visited{color:#060}.name{font-size:11px;font-weight:bold}.nav{font-size:11px;font-weight:bold}.nowrap{white-space:nowrap}.postbody{font-size:12px;line-height:125%}.postbody +a{text-decoration:underline}.postdetails{color:#00396A;font-size:10px}.quote{background:#F3F3EF;border:1px +solid #C2C6BA;color:#069;font-size:11px;line-height:125%}.right{text-align:right}.row1{background:#F0F0EB}.row2,.helpline{background:#E5E6E2}.row3{background:#DBDBD4}.subtitle,h2{font:bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.topictitle{color:#000;font-size:11px;font-weight:bold}.underline{text-decoration:underline}.top{vertical-align:top}.image-hspace{margin-right:3px}.clear{clear:both} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css new file mode 100644 index 000000000..69fa756eb --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css @@ -0,0 +1,10 @@ +/* test unusual, but valid strings in CSS */ + +foo[attr="multiple spaces"] { + content: "Hello World!"; +} + +foo[attr="Hel\ +lo"] { + content: " \"World\""; +} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css new file mode 100644 index 000000000..4b7d97e45 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css @@ -0,0 +1,2 @@ +foo[attr="multiple spaces"]{content:"Hello World!"}foo[attr="Hel\ +lo"]{content:" \"World\""} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css new file mode 100644 index 000000000..819835e58 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css @@ -0,0 +1,658 @@ +/* from http://www.vladimirated.com/web-development-minify-css-using-php-and-cssmin-class */ + + #comments_inviter #close_me { + clear: both; + text-align: center; + border-top: 1px solid #eeeeee; + padding-top: 10px; + } + + #comments_inviter #close_me span { + color: #108eed; + cursor: pointer; + font-weight: bold; + } + + #comments_inviter img { + float: left; + margin-right: 3px; + margin-bottom: 10px; + } + + #comments_inviter { + width: 200px; + background-color: #FFFFFF; + border: 4px solid #eeeeee; + font-size: 10px; + font-family: verdana; + padding: 10px; + color: #333333; + } + + .one_com { + background-color: #FAFAFA; + padding: 10px; + margin-bottom: 20px; + border: 1px solid #EEEEEE; + } + + .one_com .com_says, .one_com .com_det { + text-transform: lowercase; + color: #333333; + padding: 0px; + font-family: verdana; + margin: 0px; + font-size: 13px; + font-weight: bold; + } + + .flvPlayer { + text-align: center; + border: 5px solid #dddddd; + width: 320px; + } + + .one_com .com_det { + font-size: 10px; + font-weight: normal; + margin-bottom: 20px; + padding-bottom: 10px; + border-bottom: 8px solid #eeeeee; + } + + .one_com .com_det a { + text-decoration: none; + } + + .one_com .com_txt { + background-color: #ffffff; + margin-bottom: 10px; + border-bottom: 2px solid #eeeeee + } + + .one_com .com_txt p { + font-family: verdana; + font-size: 13px; + color: #777777; + margin: 0px; + padding: 5px; + padding-bottom: 10px; + text-transform: lowercase; + } + + .one_com .com_says a { + color: #333333; + } + + .one_com .com_det a { + color: #333333; + } + + .post_box .related_posts { + + } + + .post_box .related_posts p { + padding: 0px; + margin: 0px; + padding-bottom: 20px; + padding-left: 35px; + font-family: verdana; + + } + + .post_box .related_posts a { + color: #108eed; + } + + .post_nav_2 p { + + text-align: center; + color: #cccccc; + font-family: verdana; + } + + .post_box .related_posts h3, #comments_box #respond, .comments_posted h3 { + padding: 0px; + margin: 0px; + font-size: 18px; + color: #FF8000; + padding-top: 30px; + margin-bottom: 20px; + width: 300px; + border-bottom: 5px solid #e0e0e0; + } + + .comments_posted { + + margin-bottom: 50px; + + } + + .comments_posted h3 { + padding: 0px; + margin: 0px; + margin-bottom: 20px; + + } + + .cmt_txtarea { + width: 300px; + height: 100px; + + } + + #comments_box #respond { + + padding-top: 0px; + margin-bottom: 0px; + + } + + .pagetitle { + color: #65DA33; + text-align: center; + } + + #searchform { + padding: 0px; + margin: 0px; + } + + .si { + background-color: #FFFFEE; + border: 1px solid #e0e0e0; + } + + #rightcol #r_news, #rightcol #linksbro, #rightcol #quick_tags { + margin-top: 30px; + padding-bottom: 10px; + } + + #post_nav p { + padding: 0px; + margin: 0px; + padding-bottom: 5px; + } + + #post_nav { + text-align: left; + padding-bottom: 15px; + } + + #post_nav a, .post_nav_2 p a { + text-decoration: none; + font-family: Verdana; + font-size: 12px; + color: #108eed; + } + + #post_nav a:hover, .post_nav_2 p a:hover { + text-decoration: underline; + color: #FF8000; + } + + #rightcol #about { + padding-bottom: 10px; + } + + #rightcol #r_news input { + color: #333333; + font-size: 12px; + } + + #header { + height: 200px; + width: 100%; + background-image: url('images/header_bg.jpg'); + background-repeat: x-repeat; + } + + #header img { + + float: right; + margin-right: -3px; + z-index: 100; + + } + + .tags { + text-transform: lowercase; + color: #333333; + font-family: arial; + font-size: 12px; + border-top: 2px dotted #EEEEEE; + width: 300px; + padding-top: 20px; + padding-bottom: 0px; + margin-top: 0px; + padding-left: 20px; + padding-right: 20px; + } + + .tags a { + color: #108eed; + } + + .tags p { + text-align: left; + margin: 0px; + padding: 0px; + } + + blockquote strong { + font-family: verdana; + display: block; + margin-top: 10px; + color: #FF0000; + font-style: italic; + text-align: right; + } + + blockquote { + margin: 0px; + background-color: #eeeeee; + border: 2px solid #dddddd; + padding: 24px; + padding-top: 10px; + padding-left: 60px; + padding-bottom: 10px; + font-size: 13px; + color: #333333; + margin-bottom: 30px; + margin-top: 10px; + } + + + html>body #header img { margin-right: 0px; } + + #subscribe h3 { + color: #ff0000; + margin-top: 30px; + padding: 20px; + } + + .post_actions a{ + color: #108eed; + } + + .post_actions { + border-top: 4px solid #DDDDDD; + border-bottom: 1px solid #EEEEEE; + text-align: center; + background-color: #FFFFDd; + color: #dddddd; + white-space: no-wrap; + padding-left: 20px; + padding-bottom: 5px; + text-transform: capitalize; + } + + #subscribe td { + color: #333333; + font-size: 12px; + text-transform: lowercase; + } + + #subscribe input { + font-size: 13px; + color: #333333; + } + + .post_content { + font-size: 13px; + margin-top: 10px; + padding-bottom: 10px; + text-align: justify; + font-family: verdana; + } + + .post_content p { + margin: 0px; + padding: 0px; + padding-bottom: 20px; + line-height: 20px; + } + + #header h1 { + z-index: 200; + margin: 0px; + position: absolute; + float: left; + text-transform: lowercase; + padding: 0px; + font-size: 45px; + margin-top: 70px; + margin-left: 40px; + + } + + #header h1 a { + white-space: no-wrap; + text-decoration: none; + color: #FAFAFA; + display: block + } + + #header h1 a:hover { + color: #FAFAFA; + border-bottom: 3px dotted #FAFAFA; + } + + html>body #header h1 { margin-left: 60px; } + + body { + margin: 0px; + padding: 0px; + height: 100%; + width: 100%; + font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif, Verdana, Arial; + font-size: 12px; + } + + #leftcol { + float: left; + width: 200px; + margin-left: 0px; + margin-top: 17px; + color: #000; + padding: 3px; + height: 100%; + } + + #leftcol .box_head h3 { + text-transform: uppercase; + padding: 0px; + margin: 0px; + font-family: georgia; + font-size: 18px; + color: #dddddd; + border-top: 4px solid #dddddd; + border-bottom: 4px solid #cccccc; + padding-left: 10px; + padding-top: 10px; + padding-bottom: 10px; + background-image: url('images/stripesbg.png'); + margin-bottom: 10px; + } + + #leftcol .box_head input { + text-transform: lowercase; + color: #333333; + } + + #leftcol .box_head { + margin-left: 7px; + background-color: #ffefd4; + border-bottom: 2px solid #eeeeee; + padding-bottom: 20px; + margin-bottom: 30px; + } + + #leftcol .box_head p a { + color: #0a2d4d; + display: block; + text-decoration: none; + border-bottom: 3px solid #fefefe; + padding-top: 20px; + text-transform: lowercase; + padding-bottom: 20px; + padding-left: 5px; + padding-right: 5px; + } + + #leftcol .box_head p a:hover { + background-color: #fafafa; + border-bottom: 3px solid #eeeeee; + color: #000000; + } + + #leftcol .box_head p { + text-align: left; + margin: 0px; + width: 170px; + padding-bottom: 0px; + padding-top: 0px; + font-size: 11px; + } + + #rightcol { + position: absolute; + left: 77%; + top: 278px; + border: 3px solid #eeeeee; + width: 200px; + z-index: 3; + color: #333333; + padding: 10px; + text-transform: lowercase; + + } + + #rightcol p { + padding: 0px; + marging: 0px; + text-align: justify; + } + + #rightcol #about img, #rightcol #linksbro img { + border: 5px solid #eeeeee; + } + + #rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags h3 { + background-color: #fafafa; + border: 1px dotted #e0e0e0; + font-size: 14px; + color: #104bbc; + padding: 5px; + padding-top: 10px; + font-family: Arial; + padding-bottom: 10px; + } + + #rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p a { + color: #108eed; + } + + #rightcol #about p, #rightcol #r_news p, #rightcol #linksbro p { + font-size: 12px; + text-align: left; + } + + #content_warp { + margin: 20px 25% 0 215px; + padding: 3px; + color: #000; + background-color: #ededed; + } + + #content { + margin: 5px; + background-color: #FFFFFF; + padding: 10px; + } + + + #footer { + width: 99%; + margin-top: 30px; + height: 98px; + background-color: #101b1d; + } + + #footer td a { + color: #FF8000; + } + + #footer td a img { + border: 2px solid #108eed; + } + + #footer td p { + font-family: Verdana; + font-size: 10px; + color: #c0c0c0; + padding: 0px; + margin: 0px; + text-align: center; + padding-bottom: 10px; + } + + .s_offer { + color: #65DA33; + font-size: 20px; + font-weight: bold; + font-style: normal; + } + + .post_box { + text-transform: lowercase; + margin-bottom: 40px; + } + + #newsletter_box { + text-transform: lowercase; + margin-bottom: 10px; + margin-top: 30px; + font-style: normal; + background-color: #ffffff; + border: 5px solid #dddddd; + } + + #newsletter_head { + color: #EEEEEE; + font-family: Georgia; + background-image: url('images/stripesbg.png'); + padding: 10px; + padding-left: 30px; + border-bottom: 5px solid #dddddd; + } + + #newsletter_body { + color: #333333; + font-family: Verdana; + text-align: justify; + background-color: #FFFFFF; + padding: 10px; + font-size: 13px; + } + + .s_offer { + color: #65DA33; + font-size: 26px; + font-weight: bold; + font-style: normal; + } + + .post_title a { + color: #EEEEEE; + text-decoration: none; + } + + .post_title a:hover { + color: #c0c0c0; + } + + .post_title { + background-image: url('images/stripe_post.png'); + text-transform: uppercase; + font-size: 18px; + font-family: georgia; + padding: 10px; + border-top: 4px solid #c0c0c0; + margin: 0px; + border-bottom: 2px solid #ffffdd; + } + + .post_det { + text-transform: none; + margin: 0px; + border-top: 1px solid #f0f0f0; + padding: 0px; + padding-top: 5px; + color: #999999; + font-size: 10px; + font-family: verdana; + margin-bottom: 20px; + background-color: #eeeeee; + padding-bottom: 5px; + padding-left: 10px; + text-align: left; + border-bottom: 2px solid #dddddd; + } + + .post_det a { + color: #999999; + text-decoration: none; + } + + + .subtle { + text-transform: lowercase; + font-size: 10px; + font-family: verdana; + color: #108eed; + text-align: justify; + } + + #top_menu #navlist, #top_menu #navlist li { + padding:0px; + margin: 0px; + padding-top: 14px; + text-transform: lowercase; + padding-bottom: 17px; + padding-left: 30px; + border-left: 1px solid #65cdef; + } + + #top_menu #navlist, #top_menu #navlist li #first { + + border-left: 0px; + + } + + #top_menu #navlist { + padding-left: 30px; + background-color: #1dabd9; + border-top: 5px solid #0e96c3; + border-bottom: 5px solid #0e96c3; + } + + #top_menu #navlist li { + color: #444444; + font-size: 10px; + display: inline; + list-style-type: none; + padding-right: 30px; + } + + #top_menu #navlist li a { + text-decoration: none; + font-family: Verdana; + color: #fafafa; + font-size: 12px; + font-weight: bold; + } + + #top_menu #navlist li a:hover { + color: #333333; + } + + .post_content a { + color: #108eed; + } + + ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; } + ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;} + ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; } + ul#tagcloud li a:hover { text-decoration:underline; } + ul#tagcloud li.t1 a { color:#797979; font-size: 120%; } + ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; } + ul#tagcloud li.t3 a { color:#616161; font-size: 190%; } + ul#tagcloud li.t4 a { color:#555555; font-size: 210%; } + ul#tagcloud li.t5 a { color:#484848; font-size: 230%; } + ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; } + ul#tagcloud li.t7 a { color:#303030; font-size: 270%; } + ul#tagcloud li.t8 a { color:#242424; font-size: 290%; } + ul#tagcloud li.t9 a { color:#181818; font-size: 310%; } + ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css new file mode 100644 index 000000000..eaffaee38 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css @@ -0,0 +1,79 @@ +#comments_inviter +#close_me{clear:both;text-align:center;border-top:1px solid #eee;padding-top:10px}#comments_inviter #close_me +span{color:#108eed;cursor:pointer;font-weight:bold}#comments_inviter +img{float:left;margin-right:3px;margin-bottom:10px}#comments_inviter{width:200px;background-color:#FFF;border:4px +solid #eee;font-size:10px;font-family:verdana;padding:10px;color:#333}.one_com{background-color:#FAFAFA;padding:10px;margin-bottom:20px;border:1px +solid #EEE}.one_com .com_says, .one_com +.com_det{text-transform:lowercase;color:#333;padding:0px;font-family:verdana;margin:0px;font-size:13px;font-weight:bold}.flvPlayer{text-align:center;border:5px +solid #ddd;width:320px}.one_com +.com_det{font-size:10px;font-weight:normal;margin-bottom:20px;padding-bottom:10px;border-bottom:8px solid #eee}.one_com .com_det +a{text-decoration:none}.one_com +.com_txt{background-color:#fff;margin-bottom:10px;border-bottom:2px solid #eee}.one_com .com_txt +p{font-family:verdana;font-size:13px;color:#777;margin:0px;padding:5px;padding-bottom:10px;text-transform:lowercase}.one_com .com_says +a{color:#333}.one_com .com_det +a{color:#333}.post_box +.related_posts{}.post_box .related_posts +p{padding:0px;margin:0px;padding-bottom:20px;padding-left:35px;font-family:verdana}.post_box .related_posts +a{color:#108eed}.post_nav_2 +p{text-align:center;color:#ccc;font-family:verdana}.post_box .related_posts h3, #comments_box #respond, .comments_posted +h3{padding:0px;margin:0px;font-size:18px;color:#FF8000;padding-top:30px;margin-bottom:20px;width:300px;border-bottom:5px solid #e0e0e0}.comments_posted{margin-bottom:50px}.comments_posted +h3{padding:0px;margin:0px;margin-bottom:20px}.cmt_txtarea{width:300px;height:100px}#comments_box +#respond{padding-top:0px;margin-bottom:0px}.pagetitle{color:#65DA33;text-align:center}#searchform{padding:0px;margin:0px}.si{background-color:#FFE;border:1px +solid #e0e0e0}#rightcol #r_news, #rightcol #linksbro, #rightcol +#quick_tags{margin-top:30px;padding-bottom:10px}#post_nav +p{padding:0px;margin:0px;padding-bottom:5px}#post_nav{text-align:left;padding-bottom:15px}#post_nav a, .post_nav_2 p +a{text-decoration:none;font-family:Verdana;font-size:12px;color:#108eed}#post_nav a:hover, .post_nav_2 p a:hover{text-decoration:underline;color:#FF8000}#rightcol +#about{padding-bottom:10px}#rightcol #r_news +input{color:#333;font-size:12px}#header{height:200px;width:100%;background-image:url('images/header_bg.jpg');background-repeat:x-repeat}#header +img{float:right;margin-right: -3px;z-index:100}.tags{text-transform:lowercase;color:#333;font-family:arial;font-size:12px;border-top:2px dotted #EEE;width:300px;padding-top:20px;padding-bottom:0px;margin-top:0px;padding-left:20px;padding-right:20px}.tags +a{color:#108eed}.tags +p{text-align:left;margin:0px;padding:0px}blockquote +strong{font-family:verdana;display:block;margin-top:10px;color:#F00;font-style:italic;text-align:right}blockquote{margin:0px;background-color:#eee;border:2px +solid #ddd;padding:24px;padding-top:10px;padding-left:60px;padding-bottom:10px;font-size:13px;color:#333;margin-bottom:30px;margin-top:10px}html>body #header +img{margin-right:0px}#subscribe +h3{color:#f00;margin-top:30px;padding:20px}.post_actions +a{color:#108eed}.post_actions{border-top:4px solid #DDD;border-bottom:1px solid #EEE;text-align:center;background-color:#FFD;color:#ddd;white-space:no-wrap;padding-left:20px;padding-bottom:5px;text-transform:capitalize}#subscribe +td{color:#333;font-size:12px;text-transform:lowercase}#subscribe +input{font-size:13px;color:#333}.post_content{font-size:13px;margin-top:10px;padding-bottom:10px;text-align:justify;font-family:verdana}.post_content +p{margin:0px;padding:0px;padding-bottom:20px;line-height:20px}#header +h1{z-index:200;margin:0px;position:absolute;float:left;text-transform:lowercase;padding:0px;font-size:45px;margin-top:70px;margin-left:40px}#header h1 +a{white-space:no-wrap;text-decoration:none;color:#FAFAFA;display:block}#header h1 a:hover{color:#FAFAFA;border-bottom:3px dotted #FAFAFA}html>body #header +h1{margin-left:60px}body{margin:0px;padding:0px;height:100%;width:100%;font-family:'Lucida Sans Unicode','Lucida Grande',Sans-Serif,Verdana,Arial;font-size:12px}#leftcol{float:left;width:200px;margin-left:0px;margin-top:17px;color:#000;padding:3px;height:100%}#leftcol .box_head +h3{text-transform:uppercase;padding:0px;margin:0px;font-family:georgia;font-size:18px;color:#ddd;border-top:4px solid #ddd;border-bottom:4px solid #ccc;padding-left:10px;padding-top:10px;padding-bottom:10px;background-image:url('images/stripesbg.png');margin-bottom:10px}#leftcol .box_head +input{text-transform:lowercase;color:#333}#leftcol +.box_head{margin-left:7px;background-color:#ffefd4;border-bottom:2px solid #eee;padding-bottom:20px;margin-bottom:30px}#leftcol .box_head p +a{color:#0a2d4d;display:block;text-decoration:none;border-bottom:3px solid #fefefe;padding-top:20px;text-transform:lowercase;padding-bottom:20px;padding-left:5px;padding-right:5px}#leftcol .box_head p a:hover{background-color:#fafafa;border-bottom:3px solid #eee;color:#000}#leftcol .box_head +p{text-align:left;margin:0px;width:170px;padding-bottom:0px;padding-top:0px;font-size:11px}#rightcol{position:absolute;left:77%;top:278px;border:3px +solid #eee;width:200px;z-index:3;color:#333;padding:10px;text-transform:lowercase}#rightcol +p{padding:0px;marging:0px;text-align:justify}#rightcol #about img, #rightcol #linksbro +img{border:5px +solid #eee}#rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags +h3{background-color:#fafafa;border:1px +dotted #e0e0e0;font-size:14px;color:#104bbc;padding:5px;padding-top:10px;font-family:Arial;padding-bottom:10px}#rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p +a{color:#108eed}#rightcol #about p, #rightcol #r_news p, #rightcol #linksbro +p{font-size:12px;text-align:left}#content_warp{margin:20px +25% 0 215px;padding:3px;color:#000;background-color:#ededed}#content{margin:5px;background-color:#FFF;padding:10px}#footer{width:99%;margin-top:30px;height:98px;background-color:#101b1d}#footer td +a{color:#FF8000}#footer td a +img{border:2px +solid #108eed}#footer td +p{font-family:Verdana;font-size:10px;color:#c0c0c0;padding:0px;margin:0px;text-align:center;padding-bottom:10px}.s_offer{color:#65DA33;font-size:20px;font-weight:bold;font-style:normal}.post_box{text-transform:lowercase;margin-bottom:40px}#newsletter_box{text-transform:lowercase;margin-bottom:10px;margin-top:30px;font-style:normal;background-color:#fff;border:5px +solid #ddd}#newsletter_head{color:#EEE;font-family:Georgia;background-image:url('images/stripesbg.png');padding:10px;padding-left:30px;border-bottom:5px solid #ddd}#newsletter_body{color:#333;font-family:Verdana;text-align:justify;background-color:#FFF;padding:10px;font-size:13px}.s_offer{color:#65DA33;font-size:26px;font-weight:bold;font-style:normal}.post_title +a{color:#EEE;text-decoration:none}.post_title a:hover{color:#c0c0c0}.post_title{background-image:url('images/stripe_post.png');text-transform:uppercase;font-size:18px;font-family:georgia;padding:10px;border-top:4px solid #c0c0c0;margin:0px;border-bottom:2px solid #ffd}.post_det{text-transform:none;margin:0px;border-top:1px solid #f0f0f0;padding:0px;padding-top:5px;color:#999;font-size:10px;font-family:verdana;margin-bottom:20px;background-color:#eee;padding-bottom:5px;padding-left:10px;text-align:left;border-bottom:2px solid #ddd}.post_det +a{color:#999;text-decoration:none}.subtle{text-transform:lowercase;font-size:10px;font-family:verdana;color:#108eed;text-align:justify}#top_menu #navlist, #top_menu #navlist +li{padding:0px;margin:0px;padding-top:14px;text-transform:lowercase;padding-bottom:17px;padding-left:30px;border-left:1px solid #65cdef}#top_menu #navlist, #top_menu #navlist li +#first{border-left:0px}#top_menu +#navlist{padding-left:30px;background-color:#1dabd9;border-top:5px solid #0e96c3;border-bottom:5px solid #0e96c3}#top_menu #navlist +li{color:#444;font-size:10px;display:inline;list-style-type:none;padding-right:30px}#top_menu #navlist li +a{text-decoration:none;font-family:Verdana;color:#fafafa;font-size:12px;font-weight:bold}#top_menu #navlist li a:hover{color:#333}.post_content +a{color:#108eed}ul#tagcloud{padding:0;margin:0;text-align:center;list-style:none}ul#tagcloud +li{display:inline;font-size:70%;color:#ccc;background:none;padding:0}ul#tagcloud li a, ul#tagcloud li a:link{text-decoration:none}ul#tagcloud li a:hover{text-decoration:underline}ul#tagcloud li.t1 +a{color:#797979;font-size:120%}ul#tagcloud li.t2 +a{color:#6d6d6d;font-size:160%}ul#tagcloud li.t3 +a{color:#616161;font-size:190%}ul#tagcloud li.t4 +a{color:#555;font-size:210%}ul#tagcloud li.t5 +a{color:#484848;font-size:230%}ul#tagcloud li.t6 +a{color:#3c3c3c;font-size:250%}ul#tagcloud li.t7 +a{color:#303030;font-size:270%}ul#tagcloud li.t8 +a{color:#242424;font-size:290%}ul#tagcloud li.t9 +a{color:#181818;font-size:310%}ul#tagcloud li.t10 +a{color:#0c0c0c;font-size:330%} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css new file mode 100644 index 000000000..d749295b7 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css @@ -0,0 +1,14 @@ +@import "/_test_files/css_uriRewriter/foo.css"; +@import '/_test_files/css_uriRewriter/bar/foo.css' print; +@import '/_test_files/bar/foo.css' print; +@import '/foo.css' print; +@import '/css/foo.css'; /* abs, should not alter */ +@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ +@import url(/_test_files/foo.css) tv, projection; +@import url("/css/foo.css"); /* abs, should not alter */ +@import url(/css2/foo.css); /* abs, should not alter */ +@import url(data:image/gif;base64,AAAA); /* data, should not alter */ +foo {background:url('/_test_files/css_uriRewriter/bar/foo.png')} +foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ +foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ +foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css new file mode 100644 index 000000000..aa41d0a91 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css @@ -0,0 +1,14 @@ +@import "foo.css"; +@import 'bar/foo.css' print; +@import '../bar/foo.css' print; +@import '../../foo.css' print; +@import '/css/foo.css'; /* abs, should not alter */ +@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ +@import url(../foo.css) tv, projection; +@import url("/css/foo.css"); /* abs, should not alter */ +@import url(/css2/foo.css); /* abs, should not alter */ +@import url(data:image/gif;base64,AAAA); /* data, should not alter */ +foo {background:url('bar/foo.png')} +foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ +foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ +foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html new file mode 100644 index 000000000..c22cc8f20 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html @@ -0,0 +1,96 @@ + + + + + + + + + + + css Zen Garden: The Beauty in CSS Design + + + + + + + + + + + + +

Browser != IE

+
+ +
+	White  space  is  important   here!
+		
+
+

A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

+

Download the sample html file and css file

+
+ +
+ + \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html new file mode 100644 index 000000000..58ba2bb98 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html @@ -0,0 +1,36 @@ +css Zen Garden: The Beauty in CSS Design

Browser != IE

css Zen Garden

The Beauty of CSS Design

+	White  space  is  important   here!
+		

A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

Download the sample html file and css file

\ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html new file mode 100644 index 000000000..4ca7f199e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html @@ -0,0 +1,95 @@ + + + + + + + + + + + css Zen Garden: The Beauty in CSS Design + + + + + + + + + + + + +

Browser != IE

+
+ +
+	White  space  is  important   here!
+		
+
+

A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

+

Download the sample html file and css file

+
+ +Preserve at least 1 char of whitespace near scripts in case of document.write(). +
+ + \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html new file mode 100644 index 000000000..ae28465bc --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html @@ -0,0 +1,36 @@ +css Zen Garden: The Beauty in CSS Design

Browser != IE

css Zen Garden

The Beauty of CSS Design

+	White  space  is  important   here!
+		

A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

Download the sample html file and css file

Preserve at least 1 char of whitespace near scripts in case of document.write().
\ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css new file mode 100644 index 000000000..da52c6949 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css @@ -0,0 +1,3 @@ +/* @import url('bad.css' ) bad; */ +adjacent2 foo { background: red url(/red.gif); } +adjacent2 bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css new file mode 100644 index 000000000..69fa2f5ef --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css @@ -0,0 +1,4 @@ +@import url( adjacent.css ) all; +@import '../input.css'; +tv foo { background: red url(/red.gif); } +tv bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css new file mode 100644 index 000000000..b452f473e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css @@ -0,0 +1,4 @@ +@import url(../css/styles.css); +@import url(http://example.com/hello.css); +adjacent foo { background: red url(/red.gif); } +adjacent bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css new file mode 100644 index 000000000..bb7b95951 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css @@ -0,0 +1,4 @@ +@import url( adjacent.css ) screen; +@import "1/tv.css" tv, projection; +input foo { background: red url(/red.gif); } +input bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css new file mode 100644 index 000000000..1e4358c25 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css @@ -0,0 +1,48 @@ +@media screen { +/* some CSS to try to exercise things in general */ + +@import url(/more.css); + + body, td, th { + font-family: Verdana , "Bitstream Vera Sans" , sans-serif ; + + font-size : 12px; +} + +.nav { + margin-left: 20%; +} +#main-nav { + background-color: red; + border: 1px solid #00ff77; +} + +div#content +h1 + p { + padding-top: 0; + margin-top: 0; +} + +@media all and (min-width: 640px) { + #media-queries-1 { background-color: #0f0; } +} + +@media screen and (max-width: 2000px) { + #media-queries-2 { background-color: #0f0; } +} +@import url(http://example.com/hello.css); +adjacent foo { background: red url(/red.gif); } +adjacent bar { background: url('%TEST_FILES_URI%/green.gif') } +} + +@media tv,projection { +/* @import url('%TEST_FILES_URI%/importProcessor/1/bad.css') bad; */ +adjacent2 foo { background: red url(/red.gif); } +adjacent2 bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') } +@import '../input.css'; +tv foo { background: red url(/red.gif); } +tv bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') } +} + +input foo { background: red url(/red.gif); } +input bar { background: url('%TEST_FILES_URI%/green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js new file mode 100644 index 000000000..cccdb9706 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js @@ -0,0 +1,57 @@ +/*! is.js + + (c) 2001 Douglas Crockford + 2001 June 3 +*/ + +// is + +// The -is- object is used to identify the browser. Every browser edition +// identifies itself, but there is no standard way of doing it, and some of +// the identification is deceptive. This is because the authors of web +// browsers are liars. For example, Microsoft's IE browsers claim to be +// Mozilla 4. Netscape 6 claims to be version 5. + +var is = { + ie: navigator.appName == 'Microsoft Internet Explorer', + java: navigator.javaEnabled(), + ns: navigator.appName == 'Netscape', + ua: navigator.userAgent.toLowerCase(), + version: parseFloat(navigator.appVersion.substr(21)) || + parseFloat(navigator.appVersion), + win: navigator.platform == 'Win32' +} +/*!* + * preserve this comment, too + */ +is.mac = is.ua.indexOf('mac') >= 0; +if (is.ua.indexOf('opera') >= 0) { + is.ie = is.ns = false; + is.opera = true; +} +if (is.ua.indexOf('gecko') >= 0) { + is.ie = is.ns = false; + is.gecko = true; +} + +/*@cc_on + /*@if (@_win32) + if (is.ie && is.win) + document.write("PASS: IE/win honored conditional comment.
"); + @else @*/ + if (is.ie && is.win) + document.write("FAIL: IE/win did not honor multi-line conditional comment.
"); + else + document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
"); + /*@end +@*/ + +var recognizesCondComm = true; +//@cc_on/* +recognizesCondComm = false; +//@cc_on*/ + +if ((is.ie && is.win) == recognizesCondComm) + document.write("PASS: IE/win honored single-line conditional comment.
"); +else + document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
"); diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js new file mode 100644 index 000000000..6f06c6e6c --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js @@ -0,0 +1,22 @@ +/* is.js + + (c) 2001 Douglas Crockford + 2001 June 3 +*/ +var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} +/** + * preserve this comment, too + */ +is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} +if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on + /*@if (@_win32) + if (is.ie && is.win) + document.write("PASS: IE/win honored conditional comment.
"); + @else @*/if(is.ie&&is.win) +document.write("FAIL: IE/win did not honor multi-line conditional comment.
");else +document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
");/*@end +@*/var recognizesCondComm=true;//@cc_on/* +recognizesCondComm=false;//@cc_on*/ +if((is.ie&&is.win)==recognizesCondComm) +document.write("PASS: IE/win honored single-line conditional comment.
");else +document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
"); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js new file mode 100644 index 000000000..6f06c6e6c --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js @@ -0,0 +1,22 @@ +/* is.js + + (c) 2001 Douglas Crockford + 2001 June 3 +*/ +var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} +/** + * preserve this comment, too + */ +is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} +if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on + /*@if (@_win32) + if (is.ie && is.win) + document.write("PASS: IE/win honored conditional comment.
"); + @else @*/if(is.ie&&is.win) +document.write("FAIL: IE/win did not honor multi-line conditional comment.
");else +document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
");/*@end +@*/var recognizesCondComm=true;//@cc_on/* +recognizesCondComm=false;//@cc_on*/ +if((is.ie&&is.win)==recognizesCondComm) +document.write("PASS: IE/win honored single-line conditional comment.
");else +document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
"); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js new file mode 100644 index 000000000..28aa1268b --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js @@ -0,0 +1,14 @@ +var isWin; +/*@cc_on + @if (@_win32) + isWin = true; + @else @*/ isWin = false; + /*@end +@*/ + +isWin = /*@cc_on!*/!1; + +var recognizesCondComm = true; +//@cc_on/* +recognizesCondComm = false; +//@cc_on*/ diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js new file mode 100644 index 000000000..d8c1ed386 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js @@ -0,0 +1,13 @@ +var isWin; +/*@cc_on + @if (@_win32) + isWin = true; + @else @*/ + isWin = false; + /*@end +@*/ + +var recognizesCondComm = true; +//@cc_on/* +recognizesCondComm = false; +//@cc_on*/ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js new file mode 100644 index 000000000..e12eaeb48 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js @@ -0,0 +1,4 @@ + +function testIssue74() { + return /'/; +} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js new file mode 100644 index 000000000..3442a73fc --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js @@ -0,0 +1 @@ +function testIssue74(){return /'/;} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js new file mode 100644 index 000000000..9caaa899c --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js @@ -0,0 +1 @@ +function testIssue74(){return /'/} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js new file mode 100644 index 000000000..c5a333760 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js @@ -0,0 +1,3408 @@ +(function(){ +/*! + * jQuery 1.2.3 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ + * $Rev: 4663 $ + */ + +// Map over jQuery in case of overwrite +if ( window.jQuery ) + var _jQuery = window.jQuery; + +var jQuery = window.jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.prototype.init( selector, context ); +}; + +// Map over the $ in case of overwrite +if ( window.$ ) + var _$ = window.$; + +// Map the jQuery namespace to the '$' one +window.$ = jQuery; + +// A simple way to check for HTML strings or ID strings +// (both of which we optimize for) +var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; + +// Is it a simple selector +var isSimple = /^.[^:#\[\.]*$/; + +jQuery.fn = jQuery.prototype = { + init: function( selector, context ) { + // Make sure that a selection was provided + selector = selector || document; + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this[0] = selector; + this.length = 1; + return this; + + // Handle HTML strings + } else if ( typeof selector == "string" ) { + // Are we dealing with HTML string or an ID? + var match = quickExpr.exec( selector ); + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) + selector = jQuery.clean( [ match[1] ], context ); + + // HANDLE: $("#id") + else { + var elem = document.getElementById( match[3] ); + + // Make sure an element was located + if ( elem ) + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id != match[3] ) + return jQuery().find( selector ); + + // Otherwise, we inject the element directly into the jQuery object + else { + this[0] = elem; + this.length = 1; + return this; + } + + else + selector = []; + } + + // HANDLE: $(expr, [context]) + // (which is just equivalent to: $(content).find(expr) + } else + return new jQuery( context ).find( selector ); + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) + return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); + + return this.setArray( + // HANDLE: $(array) + selector.constructor == Array && selector || + + // HANDLE: $(arraylike) + // Watch for when an array-like object, contains DOM nodes, is passed in as the selector + (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || + + // HANDLE: $(*) + [ selector ] ); + }, + + // The current version of jQuery being used + jquery: "1.2.3", + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + // The number of elements contained in the matched element set + length: 0, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == undefined ? + + // Return a 'clean' array + jQuery.makeArray( this ) : + + // Return just the object + this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + // Build a new jQuery matched element set + var ret = jQuery( elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Force the current matched set of elements to become + // the specified array of elements (destroying the stack in the process) + // You should use pushStack() in order to do this, but maintain the stack + setArray: function( elems ) { + // Resetting the length to 0, then using the native Array push + // is a super-fast way to populate an object with array-like properties + this.length = 0; + Array.prototype.push.apply( this, elems ); + + return this; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + var ret = -1; + + // Locate the position of the desired element + this.each(function(i){ + if ( this == elem ) + ret = i; + }); + + return ret; + }, + + attr: function( name, value, type ) { + var options = name; + + // Look for the case where we're accessing a style value + if ( name.constructor == String ) + if ( value == undefined ) + return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined; + + else { + options = {}; + options[ name ] = value; + } + + // Check to see if we're setting style values + return this.each(function(i){ + // Set all the styles + for ( name in options ) + jQuery.attr( + type ? + this.style : + this, + name, jQuery.prop( this, options[ name ], type, i, name ) + ); + }); + }, + + css: function( key, value ) { + // ignore negative width and height values + if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) + value = undefined; + return this.attr( key, value, "curCSS" ); + }, + + text: function( text ) { + if ( typeof text != "object" && text != null ) + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + + var ret = ""; + + jQuery.each( text || this, function(){ + jQuery.each( this.childNodes, function(){ + if ( this.nodeType != 8 ) + ret += this.nodeType != 1 ? + this.nodeValue : + jQuery.fn.text( [ this ] ); + }); + }); + + return ret; + }, + + wrapAll: function( html ) { + if ( this[0] ) + // The elements to wrap the target around + jQuery( html, this[0].ownerDocument ) + .clone() + .insertBefore( this[0] ) + .map(function(){ + var elem = this; + + while ( elem.firstChild ) + elem = elem.firstChild; + + return elem; + }) + .append(this); + + return this; + }, + + wrapInner: function( html ) { + return this.each(function(){ + jQuery( this ).contents().wrapAll( html ); + }); + }, + + wrap: function( html ) { + return this.each(function(){ + jQuery( this ).wrapAll( html ); + }); + }, + + append: function() { + return this.domManip(arguments, true, false, function(elem){ + if (this.nodeType == 1) + this.appendChild( elem ); + }); + }, + + prepend: function() { + return this.domManip(arguments, true, true, function(elem){ + if (this.nodeType == 1) + this.insertBefore( elem, this.firstChild ); + }); + }, + + before: function() { + return this.domManip(arguments, false, false, function(elem){ + this.parentNode.insertBefore( elem, this ); + }); + }, + + after: function() { + return this.domManip(arguments, false, true, function(elem){ + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + }, + + end: function() { + return this.prevObject || jQuery( [] ); + }, + + find: function( selector ) { + var elems = jQuery.map(this, function(elem){ + return jQuery.find( selector, elem ); + }); + + return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? + jQuery.unique( elems ) : + elems ); + }, + + clone: function( events ) { + // Do the clone + var ret = this.map(function(){ + if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { + // IE copies events bound via attachEvent when + // using cloneNode. Calling detachEvent on the + // clone will also remove the events from the orignal + // In order to get around this, we use innerHTML. + // Unfortunately, this means some modifications to + // attributes in IE that are actually only stored + // as properties will not be copied (such as the + // the name attribute on an input). + var clone = this.cloneNode(true), + container = document.createElement("div"); + container.appendChild(clone); + return jQuery.clean([container.innerHTML])[0]; + } else + return this.cloneNode(true); + }); + + // Need to set the expando to null on the cloned set if it exists + // removeData doesn't work here, IE removes it from the original as well + // this is primarily for IE but the data expando shouldn't be copied over in any browser + var clone = ret.find("*").andSelf().each(function(){ + if ( this[ expando ] != undefined ) + this[ expando ] = null; + }); + + // Copy the events from the original to the clone + if ( events === true ) + this.find("*").andSelf().each(function(i){ + if (this.nodeType == 3) + return; + var events = jQuery.data( this, "events" ); + + for ( var type in events ) + for ( var handler in events[ type ] ) + jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); + }); + + // Return the cloned set + return ret; + }, + + filter: function( selector ) { + return this.pushStack( + jQuery.isFunction( selector ) && + jQuery.grep(this, function(elem, i){ + return selector.call( elem, i ); + }) || + + jQuery.multiFilter( selector, this ) ); + }, + + not: function( selector ) { + if ( selector.constructor == String ) + // test special case where just one selector is passed in + if ( isSimple.test( selector ) ) + return this.pushStack( jQuery.multiFilter( selector, this, true ) ); + else + selector = jQuery.multiFilter( selector, this ); + + var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; + return this.filter(function() { + return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; + }); + }, + + add: function( selector ) { + return !selector ? this : this.pushStack( jQuery.merge( + this.get(), + selector.constructor == String ? + jQuery( selector ).get() : + selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ? + selector : [selector] ) ); + }, + + is: function( selector ) { + return selector ? + jQuery.multiFilter( selector, this ).length > 0 : + false; + }, + + hasClass: function( selector ) { + return this.is( "." + selector ); + }, + + val: function( value ) { + if ( value == undefined ) { + + if ( this.length ) { + var elem = this[0]; + + // We need to handle select boxes special + if ( jQuery.nodeName( elem, "select" ) ) { + var index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type == "select-one"; + + // Nothing was selected + if ( index < 0 ) + return null; + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + if ( option.selected ) { + // Get the specifc value for the option + value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; + + // We don't need an array for one selects + if ( one ) + return value; + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + + // Everything else, we just grab the value + } else + return (this[0].value || "").replace(/\r/g, ""); + + } + + return undefined; + } + + return this.each(function(){ + if ( this.nodeType != 1 ) + return; + + if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) + this.checked = (jQuery.inArray(this.value, value) >= 0 || + jQuery.inArray(this.name, value) >= 0); + + else if ( jQuery.nodeName( this, "select" ) ) { + var values = value.constructor == Array ? + value : + [ value ]; + + jQuery( "option", this ).each(function(){ + this.selected = (jQuery.inArray( this.value, values ) >= 0 || + jQuery.inArray( this.text, values ) >= 0); + }); + + if ( !values.length ) + this.selectedIndex = -1; + + } else + this.value = value; + }); + }, + + html: function( value ) { + return value == undefined ? + (this.length ? + this[0].innerHTML : + null) : + this.empty().append( value ); + }, + + replaceWith: function( value ) { + return this.after( value ).remove(); + }, + + eq: function( i ) { + return this.slice( i, i + 1 ); + }, + + slice: function() { + return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function(elem, i){ + return callback.call( elem, i, elem ); + })); + }, + + andSelf: function() { + return this.add( this.prevObject ); + }, + + data: function( key, value ){ + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value == null ) { + var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + if ( data == undefined && this.length ) + data = jQuery.data( this[0], key ); + + return data == null && parts[1] ? + this.data( parts[0] ) : + data; + } else + return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ + jQuery.data( this, key, value ); + }); + }, + + removeData: function( key ){ + return this.each(function(){ + jQuery.removeData( this, key ); + }); + }, + + domManip: function( args, table, reverse, callback ) { + var clone = this.length > 1, elems; + + return this.each(function(){ + if ( !elems ) { + elems = jQuery.clean( args, this.ownerDocument ); + + if ( reverse ) + elems.reverse(); + } + + var obj = this; + + if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) + obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); + + var scripts = jQuery( [] ); + + jQuery.each(elems, function(){ + var elem = clone ? + jQuery( this ).clone( true )[0] : + this; + + // execute all scripts after the elements have been injected + if ( jQuery.nodeName( elem, "script" ) ) { + scripts = scripts.add( elem ); + } else { + // Remove any inner scripts for later evaluation + if ( elem.nodeType == 1 ) + scripts = scripts.add( jQuery( "script", elem ).remove() ); + + // Inject the elements into the document + callback.call( obj, elem ); + } + }); + + scripts.each( evalScript ); + }); + } +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.prototype.init.prototype = jQuery.prototype; + +function evalScript( i, elem ) { + if ( elem.src ) + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + + else + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + + if ( elem.parentNode ) + elem.parentNode.removeChild( elem ); +} + +jQuery.extend = jQuery.fn.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( target.constructor == Boolean ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target != "object" && typeof target != "function" ) + target = {}; + + // extend jQuery itself if only one argument is passed + if ( length == 1 ) { + target = this; + i = 0; + } + + for ( ; i < length; i++ ) + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) + // Extend the base object + for ( var name in options ) { + // Prevent never-ending loop + if ( target === options[ name ] ) + continue; + + // Recurse if we're merging object values + if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) + target[ name ] = jQuery.extend( target[ name ], options[ name ] ); + + // Don't bring in undefined values + else if ( options[ name ] != undefined ) + target[ name ] = options[ name ]; + + } + + // Return the modified object + return target; +}; + +var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {}; + +// exclude the following css properties to add px +var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; + +jQuery.extend({ + noConflict: function( deep ) { + window.$ = _$; + + if ( deep ) + window.jQuery = _jQuery; + + return jQuery; + }, + + // See test/unit/core.js for details concerning this function. + isFunction: function( fn ) { + return !!fn && typeof fn != "string" && !fn.nodeName && + fn.constructor != Array && /function/i.test( fn + "" ); + }, + + // check if an element is in a (or is an) XML document + isXMLDoc: function( elem ) { + return elem.documentElement && !elem.body || + elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; + }, + + // Evalulates a script in a global context + globalEval: function( data ) { + data = jQuery.trim( data ); + + if ( data ) { + // Inspired by code by Andrea Giammarchi + // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html + var head = document.getElementsByTagName("head")[0] || document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + if ( jQuery.browser.msie ) + script.text = data; + else + script.appendChild( document.createTextNode( data ) ); + + head.appendChild( script ); + head.removeChild( script ); + } + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); + }, + + cache: {}, + + data: function( elem, name, data ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // Compute a unique ID for the element + if ( !id ) + id = elem[ expando ] = ++uuid; + + // Only generate the data cache if we're + // trying to access or manipulate it + if ( name && !jQuery.cache[ id ] ) + jQuery.cache[ id ] = {}; + + // Prevent overriding the named cache with undefined values + if ( data != undefined ) + jQuery.cache[ id ][ name ] = data; + + // Return the named cache data, or the ID for the element + return name ? + jQuery.cache[ id ][ name ] : + id; + }, + + removeData: function( elem, name ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // If we want to remove a specific section of the element's data + if ( name ) { + if ( jQuery.cache[ id ] ) { + // Remove the section of cache data + delete jQuery.cache[ id ][ name ]; + + // If we've removed all the data, remove the element's cache + name = ""; + + for ( name in jQuery.cache[ id ] ) + break; + + if ( !name ) + jQuery.removeData( elem ); + } + + // Otherwise, we want to remove all of the element's data + } else { + // Clean up the element expando + try { + delete elem[ expando ]; + } catch(e){ + // IE has trouble directly removing the expando + // but it's ok with using removeAttribute + if ( elem.removeAttribute ) + elem.removeAttribute( expando ); + } + + // Completely remove the data cache + delete jQuery.cache[ id ]; + } + }, + + // args is for internal usage only + each: function( object, callback, args ) { + if ( args ) { + if ( object.length == undefined ) { + for ( var name in object ) + if ( callback.apply( object[ name ], args ) === false ) + break; + } else + for ( var i = 0, length = object.length; i < length; i++ ) + if ( callback.apply( object[ i ], args ) === false ) + break; + + // A special, fast, case for the most common use of each + } else { + if ( object.length == undefined ) { + for ( var name in object ) + if ( callback.call( object[ name ], name, object[ name ] ) === false ) + break; + } else + for ( var i = 0, length = object.length, value = object[0]; + i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} + } + + return object; + }, + + prop: function( elem, value, type, i, name ) { + // Handle executable functions + if ( jQuery.isFunction( value ) ) + value = value.call( elem, i ); + + // Handle passing in a number to a CSS property + return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? + value + "px" : + value; + }, + + className: { + // internal only, use addClass("class") + add: function( elem, classNames ) { + jQuery.each((classNames || "").split(/\s+/), function(i, className){ + if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) + elem.className += (elem.className ? " " : "") + className; + }); + }, + + // internal only, use removeClass("class") + remove: function( elem, classNames ) { + if (elem.nodeType == 1) + elem.className = classNames != undefined ? + jQuery.grep(elem.className.split(/\s+/), function(className){ + return !jQuery.className.has( classNames, className ); + }).join(" ") : + ""; + }, + + // internal only, use is(".class") + has: function( elem, className ) { + return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; + } + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var old = {}; + // Remember the old values, and insert the new ones + for ( var name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + callback.call( elem ); + + // Revert the old values + for ( var name in options ) + elem.style[ name ] = old[ name ]; + }, + + css: function( elem, name, force ) { + if ( name == "width" || name == "height" ) { + var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; + + function getWH() { + val = name == "width" ? elem.offsetWidth : elem.offsetHeight; + var padding = 0, border = 0; + jQuery.each( which, function() { + padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; + border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; + }); + val -= Math.round(padding + border); + } + + if ( jQuery(elem).is(":visible") ) + getWH(); + else + jQuery.swap( elem, props, getWH ); + + return Math.max(0, val); + } + + return jQuery.curCSS( elem, name, force ); + }, + + curCSS: function( elem, name, force ) { + var ret; + + // A helper method for determining if an element's values are broken + function color( elem ) { + if ( !jQuery.browser.safari ) + return false; + + var ret = document.defaultView.getComputedStyle( elem, null ); + return !ret || ret.getPropertyValue("color") == ""; + } + + // We need to handle opacity special in IE + if ( name == "opacity" && jQuery.browser.msie ) { + ret = jQuery.attr( elem.style, "opacity" ); + + return ret == "" ? + "1" : + ret; + } + // Opera sometimes will give the wrong display answer, this fixes it, see #2037 + if ( jQuery.browser.opera && name == "display" ) { + var save = elem.style.outline; + elem.style.outline = "0 solid black"; + elem.style.outline = save; + } + + // Make sure we're using the right name for getting the float value + if ( name.match( /float/i ) ) + name = styleFloat; + + if ( !force && elem.style && elem.style[ name ] ) + ret = elem.style[ name ]; + + else if ( document.defaultView && document.defaultView.getComputedStyle ) { + + // Only "float" is needed here + if ( name.match( /float/i ) ) + name = "float"; + + name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); + + var getComputedStyle = document.defaultView.getComputedStyle( elem, null ); + + if ( getComputedStyle && !color( elem ) ) + ret = getComputedStyle.getPropertyValue( name ); + + // If the element isn't reporting its values properly in Safari + // then some display: none elements are involved + else { + var swap = [], stack = []; + + // Locate all of the parent display: none elements + for ( var a = elem; a && color(a); a = a.parentNode ) + stack.unshift(a); + + // Go through and make them visible, but in reverse + // (It would be better if we knew the exact display type that they had) + for ( var i = 0; i < stack.length; i++ ) + if ( color( stack[ i ] ) ) { + swap[ i ] = stack[ i ].style.display; + stack[ i ].style.display = "block"; + } + + // Since we flip the display style, we have to handle that + // one special, otherwise get the value + ret = name == "display" && swap[ stack.length - 1 ] != null ? + "none" : + ( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || ""; + + // Finally, revert the display styles back + for ( var i = 0; i < swap.length; i++ ) + if ( swap[ i ] != null ) + stack[ i ].style.display = swap[ i ]; + } + + // We should always get a number back from opacity + if ( name == "opacity" && ret == "" ) + ret = "1"; + + } else if ( elem.currentStyle ) { + var camelCase = name.replace(/\-(\w)/g, function(all, letter){ + return letter.toUpperCase(); + }); + + ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { + // Remember the original values + var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + elem.runtimeStyle.left = elem.currentStyle.left; + elem.style.left = ret || 0; + ret = elem.style.pixelLeft + "px"; + + // Revert the changed values + elem.style.left = style; + elem.runtimeStyle.left = runtimeStyle; + } + } + + return ret; + }, + + clean: function( elems, context ) { + var ret = []; + context = context || document; + // !context.createElement fails in IE with an error but returns typeof 'object' + if (typeof context.createElement == 'undefined') + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + + jQuery.each(elems, function(i, elem){ + if ( !elem ) + return; + + if ( elem.constructor == Number ) + elem = elem.toString(); + + // Convert html string into DOM nodes + if ( typeof elem == "string" ) { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ + return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? + all : + front + ">"; + }); + + // Trim whitespace, otherwise indexOf won't work as expected + var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); + + var wrap = + // option or optgroup + !tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && + [ 1, "", "
" ] || + + !tags.indexOf("", "" ] || + + // matched above + (!tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + // IE can't serialize and \ No newline at end of file -- cgit v1.2.3-54-g00ecf