function CreateShadow(ajax_block) {
    var block_offset = $(ajax_block).offset();
    var width = $(ajax_block).width();
    var height = $(ajax_block).height();
    
    $('html').append('<div class="ajax_shadow"></div>');
    $('.ajax_shadow').css('display', 'block');
    $('.ajax_shadow').css('position', 'absolute');
    $('.ajax_shadow').css('opacity', '0.6');
    $('.ajax_shadow').css('background-color', 'gray');
    $('.ajax_shadow').css('border', '1px dotted black');
    //$('.ajax_shadow').css('z-index', '9');
    $('.ajax_shadow').css('z-index', '999999');
    $('.ajax_shadow').css('border-radius', (((height+width)/2)/30)+'px');
    $('.ajax_shadow').css('height', height+20);
    $('.ajax_shadow').css('width', width+20);
    $('.ajax_shadow').css('top', block_offset.top-10);
    $('.ajax_shadow').css('left', block_offset.left-10);
    
    $('.ajax_shadow').append('<div class="ajax_shadow_img"></div>');
    $('.ajax_shadow_img').css('background', "url('/ajax_load.gif') left top no-repeat");
    $('.ajax_shadow_img').css('height', '128px');
    $('.ajax_shadow_img').css('width', '128px');
    $('.ajax_shadow_img').css('top', '50%');
    $('.ajax_shadow_img').css('left', '50%');
    $('.ajax_shadow_img').css('position', 'relative');
    $('.ajax_shadow_img').css('margin-top', '-64px');
    $('.ajax_shadow_img').css('margin-left', '-64px');
}

function DestroyShadow() {
    $('.ajax_shadow').remove();
}

function GetNewBlock(ajax_block, ajax_page, params, call_back, default_params) {
    
	if(default_params!==true)
	{
		var arParamStr = params.split(',');
	    params = new Object();
	    var Param = null;
	    for (var i = 0; i < arParamStr.length; i++) {
	        Param = arParamStr[i].split(':');
	        params[Param[0]] = Param[1];
	    }
	}
	
    $.ajax({  
        type: "POST",
        url: ajax_page,
        data: params,
        error: function (){
            alert('Ошибка соединения');
        },
        success: function(data) {
            PasteNewBlock(ajax_block, data);
            if (!!call_back) {
                call_back.call(ajax_block, data);
            }
        }
    });        
}

function PasteNewBlock(ajax_block, data) {
    $(ajax_block).html(data);
    DestroyShadow();
}

//если флаг default_params=true, то подразумевается что params - стандартный объект параметров, либо строка полученная через $.serialize()
function ajax_update(ajax_block, ajax_page, params, call_back, default_params) {
    CreateShadow(ajax_block);
    GetNewBlock(ajax_block, ajax_page, params, call_back, default_params);
    return false;
}

$(document).ready(function() {  
    $('a.href_ajax').click(function() {
        CreateShadow($(this).attr('block'));
        GetNewBlock($(this).attr('block'), $(this).attr('href'), '');
        return false;
    });
});
