/*
    Escape'ирование спец.символов ( '<' заменить на '&lt;' ).
*/
function htmlspecialchars( str )
{
    str = str.replace( /&/g, '&amp;' );
    str = str.replace( /\</g, '&lt;' );
    str = str.replace( /\>/g, '&gt;' );
    str = str.replace( /\"/g, '&quot;' );
    return str;
};

/*
    Раз'escape'ирование спец.символов ( '&gt;' заменить на '>' ).
*/
function unhtmlspecialchars( str )
{
    str = str.replace( /&lt;/g, '<' );
    str = str.replace( /&gt;/g, '>' );
    str = str.replace( /&quot;/g, '"' );
    str = str.replace( /&amp;/g, '&' );
    return str;
};

/*
    Замена перевода строки на <br>.
*/
function nl2br( str )
{
    return str.replace( /\n/g, '<br/>' );
};

/*
    Замена <br> переводом строки.
*/
function br2nl( str )
{
    str = str.replace( /\<br\s?\/?\>/g, '\n' );
    return str.replace( /\<BR\>/g, '\n' );
};

/*
    Удаление пробелов в начале и конце строки.
*/
function trim( str )
{
    while( ( ' ' == str[0] ) && ( str.length ) )
        str = str.substring( 1, str.length );

    while( ( ' ' == str[ str.length - 1 ] ) && ( str.length ) )
        str = str.substring( 0, str.length - 1 );

    return str; 
};

/*
    Число атрибутов объекта.
*/
function count( obj )
{
    var cnt = 0;
    
    for( i in obj )
        cnt++;

    return cnt;
};

/*
    Объединение массива со строкой.
*/
if( undefined === Array.prototype.join )
{
	Array.prototype.join = function( str )
	{
	    var result = '';
    	var i;

	    for( i in this )
    	{
        	result += this[i] + str;
	    }

    	result = result.substring( 0, result.length - str.length );

	    return result;
	}
};

/*
    Изменение высоты относительно окна.
*/
function resize( id, delta )
{
    $( '#'+id ).height( $(window).height() - delta );
};

/*
    Форматированное представление timestamp.
*/
function formatTimestamp( format, timestamp1 )
{
    var i, result, date, tmp;

    if( undefined === timestamp1 )
        date = Date();
    else
        date = new Date( timestamp1 * 1000 );

    result = '';
    for( i = 0; i < format.length; i++ )
    {
        switch( format[i] )
        {
            case 'y':
                tmp = date.getFullYear();

                result += tmp % 100;
            break;

            case 'Y':
                tmp = date.getFullYear();

                result += tmp;
            break;

            case 'm':
                tmp = date.getMonth() + 1;

                result += tmp;
            break;

            case 'M':
                tmp = date.getMonth() + 1;

                if( tmp < 10 )
                    result += '0';

                result += tmp;
            break;

            case 'd':
                tmp = date.getDate();

                result += tmp;
            break;

            case 'D':
                tmp = date.getDate();

                if( tmp < 10 )
                    result += '0';

                result += tmp;
            break;

            case 'h':
                tmp = date.getHours();

                result += tmp;
            break;

            case 'H':
                tmp = date.getHours();

                if( tmp < 10 )
                    result += '0';

                result += tmp;
            break;

            case 'i':
                tmp = date.getMinutes();

                if( tmp < 10 )
                    result += '0';

                result += tmp;
            break;

            case 's':
                tmp = date.getSeconds();

                if( tmp < 10 )
                    result += '0';

                result += tmp;
            break;

            default:
                result += format[i];
        }
    }

    return result;
};

