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...
";
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