-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add in some files i didn't have added r616
git-svn-id: http://svn.php.net/repository/pear/packages/HTML_AJAX/trunk@259274 c90b9560-bf6c-de11-be94-00142212c4b1
- Loading branch information
Joshua Eichorn
committed
May 7, 2008
1 parent
21e5a04
commit bbabc28
Showing
10 changed files
with
1,657 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
/* | ||
cssQuery, version 2.0.2 (2005-08-19) | ||
Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/) | ||
License: http://creativecommons.org/licenses/LGPL/2.1/ | ||
*/ | ||
|
||
cssQuery.addModule("css-level2", function() { | ||
|
||
// ----------------------------------------------------------------------- | ||
// selectors | ||
// ----------------------------------------------------------------------- | ||
|
||
// child selector | ||
selectors[">"] = function($results, $from, $tagName, $namespace) { | ||
var $element, i, j; | ||
for (i = 0; i < $from.length; i++) { | ||
var $subset = childElements($from[i]); | ||
for (j = 0; ($element = $subset[j]); j++) | ||
if (compareTagName($element, $tagName, $namespace)) | ||
$results.push($element); | ||
} | ||
}; | ||
|
||
// sibling selector | ||
selectors["+"] = function($results, $from, $tagName, $namespace) { | ||
for (var i = 0; i < $from.length; i++) { | ||
var $element = nextElementSibling($from[i]); | ||
if ($element && compareTagName($element, $tagName, $namespace)) | ||
$results.push($element); | ||
} | ||
}; | ||
|
||
// attribute selector | ||
selectors["@"] = function($results, $from, $attributeSelectorID) { | ||
var $test = attributeSelectors[$attributeSelectorID].test; | ||
var $element, i; | ||
for (i = 0; ($element = $from[i]); i++) | ||
if ($test($element)) $results.push($element); | ||
}; | ||
|
||
// ----------------------------------------------------------------------- | ||
// pseudo-classes | ||
// ----------------------------------------------------------------------- | ||
|
||
pseudoClasses["first-child"] = function($element) { | ||
return !previousElementSibling($element); | ||
}; | ||
|
||
pseudoClasses["lang"] = function($element, $code) { | ||
$code = new RegExp("^" + $code, "i"); | ||
while ($element && !$element.getAttribute("lang")) $element = $element.parentNode; | ||
return $element && $code.test($element.getAttribute("lang")); | ||
}; | ||
|
||
// ----------------------------------------------------------------------- | ||
// attribute selectors | ||
// ----------------------------------------------------------------------- | ||
|
||
// constants | ||
AttributeSelector.NS_IE = /\\:/g; | ||
AttributeSelector.PREFIX = "@"; | ||
// properties | ||
AttributeSelector.tests = {}; | ||
// methods | ||
AttributeSelector.replace = function($match, $attribute, $namespace, $compare, $value) { | ||
var $key = this.PREFIX + $match; | ||
if (!attributeSelectors[$key]) { | ||
$attribute = this.create($attribute, $compare || "", $value || ""); | ||
// store the selector | ||
attributeSelectors[$key] = $attribute; | ||
attributeSelectors.push($attribute); | ||
} | ||
return attributeSelectors[$key].id; | ||
}; | ||
AttributeSelector.parse = function($selector) { | ||
$selector = $selector.replace(this.NS_IE, "|"); | ||
var $match; | ||
while ($match = $selector.match(this.match)) { | ||
var $replace = this.replace($match[0], $match[1], $match[2], $match[3], $match[4]); | ||
$selector = $selector.replace(this.match, $replace); | ||
} | ||
return $selector; | ||
}; | ||
AttributeSelector.create = function($propertyName, $test, $value) { | ||
var $attributeSelector = {}; | ||
$attributeSelector.id = this.PREFIX + attributeSelectors.length; | ||
$attributeSelector.name = $propertyName; | ||
$test = this.tests[$test]; | ||
$test = $test ? $test(this.getAttribute($propertyName), getText($value)) : false; | ||
$attributeSelector.test = new Function("e", "return " + $test); | ||
return $attributeSelector; | ||
}; | ||
AttributeSelector.getAttribute = function($name) { | ||
switch ($name.toLowerCase()) { | ||
case "id": | ||
return "e.id"; | ||
case "class": | ||
return "e.className"; | ||
case "for": | ||
return "e.htmlFor"; | ||
case "href": | ||
if (isMSIE) { | ||
// IE always returns the full path not the fragment in the href attribute | ||
// so we RegExp it out of outerHTML. Opera does the same thing but there | ||
// is no way to get the original attribute. | ||
return "String((e.outerHTML.match(/href=\\x22?([^\\s\\x22]*)\\x22?/)||[])[1]||'')"; | ||
} | ||
} | ||
return "e.getAttribute('" + $name.replace($NAMESPACE, ":") + "')"; | ||
}; | ||
|
||
// ----------------------------------------------------------------------- | ||
// attribute selector tests | ||
// ----------------------------------------------------------------------- | ||
|
||
AttributeSelector.tests[""] = function($attribute) { | ||
return $attribute; | ||
}; | ||
|
||
AttributeSelector.tests["="] = function($attribute, $value) { | ||
return $attribute + "==" + Quote.add($value); | ||
}; | ||
|
||
AttributeSelector.tests["~="] = function($attribute, $value) { | ||
return "/(^| )" + regEscape($value) + "( |$)/.test(" + $attribute + ")"; | ||
}; | ||
|
||
AttributeSelector.tests["|="] = function($attribute, $value) { | ||
return "/^" + regEscape($value) + "(-|$)/.test(" + $attribute + ")"; | ||
}; | ||
|
||
// ----------------------------------------------------------------------- | ||
// parsing | ||
// ----------------------------------------------------------------------- | ||
|
||
// override parseSelector to parse out attribute selectors | ||
var _parseSelector = parseSelector; | ||
parseSelector = function($selector) { | ||
return _parseSelector(AttributeSelector.parse($selector)); | ||
}; | ||
|
||
}); // addModule |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
/* | ||
cssQuery, version 2.0.2 (2005-08-19) | ||
Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/) | ||
License: http://creativecommons.org/licenses/LGPL/2.1/ | ||
*/ | ||
|
||
/* Thanks to Bill Edney */ | ||
|
||
cssQuery.addModule("css-level3", function() { | ||
|
||
// ----------------------------------------------------------------------- | ||
// selectors | ||
// ----------------------------------------------------------------------- | ||
|
||
// indirect sibling selector | ||
selectors["~"] = function($results, $from, $tagName, $namespace) { | ||
var $element, i; | ||
for (i = 0; ($element = $from[i]); i++) { | ||
while ($element = nextElementSibling($element)) { | ||
if (compareTagName($element, $tagName, $namespace)) | ||
$results.push($element); | ||
} | ||
} | ||
}; | ||
|
||
// ----------------------------------------------------------------------- | ||
// pseudo-classes | ||
// ----------------------------------------------------------------------- | ||
|
||
// I'm hoping these pseudo-classes are pretty readable. Let me know if | ||
// any need explanation. | ||
|
||
pseudoClasses["contains"] = function($element, $text) { | ||
$text = new RegExp(regEscape(getText($text))); | ||
return $text.test(getTextContent($element)); | ||
}; | ||
|
||
pseudoClasses["root"] = function($element) { | ||
return $element == getDocument($element).documentElement; | ||
}; | ||
|
||
pseudoClasses["empty"] = function($element) { | ||
var $node, i; | ||
for (i = 0; ($node = $element.childNodes[i]); i++) { | ||
if (thisElement($node) || $node.nodeType == 3) return false; | ||
} | ||
return true; | ||
}; | ||
|
||
pseudoClasses["last-child"] = function($element) { | ||
return !nextElementSibling($element); | ||
}; | ||
|
||
pseudoClasses["only-child"] = function($element) { | ||
$element = $element.parentNode; | ||
return firstElementChild($element) == lastElementChild($element); | ||
}; | ||
|
||
pseudoClasses["not"] = function($element, $selector) { | ||
var $negated = cssQuery($selector, getDocument($element)); | ||
for (var i = 0; i < $negated.length; i++) { | ||
if ($negated[i] == $element) return false; | ||
} | ||
return true; | ||
}; | ||
|
||
pseudoClasses["nth-child"] = function($element, $arguments) { | ||
return nthChild($element, $arguments, previousElementSibling); | ||
}; | ||
|
||
pseudoClasses["nth-last-child"] = function($element, $arguments) { | ||
return nthChild($element, $arguments, nextElementSibling); | ||
}; | ||
|
||
pseudoClasses["target"] = function($element) { | ||
return $element.id == location.hash.slice(1); | ||
}; | ||
|
||
// UI element states | ||
|
||
pseudoClasses["checked"] = function($element) { | ||
return $element.checked; | ||
}; | ||
|
||
pseudoClasses["enabled"] = function($element) { | ||
return $element.disabled === false; | ||
}; | ||
|
||
pseudoClasses["disabled"] = function($element) { | ||
return $element.disabled; | ||
}; | ||
|
||
pseudoClasses["indeterminate"] = function($element) { | ||
return $element.indeterminate; | ||
}; | ||
|
||
// ----------------------------------------------------------------------- | ||
// attribute selector tests | ||
// ----------------------------------------------------------------------- | ||
|
||
AttributeSelector.tests["^="] = function($attribute, $value) { | ||
return "/^" + regEscape($value) + "/.test(" + $attribute + ")"; | ||
}; | ||
|
||
AttributeSelector.tests["$="] = function($attribute, $value) { | ||
return "/" + regEscape($value) + "$/.test(" + $attribute + ")"; | ||
}; | ||
|
||
AttributeSelector.tests["*="] = function($attribute, $value) { | ||
return "/" + regEscape($value) + "/.test(" + $attribute + ")"; | ||
}; | ||
|
||
// ----------------------------------------------------------------------- | ||
// nth child support (Bill Edney) | ||
// ----------------------------------------------------------------------- | ||
|
||
function nthChild($element, $arguments, $traverse) { | ||
switch ($arguments) { | ||
case "n": return true; | ||
case "even": $arguments = "2n"; break; | ||
case "odd": $arguments = "2n+1"; | ||
} | ||
|
||
var $$children = childElements($element.parentNode); | ||
function _checkIndex($index) { | ||
var $index = ($traverse == nextElementSibling) ? $$children.length - $index : $index - 1; | ||
return $$children[$index] == $element; | ||
}; | ||
|
||
// it was just a number (no "n") | ||
if (!isNaN($arguments)) return _checkIndex($arguments); | ||
|
||
$arguments = $arguments.split("n"); | ||
var $multiplier = parseInt($arguments[0]); | ||
var $step = parseInt($arguments[1]); | ||
|
||
if ((isNaN($multiplier) || $multiplier == 1) && $step == 0) return true; | ||
if ($multiplier == 0 && !isNaN($step)) return _checkIndex($step); | ||
if (isNaN($step)) $step = 0; | ||
|
||
var $count = 1; | ||
while ($element = $traverse($element)) $count++; | ||
|
||
if (isNaN($multiplier) || $multiplier == 1) | ||
return ($traverse == nextElementSibling) ? ($count <= $step) : ($step >= $count); | ||
|
||
return ($count % $multiplier) == $step; | ||
}; | ||
|
||
}); // addModule |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
/* | ||
cssQuery, version 2.0.2 (2005-08-19) | ||
Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/) | ||
License: http://creativecommons.org/licenses/LGPL/2.1/ | ||
*/ | ||
|
||
cssQuery.addModule("css-standard", function() { // override IE optimisation | ||
|
||
// cssQuery was originally written as the CSS engine for IE7. It is | ||
// optimised (in terms of size not speed) for IE so this module is | ||
// provided separately to provide cross-browser support. | ||
|
||
// ----------------------------------------------------------------------- | ||
// browser compatibility | ||
// ----------------------------------------------------------------------- | ||
|
||
// sniff for Win32 Explorer | ||
isMSIE = eval("false;/*@cc_on@if(@\x5fwin32)isMSIE=true@end@*/"); | ||
|
||
if (!isMSIE) { | ||
getElementsByTagName = function($element, $tagName, $namespace) { | ||
return $namespace ? $element.getElementsByTagNameNS("*", $tagName) : | ||
$element.getElementsByTagName($tagName); | ||
}; | ||
|
||
compareNamespace = function($element, $namespace) { | ||
return !$namespace || ($namespace == "*") || ($element.prefix == $namespace); | ||
}; | ||
|
||
isXML = document.contentType ? function($element) { | ||
return /xml/i.test(getDocument($element).contentType); | ||
} : function($element) { | ||
return getDocument($element).documentElement.tagName != "HTML"; | ||
}; | ||
|
||
getTextContent = function($element) { | ||
// mozilla || opera || other | ||
return $element.textContent || $element.innerText || _getTextContent($element); | ||
}; | ||
|
||
function _getTextContent($element) { | ||
var $textContent = "", $node, i; | ||
for (i = 0; ($node = $element.childNodes[i]); i++) { | ||
switch ($node.nodeType) { | ||
case 11: // document fragment | ||
case 1: $textContent += _getTextContent($node); break; | ||
case 3: $textContent += $node.nodeValue; break; | ||
} | ||
} | ||
return $textContent; | ||
}; | ||
} | ||
}); // addModule |
Oops, something went wrong.