String.prototype.htmlSpecialChars = function() {
	var iStringLength = this.length;
	var sModifiedString = '';
	
	for (var i = 0; i < iStringLength; i++) {
		switch (this.charCodeAt(i)) {
		case 34 : sModifiedString += '&quot;'; break;
		case 38 : sModifiedString += '&amp;' ; break;
		case 39 : sModifiedString += '&#39;' ; break;
		case 60 : sModifiedString += '&lt;'  ; break;
		case 62 : sModifiedString += '&gt;'  ; break;
		default : sModifiedString += this.charAt(i);
		}
	}
	return sModifiedString
}

var pageBackends=new Array() // массив файлов js скриптов
var currentBackend=null

function backend(name)//доступ к объекту
{
	if(name!=undefined)
	{
		var i=findBackendIndex(name)
		if(i==-1)
			return null
		else
			return pageBackends[i].object
	}
	if(currentBackend!=null)
		return pageBackends[currentBackend].object
	return
		null
}

function findBackendIndex(name)
{
    for(var i=0;i<pageBackends.length;i++)
    {
	if(pageBackends[i].name==name)
	{
	    return i
	}
    }
    return -1
}

function setBackend(name, object, isNew)
{
	var backend=findBackendIndex(name)
	if(isNew)
	{
		if(backend==-1)
		{
			backend=pageBackends.length
			pageBackends[backend]={name:name, object:object}
		}
		else
			return
	}
	if(currentBackend!=null)
		pageBackends[currentBackend].object.stop()
	currentBackend=backend
	pageBackends[currentBackend].object.start()
}

//name - имя файла js скрипта
function loadBackend(name)
{
	startLoadingBackend()//блокирует клиентскую обл. до загрузки 
	var backend=findBackendIndex(name) // идрекс файла в массиве
	if(backend!=-1)//если не найден
	{
		setBackend(name, pageBackends[backend].object, false)//загрузка файла js скрипта
		return
	}

    var head = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', '/skins/farmmk/js/'+name+'.js?');
    head.appendChild(js);
}

function showMenuBlock(html){document.getElementById('MenuBlock').innerHTML=html}
function showMessageBlock(html){document.getElementById('MessageBlock').innerHTML=html;document.getElementById('MessageBlock').style.visibility='visible';location.hash='MessageBlockAnchor'}
function hideMessageBlock(){document.getElementById('MessageBlock').innerHTML='';document.getElementById('MessageBlock').style.visibility='hidden';}
function showControlBlockName(html){document.getElementById('ControlBlockName').innerHTML=html}
function showControlBlock(html){document.getElementById('ControlBlock').innerHTML=html}
function showActionBlockName(html){document.getElementById('ActionBlockName').innerHTML=html}
function showActionBlock(html){document.getElementById('ActionBlock').innerHTML=html}
function startLoading(){document.getElementById('loader').style.visibility='visible'}
function endLoading(){document.getElementById('loader').style.visibility='hidden'}
function startLoadingBackend(){document.getElementById('pre_loader').style.visibility='visible'}
function endLoadingBackend(){document.getElementById('pre_loader').style.visibility='hidden'}
function startBlink(el, startColor, endColor){document.getElementById(el).style.border='1px double '+endColor}

