function openPhoto( path, alt, w, h, titl )
{
        var wo = window.open( '', '_photo', 'width=' + w + ', height=' + h + ',scrollbars=0, menubar=0, titlebar=0, status=0, directories=0, resizable=0' );
        wo.document.write('<html>');
        wo.document.write('<head>');
        wo.document.write('<title>' + titl + '</title>');
        wo.document.write('</head>');
        wo.document.write('<body leftmargin=0 topmargin=0 marginheight=0 marginwidth=0 bgcolor="#FFFFFF">');
        wo.document.write('<img style="cursor:pointer" src="' + path + '" border="0" vspace="0" hspcae="0" alt="' + alt +'" title="' + alt +'" OnClick="window.close();">');
        wo.document.write('</body>');
        wo.document.write('</html>');
        wo.focus();
        return false;
}


function enabledSubmit()
{
  var userName     = window.document.getElementById('userName');
  var phoneNumber  = window.document.getElementById('phoneNumber');
  var isWho        = window.document.getElementById('isWho');
  var city         = window.document.getElementById('city');
  var adress       = window.document.getElementById('adress');
  var dateTo       = window.document.getElementById('dateTo');
  var timeTo       = window.document.getElementById('timeTo');
  var goSubmit     = window.document.getElementById('submitButton');

  if( (userName.value == "") || (phoneNumber.value == "") || (isWho.value == "") || (city.value == "") || (adress.value == "") || (dateTo.value == "") || (timeTo.value == "") )
  {
    goSubmit.disabled = true;
  } else {
      goSubmit.disabled = false;
    }
  return true;
}

function Reset_div(id_div) {
        var dom = window.document.getElementById(id_div);
        if (dom.style.display == 'block') {
                dom.style.display = 'none'; }
        else {
                dom.style.display = 'block'; }
}

/**
* Формирование контейнеров для блоков кухни на основании размерности матрицы matrixIndex
*/
 function constructBlocks()
 {
   var outStr_block = '<div class="img"><table class="construct" align="center" cellpadding="0" cellspacing="0">\n<tr>\n';

   for( i=0; i < matrixIndex.length; i++ )
   {
     if( i ) {
       outStr_block += '<td width="5px">&nbsp;</td>\n<td width="5px" style="border-left:2px solid #34a3db">&nbsp;</td>\n';
     }

     outStr_block += '<td valign="bottom"><div id="block_'+i+'"></div></td>\n';
   }

   outStr_block += '</tr>\n</table></div>';

   document.getElementById('block').innerHTML = outStr_block;
 }
/**/

/**
* Удаляем все пустые столбцы элементов во всех секциях кухни (кроме угловых секций)
*/
 function deleteEmptyColumn()
 {
   var valueColumn    = new Array();
   var sumValueColumn = new Array();

   for( i=0; i < matrixIndex.length; i++ )
   {
      valueColumn[i]    = new Array();
      sumValueColumn[i] = 0;

      for( k=0; k < matrixIndex[i][0].length; k++ ) {
         valueColumn[i][k] = 0;
      }
   }

   for( i=0; i < matrixIndex.length; i++ ) {
      for( j=0; j < matrixIndex[i].length; j++ ) {
         for( k=0; k < matrixIndex[i][j].length; k++ ) {
            if( (matrixIndex[i][j][k] != 0) && (matrixIndex[i][j][k] != -1) ) {
              valueColumn[i][k] = 1;
            }
         }
      }
   }

   for( i=0; i < valueColumn.length; i++ ) {
      for( k=0; k < valueColumn[i].length; k++ ) {
         sumValueColumn[i] += valueColumn[i][k];
      }
   }

   for( i=0; i < sumValueColumn.length; i++ ) {
      if( sumValueColumn[i] == 0 ) {
        for( j=0; j < matrixIndex[i].length; j++ ) {
           for( k=0; k < (matrixIndex[i][j].length-1); k++ ) {
              matrixIndex[i][j].length--;
           }
        }
      }
   }

   for( i=0; i < matrixIndex.length; i++ ) {
      if( matrixIndex[i][0].length > 1 ) {
        for( k=0; k < matrixIndex[i][0].length; k++ ) {
           if( valueColumn[i][k] == 0 ) {
             if( k != (matrixIndex[i][0].length-1) )
			 {
               for( j=0; j < matrixIndex[i].length; j++ )
			   {
                  for( kk=k; kk < (matrixIndex[i][j].length-1); kk++ ) {
                     matrixIndex[i][j][kk] = matrixIndex[i][j][kk+1];
                  }

				  matrixIndex[i][j].length--;
               }

			   for( l=k; l < (valueColumn[i].length-1); l++ ) {
                  valueColumn[i][l] = valueColumn[i][l+1];
               }

               k--;
             }
			 else {
               for( j=0; j < matrixIndex[i].length; j++ ) {
                  matrixIndex[i][j].length--;
               }
             }
           }
        }
      }
   }
 }
/**/

/**
* Поиск в матрице allElement элемента с индексом idx
*/
 function compareElement(idx)
 {
   for( l=0; l < allElement.length; l++ ) {
      if( allElement[l][0] == idx ) {
        return l;
      }
   }

   return 0;
 }
/**/

/**
* Рассчитываем размеры всех элементов для схемы кухни, с учётом для каждого значений соседних вертикальных элементов
* Если flag равен 0 - возвращаем массив размеров по ширине, если 1 - общую ширину
*/
 function calculationSize(flag)
 {
   var checkLevel     = new Array();
   var maxSizeElement = new Array();
   var publicSize     = new Array();

   for( i=0; i < matrixIndex.length; i++ )
   {
      checkLevel[i]     = new Array();
      maxSizeElement[i] = new Array();

      for( k=0; k < matrixIndex[i][0].length; k++ )
      {
         checkLevel[i][k]     = 0;
         maxSizeElement[i][k] = 0;
      }

	  publicSize[i] = 0;
   }

   for( i=0; i < matrixIndex.length; i++ ) {
      for( j=0; j < matrixIndex[i].length; j++ ) {
         for( k=0; k < matrixIndex[i][j].length; k++ )
         {
            var indexElement = matrixIndex[i][j][k];

            if( (checkLevel[i][k] == 0) && (indexElement != 0) )
            {
              if( indexElement == -1 )
              {
                checkLevel[i][k] = 1;
                indexElement     = matrixIndex[i][matrixIndex[i].length-1][k];
              }

			  var idElement = compareElement(indexElement); // ищем среди всех элементов элемент с индексом indexElement

			  if( Math.ceil( allElement[idElement][3] ) > maxSizeElement[i][k] ) {
                maxSizeElement[i][k] = Math.ceil( allElement[idElement][3] );
              }
            }
         }
      }
   }

   for( i=0; i < matrixIndex.length; i++ ) {
      for( k=0; k < matrixIndex[i][0].length; k++ ) {
         publicSize[i] += maxSizeElement[i][k];
      }
   }

   if( flag ) {
     return publicSize;
   }
   else
   {
     return maxSizeElement;
   }
 }
/**/

/**
* Рассчитываем общую высоту элементов всех схематичных столбцов кухни, с учётом общей высоты кухни 240(см)
*/
 function calculationHeightColumn()
 {
   var heightColumn = new Array();

   for( i=0; i < matrixIndex.length; i++ )
   {
      heightColumn[i] = new Array();

      for( k=0; k < matrixIndex[i][0].length; k++ ) {
         heightColumn[i][k] = 0;
	  }
   }

   for( i=0; i < matrixIndex.length; i++ ) {
      for( j=0; j < matrixIndex[i].length; j++ ) {
         for( k=0; k < matrixIndex[i][j].length; k++ )
         {
            var indexElement = matrixIndex[i][j][k];

            if( ( indexElement ) && ( indexElement != -1 ) ) // indexElement != 0 && indexElement != -1
            {
              var idElement = compareElement(indexElement); // ищем среди всех элементов элемент с индексом indexElement

              heightColumn[i][k] += Math.ceil( allElement[idElement][4] )
            }
         }
	  }
   }

   return heightColumn;
 }
/**/

/**
* Поиск в схеме кухни количества элементов в столбцах
*/
 function numberElementsOfColumn()
 {
   var numberElements = new Array();

   for( i=0; i < matrixIndex.length; i++ )
   {
      numberElements[i] = new Array();

      for( k=0; k < matrixIndex[i][0].length; k++ ) {
         numberElements[i][k] = 0;
	  }
   }

   for( i=0; i < matrixIndex.length; i++ ) {
      for( j=0; j < matrixIndex[i].length; j++ ) {
         for( k=0; k < matrixIndex[i][j].length; k++ ) {
            if( matrixIndex[i][j][k] ) { // matrixIndex[i][j][k] != 0
              numberElements[i][k]++;
			}
		 }
	  }
   }

   return numberElements;
 }
/**/

/**
* Выводим список текущих элементов кухни с их полным описанием
*/
 function showListElement()
 {
   var flag;
   var allCurrentElement = new Array();
   var numCurrentElement = new Array();
   var outStr_list       = '<table width="100%" cellpadding="0" cellspacing="0">\n';

   outStr_list  += '<tr>\n<td class="title" colspan="2"><h1>Изделия данного кухонного гарнитура</h1></td>\n</tr>\n';

   for( i=0; i < matrixIndex.length; i++ ) {
      for( j=0; j < matrixIndex[i].length; j++ ) {
         for( k=0; k < matrixIndex[i][j].length; k++ )
		 {
            flag = 0;

		    for( l=0; l < allCurrentElement.length; l++ ) {
               if( allCurrentElement[l] == matrixIndex[i][j][k] )
			   {
                 flag = 1;

				 numCurrentElement[l]++;
               }
            }

			if( (matrixIndex[i][j][k] == 0) || (matrixIndex[i][j][k] == -1) ) {
              flag = 1;
            }

			if( !flag )
            {
              numCurrentElement[allCurrentElement.length] = 1;

              allCurrentElement[allCurrentElement.length] = matrixIndex[i][j][k];

			  var idElement = compareElement(matrixIndex[i][j][k]); // ищем среди всех текущий элемент по индексу

              outStr_list  += '<tr>\n<td valign="top"><div class="borderImage"';

			  if( allElement[idElement][9] > allElement[idElement][10] ) {
                outStr_list  += ' style="width:'+(allElement[idElement][9]+6)+'px; height:'+(allElement[idElement][9]+6)+'px; padding-top:'+Math.round( (allElement[idElement][9] - allElement[idElement][10])/2 )+'px">';
			  }
              else {
                outStr_list  += ' style="width:'+(allElement[idElement][10]+6)+'px; height:'+(allElement[idElement][10]+6)+'px">';
			  }

              <!--outStr_list  += '<img src="../photos/'+matrixIndex[i][j][k]+'/3D/'+matrixIndex[i][j][k]+'.gif" width="'+allElement[idElement][9]+'" height="'+allElement[idElement][10]+'" alt="" /></div></td>\n<td class="value" valign="top"><span>'+allElement[idElement][6]+'</span></br></br>Размер (см): '+allElement[idElement][3]+' x '+allElement[idElement][4]+' x '+allElement[idElement][5]+'<br />Код: '+allElement[idElement][8]+'<br />Цена: '+allElement[idElement][7]+' у.е.<br /><span id="num' + (allCurrentElement.length-1) + '"></span></td>\n</tr>\n';-->

			  outStr_list  += '<img src="../photos/'+matrixIndex[i][j][k]+'/3D/'+matrixIndex[i][j][k]+'.gif" width="'+allElement[idElement][9]+'" height="'+allElement[idElement][10]+'" alt="" /></div></td>\n<td class="value" valign="top"><span>'+allElement[idElement][6]+'</span></br></br>Размер (см): '+allElement[idElement][3]+' x '+allElement[idElement][4]+' x '+allElement[idElement][5]+'<br />Код: '+allElement[idElement][8]+'<br /><span id="num' + (allCurrentElement.length-1) + '"></span></td>\n</tr>\n';
            }
         }
      }
   }

   outStr_list += '</table>';

   document.getElementById('infoCurrentKitchen').innerHTML = outStr_list;

   for( l=0; l < allCurrentElement.length; l++ ) {
      document.getElementById( 'num' + l ).innerHTML = 'Количество: ' + numCurrentElement[l];
   }
 }
/**/

/**
* Строим схему кухни на основании матрицы matrixIndex
*/
 function buildScheme()
 {
   deleteEmptyColumn(); // удаляем все пустые столбцы элементов в блоках кухни

   var checkLevel   = new Array();
   var outStr       = new Array();
   var outStr_table = '';

   var maxSizeElement = calculationSize(0);        // массив размеров по ширине
   var publicSize     = calculationSize(1);        // массив ширины секций кухни
   var heightColumn   = calculationHeightColumn(); // массив размеров по высоте
   var numberColumn   = numberElementsOfColumn();  // массив количества элементов

   for( i=0; i < matrixIndex.length; i++ )
   {
      checkLevel[i] = new Array();
      outStr[i]     = new Array();

	  for( k=0; k < matrixIndex[i][0].length; k++ )
      {
         checkLevel[i][k] = 0;
         outStr[i][k]     = '<td><table cellpadding="0" cellspacing="0">\n';
      }
   }

   for( i=0; i < matrixIndex.length; i++ )
   {
      outStr_table = '<table cellpadding="0" cellspacing="0">\n<tr align="center" valign="bottom">\n';

	  for( j=0; j < matrixIndex[i].length; j++ )
      {
         for( kk=0; kk < outStr[i].length; kk++ ) {
            outStr[i][kk] += '<tr class="in" align="center">\n';
         }

         for( k=0; k < matrixIndex[i][j].length; k++ )
         {
            if( checkLevel[i][k] == 0 )
            {
              var indexElement = matrixIndex[i][j][k];
              var jj           = j;
              var jjj          = 0;

              outStr[i][k] += '<td';

              if( indexElement == -1 )
              {
                outStr[i][k]    += ' rowspan="'+(matrixIndex[i].length-j)+'"';
                checkLevel[i][k] = 1;
                indexElement     = matrixIndex[i][matrixIndex[i].length-1][k];
                jj               = matrixIndex[i].length-1;
                jjj              = 1;
              }

              outStr[i][k] += ' onMouseOver="this.style.borderColor=\'#ff6622\'" onMouseOut="this.style.borderColor=\'white\'" onClick="changeKitchen('+matrixIndex[i][0][k]+', '+matrixIndex[i][1][k]+', '+matrixIndex[i][2][k]+', '+i+', '+jj+', '+k+', 0);"';

              var idElement = compareElement(indexElement); // ищем среди всех элементов элемент с индексом indexElement

              var paddingValue  = Math.ceil( allElement[idElement][4] );
              var paddingValue1 = paddingValue;

              if( jjj ) {
                switch( matrixIndex[i].length-j )
                {
                  case 2:
                    paddingValue1 += 4;
                   break;
                  case 3:
                    paddingValue += 8;
                   break;
                }
			  }

              switch( allElement[idElement][1] )
              {
                case 0:
                 break;
                case 1:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 2:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 3:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 4:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 5:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 6:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 7:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 8:
                  outStr[i][k] += ' valign="top"';
                 break;
                case 9:
                  outStr[i][k] += ' valign="top"';
                 break;
                case 10:
                  outStr[i][k] += ' valign="top"';
                 break;
                case 11:
                  outStr[i][k] += ' valign="top"';
                 break;
                case 12:
                  outStr[i][k] += ' valign="top"';
                 break;
                case 13:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 14:
                  outStr[i][k] += ' valign="bottom"';
                 break;
                case 15:
                  outStr[i][k] += ' valign="top"';
                 break;
              }

              switch( numberColumn[i][k] )
              {
                case 0:
                  var emptyHeight = 80;
                 break;
                case 1:
                  var emptyHeight = Math.round( (240 - heightColumn[i][k])/2 );
                 break;
                case 2:
                  var emptyHeight = 240 - heightColumn[i][k];
                 break;
                case 3:
                  var emptyHeight = 240 - heightColumn[i][k] + paddingValue1;
                 break;
              }

              var emptyJ = 1;

              if( numberColumn[i][k] == 3 )
              {
                var idElement_0 = compareElement( matrixIndex[i][0][k] ); // ищем среди всех элементов элемент с индексом 0

				//var idElement_1 = compareElement( matrixIndex[i][1][k] ); // ищем среди всех элементов элемент с индексом 1

				var idElement_2 = compareElement( matrixIndex[i][2][k] ); // ищем среди всех элементов элемент с индексом 2

				if( (( allElement[ idElement_0 ][1] == 13 ) || ( allElement[ idElement_0 ][1] == 14 )) && ( matrixIndex[i][1][k] == -1 ) && (( allElement[ idElement_2 ][1] == 1 ) || ( allElement[ idElement_2 ][1] == 2 )) ) {
                  emptyJ = 0;
				}
              }

              if( ( indexElement == 0 ) || ( ( numberColumn[i][k] == 3 ) && ( j == emptyJ ) ) ) {
                outStr[i][k] += ' style="height:' + ( emptyHeight + 4 ) + 'px">';
			  }
              else {
                outStr[i][k] += ' style="height:' + paddingValue + 'px">';
			  }

              if( ( indexElement == 0 ) && ( maxSizeElement[i][k] > 0 ) && ( maxSizeElement[i][k] < 50 ) ) {
                outStr[i][k] += '<img class="empty" src="../images/'+indexElement+'.gif" width="'+maxSizeElement[i][k]+'" height="'+emptyHeight+'" alt="" />';
			  }
              else {
				if( indexElement == 0 ) {
                  outStr[i][k] += '<img class="empty" src="../images/'+indexElement+'.gif" width="'+Math.ceil( allElement[idElement][3] )+'" height="'+emptyHeight+'" alt="" />';
				}
                else {
                  outStr[i][k] += '<img src="../photos/'+indexElement+'/'+indexElement+'.gif" width="'+Math.ceil( allElement[idElement][3] )+'" height="' + paddingValue + '" alt="'+allElement[idElement][6]+'" title="'+allElement[idElement][6]+'" />';
				}
			  }

              outStr[i][k] += '</td>\n';
            }
          }

          for( kk=0; kk < outStr[i].length; kk++ ) {
             outStr[i][kk] += '</tr>\n';
          }
       }

       for( kk=0; kk < outStr[i].length; kk++ ) {
          outStr_table += outStr[i][kk] + '</table></td>\n';
       }

       outStr_table += '</tr>\n<tr class="size" align="center">\n';

	   for( k=0; k < matrixIndex[i][0].length; k++ ) {
          if( maxSizeElement[i][k] != 0 ) {
            outStr_table += '<td><div id="leftArrow"><div id="rightArrow"><nobr>'+maxSizeElement[i][k]+' см</nobr></div></div></td>\n';
          }
		  else {
            outStr_table += '<td><div id="leftArrow"><div id="rightArrow">&nbsp;</div></div></td>\n';
          }
       }

	   outStr_table += '</tr>\n';
       outStr_table += '<tr class="size" align="center">\n';
       outStr_table += '<td colspan="'+matrixIndex[i][0].length+'"><div id="leftArrow"><div id="rightArrow"><nobr>'+publicSize[i]+' см</nobr></div></div></td>\n';
       outStr_table += '</tr>\n';
       outStr_table += '</table>\n';

       document.getElementById('block_'+i).innerHTML = outStr_table;
    }

    calculationTotalParameters(); // выводим текущую общую информацию по кухонному гарнитуру
    showListElement();            // выводим информацию по текущим элементам кухни
	writeScheme();
 }
/**/

/**
* Удаляем в матрице matrixIndex элемент с индексами по схеме кухни
*/
 function deleteElement( i, j, k )
 {
   matrixIndex[i][j][k] = 0;

   if( ( j==2 ) && ( matrixIndex[i][1][k] == -1 ) )
   {
     matrixIndex[i][1][k] = 0;

     if( matrixIndex[i][0][k] == -1 ) {
       matrixIndex[i][0][k] = 0;
	 }
   }
 }
/**/

/**
* Замена в матрице matrixIndex элемента (i,j,k) на новый с индексом idx
*/
 function changeElement( i, j, k, idx )
 {
   if( ( j==2 ) && ( matrixIndex[i][1][k] == -1 ) )
   {
     matrixIndex[i][1][k] = 0;

     if( matrixIndex[i][0][k] == -1 ) {
       matrixIndex[i][0][k] = 0;
	 }
   }

   if( (allElement[ idx ][1] == 3) || (allElement[ idx ][1] == 4) )
   {
     matrixIndex[i][2][k] = allElement[ idx ][0];
     matrixIndex[i][1][k] = -1;
     matrixIndex[i][0][k] = -1;

	 return;
   }

   var numberColumn = numberElementsOfColumn(); // массив количества элементов

   switch( numberColumn[i][k] )
   {
     case 0:
       matrixIndex[i][j][k] = allElement[ idx ][0];
       return;
      break;
     case 1:
       matrixIndex[i][j][k] = allElement[ idx ][0];
      break;
     case 2:
       matrixIndex[i][j][k] = allElement[ idx ][0];
      break;
     case 3:
       matrixIndex[i][j][k] = allElement[ idx ][0];
       return;
      break;
   }

   var numberColumn = numberElementsOfColumn(); // массив количества элементов

   switch( numberColumn[i][k] )
   {
     case 1:
       return;
      break;
     case 2:
       var heightColumn = calculationHeightColumn(); // массив размеров по высоте
       var emptyHeight  = 240 - heightColumn[i][k];

	   if( emptyHeight < 36 ) {
         if( !matrixIndex[i][0][k] )
         {
           matrixIndex[i][0][k] = matrixIndex[i][1][k];
           matrixIndex[i][1][k] = -1;
         }
		 else {
		   if( !matrixIndex[i][1][k] ) {
             matrixIndex[i][1][k] = -1;
		   }
           else
		   {
             matrixIndex[i][2][k] = matrixIndex[i][1][k];
             matrixIndex[i][1][k] = -1;
           }
		 }
	   }

	   return;
      break;
     case 3:
       return;
      break;
   }
 }
/**/

/**
* Добавление нового элемента слева относительно выбранного (i,j,k)
*/
 function addElementLeft( i, j, k )
 {
   for( jj=0; jj < matrixIndex[i].length; jj++ )
   {
      for( kk=matrixIndex[i][jj].length; kk > k; kk-- ) {
         matrixIndex[i][jj][kk] = matrixIndex[i][jj][kk-1];
	  }

	  matrixIndex[i][jj][k] = 0;
   }
 }
/**/

/**
* Добавление нового элемента справа относительно выбранного (i,j,k)
*/
 function addElementRight( i, j, k )
 {
   for( jj=0; jj < matrixIndex[i].length; jj++ )
   {
      for( kk=matrixIndex[i][jj].length; kk > (k+1); kk-- ) {
         matrixIndex[i][jj][kk] = matrixIndex[i][jj][kk-1];
	  }

	  matrixIndex[i][jj][ k+1 ] = 0;
   }
 }
/**/

function writeScheme()
 {
   var stringScheme = '';

   for( i=0; i < matrixIndex.length; i++ )
   {
      for( j=0; j < matrixIndex[i].length; j++ )
      {
         for( k=0; k < matrixIndex[i][j].length; k++ )
            stringScheme += matrixIndex[i][j][k] + ',';

         stringScheme = stringScheme.substring( 0, stringScheme.length-1 );

         stringScheme += '&';
      }

      stringScheme = stringScheme.substring( 0, stringScheme.length-1 );

      stringScheme += '*';
   }

   stringScheme = stringScheme.substring( 0, stringScheme.length-1 );

   document.getElementById('kitchenArray').value = stringScheme;
 }
