function alignToCenter(el)
{
	with(el)
	{
		style.left = ((document.body.clientWidth - clientWidth) / 2  + document.body.scrollLeft) + "px";
		style.top = ((document.body.clientHeight - clientHeight) / 2  + document.body.scrollTop) + "px";
	}
}

function display(el, value)
{
	with(el.style)	
		display = value;	
}

function visibility(el, value)
{
	with(el.style)
		visibility = value;
}

function show(elem)
{
	visibility(elem, "hidden");
	display(elem, "block");
	alignToCenter(elem);
	setOpacity(elem, 0);
	visibility(elem, "visible");
	if(!isOpera)
		process(getOpacity(elem), 5, 100, 50, elem, "opacity", "", "");
}

function hide(elem)
{
	if(isOpera)
		display(elem, "none");
	else
		process(getOpacity(elem), 5, 0, 50, elem, "opacity", "", "hide");
}

function addLoadEvToImg(img)
{
	if(isFF)
		addEvt(img, "load", ifImgLoaded);
	else if(isIE)
		addEvt(img, "readystatechange", ifImgLoaded);
}

function ifImgLoaded()
{
	show(box);
}

var pict = createObj("img", "pict", 0, "block", 0);
var box = createObj("div", "box", 0, "none", 0);
var mess = createObj("div", "mess", 0, "none", 0);

with(box.style)
{
	position = "absolute";
	border = "solid 3px #000";
	cursor = "pointer";
}

with(mess.style)
{
	position = "absolute";
	padding = "10px";
	fontSize = "15px";
	color = "#b00";
	border = "solid 2px #b00";
	background = "#fff";
	textAlign = "center";
	cursor = "pointer";
}

addEvt(box, "mousedown", hideImg);
addEvt(mess, "mousedown", hideMess);

box.appendChild(pict);
addLoadEvToImg(pict);

function showImg(src)
{	
	pict.src = src;
	
	if(isOpera)
		show(box);
}

function hideImg()
{
	hide(box);
}

function showMess(message)
{
	mess.innerHTML = message;
	show(mess);
}

function hideMess()
{
	hide(mess);
}

initObj[initObj.length] = function()
{
	document.body.appendChild(box);
	document.body.appendChild(mess);
};

vsObj = new Array();

function process(cv, vs, lv, sd, lE, prop, d, addF)
{
	vsObj[2] = cv; //currvalue
	vsObj[3] = vs; //valuestep
	vsObj[4] = lv; //limitvalue
	vsObj[5] = sd; //stepduration
	
	vsObj[6] = lE;	//linkElem
	vsObj[7] = prop; //property
	vsObj[8] = d; //dem
	vsObj[10] = ((vsObj[2] <= vsObj[4]) ? 1 : (-1)); //sign_vs
	vsObj[11] = addF; //additional_function
	
	vsObj[9]();
	
	vsObj[0]();	
}

vsObj[0] = function()
{
	vsObj[1]();
	
	vsObj[2] += (vsObj[3] * vsObj[10]);
	
	if((vsObj[2] * vsObj[10]) <= (vsObj[4] * vsObj[10]))
		setTimeout(vsObj[0], vsObj[5]);
	else if(vsObj[11] == "hide")
		display(vsObj[6], "none");
};

vsObj[9] = function()
{
	if(vsObj[7] == "left")
		vsObj[1] = function(){vsObj[6].style.left = vsObj[2] + vsObj[8];};
		
	if(vsObj[7] == "top")
		vsObj[1] = function(){vsObj[6].style.top = vsObj[2] + vsObj[8];};
		
	if(vsObj[7] == "width")
		vsObj[1] = function(){vsObj[6].style.width = vsObj[2] + vsObj[8];};
		
	if(vsObj[7] == "height")
		vsObj[1] = function(){vsObj[6].style.height = vsObj[2] + vsObj[8];};
		
	if((vsObj[7] == "opacity") && isIE)
		vsObj[1] = function(){vsObj[6].style.filter = "alpha(opacity=" + vsObj[2] + ")";};
		
	if((vsObj[7] == "opacity") && isFF)
		vsObj[1] = function(){vsObj[6].style.MozOpacity = vsObj[2]/100;};
};

function setOpacity(el, value)
{
	with(el.style)
	{
		if(isIE)
			filter = "alpha(opacity=" + value + ")";
		
		if(isFF)
			MozOpacity = value / 100;
	}
}

function getOpacity(el)
{
	var opacity;
	
	if(isIE)
		{			
			opacity = parseInt(el.style.filter.substr(14, 3));
		}
	else if(isFF)
		opacity = el.style.MozOpacity * 100;
	
	return opacity;
}

function displayU(elem)
{
	with(elem.parentNode)
	{
		for(u = 0; u < childNodes.length; u ++)
		{
			if(childNodes[u] != elem)
			{
				childNodes[u].style.display = "none";
				for(v = 0; v < childNodes[u].childNodes.length; v ++)
				{
					//alert(childNodes[u].childNodes[v].outerHTML);
					if(childNodes[u].childNodes[v].id && childNodes[u].childNodes[v].tagName == "DIV")
						childNodes[u].childNodes[v].style.display = "none";
				}
			}
		}
	}
	with(elem.style)
	{
		display = (display == "block") ? "none" : "block";
	}
}

function displayUn(elem)
{
	with(elem.style)
	{
		display = (display == "block") ? "none" : "block";
	}	
}

/*function checkForm(form)
{
	for(var i = 0; i < form.elements.length; i ++)
	{
		var element = form.elements[i];
		
		var check = 0;
		var str = new String(element.id);

		if((str.substr(0,4) == "text") || (element.type == "textarea"))
		{
			check = checkField(element);
			if(check)
				return false;
		}
	}
	
	return true;	
}
function checkField(el)
{
	
	var re = /[*][\s]*[<][\/]/;
		if(el.value.length < 1)
		{
			re = /[<][a-zA-z'\s\"]+[>][\s]*[a-zA-zа-яА-Я\w\s]+[*][\s]*[<][\/]/;
			var mess = new String(row.innerHTML.match(re));
			mess= el.title;
			alert("Не заполнено поле <" + mess + ">");
			return true;
		}
	return false;
}*/
function isMail(stringOrElement)
{
	var elem, str;
	
	stringOrElement.tagName ? elem = stringOrElement : str = stringOrElement;
	
	if(elem && !elem.value.length)
		return;
	
	if(elem)
		str = elem.value;
	
	var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	
	if(str.match(re))
	{
		if(elem)
		{}
		else
			return true;
	}
	else
	{
		if(elem)
		{
			alert("Не корректный E-Mail");
			elem.focus();
			elem.select();
		}
		else
		{			
			return false;
		}
	}
}
function openMortgage(){ 
	window.open('saturday','','width=600,height=284,resizable=0,statusbar=0');
}

function printout() {
	if (window.print != null) {
		if (parent == self) {
			window.print(); 
		} else {
			parent['body'].focus();
			parent['body'].print();
		}
	} else {
		alert("Print Error!"); 
	}
}

function linkStateChange(idBlock){
	var blk=document.getElementById(idBlock);
	var stateStyle=blk.style.display;
	if(stateStyle=="none"){
		blk.style.display="block";
	}else{
		blk.style.display="none";
	}
	return false;
}


//Функция findOdds(node, arr) разыскивает в поддереве узла node «паразитные» текстовые узлы (состоящие только из пробелов и переводов строки) и помещает эти узлы в массив arr
function findOdds(node, arr) {
  var space = /^[^\u0021-\uffff]*$/g;
  if(node.nodeType == 3) {
    if(node.nodeValue.match(space)) {
      arr.push(node);
    }
  }
  else if(node.nodeType == 1) {
    for(var n = node.firstChild; n; n = n.nextSibling) {
      findOdds(n, arr);
    }
  }
}
// Функция removeOdds(node) удаляет из поддерева узла node «паразитные» текстовые узлы (состоящие только из пробелов и переводов строки)
function removeOdds(node) {
  var odds = new Array();
  findOdds(node, odds);
  for(var i = 0; i < odds.length; i++) {
    odds[i].parentNode.removeChild(odds[i]);
  }
}

//для карты
function changeMapState(currentLink) {
	
	removeOdds(document.documentElement);// удалить со страницы «паразитные» текстовые узлы (состоящие только из пробелов и переводов строки)
	
	var nextLevel = currentLink.nextSibling.nextSibling;
		
	if(nextLevel.style.display=="none"){
		nextLevel.style.display="block";
		currentLink.className="minus";
	}else{
		nextLevel.style.display="none";
		currentLink.className="plus";
	}
	return false;
	
   
}


function showSelectItem(ind, idlist){
	var ulAtms=document.getElementById(idlist);
	var liArr=ulAtms.getElementsByTagName('li');
	var index='m'+(ind);
	if(liArr){
		for(var i=0; i<liArr.length; i++){
			liArr[i].style.display='none';
			if(liArr[i].getAttribute('id')==index){
				liArr[i].style.display='block';
			}
		}
	}
}