var oCurrentThermoList = null;

var iTopFix = navigator.userAgent.indexOf('Safari') >= 0 ? -1 : -2;

function showThermoList( oListItem ) {
	if (oCurrentThermoList) {
		if ( oCurrentThermoList == oListItem ) { hideThermoList(); return true; }
		hideThermoList();
	}
	var hCoords = Common.Dom.getAbsoluteCoords( oListItem );
	var iTopOfsset = hCoords.iTop;
	var iLeftOfsset = hCoords.iLeft;
	var oSubList = oListItem.eINS;
	if (oSubList) {
		Common.Class.add(oSubList, 'visible');
		oSubList.style.display = 'block';
		oSubList.style.zIndex = 1000;
		Common.Class.add(oListItem, 'open');
		Common.Class.remove(oListItem, 'hover');
		oSubList.style.top = 0;
		var iOffsetCurrent = 0;
		var iOffsetWidth = 0;
		for ( var iItemIdx = 0; ( oItem = oSubList.getElementsByTagName('div')[iItemIdx] ); iItemIdx++ ) {
			if ( Common.Class.match(oItem, 'selected') ) iOffsetCurrent = oItem.offsetTop;
			if ( oItem.offsetWidth > iOffsetWidth ) iOffsetWidth = oItem.offsetWidth;
		}
		oSubList.style.left = iLeftOfsset + 'px';
		oSubList.style.top = (iTopFix + iTopOfsset - iOffsetCurrent ) + 'px';

		oSubList.style.width = iOffsetWidth + 2;

		if ( iOffsetCurrent > iTopOfsset ) {
			var oArrowDiv = oSubList.getElementsByTagName('p')[0];
			if ( oArrowDiv ) {
				Common.Class.add(oArrowDiv, 'visible');
				oArrowDiv.style.top = iOffsetCurrent - iTopOfsset - 3 + 'px';
				oArrowDiv.onmouseover = startTermoListScroll;
				oArrowDiv.onmouseout = stopTermoListScroll;
			}
		}


		oCurrentThermoList = oListItem;
	}
}

function hideThermoList( bByDelay ) {
	if( bByDelay && !bHideThermoList ){
		return;
	}
	if ( oCurrentThermoList ) {
		var oSubList = oCurrentThermoList.eINS;
		if (oSubList) {
			Common.Class.remove(oSubList, 'visible');
			oSubList.style.display = 'none';
		}
		Common.Class.remove(oCurrentThermoList, 'open');
		Common.Class.remove(oCurrentThermoList, 'hover');
		oCurrentThermoList = null;
	}
}


var iScrollTO = 0

function startTermoListScroll() {
	iScrollTO = setTimeout('scrollThermoListDown()', 50);
}

function stopTermoListScroll() {
	if (iScrollTO != 0 ) {
		clearTimeout(iScrollTO);
		iScrollTO = 0;
	}
}

function scrollThermoListDown() {
	if ( oCurrentThermoList ) {
		var oSubList = oCurrentThermoList.eINS;
		if (oSubList) {
			var iOffsetCurrent = parseInt(oSubList.style.top) + 15;
			oSubList.style.top = iOffsetCurrent + 'px';
			var oArrowDiv = oSubList.getElementsByTagName('p')[0];
			if (oArrowDiv) {
				if (iOffsetCurrent < 0) {
					oArrowDiv.style.top = -2 - iOffsetCurrent + 'px';
					startTermoListScroll();
				} else {
					Common.Class.remove(oArrowDiv, 'visible');
					stopTermoListScroll();
				}
			}
		}
	}
}

function initThermoItem( oList ) {
	var eTemp, oLink, j, aeItem;
	for ( var iItemIdx = 0; ( oItem = oList.childNodes[iItemIdx] ); iItemIdx++ ) {
		if ( oItem.nodeType == 1 ) {
			oItem.eINS = oItem.getElementsByTagName('ins')[0]
			if ( oItem.eINS ) {
				eTemp = document.createElement( 'span' );
				eTemp.appendChild( document.createElement( 'span' ) );
				eTemp.className = 'bg';
				oItem.eINS.appendChild( eTemp );
				eTemp = document.createElement( 'p' );
				eTemp.className = 'up_arrow';
				oItem.eINS.appendChild( eTemp );
				oItem.eINS.style.position = 'absolute';
				oItem.eINS.style.display = 'none';
				/* emulating hover */
				if( !Common.Class.match( oItem, 'empty' ) ){
					oItem.onmouseover = function() { if (!Common.Class.match(this, 'open')) Common.Class.add(this, 'hover'); }
					oItem.onmouseout = function() { Common.Class.remove(this, 'hover'); }
					oItem.onclick = function(evt) {
						if (evt) evt.cancelBubble = true;
							else event.cancelBubble = true;
						showThermoList( this );
					}
					Common.Event.add( document, 'click', function(){ hideThermoList(); } )
				}
				/* link */
				aeItem = oItem.getElementsByTagName( 'div' );
				for( j = 0 ; j < aeItem.length ; j++ ){
					if( Common.Class.match( aeItem[j], 'selected' ) ){
						eTemp = document.createElement( 'div' );
						eTemp.className = 'item';
						eTemp.innerHTML = aeItem[j].innerHTML;
						oItem.insertBefore( eTemp, oItem.eINS );
						oLink = eTemp.getElementsByTagName('a')[0];
						if (oLink) {
							oLink.onclick = function(evt) {
								if (evt) evt.cancelBubble = true;
									else event.cancelBubble = true;
							}
						}
						document.body.insertBefore( oItem.eINS, document.body.firstChild );
						break;
					}
				}
			}
		}
	}
	/*eTemp = document.createElement( 'li' );
	eTemp.className = 'clear';
	oList.appendChild( eTemp );*/
	Common.Class.add( oList, 'thermo-inited' );
}

function initThermo() {
	var eThermo = document.getElementById('thermo');
	if( eThermo ){
		initThermoItem( eThermo );
	}
}

function placeholder( eThis, sText, sClass_on_empty ){
	eThis.onfocus = function(){ if( eThis.value.length && eThis.value == sText ){ eThis.value = ''; } Common.Class.remove( this, sClass_on_empty ); eThis.select(); document.getElementsByTagName( 'body' )[0].className += ''; }
	eThis.onblur = function(){ if( !this.value.length || eThis.value == sText ){ Common.Class.add( this, sClass_on_empty ); this.value = sText; document.getElementsByTagName( 'body' )[0].className += ''; } }
	if( !eThis.value.length ){ eThis.onblur(); }
	if( !eThis.getAttribute( 'placeholder' ) ){ eThis.setAttribute( 'placeholder', sText ); }
}

function init_unhide_pairs( sT, sD ){
	var aeTerm = Common.Dom.getElementsByClassName( document.body, sT );
	if( aeTerm.length ){
		var aeDefinition = Common.Dom.getElementsByClassName( document.body, sD );
		for( var i = 0, eINS, j ; i < aeTerm.length ; i++ ){
			if( aeDefinition[i] ){
				eINS = make_pseudo( aeTerm[i] );
				Common.Event.add( eINS, 'click', unhide_depended );
				eINS.eDepended = aeDefinition[i];
				Common.Class.add( aeDefinition[i], 'hidden' );
				Common.Class.add( aeTerm[i], 'inited' );
			}
		}
	}
}

function unhide_depended( oEvent ){
	oEvent = Common.Event.normalize( oEvent );
	if( Common.Class.match( oEvent.target.eDepended, 'hidden' ) ){
		Common.Class.add( oEvent.target.parentNode, 'active' );
		Common.Class.remove( oEvent.target.eDepended, 'hidden' );
	}else{
		Common.Class.remove( oEvent.target.parentNode, 'active' );
		Common.Class.add( oEvent.target.eDepended, 'hidden' );
	}
}


function make_pseudo( eThis ){
	var eINS = document.createElement( 'ins' );
	eINS.className = 'pseudo-link';
	eThis.insertBefore( eINS, eThis.firstChild );
	eINS.appendChild( eThis.childNodes[1] );
	if( need_fix_hover() ){
		fix_hover( eINS, 'pseudo-link' );
	}
	return eINS;
}

if( need_fix_hover() ){
	Common.Event.add( window, 'load', function(){
		var aeLABEL = document.getElementsByTagName( 'label' );
		for( var i = 0 ; i < aeLABEL.length ; i++ ){
			fix_hover( aeLABEL[i] );
		}
	} );
}

function need_fix_hover(){
	return window.attachEvent;
}

function fix_hover( eThis, sClass ){
	sClass = ( sClass ? sClass + '_' : '' ) + 'hover';
	Common.Event.add( eThis, 'mouseover', function(){ Common.Class.add( eThis, sClass ); } )
	Common.Event.add( eThis, 'mouseout', function(){ Common.Class.remove( eThis, sClass ); } )
}

var ePopup_block = false, ePopup_button = false, bPopup_click = true, bPopup_close = true;;

Common.Event.add( document, 'click', function(){
	setTimeout(
		function(){
			close_popup ();
		}
		, 0
	);
} );


function close_popup () {
	if( !bPopup_click && ePopup_block ){
		ePopup_block.style.top = '-10000px';
		Common.Class.remove( ePopup_button, 'active' );
		ePopup_block = false;
		bPopup_close = true;
	}
	bPopup_click = false;
}

function create_popup_block_by( sName ){
	var eButton = document.getElementById( sName + '_button' );
	var eBlock = document.getElementById( sName + '_block' );
		setTimeout(
			function(){
				create_popup_block( eButton, eBlock );
			}
			, 0
		);
}
function create_popup_block(eButton, eBlock){
	if( eButton && eBlock ){
		eBlock.style.display = 'none';
		var eINS = make_pseudo( eButton );
		var eParent = document.getElementsByTagName( 'form' )[0];
		var eClose = document.createElement( 'ins' );
		eBlock.appendChild( eClose );
		Common.Class.add( eClose, 'close_button' );
		if( need_fix_hover() ){
			fix_hover( eClose, 'close_button' );
		}
		Common.Event.add( eBlock, 'click', function( e ){ bPopup_click = true; } );
		try{
			var eOK = document.createElement( '<input type="button" value="OK" class="ok_button" />' );
		}catch(e){
			var eOK = document.createElement( 'input' );
			eOK.type = 'button';
			eOK.value = 'OK';
			Common.Class.add( eOK, 'ok_button' );
		}
		eBlock.appendChild( eOK );
		
		if(typeof eParent != 'undefined' ){
			eParent.appendChild( eBlock );
		}
		
		Common.Class.remove( eBlock, 'hidden' );
		
		Common.Event.add( eButton, 'click', function( e ){
			var aeSelect = document.getElementsByTagName( 'select' );
			
			if( bPopup_close ){
				if( ePopup_block ){
					close_popup ();
				}
				var hParent_coords = Common.Dom.getAbsoluteCoords( eParent );
				var hButton_coords = Common.Dom.getAbsoluteCoords( eButton );
				eBlock.style.left = hButton_coords.iLeft - hParent_coords.iLeft + 'px';
				eBlock.style.top = hButton_coords.iTop - hParent_coords.iTop + 'px';
				eBlock.style.display = 'block';
				ePopup_block = eBlock;
				ePopup_button = eButton;
				Common.Class.add( eButton, 'active' );
				if( aeSelect && eButton.runtimeStyle ){
					for( var i = 0 ; i < aeSelect.length ; i++ ){
						Common.Class.add( aeSelect[i], 'hidden' );
					}
				}
				bPopup_close = false;
			}else{
				bPopup_click = false;
				close_popup ();

			}
			Common.Event.cancel( e );
		} );
		
		Common.Event.add( [ eClose, eOK ], 'click', function( e ){
			bPopup_click = false;
			close_popup ();
			
			Common.Event.cancel( e );
		} );
		
		Common.Class.add( eBlock, 'popup_window' );
		var eDIV = document.createElement( 'div' );
		eBlock.appendChild( eDIV );
		eDIV.innerHTML = '<div class="f_tt"></div><div class="f_r"><div class="f_rr"></div><div class="f_b"><div class="f_bb"><div></div></div><div class="f_l"><div class="f_ll"><div></div></div><div class="f_c"><div class="popup_arrow"></div></div></div></div></div>';
		Common.Class.add( eDIV, 'shadow' );
	}
}
