var _OTSTUP_LEFT=402;//сдивг по Х при left: 0px;
var _OTSTUP_RIGHT=60;
var _MAIN_WIDTH=940;

//****************************************************************************
//			Главный объект по общению с сервером
//****************************************************************************
var objServerConnect = new Object() ;

//request to server
objServerConnect.connectToServer=function(url_str, param_object, getter_func){
	var time_value=new Date().getTime();
	
	JsHttpRequest.query(
            url_str+"&time="+time_value, // backend
			param_object,
			getter_func,
            true //disable caching
        );
}

//****************************************************************************
//		 Набор функция для отображения навигации по частям галереи
//****************************************************************************
//дергаем сервер на предме информации о части галереи
function call_gallery_part(part_num){
	var paramObject=new Object();
	paramObject.type="get_part";
	paramObject.part_num=part_num;
	paramObject.gallery_id=_GALLERY_ID;
	
	objServerConnect.connectToServer("get_gallery_prop.php?folder=jkjk", paramObject, get_gallery_part);
}
//обрабатываем полученные данные
function get_gallery_part(result, errors){
	if(errors.length>0){
		alert(errors);
		return 0;
	}
	if(result['error']!=null ? result['error'].length>0 : false){
		alert(result['error']);
		return 0;
	}
	
	//всё нормально
	//1. Удаляем все строки кроме основной
	var top_row_obj=document.getElementById("gallery_top_row");
	var table_node=top_row_obj.parentNode;
	
	while(table_node.childNodes.length>1){
		if(table_node.childNodes[0].id!="gallery_top_row") table_node.removeChild(table_node.childNodes[0]);
		else table_node.removeChild(table_node.childNodes[1]);
	}
	//2. Выясняем число картинок с навигацтей по частям
	var navig_count=0;
	var bln_is_prev=false;
	var bln_is_next=false;
	
	if(result["all_part_count"]>1){
		if(result["cur_part"]==0){
			navig_count=1;
			bln_is_next=true;
		}else if(result['cur_part']==(result['all_part_count']-1)){
			navig_count=1;
			bln_is_prev=true;
		}else{
			navig_count=2;
			bln_is_prev=true;
			bln_is_next=true;
		}
	}
	
	//3. Добавляем строчки с картинками
	var img_node=document.createElement("img");
	img_node.className="blue_border_pad";
	var blnWasStrelki=false;
	
	var img_array=result['image_arr'];
	while(img_array.length>0){
		//хватит ли на целую строку?
		var curTR=document.createElement("tr");
		if(img_array.length>=_GALLERY_COL){
			for(var i=0; i<_GALLERY_COL; i++){
				var curTD=add_img_td(img_array[i]["filename"], img_array[i]["id"]);
				curTR.appendChild(curTD);
			}
		}else if((img_array.length+navig_count)<=_GALLERY_COL){
			//добавляем навигацию и картинки. остатки добиваем пустыми ячейками
			//первая ячейка
			var curTD;
			var minus_index=0;
			if(bln_is_prev){
				curTD=get_navig_td(true, result['cur_part']);
				minus_index=-1;
			}else curTD=add_img_td(img_array[0]["filename"], img_array[0]["id"]);
			
			curTR.appendChild(curTD);
			
			//средние ячейки
			for(var i=1; i<(_GALLERY_COL-1); i++){
				if(img_array[i+minus_index]!=null){
					curTD=add_img_td(img_array[i+minus_index]["filename"], img_array[i+minus_index]["id"]);
					curTR.appendChild(curTD);
				}else{
					curTD=document.createElement("td");
					curTD.appendChild(document.createTextNode('\xA0'));
				}
			}
			curTR.appendChild(curTD);
			
			//последние ячейки
			if(bln_is_next){
				curTD=get_navig_td(false, result['cur_part']);
			}else{
				if(img_array[(_GALLERY_COL-1)+minus_index]!=null){
					curTD=add_img_td(img_array[(_GALLERY_COL-1)+minus_index]["filename"], img_array[(_GALLERY_COL-1)+minus_index]["id"]);
				}else{
					curTD=document.createElement("td");
					curTD.appendChild(document.createTextNode('\xA0'));
				}
			}
			curTR.appendChild(curTD);
			
			blnWasStrelki=true;
		}else{
			var curTD;
			blnWasStrelki=true;
			
			//делаем строку из картинок. а навигацию новой строкой
			for(var i=0; i<_GALLERY_COL; i++){
				if(img_array[i]!=null){
					curTD=add_img_td(img_array[i]["filename"], img_array[i]["id"]);
				}else{
					curTD=document.createElement("td");
					curTD.appendChild(document.createTextNode('\xA0'));
				}
				
				curTR.appendChild(curTD);
			}

			table_node.appendChild(curTR);
			
			curTR=document.createElement("tr");
			
			//а теперь строка только с навигационными ячейками
			if(bln_is_prev){
				curTD=get_navig_td(true, result['cur_part']);
			}else{
				curTD=document.createElement("td");
				curTD.appendChild(document.createTextNode('\xA0'));
			}
			curTR.appendChild(curTD);
			
			for(var i=1; i<(_GALLERY_COL-1); i++){
				curTD=document.createElement("td");
				curTD.appendChild(document.createTextNode('\xA0'));
				
				curTR.appendChild(curTD);
			}
			
			if(bln_is_next){
				curTD=get_navig_td(false, result['cur_part']);
			}else{
				curTD=document.createElement("td");
				curTD.appendChild(document.createTextNode('\xA0'));
			}
			curTR.appendChild(curTD);
		}
		
		table_node.appendChild(curTR);
		
		//удаляем использованные элементы
		var end_index=_GALLERY_COL;
		if(img_array.length<end_index) end_index=img_array.length;
		
		tmp_arr=img_array.slice(end_index);
		img_array=tmp_arr;
	}
	
	if(!blnWasStrelki){
		var curTD;
		curTR=document.createElement("tr");
		//надо просто добавить срелки отдельной строкой
		//а теперь строка только с навигационными ячейками
		if(bln_is_prev){
			curTD=get_navig_td(true, result['cur_part']);
		}else{
			curTD=document.createElement("td");
			curTD.appendChild(document.createTextNode('\xA0'));
		}
		curTR.appendChild(curTD);
		
		for(var i=1; i<(_GALLERY_COL-1); i++){
			curTD=document.createElement("td");
			curTD.appendChild(document.createTextNode('\xA0'));
			
			curTR.appendChild(curTD);
		}
		
		if(bln_is_next){
			curTD=get_navig_td(false, result['cur_part']);
		}else{
			curTD=document.createElement("td");
			curTD.appendChild(document.createTextNode('\xA0'));
		}
		curTR.appendChild(curTD);
		table_node.appendChild(curTR);
	}
}

function get_navig_td(is_left, part_num){
	var curTD=document.createElement("td");
	var curImg=document.createElement("img");
	var curRef=document.createElement("a");
	
	if(is_left){
		curImg.src="i/arrow_left_sm.gif";
		curRef.setAttribute("title", " Предыдущая часть галереи ");
	}else{
		curImg.src="i/arrow_sm.gif";
		curRef.setAttribute("title", " Следующая часть галереи ");
	}
	curImg.className="arrow_sm";
	
	var ned_num=part_num;
	if(is_left) ned_num--;
	else ned_num++;
	curRef.setAttribute("href", "javascript: call_gallery_part("+ned_num+");");
	curRef.appendChild(curImg);
	curTD.appendChild(curRef);
	
	return curTD;
}

function add_img_td(filename, item_id){
	var img_node=document.createElement("img");
	img_node.className="blue_border_pad";
	
	var curTD=document.createElement("td");
	var curImg=img_node.cloneNode("true");
	curImg.src=_ELEM_PATH+filename;
	var curRef=document.createElement("a");
	curRef.setAttribute("href", "javascript: call_medium_img("+item_id+");");
	curRef.appendChild(curImg);
	curTD.appendChild(curRef);
	return curTD;
}

//****************************************************************************
//		 Набор функция для отображения картинки среднего размера
//****************************************************************************
function call_medium_img(item_id){
	//пишем "loading...."
	var div_obj=document.getElementById("medium_container");
	while(div_obj.childNodes.length>0) div_obj.removeChild(div_obj.childNodes[0]);
	
	div_obj.appendChild(document.createTextNode("загружается изображение..."));
	
	//загрузка текста
	var text_container=document.getElementById("gallery_item_text");
	while(text_container.childNodes.length>0) text_container.removeChild(text_container.childNodes[0]);
	text_container.appendChild(document.createTextNode("загружается текст..."));
	
	document.getElementById("resize_btn_div").style.visibility='hidden';
	
	//убираем навигацию по средним картинкам
	document.getElementById("prev_medium").style.display='none';
	document.getElementById("next_medium").style.display='none';
	
	var paramObject=new Object();
	paramObject.type="get_medium";
	paramObject.item_id=item_id;
	paramObject.gallery_id=_GALLERY_ID;
	
	objServerConnect.connectToServer("get_gallery_prop.php?folder=jkjk", paramObject, get_medium_img);
}

//обрабатываем полученные данные
function get_medium_img(result, errors){
	if(errors.length>0){
		alert(errors);
		return 0;
	}
	if(result['error']!=null ? result['error'].length>0 : false){
		alert(result['error']);
		return 0;
	}
	
	//картинка
	var curImg=document.createElement("img");
	curImg.src=_ELEM_PATH+result['filename'];
	curImg.setAttribute("marker", "was_stylized");
	curImg.border=0;
	
	var nodeRef=document.createElement("a");
	nodeRef.setAttribute("href", "javascript: call_big_item("+result['gallery_item_id']+");");
	
	var curRef=nodeRef.cloneNode(true);
	curRef.appendChild(curImg);
	
	var div_obj=document.getElementById("medium_container");
	while(div_obj.childNodes.length>0) div_obj.removeChild(div_obj.childNodes[0]);
	div_obj.appendChild(curRef);
	
	//обновляем ссылки
	document.getElementById("bigger_ref").href="javascript: call_big_item("+result['gallery_item_id']+");";
	document.getElementById("plus_ref").href="javascript: call_big_item("+result['gallery_item_id']+");";
	
	document.getElementById("resize_btn_div").style.visibility='visible';
	
	//загрузка текста
	var text_container=document.getElementById("gallery_item_text");
	while(text_container.childNodes.length>0) text_container.removeChild(text_container.childNodes[0]);
	text_container.innerHTML=result['description'];
	
	//показываем навигацию по средним картинкам
	if(result['prev_id']!=-1){
		var ref_obj=document.getElementById("prev_medium");
		ref_obj.style.display='inline';
		ref_obj.href="javascript: call_medium_img("+result['prev_id']+");";
	}
	if(result['next_id']!=-1){
		var ref_obj=document.getElementById("next_medium");
		ref_obj.style.display='inline';
		ref_obj.href="javascript: call_medium_img("+result['next_id']+");";
	}
}

//****************************************************************************
//		 Набор функция для отображения большой картинки
//****************************************************************************
function call_big_item(item_id){
	var img_div_obj=document.getElementById("for_big_img");
	while(img_div_obj.childNodes.length>0) img_div_obj.removeChild(img_div_obj.childNodes[0]);
	img_div_obj.appendChild(document.createTextNode("загружается изображение..."));
	
	var div_obj=document.getElementById("big_photo");
	set_load_div_position(div_obj);
	
	var paramObject=new Object();
	paramObject.type="get_big";
	paramObject.item_id=item_id;
	paramObject.gallery_id=_GALLERY_ID;
	
	objServerConnect.connectToServer("get_gallery_prop.php?folder=jkjk", paramObject, get_big_item);
}

//обрабатываем полученные данные
function get_big_item(result, errors){
	if(errors.length>0){
		alert(errors);
		return 0;
	}
	if(result['error']!=null ? result['error'].length>0 : false){
		alert(result['error']);
		return 0;
	}
	
	var div_obj=document.getElementById("big_photo");
	div_obj.style.display='none';
	
	//позиционируем основной слой
	set_div_position(div_obj, result['width'], result['height']);
	
	//загружаем изображение
	var img_div_obj=document.getElementById("for_big_img");
	
	var curImg=document.createElement("img");
	curImg.src=result['elem_path']+result['filename'];
	curImg.setAttribute("marker", "was_stylized");
	
	while(img_div_obj.childNodes.length>0) img_div_obj.removeChild(img_div_obj.childNodes[0]);
	img_div_obj.appendChild(curImg);
	
	//масштабируем основной слой
	div_obj.style.width=result['width'];
	div_obj.style.height=result['height'];
	
	//перемещаем кнопки закрытия
	set_close_btn_position(result['width'], result['height']);
	
	div_obj.style.display='inline';
}

function set_div_position(div_obj, must_width, must_height){
	//_OTSTUP_LEFT
	var doc_width=parseInt(getDocumentWidth());
	var otstup_left=(doc_width-_MAIN_WIDTH)/2;
	var raznica=otstup_left + (_MAIN_WIDTH-must_width)-39;
	//alert("otstup_left="+otstup_left+", raznica="+raznica);
	
	if(raznica>0){
		//сдвигаем влево
		div_obj.style.left=raznica;
	}else div_obj.style.left=otstup_left;
	
	div_obj.style.top=_TOP_SDVIG;
}

function set_load_div_position(div_obj){
	div_obj.style.width=_MEDIUM_WIDTH;
	div_obj.style.height=_MEDIUM_HEIGHT;
	div_obj.style.left=_OTSTUP_LEFT+(parseInt(getDocumentWidth())-_MAIN_WIDTH)/2;
	div_obj.style.top=_TOP_SDVIG;
	div_obj.style.display='inline';
}

function set_close_btn_position(width, height){
	var div_obj=document.getElementById("close_btn_div");
	div_obj.style.top=-height+2;
	div_obj.style.width=width-3;
}
