﻿Type.registerNamespace("Nws.UI");

Nws.UI.Utility = function() {
	throw Error.notImplemented();
}
Nws.UI.Utility.registerClass("Nws.UI.Utility");
Nws.UI.Utility.getDocumentBounds = function() {
	var width = 0;
	var height = 0;
	switch(Sys.Browser.agent) {
		case Sys.Browser.Opera:
			width = document.documentElement.scrollWidth;
			height = document.documentElement.scrollHeight;
			break;
		default:
			if(document.documentElement && (typeof(document.documentElement.scrollWidth) != "undefined")) {
				width = document.documentElement.scrollWidth;
				height = document.documentElement.scrollHeight;
				break;
			}
			width = document.body.scrollWidth;
			height = document.body.scrollHeight;
			break;
	}
	return new Sys.UI.Bounds(0, 0, width, height);
}
Nws.UI.Utility.getScrollLocation = function() {
	var x = 0;
	var y = 0;
	switch(Sys.Browser.agent) {
		case Sys.Browser.Opera:
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
			break;
		case Sys.Browser.Safari:
			x = window.pageXOffset;
			y = window.pageYOffset;
			break;
		default:
			if(document.documentElement && (typeof(document.documentElement.scrollLeft) != "undefined")) {
				x = document.documentElement.scrollLeft;
				y = document.documentElement.scrollTop;
				break;
			}
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
			break;
	}
	return new Sys.UI.Point(x, y);
}
Nws.UI.Utility.getStyle = $getStyle = function(element, name) {
	if(!element)
		return null;
	switch(name) {
		case "opacity":
			if(element.filters && (element.filters.length != 0)) {
				var alpha = element.filters["DXImageTransform.Microsoft.Alpha"];
				if(alpha)
					return alpha.opacity / 100;
			}
			break;
		case "cssFloat":
		case "float":
		case "styleFloat":
			name = (typeof(element.style.styleFloat) !== "undefined") ? "styleFloat" : "cssFloat";
			break;
	}
	var value = element.style[name];
	if(!value) {
		if(element.currentStyle)
			value = element.currentStyle[name];
		else if(document.defaultView && document.defaultView.getComputedStyle) {
			var style = document.defaultView.getComputedStyle(element, null);
			if(style)
				value = style[name];
		}
	}
	return value;
}
Nws.UI.Utility.getViewportBounds = function() {
	var width = 0;
	var height = 0;
	switch(Sys.Browser.agent) {
		case Sys.Browser.InternetExplorer:
			width = document.documentElement.clientWidth;
			height = document.documentElement.clientHeight;
			break;
		case Sys.Browser.Opera:
			width = Math.min(window.innerWidth, document.body.clientWidth);
			height = Math.min(window.innerHeight, document.body.clientHeight);
			break;
		case Sys.Browser.Safari:
			width = window.innerWidth;
			height = window.innerHeight;
			break;
		default:
			width = Math.min(window.innerWidth, document.documentElement.clientWidth);
			height = Math.min(window.innerHeight, document.documentElement.clientHeight);
			break;
	}
	var location = Nws.UI.Utility.getScrollLocation();
	return new Sys.UI.Bounds(location.x, location.y, width, height);
}
Nws.UI.Utility.setStyle = $setStyle = function(element, name, value) {
	if(!element)
		return;
	switch(name) {
		case "opacity":
			if(element.filters) {
				if(element.filters.length != 0) {
					var alpha = element.filters["DXImageTransform.Microsoft.Alpha"];
					if(alpha) {
						alpha.opacity = parseFloat(value) * 100;
						return;
					}
				}
				element.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + parseFloat(value) * 100 + ")";
				return;
			}
			break;
		case "cssFloat":
		case "float":
		case "styleFloat":
			name = (typeof(element.style.styleFloat) !== "undefined") ? "styleFloat" : "cssFloat";
			break;
	}
	element.style[name] = value;
}
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();