CitySearch = function(el, type)
{
	CitySearch.element = (document.getElementById(el)) ? document.getElementById(el) : el;
	CitySearch.element.select();
	
	var src = CitySearch.frame.src.substr(CitySearch.frame.src.lastIndexOf('.'));
	src = src.substr(src.indexOf('/'));
	if (src == '') src = CitySearch.frame.src;
	if (src != '/lib/citysearch/?'+((type == 'avia') ? 'avia' : 'railway'))
		CitySearch.frame.src = '/lib/citysearch/?'+((type == 'avia') ? 'avia' : 'railway');
	
	frames[CitySearch.frame.name].Do(CitySearch.element);
}

// глобальные
CitySearch.element = false; // элемент, куда вписываем город
CitySearch.frame = document.getElementById('CitySearchFrame'); // фрейм, в котором находится календарь

CitySearch.hideFrame = function()
{
	CitySearch.frame.style.visibility = "hidden";
}

CitySearch.showFrame = function()
{
	CitySearch.frame.style.display = "block";
	CitySearch.frame.style.visibility = "visible";
}

CitySearch.getScrollTop = function()
{
	if (document.documentElement.scrollTop) return document.documentElement.scrollTop;
	if (document.body.scrollTop) return document.body.scrollTop;
	if (window.pageYOffset) return window.pageYOffset;
	return 0;
}

CitySearch.getWinHeight = function()
{
	if (window.innerHeight) return window.innerHeight;
	if (document.documentElement.clientHeight) return document.documentElement.clientHeight;
	if (document.body.clientHeight) return document.body.clientHeight;
	return 0;
}

// позиционирование фрейма
CitySearch.posFrame = function()
{
	var cP = CitySearch.element;
	var dB = document.body; var eL=0; var eT=0;

	for (var p=cP;p&&p.tagName!='BODY';p=p.offsetParent){eL+=p.offsetLeft;eT+=p.offsetTop;}
	var eH = cP.offsetHeight;
	
	// подгоняем размеры
	var el = frames[CitySearch.frame.name].document.getElementById('Frame');
	CitySearch.frame.style.width = parseInt(frames[CitySearch.frame.name].getElementComputedStyle(el, 'width'))
		+ parseInt(frames[CitySearch.frame.name].getElementComputedStyle(el, 'border-left-width'))
		+ parseInt(frames[CitySearch.frame.name].getElementComputedStyle(el, 'border-right-width')) + 'px';
	CitySearch.frame.style.height = parseInt(frames[CitySearch.frame.name].getElementComputedStyle(el, 'height'))
		+ parseInt(frames[CitySearch.frame.name].getElementComputedStyle(el, 'border-top-width'))
		+ parseInt(frames[CitySearch.frame.name].getElementComputedStyle(el, 'border-bottom-width')) + 'px';

	
	var dH = parseInt(CitySearch.frame.style.height);
	var sT = CitySearch.getScrollTop();
	
	var right = true;
	
	if (right) // позиционирование справа от того, по чему мы кликнули
	{
	    if (eT-dH>=sT&&eT+dH>CitySearch.getWinHeight()+sT)eT-=(dH-eH);
	    CitySearch.frame.style.left=eL+30+cP.offsetWidth+'px';CitySearch.frame.style.top=eT+'px'; 
	}
	else
	{
	    if(eT-dH>=sT&&eT+eH+dH>CitySearch.getWinHeight()+sT)eT-=dH;else eT+=eH;
	    CitySearch.frame.style.left=eL+'px';CitySearch.frame.style.top=eT+'px';
	}
}

// установка значения при окончательном выборе
CitySearch.setValue = function(str)
{
	CitySearch.element.value = str;
}


if (!document.onclick) document.onclick = CitySearch.hideFrame;
else eval('document.onclick = ' + (document.onclick+'').substr(0, (document.onclick+'').indexOf('{')+1) + 'CitySearch.hideFrame();'
	+ (document.onclick+'').substr((document.onclick+'').indexOf('{')+1));