function Boundaries(){
	if(arguments.length>=4){
		this.width = arguments[2];
		this.height = arguments[3];
	}else if(arguments.length>=2){
		this.left = arguments[0];
		this.top = arguments[1];
		this.width = 0;
		this.height = 0;
	}else if(arguments.length==1){
		this.left = leftPos(arguments[0]);
		this.top  = topPos(arguments[0]);
		this.width  = arguments[0].offsetWidth;
		this.height = arguments[0].offsetHeight;
	}
}
function topPos(el){
	return doPosLoop(el, "Top");
}
function leftPos(el){
	return doPosLoop(el, "Left");
}
function doPosLoop(el, val){
	var temp=el;
	var x=temp["offset" + val];
	while(temp.tagName!="BODY"){
		temp=temp.offsetParent;
		x+=temp["offset" + val];
	}
	return x;
}
function getStyleRule(txt,css){
	if(!css) css=0;
	if(!document.styleSheets) return;
	var theRules = new Array();
	if(document.styleSheets[css].cssRules){
		theRules = document.styleSheets[css].cssRules
	}else if (document.styleSheets[css].rules){
		theRules = document.styleSheets[css].rules;
	}else{
		return;
	}
	for(var i=0;i<theRules.length;i++){
		if(theRules[i].selectorText.indexOf(txt)>-1){
			return theRules[i].style;
		}
	}
}
function getStyleSheet(type){
	for(var i=0;i<document.styleSheets.length;i++){
		if(document.styleSheets[i].href.indexOf(type)>-1){
			return i;
		}
	}
	return 0;
}
function getStyle(obj,style){
	if(!document.getElementById) return;
	var value = obj.style[style];
	if(!value){
		if(document.defaultView){
			value = document.defaultView.getComputedStyle(obj, "").getPropertyValue(style);
		}else if(obj.currentStyle){
			value = obj.currentStyle[style];
		}
	}
	return value?value:0;
}
function getBorderSizes(tableEl){
	var o=new Object();
	if(document.getElementById){
		o.top    = parseInt(getStyle(tableEl,'borderTopWidth'));
		o.left   = parseInt(getStyle(tableEl,'borderLeftWidth'));
		o.right  = parseInt(getStyle(tableEl,'borderRightWidth'));
		o.bottom = parseInt(getStyle(tableEl,'borderBottomWidth'));
	}else{
		var i,w=0,h=0;
		for(i=0;i<tableEl.rows[0].cells.length;i++){
			w+=tableEl.rows[0].cells[i].offsetWidth;
		}
		for(i=0;i<tableEl.rows.length;i++){
			h+=tableEl.rows[i].offsetHeight;
		}
		o.top = parseInt(tableEl.rows[0].offsetTop);
		o.left = parseInt(tableEl.rows[0].offsetLeft);
		o.right = parseInt(tableEl.offsetWidth - tableEl.rows[0].offsetWidth - o.left);
		o.bottom = parseInt(tableEl.offsetHeight - h - o.top);
	}
	return o;
}
function isTable(el) {return el.tagName=="TABLE";}
function isTBody(el) {return el.tagName=="TBODY";}
function isRow(el) {return el.tagName=="TR";}
function isCol(el) {return el.tagName=="TD";}
function getParent(el,f){
	if(!el || el.tagName=="BODY") return null;
	if(f(el)) return el;
	return getParent((isIE)?el.parentElement:el.parentNode,f);
}
function getElementByClassName(el,className){
  var i,tmp;
  if(el.className==className) return el;
  for(i=0;i<el.childNodes.length;i++){
    tmp=getElementByClassName(el.childNodes[i], className);
    if(tmp!=null) return tmp;
  }
  return null;
}
function checkElementOwnTo(owner,el){
	if(!el) return false;
	if(owner==el) return true;
	if(el.className && owner.className==el.className) return false;
	return checkElementOwnTo(owner,(isIE) ? el.parentElement : el.parentNode);
}
function getElementsByTagNameOwnTo(owner,tagName){
	var j=0;
	selectList=new Array();
  elList=document.getElementsByTagName(tagName);
  for(var i=0,j=0;i<elList.length;i++){
		if(checkElementOwnTo(owner,elList[i])){
			selectList[j++] = elList[i];
		}
	}
	return selectList;
}
function getOuterHTML(node){
	var html = '';
	html += '<';
	html += node.nodeName;
	for(var i=0;i<node.attributes.length;i++){
		html += ' ' + node.attributes[i].nodeName.toUpperCase() + '="' + node.attributes[i].nodeValue + '"';
	}
	html += '>'; 
	html += node.innerHTML;
	html += '<\/' + node.nodeName + '>';
	return html;
}
var zIndexMax=0;
function get_zIndexMax(){
	if(zIndexMax==0){
		var a=document.getElementsByTagName("*");
		var l=a.length;
		for(var i=0;i<l;i++){
			zIndexMax=Math.max(zIndexMax,a[i].style.zIndex);
		}
	}
	return ++zIndexMax;
}
function EventElement(event){
	if(isIE){
		this.src=event.srcElement;
		this.from=event.fromElement;
		this.to=event.toElement;
	}else{
		this.src=event.target;
		this.from=event.relatedTarget;
		this.to=(event.target.nodeType==3) ? event.target : event.target.parentNode;
	}
}
function ResetFields(el){
	switch(el.tagName){
		case "INPUT":
			switch (el.type){
				case "hidden":
				case "text":
					el.value = (el.defvalue) ? el.defvalue : ''
					break;
				case "checkbox":
					el.checked=false;
					break;
				case "radio":
					break;
			}
			break;
		case "SELECT":
			el.selectedIndex=0;
			break;
		case "TEXTAREA":
			el.value='';
			break;
		default:
			for(var i=0;i<el.childNodes.length;i++){
				ResetFields(el.childNodes[i]);
			}
	}
}
function CursorWait(){
	var a=document.getElementsByTagName("*");
	for(var i=0;i<a.length;i++){
		a[i].style.cursor='wait';
	}
}
function CursorDefault(){
	var a=document.getElementsByTagName("*");
	for(var i=0;i<a.length;i++){
		a[i].style.cursor='';
	}
}