/* РАБОЧИЕ ФУНКЦИИ */

/* СОРТИРОВКА ТОВАРОВ НА СТРАНИЦЕ ПО ПРОИЗВОЛЬНОМУ ПАРАМЕТРУ param  С ВЫВОДОМ НА СТРАНИЦУ */

function sSort (param){
 var tb = document.getElementById('table').childNodes[3]               /* тело таблицы */
 var sss = new Array()                                                 /* создаем массив для сортировки */
 for (var i=0; i<tb.childNodes.length; i=i+2)                          /* цикл по тегам tr (по строкам)*/
  for (var j=1; j<tb.childNodes[i].childNodes.length; j=j+2)           /* цикл по тегам td  (по столбцам)*/
   sss.push(tb.childNodes[i].childNodes[j].removeChild(tb.childNodes[i].childNodes[j].childNodes[1]))  /* заполняем массив для сортировки тегами а*/
 sss.sort(param)                                                       /* сортируем массив по значению param */
 var k = 0                                                             /* выводим отсортированный массив на страницу */
 for (var i=0; i<tb.childNodes.length; i=i+2)                                  
  for (var j=1; j<tb.childNodes[i].childNodes.length; j=j+2){
    var del = tb.childNodes[i].childNodes[j].removeChild(tb.childNodes[i].childNodes[j].childNodes[1]) 
    tb.childNodes[i].childNodes[j].appendChild(sss[k])
    tb.childNodes[i].childNodes[j].appendChild(del)
    k++
   }
 var tbcap = document.getElementById('table').childNodes[1]
 var color = 2
 if (param.name == "sUnname")
  color = 4
  for (var i=2; i<tbcap.childNodes[0].childNodes.length; i=i+2)
  if (i == color)
  tbcap.childNodes[0].childNodes[i].style.color = "#34c924"
  else
  tbcap.childNodes[0].childNodes[i].style.color = "#918151"
}
function sName(i, ii) {              /* сортировка массива тегов а по значению param = text (по имени товара)*/    
    if (i.text > ii.text)
        return 1;
    else if (i.text < ii.text)
        return -1;
    else
        return 0;
}
function sUnname(i, ii) {              /* сортировка массива тегов а по значению param = text (по имени товара) в обратном порядке*/    
    if (i.text < ii.text)
        return 1;
    else if (i.text > ii.text)
        return -1;
    else
        return 0;
}

/* ПЕРЕСТАНОВКА МЕСТАМИ ДВУХ ПРОИЗВОЛЬНЫХ ТОВАРОВ first И second */

function change (first, second){ 
 var temp1 = first.removeChild(first.childNodes[1])                    /* удаляем первый, запоминая его */
 var temp2 = second.removeChild(second.childNodes[1])                   /* удаляем второй, запоминая его */
 first.appendChild(temp2)                                               /* добавляем второй */
 second.appendChild(temp1)                                              /* добавляем первый */
 first.appendChild(first.removeChild(first.childNodes[1]))
 second.appendChild(second.removeChild(second.childNodes[1]))    
}

/* ОТОБРАЖЕНИЕ НА СТРАНИЦЕ ТОВАРОВ, ОТОБРАННЫХ ПО ЗНАЧЕНИЮ name[number[]]=symbol[], ОТСОРТИРОВАННЫХ ПО ИМЕНИ */

function multiSearch (number, symbol){
 sSort(sName)
 var tb = document.getElementById('table').childNodes[3]               
 var ki = 0                                                          
 var kj = 1
 for (var i=0; i<tb.childNodes.length; i=i+2)                          
  for (var j=1; j<tb.childNodes[i].childNodes.length; j=j+2){           
   var fl = true
   for (var k=0; k<number.length; k++)
    if((tb.childNodes[i].childNodes[j].childNodes[1].name.charAt(number[k]) == symbol[k])&&(fl)==true)   
     ;
    else
     fl = false
   if (fl==true){
     tb.childNodes[i].childNodes[j].childNodes[1].style.display = "block"    
     if ((i == ki)&(j == kj))                                
      ;            
     else
      change (tb.childNodes[i].childNodes[j], tb.childNodes[ki].childNodes[kj])
     kj = kj + 2                                                  
     if (kj >= tb.childNodes[ki].childNodes.length){ 
      ki = ki + 2 
      kj = 1
     }             
    }
   else                                                                   
    tb.childNodes[i].childNodes[j].childNodes[1].style.display = "none"  
  }
}

/* ДОБАВЛЕНИЕ В ПОИСК ЕЩЕ ОДНОГО ФИЛЬТРА */

function filter (num, text, numb, symb){
 var ls = document.getElementById('now')
 var lss = new Array()
 var imax = ls.childNodes.length
 for (var i=0; i<imax; i++)
  lss.push (ls.removeChild(ls.childNodes[0]))
 var img = document.createElement("IMG")
 img.setAttribute ('width', '16') 
 img.setAttribute ('heght', '16')
 img.setAttribute ('border', '0')
 img.setAttribute ('src', 'cross.png')
 var a = document.createElement("A")
 a.setAttribute ('href', '#')
 a.setAttribute ('name', numb+symb)
 a.setAttribute ('onclick', 'unFilter('+num+')')
 a.appendChild(document.createTextNode(text+' '))
 a.appendChild(img)
 lss[num] = document.createElement("LI")
 lss[num].appendChild(a)
 for (var i=0; i<imax; i++)
  ls.appendChild(lss[i])
// document.getElementById(num).style.display = "none"
 var number = new Array()
 var symbol = new Array()
 for (var i=1; i<imax; i=i+2)
  if (ls.childNodes[i].childNodes[0].tagName == "A"){
   number.push(ls.childNodes[i].childNodes[0].name.charAt(0))
   symbol.push(ls.childNodes[i].childNodes[0].name.charAt(1))
  }  
 multiSearch (number, symbol)
}

/* УДАЛЕНИЕ ИЗ ПОИСКА ОДНОГО ФИЛЬТРА */

function unFilter (num){
 var ls = document.getElementById('now')
 var lss = new Array()
 var imax = ls.childNodes.length
 for (var i=0; i<imax; i++)
  lss.push (ls.removeChild(ls.childNodes[0]))
 switch (num) {
  case 1:
   text = "любой пол"
   break
  case 3:
   text = "любая категория"
   break
  case 5:
   text = "любой тип"
   break
  case 7:
   text = "любой бренд"
   break
  case 9:
   text = "любая влагозащита"
   break
  default:
   alert('что-то не так')
   break
 } 
 lss[num] = document.createElement("LI")
 lss[num].appendChild(document.createTextNode(text));
 for (var i=0; i<imax; i++)
  ls.appendChild(lss[i])
// document.getElementById(num).style.display = "block"
 var number = new Array()
 var symbol = new Array()
 for (var i=1; i<imax; i=i+2)
  if (ls.childNodes[i].childNodes[0].tagName == "A"){
   number.push(ls.childNodes[i].childNodes[0].name.charAt(0))
   symbol.push(ls.childNodes[i].childNodes[0].name.charAt(1))
  }  
 multiSearch (number, symbol)
}
