var d = document;


function hide_block(an){
  window.counter = 0;  
  window.js_preloader = d.getElementById("js_preloader");

   if(window.js_preloader==null) return;    // return if no any product on the page

    window.mos_height = d.getElementById("prod_list").parentNode.offsetHeight;
  var mList = d.getElementById("prod_list");
  mList.style.visibility = "hidden";
  window.js_preloader.style.display = "block";
  var pTs = mList.getElementsByTagName("IMG");
  for(var i = 0; i < pTs.length; i++){
    var pTmb = pTs[i];
    window.counter++;
    if(i == an){        
      pTmb.id = "active_tumb";        
      open_prod_det(an);
    }
  }
  d.getElementById('product_details').innerHTML += '<div id="empty_prod"></div>';
  var emBl = d.getElementById('empty_prod');
  emBl.style.height = window.mos_height - 4 + "px";
  if(an != null){
    d.getElementById('empty_prod').style.display = "none";
  };
  if(window.counter > 21){
    emBl.style.height = window.mos_height + 30 + "px";
    d.getElementById("prod_pager").setAttribute("pager", "visible");
    create_pager(window.counter);
    mList.style.visibility = "visible";
    window.js_preloader.style.display = "none";    
  }else if(window.counter < 21){    
    go_mosaic();
  }else if(window.counter == 21){
    window.js_preloader.style.display = "none";
    mList.style.visibility = "visible";
  }
}

function go_mosaic(){
  var mUl = d.getElementById("prod_list");
  var mlis = mUl.getElementsByTagName("LI");
  if(window.counter < 21){    
    for(var i = 0; i < mlis.length; i++){
      var pTmb = mlis[i];
      pTmb.className = "mos_r mos_I" + i;
    }
    mUl.style.visibility = "visible";
    window.js_preloader.style.display = "none";
  }else{
    var mQ = (window.prd_cnt-1);
    if(window.prd_cnt * 21 != window.counter){
      for(var i = 0; i < mlis.length; i++){
        var pTmb = mlis[i];
        if(i >= window.counter - (window.counter - (mQ * 21))){
          mlis[i].className = "mos_r mos_I" + (i - (mQ * 21));        
          mlis[i].style.marginTop = (window.mos_height * mQ) + "px";
        }
      }
    }
  }
}

function create_pager(tN){
  window.prd_cnt = Math.ceil(window.counter / 21);
  var pUl = d.getElementById("prod_pager");
  pUl.style.display = "block";
  pUl.innerHTML = '<li class="fixed"><strong>Pages</strong></li>';    
  add_pages(window.prd_cnt,pUl,null);
  go_mosaic();
}

function add_pages(b,g,c){  
  if(b > c){
    var r = 1;
    var tt = r + c;
  if (tt == 1) {
        g.innerHTML += '<li id="active_page"><a href="#" onclick="prod_nav(this); return false">' + (c + 1) + '</a></li>';
    } else {
        g.innerHTML += '<li><a href="#" onclick="prod_nav(this); return false">' + (c + 1) + '</a></li>';;
    }
    ng = window.setTimeout(function(){add_pages(b,g,tt)}, 70);
  }
}

function prod_nav(b){
  if (b.parentNode.id != "active_page") {
    d.getElementById("active_page").id = "";
    b.parentNode.id = "active_page";
    var pTs = d.getElementById("prod_list");
    pTs.style.top = - ((b.innerHTML - 1) * window.mos_height) + "px";
  }
}

/* Show the category navigator */
function showNavPanel() {
var d = window.document;
 
  button = d.getElementById('closeBtn');
  button.style.display = "none";
  
  panel = d.getElementById('category_navigator');
  panel.style.display= "block";

  category = d.getElementById('active_category');
  category.style.display = "block";

  hideSelects(d.getElementById("active_product"));  // hide all select tags - due to IE6 bug
  
  d.getElementById("active_product").id=null;
  d.getElementById("active_tumb").id=null;

}

/* Show the button to close the category navigator */
function showCloseBtn() {
  button = window.document.getElementById('closeBtn');
  button.style.display = "block";
}

function show_product(tmb){
  hide_navigator();

  if(tmb.id != "active_tumb"){
    var acTmb = d.getElementById("active_tumb");
    var pTs = d.getElementById("prod_list").getElementsByTagName("IMG");
    for (var i = 0; i < pTs.length; i++) {
      var pTmb = pTs[i];
      if (pTmb.parentNode == tmb) {
    if (acTmb) { acTmb.id = null; };
    pTmb.parentNode.id = "active_tumb";
        open_prod_det(i);
      }
    }
  }
}

// Hide all select & button tags - due to IE6 bug
//
function hideSelects(acTmb) {
  if(!checkIEversion()) return; // if not IE6/5
  var tSels = acTmb.getElementsByTagName("select");
  for (var i = 0; i < tSels.length; i++) {
   tSels[i].style.visibility = "hidden";
 } // for
 var button = document.getElementsByClassName('addToBasketButtonPlace',acTmb);
 button[0].style.visibility = "hidden";
}

// Show all select & button tags - due to IE6 bug
//
function showSelects(acTmb) {
  if(!checkIEversion()) return; // if not IE6/5
  var tSels = acTmb.getElementsByTagName("select");
  for (var i = 0; i < tSels.length; i++) {
    tSels[i].style.visibility = "visible";
  } // for
  var button = document.getElementsByClassName('addToBasketButtonPlace',acTmb);
  button[0].style.visibility = "visible";
}

function open_prod_det(pId){  
  var actD = d.getElementById("active_product");
  var pDivs = d.getElementById("product_details").getElementsByTagName("DIV");
  var n = 0;
  var newArray = [];  
  for (var i = 0; i < pDivs.length; i++) {
    if (pDivs[i].className == "prodItem") {
      newArray[n] = pDivs[i];
      n++;      
    }
  }
  for(var n = 0; n < newArray.length; n++){
  var tab = newArray[n];  
  if (n == pId) {
      if (actD) { actD.id = ""; hideSelects(actD); };
      tab.id = "active_product";
    showSelects(tab);      // show select tags due to IE6's bug
    clearAttrMessage(tab);     // clear attributes message
    }
  }
  if (d.getElementById('empty_prod')) {
    d.getElementById('empty_prod').style.display = "none"
  };
  var acDO = d.getElementById("active_product").getElementsByTagName("IMG");  
  for (var i = 0; i < acDO.length; i++) {
    if (acDO[i].parentNode.className == "itemBlock") {
      var sz = d.getElementById("prod_list").parentNode.parentNode.offsetHeight;
      if (d.getElementById("prod_pager").getAttribute("pager") == "visible") {
        var RColH = sz;
      } else {
        var RColH = sz - 4;
      }
      var pIm = acDO[i];
      pIm.parentNode.style.height = (RColH - 20) + "px";
      var pH = pIm.offsetHeight;
      if(pH && pH < RColH && pIm.className != "fixed"){
        pIm.className = "fixed";
        pIm.style.paddingTop = ((RColH - 20) - pH) / 2 + "px";
      } else if (pH && pH > RColH && pIm.className != "fixed") {
        pIm.className = "fixed";
        pIm.style.height = (RColH - 20) + "px";
        pIm.style.width = "auto";
      }
    }
  }  
}

function openNavBlock(){
var box = d.getElementById("prod_list");
if(box==null) return;
  var nr = d.getElementById("category_navigator");  
  nr.style.height = d.getElementById("prod_list").parentNode.parentNode.offsetHeight + "px";
  nr.style.display = "block";    
}

function hide_navigator(){
  var navigator = d.getElementById("category_navigator");
  if(navigator.style.display == "block") {
    navigator.style.display = "none";
  }
  var category = d.getElementById('active_category');
  category.style.display = "none";
}

function openDet(l){
  var det = d.getElementById("active_order");
  var ab = l.parentNode.parentNode;
  if (det) {
    if(ab == det) {
      ab.id = "";
    } else {
      det.id = "";
      ab.id = "active_order";
    }
  } else {
    ab.id = "active_order";
  }
}

// Checking product attributes form and showing a message to select the attributes
// Function version for <input type="submit"> tag
//
function checkAttrSelectForInput(fObj) {
  var sel = fObj.getElementsByTagName("select");
  var returnParam = true;
  for(var i=0; i<sel.length; i++)  {
    if(sel[i].value=='') 
      { sel[i].parentNode.className = 'notSelected'; returnParam = false; } 
    else 
      sel[i].parentNode.className = '';
  } // for

    var errMessage = document.getElementsByClassName('errorMessage',fObj);
    if (returnParam)
        errMessage[0].style.display = "none";
    else
        errMessage[0].style.display = "block";

  return returnParam;
}

// Checking product attributes form and showing a message to select the attributes OR send the form
//
function checkAttrSelect(aObj) {
  var thisForm = getParentTagObj(aObj,'form');
  if(!thisForm) return false;  // we do not have any parent FORM tag

  var sel = thisForm.getElementsByTagName("select");
  var returnParam = true;
  for(var i=0; i<sel.length; i++)  {
    if(sel[i].value=='')
      { sel[i].parentNode.className = 'notSelected'; returnParam = false; } 
    else 
      sel[i].parentNode.className = '';
  } // for

    var errMessage = document.getElementsByClassName('errorMessage',thisForm);
    if (returnParam) {
        errMessage[0].style.display = "none";
        thisForm.submit();
    }
    else
        errMessage[0].style.display = "block";

  return returnParam;
}

// Find first parent tag Object by tag name or return FALSE in nothing has been found
//
function getParentTagObj(obj,tagName) {
  var parentTagName = obj.parentNode.tagName.toLowerCase();
  if(parentTagName == 'body') return false;
  if(parentTagName == tagName.toLowerCase()) return obj.parentNode;
  return  getParentTagObj(obj.parentNode,tagName);
}

// Clear selected prod attr message
//
function clearAttrMessage(acTmb) {
  tDivs= acTmb.getElementsByTagName("div");
   for (var i = 0; i < tDivs.length; i++) {
      if(tDivs[i].className == "notSelected") tDivs[i].className = '';
      if(tDivs[i].className == "errorMessage") tDivs[i].style.display = "none";
   }
}

