// common.js
//
// 24.04.09 ln; pridano opacity, changeOpac, FadeIn, FadeOut, grayOut

// trim() - trims whitespaces from the beginning and end of string
//
function trim(str)
{
  while (str.substring(0, 1) == " "
  		|| str.substring(0, 1) == "\n"
  		|| str.substring(0, 1) == "\r")
  {
     str = str.substring(1, str.length);
  }

  while (str.substring(str.length - 1, str.length) == " "
  		|| str.substring(str.length - 1, str.length) == "\n"
  		|| str.substring(str.length - 1, str.length) == "\r")
  {
    str = str.substring(0, str.length - 1);
  }

  return str;
}




// otvorit nove okno s danym URL a vratiti jeho handle
function s_brwsr(s_url,i,mode) {
  switch (mode) {
    case 1:  return window.open(s_url);
    case 2:  return window.open(s_url,"w"+i,"scrollbars=yes,resizable=yes,width=800,height=500");
  }
}



function makeKey(key) 
{
  if (!key) return '';

  for (i = 0;i < key.length;i++)
  {
    if (key.charAt(i) == " ") key = key.substring(0,i) + '+' + key.substring(i + 1,key.length);
  }
  return key;
}

/* objekt ktery skladuje string v ruznych kodovanich URL */
function keyEncoded(o65001,o1250,o28592,o1252,o28591)
{ 
  this.o65001 = o65001; //unicode (utf-8)
  this.o1250 = o1250;   //stredoevropske (windows-1250)
  this.o28592 = o28592; //stredoevropske (iso-88592)
  this.o1252 = o1252;   //zapadoevropske (windows-1252)
  this.o28591 = o28591; //zapadoevropske (iso-88591)
}

/* encoding URL */
function encodeAll(key) 
{
  var o65001 = "";
  var o1250 = "";
  var o28592 = "";
  var o1252 = "";
  var o28591 = "";
  var ch = "";
  //key = key.toLowerCase();
  for(var i = 0; i<key.length; i++) {
    ch = key.charAt(i)
    switch (ch) {
      case "Š":o65001=o65001+"%C5%A0"; o1250=o1250+"%8A"; o28592=o28592+"%A9"; o1252=o1252+"%8A"; o28591=o28591+"S"; break;
      case "š":o65001=o65001+"%C5%A1"; o1250=o1250+"%9A"; o28592=o28592+"%B9"; o1252=o1252+"%9A"; o28591=o28591+"s"; break;
      case "Ť":o65001=o65001+"%C5%A4"; o1250=o1250+"%8D"; o28592=o28592+"%AB"; o1252=o1252+"T";   o28591=o28591+"T"; break;
      case "ť":o65001=o65001+"%C5%A5"; o1250=o1250+"%9D"; o28592=o28592+"%BB"; o1252=o1252+"t";   o28591=o28591+"t"; break;
      case "Ž":o65001=o65001+"%C5%BD"; o1250=o1250+"%8E"; o28592=o28592+"%AE"; o1252=o1252+"%8E"; o28591=o28591+"Z"; break;
      case "ž":o65001=o65001+"%C5%BE"; o1250=o1250+"%9E"; o28592=o28592+"%BE"; o1252=o1252+"%9E"; o28591=o28591+"z"; break;
      case "Á":o65001=o65001+"%C3%81"; o1250=o1250+"%C1"; o28592=o28592+"%C1"; o1252=o1252+"%C1"; o28591=o28591+"%C1"; break;
      case "á":o65001=o65001+"%C3%A1"; o1250=o1250+"%E1"; o28592=o28592+"%E1"; o1252=o1252+"%E1"; o28591=o28591+"%E1"; break;
      case "Ä":o65001=o65001+"%C3%84"; o1250=o1250+"%C4"; o28592=o28592+"%C4"; o1252=o1252+"%C4"; o28591=o28591+"%C4"; break;
      case "ä":o65001=o65001+"%C3%A4"; o1250=o1250+"%E4"; o28592=o28592+"%E4"; o1252=o1252+"%E4"; o28591=o28591+"%E4"; break;
      case "Č":o65001=o65001+"%C4%8C"; o1250=o1250+"%C8"; o28592=o28592+"%C8"; o1252=o1252+"C";   o28591=o28591+"C"; break;
      case "č":o65001=o65001+"%C4%8D"; o1250=o1250+"%E8"; o28592=o28592+"%E8"; o1252=o1252+"c";   o28591=o28591+"c"; break;
      case "É":o65001=o65001+"%C3%89"; o1250=o1250+"%C9"; o28592=o28592+"%C9"; o1252=o1252+"%C9"; o28591=o28591+"%C9"; break;
      case "é":o65001=o65001+"%C3%A9"; o1250=o1250+"%E9"; o28592=o28592+"%E9"; o1252=o1252+"%E9"; o28591=o28591+"%E9"; break;
      case "Ě":o65001=o65001+"%C4%9A"; o1250=o1250+"%CC"; o28592=o28592+"%CC"; o1252=o1252+"E";   o28591=o28591+"E"; break;
      case "ě":o65001=o65001+"%C4%9B"; o1250=o1250+"%EC"; o28592=o28592+"%EC"; o1252=o1252+"e";   o28591=o28591+"e"; break;
      case "Í":o65001=o65001+"%C3%8D"; o1250=o1250+"%CD"; o28592=o28592+"%CD"; o1252=o1252+"%CD"; o28591=o28591+"%CD"; break;
      case "í":o65001=o65001+"%C3%AD"; o1250=o1250+"%ED"; o28592=o28592+"%ED"; o1252=o1252+"%ED"; o28591=o28591+"%ED"; break;
      case "Ď":o65001=o65001+"%C4%8E"; o1250=o1250+"%CF"; o28592=o28592+"%CF"; o1252=o1252+"D";   o28591=o28591+"D"; break;
      case "ď":o65001=o65001+"%C4%8F"; o1250=o1250+"%EF"; o28592=o28592+"%EF"; o1252=o1252+"d";   o28591=o28591+"d"; break;
      case "Ň":o65001=o65001+"%C5%87"; o1250=o1250+"%D2"; o28592=o28592+"%D2"; o1252=o1252+"N";   o28591=o28591+"N"; break;
      case "ň":o65001=o65001+"%C5%88"; o1250=o1250+"%F2"; o28592=o28592+"%F2"; o1252=o1252+"n";   o28591=o28591+"n"; break;
      case "Ó":o65001=o65001+"%C3%93"; o1250=o1250+"%D3"; o28592=o28592+"%D3"; o1252=o1252+"%D3"; o28591=o28591+"%D3"; break;
      case "ó":o65001=o65001+"%C3%B3"; o1250=o1250+"%F3"; o28592=o28592+"%F3"; o1252=o1252+"%F3"; o28591=o28591+"%F3"; break;
      case "Ö":o65001=o65001+"%C3%96"; o1250=o1250+"%D6"; o28592=o28592+"%D6"; o1252=o1252+"%D6"; o28591=o28591+"%D6"; break;
      case "ö":o65001=o65001+"%C3%B6"; o1250=o1250+"%F6"; o28592=o28592+"%F6"; o1252=o1252+"%F6"; o28591=o28591+"%F6"; break;
      case "Ř":o65001=o65001+"%C5%98"; o1250=o1250+"%D8"; o28592=o28592+"%D8"; o1252=o1252+"R";   o28591=o28591+"R"; break;
      case "ř":o65001=o65001+"%C5%99"; o1250=o1250+"%F8"; o28592=o28592+"%F8"; o1252=o1252+"r";   o28591=o28591+"r"; break;
      case "Ů":o65001=o65001+"%C5%AE"; o1250=o1250+"%D9"; o28592=o28592+"%D9"; o1252=o1252+"U";   o28591=o28591+"U"; break;
      case "ů":o65001=o65001+"%C5%AF"; o1250=o1250+"%F9"; o28592=o28592+"%F9"; o1252=o1252+"u";   o28591=o28591+"u"; break;
      case "Ú":o65001=o65001+"%C3%9A"; o1250=o1250+"%DA"; o28592=o28592+"%DA"; o1252=o1252+"%DA"; o28591=o28591+"%DA"; break;
      case "ú":o65001=o65001+"%C3%BA"; o1250=o1250+"%FA"; o28592=o28592+"%FA"; o1252=o1252+"%FA"; o28591=o28591+"%FA"; break;
      case "Ü":o65001=o65001+"%C3%9C"; o1250=o1250+"%DC"; o28592=o28592+"%DC"; o1252=o1252+"%DC"; o28591=o28591+"%DC"; break;
      case "ü":o65001=o65001+"%C3%BC"; o1250=o1250+"%FC"; o28592=o28592+"%FC"; o1252=o1252+"%FC"; o28591=o28591+"%FC"; break;
      case "Ý":o65001=o65001+"%C3%9D"; o1250=o1250+"%DD"; o28592=o28592+"%DD"; o1252=o1252+"%DD"; o28591=o28591+"%DD"; break;
      case "ý":o65001=o65001+"%C3%BD"; o1250=o1250+"%FD"; o28592=o28592+"%FD"; o1252=o1252+"%FD"; o28591=o28591+"%FD"; break;
      default:{o65001=o65001+ch;o1250=o1250+ch;o28592=o28592+ch;o1252=o1252+ch;o28591=o28591+ch;}
    }
  }
  //return new keyEncoded(encodeURI(key),o1250,o28592,o1252,o28591) //encodeURI nefunguje v IE5
  return new keyEncoded(o65001,o1250,o28592,o1252,o28591)
}


function DeCestina(str) {	
	var Hacky="ěščřžýáíéúůťňľĺŕńćóĚŠČŘŽÝÁÍÉÚŮŤŇĽĹŔŃĆÓ";
	var Ascii="escrzyaieuutnllrncoESCRZYAIEUUTNLLRNCO";
	var strx="";
	for (i=0;i<str.length;i++) {
		c = str.charAt(i);
        for (j=0;j<Hacky.length;j++)
			if (c == Hacky.charAt(j))
				c = Ascii.charAt(j);
		strx += c;
	}
	return strx;  
}

function getKeyWord() {
  var e=document.getElementById("websrch_q");
  if (!e) return '';
  return e.value;
}

// constructor pola
function makearray(n) {
  this.length = n;
  for(var i=1;i <= n; i++)
  {
    this[i] = 0
  }
}



//TabIDkey=na ktere ASP strance funkci spoustim 
//zj=zobrazit jako 1=v záložkách, 0=do nového okna
function search_main() 
{
     var key=getKeyWord(); //hledane slovo
     if (key=='') { alert('no term'); return; }
     //alert('key='+key);

     var q1 = encodeAll(makeKey(key)); //prevedu key do ruznych znakovych sad
     var MAX_URL = 8;

     urlstr = new makearray(MAX_URL); // deklarujeme objekt
     urlstr[1] ="http://www.google.com/search?hl=en&q="+q1.o65001+"&btnG=Google+Search&ie=utf-8&oe=utf-8";
     urlstr[2] ="http://search.yahoo.com/bin/search?p="+q1.o65001+"&ie=utf-8&oe=utf-8";
     urlstr[3] ="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?WebEnv=&db=pubmed&orig_db=pubmed&cmd=search&cmd_current=&term="+q1.o65001;
     urlstr[4] ="http://highwire.stanford.edu/cgi/searchresults?andorexactfulltext=and&author1=&pubdate_year=&volume=&firstpage=&src=hw&searchsubmit=redo&resourcetype=1&search=Search&fmonth=Jan&fyear=1844&tmonth=Mar&tyear=&fdatedef=1+January+1844&tdatedef=&fulltext="+q1.o65001;
     urlstr[5] ="http://www.scirus.com/srsapp/search?ds=jnl&ds=nom&ds=web&g=s&t=all&q="+q1.o65001;
     urlstr[6] ="http://oaister.umdl.umich.edu/cgi/b/bib/bib-idx?type=boolean&size=10&rgn1=entire+record&rgn2=entire+record&rgn3=entire+record&c=oaister&searchfield=Keyword&op2=And&searchfield=Keyword&q2=&op3=And&searchfield=Keyword&q3=&op6=And&rgn6=norm&restype=all+types&sort=title&submit2=search&q1="+q1.o65001;
     urlstr[7] ="http://scholar.google.com/scholar?ie=UTF-8&oe=UTF-8&hl=en&btnG=Search&q="+q1.o65001;
     urlstr[8] ="http://dec2.nlk.cz:4001/ALEPH/CZE/BMC/BMC/BMC/FIND-A?FIND=V%B9echny+rejs&BASE=V%B9echny+dokum&VALUE="+q1.o28592;

     var mode=2,e,hw;
     for (i=1; i<=MAX_URL; i++)
     {
       e=document.getElementById("wsrch"+i);
       if (!e) continue;
       if (e.checked) 
       { 
         hw=s_brwsr(urlstr[i],i,mode); 
         hw.focus(); 
       }
     }
}

/* opacity */

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;
    
    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "', 0)",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "', 1)",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id, direction) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
    if (opacity==0 && direction==0) 
    { 
        object.display='none'; object.zIndex='3';
        changeOpac(255,id,1)
    };
    
} 

function FadeIn(id,WaitMsec)
{
    var obj = document.getElementById(id)
    changeOpac(0,id,1)
    obj.style.display='block';
    setTimeout("opacity('"+id+"', 0, 255, 400)",WaitMsec);
}

function FadeOut(id,WaitMsec)
{
    setTimeout("opacity('"+id+"',255, 0, 400)",WaitMsec);
}


function grayOut(vis, options) 
{
    // Pass true to gray out screen, false to ungray
    // options are optional.  This is a JSON object with the following (optional) properties
    // opacity:0-100         // Lower number = less grayout higher = more of a blackout 
    // zindex: #             // HTML elements with a higher zindex appear on top of the gray out
    // bgcolor: (#xxxxxx)    // Standard RGB Hex color code
    // grayOut(true, {'zindex':'50', 'bgcolor':'#0000FF', 'opacity':'70'});
    // Because options is JSON opacity/zindex/bgcolor are all optional and can appear
    // in any order.  Pass only the properties you need to set.
    var options = options || {}; 
    var zindex = options.zindex || 50;
    var opacity = options.opacity || 70;
    var opaque = (opacity / 100);
    var bgcolor = options.bgcolor || '#000000';
    var dark=document.getElementById('darkenScreenObject');
    var wholescroll= options.wholescroll
    if (!dark) 
    {   
        // The dark layer doesn't exist, it's never been created.  So we'll
        // create it here and apply some basic styles.
        // If you are getting errors in IE see: http://support.microsoft.com/default.aspx/kb/927917
        var tbody = document.getElementsByTagName("body")[0];
        var tnode = document.createElement('div');           // Create the layer.
        tnode.style.position='absolute';                 // Position absolutely
        tnode.style.top='0px';                           // In the top
        tnode.style.left='0px';                          // Left corner of the page
        tnode.style.overflow='hidden';                   // Try to avoid making scroll bars            
        tnode.style.display='none';                      // Start out Hidden
        tnode.id='darkenScreenObject';                   // Name it so we can find it later
        tbody.appendChild(tnode);                            // Add it to the web page
        dark=document.getElementById('darkenScreenObject');  // Get the object.
    }
    if (vis) 
    {
        // Calculate the page width and height 
        
        if( document.body && ( document.body.scrollWidth || document.body.scrollHeight ) ) 
        {
            var pageWidth = document.body.scrollWidth+'px';
            var pageHeight = 250+document.body.scrollHeight+'px';
        } 
        else if( document.body.offsetWidth ) 
        {
            var pageWidth = document.body.offsetWidth+'px';
            var pageHeight = 250+document.body.offsetHeight+'px';
        } 
        else 
        {
           var pageWidth='100%';
           var pageHeight='100%';
        }
           
        //set the shader to cover the entire page and make it visible.
        dark.style.opacity=opaque;                      
        dark.style.MozOpacity=opaque;                   
        dark.style.filter='alpha(opacity='+opacity+')'; 
        dark.style.zIndex=zindex;        
        dark.style.backgroundColor=bgcolor;  
        dark.style.width= pageWidth;
        dark.style.height= pageHeight;
        dark.style.display='block';                          
    } 
    else 
    {
        dark.style.display='none';
    }
}

