// Фукнция-генератор уникального числового идентификатора (ID)

function genID() {
	return Math.floor( Math.random() * 1000 ).toString() + Math.floor( Math.random() * 1000 ).toString() + Math.floor( Math.random() * 1000 ).toString();
}

// Объект, который анализирует имя браузера

var UserAgent = navigator.userAgent.toLowerCase();
var Browser = {
	userAgent	: UserAgent,
	opera			: /opera/.test( UserAgent ),
	mozilla		: ( /mozilla/.test( UserAgent ) && !/(compatible|webkit)/.test( UserAgent ) ),
	msie			: ( /msie/.test( UserAgent ) && !/opera/.test( UserAgent ) ),
  msie6			: ( /msie 6.0/.test( UserAgent ) && !/opera/.test( UserAgent ) ),
	safari		: /webkit/.test( UserAgent ),
  chrome		: /chrome/.test( UserAgent ) 
};

function ieErrorMsg( errorObj ) {
  if ( errorObj && errorObj.name ) {
    var errorMsg = errorObj.name + ', ' + errorObj.message + ' (' + errorObj.description + ')';
    return errorMsg;
  } // if
  
  return errorObj;
} // ieErrorLog

function jsLog( errorObj, jsFile, funcName ) {
  var errorTitle = 'Error:';
  
  if ( jsFile ) {
    var funcInfo = funcName ? ", in function '" + funcName + "'" : ''
    errorTitle = "Error in " + jsFile + funcInfo + ":";
  } // if  
  
  var errorMsg = Browser.msie ? ieErrorMsg( errorObj ) : errorObj;
    
  if ( window.console ) {
    console.log( errorTitle );
    console.log( errorMsg );
  } else {
    alert( errorTitle + "\n" + errorMsg );
  } // if
} // jsLog


function ilog( msg ) {
  if ( window.console ) {
    console.log( msg );
  } // if
} // ilog


// Функция, которая вызывает функцию объекта от его имени
// для того случая, когда объект вместе со своей функцией переданы
// в виде строки, например "myObject.get"

function callFunction( functionName, functionArguments ) {
  var arr = functionName.split( '.' );
  var funcName = arr.pop();
  var callObjName = arr.join( '.' ) || 'window';
  var callObj = eval( callObjName );
  
  if ( !functionArguments ) functionArguments = [];
  
  if ( callObj ) {
    callObj[funcName].apply( callObj, functionArguments );
  } else {
    jsLog( "Object '" + callObjName + "' is undefined" );
  } // if
} // function callFunction

