// возвращает объект с указанным id или false
function element( sID )
{
	if( document.getElementById )
	{
		var oElement = document.getElementById(sID);
		return oElement == null ? false : oElement;
	}
	return false;
};
// возвращает массив дочерних элементов имеющих определенное имя тега или пустой массив
function byTagName( oElement, sTagName )
{
	if( oElement != false )
	{
		var aElements = oElement.getElementsByTagName(sTagName);
		return aElements;
	}
	return new Array();
};
function create( sTagName )
{
	return document.createElement( sTagName );
};
function createText( sText )
{
	return document.createTextNode( sText );
};
/*----------------------------------------------------------------------------*/
// добавляет атрибут target="_blank" всем ссылкам у которых есть атрибут rel="external"
function useTarget() { if( element('doc') ) { var refs = byTagName( element('doc'), 'a' ); for( var i = 0; i < refs.length; i++ ){ if( refs[i].getAttribute("href") && ( refs[i].getAttribute("rel") == "external" || refs[i].getAttribute("rel") == 'ext' ) ) { refs[i].target = "_blank"; }; }; }; return; };
// преобразует защищенные ссылки
function hiddenMail( sLogin, sServer ) { var sHref = '\x6d\x61\x69\x6c\x74\x6f\x3a' + sLogin + '\x40' + sServer; window.location.href = sHref; };

String.prototype.contains = function( str )
{
    return this.indexOf( str ) > -1;
};
function start( params )
{// DOM загружен
	useTarget();

    var el = element('search');
    if(el)
    {
        if( ua.indexOf('firefox') != -1 )
        {
            el.style.paddingBottom = '4px';
        }
        else if( ua.indexOf('opera') != -1 )
        {
            el.style.paddingBottom = '2px';
            el.style.paddingLeft = '10px';
        }
    }
    var el = element('search-company-btn');
    if(el)
    {
        if( ua.indexOf('firefox') != -1 )
        {
            el.style.paddingBottom = '4px';
        }
    }    
    // переключатель поиска
    el = element('search-options');
    if(el)
    {
        var hrefs = byTagName( el, 'a' );
        var hrefsCount = hrefs.length;
        for( var i = 0; i < hrefsCount; i++ )
        {
            addEvent( hrefs[i], 'click', toggleSearch );
        }
    }
    // переключатель каталогов
    el = element('switch');
    var _content = element('content');
    if(el)
    {
        var hrefs = byTagName( el, 'a' );
        var hrefsCount = hrefs.length;
        for( var i = 0; i < hrefsCount; i++ )
        {
            addEvent( hrefs[i], 'click', toggleList );
        }
    }
    if( _content )
    {
        var _uls = byTagName( _content, 'ul' );
        var _ulsCount = _uls.length;
        var uls = [];
        for( var i = 0; i < _ulsCount; i++ )
        {
            if( _uls[i].className.contains('list') )
            {
                uls[uls.length] = _uls[i];
            }
        }
        if( uls.length > 0 )
        {
            if( !uls[0].className.contains( 'active' ) )
            {
                uls[0].className += ' inactive';
            }
            else if( !uls[1].className.contains( 'active' ) )
            {
                uls[1].className += ' inactive';            
            }
            
        }
    }
    // убираем кнопку ОК в форме смены количества объявлений на страницу
    el = element('change-epp');
    if(el)
    {
        el.style.display = 'none';
    }
    if( modern == false )
    {
        // круглые уголки снизу выделенных вакансий/резюме
        var divs = byTagName( element('doc'), 'div' );
        var divsCount = divs.length;
        for( var i = 0; i < divsCount; i++ )
        {
            if( divs[i].className == 'marked-entry' )
            {
                var _new = create('div');
                _new.className = 'me-after';
                _new.innerHTML = '&#160;';
                insertAfter(divs[i],_new);
            }
        }
        // before и after для ссылок сортировки
        var el = element('sort');
        if(el)
        {
            var sp = el.className.contains('sp') ? '-sp' : '';
            var hrefs = byTagName(el, 'a');
            var hrefsCount = hrefs.length;
            for( var i = 0; i < hrefsCount; i++ )
            {
                var _new = create('div');
                if( hrefs[i].className.contains('desc') )
                {
                    _new.className = 'sl-before-desc'+sp;
                }
                else if( hrefs[i].className.contains('asc') )
                {
                    _new.className = 'sl-before-asc'+sp;
                }
                else
                {
                    _new.className = 'sl-before'+sp;
                }
                _new.innerHTML = '&#160;';
                if(el.className.contains('sp'))
                {
                    insertAfter(hrefs[i], _new);
                }
                else
                {
                    hrefs[i].parentNode.insertBefore(_new, hrefs[i]);
                }
            }
        }
        // круглые уголки для пользовательской панели в правой колонке
        var el = element('user-pane');
        if( el )
        {
            var _new = create('div');
            _new.className = 'up-before';
            el.parentNode.insertBefore(_new, el);
            _new = create('div');
            _new.className = 'up-after';
            insertAfter(el, _new);
            
            // перенос зарплат
            var uls = byTagName( el, 'ul' );
            var ulsCount = uls.length;
            for( var i = 0; i < ulsCount; i++ )
            {
                if( uls[i].className == 'favorite' )
                {
                    var lis = byTagName( uls[i], 'li' );
                    var lisCount = lis.length;
                    for( var j = 0; j < lisCount; j++ )
                    {
                        if( parseInt(lis[j].offsetHeight) > 27 )
                        {
                            lis[j].innerHTML = lis[j].innerHTML.replace( /\(/, '<br />(' );
                        }
                    }
                }
            }
        }
        // before и after для краткого описания вакансии/резюме
        el = element('short-desc');
        if(el)
        {
            var _new = create('div');
            _new.id = 'sd-before';
            el.parentNode.insertBefore(_new, el);
            _new = create('div');
            _new.id = 'sd-after';
            insertAfter(el, _new);
        }
        // nowrap не всегда помогает
        el = element('employee');
        if(el && ua.contains('msie 5.0'))
        {
            var ps = byTagName(el, 'p');
            var psCount = ps.length;
            for( var i = 0; i < psCount; i++ )
            {
                if( ps[i].className == 'phone' )
                {
                    ps[i].innerHTML = '<nobr>' + ps[i].innerHTML.replace( / /g, '&#160;' ) + '</nobr>';
                    break;
                }
            }
        }
        // круглые уголки у блоков активных и архивных резюме/вакансий
        el = element('vr-active');
        if( el )
        {
            var _new = create('div');
            _new.id = 'vr-active-before';
            el.parentNode.insertBefore(_new, el);
            _new = create('div');
            _new.id = 'vr-active-after';
            insertAfter(el, _new);
        }
        el = element('vr-archive');
        if( el )
        {
            var _new = create('div');
            _new.id = 'vr-archive-before';
            el.parentNode.insertBefore(_new, el);
            _new = create('div');
            _new.id = 'vr-archive-after';
            insertAfter(el, _new);
        }
    }
    // поля, текст по-умолчанию в которых должен пропадать при фокусе и появляться при потере фокуса если нет значения в поле
    var _inputs = byTagName(element('doc'), 'input');
    var inputsCount = _inputs.length;
    for( var i = 0; i < inputsCount; i++ )
    {
        if(_inputs[i].className.contains('auto'))
        {
            defaultTxt[_inputs[i].id] = _inputs[i].value;
            addEvent(_inputs[i], 'focus', aiFocus);
            addEvent(_inputs[i], 'blur', aiBlur);
        }
    }
    
    el = element('epp');
    if(el)
    {
        addEvent( el, 'change', changeEPP );
    }
	$('#signIn2').click(function(){
		var login2 = $('#login2').val();
		var password2 = $('#a-password').val();
		$.post(host + '/index.php/user/j_login/', {password2: password2, login2: login2}, 
					function(data){
						var parts = data.split( '|||' );
						if( parts[0] == 'true' )
						{
							alert( 'Ошибка авторизации' );
						}
						$("#j_login").html(parts[1]);
						start();
					}); 
		return false;
	});
	$('#logoutUser').click(function(){
		$.post(host + '/index.php/user/j_logout/', {password2: '', login2: ''}, 
					function(data){
						$("#j_login").html(data);
						start();
					}); 
		return false;
	});

	$('#soaHidden').after('<span id="hiddenVisible">Другие</span>');
	$('#soaHidden').css( { 'display':'none' } );
	$('#hiddenVisible').css( { 'cursor':'pointer', 'background-color':'#F0D5D5', 'font-weight':'bold' } );
	$('#hiddenVisible').toggle(
		function () {
			$(this).html('Другие');
			$('#soaHidden').css( { 'display':'inline' } );
		},
		function () {
			$(this).html('Свернуть');
			$('#soaHidden').css( { 'display':'none' } );
		}

    );
	
	$('#soaVisible').after('<span id="hiddenVisible">Свернуть</span>');
	$('#hiddenVisible').css( { 'cursor':'pointer', 'background-color':'#F0D5D5', 'font-weight':'bold' } );
	$('#hiddenVisible').toggle(
		function () {
			$(this).html('Свернуть');
			$('#soaVisible').css( { 'display':'none' } );
		},
		function () {
			$(this).html('Другие');
			$('#soaVisible').css( { 'display':'inline' } );
		}

    );

}
var trs = new Object();
var trs2 = new Object();
var defaultTxt = {};
function aiFocus(e){var obj=ie ? e.srcElement : this;if(obj.value==defaultTxt[obj.id]){obj.value = '';};};
function aiBlur(e){var obj=ie ? e.srcElement : this;if(obj.value==''){obj.value = defaultTxt[obj.id];};};

function changeEPP()
{
    var el = element('epp-form');
    if(el)
    {
        el.submit();
    }
}

function toggleSearch(e)
{
    var el = element('search-options');
    if(el)
    {
        var lis = byTagName( el, 'li' );
        var lisCount = lis.length;
        for( var i = 0; i < lisCount; i++ )
        {
            lis[i].className = '';
        }
        var obj = ie ? e.srcElement : this;
        obj.parentNode.className = 'active';
        for( i = 0; i < lisCount; i++ )
        {
            if( lis[i].className == 'active' )
            {
                var _scope = element('search-scope');
                _scope.value = i;
				var advSL = byTagName( element('advanced-search'), 'a' );
				for( var i = 0; i < advSL.length; i++ )
				{
					advSL[i].href = host + '/index.php/job/advanced/?search-scope='+_scope.value;
					
				}
                var ex = byTagName( element('search-example'), 'a' );
                for( var i = 0; i < ex.length; i++ )
				{
					ex[i].href = ex[i].href.replace( /search-scope=\d/g, 'search-scope='+_scope.value );
				}
				break;
            }
        }
		
    }
    preventDefault(e);
}
function toggleList(e)
{
    var el = element('switch');
    var _content = element('content')
    if(el && _content)
    {
        var _uls = byTagName( _content, 'ul' );
        var _ulsCount = _uls.length;
        var uls = [];
        for( var i = 0; i < _ulsCount; i++ )
        {
            if( _uls[i].className.contains('list') )
            {
                uls[uls.length] = _uls[i];
            }
        }
        var lis = byTagName( el, 'li' );
        lis[0].className = '';
        lis[1].className = '';
        
        var obj = ie ? e.srcElement : this;
        obj.parentNode.className = 'active';
        if(lis[0].className == 'active')
        {
            uls[0].className = uls[0].className.replace( / inactive/, ' active' );
            uls[1].className = uls[1].className.replace( / active/, ' inactive' );
        }
        else if(lis[1].className == 'active')
        {
            uls[0].className = uls[0].className.replace( / active/, ' inactive' );
            uls[1].className = uls[1].className.replace( / inactive/, ' active' );
        }
    }
    preventDefault(e);
}
function closeWnd()
{
    var wnd = element('wnd-add2cart');
    if(wnd){wnd.parentNode.removeChild(wnd);};
    wnd = element('wnd-authmsg');
    if(wnd){wnd.parentNode.removeChild(wnd);};
    wnd = element('wnd-askaboutcart');
    if(wnd){wnd.parentNode.removeChild(wnd);};
}
//------------------------------------------------------------------------------
var ie = /*@cc_on!@*/false;
var modern = true;
var ua = navigator.userAgent.toLowerCase();
if( ua.indexOf('msie') != -1 && ua.indexOf('opera') == -1 && ua.indexOf('msie 8') == -1 ){modern=false;};
// добавляет обработчики событий
// o - объект, к котором надо добавить событие
// e - название события
// f - имя функции
function addEvent(o,e,f){if(o){if(ie){o.attachEvent('on'+e,f);}else{o.addEventListener(e,f,false);};};}
// для отмены перехода по ссылке
function preventDefault(e)
{
	e = e || event;
	if(e.preventDefault){e.preventDefault();}
	else{e.returnValue=false;};
}
// вставляет newNode после obj
function insertAfter(obj,newNode){obj.parentNode.insertBefore(newNode,obj.nextSibling);}
// добавляет таблицу модификаций после формы
function appendModifications()
{
// убираем текущую таблицу и листалку
    var el = element('cars');
    if(el && el.parentNode.id != 'hiddenContainer' ){el.parentNode.removeChild(el);};
    el = element('parts');
    if(el){el.parentNode.removeChild(el);};            
    el = element('pages');
    if(el && el.parentNode.id != 'hiddenContainer' ){el.parentNode.removeChild(el);};
    el = element('folders');
    if(el){el.parentNode.removeChild(el);};
    
    el = element('cars');
    if(el){insertAfter(element('pick-up-form'),el);};
    el = element('pages');
    if(el){insertAfter(element('cars'),el);};
    // убираем ссылки и вставляем span'ы в таблицу автомобилей. назначаем обработчик onclick
    enhanceCarsTable(element('cars'));
    // очищаем временный контейнер
    element('hiddenContainer').innerHTML = '';
}
function add2cart(e)
{
	/*var obj = ie ? e.srcElement : this;
	var pid = obj.id.substr( 3 );
	var amount = document.getElementById('order'+pid).value;
	amount = isNaN(amount) ? 1 : Math.round(Math.abs(amount));
	vXMLHTTP.sendRequest( 'add2cart', pid+'|'+amount );*/
    var product = element( 'productID' );
    var amount = element( 'amount' );
    var el = element('parts');
    if(el)
    {
        vXMLHTTP.sendRequest( 'add2cart', product.value + '|' + amount.value );
    }
    el = element('cart');
    if(el)
    {
        vXMLHTTP.sendRequest( 'add2cartFromCart', product.value + '|' + amount.value );
    }
    preventDefault(e);
}
function add2cart2(e)
{
	e = e || window.event;
    if( e.keyCode == 13 )
    {
        var product = element( 'productID' );
        var amount = element( 'amount' );
        var el = element('parts');
        if(el)
        {
            vXMLHTTP.sendRequest( 'add2cart', product.value + '|' + amount.value );
        }
        el = element('cart');
        if(el)
        {
            vXMLHTTP.sendRequest( 'add2cartFromCart', product.value + '|' + amount.value );
        }
    }
}
scriptLoaded=true;
//------------------------------------------------------------------------------
// изображение действия для ajax
var loadingImg = new Image();
loadingImg.src = host + "/sitedesign/images/loading.gif";
//alert(loading);
//alert(loading.src);
// объект vxml
var vxml = {
	useActiveX: typeof ActiveXObject != 'undefined',
	useXMLHTTP: typeof XMLHttpRequest != 'undefined'
}
vxml.XMLHTTP_Versions = [ 'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP' ];
// объект vXMLHTTP, посредством этого объекта происходит вся работа
function vXMLHTTP() {}
// создание запроса
vXMLHTTP.createRequest = function()
{
	if( vxml.useXMLHTTP == true )
	{// FF, Opera, Safari, etc
		return new XMLHttpRequest();
	}
	else if( vxml.useActiveX == true )
	{// IE
		if( !vxml.XMLHTTP_Version )
		{
            var versionsAmount = vxml.XMLHTTP_Versions.length
			for( var i = 0; i < versionsAmount; i++ )
			{
				try
				{
					new ActiveXObject( vxml.XMLHTTP_Versions[i] );
					vxml.XMLHTTP_Version = vxml.XMLHTTP_Versions[i];
					break;
				}
				catch( error ){}
			}
		}
		if( vxml.XMLHTTP_Version )
		{
			return new ActiveXObject( vxml.XMLHTTP_Version );
		}
		else
		{
			throw new Error( 'Невозможно создать запрос XMLHTTP' );
		}
	}
	else
	{
		throw new Error( 'Ваш браузер не поддерживает AJAX' );
	}
}
// функция выводит изображения действия
vXMLHTTP.showActionIcon = function()
{
    var b = element('doc');
    // если изображение действия ajax уже выведено, убираем его
    var loading = element('loading');
    if(loading){loading.parentNode.removeChild(loading);};
	var icon = document.createElement('div');
	icon.id = 'loading';
    if( ie == true )
    {
        // в IE нужно сначала добавить элемент, а потом назначать ему стили
		b.appendChild( icon );
        // высота расположения изображения действия
        var h = (document.documentElement.scrollTop+300)+'px';
    }
    else
    {
        // высота расположения изображения действия
        var h = window.scrollY + screen.availHeight / 2 - 54 + 'px';
    }
    // стили и позиционирование
    icon.style.top = h;
    icon.style.left = '50%';
    icon.style.position = 'absolute';
    icon.style.zIndex = '128';
    icon.style.border = '2px solid #3185C2';
    icon.style.width = '50px';
    icon.style.height = '40px';
    icon.style.marginLeft = '-27px';
    icon.style.background = '#FFF';
    icon.style.textAlign = 'center';
    icon.style.paddingTop = '10px';
    var animation = document.createElement('img');
    animation.src = loadingImg.src;
    icon.appendChild(animation);    
	if( ie == false )
	{
		b.appendChild( icon );
	}
}
// функция создает невидимый временный контейнер для данных
vXMLHTTP.createHiddenContainer = function()
{
    var b = element('doc');
    // если контейнер уже создан - делаем его пустым
    var container = element('hiddenContainer');
    if(container){container.innerHTML = '';}
    else
    {
        container = create('div');
        container.id = 'hiddenContainer';
        // в IE нужно сначала добавить элемент, а потом назначать ему стили
        if(ie==true){b.appendChild(container);};
        container.style.display = 'none';
        if(ie==false){b.appendChild(container);};
    };
};
vXMLHTTP.checkCart = function(e)
{
	var params = new Array();
    var address = host;
	var param = '';
	var sbody = '';
    
    address += '/index.php/trade/j-checkcart/';
    vXMLHTTP.showActionIcon();
    param = encodeURIComponent( 'time' );
    param += "=" + encodeURIComponent( time+Math.random() );
    params.push(param);
    sbody = params.join("&");
    var oXmlHTTP = vXMLHTTP.createRequest();
    oXmlHTTP.open( "post", address, true );
    oXmlHTTP.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
    // назначаем обработчик результата
    oXmlHTTP.onreadystatechange = function()
    {
        if(oXmlHTTP.readyState == 4 )
        {
            if(oXmlHTTP.status == 200)
            {// успех
                //alert(address);
                //alert(oXmlHTTP.responseText);
                vXMLHTTP.logout(oXmlHTTP.responseText);
            }
            else
            {// возникла ошибка
                vXMLHTTP.saveRequest("Error: " + oXmlHTTP.statusText);
            }
        }
    }
    // посылаем запрос
    oXmlHTTP.send(sbody); 
    preventDefault(e);
}
vXMLHTTP.logout = function(response)
{
    setTimeout( "{var n = element('loading'); if(n) {n.parentNode.removeChild( n);}}", 10 );
    if( response == 1 )
    {
        askAboutCart();
    }
    else
    {
        window.location.href = host + '/index.php/user/logout/';
    }
}
// функция отправки запроса
vXMLHTTP.sendRequest = function( action, value )
{
	var params = new Array();
	var address = host;
	var param = '';
	var sbody = '';
	var async = true;
    var el;
	switch(action)
	{
        case 'j-get-da-details':
            param = encodeURIComponent( 'addr' );
			param += "=" + encodeURIComponent( value );
			params.push(param);
			address += '/index.php/user/j-get-da-details/';
			break;
		case 'j-get-models':
			param = encodeURIComponent( 'make' );
			param += "=" + encodeURIComponent( value );
			params.push(param);
			address += '/index.php/spares/j-get-models/';
			break;
		case 'j-get-selects':
            //alert(element('model').options[element('model').selectedIndex]);
            param = encodeURIComponent( 'make' );
            param += "=" + encodeURIComponent( element('make').value );
            params.push(param);
            param = encodeURIComponent( 'model' );
            param += "=" + encodeURIComponent( element('model').value );
            params.push(param);
            param = encodeURIComponent( 'engine-type' );
            param += "=" + encodeURIComponent( vXMLHTTP.escapeToUnNormal(element('engine-type').value) );
            params.push(param);
            param = encodeURIComponent( 'body-type' );
            param += "=" + encodeURIComponent( vXMLHTTP.escapeToUnNormal(element('body-type').value) );
            params.push(param);
            param = encodeURIComponent( 'engine-code' );
            param += "=" + encodeURIComponent( element('engine-code').value );
            params.push(param);
            param = encodeURIComponent( 'body-code' );
            param += "=" + encodeURIComponent( element('body-code').value );
            params.push(param);
            param = encodeURIComponent( 'capacity' );
            param += "=" + encodeURIComponent( element('capacity').value );
            params.push(param);
            param = encodeURIComponent( 'horsepower' );
            param += "=" + encodeURIComponent( element('horsepower').value );
            params.push(param);
            param = encodeURIComponent( 'model-year' );
            param += "=" + encodeURIComponent( element('model-year').value );
            params.push(param);
            param = encodeURIComponent( 'drive' );
            param += "=" + encodeURIComponent( vXMLHTTP.escapeToUnNormal(element('drive').value) );
            params.push(param);
            address += '/index.php/spares/j-get-selects/';
			break;
        case 'add2cart':
            var parts = value.split( '|' );
            param = encodeURIComponent( 'id' );
            param += "=" + encodeURIComponent( parts[0] );
            params.push(param);
            param = encodeURIComponent( 'amount' );
            param += "=" + encodeURIComponent( parts[1] );
            params.push(param);
            address += '/index.php/spares/j-add2cart/';
            break;
        case 'add2cartFromCart':
            var parts = value.split( '|' );
            param = encodeURIComponent( 'id' );
            param += "=" + encodeURIComponent( parts[0] );
            params.push(param);
            param = encodeURIComponent( 'amount' );
            param += "=" + encodeURIComponent( parts[1] );
            params.push(param);
            param = encodeURIComponent( 'from' );
            param += "=" + encodeURIComponent( 'cart' );
            params.push(param);
            address += '/index.php/spares/j-add2cart/';
            break;
		case 'bookmark':
			param = encodeURIComponent( 'pid' );
			param += "=" + encodeURIComponent( pid );
			params.push(param);
			param = encodeURIComponent( 'object' );
			param += "=" + encodeURIComponent( object );
			params.push(param);
			param = encodeURIComponent( 'time' );
			param += "=" + encodeURIComponent( time+Math.random() );
			params.push(param);
			sbody = params.join("&");
			address = host+'/index.php/job/j_bookmark/';
			break;
	}
    if( address != host )
    {// если запрос определен, предпринимаем действия
        // вывод изображение действия
        vXMLHTTP.showActionIcon();
        // создаем контейнер если необходимо вернуть данные, для которых контейнер не предусмотрен, либо которые используют контейнер совместно с другими данными
        vXMLHTTP.createHiddenContainer();
        // добавляем время, чтобы не кешировалось и формируем тело запроса
        param = encodeURIComponent( 'time' );
        param += "=" + encodeURIComponent( time+Math.random() );
        params.push(param);
        sbody = params.join("&");
        //alert(sbody);
        //alert(address);
        // создаем объект vXMLHTTP, открываем соединение, устанавливаем заголовки
        var oXmlHTTP = vXMLHTTP.createRequest();
        oXmlHTTP.open( "post", address, async );
        oXmlHTTP.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
        // назначаем обработчик результата
        oXmlHTTP.onreadystatechange = function()
        {
            if(oXmlHTTP.readyState == 4 )
            {
                if(oXmlHTTP.status == 200)
                {// успех
                    //alert(address);
                    vXMLHTTP.saveRequest(oXmlHTTP.responseText);
                }
                else
                {// возникла ошибка
                    vXMLHTTP.saveRequest("Error: " + oXmlHTTP.statusText);
                }
            }
        }
        // посылаем запрос
        oXmlHTTP.send(sbody);        
    }
}
// посылка скрытого запроса, когда нам не нужна изображение действия
vXMLHTTP.sendSilentRequest = function( action, value )
{
	var params = new Array();
	var address = host;
	var param = '';
	var sbody = '';
	var async = true;
	switch(action)
	{
		case 'caf-getLands':
			param = encodeURIComponent( 'countryID' );
			param += "=" + encodeURIComponent( value );
			params.push(param);
			address += '/index.php/advertiser/j-caf-get-lands/';
			break;
		case 'add2cart':
			address += '/index.php/trade/j-add2cart/';
			break;
	}
    if( address != host )
    {// если запрос определен, предпринимаем действия
        // добавляем время, чтобы не кишировалось и формируем тело запроса
        param = encodeURIComponent( 'time' );
        param += "=" + encodeURIComponent( time+Math.random() );
        params.push(param);
        sbody = params.join("&");
        // создаем объект vXMLHTTP, открываем соединение, устанавливаем заголовки
        var oXmlHTTP = vXMLHTTP.createRequest();
        oXmlHTTP.open( "post", address, async );
        oXmlHTTP.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
        // назначаем обработчик результата
        oXmlHTTP.onreadystatechange = function()
        {
            if(oXmlHTTP.readyState == 4 )
            {
                if(oXmlHTTP.status == 200)
                {// успех
                    vXMLHTTP.saveSilentRequest(oXmlHTTP.responseText);
                }
                else
                {// возникла ошибка
                    vXMLHTTP.saveRequest("Error: " + oXmlHTTP.statusText);
                }
            }
        }
        // посылаем запрос
        oXmlHTTP.send(sbody);
    }
}
// обработчик результата обычного запроса
vXMLHTTP.saveRequest = function( response )
{
    //alert(response);
    // если есть php-ошибки - выводим. убрать в релизе (FIXME).
    if(response.indexOf( '<b>Error' ) != -1 || response.indexOf( '<b>Warning' ) != -1 || response.indexOf('parse error') != -1 || response.indexOf( '<b>Notice' ) != -1 || response.indexOf( 'Fatal error' ) != -1 ){alert(vXMLHTTP.escapeToNormal(response));};
	// задержка изображения действия
	setTimeout( "{var n = element('loading'); if(n) {n.parentNode.removeChild( n);}}", 1000 );
    
	var parts = response.split( '|||' );
    // количество обновляемых объектов
	var iterations = Math.round((parts.length)/3);
	for( var i = 0; i < iterations; i++ )
	{   
        // проходим по всем обновляемым объектам
		var id = parts[i*3].substr( 1, parts[i*3].length - 2 );
        // объект, который надо обновить
		var contentHolder = element( id );
		if( !contentHolder )
		{
            // если объект не найден, проверяем также родительское окно
			contentHolder = window.opener ? window.opener.document.getElementById( parts[i*3].substr( 1, parts[i*3].length - 2 ) ) : 'undef';
		}
		if( contentHolder != 'undef' )
		{
            // декодируем контент
            var str = vXMLHTTP.escapeToNormal( parts[i*3+1].substr( 1, parts[i*3+1].length - 2 ) );
			if( ie == true && str.indexOf( 'option' ) != -1 )
			{
                // в IE есть проблема с заменой innerHTML у select'ов
				contentHolder.innerHTML = '';
				contentHolder.outerHTML = contentHolder.outerHTML.replace( /<\/select>/gi, str+"</select>" );
			}
			else
			{
                // заменяем содержимое объекта на новое
				contentHolder.innerHTML = str;
			}
            // дополнительный вызов функции, если нужно, после замены контента в объекте
            if( parts[i*3+2] )
            {
                var f = parts[i*3+2].substr( 1, parts[i*3+2].length - 2 );
                if( f !== 'false' ){eval("window."+f+"()");}
            }
		}// если есть целевой объект
	}// for по обновляемым объектам
}
// обработчик результата скрытого запроса
vXMLHTTP.saveSilentRequest = function( response )
{
	var parts = response.split( '|||' );
    // количество обновляемых объектов
	var iterations = Math.round((parts.length)/3);
	for( var i = 0; i < iterations; i++ )
	{
        // проходим по всем обновляемым объектам
		var id = parts[i*3].substr( 1, parts[i*3].length - 2 );
        // объект, который надо обновить
		var contentHolder = element( id );
		if( !contentHolder )
		{
            // если объект не найден, проверяем также родительское окно
			contentHolder = window.opener ? window.opener.document.getElementById( parts[i*3].substr( 1, parts[i*3].length - 2 ) ) : 'undef';
		}
		if( contentHolder != 'undef' )
		{
            // создаем дополнительный целевой объект и присоединяем его к основному
			var ws = create('div');
			ws.id = 'wnd-ws';
			ws.innerHTML = vXMLHTTP.escapeToNormal(parts[i*3+1].substr( 1, parts[i*3+1].length - 2 ));
            contentHolder.appendChild(ws);
            // дополнительный вызов функции, если нужно, после замены контента в объекте
            if( parts[i*3+2] )
            {
                var f = parts[i*3+2].substr( 1, parts[i*3+2].length - 2 );
                if( f !== 'false' ){eval("window."+f+"()");}
            }
		}// если есть целевой объект
	}// for по обновляемым объектам
}
// функция декодирования
vXMLHTTP.escapeToNormal = function( str )
{
	str = str.replace( /%C0/g, 'А' );
	str = str.replace( /%C1/g, 'Б' );
	str = str.replace( /%C2/g, 'В' );
	str = str.replace( /%C3/g, 'Г' );
	str = str.replace( /%C4/g, 'Д' );
	str = str.replace( /%C5/g, 'Е' );
	str = str.replace( /%C6/g, 'Ж' );
	str = str.replace( /%C7/g, 'З' );
	str = str.replace( /%C8/g, 'И' );
	str = str.replace( /%C9/g, 'Й' );
	str = str.replace( /%CA/g, 'К' );
	str = str.replace( /%CB/g, 'Л' );
	str = str.replace( /%CC/g, 'М' );
	str = str.replace( /%CD/g, 'Н' );
	str = str.replace( /%CE/g, 'О' );
	str = str.replace( /%CF/g, 'П' );
	str = str.replace( /%D0/g, 'Р' );
	str = str.replace( /%D1/g, 'С' );
	str = str.replace( /%D2/g, 'Т' );
	str = str.replace( /%D3/g, 'У' );
	str = str.replace( /%D4/g, 'Ф' );
	str = str.replace( /%D5/g, 'Х' );
	str = str.replace( /%D6/g, 'Ц' );
	str = str.replace( /%D7/g, 'Ч' );
	str = str.replace( /%D8/g, 'Ш' );
	str = str.replace( /%D9/g, 'Щ' );
	str = str.replace( /%DA/g, 'Ъ' );
	str = str.replace( /%DB/g, 'Ы' );
	str = str.replace( /%DC/g, 'Ь' );
	str = str.replace( /%DD/g, 'Э' );
	str = str.replace( /%DE/g, 'Ю' );
	str = str.replace( /%DF/g, 'Я' );
	str = str.replace( /%E0/g, 'а' );
	str = str.replace( /%E1/g, 'б' );
	str = str.replace( /%E2/g, 'в' );
	str = str.replace( /%E3/g, 'г' );
	str = str.replace( /%E4/g, 'д' );
	str = str.replace( /%E5/g, 'е' );
	str = str.replace( /%E6/g, 'ж' );
	str = str.replace( /%E7/g, 'з' );
	str = str.replace( /%E8/g, 'и' );
	str = str.replace( /%E9/g, 'й' );
	str = str.replace( /%EA/g, 'к' );
	str = str.replace( /%EB/g, 'л' );
	str = str.replace( /%EC/g, 'м' );
	str = str.replace( /%ED/g, 'н' );
	str = str.replace( /%EE/g, 'о' );
	str = str.replace( /%EF/g, 'п' );
	str = str.replace( /%F0/g, 'р' );
	str = str.replace( /%F1/g, 'с' );
	str = str.replace( /%F2/g, 'т' );
	str = str.replace( /%F3/g, 'у' );
	str = str.replace( /%F4/g, 'ф' );
	str = str.replace( /%F5/g, 'х' );
	str = str.replace( /%F6/g, 'ц' );
	str = str.replace( /%F7/g, 'ч' );
	str = str.replace( /%F8/g, 'ш' );
	str = str.replace( /%F9/g, 'щ' );
	str = str.replace( /%FA/g, 'ъ' );
	str = str.replace( /%FB/g, 'ы' );
	str = str.replace( /%FC/g, 'ь' );
	str = str.replace( /%FD/g, 'э' );
	str = str.replace( /%FE/g, 'ю' );
	str = str.replace( /%FF/g, 'я' );
	str = str.replace( /%A8/g, 'Ё' );
	str = str.replace( /%B8/g, 'ё' );

	return str;
}
// функция кодирования русских символов перед отправкой на сервер
vXMLHTTP.escapeToUnNormal = function( str )
{
	str = str.replace( /А/g, '%C0' );
	str = str.replace( /Б/g, '%C1' );
	str = str.replace( /В/g, '%C2' );
	str = str.replace( /Г/g, '%C3' );
	str = str.replace( /Д/g, '%C4' );
	str = str.replace( /Е/g, '%C5' );
	str = str.replace( /Ж/g, '%C6' );
	str = str.replace( /З/g, '%C7' );
	str = str.replace( /И/g, '%C8' );
	str = str.replace( /Й/g, '%C9' );
	str = str.replace( /К/g, '%CA' );
	str = str.replace( /Л/g, '%CB' );
	str = str.replace( /М/g, '%CC' );
	str = str.replace( /Н/g, '%CD' );
	str = str.replace( /О/g, '%CE' );
	str = str.replace( /П/g, '%CF' );
	str = str.replace( /Р/g, '%D0' );
	str = str.replace( /С/g, '%D1' );
	str = str.replace( /Т/g, '%D2' );
	str = str.replace( /У/g, '%D3' );
	str = str.replace( /Ф/g, '%D4' );
	str = str.replace( /Х/g, '%D5' );
	str = str.replace( /Ц/g, '%D6' );
	str = str.replace( /Ч/g, '%D7' );
	str = str.replace( /Ш/g, '%D8' );
	str = str.replace( /Щ/g, '%D9' );
	str = str.replace( /Ъ/g, '%DA' );
	str = str.replace( /Ы/g, '%DB' );
	str = str.replace( /Ь/g, '%DC' );
	str = str.replace( /Э/g, '%DD' );
	str = str.replace( /Ю/g, '%DE' );
	str = str.replace( /Я/g, '%DF' );
	str = str.replace( /а/g, '%E0' );
	str = str.replace( /б/g, '%E1' );
	str = str.replace( /в/g, '%E2' );
	str = str.replace( /г/g, '%E3' );
	str = str.replace( /д/g, '%E4' );
	str = str.replace( /е/g, '%E5' );
	str = str.replace( /ж/g, '%E6' );
	str = str.replace( /з/g, '%E7' );
	str = str.replace( /и/g, '%E8' );
	str = str.replace( /й/g, '%E9' );
	str = str.replace( /к/g, '%EA' );
	str = str.replace( /л/g, '%EB' );
	str = str.replace( /м/g, '%EC' );
	str = str.replace( /н/g, '%ED' );
	str = str.replace( /о/g, '%EE' );
	str = str.replace( /п/g, '%EF' );
	str = str.replace( /р/g, '%F0' );
	str = str.replace( /с/g, '%F1' );
	str = str.replace( /т/g, '%F2' );
	str = str.replace( /у/g, '%F3' );
	str = str.replace( /ф/g, '%F4' );
	str = str.replace( /х/g, '%F5' );
	str = str.replace( /ц/g, '%F6' );
	str = str.replace( /ч/g, '%F7' );
	str = str.replace( /ш/g, '%F8' );
	str = str.replace( /щ/g, '%F9' );
	str = str.replace( /ъ/g, '%FA' );
	str = str.replace( /ы/g, '%FB' );
	str = str.replace( /ь/g, '%FC' );
	str = str.replace( /э/g, '%FD' );
	str = str.replace( /ю/g, '%FE' );
	str = str.replace( /я/g, '%FF' );
	str = str.replace( /Ё/g, '%A8' );
	str = str.replace( /ё/g, '%B8' );

	return str;
}
var countsoa = 1; 
var countphone = 2; 
function hidden () {
	var hid = $('#content-w .hidden')
	if(hid.attr('class') != 'active hidden' ) hid.css("display", "none" );
	hid_vis();
	$('#addsoa').click(function (){ 
		if( countsoa < 3 )
		{
			var soas = $('#delsoas' + countsoa);
			var textsoa = $('#delsoas1').html();
			textsoa = str_replace( '* Рубрика:', '&nbsp;', textsoa );
			countsoa = countsoa + 1;
			$(soas).after('<div id="delsoas' + countsoa + '">' + textsoa + '&nbsp;&nbsp;<span class="href_adddel"><a href="#delsoas1" onclick="delsoas(' + countsoa + '); return false;">Удалить</a></span></div>');
		}
		else alert('Не более 3 рубрик');
        return false;
	});
	$('#addphone').click(function (){ 
		if( countphone < 4 )
		{
			var phone = $('#delphone' + countphone);
			var textphone = $('#delphone1').html();
			textphone = str_replace( 'Телефон:', '&nbsp;', textphone );
			countphone = countphone + 1;
			$(phone).after('<div id="delphone' + countphone + '">' + textphone + '&nbsp;&nbsp;<span class="href_adddel"><a href="#delphone1" onclick="delphone(' + countphone + '); return false;">Удалить</a></span></div>');
		}
		else alert('Не более 4 телефонов');
        return false;
	});
	$('#advancedSearch textarea.deltext').click(function (){ 
            if( $(this).attr('class') == 'deltext' )
			$(this).html('');
			$(this).attr('class', 'nodeltext');
	});
    $('#advancedSearch input.deltext').click(function (){ 
            if( $(this).attr('class') == 'normal deltext' )
			$(this).val('');
			$(this).attr('class', 'normal nodeltext');
	});
	
}
function hid_vis () {
	$('#content-w .vis').click(function (){ 
		id  = $(this).attr('id');
		prid = id.substr( 3, id.length );
		var v = $('#hidden'+prid);

		if( v.css("display") == "block" )
		{
			$(this).attr('src', hostc + "/images/plus.png");
			v.css("display", "none" );
		}
		else
		{
			$(this).attr("src", hostc + "/images/minus.png");
			v.css("display", "block" );
		}
		return false;
	});
}
function bookmark(pid, object) {
	$.post(host + '/index.php/job/j_bookmark/', { pid: pid, object: object }, function(data)
                        {
							alert( data );
                        }, 
                        'text'
                    );
}
function delsoas(val) {
	var textsoa = $('#delsoas'+val).remove();
	countsoa = countsoa - 1;
    return false;
}
function delphone(val) {
	var textphone = $('#delphone'+val).remove();
	countphone = countphone - 1;
    return false;
}
function str_replace ( search, replace, subject ) {
    if(!(replace instanceof Array)){
        replace=new Array(replace);
        if(search instanceof Array){
            while(search.length>replace.length){
                replace[replace.length]=replace[0];
            }
        }
    }
    if(!(search instanceof Array))search=new Array(search);
    while(search.length>replace.length){
        replace[replace.length]='';
    }
    if(subject instanceof Array){
        for(k in subject){
            subject[k]=str_replace(search,replace,subject[k]);
        }
        return subject;
    }
    for(var k=0; k<search.length; k++){
        var i = subject.indexOf(search[k]);
        while(i>-1){
            subject = subject.replace(search[k], replace[k]);
            i = subject.indexOf(search[k],i);
        }
    }
    return subject;
}
function rating()
{
	var star_widht = total_reiting*27 ;
	$('#raiting_votes').width(star_widht);
	$('#raiting_info h5').append(total_reiting);
	if(he_voted == 0){
	$('#raiting').hover(function() {
		$('#raiting_votes, #raiting_hover').toggle();
	},
	function() {
		$('#raiting_votes, #raiting_hover').toggle();
	});
	var margin_doc = $("#raiting").offset();
	$("#raiting").mousemove(function(e){
	var widht_votes = e.pageX - margin_doc.left;
	if (widht_votes == 0) widht_votes =1 ;
	user_votes = Math.ceil(widht_votes/27);  
	// обратите внимание переменная  user_votes должна задаваться без var, т.к. в этом случае она будет глобальной и мы сможем к ней обратиться из другой ф-ции (нужна будет при клике на оценке.
	$('#raiting_hover').width(user_votes*27);
	});
	// отправка
	$('#raiting').click(function(){
		if( id_comp > 0 && id_user > 0)
		{
			if( he_voted == 0 )
			{
				$.get(host + '/index.php/job/j_raiting/', {id_user: id_user, id_comp: id_comp, user_votes: user_votes}, 
				function(data){
					alert( 'Ваш рейтинг для компании ' + user_votes + '' );
					$('#raiting_votes').width(data*27);
					$("#raiting").unbind( );
					$('#raiting_hover').hide();
					he_voted = 1;
					$('#raiting').click(function(){
					$('#raiting_votes').after('<div style="position: absolute; left: 0px; top: 0px; background: #fff; border: 1px solid #f00;font-size: 12px;padding: 5px;z-index: 2;text-align: center;">вы уже голосовали</div>');
					})
				})
			}
			else $('#raiting_votes').after('<div style="position: absolute; left: 0px; top: 0px; background: #fff; border: 1px solid #f00;font-size: 12px;padding: 5px;z-index: 2;text-align: center;">вы уже голосовали</div>');
		}
		else 
		{
			$('#raiting_votes').after('<div style="position: absolute; left: 0px; top: 0px; background: #fff; border: 1px solid #f00;font-size: 12px;padding: 5px;z-index: 2;text-align: center;">вы должны <a href="' + host + '/index.php/user/login/">авторизоваться</a></div>');
		}		
	});
	}
	else if(he_voted == 1){
		$('#raiting').click(function(){
		$('#raiting_votes').after('<div style="position: absolute; left: 0px; top: 0px; background: #fff; border: 1px solid #f00;font-size: 12px;padding: 5px;z-index: 2;text-align: center;">вы уже голосовали</div>');
		});
	}
}

