function send_xmlhttprequest(handle, method, url, content, headers, param)
{
  var xmlhttp = (window.XMLHttpRequest ? new  XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : false));
  if(!xmlhttp) {
    return false;
  }
  xmlhttp.open(method, url);
  xmlhttp.onreadystatechange = function() {
    handle(xmlhttp, param);
  }
  if(headers) {
    for(var key in headers) {
      xmlhttp.setRequestHeader(key, headers[key]);
    }
  }
  xmlhttp.send(content);
  
  return true;
}

function Evnt(nam) {
  this.createdEventArray = new Array();
  /* zachytavam udalost */
  this.getEvent = function() {
    e = arguments[0];
    e = e ? e : window.event;
    return e;
  };

  /* zjistuji cil udalosti */
  this.getTarget = function(e) {
    e = window[nam].getEvent(e);
    if (!e.currentTarget) {
        e.currentTarget = e.srcElement;
    }
    return e.currentTarget;
  };

  /* zavesuj spracovani udalosti */
  this.addEvent = function(elm,eventType,fn,set){
    if(arguments[4]){
      var num = window[nam].createdEventArray.length;
      window[nam].createdEventArray[num] = {trg:elm, typ:eventType, action:fn, bool:set};
    }
    if (document.addEventListener) {
      if (window.opera && (elm == window)){
        elm = document;
      }
      elm.addEventListener(eventType,fn,set);
    } else if (document.attachEvent) {
      elm.attachEvent('on'+eventType,fn);
    }
  };

  this.clearEvents = function(){
    for(var i = 0; i < window[nam].createdEventArray.length; i++){
      try{
          dom.removeEvent(window[nam].createdEventArray[i].trg,window[nam].createdEventArray[i].typ,window[nam].createdEventArray[i].action,window[nam].createdEventArray[i].bool);
      } catch(e){
      }
      window[nam].createdEventArray[i] = null;
    }
    window[nam].createdEventArray = null;
  };

  /* rusim zpracovani udalosti  */
  this.removeEvent = function(elm,eventType,fn,set){
    if (document.removeEventListener) {
      if (window.opera && (elm == window)){
        elm = document;
      }
      elm.removeEventListener(eventType,fn,set);
    } else if (document.detachEvent) {
      elm.detachEvent('on'+eventType,fn);
    }
  };

  /* zabranuji prostupovani udalosti stromem dokumentu */
  this.stopEvent = function(e) {
    var e = window[nam].getEvent(e);

    /* clicktracker pro IE */
    if((browser.klient == 'ie') && (typeof(clickTracker) != 'undefined') && (e.type == 'click')){
      clickTracker.logger();
    }

    if (e.stopPropagation){
      e.stopPropagation();
    } else {
      e.cancelBubble= true;
    }
  };

  /* rusim pripadnou defaultni reakci prohlizece na udalost */
  this.cancelDef = function(e){
    e = window[nam].getEvent(e);
    if(e.preventDefault) {
      e.preventDefault();
    } else {
      e.returnValue = false;
    }
  };
};

function gE(o) { return document.getElementById(o); };
function cE(o) { return document.createElement(o); };

function getSelectValue(id)
{
  var opts = gE(id).options;
  var val;
  
  for(i = 0;i < opts.length;i++) {
    if(opts[i].selected == true) {
      val = opts[i].getAttribute('value');
    }
  }
  
  return val;
}

function findPosX(obj) {
	var curleft = 0;
	var printstring = '';
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	var printstring = '';
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
  }
	else if (obj.y) curtop += obj.y;
	return curtop;
}

var dom = new Evnt('dom');
var classStr;

if(navigator.appName == "Microsoft Internet Explorer") {
  classStr = 'className';
}
else {
  classStr = 'class';
}
