//Получение элементов по ID, с опциональным кэшированием
var ElementsCache = {};
function $(v) {return (ElementsCache[v])?ElementsCache[v]:ElementsCache[v]=document.getElementById(v);}
function $S(v) {return $(v).style;}
function $n(v) {return document.getElementById(v);}


//Просмотр массива
function print_r(arr,type) {
    var str='';
    for (var i in arr) {
    	if(arr[i]!=undefined) str+=i+' => '+arr[i]+'; ';
    }
    if(type==1) return str;
    alert(str);
}

//Получение координат элемента
function getElementPosition(elemId) {
    var elem = typeof(elemId)=="string" ? $n(elemId) : elemId;
    var w = elem.offsetWidth, h = elem.offsetHeight, l = 0, t = 0;

    while (elem) {
        l += elem.offsetLeft;
        t += elem.offsetTop;
    	elem = elem.offsetParent;
    }

    return {"left":l, "top":t, "width":w, "height":h};
}

//Добавление элемента через DOM
function AddElement(parent,tag,params) {
	var params=params || {}, elem=document.createElement(tag);
    SetAttributs(elem,params);
	parent.appendChild(elem);
	return elem;
}

//Выставление атрибутов (рекурсивное)
function SetAttributs(elem,params) {
	for (var i in params) {
		if(typeof(params[i])!="object") {elem[i]=params[i];}
		else SetAttributs(elem[i],params[i]);
	}
}

function RollInput(obj,type) {	var val=obj.value;
	switch(type) {		case 'focus':
		if(val==obj.title) obj.value='';
		break;

		case 'blur':
		if(val.length==0) obj.value=obj.title;
		break;	}}