var MouseOnMessage = false; //Если мышка на окне с сообщением
var MessageVisible = false; //Сообщение на экране

//Проверка на щелчок мышкой. В основном, чтобы убрать сообщение
function CheckMouseKey( evt )
{
	if( MessageVisible  && !MouseOnMessage )
		HideMessage();
}

var $$$ = function(a) {
	var res = $(a);
	if (res && !res.tagName) {
		res = $("#" + a);
		return res.length ? res[0] : null;
	}
	return res;
};

//Показать сообщение
function ShowMessage( img, label, text, top, left, error, quick )
{

	var message = $$$( 'Message' ); // || $('#Message');
	if (message && !message.tagName) {
		message = $("#Message");
		message = message.length ? message[0] : null;
	}

	if( !message )
	{
		alert( text );
		return;
	}

	//Формируем html
	var html = '';
	if( img )
		html += '<img src="' + img + '" align="absmiddle" />';
	if( label )
		html += '<strong>' + label + '</strong>';
	if( text )
		html += '<br>' + text;
	
	//Произошла ошибка - меняем цвет фона на красный
	if( error )
		message.style.backgroundColor = '#FAE2E2';
	else
		message.style.backgroundColor = '#FFFFFF'; //'#FFF7D7';
	
	message.innerHTML = html;

	message.style.visibility = 'hidden';
	message.style.display = 'block';

	//Положение окна на экране
	
	var coord = getPos();
	message.style.top = (( coord ) ? coord.y + coord.h / 2 - 50 : 400) + "px";
	message.style.left = (( coord ) ? coord.x + coord.w / 2 - message.offsetWidth / 2 : 400) + "px";
	
	var messagebg = $$$( 'MessageBg' );
	if( messagebg )
	{
		//messagebg.style.visibility = 'hidden';
		//messagebg.style.display = 'block';
		messagebg.style.top = message.style.top;
		messagebg.style.left = message.style.left;
		messagebg.style.width = message.offsetWidth;
		messagebg.style.height = message.offsetHeight;
		//messagebg.style.display = 'none';
		//messagebg.style.visibility = 'visible';
	}
	
	message.style.display = 'none';
	message.style.visibility = 'visible';	

	MessageVisible = true;
	if (self.jQuery && messagebg) {
		//$(messagebg).add($(message)).show().fadeTo(0, 0).fadeTo(quick ? 0 : "slow", .85);
		$(messagebg).add($(message)).show().fadeTo(quick ? 0 : "slow", .85);
	}
	else {
		if( !quick )
		{
			if( messagebg ) new Effect.Appear( messagebg, {from: 0.0, to:0.85} );
			new Effect.Appear( message, {from: 0.0, to:0.85} );
		}
		else
		{
			if( messagebg ) new Effect.Appear( messagebg, {from: 0.0, to:0.85, duration: 0.0} );
			new Effect.Appear( message, {from: 0.0, to:0.85, duration: 0.0} );
		}
	}
}

//Скрыть сообщение
function HideMessage()
{
	var messagebg = $$$( 'MessageBg' );
	var message = $$$( 'Message' );

	if( message )
	{
		MessageVisible = false;
		if (self.jQuery) {
			$(messagebg).add($(message)).fadeOut();
		} else {
			if( messagebg ) new Effect.Fade( messagebg, {from: 0.85, to:0.0} );
			new Effect.Fade( message, {from: 0.85, to:0.0} );
		}
	}
}

function ShowError( text )
{	
	ShowMessage( 'img/failure.gif', '<span style="width:400px;">' + text + '</span>', //text,
	'', 
	document.body.scrollTop + document.body.clientHeight/4, null, true);
}

function ShowErrorAspNet( text )
{	
	ShowMessage('../../img/failure.gif', '<span style="width:400px;">' + text + '</span>', //text,
	'', 
	document.body.scrollTop + document.body.clientHeight/4, null, true);
}

function ShowWaitMsg( )
{
	ShowMessage('img/execute.gif', '</strong>'+ruWaitPlease+'<strong>', null, 
	document.body.scrollTop + document.body.clientHeight/4);
}

function ShowWaitMsgNet( )
{
	ShowMessage('http://teleplane.ru/img/execute.gif', '</strong>'+ruWaitPlease+'<strong>', null, 
	document.body.scrollTop + document.body.clientHeight/4);
}

function getPos() 
{
	var rDiv = 0;
	var coords;
	
	var divs = document.getElementsByTagName("div");
	for(var l = 0; l < divs.length; l ++) {
		var div = divs[l];
		if(div.className == "c_form" || div.className == "panel-with-border")
			var rDiv = div;
	}
	
	if(rDiv) {
		coords = getAbsPosition(rDiv);
		coords.w = rDiv.offsetWidth;
		coords.h = rDiv.offsetHeight;
	}
	else
		coords = 0;	

	return coords;
}

function getAbsPosition(el)
{
	var SL = 0, ST = 0;
	var is_div = /^div$/i.test(el.tagName);
	if (is_div && el.scrollLeft)
		SL = el.scrollLeft;
	if (is_div && el.scrollTop)
		ST = el.scrollTop;
	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
	if (el.offsetParent) {
		var tmp = getAbsPosition(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
}

function getBox(el) {
	var pos = [el.offsetLeft, el.offsetTop,
	el.offsetWidth, el.offsetHeight];
	if (el = el.offsetParent) {
		el = getBox(el);
		pos[0] += el[0];
		pos[1] += el[1];
	}
	return pos;
}

var enterCodeDialogElement = null;
var enterCodeDialogHTML = "Введите код: <input id='codeEntered' style='width:4em; margin-right: .5em;' maxlength='4'/><input type='button' value=' >> ' onclick='codeSubmit()'/>";
var enterCodeDialogSource = null;
var clicksCount = 0;

function codeSubmit() {
	var el = document.getElementById('codeEntered');
	if (!el || !el.value) return;
	document.forms[0].code.value = el.value;
	document.forms[0].action = "";
	destroyCodeDialog();
	if (confirm(confirmMessage))
		document.forms[0].submit();
}
    	
function destroyCodeDialog() {
	if (!enterCodeDialogElement) return;
	if (!enterCodeDialogSource.disabled) return;
	if (!clicksCount++) return;
	document.body.onclick = null;
	enterCodeDialogElement.onclick = null;
	document.body.removeChild(enterCodeDialogElement);
	enterCodeDialogSource.disabled = false;
}

function enterCodeDialog(source) {
	enterCodeDialogSource = source;
	var size = { width: 220, height: 25, padding: 5 };
	var disabled = source.disabled;
	var el = enterCodeDialogElement = document.createElement("div");
	el.className = "enter-code-dialog";
	var box = getBox(source);
	el.style.width = size.width + "px";
	el.style.height = size.height + "px";
	el.style.padding = size.padding + "px";
	var box = getBox(source);
	el.style.left = box[0] + (((box[2] - (size.width + size.padding * 2)) / 2) >> 0) + "px";
	el.style.top = box[1] - size.height - size.padding * 2 - 1 + "px";
	el.innerHTML = enterCodeDialogHTML;

	document.body.onclick = function() {
		destroyCodeDialog();
	}

	el.onclick = function(evt) {
		evt = evt || window.event;
		evt.cancelBubble = true;
	}
		
	document.body.appendChild(el);
	source.disabled = true;
	clicksCount = 0;
	codeEntered.focus();
}
	
function enterCode(source) {
	enterCodeDialog(source);
}

function fixcode(input) { 
	return input.replace(/&#(\d+);/gi, function(m){ return String.fromCharCode(parseInt(m.substr(2,m.length-3))); });
	} 

var freeColor = '#488839';
var busyColor = '#FF5152';
function blinking() {
  var wasChanged = false;
  var divs = document.getElementsByTagName('div');
  for (i=0; i < divs.length; i++) {
    if (divs[i].className=='booking' || divs[i].className=='booking_2') {
      divs[i].style.background = (divs[i].style.background==freeColor ? busyColor : freeColor);
      wasChanged = true;
    }
  }
  if (wasChanged) setTimeout('blinking()', 300);
}


