// ПЛАВНОЕ ИЗМЕНЕНИЕ ЗАДАННОГО ПАРАМЕТРА ДЛЯ ЗАДАННОГО ОБЪЕКТА
function slow_change_parameter(from, to, interval, steps, obj, param, ret_func){
	if(steps){
		var step = Math.round((to - from) / steps);
		obj.style[param] = (from + step) + 'px';
		setTimeout(function(){slow_change_parameter(from + step, to, interval, steps - 1, obj, param, ret_func);}, interval);
	}else if(typeof(ret_func) == 'function'){
		ret_func();
	}
}



// ИНИЦИАЦИЯ ЗУМА ФОТОК
function zoom_init(){
	var links = document.getElementsByTagName('A');
	for(var i = 0, l = links.length; i < l; i++)
		if(links[i].className == 'zoom'){
			links[i].id = 'zoom_link_' + i;
			links[i].target = '';
			links[i].onclick = function(){zoom_in(this); return false};
		}
}

var zoom_z_index = 1000;
var zoom_loaded = new Array();
function zoom_in(link){
	var id = link.id; id = id.replace('zoom_link_', '');

	// URL картинки
	var url = link.childNodes[0].alt;

    // объект IMG с маленьким изображением
	var pic = link.getElementsByTagName('IMG'); if(!pic.length) return; pic = pic[0];

    // размеры объекта IMG с маленьким изображением
	var pic_w = pic.offsetWidth;
	var pic_h = pic.offsetHeight;

    // создаём окошко загрузка
	var loading = document.createElement('div');
	loading.className = 'r_det_loading';
	loading.id = 'zoom_loading_' + id;
	loading.innerHTML = 'Загрузка...';
	loading.style.width = (pic_w - 2) + 'px';
	loading.style.height = (pic_h - 2) + 'px';
	loading.style.lineHeight = pic_h + 'px';
	link.appendChild(loading);

	// создаём окно с большой фоткой
	var big_div = document.createElement('div');
	big_div.className = 'r_det_zoom';
	big_div.innerHTML = '<img src="' + url + '" width="100%" onload="zoom_size_up(this, ' + id + ')"><br><br>Нажмите на фото, чтобы закрыть его.';
	document.body.appendChild(big_div);

	if(zoom_loaded[id] != 1){
		zoom_loaded[id] = 1;
	}else{
		var big_img = big_div.getElementsByTagName('IMG'); big_img = big_img[0];
		zoom_size_up(big_img, id);
	}
}

var padding = 10;
function zoom_size_up(img, id){
	var loading = document.getElementById('zoom_loading_' + id);
	remove_node(loading);

	var link = document.getElementById('zoom_link_' + id);

	var w = window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.offsetWidth);
	var h = document.documentElement.clientHeight ? document.documentElement.clientHeight : 0; h = document.body.offsetHeight > h ? document.body.offsetHeight : h; h = window.innerHeight > h ? window.innerHeight : h;

	var big_div = img.parentNode;
	big_div.onclick = function(){zoom_close(this, id)};


    var start_pos = getAbsolutePos(link);
    var start_w = link.offsetWidth;
    var start_x = start_pos['x'] - padding;
    var start_y = start_pos['y'] - padding;

    var end_w = 640;
	var end_x = start_x + Math.round((start_w - end_w) / 2);
	var end_y = start_y - 200;

	if(end_x < 15) end_x = 15;
	//alert((end_x + end_w) + '-' + (w - 15));
	if(end_x + end_w > w - 55) end_x = w - 55 - end_w;
	if(end_y < 150) end_y = 150;
	if(end_y + 520 > h - 15) end_y = h - 15 - 520;


	zoom_z_index++;
	big_div.style.zIndex = zoom_z_index;

	var interval = 10;
	var steps = 5;

    slow_change_parameter(start_x, end_x, interval, steps, big_div, 'left');
    slow_change_parameter(start_y, end_y, interval, steps, big_div, 'top');
    slow_change_parameter(start_w, end_w, interval, steps, big_div, 'width');
}

function zoom_close(big_div, id){
	var link = document.getElementById('zoom_link_' + id);
	if(zoom_z_index == big_div.style.zIndex){
		// ЗАКРЫВАЕМ КАРТИНКУ
		var start_pos = getAbsolutePos(link);
	    var end_w = link.offsetWidth;
	    var end_x = start_pos['x'] - padding;
	    var end_y = start_pos['y'] - padding;

        var start_x = big_div.offsetLeft - padding;
        var start_y = big_div.offsetTop - padding;
        var start_w = 640;

		var interval = 10;
		var steps = 5;

	    slow_change_parameter(start_x, end_x, interval, steps, big_div, 'left');
	    slow_change_parameter(start_y, end_y, interval, steps, big_div, 'top');
	    slow_change_parameter(start_w, end_w, interval, steps, big_div, 'width', function(){zoom_close_end(big_div)});

	}else{
		// увеличиваем Z-INDEX
		zoom_z_index++;
		big_div.style.zIndex = zoom_z_index;
	}
}

function zoom_close_end(big_div){
	remove_node(big_div);
	zoom_z_index--;
}




add_handler(window, 'load', function(){zoom_init()});