function trim(str)
{
    return str.replace(/^\s+|\s+$/g, '');
}

function urlEncode(str)
{
    if (!str || typeof(str) == 'undefined') return;

    var utf8Array = {};

    var i = j = j2 = 0;
    for (i = 0; i <= 255; i++)
    {
        j = parseInt(i/16); var j2 = parseInt(i%16);
        utf8Array[String.fromCharCode(i)] = ('%' + j.toString(16) + j2.toString(16)).toUpperCase();
    }

    var rusAdditional =
    {
        '_' : '%5F', 'À' : '%C0', 'Á' : '%C1', 'Â' : '%C2', 'Ã' : '%C3', 'Ä' : '%C4', 'Å' : '%C5',
        'Æ' : '%C6', 'Ç' : '%C7', 'È' : '%C8', 'É' : '%C9', 'Ê' : '%CA', 'Ë' : '%CB', 'Ì' : '%CC',
        'Í' : '%CD', 'Î' : '%CE', 'Ï' : '%CF', 'Ð' : '%D0', 'Ñ' : '%D1', 'Ò' : '%D2', 'Ó' : '%D3',
        'Ô' : '%D4', 'Õ' : '%D5', 'Ö' : '%D6', '×' : '%D7', 'Ø' : '%D8', 'Ù' : '%D9', 'Ú' : '%DA',
        'Û' : '%DB', 'Ü' : '%DC', 'Ý' : '%DD', 'Þ' : '%DE', 'ß' : '%DF', 'à' : '%E0', 'á' : '%E1',
        'â' : '%E2', 'ã' : '%E3', 'ä' : '%E4', 'å' : '%E5', 'æ' : '%E6', 'ç' : '%E7', 'è' : '%E8',
        'é' : '%E9', 'ê' : '%EA', 'ë' : '%EB', 'ì' : '%EC', 'í' : '%ED', 'î' : '%EE', 'ï' : '%EF',
        'ð' : '%F0', 'ñ' : '%F1', 'ò' : '%F2', 'ó' : '%F3', 'ô' : '%F4', 'õ' : '%F5', 'ö' : '%F6',
        '÷' : '%F7', 'ø' : '%F8', 'ù' : '%F9', 'ú' : '%FA', 'û' : '%FB', 'ü' : '%FC', 'ý' : '%FD',
        'þ' : '%FE', 'ÿ' : '%FF', '¸' : '%B8', '¨' : '%A8'
    }
    for (i in rusAdditional)
        utf8Array[i] = rusAdditional[i];

    var res = '';
    for (i = 0; i < str.length; i++)
    {
        var simbol = str.substr(i,1);
        res += typeof utf8Array[simbol] != 'undefined' ? utf8Array[simbol] : simbol;
    }

    res = res.replace(/\s/g, '+');
    return res;
}

function openWindow(filename, w, h, winname)
{
    if (filename.match(/\?/))
        filename += '&' + Math.random();
    else
        filename += '?' + Math.random();

    if (!winname) winname = '_blank';
    var desktop = window.open(filename, winname, 'width=' + (w ? w : 700) + ',height=' + (h ? h : 500) + ',toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');
}

function mousePageXY(e)
{
    if (!e) e = window.event;
    if (e.pageX || e.pageY)
    {
        mouse_x = e.pageX;
        mouse_y = e.pageY;
    }
    else if (e.clientX || e.clientY)
    {
        mouse_x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
        mouse_y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
    }
}

document.onmousemove = function(e){var mCur =mousePageXY(e);}

