/*
** Darkthread's Tools for jQuery ver 1.0 **
by Jeffrey, 2010-02-25, http://blog2.darkthread.net
=======================================================
checkStyle: to check if specific style selector is defined
addStyles: add <style type="text/css"> dynamically
addDefaultStyles: if specific style selector isn't defined, add style setting
*/
jQuery.extend(jQuery, { Darkthread: {} });
jQuery.extend(jQuery.Darkthread, {
tools: {
//ruleSelector sample: a:hover, .myClass, #someId
checkStyle:
function(ruleSelector) {
//REF: http://www.javascriptkit.com/dhtmltutors/externalcss3.shtml
var cssCol = document.styleSheets;
ruleSelector = ruleSelector.toLowerCase();
for (var i = 0; i < cssCol.length; i++) {
var rules = cssCol[i].cssRules || cssCol[i].rules;
for (j = 0; j < rules.length; j++)
if (rules[j].selectorText.toLowerCase() == ruleSelector)
return true;
}
return false;
},
/*styleDictionary sample:
{
"a:hover": { "background-color": "red", "color":"yellow" },
"#dvTest": { "border", "solid blue 1px" }
}
Note: it's for <style> declaration, not for jQuery.css, so don't use
backgourndColor instead of "background-color"
*/
addStyles:
function(styleDictionary) {
var sb = [];
for (var selector in styleDictionary) {
sb.push(selector + " {");
var props = styleDictionary[selector];
for (var p in props) {
sb.push(p + ":" + props[p] + ";");
}
sb.push("}");
}
$("head").append("<style type=\"text/css\">\n" +
sb.join("\n") + "\n</style>");
},
addDefaultStyles:
function(ruleSelector, styleDictionary) {
if (!$.Darkthread.tools.checkStyle(ruleSelector))
$.Darkthread.tools.addStyles(styleDictionary);
}
}
});