﻿function $() {
  var elements = new Array();

  for (var i = 0, len = arguments.length; i < len; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}

var HtmlDOM = {
	getElementsByClassName: function(classname) {
		var result = new Array();
		var elements = document.body.getElementsByTagName('*');
		var rxClassname = new RegExp("(^|\\s)" + classname + "(\\s|$)");
		for (var i = 0, len = elements.length; i < len; i++) {
			if (elements[i].className.match(rxClassname)) {
				result.push(elements[i]);
			}
		}
		return result;
	},
	
	setStyle: function(ele, property, value) {
		switch (property) {
			case "opacity":
				if (ele.filters) { // IE
	               ele.style.filter = "alpha(opacity=" + value * 100 + ")";
				} else {
					ele.style.opacity = value;
					ele.style['-moz-opacity'] = value;
					ele.style['-khtml-opacity'] = value;
				}
				break;
			default:
				ele.style[property] = value;
				break;
		}
	},
	
	getStyle: function(ele, property) {
		var value = 0;
		if (property == 'opacity' && ele.filters) {// IE opacity
			value = 1;
			try {
				value = ele.filters.item('DXImageTransform.Microsoft.Alpha').opacity / 100;
			} catch(e) {
				try {
					value = ele.filters.item('alpha').opacity / 100;
				} catch(e) {}
			}
		}
		else if (ele.style[property]) {
			value = ele.style[property];
		}
		return value;
	},
	
	getWindowInnerSize: function() {
		var _x, _y;
		if (window.innerHeight) // all except Explorer
		{
			_x = window.innerWidth;
			_y = window.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
		{
			_x = document.documentElement.clientWidth;
			_y = document.documentElement.clientHeight;
		}
		else if (document.body) // other Explorers
		{
			_x = document.body.clientWidth;
			_y = document.body.clientHeight;
		}
		return {x: _x, y: _y};
	},
	
	moveTo: function(ele, x, y) {
		ele.style.left = x + "px";
		ele.style.top = y + "px";
	},
	
	getX: function(obj)
	{
		var curleft = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curleft += obj.offsetLeft
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
		return curleft;
	},
	
	getY: function(obj)
	{
		var curtop = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curtop += obj.offsetTop
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
		return curtop;
	}
}

var $C = HtmlDOM.getElementsByClassName;
var $N = function(name) { return document.getElementsByTagName(name); }
