case 'first': temp += '[1]'; break; case 'last': temp += '[last()]'; break; 
case 'first': temp += '[count(preceding-sibling::*) = 0]'; break; case 'last': temp += '[count(following-sibling::*) = 0]'; break; 
	getParam: function(items, separator, context, tag, id, className, attribute, pseudo){		var temp = context.namespaceURI ? 'xhtml:' : '';		switch(separator){			case '~': case '+': temp += '/following-sibling::'; break;			case '>': temp += '/'; break;			case ' ': temp += '//';		}		temp += tag;		if (separator == '+') temp += '[1]';		if (pseudo){			pseudo = DOM.parsePseudo(pseudo);			switch(pseudo.name){				case 'nth':					var nth = (pseudo.param[1]) ? 'mod ' + pseudo.param[0] + ' = ' + pseudo.param[2] : '= ' + pseudo.param[0];					temp += '[count(preceding-sibling::*) ' + nth + ']';					break;				case 'first': temp += '[1]'; break;				case 'last': temp += '[last()]'; break;				case 'empty': temp += '[not(node())]'; break;				case 'only': temp += '[not(preceding-sibling::* or following-sibling::*)]'; break;				case 'contains': temp += '[contains(text(), "' + pseudo.param + '")]'; break;				case 'enabled': temp += '[not(@disabled)]'; break;				default:					temp += '[@' + pseudo.name;					temp += (pseudo.param) ? '="' + pseudo.param + '"]' : ']';			}		}		if (id) temp += '[@id="' + id + '"]';		if (className) temp += '[contains(concat(" ", @class, " "), " ' + className + ' ")]';		if (attribute){			attribute = attribute.match(DOM.aRegExp);			if (!attribute) throw new Error('bad attribute selector');			if (attribute[2] && attribute[3]){				switch(attribute[2]){					case '=': temp += '[@' + attribute[1] + '="' + attribute[3] + '"]'; break;					case '*=': temp += '[contains(@' + attribute[1] + ', "' + attribute[3] + '")]'; break;					case '^=': temp += '[starts-with(@' + attribute[1] + ', "' + attribute[3] + '")]'; break;					case '$=': temp += '[substring(@' + attribute[1] + ', string-length(@' + attribute[1] + ') - ' + attribute[3].length + ' + 1) = "' + attribute[3] + '"]'; break;					case '!=': temp += '[@' + attribute[1] + '!="' + attribute[3] + '"]'; break;					case '~=': temp += '[contains(concat(" ", @' + attribute[1] + ', " "), " ' + attribute[3] + ' ")]';				}			} else {				temp += '[@' + attribute[1] + ']';			}		}		items.push(temp);		return items;	},
6991	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/6991/988bb78cba2837a88037106623d9833209e2abbc/Element.Selectors.js/buggy/Element/Element.Selectors.js