var imageDetailOrderIssueClicked = false; /** * Funkce pro vkladani listeneru * * */ /** * Funkce pro pridani listeneru na odkazy s vlozenim do lightboxu * @return void */ function addToLightboxListener() { // vsechny elementy se stylem addToLightboxLink var objects = SZN.Dom.getElementsByClass('addToLightboxLink'); for (var i = 0; i < objects.length; i++) { SZN.Events.addListener(objects[i], 'click', window, 'addObjectToLightbox'); } } /** * Funkce pro zmenu barvy pozadi * @param e - event handler * @return */ function changeBackground(e) { if (SZN.Browser.client == "ie") { var id = e.srcElement.id; } else { var id = e.target.id; } switch(id) { case "color1": SZN.gEl('image').style.backgroundColor = '#ffffff'; break; case "color2": SZN.gEl('image').style.backgroundColor = '#d2d2d2'; break; case "color3": SZN.gEl('image').style.backgroundColor = '#909090'; break; case "color4": SZN.gEl('image').style.backgroundColor = '#404040'; break; case "color5": SZN.gEl('image').style.backgroundColor = '#000000'; break; default: break; } } /** * Funkce pro zavreni okna * @return void */ function closeWindow() { window.close(); } /** * Funkce pro vytisknuti okna * @return void */ function printWindow() { window.print(); } /** * Operace s mintab daty. */ var licenceLoaded = false; var variationsLoaded = false; function showMiniTab(minitabID) { SZN.gEl(minitabID).style.display = "block"; } function hideMiniTab(minitabID) { SZN.gEl(minitabID).style.display = "none"; } /** * Funkce pro prepnuti minitabu * @param e - event handler * @return void */ function switchDetailMinitab(e) { var id = SZN.Events.getTarget(e).id; if (id == '') // ? , bez toho to nefunguje { id = SZN.Events.getTarget(e).parentNode.id; } if (id == '') { id = SZN.Events.getTarget(e).parentNode.parentNode.id; } if(id == 'openTwo') id = 'minitab-two'; /* nacteni zalozek */ var minitabs = new Array(); minitabs = SZN.Dom.getElementsByClass('minitab', null, 'div'); dataExtension = '-data'; /* zobrazeni / skryti zalozek a obsahu */ for(i=0; i< minitabs.length;i++) { try { var dataID = minitabs[i].id + dataExtension; if(id == minitabs[i].id) { SZN.gEl(minitabs[i].id).className = "minitab minitab-active"; showMiniTab(dataID); } else { SZN.gEl(minitabs[i].id).className = "minitab"; hideMiniTab(dataID); } }catch(e){} } switch (id) // prepnuti obsahu minizalozky { case 'minitab-one': // prvni minizalozka - SNIMEK DETAIL break; case 'minitab-two': // druha minizalozka - VARIACE minitab_two(); break; case 'openTwo': // druha minizalozka - VARIACE minitab_two(); break; case 'minitab-three': only_me(); // treti minizalozka - ONLY ME break; case 'minitab-four': // ctvrta minizalozka - LICENCE var url = "/image/ajax_get_licence/"; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("sync"); var response = XHR.send(url, window, null, null, true); if (response.status == 200) { if (SZN.Browser.client == "ie") { var data = response.data.getElementsByTagName("data")[0].text; } else { var data = response.data.getElementsByTagName("data")[0].textContent; } SZN.gEl('imageDetailLicence').innerHTML = data; } break; case 'minitab-five': var image_id = SZN.gEl('id_o').value; orders_history(image_id); break; default: break; } } function minitab_two() { //pocitani prazdnych variaci globalEmptyVariace = 0; // horni animace loadingu if(SZN.gEl('imageDetailVariations') != null) { var itemArea = SZN.gEl('imageDetailVariations'); itemArea.innerHTML = "
Searching...
"; } if (typeof( window.variationsLock ) == 'undefined' ) { /** * zamek nad celou zalozkou, aby nedochazelo k hromadeni ajaxu. Asi by slo * ajaxy rusit pri prekliku jinam, zasahovalo by se tim ale zbytecne do mnozstvi kodu. */ window.variationsLock = true; var manager = new variationManager("imageDetailVariations", 3); manager.waitFor = 5; //cekame na probehnuti vsech 5 ajaxu, nez odstranime rotujici kolecko var image_id = SZN.gEl('id_o').value; var var_serie = new variationPart("/image/getVariationsBySerie/" + image_id + "/1", "serie", manager); var_serie.sendAjax(); if(opener.document.getElementById('search_serie') == null || (opener.document.getElementById('search_serie') != null && opener.document.getElementById('search_serie').checked == false)){ var var_rule = new variationPart("/image/getVariationsByRule/" + image_id + "/1", "rule", manager); var_rule.sendAjax(); var var_title = new variationPart("/image/getVariationsByTitle/" + image_id + "/1", "title", manager); var_title.sendAjax(); var var_cd = new variationPart("/image/getVariationsByCD/" + image_id + "/1", "cd", manager); var_cd.sendAjax(); //deaktivovat pro editorialni fotky if(SZN.gEl("imageType").value != 'editorial') { var var_photographer = new variationPart("/image/getVariationsByPhotographer/" + image_id + "/1", "photographer", manager); var_photographer.sendAjax(); } var var_features = new variationPart("/image/getVariationsByFeatures/" + image_id + "/1", "features", manager); var_features.sendAjax(); } }else{ //vymazat loader gif SZN.gEl("imageDetailVariations").innerHTML = ''; } } /** * vraci ajaxem obsah zalozky only me */ function only_me() { var url = "/image/ajax_only_me/" + SZN.gEl("id_o").value; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("sync"); var response = XHR.send(url, window, null, null, true); if (response.status == 200) { var data = SZN.Dom.getXMLText(response.data,'content',0); SZN.gEl("onlyMeContent").innerHTML = data; } } function ajaxAvailabilityRecipe() { if(SZN.gEl("tb_size_recipe") != null){ //return false; try { var id = SZN.gEl('userJurnal').options[SZN.gEl('userJurnal').selectedIndex].value; } catch(e) { var id = 0; } var url = "/image/ajax_availabilityRecipe/" + id + "/" + SZN.gEl('id_o').value; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("async"); XHR.send(url, window, 'ajax_availabilityRecipe_callback'); } } function ajax_availabilityRecipe_callback(response,status){ if (status == 200) { var price = ''; var availibility = ""; var error = SZN.Dom.getXMLText(response,'error',0); if(error == 0){ price = SZN.Dom.getXMLText(response,'price',0); SZN.gEl("tb_size_recipe").disabled = false; availibility = "during 24 hours"; }else{ price = ""; availibility = "call us"; } SZN.gEl("price_recipe").innerHTML = price; SZN.Dom.addClass(SZN.gEl("availability_recipe"),"green"); SZN.gEl("availability_recipe").innerHTML = availibility; } else { alert("Bad request!"); } } /** * Funkce pro zmenu obsahu detailu v zavislosti na casopisu * @return void */ function changeJurnal() { loadingPrices(); ajaxAvailability(); ajaxAvailabilityRecipe(); return false; //zatim nebudeme zobrazovat historii objednavek var id = SZN.gEl('userJurnal').options[SZN.gEl('userJurnal').selectedIndex].value; var url = "/image/ajax_change_jurnal/" + id + "/" + SZN.gEl('id_o').value; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("sync"); var response = XHR.send(url, window, null, null, true); if (response.status == 200) { // obsah tabulky s historii objednavek var html = response.data.getElementsByTagName("data2")[0]; // skryti / zobrazeni historie stazeni snimku if (html.hasChildNodes() == false) { if (SZN.gEl('history') != null) { if (SZN.Dom.hasClass(SZN.gEl('history'), 'shown')) { SZN.Dom.removeClass(SZN.gEl('history'), 'shown'); SZN.Dom.addClass(SZN.gEl('history'), 'hidden'); } else if (SZN.Dom.hasClass(SZN.gEl('history'), 'hidden')) { } else { SZN.Dom.addClass(SZN.gEl('history'), 'hidden'); } } } // zmena obsahu tabulky else if (html.hasChildNodes() == true) { if (SZN.Browser.client == "ie") // IE { // innerHTML v IE u tbody jaksi nefunguje... // vytvoreni oveho divu s obsahem tabulky a nahrazeni stare tabulky var html = html.text; var object = SZN.gEl('history').getElementsByTagName("table")[0]; var div = document.createElement('div'); div.innerHTML = html; object.parentNode.replaceChild(div, object); } else // zbytek { // ziskani tagu tbody, uprava obsahu tabulky pomoci innerHTML var html = html.textContent; var startRegex = new RegExp("]*>"); var endRegex = new RegExp(""); var start = html.search(startRegex); var end = html.search(endRegex) + 8; var tbody = html.substring(start, end); tbody = tbody.replace(startRegex, ""); tbody = tbody.replace(endRegex, ""); var element = SZN.gEl('history').getElementsByTagName("table")[0].getElementsByTagName("tbody")[0]; element.innerHTML = tbody; } if (SZN.Dom.hasClass(SZN.gEl('history'), 'hidden')) { SZN.Dom.removeClass(SZN.gEl('history'), 'hidden'); SZN.Dom.addClass(SZN.gEl('history'), 'shown'); } else if (SZN.Dom.hasClass(SZN.gEl('history'), 'shown')) { } else { SZN.Dom.addClass(SZN.gEl('history'), 'shown'); } } // pridani event listeneru na odkazy s objednavkou for (var i = 0; i < 100; i++) { var id = 'order-' + i; if (SZN.gEl(id) != null) { //SZN.Events.addListener(SZN.gEl(id), 'click', window, 'orderImageButton'); } } } else { alert("Bad request!"); } } /** * Funkce pro prelozeni keywordu * @return void */ function translateKeywords() { if (SZN.gEl('keywords').getElementsByTagName('input').length > 0) { //var url = "/dictionary/get_translated_keywords/"; var url = "/dictionary/googletranslate/"; var form = SZN.gEl('keywordsfm'); var elements = form.getElementsByTagName('input'); for (var i = 0; i < elements.length; i++) { url += elements[i].value; if (i != (elements.length -1)) { url += ","; } } var urlStr = new String(url); //vyradime ':' z url url = urlStr.replace(":",' '); var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("sync"); var response = XHR.send(url, window, null, null, true); if (response.status == 200) { // zpracovani vysledku z XML var translates = response.data.getElementsByTagName('translate'); for(i = 0; i < translates.length; i++) { var cs = translates[i].getElementsByTagName('wordCZ'); var en = translates[i].getElementsByTagName('wordEN'); if (SZN.Browser.client == "ie") { cs = cs[0].firstChild.text; if (en[0].lastChild != null) { en = en[0].lastChild.text; en = en.toLowerCase(); } else { en = null; } } else { cs = cs[0].firstChild.textContent; if (en[0].lastChild != null) { en = en[0].lastChild.textContent; en = en.toLowerCase(); } else { en = null; } } if (en != null) { var enID = 'kw_' + en; try { var parent = SZN.gEl(enID).parentNode; var label = parent.getElementsByTagName('a'); label[0].innerHTML = en + " (" + cs + ")"; }catch(e){} } } } else { alert("Bad request!"); } } else { alert("Image has no keywords!"); } } function addObjectToLightboxLinkClick(e) { addObjectToLightbox(e,true); } function addObjectToLightboxCheckboxClick(e) { addObjectToLightbox(e,false); } /** * Funkce pro pridani objektu do lightboxu * @param e - udalost, ktera to spustila * @return void, vola callback funkci v puvodnim okne */ function addObjectToLightbox(e,invert) { // pokud je uzivatel prihlasen if (SZN.gEl('type_u').value != 'guest') { if(invert == true) { imageLightboxStatusInvert(); } window.opener.addObjectToLightbox(SZN.gEl('imageDetailAddToLightbox').value); var t=setTimeout("reloadLightboxCheckbox()",4000); return false; } else { try{ // neprihlasen, zobrazim dialog s vyberem prihlaseni nebo registrace opener.openPopup('/lightbox/show_form','225','107',"You are not logged",null); opener.focus(); }catch(e){ } } } /** * Funkce pro start hledani vybranych klicovych slov * @return void */ function startSearching() { //logovani klicku na keywordy, zapina se v configu log.php if((typeof globalLogDetailKeywords != 'undefined') && (globalLogDetailKeywords != null)) { logClickOnKeywordy(); } var strings = ''; /* for (var i = 0; i < window.document.forms['keywordsfm'].elements.length; i++) { if (window.document.forms['keywordsfm'].elements[i].type == 'checkbox') { if (window.document.forms['keywordsfm'].elements[i].checked == true) { strings = strings + ' ' + window.document.forms['keywordsfm'].elements[i].value; } } } */ var keywordy = SZN.Dom.getElementsByClass("keywordsItem"); for (var j = 0; j < keywordy.length; j++ ) { input = SZN.Dom.getElementsByClass("inputkeywordTransl",keywordy[j]); if(input[0].checked == true) { aString = SZN.Dom.getElementsByClass("keywordTransl",keywordy[j]); strings += aString[0].innerHTML + " "; } } // TODO, zatim to vali takhle, posleze upravit, jak si bude Petr prat try{ opener.document.forms['searchForm'].elements['search_query'].value = strings; opener.document.forms['searchForm'].submit(); window.close(); }catch(e){ //data z globalni promene var typ = imageTypeGlobalVariableForDetail; window.location.href="/" + typ + "/search/query/" + strings; } } /** * spusti objednavku obrazu z image detailu */ function startPrintsOrder(objectID, parameters) { try { window.opener.orderPrint(objectID, parameters); window.close(); window.opener.focus(); } catch(e) { orderPrint(objectID, parameters); } } /** * spusti objednavku pres rm kalkulacku z image detailu */ function startRMcalculatorImageDetail(objectID,size) { try { window.opener.startRMcalculatorMain(null, objectID, 'RM', 1,size); window.close(); window.opener.focus(); } catch(e) { startRMcalculatorMain(null, objectID, 'RM', 1,size); } } /** * Funkce pro objednani online snimku (creative) * @return void */ function startOrdering() { var availabilityCode = 1 ; var downloadType = SZN.gEl('download_type').value; var availApi = document.getElementsByName("avail_code_api"); var availCodes = document.getElementsByName("avail_code"); var radios = document.getElementsByName("tb_size"); var recipe = false; var size = null; // zjisteni receptu if(SZN.gEl('tb_size_recipe') != null && SZN.gEl("tb_size_recipe").checked == true){ recipe = 1; }else{ recipe = 0; } for (var i = 0; i < radios.length; i++) { if (radios[i].checked == true) { size = radios[i].value; availabilityCode = availCodes[i].value; api = availApi[i].value; break; } } if (size == null) { eval("window.aler" + "t" + "('No size selected!')"); //eval proti nahrazeni logovaci funkci (dela to regularni vyraz) return false; } var objectID = SZN.gEl('id_o').value; if (SZN.gEl('type_u').value == 'creative' || (SZN.gEl('type_u').value == 'guest')) { if(SZN.gEl('imageType').value=='creative' && SZN.gEl('imageRights').value==0) { startRMcalculatorImageDetail(objectID,size); return; } else { var newUrl = window.opener.document.getElementById('RFcontroller').value+ objectID + '/' + size ; //var newUrl = '/image/rf_online_order/' + objectID + '/' + size ; newUrl += "/1/returnToDetail"; } } else { var text = (imageDetailOrderIssueClicked == true) ? SZN.gEl('imageDetailOrderIssue').value : ''; var newUrl = "/image/editorial_order/" + objectID + "/" + size + "/" + SZN.gEl('userJurnal').options[SZN.gEl('userJurnal').selectedIndex].value + "/0/" + availabilityCode + "/" + api + "/" + recipe; } /* volani ojednavaci funkce hlavniho okna */ try{ unselectAllSizes(); window.opener.returnWindowAfterOrder = window; window.opener.orderImageFromPopUpcallFromPopup(newUrl,downloadType,availabilityCode,api,text); if(!(downloadType == 2 && availabilityCode == 2)) { window.opener.focus(); } window.close(); }catch(e){ orderImageFromPopUpcallFromPopup(newUrl,downloadType,availabilityCode,api,text); } } /** * Funkce pro ziskani rozliseni snimku pomoci ajaxu * @return void */ function getImageResolution() { var url = "/image/get_image_resolution/" + SZN.gEl('id_o').value; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("async"); var response = XHR.send(url, window, 'getImageResolutionCallback'); } /** * Asynchronni doplneni velikosti hiresu */ function getImageResolutionCallback(response,status) { var allowTryWmHires = false; var allowTryHires = false; if (status == 200) { var resolution = response.getElementsByTagName('resolution')[0]; var size = response.getElementsByTagName('size')[0]; if (SZN.Browser.client == "ie") { var text = resolution.text; } else { var text = resolution.textContent; } var imageRes = SZN.gEl('imageRes'); if (imageRes) { var td = imageRes.getElementsByTagName('td')[1]; td.innerHTML = text; } // zobrazeni try hires podle vraceneho rozliseni try { var patternX = new RegExp('^[0-9]{1,}'); var patternY1 = new RegExp('x.[0-9]{1,}'); var patternY = new RegExp('[0-9]{1,}'); var x = parseInt(patternX.exec(text)); var y = parseInt(patternY.exec(patternY1.exec(text))); // zobrazeni try wm hires pokud je dostupna alespon jedna velikost if(SZN.gEl('imageDetailTryHiresWmMain') && (x > 100 || y > 100)) { SZN.gEl('imageDetailTryHiresWmMain').style.display = 'block'; } // zobrazeni try hires pokud je dostupna 1/8 if(SZN.gEl('imageDetailTryHiresMain') && (x > 800 || y > 800)) { SZN.gEl('imageDetailTryHiresMain').style.display = 'block'; } } catch (e){} } } /** * Zjisteni , zda je snimek v aktualnim lightboxu. * * @todo doresit situaci kdy je detail snimku otevren drive nez je vytvorena promenna window.opener.glLbObjects. */ function isImageInLightbox() { try { var objects = window.opener.glLbObjects; for(i=0;i < objects.length;i++) { var testValue = objects[i].textContent || objects[i].text ; if(testValue == SZN.gEl('imageDetailAddToLightbox').value) { return true; } } }catch(e) { //alert('unable to determine Lightbox presence'); return false; } return false; } function openImageDetail(objectID) { window.opener.openImageDetail(objectID); } /** * zaskrtnuti , nebo odskrtnuti add to lightbox * @param bool checked */ function imageLightboxStatus(checked) { SZN.gEl('imageDetailAddToLightbox').checked = checked; } function imageLightboxStatusInvert(checked) { if(SZN.gEl('imageDetailAddToLightbox').checked == false) { SZN.gEl('imageDetailAddToLightbox').checked = true; return false; } SZN.gEl('imageDetailAddToLightbox').checked = false; } function reloadLightboxCheckbox() { imageLightboxStatus(isImageInLightbox()); } /* **************** prepinani zobrazeni jednotek velikosti v tabulce velikosti *************************/ var selectedSizeSwitcherID = 'switchToProfimediaSize'; function selectSizeSwitcher(e) { var elm = SZN.Events.getTarget(e); SZN.Dom.removeClass(SZN.gEl(selectedSizeSwitcherID),'sizeSwitcherSelected'); SZN.Dom.addClass(elm,'sizeSwitcherSelected'); selectedSizeSwitcherID = elm.id; } function showMilimeterSize(e) { changeSizeRequest('mm',e); } function showPixelSize(e) { changeSizeRequest('px',e); } function showMegaPixelSize(e) { changeSizeRequest('mpx',e); } function showProfimediaSize(e) { changeSizeRequest('profimedia',e); } function showInchSize(e) { changeSizeRequest('inch',e); } function changeSizeRequest(units,e) { showChangeSizesStatus(); selectSizeSwitcher(e); var url = "/image/ajax_change_sizes/" + SZN.gEl('id_o').value + "/" + units; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("async"); XHR.send(url, window, "changeSizesCallBack"); } function changeSizesCallBack(response,status) { if (status == 200) //doplneni prepocitanych velikosti { var xmlDoc = response; var table = document.getElementById('ordersTable'); for(i=0;i < table.rows.length ;i++) { try { if(table.rows[i].id) { id = table.rows[i].id; var chkID = 'tb_' + id ; if (SZN.Browser.client == "ie") // IE { var resolution = xmlDoc.getElementsByTagName(id)[0].getElementsByTagName('resolution')[0].text; } else { var resolution = xmlDoc.getElementsByTagName(id)[0].getElementsByTagName('resolution')[0].textContent; } table.rows[i].cells[1].innerHTML = resolution; } } catch(e) {} } } SZN.gEl('switchSizeStatusBar').style.display = 'none'; } function showChangeSizesStatus() { var statusElement = SZN.gEl('switchSizeStatusBar'); try { statusElement.innerHTML = " "; statusElement.style.display = 'block'; }catch(e){} } /** * volani funkci hlavniho okna. */ function openBuyPopUp(e,source) { window.opener.openBuyPopUp(e,source,window); } function closeBuyPopUp() { try{ window.opener.closeBuyPopUp(window); }catch(e){ } } function n() { return window.opener.n(); } function orderImageFromPopUpcallFromPopup(p1,p2,p3,api,issueNote) { try{ window.opener.orderImageFromPopUp(p1,p2,p3,api,issueNote); window.close(); window.opener.focus(); }catch(e){ orderImageFromPopUp(p1,p2,p3,api,issueNote); } } function iconMouseOver(e) { window.opener.iconMouseOver(e); } function iconMouseOut(e) { window.opener.iconMouseOut(e); } /** * nahravaci proces */ function loadingPrices() { //doplneni load var table = document.getElementById('ordersTable'); for(i=0;i < table.rows.length ;i++) { try { if(table.rows[i].cells[3]) table.rows[i].cells[3].innerHTML = "Loading..."; } catch(e) { } } } function clearInput(e){ var input = SZN.Events.getTarget(e); input.value = ''; if(SZN.Events.getTarget(e).id == 'imageDetailOrderIssue') imageDetailOrderIssueClicked = true; } /*************************************************************************************************************/ /** * naveseni event listeneru v momente, kdy je vytvoren DOM */ // nacteni cen ajaxem + zmena casopisu, zatim pouze u editorialniho zakaznika SZN.Events.onDomReady(window, function () { if (SZN.gEl('type_u').value == 'editorial'){ // nacteni cen ajaxem changeJurnal(); SZN.Events.addListener(SZN.gEl('userJurnal'), 'change', window, 'changeJurnal'); SZN.Events.addListener(SZN.gEl('imageDetailOrderIssue'), 'click', window, 'clearInput'); SZN.Events.addListener(SZN.gEl('imageDetailOrderIssue'), 'focus', window, 'clearInput'); } else if (window.globalMainTab != "prints") { // prints mají vlastní velikosti ajaxAvailability(); ajaxAvailabilityRecipe(); } }); // nacteni rozliseni ajaxem SZN.Events.onDomReady(window, function (){ getImageResolution(); }); //nacteni variaci do hlavniho okna SZN.Events.onDomReady(window, function (){ getSerie(); }); // zavreni okna SZN.Events.onDomReady(window, function (){ if(SZN.gEl('closeDetail') != null){ SZN.Events.addListener(SZN.gEl('closeDetail'), 'click', window, 'closeWindow'); } }); SZN.Events.onDomReady(window, function (){ if (window.globalMainTab != "prints") { SZN.Events.addListener(SZN.gEl('imageDetail'), 'click', window, 'closeWindow'); } }); // tisk okna SZN.Events.onDomReady(window, function (){ SZN.Events.addListener(SZN.gEl('printDetail'), 'click', window, 'printWindow'); }); // prepinani minitabu SZN.Events.onDomReady(window, function (){ SZN.gEl('minitab-one') && SZN.Events.addListener(SZN.gEl('minitab-one'), 'click', window, 'switchDetailMinitab'); }); SZN.Events.onDomReady(window, function (){ SZN.gEl('minitab-two') && SZN.Events.addListener(SZN.gEl('minitab-two'), 'click', window, 'switchDetailMinitab'); }); SZN.Events.onDomReady(window, function (){ if (SZN.gEl('minitab-three') != null) SZN.Events.addListener(SZN.gEl('minitab-three'), 'click', window, 'switchDetailMinitab'); }); SZN.Events.onDomReady(window, function (){ SZN.gEl('minitab-four') && SZN.Events.addListener(SZN.gEl('minitab-four'), 'click', window, 'switchDetailMinitab'); }); SZN.Events.onDomReady(window, function (){ if (SZN.gEl('minitab-five') != null) SZN.Events.addListener(SZN.gEl('minitab-five'), 'click', window, 'switchDetailMinitab'); }); // preklad keywordu SZN.Events.onDomReady(window, function (){ try { SZN.Events.addListener(SZN.gEl('translateKeywords'), 'click', window, 'translateKeywords'); }catch(e){} }); // vlozeni do lightboxu SZN.Events.onDomReady(window, function (){ SZN.Events.addListener(SZN.gEl('addImageToLightbox'), 'click', window, 'addObjectToLightboxLinkClick'); }); SZN.Events.onDomReady(window, function (){ SZN.Events.addListener(SZN.gEl('imageDetailAddToLightbox'), 'click', window, 'addObjectToLightboxCheckboxClick'); }); // spusteni hledani uvedenych keywordu v puvodnim okne SZN.Events.onDomReady(window, function (){ try { SZN.Events.addListener(SZN.gEl('findKeywordsButton'), 'click', window, 'startSearching'); }catch(e){} }); // tlacitko objednat SZN.Events.onDomReady(window, function () { if ((SZN.gEl('orderImageButton') != null)) { SZN.Events.addListener(SZN.gEl('orderImageButton'), 'click', window, 'startOrdering'); } }); SZN.Events.onDomReady(window, function () { imageLightboxStatus(isImageInLightbox()); }); SZN.Events.onDomReady(window, function () { /* Pouzijeme onclick misto listeneru . Byl problem s vicenasobnym oznacovanim chkboxu , nez zacal byt aktivni listener click */ return false; //odznaceni objednacich velikosti var table = document.getElementById('ordersTable'); for(i=0;i < table.rows.length ;i++) { try { if(table.rows[i].id) { id = table.rows[i].id; var chkID = 'tb_' + id ; SZN.Events.addListener(SZN.gEl(chkID), 'click', window, 'selectCheckedSizeRow'); } } catch(e) {} } }); /** * Listenery pro prepinani zobrazeni velikosti v ruznych jednotkach. */ SZN.Events.onDomReady(window, function () { try { SZN.gEl('switchToMilimeterSize') && SZN.Events.addListener(SZN.gEl('switchToMilimeterSize'), 'click', window, 'showMilimeterSize'); SZN.gEl('switchToPixelSize') && SZN.Events.addListener(SZN.gEl('switchToPixelSize'), 'click', window, 'showPixelSize'); SZN.gEl('switchToMegaPixelSize') && SZN.Events.addListener(SZN.gEl('switchToMegaPixelSize'), 'click', window, 'showMegaPixelSize'); SZN.gEl('switchToInchSize') && SZN.Events.addListener(SZN.gEl('switchToInchSize'), 'click', window, 'showInchSize'); SZN.gEl('switchToProfimediaSize') && SZN.Events.addListener(SZN.gEl('switchToProfimediaSize'), 'click', window, 'showProfimediaSize'); } catch(e) {} }); function openURL(sURL) { window.close(); opener.document.location = sURL; } function searchLinkKeyword(CheckBoxID){ SZN.gEl(CheckBoxID).checked = true; startSearching(); } //hledani celebrit v descriptionu a titlu //SZN.Events.onDomReady(window, function (){ searchCelebrity('imageDetailObjectTitle') }); //SZN.Events.onDomReady(window, function (){ searchCelebrity('imageDetailObjectDescription') }); function searchCelebrity(id) { span = document.getElementById(id); if(span) { span.innerHTML+="..."; url = "/image/ajax_makeCelebrities"; var XHR = new SZN.HTTPRequest(); text = document.getElementById(id).innerHTML; XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("async"); //XHR.setPostData("idspanu="+id+"&textspanu="+escape(text)); // problemy s timhle textem CNN’s “Larry King Live” XHR.setPostData("idspanu="+id+"&textspanu="+text); //bez escape v pohode var response = XHR.send(url, window, 'searchCelebrityCallback',null,true); } } function searchCelebrityCallback(response,status) { if (status == 200) { if (SZN.Browser.client == "ie") { id = response.getElementsByTagName("idtag")[0].text; text = response.getElementsByTagName("text")[0].text; } else { id = response.getElementsByTagName("idtag")[0].textContent; text = response.getElementsByTagName("text")[0].textContent; } } SZN.gEl(id).innerHTML = text; SZN.gEl(id+'_makeCelebritiesStatus').innerHTML = ""; } function openCDfromImageDetail(obj, cdNumber) { opener.openCD(obj,cdNumber); window.close(); } /** * prepinani jazyku u keywordu */ function replaceKeywordtoEnglish(lang, type){ var type = type; var keywordy = SZN.Dom.getElementsByClass('keywordTransl'); var checkboxy = SZN.Dom.getElementsByClass('inputkeywordTransl'); /* var langreg = /([a-z]{2}_[A-Z]{2})\.png$/; var urlreg = /([^\/]+)\.png$/; var langNational = langreg.exec(SZN.gEl("nationalLang").src); var englishLang = langreg.exec(SZN.gEl("englishLang").src); */ var lang = lang; var langreg = /(_[A-Z]{2})/; var elFlag = SZN.gEl('nationalLang'); var elFlagUS = SZN.gEl('englishLang'); var langNational = str_string(elFlag.className, '_'); var langEnglish = str_string(elFlagUS.className, '_'); if(lang == "en_US"){ SZN.gEl("keywTrans_en").style.display = 'none'; SZN.gEl("keywTrans_cz").style.display = 'inline'; var englishKeywordy = translateKeywordsEnglish.split(","); var englishKeywordyURL = translateKeywordsEnglishURL.split(","); }else{ SZN.gEl("keywTrans_en").style.display = 'inline'; SZN.gEl("keywTrans_cz").style.display = 'none'; var englishKeywordy = translateKeywords.split(","); var englishKeywordyURL = translateKeywordsURL.split(","); } for(i = 0; i < keywordy.length; i++){ keywordy[i].innerHTML = englishKeywordy[i]; var reg = /([^\/]+)\/([a-z]+)\/$/; keywordy[i].href = keywordy[i].href.replace(reg, englishKeywordyURL[i] + "/$2/"); } if(type != 'editorial'){ for(i = 0; i < checkboxy.length; i++){ checkboxy[i].value = englishKeywordy[i]; } } // ulozeni keywordu do DB setKeywordsLang(lang); } function replaceNationalTitleDescription(){ if(typeof detailtopTitleEnglish != 'undefined' || typeof detailTitleEnglish != 'undefined'){ if(SZN.gEl("languageFlags") != null){ SZN.gEl("languageFlags").style.display = 'inline'; } } if (window.globalMainTab != "prints") { if(typeof detailtopTitleEnglish != 'undefined'){ document.title = simpleDecode(detailtopTitleEnglish); } translateTitleDescription('en_US'); } } function translateTitleDescription(lang){ try { var lang = lang; if(lang == 'en_US'){ SZN.gEl("flagtitle_cz").style.display = 'inline'; SZN.gEl("flagtitle_en").style.display = 'none'; if(typeof detailTitleEnglish != 'undefined'){ SZN.gEl("imageDetailObjectTitle").innerHTML = simpleDecode(detailTitleEnglish); } if(typeof detailDescriptionEnglish != 'undefined'){ SZN.gEl("imageDetailObjectDescription").innerHTML = simpleDecode(detailDescriptionEnglish); } }else{ SZN.gEl("flagtitle_cz").style.display = 'none'; SZN.gEl("flagtitle_en").style.display = 'inline'; if(typeof detailObjectTitle != 'undefined'){ SZN.gEl("imageDetailObjectTitle").innerHTML = simpleDecode(detailObjectTitle); } if(typeof detailObjectDescription != 'undefined'){ SZN.gEl("imageDetailObjectDescription").innerHTML = simpleDecode(detailObjectDescription); } } }catch(e){}; } /* * funkce ktera je totozna s pehapkovskou funkci 'strstr()' * * @param string - string ve kterem se hleda * @param search - hledany vyraz * @param bool - mali se vratit string pred vyrazem TRUE, nebo po vyrazu FALSE * @return oriznuty string dle vyhledani * */ function str_string (string, search, bool) { var pos = 0; string += ''; pos = string.indexOf( search ); if (pos == -1) { return false; } else{ if (bool){ return string.substr( 0, pos ); } else{ return string.slice( pos ); } } } /** * mettoda pro nastaveni jazyku keywordu */ function setKeywordsLang(lang){ var lang = lang; var url = "/services/setKeywordsLang/" + lang ; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("sync"); var response = XHR.send(url, window, null, null, true); } function closeDetailAdminTool(objectID){ var lang = lang; var bck = SZN.gEl("imageDetailAdminToolsDelete").innerHTML; SZN.gEl("imageDetailAdminToolsDelete").innerHTML += " ......."; var response = window.opener.adminToolsDeleteObject(objectID); SZN.gEl("imageDetailAdminToolsDelete").innerHTML = bck+" "+response[1]; if(response[0] == "0") setTimeout("window.close()", 4000); } function changeAlt2downloadName(e) { //prepne alt na preferovany nazev snimku ze src. //chrome totiz pri pretahovani na plochu bere nazev z altu e.target.alt = e.target.src.match("[^/]+$"); } /** * Chrome pri pretazeni fotky na plochu potrebuje zmenit alt, aby snimek mel spravne jmeno */ function changeAlt2downloadNameListener() { if(SZN.Browser.client == "chrome") { var el = SZN.gEl("imageDetail"); SZN.Events.addListener(el, 'mousedown', window, 'changeAlt2downloadName'); } } SZN.Events.onDomReady(window, "changeAlt2downloadNameListener"); /** ########################################################## * Třída na variaci */ variationPart = SZN.ClassMaker.makeClass({ NAME: "variace", VERSION: "0.1", CLASS: "class" }); //generický konstruktor variationPart.prototype.$constructor = function(url, type, manager) { this.url = url; this.type = type; this.manager = manager; }; /** * Zpracuje asynchronne prichazejici vysledky z ajaxu a informuje tridu variationManager */ variationPart.prototype._zpracovaniVariace = function(txt, status) { this.txt = txt; this.status = status; this.manager.ajaxIsReady(this); }; variationPart.prototype.sendAjax = function() { var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("text"); XHR.setMode("async"); XHR.send(this.url, this, "_zpracovaniVariace"); }; /** * Vrati prioritu variace. Veskere zmeny razeni delat tady!!! */ /* variationPart.prototype.getPriority = function() { if (this.type == "serie") { return 1; } if (this.type == "features") { return 2; } else if (this.type == "rule") { return 3; } else if (this.type == "title") { return 4; } else if (this.type == "cd") { return 5; } else if (this.type == "photographer") { return 6; } else { return 999; } }; */ /** ######################## * Variations manager * * Trida, ktera se stara o razeni a zobrazeni variaci. */ variationManager = SZN.ClassMaker.makeClass({ NAME: "variationManager", VERSION: "0.1", CLASS: "class" }); /** * Sloty pro variace. Nejdulezitejsi ma nejnizsi cislo. */ /* variationManager.prototype.$constructor = function(targetID, slotCount) { // projate a zpracovane variace this.variations = []; //fronta variaci cekajicich na zpracovani this.quee = []; this.queeLocked = false; this.waitFor = 3; //pocet ajaxu na ktere cekame pred odstranenim rotujiciho waiting kolecka // kam (JEDINECNE id elementu) se zapisuji variace? this.targetID = targetID; // Maximalni pocet zobrazovanych variaci - pocet mist (slotu) pro variace this.slotCount = slotCount; // Pocet slotu na radek this.maxSlotsPerLine = 3; }; */ /** * Seradi variace podle priority */ /* variationManager.prototype.sortVariationsByPriority = function() { var sortFce = function(a, b) { if (a.getPriority() < b.getPriority()) { return -1; } if (a.getPriority() > b.getPriority()) { return 1; } if (a.getPriority() == b.getPriority()) { return 0; } }; this.variations.sort(sortFce); }; */ /** * zobrazeni vzriaci na prislusnem miste */ variationManager.prototype.ajaxIsReady = function(variation) { SZN.gEl("imageDetailVariations").innerHTML = ''; switch(variation.type){ case 'serie': SZN.gEl("variationSeriePlace").innerHTML = variation.txt; break; case 'cd': SZN.gEl("variationCDPlace").innerHTML = variation.txt; break; case 'photographer': SZN.gEl("variationPhotographerPlace").innerHTML = variation.txt; break; case 'title': SZN.gEl("variationTitlePlace").innerHTML = variation.txt; break; case 'rule': SZN.gEl("variationRulePlace").innerHTML = variation.txt; break; } if(variation.txt.length == 0){ globalEmptyVariace += 1; } // zobrazebni chybove hlasky if(globalEmptyVariace == 6 || (opener.document.getElementById('search_serie').checked == true && globalEmptyVariace == 1 )){ var rodic = SZN.gEl('imageDetailVariations'); var el = SZN.cEl("h3"); var text = SZN.cTxt("No variations are available."); el.appendChild(text); rodic.appendChild(el); } }; /** * Vrati jen ajaxove odpovedi s http statusem 200 (OK) */ variationManager.prototype.getOKAjaxAnswers = function() { var validVariations = []; var variationsLength = this.variations.length; for (var i = 0; i < variationsLength; i++) { if (this.variations[i].status == 200) { validVariations[validVariations.length] = this.variations[i]; if (validVariations.length == this.slotCount) { break; } } } return validVariations; }; /** * Vyresi blokace (kdyz mame fotky v setu, neukazujeme fotografa atd.) */ variationManager.prototype.resolveBlocks = function(validVariations) { var available = []; //pomocny seznam dostupnych typu var disabled = []; //nezobrazovane variace var unblockedVariations = []; //tohle budeme vracet var variationsLength = validVariations.length; // dostupne typy for (var i = 0; i < variationsLength; i++) { available.push(validVariations[i].type); } /** * pravidla zkopirovana ze stare sablony. Porovnana a doplnena okometricky */ //kdyz je cd nebo features, nezobrazuj rules if (available.indexOf("rule") != -1 && (available.indexOf("cd") != -1 || available.indexOf("features") != -1)) { disabled.push("rule"); } // kdyz je features, nezobrazuj cd if (available.indexOf("features") != -1 && available.indexOf("cd") != -1 && disabled.indexOf("cd") == -1 ) { disabled.push("cd"); } // kdyz mame rule, nezobrazuj fotografa if (available.indexOf("photographer") != -1 && available.indexOf("rule") != -1 && disabled.indexOf("rule") == -1) { disabled.push("photographer"); } /** * naplneni navratoveho pole */ for (var i = 0; i < variationsLength; i++) { var variace = validVariations[i]; if (disabled.indexOf(variace.type) == -1 ){ unblockedVariations.push(variace); } } return unblockedVariations; }; /** * Urci sirku jednoho slotu pro variace * */ /* variationManager.prototype.getSlotWidth = function(slotsOccupied) { var slotsPerLine = slotsOccupied; //pocet slotu na radek if (slotsOccupied > this.slotsPerLine) { slotsPerLine = this.maxSlotsPerLine; } var width = (100 - 5)/slotsPerLine; return Math.floor(width); }; */ function getSerie(){ var objectID = SZN.gEl('id_o').value; var url = "/serie/ajax_serie/" + objectID; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("async"); XHR.send(url, window, 'getSerieCallback'); } function getSerieCallback(response,status){ if (status == 200) { var showodkazNaDalsi = SZN.Dom.getXMLText(response,"dalsi",0); var seriePlace = SZN.gEl("seriePlace"); if(showodkazNaDalsi == 1){ seriePlace.innerHTML += "more
"; } if( response.getElementsByTagName('img')[0] != null){ var pocImg = response.getElementsByTagName('img').length; if(pocImg > 0) SZN.gEl("serieShowPlace").style.display = 'block'; for(i=0; i < pocImg; i++){ var thumb = SZN.Dom.getXMLText(response,"img",i); seriePlace.innerHTML += thumb; } } if(SZN.Dom.getXMLText(response,"pdfThumb",0) != null) { seriePlace.innerHTML += SZN.Dom.getXMLText(response,"pdfThumb",0); } } } function orders_history(image_id) { var url = "/image/ajax_getImageOrdersHistory/" + image_id; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("txt"); XHR.setMode("async"); XHR.send(url, window, 'orders_history_processing'); } function orders_history_processing(txt, status) { if (status == 200) { SZN.gEl("minitab-five-data").innerHTML = txt; } else { window.alert(txt); } } //zalogovani clicku na keywordy v detailu function logClickOnKeywordy() { var url = "/services/logKeywordDetailClick" ; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("sync"); var response = XHR.send(url, window, null, null, true); } // resizování large snímku v detailu pro obrazy na míru SZN.Events.onDomReady(window, function(){ if (window.globalMainTab != "prints") {return;} var attemptsCount = 0; // startovací funkce var start = function() { // velikost large var maxLargeX = SZN.gEl("imageDetail").width; var maxLargeY = SZN.gEl("imageDetail").height; /*typeof(console) != "undefined" && console.info(maxLargeX, "šířka"); typeof(console) != "undefined" && console.info(maxLargeY, "výška");*/ /** * Obejiti nefunkčního img onload (cachované obrázky) * * 20x se zkusí změřit velikost large. Když nebude širší i vyšší * než 50 px, nepokračuje se. */ attemptsCount++; if (attemptsCount > 20) { window.clearInterval(timer); return; } else if (maxLargeY < 50 || maxLargeX < 50) { return; } /** * Vyrobíme posuvník (slider) */ var sliderData = window.JSEnvContainer.retrieve("printsSliderData"); var sheetsData = window.JSEnvContainer.retrieve("printsSliderSheets"); var sManager = new sliderManager("printsSlider", "printsSliderSheetsBox", sliderData, sheetsData); /** * Tvorba instance třídy printsDetail a nastavení jejích atributů */ var initialImageSizeCoef = window.JSEnvContainer.retrieve("printsInitialImageSizeCoef"); var defaultLargePxSizes = {x: maxLargeX * initialImageSizeCoef, y: maxLargeY * initialImageSizeCoef}; // výchozí rozměr large v px var imageID = SZN.gEl("id_o").value; var printsHiresRounding = window.JSEnvContainer.retrieve("printsHiresRounding"); var printsProportionsLimits = window.JSEnvContainer.retrieve("printsProportionsLimits"); var printsPriceRounding = window.JSEnvContainer.retrieve("printsPriceRounding"); var priceTargetIDsVAT = ["printPriceVAT"]; var priceTargetIDsNoVAT = ["printPriceNoVAT"]; var maxDimensionsTargetIDs = [{x: "printsMaxHiresWidth", y: "printsMaxHiresHeight"}]; var resizeInputs = [{inputX: "printX", inputY: "printY"}]; // inputy, kam se zapisují velikosti hiresu var widthAndHeightElms = [{x: "printsWidthHeadline", y: "printsHeightHeadline"}]; // elementy obsahující jen číslo s rozměry (bez jednotek) var GUI = new printsGUI(priceTargetIDsVAT, priceTargetIDsNoVAT, maxDimensionsTargetIDs, resizeInputs, widthAndHeightElms); // objekt pro ovládání detailu snímku v maintabu prints var printsDetailObject = new printsDetail(imageID, defaultLargePxSizes, GUI, printsHiresRounding, printsPriceRounding, printsProportionsLimits); /** * listenery na manuální změnu velikostí */ SZN.Events.addListener( SZN.gEl('printX'), 'change', printsDetailObject, 'manualResizeX'); SZN.Events.addListener( SZN.gEl('printY'), 'change', printsDetailObject, 'manualResizeY'); /** * listenery na manuální změnutypu tisku */ var printTypeParent = SZN.Dom.getElementsByClass("imageDetailCenterDetail", SZN.gEl("imageDetailImageDataTable")); var printTypeElms = printTypeParent[0].getElementsByTagName("input"); for (var i = 0; i < printTypeElms.length; i++) { SZN.Browser.client == "ie" && SZN.Events.addListener( printTypeElms[i], 'click', printsDetailObject, 'pushPrintsType') || SZN.Events.addListener( printTypeElms[i], 'change', printsDetailObject, 'pushPrintsType'); } /** * listenery na manuální změnu přepravy */ var transportParent = SZN.gEl("transportationPrints"); var transportElms = transportParent.getElementsByTagName("input"); for (var i = 0; i < transportElms.length; i++) { SZN.Browser.client == "ie" && SZN.Events.addListener( transportElms[i], 'click', printsDetailObject, 'pushTransport') || SZN.Events.addListener( transportElms[i], 'change', printsDetailObject, 'pushTransport'); } // navěsíme observery SZN.signals.addListener(printsDetailObject, 'change', "eventHandler", sManager); //printsDetailObject naslouchá změnám posuvníku SZN.signals.addListener(sManager, "controll_input_update", "eventHandler"); //pro změnu ceny SZN.signals.addListener(printsDetailObject, "sheetResize", "eventHandler", sManager); //pro změnu ceny SZN.signals.addListener(sManager, "controll_sheets_limit", "eventHandler", printsDetailObject); //pro skrývání listů // Listenery pro objednávku SZN.Events.addListener(SZN.gEl("orderImageButtonPrints"), 'click', window, function(e){ startPrintsOrder(imageID, SZN.JSON.stringify(printsDetailObject.getOrderParams())); }); window.clearInterval(timer) && delete timer; }; // obejdeme pomalé načítání obrázku, když onload // neproběhne a thumb má 15px výšku if (printsDetail) { var timer = window.setInterval(start, 300);} }); /** * zobrazi black ucho s nabidkou na odeslani stredniho detailu mejlem ve strednim nahledu */ function sendLargeByEmailForm(element, objectID) { blackPopupOpen(element,'/image/showSendLargeByEmailForm/'+objectID,"Send by email",380,"left","bottom","absolute","layout",0,0,true); } /** * ajax ktery vola kontroler pro odeslani mejlu se strednim nahledem */ function sendLargeByEmail(objectID, subject, message) { var url = "/image/sendLargeByEmail"; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("txt"); XHR.setMode("async"); XHR.setPostData("objectID="+objectID+"&subject="+subject+"&message="+message); XHR.send(url, window, 'sendLargeByEmailCallback'); } /** * callback k odeslani stredniho nahledu * pouze zavre to black ucho */ function sendLargeByEmailCallback(response, status) { if(status==200) { hideBlackPopup(); } else { alert("Bad request!"); } }