var httpRequest;
var page;
var regexpStart;

function startTypingCheck(e, obj) {	
  var keycode;
  if(window.event)
    keycode = window.event.keyCode;
  else if(e)
    keycode = e.which;

	var oldVal = obj.value;
  if((keycode < 16 || keycode > 18) && (keycode < 32 || keycode > 40))  	
    setTimeout(checkIfDone, 500);
	
	function checkIfDone() {
		var newVal = obj.value;		
		if(newVal == oldVal) {
      if(obj.name == "needle")
        filterRequest();
      else
        searchDictionary();      		
    }
	}
}

function filterRequest() {
	httpRequest = null;
  page = document.getElementById("page").value;
  var getPage = document.URL.match(/page=([\w-]+)/);
  getPage = getPage == null ? document.URL.match(/^http:\/\/.*\/([^\/]+)\/.*/) : getPage;
  if(getPage[1] == page) {
    switch(page) {
      case "cultural-events-calendar":
        regexpStart = "right-col-home";
        break;
      case "picture-gallery":
        regexpStart = "left-col-general";
        break;
      case "fulltext-search":
        regexpStart = "left-col-general";
        break;
      case "catalog-company-services":
        regexpStart = "left-col-catalog";
        break;
      case "czech-daily-news":
        regexpStart = "right-col-home";
        break;
    }
    var url = document.URL.substring(0, document.URL.lastIndexOf('/')) + "/?page=" + page + "&needle=" + encodeURIComponent(document.getElementById("needle").value) + "&ajax=on";    
    createRequest(url);
  }
}

function searchDictionary() {
	httpRequest = null;
  regexpStart = "dictionary";
  page = "homepage";
  var url = document.URL.substring(0, document.URL.lastIndexOf('/')) + "/?page=" + page + "&word=" + encodeURIComponent(document.getElementById("word").value) + "&ajax=on";  
  createRequest(url);
}

function sortGourmets(order) {
	httpRequest = null;
  regexpStart = "gourmet";
  page = "gourmet";
  var url = document.URL.substring(0, document.URL.lastIndexOf('/')) + "/?page=" + page + "&ord=" + order + "&ajax=on";
  createRequest(url);
}

function shiftNews(id) {
	httpRequest = null;
  regexpStart = "news";
  page = "homepage";
  var url = document.URL.substring(0, document.URL.lastIndexOf('/')) + "/?page=" + page + "&id=" + id + "&ajax=on";
  createRequest(url);
}

function expandCategories(expand) {
  if(expand == "on") expand = "off"; else expand = "on";
	httpRequest = null;
  regexpStart = "catalog";
  page = "homepage";
  var url = document.URL.substring(0, document.URL.lastIndexOf('/')) + "/?page=" + page + "&scat=" + expand + "&ajax=on";
  createRequest(url);
}

function selectTagClouds(area) {
	httpRequest = null;
  regexpStart = "tclouds";
  page = "tag-clouds";
  var url = document.URL.substring(0, document.URL.lastIndexOf('/')) + "/?page=" + page + "&area=" + area + "&ajax=on";
  createRequest(url);
}

function createRequest(url) {
  if(httpRequest != 0) {
    if(window.ActiveXObject) {
      httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
      httpRequest = new XMLHttpRequest();
    }
    httpRequest.open("GET", url, true);
//  	httpRequest.setRequestHeader("http-equiv", "content-type");
    httpRequest.setRequestHeader("Content-Type", "text/html; charset=utf-8");        
    httpRequest.onreadystatechange = processRequest;
    httpRequest.send(null);    
  } else {
    document.getElementById(regexpStart).innerHTML = "";
  }
}

function processRequest() {
  var anchorPoint = document.getElementById(regexpStart);
  if (httpRequest.readyState == 4) {
    anchorPoint.className = regexpStart;
    if(httpRequest.status == 200) {
      var apText = httpRequest.responseText;
      anchorPoint.innerHTML = apText;
    } else {
      alert("Page Loading Error " + httpRequest.status + ":" + httpRequest.statusText);
    }
  } else {
    anchorPoint.className = regexpStart + " disabled";
  }
}
