/*//////\
///////\\\
//////\\\\\
/////\by\\\\
////\ASLAN\\\
///\MASTER\\\\
//\\\\\\\\\\*/
//----------------------------------------//
// "Draggable Block Selection" (Part I)
// version 1.01
// January 03, 2012 
// Copyright (c) by Aslan Kourbanoff
// All right reserved.
//----------------------------------------//

//Функция: Обводка блока линией [начало] 
function SL_SetBorderLine(elem_name){
	// переданный объект
	var obj=document.getElementById(elem_name);
	// линия
	var obj_line=document.getElementById('block_line');
	// толщина линии
	var border_size_px=obj_line.style.borderWidth;
	var border_size=parseInt(border_size_px,10);
	
	//border_size=0;
	
	// толщина линии объекта
	//var obvodka_border_size=parseInt(obj.style.borderWidth,10);

	//уровень
	var obj_zIndex=obj.style.zIndex;
	obj_line.style.zIndex=obj_zIndex+1;
	
	// координаты объекта
	var obj_top=parseInt(obj.style.top,10);
	var obj_left=parseInt(obj.style.left,10);
			
	//размеры объекта
	var obj_type=obj.tagName;
	obj_type=obj_type.toUpperCase();
	
	
	if(obj_type=='IMG'){
		//без style
		var obj_width=parseInt(obj.width,10);
		var obj_height=parseInt(obj.height,10);
	} else {
		var obj_width=parseInt(obj.style.width,10);
		var obj_height=parseInt(obj.style.height,10);
	}
	
	if(isNaN(obj_width)){obj_width=0;}
	if(isNaN(obj_height)){obj_height=0;}

	//obj_line.style.width=obj_width+border_size+"px";
	//obj_line.style.height=obj_height+border_size+"px";
	
	obj_line.style.width=obj_width+"px";
	obj_line.style.height=obj_height+"px";
	
	// обводка по размеру блока
	//obj_line.style.top=obj_top-border_size+"px";
	//obj_line.style.left=obj_left-border_size+"px";
	obj_line.style.top=obj_top+"px";
	obj_line.style.left=obj_left+"px";
	
	SL_SetBlocks();
	
	//видимость
	obj_divs=getElementsByClass('block_selection',null,'div');
	
	for(i=0;i<obj_divs.length;i++){obj_divs[i].style.visibility='visible';}
	//линия не видна
	document.getElementById("block_line").style.visibility='visible';
	var obj_width=parseInt(obj.width,10);
	var obj_height=parseInt(obj.height,10);
return;
}
//Функция: Обводка блока линией [конец]

//Функция: Кубики расстановка [начало]
function SL_SetBlocks(){
 
	//Размер блоков
 	var block_width=8;
	var block_height=8;
	var block_width_px=block_width+"px";
	var block_height_px=block_height+"px";
		
	//line
 	var elem_name='block_line';
	var obj=document.getElementById(elem_name);
	var obj_left=parseInt(obj.style.left,10);
	var obj_top=parseInt(obj.style.top,10);
	var obj_width=parseInt(obj.style.width,10);
	var obj_height=parseInt(obj.style.height,10);
	var obj_zIndex=parseInt(obj.style.zIndex);
	
	//Повышаем слой
	obj_divs=getElementsByClass('block_selection',null,'div');
	for(i=0;i<obj_divs.length;i++){obj_divs[i].style.zIndex=obj_zIndex+1;}
		
	var obj_lv=document.getElementById("block_lv");
	var obj_ln=document.getElementById("block_ln");
	var obj_pv=document.getElementById("block_pv");
	var obj_pn=document.getElementById("block_pn");
	var obj_lm=document.getElementById("block_lm");
	var obj_pm=document.getElementById("block_pm");
	var obj_tm=document.getElementById("block_tm");
	var obj_bm=document.getElementById("block_bm");
 
	var obj_line=document.getElementById("block_line");
	
 	//var border_size=1;
	var border_size_px=obj_line.style.borderWidth;
	var border_size=parseInt(border_size_px,10);
	
	// половина кубика	
	var half_offset_width=parseInt(block_width/2,10);
	var half_offset_height=parseInt(block_height/2,10);
 	
	//LV
	obj_lv.style.top=obj_top-half_offset_height+"px";
	obj_lv.style.left=obj_left-half_offset_width+"px";
	obj_lv.style.width=block_width_px;
	obj_lv.style.height=block_height_px;
	//LN
	obj_ln.style.top=obj_top+obj_height+border_size-block_height+half_offset_height+"px";
	obj_ln.style.left=obj_left-half_offset_width+"px";
	obj_ln.style.width=block_width_px;
	obj_ln.style.height=block_height_px;
	//PV
	obj_pv.style.top=obj_top-half_offset_height+"px";
	obj_pv.style.left=obj_left+obj_width+border_size-block_width+half_offset_width+"px";
	obj_pv.style.width=block_width_px;
	obj_pv.style.height=block_height_px;
	//PN
	obj_pn.style.top=obj_top+obj_height+border_size-block_height+half_offset_height+"px";
	obj_pn.style.left=obj_left+obj_width+border_size-block_width+half_offset_width+"px";
	obj_pn.style.width=block_width_px;
	obj_pn.style.height=block_height_px;


	//LM
	obj_lm.style.top=obj_top+parseInt(obj_height/2,10)-half_offset_height+border_size+"px";
	obj_lm.style.left=obj_left-half_offset_width+"px";
	obj_lm.style.width=block_width_px;
	obj_lm.style.height=block_height_px;
	
	//PM
	obj_pm.style.top=obj_top+parseInt(obj_height/2,10)-half_offset_height+border_size+"px";
	obj_pm.style.left=obj_left+obj_width+border_size-block_width+half_offset_width+"px";
	obj_pm.style.width=block_width_px;
	obj_pm.style.height=block_height_px;
	
	//TM
	obj_tm.style.top=obj_top-half_offset_height+"px";
	obj_tm.style.left=obj_left+parseInt((obj_width+border_size)/2,10)-half_offset_width+"px";
	obj_tm.style.width=block_width_px;
	obj_tm.style.height=block_height_px;
	
	//BM
	obj_bm.style.top=obj_top+obj_height+border_size-block_height+half_offset_height+"px";
	obj_bm.style.left=obj_left+parseInt((obj_width+border_size)/2,10)-half_offset_width+"px";
	obj_bm.style.width=block_width_px;
	obj_bm.style.height=block_height_px;

	SL_ChangeToSelect();

return;
}
//Функция: Кубики расстановка [конец]

//Функция: Привязка размера [начало]
function SL_ChangeToSelect(){
	 
		// указатель
		var elem_name=document.getElementById("sel_element_name").value;
		var obj=document.getElementById(elem_name);
		
		// слой элемента
		var elem_zindex=document.getElementById("sel_element_zindex").value;
				
		//line
		var obj_line=document.getElementById("block_line");
		var obj_line_left=parseInt(obj_line.style.left,10);
		
		var obj_line_top=parseInt(obj_line.style.top,10);
		var obj_line_width=parseInt(obj_line.style.width,10);
		var obj_line_height=parseInt(obj_line.style.height,10);
		var obj_line_zIndex=obj_line.style.zIndex;
	
		//приравниваем
		obj.style.left=obj_line_left+"px";
		obj.style.top=obj_line_top+"px";
		/*
		obj.style.width=obj_line_width+"px";
		obj.style.height=obj_line_height+"px";
		*/
		//var obj.style.zIndex=obj_line_zIndex+"px";
	//---
	//размеры объекта
	var obj_type=obj.tagName;
	obj_type=obj_type.toUpperCase();
		
	if(obj_type=='IMG'){
		//без style
		obj.width=obj_line_width;
		obj.height=obj_line_height;
		obj_width=obj.width;
		obj_height=obj.height;
	} else {
		obj.style.width=obj_line_width+"px";
		obj.style.height=obj_line_height+"px";
		obj_width=obj.style.width;
		obj_height=obj.style.height;
	}

	/*-----------*/
	var elem_name_logo=$('sel_element_name_logo').value;
	var obj_logo=document.getElementById(elem_name_logo);
	obj_logo.width=parseInt(obj_width,10);
	obj_logo.height=parseInt(obj_height,10);
	/*-----------*/
return;
}
//Функция: Привязка размера [конец]

//Функция: Снятия обводки [начало]
function SL_UnSelect(){
	obj_divs=getElementsByClass('block_selection',null,'div');
	for(i=0;i<obj_divs.length;i++){
		obj_divs[i].style.visibility='hidden';
	}
	document.getElementById("block_line").style.visibility='hidden';
return;
}
//Функция: Снятия обводки [начало]


// February 12, 2012 
//-VERTICAL_DISTRIBUTION-----------------------------------------------------------[start]-//
// Массив с выделенными блоками
/*
var arr_blocks = new Array();
var arr_blocks_elem_names = new Array();
var arr_blocks_top_nopx = new Array();
*/
// Функция вычисления верхнего и нижнего блока [начало]
function Vert_Distrib_BaseBlocks(){

	// зачистка
	arr_blocks_elem_names = [ ];
	arr_blocks_top_nopx = [ ];
 	
	for (var i=0; i<=arr_blocks.length-1; i++){ 
		arr_blocks_elem_names.push(arr_blocks[i]);
		top_px=$(arr_blocks[i]).style.top;
		top_nopx=parseInt(top_px,10);
		arr_blocks_top_nopx.push(top_nopx);
	}
	
	
	// пузырёк---[начало]
 	var t=1;
	var a,b, a_v, b_v;

	while(t==1){
		t=0;
		for (var j=0; j<=arr_blocks_top_nopx.length-1; j++){ 
	  
		// Проверка элемента на существование
		if(j+1 in arr_blocks_top_nopx){}else{continue;}
			
		a=arr_blocks_top_nopx[j];
		b=arr_blocks_top_nopx[j+1];
		
		a_v=arr_blocks_elem_names[j];
		b_v=arr_blocks_elem_names[j+1];
		
	    if(a>b){
			//меняем местами
			arr_blocks_top_nopx[j]=b;
			arr_blocks_top_nopx[j+1]=a;
			
			arr_blocks_elem_names[j]=b_v;
			arr_blocks_elem_names[j+1]=a_v;
			 
			t=1;
	 	 } else{}
	  }
	}
	// пузырёк---[конец]
	
 	// минимальный - первый
	var high_elem=arr_blocks_elem_names[0];
	// максимальный - последний
	var low_elem=arr_blocks_elem_names[arr_blocks_elem_names.length-1];
	
	if (high_elem===undefined) {high_elem='';}
	if (low_elem===undefined) {low_elem='';}
	
	//Размер вертикального поля
		
return {high_elem:high_elem,low_elem:low_elem}; 
}
// Функция вычисления верхнего и нижнего блока [конец]


// Функция вычисления размеров раб.поля[начало]
function Vert_Distrib_field_calc(high_elem,low_elem){
	
	if((high_elem=='')||(low_elem=='')){return;}
	
	var obj_high=document.getElementById(high_elem);
	var obj_low=document.getElementById(low_elem);
 	
	//v_field_height_nopx
	var Y1=parseInt(obj_high.style.top,10);
	var high_height=parseInt(obj_high.style.height,10);
	var Y2=parseInt(obj_low.style.top,10);
	var v_field_height_nopx=Y2-(Y1+high_height);
	//$('Result').innerHTML+='<br>'+'high_height='+high_height+'Y2='+Y2+'Y1='+Y1+'v_field_height='+v_field_height_nopx;

	
	//сумма высот внутренних блоков
	var v_in_blocks_height_summ_nopx=0;
	var v_in_block_num=0;
	
	for (var i=0; i<=arr_blocks.length-1; i++){ 
		
		if((arr_blocks[i]!=high_elem)&&(arr_blocks[i]!=low_elem)){
			//$('Result').innerHTML+='<br>внутренний:'+arr_blocks[i];
			v_in_blocks_height_summ_nopx+=parseInt($(arr_blocks[i]).style.height,10);
			//блоков внутри
			v_in_block_num+=1;
			}else{}
 	}
	//$('Result').innerHTML+='<br>сумма высот:'+v_in_blocks_height_summ_nopx;

	//Step
	var v_step_nopx=(v_field_height_nopx-v_in_blocks_height_summ_nopx)/(v_in_block_num+1);
	
	v_step_nopx=Math.round(v_step_nopx);
	
	//$('Result').innerHTML+='<br>шаг:'+v_step_nopx;
	
	//v_step_nopx=parseInt(v_step_nopx);
	//$('Result').innerHTML+='<br>шаг:'+v_step_nopx;

	
	//Распределение
	//нужно к элементу который не первый и последний
	//добавить шаг в координату top
	var nabavlialka=0;
	for (var i=0; i<=arr_blocks_elem_names.length-1; i++){ 
		if((arr_blocks_elem_names[i]!=high_elem)&&(arr_blocks_elem_names[i]!=low_elem)){
			
			var obj=document.getElementById(arr_blocks_elem_names[i]);
			
			elem_height=parseInt(obj.style.height,10);
			obj.style.top=(Y1+high_height)+v_step_nopx+nabavlialka+'px';
			nabavlialka+=elem_height+v_step_nopx;
		}else{}
	}
	
return;	
}

// Функция вычисления размеров раб.поля[конец]
function SEL_BLOCK(el,in_el){
	//Если нажата CTRL
	if($('sel_vert_distribution').value=='CTRL'){
		
			/*$('Result').innerHTML='';
			for (var i=0; i<=arr_blocks.length-1; i++){ 
					$('Result').innerHTML+='<br>arr_blocks['+i+']'+arr_blocks[i];
			}*/
		//если уже выделено [начало]
		//$('Result').innerHTML=$(el).style.outline;
		
		if($(el).style.border!=""){
			//если уже выделено [конец]
			//снимаем выделение
			$(el).style.border="";  
		
			//удаляем из массива [начало]
			// перебор [начало]	
			for (var i=0; i<=arr_blocks.length-1; i++){ 

				if(el==arr_blocks[i]){		
					arr_blocks.splice(i,1); 
					
					//удаляем из массивов данных
					//вычисляем индекс элемента по имени
					arr_id=arr_blocks_elem_names.indexOf(el);
					//$('Result').innerHTML+='<br>arr_id'+arr_id;
					arr_blocks_elem_names.splice(arr_id,1);
					arr_blocks_top_nopx.splice(arr_id,1); 
										
				} else{}
			}
		// перебор [конец]	
		//удаляем из массива [конец]		
		
			} else {
				//выделяем
				//$(elem_name).style.outline="1px dashed"; 
				$(el).style.border="1px dashed"; 
				
				//добавляем в массив
				arr_blocks.push(el);
				

			}
		
		} else {lineFocus(el,in_el);}

return;
}
// Функция выделения блоков [конец]

// Функция удаления обводки блоков [начало] 
function UnSelect_OutlineBlocks(){
	for (var i=0; i<=arr_blocks.length-1; i++){ 
		$(arr_blocks[i]).style.border="";  	
	}
	 
	arr_blocks = [ ];
	arr_blocks_elem_names = [ ];
	arr_blocks_top_nopx = [ ];
return;
}
// Функция удаления обводки блоков [конец]  
//-VERTICAL_DISTRIBUTION-----------------------------------------------------------[end]-//

//-HORISONTAL_ ALIGMENT-----------------------------------------------------------[start]-//
// Функция гориз.выравнивания [начало]
function Hor_ALIGN(alg){
	
	var elem_arr = new Array();
	elem_arr=Vert_Distrib_BaseBlocks();
	var high_elem=elem_arr["high_elem"];
	var low_elem=elem_arr["low_elem"];
	if(high_elem==''){return;}
	
	var obj_high=document.getElementById(high_elem);
	var obj_high_width_nopx=parseInt(obj_high.style.width,10);
	var high_elem_left_nopx=parseInt(obj_high.style.left,10);
	
	// выравниваем по первому элементу [начало]
	for (var i=0; i<=arr_blocks_elem_names.length-1; i++){ 
	
		if(arr_blocks_elem_names[i]!=high_elem){
			
			var obj=document.getElementById(arr_blocks_elem_names[i]);
			//ширина блока
			obj_width_length_no_px=parseInt(obj.style.width,10);
	
			//виды выравнивания
			if(alg=='center'){
				obj.style.left=parseInt((high_elem_left_nopx+obj_high_width_nopx/2-obj_width_length_no_px/2),10)+"px";
			 }
			else if(alg=='right'){
				//справа
				obj.style.left=high_elem_left_nopx+obj_high_width_nopx-obj_width_length_no_px+"px";
			} else {
				//слева
				obj.style.left=high_elem_left_nopx+"px";
			}
			
		}else{}
	}
	// выравниваем по первому элементу [конец]
	
	
return;
}
// Функция гориз.выравнивания [конец]
//-HORISONTAL_ ALIGMENT-----------------------------------------------------------[end]-//
//-HORISONTAL_DISTRIBUTION--------------------------------------[start]-//
// Функция вычисления правого и левого блока [начало]
function Hor_Distrib_BaseBlocks(){

	// зачистка
	arr_blocks_elem_names = [ ];
	arr_blocks_top_nopx = [ ];
 	arr_blocks_left_nopx = [ ];
	
	for (var i=0; i<=arr_blocks.length-1; i++){ 
		arr_blocks_elem_names.push(arr_blocks[i]);
		left_px=$(arr_blocks[i]).style.left;
		left_nopx=parseInt(left_px,10);
		arr_blocks_left_nopx.push(left_nopx);
	}
		
	// пузырёк---[начало]
 	var t=1;
	var a,b, a_v, b_v;

	while(t==1){
		t=0;
		for (var j=0; j<=arr_blocks_left_nopx.length-1; j++){ 
	  
		// Проверка элемента на существование
		if(j+1 in arr_blocks_left_nopx){}else{continue;}
			
		a=arr_blocks_left_nopx[j];
		b=arr_blocks_left_nopx[j+1];
		
		a_v=arr_blocks_elem_names[j];
		b_v=arr_blocks_elem_names[j+1];
		
	    if(a>b){
			//меняем местами
			arr_blocks_left_nopx[j]=b;
			arr_blocks_left_nopx[j+1]=a;
			
			arr_blocks_elem_names[j]=b_v;
			arr_blocks_elem_names[j+1]=a_v;
			 
			t=1;
	 	 } else{}
	  }
	}
	// пузырёк---[конец]
	
 	// минимальный - первый
	var left_elem=arr_blocks_elem_names[0];
	// максимальный - последний
	var right_elem=arr_blocks_elem_names[arr_blocks_elem_names.length-1];
	
	if (right_elem===undefined) {right_elem='';}
	if (left_elem===undefined) {left_elem='';}
	
	//Размер горизонтального поля
	//$('Result').innerHTML+=' left_elem='+left_elem+' right_elem='+right_elem;
	
return {right_elem:right_elem,left_elem:left_elem}; 
}
// Функция вычисления правого и левого блока [конец]

// Функция вычисления размеров горизонтального раб.поля[начало]
function Hor_Distrib_field_calc(right_elem,left_elem){
	
	if((right_elem=='')||(left_elem=='')){return;}
	
	var obj_right=document.getElementById(right_elem);
	var obj_left=document.getElementById(left_elem);
 	
	//h_field_width_nopx
	var X2=parseInt(obj_right.style.left,10);
	
	var left_width=parseInt(obj_left.style.width,10);
	var X1=parseInt(obj_left.style.left,10);
	var h_field_width_nopx=X2-(X1+left_width);
	
	//сумма высот внутренних блоков
	var h_in_blocks_width_summ_nopx=0;
	var h_in_block_num=0;
	
	for (var i=0; i<=arr_blocks.length-1; i++){ 
		
		if((arr_blocks[i]!=right_elem)&&(arr_blocks[i]!=left_elem)){
			h_in_blocks_width_summ_nopx+=parseInt($(arr_blocks[i]).style.width,10);
			//блоков внутри
			h_in_block_num+=1;
			}else{}
 	}
	//$('Result').innerHTML+='<br>сумма ширин:'+h_in_blocks_width_summ_nopx;

	//Step
	var h_step_nopx=(h_field_width_nopx-h_in_blocks_width_summ_nopx)/(h_in_block_num+1);
	
	h_step_nopx=Math.round(h_step_nopx);
	
	//$('Result').innerHTML+='<br>шаг:'+h_step_nopx;

	//Распределение
	//нужно к элементу который не первый и последний
	//добавить шаг в координату left
	var nabavlialka=0;
	for (var i=0; i<=arr_blocks_elem_names.length-1; i++){ 
		if((arr_blocks_elem_names[i]!=right_elem)&&(arr_blocks_elem_names[i]!=left_elem)){
			
			var obj=document.getElementById(arr_blocks_elem_names[i]);
	 
			elem_width=parseInt(obj.style.width,10);
			obj.style.left=(X1+left_width)+h_step_nopx+nabavlialka+'px';
			nabavlialka+=elem_width+h_step_nopx;
		}else{}
	}
	
return;	
}
// Функция вычисления размеров горизонтального раб.поля[конец]
//-HORISONTAL_DISTRIBUTION--------------------------------------[end]-//
//-VERTICAL_ ALIGMENT-----------------------------------------------------------[start]-//
// Функция верт.выравнивания [начало]
function Vert_ALIGN(alg){
	
	var elem_arr = new Array();
	elem_arr=Hor_Distrib_BaseBlocks();
	var right_elem=elem_arr["right_elem"];
	var left_elem=elem_arr["left_elem"];
	if(left_elem==''){return;}
	
	var obj_left=document.getElementById(left_elem);
	var obj_left_height_nopx=parseInt(obj_left.style.height,10);
	var left_elem_top_nopx=parseInt(obj_left.style.top,10);
	
	// выравниваем по первому элементу [начало]
	for (var i=0; i<=arr_blocks_elem_names.length-1; i++){ 
	
		if(arr_blocks_elem_names[i]!=left_elem){
			
			var obj=document.getElementById(arr_blocks_elem_names[i]);
			//ширина блока
			obj_height_no_px=parseInt(obj.style.height,10);
	
			//виды выравнивания
			if(alg=='center'){
				obj.style.top=parseInt((left_elem_top_nopx+obj_left_height_nopx/2-obj_height_no_px/2),10)+"px";
			 }
			else if(alg=='bottom'){
				//справа
				obj.style.top=left_elem_top_nopx+obj_left_height_nopx-obj_height_no_px+"px";
			} else {
				//слева
				obj.style.top=left_elem_top_nopx+"px";
			}
			
		}else{}
	}
	// выравниваем по первому элементу [конец]
	
	
return;
}
// Функция верт.выравнивания [конец]
//-VERTICAL_ ALIGMENT-----------------------------------------------------------[end]-//
