// < Auto session code >
var sessionImg = new Image(16,16);

function auto_session()
{
    sessionImg.src = siteAdr + '?auto_session=' + Math.random()*1000;
}

// </ Auto session code >

/**
 * Class extends support
 */
function extend(Child, Parent) 
{
    var F = function() { };
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.superclass = Parent.prototype;
}

function wopen(url,name,w,h,r,s,st)
{
    var w = window.open(url,name,"width="+w+",height="+h+",resizable="+r+",toolbar=0,location=0,status="+st+",menubar=0,directories=0,scrollbars="+s);
}

/** 
 * Copy all properties from src to dst 
 */
function mixin(dst, src){
    // tobj - вспомогательный объект для фильтрации свойств,
    // которые есть у объекта Object и его прототипа
    var tobj = {} 
    for(var x in src){
        // копируем в dst свойства src, кроме тех, которые унаследованы от Object
        if((typeof tobj[x] == "undefined") || (tobj[x] != src[x])){
            dst[x] = src[x];
        }
    }
    // В IE пользовательский метод toString отсутствует в for..in
    if(document.all && !document.isOpera){
        var p = src.toString;
        if(typeof p == "function" && p != dst.toString && p != tobj.toString &&
         p != "\nfunction toString() {\n    [native code]\n}\n"){
            dst.toString = src.toString;
        }
    }
}

/**
 * Auto errors checking by rules
 *
 * length:  1 - left limit, 2 - right limit
 * email:   no params 
 */
function check_errors(srcObj, frm, rules)
{
    var e;
    var r;
    for(var field in rules)
    {
    	if (null == frm || null == frm.elements[field])
    	{
    		e = _v(field);
    		if (null == e)
    			continue;
    	}
    	else
    		e = frm.elements[field];

    	r    = rules[field];
        flag = false;

        for (var j = 0; j < r.length; j++)
        {
            if ('length' == r[j][0])
            {
                flag = r[j][1] <= e.value.length;
           
                if (2 < r.length)
                    flag = flag && e.value.length <= r[j][2];
            }
            else if ('numeric' == r[j][0])
            	flag = isNumeric(e.value);
            else if ('url' == r[j][0])
            	flag = verify_url(e.value);
            else if ('email' == r[j][0])
                flag = verify_email(e.value);
            else if ('func' == r[j][0])
                flag = r[j][1](e);
            else
                flag = r[j][0];
        }

        if (!flag)
        {
            if (!srcObj.mErrFlag)
            {
                srcObj.mErrFlag = true;
                e.focus();
            }

            set_error(e);
        }
        else
           set_ok(e);
   }

    return srcObj.mErrFlag;
}

/**
 * Auto errors checking by rules: set error
 */
function set_error(field)
{
    if (!/bgerr/.test(field.className))
    {
       if (/bgok/.test(field.className))
           field.className = field.className.replace('bgok', 'bgerr');
       else
           field.className += field.className ? ' bgerr' : 'bgerr';
    }
}

/**
 * Auto errors checking by rules: set ok
 */
function set_ok(field)
{
    if (!/bgok/.test(field.className))
    {
       if (/bgerr/.test(field.className))
           field.className = field.className.replace('bgerr', 'bgok')
       else
           field.className += field.className ? ' bgok' : 'bgok';
    }
}

/**
 * Auto errors checking by rules: clear background
 */
function clear_errs(frm)
{
    var cnt = frm.elements.length;

    for (var i = 0; i < cnt; i++)
    {
        frm.elements[i].className = frm.elements[i].className.replace(/(bgerr|bgok)/, '');
    }
}

function _s(searchClass,node,tag)
{
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

function formatItem3(row)
{
    return row[1] + (0 < row[2].length ? ', ' + row[2] : '') + ', ' + row[3];
}

function formatItem2(row)
{
    return row[1] + ', ' + row[2];
}

function formatItem(row) 
{
    return row[1];
}      

function Go(link) {
    document.location=link;
    return true;
}

function CGo(link, mesg) {
    if (confirm(mesg))
    {
        document.location=link;
        return true;
    }
}

function _v(id) {
    return document.getElementById(id);
}

function SHBl( id ) {
    _v( id ).style.display = ('none' == _v( id ).style.display) ? 'block' : 'none';
}

function sum_all(ar)
{
    var cnt = ar.length;
    var res = 0;

    for (var i = 0; i < cnt; i++)
    {
        res += ar[i];
    }

    return res;
}

function getcookie(name) 
{
    var cookie = ' ' + document.cookie;
    var search = ' ' + name + '=';
    var setStr = null;
    var offset = 0;
    var end    = 0;
    if (0 < cookie.length) 
    {
        offset = cookie.indexOf(search);
        if (-1 != offset) 
        {
            offset += search.length;
            end = cookie.indexOf(';', offset)
            
            if (-1 == end)
                end = cookie.length;

            setStr = unescape(cookie.substring(offset, end));
        }
    }

    return(setStr);
}

function setcookie(name, value, expires, path, domain, secure) 
{
    if (null == path)
        path = '/';
    if (null == expires)
        expires = "Wednesday, 18-Sep-30 23:12:40 GMT";
    document.cookie = name + '=' + escape(value) +
        ((expires) ? '; expires=' + expires : '') +
        ((path) ? '; path=' + path : '') +
        ((domain) ? '; domain=' + domain : '') +
        ((secure) ? '; secure' : '');
}


reloadUrl  = '';
stopReload = false;

function StartReload(url)
{
    reloadUrl = url;
    setTimeout('GoReloadUrl()', 200000);
}

function GoReloadUrl()
{
    if (stopReload)
        return;

    self.location = reloadUrl;
}

function clearSelect(obj)
{
    var cnt = obj.options.length;

    for (var i = cnt - 1; i >= 0; i--)
    {
        obj.options[i] = null;
    }
}

function clearSelect2(obj, gr1)
{
    var cnt = obj.options.length;

    for (var i = cnt - 1; i >= gr1; i--)
    {
        obj.options[i] = null;
    }
}

function deb(d, l) 
{
    if (l == null) l = 1;
    var s = '';
    if (typeof(d) == 'object') 
    {
        s += typeof(d) + " {\n";
        for (var k in d) 
        {
            for (var i=0; i<l; i++) 
                s += "  ";

            s += k+": " + deb(d[k],l+1);
        }
        for (var i=0; i<l-1; i++) 
            s += "  ";

        s += "}\n"
    } 
    else 
        s += '' + d + "\n";

    return s;
}

function findInSelect(obj, val, type)
{
    var cnt = obj.options.length;

    if (2 == type)
    {
        for (var i = 0; i < cnt; i++)
        {
            if (obj.options[i].text == val)
            {
                obj.options[i].selected = true;
                break;
            }
        }
    }
    else
    {
        for (var i = 0; i < cnt; i++)
        {
            if (obj.options[i].value == val)
            {
                obj.options[i].selected = true;
                break;
            }
        }
    }
}

function adiv(res)
{
    return res ? 'block':'none';
}

function _vo(id)
{
    return window.opener.document.getElementById(id);
}

function _vstl(id, param, val)
{
    switch(param)
    {
        case 'bg':
            document.getElementById(id).style.backgrounColor = val;
            break;
        case 'c':
            document.getElementById(id).style.color = val;
            break;
    }
}

function in_array(needle, haystack)
{
    var len = haystack.length;
    for (var i = 0; i < len; i++)
    {
        if (needle == haystack[i])
            return true;
    }

    return false;
}

function in_arrayi(needle, haystack)
{
    var len = haystack.length;
    needle = needle.toLowerCase();
    for (var i = 0; i < len; i++)
    {
        if (needle == haystack[i].toLowerCase())
            return true;
    }

    return false;
}

function make_hidden(idnum)
{
   if (_v(idnum).style.display == 'none')
       _v(idnum).style.display = 'block';
   else
       _v(idnum).style.display = 'none';
}

function mhidden(idnum1,idnum2)
{
    _v(idnum1).style.display = 'none';
    _v(idnum2).style.display = 'block';
}

function verify_email(email)
{
    if (7 > email.length)
       return false;

    var zones = new Array(
            'ac','ad','ae','af','ag','ai','al','am','an','ao','aq','ar','as','at','au','aw','az',
            'ax','ba','bb','bd','be','bf','bg','bh','bi','bj','bm','bn','bo','br','bs','bt','bv',
            'bw','by','bz','ca','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr','cs',
            'cu','cv','cx','cy','cz','de','dj','dk','dm','do','dz','ec','ee','eg','eh','er','es',
            'et','eu','fi','fj','fk','fm','fo','fr','ga','gb','gd','ge','gf','gg','gh','gi','gl',
            'gm','gn','gp','gq','gr','gs','gt','gu','gw','gy','hk','hm','hn','hr','ht','hu','id',
            'ie','il','im','in','io','iq','ir','is','it','je','jm','jo','jp','ke','kg','kh','ki',
            'km','kn','kp','kr','kw','ky','kz','la','lb','lc','li','lk','lr','ls','lt','lu','lv',
            'ly','ma','mc','md','mg','mh','mk','ml','mm','mn','mo','mp','mq','mr','ms','mt','mu',
            'mv','mw','mx','my','mz','na','nc','ne','nf','ng','ni','nl','no','np','nr','nu','nz',
            'om','pa','pe','pf','pg','ph','pk','pl','pm','pn','pr','ps','pt','pw','py','qa','re',
            'ro','ru','rw','sa','sb','sc','sd','se','sg','sh','si','sj','sk','sl','sm','sn','so',
            'sr','st','sv','sy','sz','tc','td','tf','tg','th','tj','tk','tl','tm','tn','to','tp',
            'tr','tt','tv','tw','tz','ua','ug','uk','um','us','uy','uz','va','vc','ve','vg','vi',
            'vn','vu','wf','ws','ye','yt','yu','za','zm','zw', 'su',
            'aero','biz','cat','com','coop','info','jobs','mobi','museum','name','net',
            'org','pro','travel','gov','edu','mil','int'
            );

    var regEmail = /^[\w-\.]+@([\w-]+\.)+([\w-]{2,4})$/;

    var myArr = regEmail.exec(email);

    if (null == myArr)
       return false;

    if (!in_arrayi(myArr[2], zones))
       return false;

    return true;
}
var url3;
function verify_url (url)
{
	    if (4 > url.length)
	       return false;

	    var zones = new Array(
	            'ac','ad','ae','af','ag','ai','al','am','an','ao','aq','ar','as','at','au','aw','az',
	            'ax','ba','bb','bd','be','bf','bg','bh','bi','bj','bm','bn','bo','br','bs','bt','bv',
	            'bw','by','bz','ca','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr','cs',
	            'cu','cv','cx','cy','cz','de','dj','dk','dm','do','dz','ec','ee','eg','eh','er','es',
	            'et','eu','fi','fj','fk','fm','fo','fr','ga','gb','gd','ge','gf','gg','gh','gi','gl',
	            'gm','gn','gp','gq','gr','gs','gt','gu','gw','gy','hk','hm','hn','hr','ht','hu','id',
	            'ie','il','im','in','io','iq','ir','is','it','je','jm','jo','jp','ke','kg','kh','ki',
	            'km','kn','kp','kr','kw','ky','kz','la','lb','lc','li','lk','lr','ls','lt','lu','lv',
	            'ly','ma','mc','md','mg','mh','mk','ml','mm','mn','mo','mp','mq','mr','ms','mt','mu',
	            'mv','mw','mx','my','mz','na','nc','ne','nf','ng','ni','nl','no','np','nr','nu','nz',
	            'om','pa','pe','pf','pg','ph','pk','pl','pm','pn','pr','ps','pt','pw','py','qa','re',
	            'ro','ru','rw','sa','sb','sc','sd','se','sg','sh','si','sj','sk','sl','sm','sn','so',
	            'sr','st','sv','sy','sz','tc','td','tf','tg','th','tj','tk','tl','tm','tn','to','tp',
	            'tr','tt','tv','tw','tz','ua','ug','uk','um','us','uy','uz','va','vc','ve','vg','vi',
	            'vn','vu','wf','ws','ye','yt','yu','za','zm','zw', 'su',
	            'aero','biz','cat','com','coop','info','jobs','mobi','museum','name','net',
	            'org','pro','travel','gov','edu','mil','int'
	            );

	    var regUrl = /^([0-9a-z_\-\.\/])+\.([\w-]{2,6})$|i/;
	    url = url.replace('http://', '');
	    var myArr = regUrl.exec(url);
	    if (null == myArr)
	       return false;
	    
	    if (!substr_count(myArr[0],'http://') || (1 < substr_count(myArr[0],'http://')))
	    {   
	    	url2 = myArr[0];
	        url2 = url2.replace('http://', '');
	    	url3 = 'http://'+url2;
	    }
	    else if(1 >= substr_count(myArr[0],'http://'))
	    {
	        url3 = myArr[0];
	    }

	    if (!in_arrayi(myArr[2], zones))
	       return false;

	    return true;
}
function substr_count(string,substring,start,length)
{
 var c = 0;
 if(start) { string = string.substr(start); }
 if(length) { string = string.substr(0,length); }
 for (var i=0;i<string.length;i++)
 {
  if(substring == string.substr(i,substring.length))
  c++;
 }
 return c;
}

function isDigit(charCode) { return (charCode >= 48 && charCode <= 57) }
function isLat(charCode)   { return ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122)) }
function isRus(charCode)   { return (charCode >= 1040 && charCode <= 1103) }
function filter(evt,set,exc,x) 
{ //set= 1 - digit 2 - lat 4 - rus; x=кроме set
    evt = (evt) ? evt : ((event) ? event : null);
    if (evt) 
    {
        var charCode = (evt.charCode || evt.charCode == 0) ? evt.charCode :
            ((evt.keyCode) ? evt.keyCode : evt.which);

        if (charCode > 13 && !x^(!(set&1 && isDigit(charCode)) && !(set&2 && isLat(charCode)) && !(set&4 && isRus(charCode)) && exc.indexOf(String.fromCharCode(charCode))==-1)) 
        {
            if (evt.preventDefault) { evt.preventDefault(); } else { evt.returnValue = false; return false; }
        }
    }
}
function isNumeric(str)
{
  if (str.length == 0) return false;
  for (var i=0; i < str.length; i++)
     {
      var ch = str.substring(i, i+1);
      if ( ch < "0" || ch>"9" || str.length == null)  return false;
    }
  return true;
}

function checkRow(obj, val)
{
    stopReload = true;
    obj.elements['check[' + val +']'].checked = true;
}

function selControl(obj)
{
     var i;
     var reg = /^check/;
     var result;
     for (i = 0; i < obj.form.elements.length; i++)
     {
         if (reg.test(obj.form.elements[i].name))
             obj.form.elements[i].checked = obj.checked;
     }
}

function dec(code,encrypted) 
{   
    var strCodes = new Array('!','"','#','$','%','&',"'",'(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');

    var num = encrypted[0] - 0x41;
    var encrypted_email = encrypted.slice(1,encrypted.length - num);    
    var email = '';
    for (var i = 0; i < encrypted_email.length; i++) {      
        email += strCodes[(encrypted_email[i] ^ code) - 0x21];
    }
    return email;
}

var mainEmail = dec(31,[82,108,106,111,111,112,109,107,95,108,124,109,118,125,125,115,122,49,124,112,114,12,149,236,168,50,99,191,207,246,91,40,239,241,143,42,228,246]);

function max_length_control(evt,obj,max_l) 
{
    evt = (evt) ? evt : ((event) ? event : null);

    var charCode = (evt.charCode || evt.charCode == 0) ? evt.charCode :
            ((evt.keyCode) ? evt.keyCode : evt.which);

    if (evt && charCode > 12 && obj.value.length  > max_l) 
    {
       if (evt.preventDefault) { evt.preventDefault(); } else { evt.returnValue = false; return false; }
    }
     
}
