// Массив для всплывающих подсказок не трогать
var textInTips = new Hash();


// хранилище заинклюденных файлов
var includedFiles = new Hash();

// выводим на экран содержимое объекта в удобном виде
function print_r(obj, showFunctions)
{
	showFunctions = Boolean(showFunctions);
	
	var str = '';
	
	for(prop in obj)
	{
	  // функции не выводим
		if( obj[prop] == null || typeof(obj[prop]) == 'function' && !showFunctions)
		{
			continue;
		}
		
		str += ( prop + " == " + obj[prop] + "\n");
	}
	
	alert(str);
}

/**
 * Динамическая загрузка JS-скрипта
 *
 * @return scriptElement
 */
function include(sourseURL, onLoadFunction)
{	
	var scriptElement = new Asset.javascript(sourseURL);
  //собственный флаг загруженности
	scriptElement.isLoaded = false;
	//событие загрузки для нормальных браузеров
	scriptElement.addEvent('load', function(){ this.isLoaded = true; });
	//для ослов свое событие загрузки
	if(Browser.Engine.trident)
	{
		scriptElement.addEvent('readystatechange', function(){
			if(['loaded', 'complete'].contains(this.readyState))
			{
				this.fireEvent('load');
			}
		});
	}

	//добавляем обработчик загрузки, если он передан
	if(onLoadFunction && typeof(onLoadFunction) == 'function')
	{
		this.addEvent('load', onLoadFunction);
	}
	
	return scriptElement;
}
/**
 * Однократная динамическая загрузка JS-скрипта
 *
 * @return scriptElement
 */
function include_once(sourseURL, onLoadFunction)
{
	var scriptElement = null;
  //файл начали загружать
  if( includedFiles.has(sourseURL) )
  {
		if(onLoadFunction && typeof( onLoadFunction ) == 'function')
    {
			scriptElement = includedFiles.get(sourseURL)
			//если скрипт уже загружен, то сразу выполняем обработчик
			scriptElement.isLoaded ? onLoadFunction() : scriptElement.addEvent('load', onLoadFunction);
    }
  }
  else
  {
    scriptElement = include(sourseURL, onLoadFunction);
    //добавляем загружаемый файл в хранилище
    includedFiles.set(sourseURL, scriptElement);
  }
  
  return scriptElement;
}

// получаем имя файла и его расширение
function pathinfo(data)
{
  var filename = null;
  var extension = null; 
  var basename = null;
  
  data = data.replace(/^\s|\s$/g, '');
  if ( /\.\w+$/.test(data) ) 
  {
   var m = data.match(/([^\/\\]+)\.(\w+)$/);
   if (m)
   {
      filename = m[1];
      extension = m[2];
      basename = filename + '.' + extension;
   }
  } 
  else 
  {
   var m = data.match(/([^\/\\]+)$/);
   if (m)
   {
     filename = m[1];
     basename = filename;
   }
  }   
  
  return {'basename' : basename, 'extension' : extension};
}
