/**
 * Provides functionality on section pages to filter/sort products.
 * 
 * @author Lewis A MacKenzie
 * @copyright teclan 2009
 * @version 1.0.0
 */

var $f = function(id) {
  return document.getElementById(id);
};
 
//main HTTP request
var request = null;
var currentPageNumber = 1;
var proposedPage = 1;

function getSelectedOptions() {
  var ret = "";
  var theForm = $f('teclan-search');
  if (theForm) {
    var elementCount = theForm.elements.length;
	var itemCount = 0;
	for (var i = 0; i < elementCount; i++) {
	  var element = theForm.elements[i];
	  if (element.type.indexOf("select") != -1) {
	    var opt = element.options[element.selectedIndex].value;
		if (itemCount++ > 0) {
	      ret += "::";	  
		}
		ret += element.name + "=";
		if (isNaN(parseInt(opt)) || parseInt(opt) != -1) {
	      ret += opt;
		}
	  }
	}
  }
  return ret;
}

function getCustomVarValues() {
  setLoaderVisible(true);
  var selectedOptions = encodeURIComponent(getSelectedOptions());

  //Mozilla
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
  }
  //Microsoft
  else if (window.ActiveXObject) {
    request = new ActiveXObject("Msxml2.XMLHTTP");
    if (!request) request = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (request) {
    request.onreadystatechange = teclnSearchCallBack;
    try {
      request.open("POST", theURL, true);
      request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
      request.send("selectedOptions=" + selectedOptions);
    }
    catch (e) {
      setLoaderVisible(false);
    }
  }
}

function teclnSearchCallBack() {
  if (request.readyState == 4 && request.status == 200) {
	try {
	  setLoaderVisible(false);
	  eval(request.responseText);
	}
	catch (e) {
	  alert(e);
	}
  }
}

function teclanSearch(pageNumber) {
  setLoaderVisible(true);
  
  var queryString = "";
  var theForm = document.getElementById("teclan-search");
  if (theForm) {
    for (var i = 0; i < theForm.elements.length; i++) {
	  if (i > 0) {
	    queryString += "&";
	  }
	  queryString += theForm.elements[i].name + "=" + encodeURIComponent(theForm.elements[i].value);
	}
  }

  if (pageNumber == -1) {
    queryString += "&page=" + currentPageNumber;
	proposedPage = currentPageNumber;
  }
  else {
    queryString += "&page=" + pageNumber;
	proposedPage = pageNumber;
  }

  //Mozilla
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
  }
  //Microsoft
  else if (window.ActiveXObject) {
    request = new ActiveXObject("Msxml2.XMLHTTP");
    if (!request) request = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (request) {
    request.onreadystatechange = teclnSearchCallBack;
    try {
      request.open("POST", theURL, true);
      request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
      request.send(queryString);
    }
    catch (e) {
      alert(e);
    }
  }
}

function searchCallBack() {
  if (request.readyState == 4) {
    if (request.status == 200) {
	  document.getElementById("search-results").innerHTML = request.responseText;
	  setLoaderVisible(false);
	}
  }
}

function setLoaderVisible(visible) {
  var loader = document.getElementById("loader");
  if (loader) {
    loader.style.visibility = visible ? "visible" : "hidden";
  }
}