var dokumenty = new Array(); //pole se všemi záznamy dokumentů var selectedList = new Array() // pole vybraných dokumentů (ve vyhledávání) var yearSpanType = "vsechna" // časové období pro vydhledávání, hodnoty: vsechna, rok, od_roku, do_roku function DocEntry() { // objekt záznamu dokumentu var title; //titul var author; //autor var uco; //autor var year; // rok vdyání dokuemntu var lang; // jazyk dokumentu var id; // id, nepoužito var comment; // komentář k dokumentu var src; // název souboru s videoklipem var keywords; // pole klíčových slov var marků // hodnoceni klipu this.title = "" this.author = "" this.uco = "" this.year = 0; this.lang = ""; this.comment = "" this.id = ""; this.src = ""; this.keywords = new Array(); } // funkce pro nastavení/získání atributů záznamu DocEntry.prototype.setTitle = function(retez) { this.title = retez} DocEntry.prototype.getTitle = function() { return this.title} DocEntry.prototype.setId = function(retez) { this.id = retez} DocEntry.prototype.getId = function() { return this.id} DocEntry.prototype.setUCO = function(retez) { this.uco = retez} DocEntry.prototype.getUCO = function() { return this.uco} DocEntry.prototype.setAuthor = function(retez) { this.author = retez} DocEntry.prototype.getAuthor = function() { return this.author} DocEntry.prototype.setYear = function(retez) { this.year = retez.substring(0,4)} DocEntry.prototype.getYear = function() { return this.year} DocEntry.prototype.setLang = function(retez) { this.lang = retez} DocEntry.prototype.getLang = function() { return this.lang } DocEntry.prototype.setDesc = function(retez) { this.desc = retez} DocEntry.prototype.getDesc = function() { return this.desc } DocEntry.prototype.setSrc = function(retez) { this.src = retez} DocEntry.prototype.getSrc = function() { return this.src } DocEntry.prototype.setFiles = function(retez) { var pole = retez.split(",") for (var i =0; i < pole.length; i++) {this.files.push(trim(pole[i]))} } DocEntry.prototype.getFiles = function() { return this.files } DocEntry.prototype.setLangs = function(retez) { var pole = retez.split(",") for (var i =0; i < pole.length; i++) {this.langs.push(trim(pole[i]))} } DocEntry.prototype.getLangs = function() { return this.langs } DocEntry.prototype.listLangs = function() { return this.langs.join(", ") } DocEntry.prototype.setVersions = function(retez) { /*this.version = retez this.versions.push(retez) */ } DocEntry.prototype.getVersions = function() { return this.versions} DocEntry.prototype.addKeyword = function(retez) { this.keywords.push(retez)} DocEntry.prototype.setKeywords = function(retez) { this.keywords = retez.split(",") } DocEntry.prototype.getKeywords = function() { return this.keywords } DocEntry.prototype.listKeywords = function() { return this.keywords.join(", ") } DocEntry.prototype.getComment = function() { return this.comment } DocEntry.prototype.setComment = function(retez) { var radky = retez.split(String.fromCharCode(10)) for (var i=0; i < radky.length; i++) { this.comment += "" + radky[i] + "
" } } DocEntry.prototype.getMark = function() { return this.mark } DocEntry.prototype.setMark = function(cislo) { this.mark = cislo; } DocEntry.prototype.addEntry = function(verze) { //slouceni komentaru this.comment = (verze.getComment() != "") ? verze.getComment() : this.comment; this.keywords = (verze.getKeywords().length > 0) ? verze.getKeywords(): this.keywords; this.langs = this.langs.concat(verze.getLangs()); this.versions = this.versions.concat(verze.getVersions()) this.files = this.files.concat(verze.getFiles()) } DocEntry.prototype.isEqual = function(verze) { //slouceni komentaru if (this.title == verze.getTitle() && this.year == verze.getYear()) return true; return false; } // sloučení záznamů verzí stejného dokumentu function decouple(pole) { var counter = 0; var vystupni = new Array() var refentry = pole[0]; refentry.setId(counter); var lastResult = false; for (var i = 1; i< pole.length; i++) { if (refentry.isEqual(pole[i])) { refentry.addEntry(pole[i]); lastResult = true; } else { vystupni.push(refentry); refentry = pole[i]; refentry.setId(++counter) lastResult = false; } } if (!lastResult) vystupni.push(refentry); return vystupni; } // třídící funkce podle autora function sortByAuthor(doc1, doc2) { var t1 = doc1.getAuthor().toLowerCase(); var t2 = doc2.getAuthor().toLowerCase(); var y1 = doc1.getYear(); var y2 = doc2.getYear(); var n1 = t1.substring(t1.indexOf(" ") + 1) var n2 = t2.substring(t2.indexOf(" ") + 1) var srvNames = compareCzech(n1, n2) if (srvNames == 0 && y1 == y2 ) return 0; if (y1 > y2 && srvNames == 0 ) return 1; if (y1 < y2 && srvNames == 0 ) return -1; return srvNames; } // třídící funkce podle titulu function sortByTitle(doc1, doc2) { var t1 = doc1.getTitle().toLowerCase(); var t2 = doc2.getTitle().toLowerCase(); var y1 = doc1.getYear(); var y2 = doc2.getYear(); var srvTitles = compareCzech(t1,t2) if (srvTitles == 0 && y1 == y2 ) return 0; if (y1 > y2 && srvTitles == 0 ) return 1; if (y1 < y2 && srvTitles == 0 ) return -1; return srvTitles; } // třídící funkce podle data function sortByDate(doc1, doc2) { var t1 = doc1.getTitle().toLowerCase(); var t2 = doc2.getTitle().toLowerCase(); var y1 = doc1.getYear(); var y2 = doc2.getYear(); var srvTitles = compareCzech(t1,t2) if (y1 > y2 ) return 1 if (y1 < y2 ) return -1 if (y1 == y2) return srvTitles } // třídící funkce podle hodnocení function sortByMark(doc1, doc2) { var t1 = doc1.getTitle().toLowerCase(); var t2 = doc2.getTitle().toLowerCase(); var m1 = doc1.getMark(); var m2 = doc2.getMark(); var srvTitles = compareCzech(t1,t2) if (m1 < m2 ) return 1 if (m1 > m2 ) return -1 if (m1 == m2) return srvTitles } // srovnávání řetězců podle českých pravidel function compareCzech(retez1, retez2) { var srv = " .,aábcčdďeéěfghchiíjklmnňoópqrřsštťuúvwxyýzž" var kratsi = Math.min(retez1.length,retez2.length) var i1 = 0; var i2 = 0; while (i1 < kratsi) { var r1 = retez1.charAt(i1) if (retez1.charAt(i1) == "c" && retez1.charAt(i1+1) == "h") { r1 = "ch"; i1++; } var r2 = retez2.charAt(i2) if (retez2.charAt(i2) == "c" && retez2.charAt(i2+1) == "h") { r2 = "ch"; i2++; } i1++; i2++; if (srv.indexOf(r1) < srv.indexOf(r2)) return -1 if (srv.indexOf(r1) > srv.indexOf(r2)) return 1 } return 0; } // sestavení seznamu dokumentů řazeného podle autorů function listByAuthor(asc) { selectedList = selectedList.sort(sortByAuthor) if (!asc) selectedList = selectedList.reverse(); showList() } // sestavení seznamu dokumentů řazeného podle data function listByDate(asc) { selectedList = selectedList.sort(sortByDate) if (!asc) selectedList = selectedList.reverse(); showList() } // sestavení seznamu dokumentů řazeného podle titulů function listByTitle(asc) { selectedList = selectedList.sort(sortByTitle) if (!asc) selectedList = selectedList.reverse(); showList() } function listByMark(asc) { selectedList = selectedList.sort(sortByMark) if (!asc) selectedList = selectedList.reverse(); showList() } // inicialziace aplikace function initApplication() { //setValue("selYearSpan", "vsechna") //setYearSpanType("vsechna"); readDocs() } // načtení záznamů dokumentů z entries.txt function readDocs() { var soubor = document.getElementById("okno"); // obsah vstupní soburo načteného v iframe var vstup = document.getElementById("okno").contentWindow.document.body.firstChild.innerHTML; //var vstup = document.getElementById("okno").contentDocument.firstChild.childNodes[1]//.innerHTML; //alert(vstup.childNodes.length) var vystup = ""; var zaznamy = vstup.split("--"); for (var i = 0; i< zaznamy.length; i++) { var stav= "novy" /* */ var zaznam = new DocEntry(); var radky = zaznamy[i].split("$") for (var j =0; j < radky.length; j++) { var name = radky[j].substring(0, radky[j].indexOf(":")); var value = radky[j].substring(radky[j].indexOf(":")+1); value = trim(value) if (radky[j] == "") continue; if (name == "nazev" ) { zaznam.setTitle(value); } if (name == "rok" ) { zaznam.setYear(value); } if (name == "autor" ) { zaznam.setAuthor(value); } if (name == "src" ) { zaznam.setSrc(value); } if (name == "uco" ) { zaznam.setUCO(value); } if (name == "hodnoceni" ) { zaznam.setMark(parseInt(value)); } if (name == "soubor" ) { zaznam.setSrc(value); //zaznam.setFiles(value) } if (name == "jazyk" ) { zaznam.setLang(value); //zaznam.setLangs(value); } if (name == "komentar" ) { zaznam.setComment(value); } if (name == "keywords" ) { zaznam.setKeywords(value); } } zaznam.setId(i); dokumenty.push(zaznam) } //dokumenty = decouple(dokumenty) for (var i = 0; i < dokumenty.length; i++) { selectedList.push(dokumenty[i]) } //listByTitle(true) //alert(selectedList[0].title + " " + selectedList[0].src) listByMark(false) } // výpis záznamu function getFullInfo(index) { for (var i = 0; i < selectedList.length; i++) { var entry = document.getElementById("entry" + selectedList[i].getId() ); entry.className = ( selectedList[i].getId() == index ) ? "clipentry playing" : "clipentry"; } var vystup = ""; var doc = dokumenty[index] vystup += "" + doc.getTitle() + "
" // výpis titulu vystup += "" + doc.getAuthor() + ", " + doc.getYear() + "
" // výpis titulu //výpis odkazů na verze dokumentu //var file = doc.getFile() var lang = doc.getLang() /* verze se seznamem*/ vystup += ""; vystup += "
" vystup += "" + doc.getComment() + "" //vystup += "Natočeno: " + + "
" vystup += "Klíčová slova: " + doc.listKeywords() + "
" setHTML("contentbox", vystup) } // výpis levého seznamu dokumentů function showList() { var vystup = ""; vystup += "" for (var i= 0; i< selectedList.length; i++) { var entry = selectedList[i]; vystup += "" setHTML("vystupni", vystup); } // vyhledávání dokumentů function searchDocs() { //nastaveni casoveho rozpeti var lowest_year = Number(getValue("year_lowest")) var highest_year = Number(getValue("year_highest")) if (yearSpanType == "vsechna" || (lowest_year == 0 && highest_year == 0)) { lowest_year = 0; highest_year = 10000; } if (yearSpanType == "rok") highest_year = lowest_year; if (yearSpanType == "do_roku") {highest_year = lowest_year; lowest_year = 0;} if (yearSpanType == "od_roku") {highest_year = 10000}; var hledany = getValue("searched"); var inTitles = document.getElementById("search_titles").checked; var inComments = document.getElementById("search_comments").checked; var inKeywords = document.getElementById("search_keywords").checked; hledany = hledany.toLowerCase() selectedList = new Array(); for (var i= 0; i < dokumenty.length; i++ ) { var entry = dokumenty[i] var year = entry.getYear() if (year < lowest_year || year > highest_year) continue; var titul = entry.getTitle().toLowerCase() var comment = entry.getComment().toLowerCase() var keywords = entry.listKeywords().toLowerCase() if (inTitles && titul.indexOf(hledany) > -1) { selectedList.push(entry); continue; } if (inComments && comment.indexOf(hledany) > -1) { selectedList.push(entry); continue; } if (inKeywords && keywords.indexOf(hledany) > -1) { selectedList.push(entry); //alert(keywords) continue; } } listByMark(false); } // zobrazení všech dokumentů function displayAll() { selectedList = new Array() for (var i = 0; i < dokumenty.length; i++) { selectedList.push(dokumenty[i]) } listByMark(false); } // nastavení časového rozsahu pro vyhledávání, docasne deaktivovana function setYearSpanType(hodnota) { /* if (hodnota == "mezi_roky") show("year_span"); else hide("year_span") if (hodnota == "vsechna") hide("year_lowest") else show("year_lowest") yearSpanType = hodnota; */ } function getValue(nodeId) { return document.getElementById(nodeId).value; } function setValue(nodeId, code) { document.getElementById(nodeId).value = code; } function setHTML(nodeId,code) { document.getElementById(nodeId).innerHTML = code; } function getHTML(nodeId) { return document.getElementById(nodeId).innerHTML; } function show(nodeId) { document.getElementById(nodeId).style.visibility = "visible"; } function hide(nodeId) { document.getElementById(nodeId).style.visibility = "hidden"; } function hideBlock(nodeId) { document.getElementById(nodeId).style.visibility = "hidden"; } function showBlock(nodeId) { document.getElementById(nodeId).style.display = "block"; } function hideBlock(nodeId) { document.getElementById(nodeId).style.display = "none"; } function disable (nodeId) { document.getElementById(nodeId).disabled = true; } function enable (nodeId) { document.getElementById(nodeId).disabled = false; } // vynecháhí bílých znaků ze začátku a konce řetězce function trim(retez) { while (retez.charCodeAt(0) < 33) { retez = retez.substring(1) } while (retez.charCodeAt(retez.length -1 ) < 33) { retez = retez.substring(0, retez.length -1) } return retez }" vystup += "" } vystup += "" + entry.getTitle() + "
" vystup += "" + entry.getAuthor() + "," vystup += " " + entry.getYear() + "" vystup += " " vystup += "
" vystup += "