loads[loads.length] = 'parseStylesheets()';

var currentSheet, doc = window.document;
var sheetRules = false;
var originalSheet = false;

function parseStylesheets() {
	if (is_IE6()) {
		var sheets = doc.styleSheets;

		if (originalSheet == false) {
			originalSheet = sheets[0].rules.length;
		} else {
			for (var j = sheets[0].rules.length-1; j > originalSheet; j--) {
				sheets[0].removeRule(j);
			}
		}
		parseStylesheet(sheets[0]);
	}
}
function parseStylesheet(sheet) {
	var l;
	sheetRules = (currentSheet = sheet).rules;
	l = sheetRules.length;
	for(var j=0; j<l; j++) parseCSSRule(sheetRules[j], j);
}

function parseCSSRule(rule, ind) {
	var select = rule.selectorText, style = rule.style.cssText;
	if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):hover/i).test(select)) return;

	var newSelect = select.replace(/(\.([a-z0-9_-]+):hover)|(:hover)/g, '.$2onHover');
	var hasClass = (/(\.([a-z0-9_-]+):hover)/g).exec(select);
	var className = (hasClass? hasClass[2]:'') + 'onHover';
	var affected = select.replace(/:hover.*$/g, '');
	var elements = getElementsBySelect(affected);
	currentSheet.addRule(newSelect, style);
	for(var i=0; i<elements.length; i++)
		new HoverElement(elements[i], className);
}

function HoverElement(node, className) {
	if(!node.hovers) node.hovers = {};
	if(node.hovers[className]) return;
	node.hovers[className] = true;
	node.attachEvent('onmouseover',
		function() { node.className += ' ' + className; });
	node.attachEvent('onmouseout',
		function() { node.className =
			node.className.replace((new RegExp('\\s+'+className)),''); });
}

function getElementsBySelect(rule) {
	var parts, nodes = [doc];
	parts = rule.split(' ');
	for(var i=0; i<parts.length; i++) {
		nodes = getSelectedNodes(parts[i], nodes);
	}	return nodes;
}

function getSelectedNodes(select, elements) {
	var result, node, nodes = [];
	var classname = (/\.([a-z0-9_-]+)/i).exec(select);
	var identify = (/\#([a-z0-9_-]+)/i).exec(select);
	var tagName = (/^[a-z0-9]+/i).exec(select.toUpperCase()) || '*';
	for(var i=0; i<elements.length; i++) {
		result = elements[i].getElementsByTagName(tagName);
		for(var j=0; j<result.length; j++) {
			node = result[j];
			if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' +
				classname[1] + '\\b').exec(node.className)))) continue;
			nodes[nodes.length] = node;
		}
	}	return nodes;
}

function is_IE6(){
	var browser=navigator.appName;
	var b_version=navigator.appVersion;
	if (browser == "Microsoft Internet Explorer" && b_version.indexOf('MSIE 6') != -1){
		return true;
	} else {
		return false;
	}

}
