
function StyleSheet() {
	
}

Class(StyleSheet);

StyleSheet.prototype.owner = new Object();
StyleSheet.prototype.userAgent = new UADetector();

StyleSheet.intialize = function (target) {
	
	target.styleSheet = new StyleSheet();
	target.styleSheet.owner = target;
	
}

StyleSheet.prototype.getStyle = function (name, displayUnit) {
	
	var value = new String();
	
	if (window.getComputedStyle) {
		value = document.defaultView.getComputedStyle(this.owner, null).getPropertyValue(this.formatStyleName(name));
	} else {
		value = this.owner.currentStyle[this.formatStyleName(name)];
	}
	
	return (displayUnit) ? value : this.convertUnit(value);
	
}

/**
* Turns js formatted styles into css formatted or vice versa
*/
StyleSheet.prototype.formatStyleName = function (name, format) {
	
	var result = name;
	var format = (format == undefined) ? "js" : format;
	var pattern;
	var matches = new Array();
	
	if (window.getComputedStyle || format == "css") {
		
		pattern = new RegExp(/[A-Z]/g);
		matches = name.match(pattern);
		if (matches == null) return result;
		
		for (var items = 0; items < matches.length; items++) {
			result = name.replace(matches[items], "-" + matches[items].toLowerCase());
		}
		
	} else if (this.userAgent.isIEStrict() || format == "js") {
		
		pattern = new RegExp(/[-]+\w/g);
		matches = name.match(pattern);
		if (matches == null) return result;
		
		for (var items = 0; items < matches.length; items++) {
			result = name.replace(matches[items], matches[items].substring(1, 2).toUpperCase());
		}
		
	}
	
	return result;
	
}

StyleSheet.prototype.convertUnit = function (value, type) {
	
	var result = 0;
	var findUnit = new RegExp(/[emptx%]/gi);
	var styleUnit = value.match(findUnit).join("");
	var styleValue = value.replace(findUnit, "");
	
	result = Number(styleValue);
	
	
	return styleValue;
	
}
