// --- INIT --------------------------------------------------------------------
//Crossbrowser DOMContentLoaded viz http://www.kryogenix.org/days/2007/09/26/shortloaded
(function(i) {var u =navigator.userAgent;var e=/*@cc_on!@*/false; var st = setTimeout;if(/webkit/i.test(u)){st(function(){var dr=document.readyState; if(dr=="loaded"||dr=="complete"){i()}else{st(arguments.callee,10);}},10);} else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){document.addEventListener("DOMContentLoaded",i,false);} else if(e){(function(){var t=document.createElement('doc:rdy');try{t.doScroll('left');i();t=null;}catch(e){st(arguments.callee,0);}})();}else{window.onload=i;}})(init);

function init() {
  if(isFF) { addCss("../css/firefox.css"); }
  loc = top.location.href.toString();
  showImageInit('popupImage');
  emailShiledInit('contact');
  
  inputNumbersOnlyInit('numbersonly');
}

// --- PROPERTIES, CONSTANTS ---------------------------------------------------
var popupContentObj; //objekt s vnitřkem popup okna
var popupCacheVS = {}; //cache pro popup okna profilů
var popupCacheCH = {}; //cache pro popup okna profilů chatu

//rozlišení prohlížečů
var ua = navigator.userAgent;
var isMSIE = (navigator.appName == "Microsoft Internet Explorer"); // používáme Internet Explorer?
var isMSIE5 = isMSIE && (ua.indexOf('MSIE 5') != -1); // používáme Internet Explorer 5?
var isMSIE6 = isMSIE && (ua.indexOf('MSIE 6') != -1); // používáme Internet Explorer 6?
var isMSIE7 = isMSIE && (ua.indexOf('MSIE 7') != -1); // používáme Internet Explorer 7?
var isGecko = ua.indexOf('Gecko') != -1; // používáme Gecko? (na Safari také true)?
var isSafari = ua.indexOf('Safari') != -1; // používáme Safari?
var isChrome = ua.indexOf('Chrome') != -1; // používáme Google Chrome?
var isOpera = window['opera'] && opera.buildNumber ? true : false; // používáme Operu?
var isMac = ua.indexOf('Mac') != -1; // používáme Mac?
var isNS7 = ua.indexOf('Netscape/7') != -1; // používáme Netscape7 ?
var isNS71 = ua.indexOf('Netscape/7.1') != -1; // používáme Netscape7.1 ?
var isFF = ua.indexOf('Firefox') != -1; // používáme Firefox ?
var isFF2 = ua.indexOf('Firefox/2') != -1; // používáme Firefox 2 ?
var isFF3 = ua.indexOf('Firefox/3') != -1; // používáme Firefox 3 ?
// používáme opravdu Internet Explorer (odliší Operu vydávající se za IE)?
if(isOpera) { isMSIE = true; isGecko = false; isSafari =  false; } // emulace MSIE na Opere
isIE = isMSIE && !isOpera;


// --- FUNCTIONS ---------------------------------------------------------------

/** Zobrazí inline popup okno sex po telefonu (a zablokuje zobrazení fotky)
 * @param {element} id profilu pro zobrazení
 */
function inlinePopupVS(id) {
  popupContentObj = inlinePopupShow();

  //pokud už není obsah v cache, zašlu požadavek serveru na obsah okna
  if(!popupCacheVS[id]) {
    popupClickedId = id; //uložím si, na který profil byl požadavek
    //queryURL = "../sex/vs-popup.php?id=" + id;
    queryURL = "../sex/popup-vs.php"; //načtu všechny
    send_xmlhttprequest(inlinePopupVSCallback, "GET", queryURL);
  } else {
    popupContentObj.innerHTML = popupCacheVS[id];
  }
  return false;
}

/** Zobrazí inline popup okno sex chat (a zablokuje zobrazení fotky)
 * @param {element} id profilu pro zobrazení
 */
function inlinePopupCH(id) {
  popupContentObj = inlinePopupShow();

  //pokud už není obsah v cache, zašlu požadavek serveru na obsah okna
  if(!popupCacheCH[id]) {
    popupClickedId = id; //uložím si, na který profil byl požadavek
    //queryURL = "../sex/vs-popup.php?id=" + id;
    queryURL = "../sex/popup-ch.php"; //načtu všechny
    send_xmlhttprequest(inlinePopupCHCallback, "GET", queryURL);
  } else {
    popupContentObj.innerHTML = popupCacheCH[id];
  }
  return false;
}

//obsluhuje AJAX požadavek vložení obsahu do popup okna hlasovky
function inlinePopupVSCallback(xmlhttp) {
  if(xmlhttp.readyState!=4) { return; } //požadavek zatím není zpracován a hotov
  if(xmlhttp.status<200 && xmlhttp.status>=300) { //chybně vrácený požadavek
    //alert("Chybně vrácený požadavek, HTTP CODE: " + xmlhttp.status);
    inlinePopupHide();
    return;
  }
  //obsah vpořádku načten, uložím do cache
  try {
    var response = JSON.parse(xmlhttp.responseText); //rozparsujeme JSON data
    for(id in response) { popupCacheVS[id] = response[id]; } //uložím do cache
  }
  catch(err) { inlinePopupHide(); return; } //chybná data, skryji okno

  //vložím obsah okna
  popupContentObj.innerHTML = popupCacheVS[popupClickedId];
  popupClickedId = null;
}

//obsluhuje AJAX požadavek vložení obsahu do popup okna sex chatu
function inlinePopupCHCallback(xmlhttp) {
  if(xmlhttp.readyState!=4) { return; } //požadavek zatím není zpracován a hotov
  if(xmlhttp.status<200 && xmlhttp.status>=300) { //chybně vrácený požadavek
    //alert("Chybně vrácený požadavek, HTTP CODE: " + xmlhttp.status);
    inlinePopupHide();
    return;
  }
  //obsah vpořádku načten, uložím do cache
  try {
    var response = JSON.parse(xmlhttp.responseText); //rozparsujeme JSON data
    for(id in response) { popupCacheCH[id] = response[id]; } //uložím do cache
  }
  catch(err) { alert(err); inlinePopupHide(); return; } //chybná data, skryji okno

  //vložím obsah okna
  popupContentObj.innerHTML = popupCacheCH[popupClickedId];
  popupClickedId = null;
}

/** Zobrazí inline popup okno a vrací jej jako objekt
 */
function inlinePopupShow() {
  popupHtml = "<div class='inlinePopupIn'><div class='inlinePopupContent'>" +
                "<a class='inlinePopupClose' title='Zavřít náhled.'></a>" +
                "<div class='inlinePopupContentIn' id='inlinePopupContentIn'></div>" +
              "</div></div>";
  o = document.createElement('div'); o.id = 'inlinePopup'; o.className = 'inlinePopup'; //div překrývající celý viewport
  o.innerHTML = popupHtml;

  addEvListener(o, 'click', inlinePopupHide, true); //přiřazení handleru pro zmizení okna

  //schovám všechny flashe, aby nepřekrývali okno
  flashDiv = getObj('embedVideo');
  if(flashDiv) {
    flashDiv.className += " hideAway";
    flashDiv.style.visibility = "hidden";
  }

  var body = document.getElementsByTagName('body')[0];

  if(isMSIE6) { o.style.top = (document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop); } //náhrada za position fixed
  body.appendChild(o); //vložím okno do stránky
  oContent = getObj('inlinePopupContentIn'); //zpřístupním si vnitřek okna
  return oContent;
}

/** Zruší inline popup okno
 *  @param {event} e  event z browseru (optional)
 */
function inlinePopupHide(e) {
  if(e!=null) {
    evt = adaptEvent(e);
    oTrigger = evt['target'];
    if(oTrigger.className!='inlinePopup' && oTrigger.className!='inlinePopupIn' && oTrigger.className!='inlinePopupClose') { return; } //omezeni zavreni okna pouze na oblast mimo obsah
  }

  popupContentObj = null;
  o = getObj('inlinePopup');
  o.parentNode.removeChild(o);

  //zobrazím všechny skryté flashe
  var re = new RegExp("hideAway");
  flashDiv = getObj('embedVideo');
  if(flashDiv) {
    c = flashDiv.className.toString();
    c = c.replace(re, ""); //odstraním skrytí
    flashDiv.className = c;
    flashDiv.style.visibility = "visible";
  }
}

/** Na odkazy pro zobrazení fotky nabinduje JS funkci
 *  Předpokládá parametry width a height v url odkazu
 *  @param {string} imageHrefClass   název třídy, na kterou se mají JS bindovat
 */
function showImageInit(imageHrefClass) {
  heightRE = new RegExp("height=(\\d+)", "i");
  widthRE = new RegExp("width=(\\d+)", "i");

  var els = getElementsByClass(imageHrefClass, document, 'a');
  for(i=0; i<els.length; i++) {
    anchor = els[i];
    href = anchor.href.toString();
    if(!href.length) { continue; } //odkazy bez href přeskočíme
    hResults = href.match(heightRE); height = hResults[1]; //nultý prvek je celý regulární výraz, první prvek je první subvýraz
    wResults = href.match(widthRE); width = wResults[1];
    if(!height || !width) { continue; } //obrázky bez definovaných rozměrů přeskočíme

    //na odkaz nabinduji fci pro poup zobrazení obrázku
    addEvListener(anchor, 'click', showImageInitGenerateAnonymous(href, width, height), false);
  }

}

/** Projde odkazy dané třídy a přidá jim atribut href s hodnotou mailto:email
 *  @param {string} aHrefClass   název třídy, na kterou se mají JS bindovat
 */
function emailShiledInit(aHrefClass) {
  var els = getElementsByClass(aHrefClass, document, 'a');
  for(i=0; i<els.length; i++) {
    anchor = els[i];
    email = isMSIE ? anchor.innerText : anchor.textContent;
    anchor.href = "mailto:" + email;
  }
}


/**
 * Pomocná fce k popup obrázkům pro předávání parametrů hodnotou
 */
function showImageInitGenerateAnonymous(href, width, height) {
  return function() { showImage(href, width, height); };
}

/** Otevře pop-up okno (pro obrázek)
 *  @param {string} url      adresa otevírané stránky
 *  @param {integer} width   šířka okna v px
 *  @param {integer} height  výška šířka v px
 */
function showImage(odkaz, width, height) {
  window.open(odkaz+"&width="+width+"&height="+height, "foto", "width="+(width)+",height="+(height)+", toolbar=no, status=no, location=no, menubar=no, resizable=no");
  return false; //pokud funguje javascript, zastavim provadeni akce, ktera je v HREF
}


/** Pokud je hodnota pole rovna default hodnotě, vymaže ji a odstraní i třídu pro šedý text
*/
function defaultValueClear(o, defaultValue, inactiveClass) {
  if(!inactiveClass) { inactiveClass = 'inactive'; }
  if(typeof o=='string') { o = getObj(o); }

  if(o.value==defaultValue) {
    o.value=''; //vymažu pole
    //odstraním třídu pro šedý text
    var re = new RegExp("\s*" + inactiveClass);
    o.className = o.className.replace(re, "");
  }
}

/** Zobrazení/skrytí elementu, případně nabindovaní klikáni na určitý element
 *  @param {element} tabClicked   element záložky, na kterou se kliklo
 *  @param {string} tabClass      CSS třída záložek aktuálního menu
 *  @param {string} contentClass  CSS třída bloků obsahu
 *  @param {string} idShow        ID elementu obsahu pro zobrazení
 */
function switchTab(tabClicked, tabClass, contentClass, idShow) {
  var re = new RegExp("opened");

  //zvyraznim kliknutou zalozku
  els = getElementsByClass(tabClass);
  for(i=0; i<els.length; i++) {
    c = els[i].className.toString();
    c = c.replace(re, ""); //odstraním zvýraznění
    if(els[i]==tabClicked) { c = c + ' opened'; } //kliknutou záložku zvýrazním
    els[i].className = c;
  }
  
  var re = new RegExp("hide");
  oShow = getObj(idShow); //element pro zobrazeni

  //zobrazim element prislusici kliknutemu tabu
  els = getElementsByClass(contentClass);
  for(i=0; i<els.length; i++) {
    c = els[i].className.toString();
    c = c.replace(re, ""); //odstraním skrytí
    if(els[i]!=oShow) { c = c + ' hide'; } //všechny skryji, kromě obsahu příslušnému aktivní záložce
    els[i].className = c;
  }

  return true;
}

/** Přidá předané url do záložek / k oblíbeným
 *  @param {object} linkObj
 *  @param {string} addUrl url adresa přidávané stránky
 *  @param {string} addTitle popisek přidávané stránky
 */
function addFavorite(linkObj, addUrl, addTitle) {
  if(document.all && !window.opera) { //IE
    window.external.AddFavorite(addUrl, addTitle);
    return false;

  } else if(window.opera && window.print) { //Opera
    linkObj.title = addTitle;
    return true;

  } else if((typeof window.sidebar=='object') && (typeof window.sidebar.addPanel=='function')) { //Mozilla
    if(window.confirm('Přidat oblíbenou stránku jako nový panel?')) {
      window.sidebar.addPanel(addTitle, addUrl, '');
      return false;
    }
  }
  //prohlížeč nerozpoznán
  window.alert('Po potvrzení stiskněte CTRL-D,\nstránka bude přidána k Vašim oblíbeným odkazům.');
  return false;
}

/** Nabinduje k INPUTům třídy className funkci, která omezuje psaní pouze na čísla
 *  @param {string} className  CSS třída, která označuje elementy kde lze psát jen čísla
 */
function inputNumbersOnlyInit(className) {
  els = getElementsByClass(className);
  for(i=0; i<els.length; i++) {
    addEvListener(els[i], 'keyup', onlyDigits, false);
  }
}

/** Umožní psát do elementu pouze čísla
 *  @param {event} e  event z browseru, spuštěný na stisk klávesy
 */
function onlyDigits(e) {
  evt = adaptEvent(e);
  object = evt['target'];

  var chars = "0123456789-.,"; //validni znaky
  var s = object.value;
  var output = '';

  for(var i=0; i<s.length; i++) {
    if(chars.indexOf(s.charAt(i))!==-1) { output = output + s.charAt(i); } //pridam jen validni znaky
  }
  object.value = output;
}

/** Zobrazení/skrytí elementu, případně nabindovaní klikáni na určitý element
 *  @param {string} elementId  element pro skrytí/zobrazení
 *  @param {string} attachId   na který element nabindovat skrytí/zobrazení elementId
 *  @param {boolean} init      zda se jedná o inicializaci (=budeme nastavovat počáteční zobrazení)
 */
function show_hide(elementId, attachId, init) {
  //nabindujeme skrývání/zobrazení elementu
  if(attachId!=null) {
    addEvListener(attachId, 'click', function() { show_hide(elementId); } );
  }

  //pokud jde o inicializaci, nastavíme počáteční stav, jinak provedeme změnu
  o = getObj(elementId);
  if(!o) { return; } //nejsou parametry -> není co filtrovat, ukončím
  
  if(init==true) {
    o.style.display = 'none';
  } else {
    if(o.style.display=='none') { o.style.display = 'block'; } else { o.style.display = 'none'; }
  }

  return true;
}


/** Otevře pop-up okno (pro obrázek)
 *  @param {string} url      adresa otevírané stránky
 *  @param {integer} width   šířka okna v px
 *  @param {integer} height  výška šířka v px
 */
function show(odkaz, width, height) {
  window.open(odkaz+"&width="+width+"&height="+height, "foto", "width="+(width)+",height="+(height)+", toolbar=no, status=no, location=no, menubar=no, resizable=no");
  return false; //pokud funguje javascript, zastavim provadeni akce, ktera je v HREF
}


/** Otevře pop-up okno (pro stránku)
 *  @param {string} url      adresa otevírané stránky
 *  @param {integer} width   šířka okna v px
 *  @param {integer} height  výška šířka v px
 */
function show_page(url, width, height) {
  window.open(odkaz, "page", "width="+width+",height="+height+", toolbar=no, status=yes, location=no, menubar=no, scrollbars=yes");
  return false;
}


/** Přidá url do záložek / oblíbených
 *  @example <a href="#" title="Přidat stránku k oblíbeným odkazům" rel="sidebar" onclick="return add_favorite(this, 'http://www.seznam.cz', 'Seznam.cz - najdu tam co neznám');">přidat k oblíbeným</a>
 *  @param {object} linkObj   link objekt
 *  @param {string} addUrl    url pro přidání
 *  @param {string} addTitle  popis odkazu
 */
function add_favorite(linkObj, addUrl, addTitle) {
  if(document.all && !window.opera) { //IE
    window.external.AddFavorite(addUrl, addTitle);
    return false;

  } else if(window.opera && window.print) { //Opera
    linkObj.title = addTitle;
    linkObj.rel = "sidebar";
    return true;

  } else if((typeof window.sidebar=='object') && (typeof window.sidebar.addPanel=='function')) { //Mozilla
    if(window.confirm('Přidat stránku do záložek?')) {
      window.sidebar.addPanel(addTitle, addUrl, '');
      return false;
    }
  }

  //nerozpoznán prohlížeč
  window.alert('Po potvrzení stiskněte CTRL-D,\nstránka bude přidána k Vašim oblíbeným odkazům.');
  return false;
}

// --- CORE --------------------------------------------------------------------

/** Nalezne v dokumentu element s daným id
 *  @param {string} id id elementu pro nalezení
 */
function getObj(id) {
  var obj = document.getElementById ? document.getElementById(id) : document.all[id];
  return obj;
};


/** Vyhledá elementu s danou třídou (class)
 *  @param {string} searchClass hledaný název třídy
 *  @param {object} [node] DOM element, kde hledáme (default=document)
 *  @param {string} [tagName] název tagu, na který omezit prohledávání (default=všechny tagy)
 *  @param {boolean} [allowSubstrings] zda prohledávat přesně, nebo i jako podřetězce názvu třídy (default=false)
 *  @return {array} pole DOM elementů
 */
function getElementsByClass(searchClass, node, tagName, allowSubstrings) {
  var classElements = new Array();
  if(node == null) { node = document; }
  if(tagName == null) { tagName = '*'; }
  if(allowSubstrings == null ) { allowSubstrings = false; }
  
  var els = node.getElementsByTagName(tagName);
  var elsLen = els.length;
  var regExpStr =  allowSubstrings ? searchClass : "(^|\\s)"+ searchClass +"(\\s|$)";
  var pattern = new RegExp(regExpStr);
  
  for(i=0,j=0; i<elsLen; i++) {
    if(pattern.test(els[i].className)) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}


/** Vyhledá hodnotu parametru strParamName předaného metodou GET
 *  @param {string} strParamName název hledaného parametru
 *  @return {string} hodnota parametru
 */
function getURLParam(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if(strHref.indexOf("?") > -1) {
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for( var iParam = 0; iParam < aQueryString.length; iParam++ ) {
      if( aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ) {
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return unescape(strReturn);
}

/** Vygeneruje ID, unikátní v rámci elementu doc (implicitně celý dokument)
 *  @param {object} [doc] element, ve kterém musí být ID unikántí [default=document]
 *  @return {string} unikátní ID
 */
function genUid(doc) {
  if(!doc) { doc = document; }
  var uid, collide = 0;

  do {
    uid = ((new Date()).getTime() + "" + Math.floor(Math.random() *  1000000)).substr(0, 18);
    if(doc.getElementById(uid)) { collide = 1; }
  } while(collide);
  return uid;
}

/** Zjistí, zda a obsahuje externí odkaz
 *  @param {object} a  element s href odkazem
 *  @return {boolean}  míří odkaz mimo aktuální doménu?
 */
function isExternalLink(a) {
  var external=false;
  test_exp = new RegExp("^(http(s)?://"+self.location.host+"|mailto:)"); // regulární výraz, který zjistí, zda vede odkaz na jiný server
  if(!test_exp.test(a.href)) external=true; // vede odkaz na jiný server?
  //if(a.className.indexOf("external")>-1) nove_okno=true; // má přiřazenu třídu „external?“
  //if(a.rel=="external") nove_okno=true; // má nastaven atribut rel na „external?“?
  return external;
}


/**
 * Připojení zpracování události k elementu na určitou událost. Kompatibilní se všemi prohlížeči.
 * @param {string|object} element  id elementu / DOM element, na který handler zavěsit
 * @param {string} eventType       na jakou událost handler zavěsit
 * @param {function} handler       obsluha události (funkce)
 * @param {boolean} capture        zastavit probublávání událostí dál
 * @return {boolean}               úspěch/neúspěch
 */
function addEvListener(element, eventType, handler, capture) {
  if(typeof element == 'string') { element = getObj(element); } //mohu předat i ID elementu

  //i když opera zvládá standardní addEventListener, u iframe přes něj nezvládá onload a je třeba použít attachEvent
  //viz. http://dotnetslackers.com/Ajax/re-28191_r_a_d_controls_Event_handing_Atlas_and_Opera.aspx
  if(element.addEventListener && !isOpera) {
		element.addEventListener(eventType, handler, capture); return true;
	} else if(element.attachEvent) {
		var r = element.attachEvent("on" + eventType, handler); return r;
  } else { return false; }
}


/**
 * Standardizuje událost tak, aby měla ve všech prohlížečích stejnou strukturu
 * @param {object} e zachycená událost z browseru
 * @return {object} standardizovaný objekt události
 */
function adaptEvent(e) {
  if(typeof e=='undefined') { e = window.event; } //vezmeme z parametru, pripadne z hlavniho okna prohlizece
  ret = e;
  if(isIE && (typeof ret['srcElement']!='undefined')) { ret['target'] = ret['srcElement']; } //IE ma cilovy element jinde nez ostatni
  return ret;
}

/** Odeslání XMLHttp požadavku
 * @param {function} obsluha funkce zajišťující obsluhu při změně stavu požadavku, dostane parametr s XMLHttp objektem
 * @param {string} method GET|POST|...
 * @param {string} url URL požadavku
 * @param {string} [content] tělo zprávy
 * @param {array} [headers] pole předaných hlaviček ve tvaru { 'hlavička': 'obsah' }
 * @return {boolean} true v případě úspěchu, false jinak
 * @copyright Jakub Vrána, http://php.vrana.cz
 */
function send_xmlhttprequest(obsluha, method, url, content, headers) {
  var xmlhttp = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
  if (!xmlhttp) {
    return false;
  }
  xmlhttp.open(method, url);
  xmlhttp.onreadystatechange = function() {
    obsluha(xmlhttp);
  };
  if(headers) {
    for(var key in headers) {
      xmlhttp.setRequestHeader(key, headers[key]);
    }
  }
  xmlhttp.send(content);
  return true;
}

/** Uloží do browseru cookie, pokud není předáná doba, je cookie aktivní do uzabření prohlížeče
 *  @param {string} name název cookie
 *  @param {string} value hodnota cookie
 *  @param {integer} [exp_d] platnost cookie v dnech
 *  @param {integer} [exp_h] platnost cookie v hodinách
 *  @param {integer} [exp_m] platnost cookie v minutách
 *  @param {string} [path] cesta, pro kterou bude cookie platit
 *  @param {string} [domain] název domény, pro kterou bude cookie platit
 *  @param {boolean} [secure] hodnota cookie
 */
function set_cookie(name, value, exp_d, exp_h, exp_m, path, domain, secure ) {
  var cookie_string = name + "=" + escape ( value );

  var expDate = new Date();
  if(typeof exp_d == "number" && typeof exp_h == "number" && typeof exp_m == "number") {
    expDate.setDate(expDate.getDate() + parseInt(exp_d));
    expDate.setHours(expDate.getHours() + parseInt(exp_h));
    expDate.setMinutes(expDate.getMinutes() + parseInt(exp_m));
  }
  cookie_string += "; expires=" + expDate.toGMTString();

  if(path) { cookie_string += "; path=" + escape(path); }
  if(domain) { cookie_string += "; domain=" + escape(domain); }
  if(secure) { cookie_string += "; secure"; }
  document.cookie = cookie_string;
}

/** Smaže cookie s daným jménem
 *  @param {string} name název mazaného cookie
 */
function delete_cookie(name) {
  var cookie_date = new Date();  // current date & time
  cookie_date.setTime(cookie_date.getTime() - 1);
  document.cookie = name += "=; expires=" + cookie_date.toGMTString();
}

/** Načte hodnotu cookie
 *  @param {string} name název načítaného cookie
 *  @return {string|null} vrátí hodnotu cookie pokud existuje, jinak null
 */
function get_cookie(name) {
  var results = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
  if(results) {
    return unescape(results[2]);
  } else {
    return null;
  }
}

//fce, která mění třídu mezi 2 třídami u předaného elementu (zbytek definice třídy ponechává)
// element - objekt elementu nebo id elementu
function switchClass(element, class1, class2) {
  o = (typeof element=='string') ? getObj(element) : element;

  var re =  "(^|\\s)"+ class1 +"(\\s|$)";
  var pattern = new RegExp(re);

  if(pattern.test(o.className)) {
    o.className = o.className.replace(pattern, " "+class2+" ");
  } else {
    o.className += " "+class1;
  }

  //odstraním případné dvojité mezery
  o.className = o.className.replace(/\s+/, " ");
}

// fce, která nalinkuje CSS soubor
function addCss(cssPath) {
  var l=document.createElement("link");
  l.setAttribute("type","text/css");
  l.setAttribute("rel","stylesheet");
  l.setAttribute("href", cssPath);
  l.setAttribute("media","screen");
  document.getElementsByTagName("head")[0].appendChild(l);
}
