// IE HACK: Define _importNode for IE since it doesnt support importNode
if(!document.importNode) {
  document._importNode = function(oNode, bImportChildren) {
    var oNew = null;
    if(oNode.nodeType == 1) {
      oNew = document.createElement(oNode.nodeName);
      for(var i = 0; i < oNode.attributes.length; i++) {
        if(oNode.attributes[i].nodeValue != null && oNode.attributes[i].nodeValue != '') {
          var attrName = oNode.attributes[i].name;
//          alert(oNode.nodeName + ': ' + attrName + '=' + oNode.attributes[i].value);
 /*         if(attrName == "class") {
            oNew.className = oNode.attributes[i].value;
//            oNew.setAttribute("className", oNode.attributes[i].value);
          }
          else*/
            oNew.setAttribute(attrName, oNode.attributes[i].value);
        }
      }

      if(oNode.style != null && oNode.style.cssText != null)
        oNew.style.cssText = oNode.style.cssText;
    } else if(oNode.nodeType == 3) {
      oNew = document.createTextNode(oNode.nodeValue);
    }

    if(oNew != null && bImportChildren && oNode.hasChildNodes()) {
      for(var oChild = oNode.firstChild; oChild; oChild = oChild.nextSibling) {
        oNew.appendChild(document._importNode(oChild, true));
      }
    }
    return oNew;
  }
}

http_error_codes = new Array();
http_error_codes[100] = "pokračovat";
http_error_codes[101] = "změna protokolu";
http_error_codes[200] = "v pořádku";
http_error_codes[201] = "vytvořeno";
http_error_codes[202] = "přijato";
http_error_codes[203] = "neautoritativní údaj";
http_error_codes[204] = "bez obsahu";
http_error_codes[205] = "Reset Content";
http_error_codes[206] = "Partial Content";
http_error_codes[300] = "Multiple Choices";
http_error_codes[301] = "přesunuto trvale";
http_error_codes[302] = "přesunuto dočasně";
http_error_codes[303] = "See Other";
http_error_codes[304] = "nezměnen";
http_error_codes[305] = "použít proxy";
http_error_codes[400] = "špatný požadavek";
http_error_codes[401] = "nepovoleno";
http_error_codes[402] = "nutno zaplatit";
http_error_codes[403] = "zakázáno";
http_error_codes[404] = "nenalezeno";
http_error_codes[405] = "metoda není povolena";
http_error_codes[406] = "nepřijatelné";
http_error_codes[407] = "Proxy Authentication Required";
http_error_codes[408] = "Request Time-Out";
http_error_codes[409] = "konflikt";
http_error_codes[410] = "Gone";
http_error_codes[411] = "Length Required";
http_error_codes[412] = "Precondition Failed";
http_error_codes[413] = "Request Entity Too Large";
http_error_codes[414] = "Request-URL Too Large";
http_error_codes[415] = "Unsupported Media Type";
http_error_codes[500] = "chyba na serveru";
http_error_codes[501] = "nepodporováno";
http_error_codes[502] = "špatná brána";
http_error_codes[503] = "Out of Resources";
http_error_codes[504] = "Gateway Time-Out";
http_error_codes[505] = "verze HTTP není podporována"

var DocGen = {
  /* set document title */
  setTitle: function(title) {
    document.title = title;
  },

  /* clear element and all its subelements */
  clearElement: function(element) {
    while (element.hasChildNodes())
      element.removeChild(element.firstChild);
  },

  /* clear body */
  clearDocument: function() {
    this.clearElement(document.body);
  },
  
  /* put string */
  putString: function(element, string) {
    element.appendChild(document.createTextNode(string));
  },
  
  createImage: function(srcurl, classname) {
    var img = document.createElement("IMG");
    img.setAttribute("src", srcurl);
    if (arguments.length >= 2)
      img.setAttribute("class", classname);
    return img;
  },
  
  /* put XML document */
  putDocument: function(element, doc) {
    var i, el;
    if (doc.hasChildNodes()) {
      for (var node = doc.firstChild; node; node = node.nextSibling) {
        if (document.importNode)
          el = document.importNode(node, true);
        else
          el = document._importNode(node, true);
        if (el != null)
          element.appendChild(el);
      }
    }
/*    if (doc.hasChildNodes())
      for (i = 0; doc.childNodes[i]; i++) {
        if (document.importNode) {
          el = document.importNode(doc.childNodes[i], true);
          element.appendChild(el);
        } else {
          el = doc.childNodes[i].cloneNode(true);
          element.appendChild(el);
        }
      }*/
  },

  hideAllElements: function(elemname) {
    elems = document.getElementsByTagName(elemname);
    var i;
    for (i = 0; i < elems.length; i++) {
      elems[i].style.visibility = "hidden";
    }
  },

  showAllElements: function(elemname) {
    elems = document.getElementsByTagName(elemname);
    var i;
    for (i = 0; i < elems.length; i++) {
      elems[i].style.visibility = "visible";
    }
  },
 
  forEachClassName: function(element, class_name, func) {
    divs = element.getElementsByTagName("DIV");
    var i;
    for (i = 0; i < divs.length; i++) {
      if (divs[i].className == class_name)
        func(divs[i]);
    }
  },
 
  onload_handlers: [],
  
  doOnLoad: function(func) {
    DocGen.onload_handlers[DocGen.onload_handlers.length] = func;
    window.onload = DocGen.OnLoadHandler;
  },
  
  OnLoadHandler: function() {
    var i;
    for (i = 0; i < DocGen.onload_handlers.length; i++) {
      DocGen.onload_handlers[i]();
    }
  }
}

var Forms = {
  createPostString: function(formname) {
    eval("var form = document." + formname + ";");
    var post_string = "";
    for (i = 0; form.elements[i]; i++) {
      if (form.elements[i].tagName == "INPUT" || form.elements[i].tagName == "TEXTAREA")
        post_string += encodeURI(form.elements[i].name) + "=" + encodeURI(form.elements[i].value) + "&";
    }	
    return post_string;	
  },
  
  setFocus: function(formname, name) {
    eval("var form = document." + formname + ";");
    for (i = 0; form.elements[i]; i++)
      if (form.elements[i].name == name)
        form.elements[i].focus();
  },
  
  removeAllFocus: function(formname) {
    eval("var form = document." + formname + ";");
    for (i = 0; form.elements[i]; i++)
      form.elements[i].blur();
  },
  
  clearForm: function(formname) {
    eval("document." + formname + ".reset();");
  },

  enableForm: function(formname) {
    eval("document." + formname + ".enable();");
  },

  disableForm: function(formname) {
    eval("document." + formname + ".disable();");
  }
}

/* AJAX equest */
function Ajax(reqtype, url, handler, async, user, pw) {
  var request;
  
  if (window.XMLHttpRequest && (!window.ActiveXObject)) 
    try { 
      request = new XMLHttpRequest(); 
    } catch(e) { 
      request = false; 
    } 
  else if (window.ActiveXObject) 
    try { 
      request = new ActiveXObject("Microsoft.XMLHTTP"); 
    } catch (e) { 
      request = false; 
    } 
  else request = false;

  request.onreadystatechange = function() {
    if (request.readyState == 4)
      handler(request);
  };

  switch (arguments.length) {
    case 3: request.open(reqtype, url); break;
    case 4: request.open(reqtype, url, async); break;
    case 5: request.open(reqtype, url, async, user); break;
    case 6: request.open(reqtype, url, async, user, pw); break;
    default: break;
  }

  this.setRequestHeader = function(name, content) {
    request.setRequestHeader(name, content);
  }

  this.send = function(message) {
    request.send(message);
  }
}

function Content(contentname, target_id) {

  this.Show = function(request) {
    var doc_content = document.getElementById(target_id);
    DocGen.clearElement(doc_content);
    if (request.status == 200) {
      doc_content.innerHTML = request.responseText;
    } else
      DocGen.putString(doc_content, request.status +
        " " + http_error_codes[request.status]);
    doc_content.style.visibility = "visible";        
  }
  
  var ajax = new Ajax("GET", contentname, this.Show);
  ajax.setRequestHeader("Connection", "close");
  ajax.send();
}

function editIHTML(id, text) {
  element = document.getElementById(id);
  element.innerHTML = text;
}

function loadImage(id, image) {
  img = document.getElementById(id);
  img.src = image;
}

