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";
	 }
}
