var errMessage = new Array()
    errMessage["wrongFilled"]="Zadejte alespoň dva alfanumerické znaky.";

//precache all 'off' images
var offImgArray = new Array()
offImgArray["help"] = new Image(43, 18)
offImgArray["print"] = new Image(27, 27)
offImgArray["clipboard"] = new Image(27, 27)
offImgArray["delete"] = new Image(27, 27)
offImgArray["email"] = new Image(27, 27)
offImgArray["file"] = new Image(27, 27)
offImgArray["getit"] = new Image(27, 27)
offImgArray["daimon"] = new Image(15, 14)
offImgArray["close"] = new Image(20, 17)
offImgArray["arrow"] = new Image(18, 12)
offImgArray["scan"] = new Image(20, 17)

//off image array - set of path
offImgArray["help"].src = jsDir+"/images/menu_help_off.gif"
offImgArray["print"].src = jsDir+"/images/ico_print_off.gif"
offImgArray["clipboard"].src = jsDir+"/images/ico_clipboard_off.gif"
offImgArray["delete"].src = jsDir+"/images/ico_delete_off.gif"
offImgArray["email"].src = jsDir+"/images/ico_email_off.gif"
offImgArray["file"].src = jsDir+"/images/ico_file_off.gif"
offImgArray["getit"].src = jsDir+"/images/ico_getit_off.gif"
offImgArray["daimon"].src = jsDir+"/images/ico_daimon.gif"
offImgArray["close"].src = jsDir+"/images/ico_close_off.gif"
offImgArray["arrow"].src = jsDir+"/images/nahoru.gif"
offImgArray["scan"].src = jsDir+"/images/ico_scan_off.gif"

//precache all 'on' images
var onImgArray = new Array()
onImgArray["help"] = new Image(43, 18)
onImgArray["print"] = new Image(27, 27)
onImgArray["clipboard"] = new Image(27, 27)
onImgArray["delete"] = new Image(27, 27)
onImgArray["email"] = new Image(27, 27)
onImgArray["file"] = new Image(27, 27)
onImgArray["getit"] = new Image(27, 27)
onImgArray["daimon"] = new Image(15, 14)
onImgArray["close"] = new Image(20, 17)
onImgArray["prolongImg"] = new Image(16, 16)
onImgArray["arrow"] = new Image(18, 12)
onImgArray["scan"] = new Image(20, 17)

//on image array - set of path
onImgArray["help"].src = jsDir+"/images/menu_help.gif"
onImgArray["print"].src = jsDir+"/images/ico_print.gif"
onImgArray["clipboard"].src = jsDir+"/images/ico_clipboard.gif"
onImgArray["delete"].src = jsDir+"/images/ico_delete.gif"
onImgArray["email"].src = jsDir+"/images/ico_email.gif"
onImgArray["file"].src = jsDir+"/images/ico_file.gif"
onImgArray["getit"].src = jsDir+"/images/ico_getit.gif"
onImgArray["daimon"].src = jsDir+"/images/ico_daimon.gif"
onImgArray["close"].src = jsDir+"/images/ico_close.gif"
onImgArray["prolongImg"].src = jsDir+"/images/refresh_arrow1.gif"
onImgArray["arrow"].src = jsDir+"/images/nahoru_pres.gif"
onImgArray["scan"].src = jsDir+"/images/ico_scan.gif"

// definování řetězců pro dynamickou nápovědu při vyplňování formuláře
var strHelpText = new Array();
/* defaultni text*/
strHelpText["COMMON"] = "Z vyklápěcího menu vyberte typ údaje, který chcete vyhledávat. Svůj dotaz zapište do vyhledávacího pole. Fráze zapište do uvozovek (příklad: „sociální psychologie“). Celé jméno zapište ve tvaru příjmení, jméno (příklad: Čapek, Karel). Jednotlivá slova dotazu můžete kombinovat pomocí booleovských operátorů AND, OR, NOT (příklad: rozhlas OR televize).";
/* combo */
strHelpText["GLOB"] = "Zapsaná slova se budou vyhledávat kdekoliv v záznamu titulu, bez ohledu na typ údaje. Příklad: Josef Lada (vyhledají se tituly, které ilustroval Josef Lada, ale také tituly pojednávající o Josefu Ladovi). Jednotlivá slova dotazu můžete kombinovat pomocí booleovských operátorů AND, OR, NOT.";
strHelpText["TITLE"] = "Zapište slovo/slova z názvu. Příklad: filmový festival. Jednotlivá slova dotazu můžete kombinovat pomocí booleovských operátorů AND, OR, NOT.";
strHelpText["AUTHOR"] = "Zapište alespoň část příjmení autora, nebo celé jméno ve tvaru příjmení, křestní jméno (příklad: Čapek, Karel).";
strHelpText["PUBLISHER"] = "Zapište název nakladatele. Příklad: Sociologické nakladatelství. Jednotlivá slova dotazu můžete kombinovat pomocí booleovských operátorů AND, OR, NOT."
strHelpText["PLACE"] = "Zapište místo vydání. Příklad: Hradec Králové. Jednotlivá slova dotazu můžete kombinovat pomocí booleovských operátorů AND, OR, NOT."
strHelpText["SERIES"] = "Zapište název edice. Příklad: Dějiny států.";
strHelpText["KEYWORD"] = "Zapište klíčové slovo (předmětové heslo). Příklad: česká architektura. Jednotlivá slova dotazu můžete kombinovat pomocí booleovských operátorů AND, OR, NOT.";
strHelpText["ISXN"] = "Zapište ISBN, ISSN nebo ISMN titulu. Příklad: 80-7106-450-5, ale i 8071064505.";
strHelpText["SUBJECT"] = "Zapište předmětové heslo. Příklad: česká filozofie.";
strHelpText["MDT"] = "Zapište kód Mezinárodního desetinného třídění (MDT), nebo alespoň jeho začátek. Příklad: 159.";
strHelpText["LANG"] = "Zapište jazyk, ve kterém má být titul napsán. Příklad: francouzšťina."
strHelpText["CONSPECT"] = "Zapište slovní označení pro skupinu Konspektu. Příklad: Česká literatura.";

strHelpText["exact"] = "Zaškrtnutím určíte, jestli se bude hledat přesný výraz zapsaný v předchozím poli."
strHelpText["operators"] = "Zaškrtnutím vyberte jeden z booleovských operátorů pro vzájemný vztah vyhledávacích termínů. Příklad: Evropa NOT Česko (vyhledají se tituly pojednávající o Evropě, ale nikoliv o Česku)."
strHelpText["languages"] = "Pro upřesnění dotazu vyberte jazyk, ve kterém má být titul napsán. Pro výběr více jazyků stiskněte klávesu CTRL."
strHelpText["docType"] = "Pro upřesnění dotazu vyberte požadovaný druh dokumentu (kniha, časopis ad.). Pro výběr více druhů dokumentu stiskněte klávesu CTRL."
strHelpText["expresion"] = "Vyberte upřesňující rozpětí pro rok/roky vydání vyhledaných titulů."
strHelpText["pubYearMin"] = "Zapište počáteční, příp. i konečné datum - rok vydání vyhledaných titulů. Příklad: mezi roky 2000 2003 (vyhledají se tituly vydané mezi roky 2000 a 2003 včetně)."
strHelpText["pubYearMax"] = "Pro upřesnění dotazu zapište rok vydání vyhledaných titulů (čtyřmístné číslo). Příklad: >= 1990 (vyhledají se tituly vydané po roce 1990 včetně)."
strHelpText["date"] = "Zapište požadovaný rok vydání vyhledaných titulů (čtyřmístné číslo). Příklad: 1990 (vyhledají se tituly vydané v roce 1990).";

// pro rejstříky
strHelpText["COMMON_INDEX"] = "Z vyklápěcího menu vyberte typ údaje, který chcete prohledávat v rejstřících. Svůj dotaz zapište do vyhledávacího pole.";
/* combo */
strHelpText["TITLE_INDEX"] = "Zapište slovo/slova z názvu. Příklad: filmový festival.";
strHelpText["AUTHOR_INDEX"] = "Zapište alespoň část příjmení autora, nebo celé jméno ve tvaru příjmení, křestní jméno (příklad: Čapek, Karel).";
strHelpText["KEYWORD_INDEX"] = "Zapište klíčové slovo (předmětové heslo). Příklad: česká architektura.";
strHelpText["SUBJECT_INDEX"] = "Zapište předmětové heslo. Příklad: česká filozofie.";
strHelpText["PUBLISHER_INDEX"] = "Zapište název nakladatele. Příklad: Sociologické nakladatelství."
strHelpText["SERIES_INDEX"] = "Zapište název edice. Příklad: Dějiny států.";
strHelpText["MDT_INDEX"] = "Zapište kód Mezinárodního desetinného třídění (MDT), nebo alespoň jeho začátek. Příklad: 159.";
strHelpText["CONSPECT_INDEX"] = "Zapište slovní označení pro skupinu Konspektu. Příklad: Česká literatura.";
strHelpText["LANG_INDEX"] = "Zapište jazyk, ve kterém má být titul napsán. Příklad: francouzšťina."
strHelpText["PLACE_INDEX"] = "Zapište místo vydání. Příklad: Hradec Králové."
strHelpText["ISXN_INDEX"] = "Zapište ISBN, ISSN nebo ISMN titulu. Příklad: 80-7106-450-5, ale i 8071064505.";



// fce na zmenu vyhledavani - otevre okno rodice a nastavi mu novou url adresu
function openURL(url) {
  var encURL = encodeURI(url);
  if (window.opener != null) {
    window.opener.focus();
    window.opener.location.href = encURL;
  }
  else {
    var dialog = window.open(encURL, '','');
    dialog.focus();
  }
}

function imageOn(imgname) {
	if(document[imgname]) {
    document[imgname].src = onImgArray[imgname].src
	}

}
function imageOff(imgname) {
	if(document[imgname]) {
    document[imgname].src = offImgArray[imgname].src
	}
}
//context help/infos functions

function showInfo(id) {
	if(document.getElementById(id)){
 	document.getElementById(id).style.display='block';
	}
}
function hideInfo(id) {
	if(document.getElementById(id)){
 	document.getElementById(id).style.display='none';
	}
}

function showHelp(what) {
	document.getElementById("helpDiv").innerHTML = strHelpText[what];
}


//focus on form element on page

function formFocus() {
  if(document.form) {
    if (document.form.felem) {
  	  document.form.felem.focus();
    }
  }
}
/* Tisk okna s doporučujícím textem */
function printWithAlert() {
  alert("Doporučujeme tisk na šířku.");
  print();
 }

///////////A////////////
//dialog opener       //
///////////////////////
var dialog;
var dialogIndex;
/*var dialogAction;
var dialogWhere;*/

function openCenterModalDialog(url, size1, size2) {
 window.showModalDialog(url, name, 'dialogWidth: '+size1+'px; dialogHeight: '+size2+'px; scrollbars: no; resizable: No; status: No');
}

/*function openDialog(url, size, action, where) {
  mdWidth = 80*size;
  mdHeight = 60*size;
  dialog = window.open(url, '', "width="+ mdWidth + "; height="+ mdHeight +"; scrollbars=yes; toolbar=no; location=no; menubar=no; status=no; directories=no");
  dialogAction = action;
  dialogWhere  = where;
  dialog.focus();
} */
/**
 * Funkce pro oteven?ov? (nemod??) dialogov? okna
 * Parametry viz openDialogFull
*/
function openDialog(url, name, size1, size2) {
  openDialogFull(url, name, '0', size1, size2);
}
/**
 * Funkce pro oteven?ov? (mod??) dialogov? okna
 * Parametry viz openDialogFull
*/
function openModalDialog(url, name, size1, size2) {
  openDialogFull(url, name, '1', size1, size2);
}
/*
  * Funce pro oteven?ialogov? okna
  * @param url url adresa otev?n?tr?y
  * @param name pojmenov? okna
  * @param features etezec typu: "width=150 height=150, scrollbars=yes, toolbar=no, location=no, menubar=no, status=no, directories=no"
*/
function openDialog(url, name, features) {
   dialog = window.open(url, name, features);
   dialog.focus();
}
function openCenterDialog(url,name, size1, size2) {
   openCenterDialog(url, name, size1, size2, null, null);
}
function openCenterDialog(url,name, size1, size2, resizable) {
   openCenterDialog(url, name, size1, size2, resizable, null);
}
/** Otevre okno uprostred obrazovky
 * @param resizable - 1 okno bude mozne zvetsit ci zmencit, 0 - ne
 * @param modal - 1 okno bude modalni, 0 - ne
*/
function openCenterDialog(url, name, size1, size2, resizable, modal) {
  if (resizable != null) {
    res = resizable;
    var scroll;
    if (resizable == 1)  scroll = 'yes';
    else                 scroll = 'no';
  }
  else {
    res = 0;
  }

  var aHeight = screen.availHeight; //aktuální možná velikost okna - výška - šířka
  var aWidth  = screen.availWidth;
  var wWidth  = size1;                // velikost okna - výška - šířka
  var wHeight = size2;

  if (wHeight > aHeight) {
    wHeight = aHeight;
  }
  if (wWidth > aWidth) {
    wWidth = aWidth;
  }

  var Y = (aHeight - wHeight) / 2;
  var X = (aWidth - wWidth)   / 2;

  if (modal == 1 && navigator.appName == "Microsoft Internet Explorer") {
  // jestlie je mod??astav?yto ud?sti
  window.attachEvent("onfocus", doModal);
  window.attachEvent("onmovestart", doModal);
  window.attachEvent("onresize", doModal);
  document.attachEvent("onfocusin", doModal);
  document.attachEvent("onclick", doModal);
  document.attachEvent("ondblclick", doModal);
  }
  dialog = window.open(url, name,'height='+wHeight+',width='+wWidth+',status=no, directories=no, toolbar=no,menubar=no,location=no, scrollbars='+scroll+', resizable='+res+', top='+Y+',left='+X);
  dialog.focus();
}
/**
 * Funkce pro oteven?ov? dialogov? okna
 * @param url adresa, kter?e oteve v nov?okn? * @param name jm? okna ( jako TARGET). '' znamen?e se oteve nov?kno
 * @param isModal ur?e, zda bude okno mod??hodnota 1), ostatn?odnoty = nemod?? * @param size1, size2 - ur??ak?ozm? bude m?nov?kno. Pokud nen?ad?ani jeden,
 *        okno si nastav?elikost automaticky podle obsahu. Pokud je zad?pouze 1.
 *        parametr, je okno nastaveno v pom? 4 ku 3, a ?a je 80 * size1 (px)
 *        Pokud jsou zad? oba, ur??esnou velikost okna v pizelech.
 */
function openDialogFull(url, name, isModal, size1, size2) {
    var mdWidth = 300;
    var mdHeight = 250;

  if ((size1 != null)&&(size2 == null)) {
    // je zad?pouze +. parametr, 2. se dopo??podle pom? 4 ku 3)
    mdWidth = 80*size1;
    mdHeight = 60*size1;
  } else
  if ((size1 != null)&&(size2 != null)) {
    // jsou zad? oba parametry, velikost je pesn? pixlech
    mdWidth = size1;
    mdHeight = size2;
  }
  if (isModal == 1) {
    // jestlie je mod??astav?yto ud?sti
    window.attachEvent("onfocus", doModal);
    window.attachEvent("onmovestart", doModal);
    window.attachEvent("onresize", doModal);
    document.attachEvent("onfocusin", doModal);
    document.attachEvent("onclick", doModal);
    document.attachEvent("ondblclick", doModal);
  }
  // oteve okno
  dialog = window.open(url, name, "width="+ mdWidth + "; height="+ mdHeight +"; scrollbars=yes; toolbar=no; location=no; menubar=no; status=no; directories=no");
  if ((size1 == null)&&(size2 == null)) {
    // nen?ad?ani jeden parametr, velikost se ur?podle obsahu
    // TODO : nastavit velikost u prave vytvoreneho okna
    //dialog.attachEvent("onload",setDimensions);
  }
  dialog.focus();
}


/*
function returnValue(value) {
  if (dialogAction) dialogAction(value, dialogWhere);
  window.detachEvent("onfocus", doModal);
  window.detachEvent("onmovestart", doModal);
  window.detachEvent("onresize", doModal);
  document.detachEvent("onfocusin", doModal);
  document.detachEvent("onclick", doModal);
  document.detachEvent("ondblclick", doModal);
  window.focus();
}
*/
function doModal() {
  try {
    window.event.cancelBubble = true;
    dialog.focus();
  }
  catch (e) {
    window.detachEvent("onfocus", doModal);
    window.detachEvent("onmovestart", doModal);
    window.detachEvent("onresize", doModal);
    document.detachEvent("onfocusin", doModal);
    document.detachEvent("onclick", doModal);
    document.detachEvent("ondblclick", doModal);
    window.focus();
  }
}


function setDimensions() {
  window.resizeTo(document.body.children(0).offsetWidth+25,
    (document.body.children(0).offsetHeight+45>window.screen.height-window.screenTop?
      window.screen.height-window.screenTop:document.body.children(0).offsetHeight+31));
}

function setDimension(what) {
  what.resizeTo(what.document.body.children(0).offsetWidth+25,
    (what.document.body.children(0).offsetHeight+45>what.screen.height-what.screenTop?
      what.screen.height-what.screenTop:what.document.body.children(0).offsetHeight+31));
}
/**
	* id	id zaznamu
	* box jestli se nachazim ve schrance - nezobrazi se odkaz do schranky
	* loan jestli nechci zobrazit odkaz "ziskat" v detailu zaznamu
*/
function openDetail(id, loan, box) {
	var width = 650;
	var height = 500;
	var modal = 1;
	var resizable = 1;
	var modal = 0;
	if ( box != null && box == true ) {
		openCenterDialog("servlet?_page=detail&id="+id+"&box=true", '', width - 50, height, resizable, modal);
	}
	else if (loan != null && loan == true) {
		openCenterDialog("servlet?_page=detail&id="+id+"&loan=true", '', width - 50, height, resizable, modal);
	}
	else {
		openCenterDialog("servlet?_page=detail&id="+id, '', width, height, resizable, modal);
	}
}

function spocitejCentrovaniOkna(sizeX, sizeY) {
  var aHeight = screen.availHeight; //aktuální možná velikost okna - výška - šířka
  var aWidth  = screen.availWidth;
  var wHeight = sizeY;                // velikost okna - výška - šířka
  var wWidth  = sizeX;

  if (wHeight > aHeight) {
    wHeight = aHeight;
  }
  if (wWidth > aWidth) {
    wWidth = aWidth;
  }
  var Y = (aHeight - wHeight) / 2;
  var X = (aWidth - wWidth)   / 2;
  return (X +'|' + Y);
}

/** Zjistí, jestli pole obsahuje požadovaný počet 'správných' znaků a ořeže bílé znaky. */
function normalizeField(field) {
  var minLength = 2;
  var hodnota = '';
  var re2 = /[\s]/g;
  hodnota = strtrim(field.value);
  if (!(hodnota.length >= minLength)) {
    //alert (errMessage["wrongFilled"]);
    //field.focus();
    return false;
  }
  else {
    // orezani mezer na konci
    var pole = field.value.split(" ");
    var ret = '';
    var cutedWord = '';
    for (var i = 0; i < pole.length; i++) {
      cutedWord = removeSpaces(pole[i]);
      if (cutedWord.length > 0) {
        ret += cutedWord + ' ';
      }
    }
    // uriznuti posledni mezery
    if (ret.lastIndexOf(" ") == (ret.length - 1))
      ret = ret.substring(0, (ret.length - 1));
    field.value = ret;
    return true;
  }
}

/** Ořeže bílé znaky */
function removeSpaces(word) {
  var re = /[\s]/g;
  return word.replace(re, '');
}
/** Otestuje předavané pole fcí normalizeField */
function normalizeFields(fields) {
  var errField = -1;
  for (var i = 0; i < fields.length; i++) {
    if (normalizeField(fields[i])) {
      return true;
    }
    else {
      if (errField == -1)
        errField = i;
      continue;
    }
  }
  fields[errField].focus();
  return false;
}
//Match spaces at beginning and end of text and replace
//with null strings
function strtrim(word) {
  return word.replace(/^\s+/,'').replace(/\s+$/,'');
}
// overi platnost kriteria pro rejstriky
function controlValidScanTerm(scanTerm) {
  var ret = "";
  var scanTerms = new Array ("TITLE", "AUTHOR", "PUBLISHER", "PLACE", "SERIES", "KEYWORD", "SUBJECT", "MDT", "ISXN",
                   "CONSPECT", "LANG");
  for (var i = 0; i < scanTerms.length; i++) {
    if (scanTerms[i] == scanTerm) {
      return scanTerm;
    }
  }
  return null;
}

