/** * detekuje element na online objednavce kterej v sobe ma metodu pro zakladni nastaveni parametru prvniho kroku objednavky * kazdej produkt se totiz ze zacatku obslouzi trochu jinak */ function nacteniCenikuAPArametruObjednavky() { if(SZN.gEl('RMspocitano')) { //nacteni RM kalulacky rmKalkulackaAjax(); } else { //nacteni RF objednavky obsluha = SZN.gEl('JSprepocitaniCeniku'); if(obsluha) { params = eval(obsluha.value+'()'); } if(document.getElementById('vseobecnePodminkyOnline')) parseTermsFromRegistration(); if(document.getElementById('world_countries_selectbox') && !document.getElementById('vat_id_input')) setVatDialog(); } } /** * cenik pro image detail a take pro RF dialog */ var allowedOrderSizes = new Array(); //tmp pro zpozdene povolovani checkboxu onDomReady function ajaxAvailability() { if(!document.getElementById('ordersTable')) return ; //doplneni loading var tablePrices = SZN.Dom.getElementsByClass("imageDetailSizesTableBodyPrice"); var cellCount = tablePrices.length; for(var i=0; i < cellCount; i++) { tablePrices[i].innerHTML = "loading...";; } lockOrderSizes(); try { var id = SZN.gEl('userJurnal').options[SZN.gEl('userJurnal').selectedIndex].value; } catch(e) { var id = 0; } try { promo = (arguments[0]) ? arguments[0] : ''; var url = "/image/ajax_availability/" + id + "/" + SZN.gEl('id_o').value+'/'+promo; if(promo!='') validateCreativePromoCode(promo,'validatePromoCodeCallback'); } catch(e) { alert(e); } var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("xml"); XHR.setMode("async"); XHR.send(url, window, 'ajax_availability_callback'); } /** * Asunchronni Doplneni dostupnosti. */ function ajax_availability_callback(response,status) { allowedOrderSizes = new Array(); if (status == 200) { if(!document.getElementById('ordersTable')) return ; //doplneni dostupnosti a cen var xmlDoc = response; var table = document.getElementById('ordersTable'); var lichasuda = 'rowOdd'; for(i=0;i < table.rows.length ;i++) { try { //neprojizdet ceny receptu if(table.rows[i].id && table.rows[i].id.search(/size_[a-z]+_recipe+/) < 0) { id = table.rows[i].id; var chkID = 'tb_' + id ; var availID = 'avail_' + id ; if(xmlDoc.getElementsByTagName(id).length>0) { neco = xmlDoc.getElementsByTagName(id)[0].childNodes; for(j=0; j < neco.length;j++) { if(neco[j].nodeName == 'price') { if (SZN.Browser.client == "ie") { price = neco[j].text; } else { price = neco[j].textContent; } } if(neco[j].nodeName == 'availability') { if (SZN.Browser.client == "ie") { availability = neco[j].text; } else { availability = neco[j].textContent; } } if(neco[j].nodeName == 'availabilityCode') { if (SZN.Browser.client == "ie") { availabilityCode = neco[j].text; } else { availabilityCode = neco[j].textContent; } } } } else { price = 0; } /* zkativneni chk boxu u nenulove ceny .*/ if (SZN.gEl('type_u').value == 'editorial' && SZN.gEl('userJurnal').value != 0 ) { if(availabilityCode > 0) //nova verze. neobjednavat nedostupne velikosti s kodem 0 !!! { allowedOrderSizes.push(chkID); //u editorial zakaznika je velikost vzdy mozne objednat. } } else if (price !='' && price!=null) //u ostatnich zakazniku je mozne objednat poze velikost s definovanou cenou. { allowedOrderSizes.push(chkID); } else { table.rows[(i+1)].className = table.rows[i].className; //prehozeni classy na dalsi radek aby se stridaly pruhy table.rows[i].style.display='none'; //schovani radku bez ceny lichasuda = (lichasuda == 'rowEven') ? 'rowOdd' : 'rowEven'; } lichasuda = (lichasuda == 'rowEven') ? 'rowOdd' : 'rowEven'; table.rows[i].className=lichasuda; SZN.gEl(availID).value = availabilityCode; //barevne odliseni dostupnosti jen pro editorialni zakazniky var classC = ''; if(SZN.gEl("type_u").value == 'editorial'){ if(availabilityCode == 1 || availabilityCode == 0) { classC = 'red'; }else if(availabilityCode == 2){ classC = 'green'; } } table.rows[i].cells[3].innerHTML = price; table.rows[i].cells[2].innerHTML = availability; SZN.Dom.addClass(table.rows[i].cells[2],classC); if(SZN.gEl(chkID).checked==true) { SZN.Dom.addClass(table.rows[i],"trSizesChecked"); } search = SZN.gEl(chkID).id.search('hideCheckbox'); if(search>-1) { SZN.gEl(chkID).style.display='none'; } } } catch(e) {} } } unlockOrderSizes(); } /** * prepocet ceniku obrazu na miru do online dialogu pri zadavani promo kodu */ function rmPromoPrepocitani() { promo = (arguments[0]) ? arguments[0] : ''; if(promo!='') validateCreativePromoCode(promo,'validatePromoCodeCallback'); paramsB64 = SZN.gEl('cenikParamsB64'); if(paramsB64) { getCenaParamsB64(paramsB64.value,promo); } } /** * povoleni objednacich checkboxu onDomReady. */ function unlockOrderSizes() { for(i=0;i< allowedOrderSizes.length;i++) { SZN.gEl(allowedOrderSizes[i]).disabled = 0; } } /** * zakazani objednacich checkboxu onDomReady. */ function lockOrderSizes(){ var tableT = document.getElementById('ordersTable'); for(i=0;i < tableT.rows.length;i++) { var id = tableT.rows[i].id; var chkID = 'tb_' + id ; try{ if(SZN.gEl(chkID)) { SZN.gEl(chkID).disabled = 1; if(SZN.gEl('userJurnal') && SZN.gEl('userJurnal').value == 0) SZN.gEl(chkID).checked = 0; } } catch(e){} } } /** * Oznacovani v tabulce velikosti. */ function selectCheckedSizeRow(e) { if(arguments[1]) selectCheckedSizeRowOnline(e,1,arguments[1]); else selectCheckedSizeRowOnline(e,1); } /** * oznacovani v tabulce velikosti pri online objednavce, * rozdil je v tom ze checkbox nelze odskrtnout pouze zmenit na jinej */ function selectCheckedSizeRowOnline(e,umoznitOdebrani) { try { if(arguments[2]) //bylo predano primo id po kliknuti na table row { var rowID = arguments[2]; } else //zjisteni id z eventu po kliknuti primo na checkbox { var rowID = SZN.Events.getTarget(e).id; } if(SZN.gEl(rowID).disabled == false) { if(umoznitOdebrani==0) { unselectAllSizes(); } if (SZN.gEl(rowID).checked != true) { unselectAllSizes(); SZN.gEl(rowID).checked = true; //oznaceni checkboxu , pokud je aktivni } else { SZN.gEl(rowID).checked = false; } } /* zvyrazneni radku s oznacenou velikosti */ rowID = rowID.replace('tb_',''); var row = SZN.gEl(rowID); SZN.Dom.addClass(row,"trSizesChecked"); } catch(e){} } /** * odznaceni checkboxu vsech objednacich velikosti. */ function unselectAllSizes() { 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.Dom.removeClass(table.rows[i],'trSizesChecked'); //zruseni zvyrazneneho radku SZN.gEl(chkID).checked = false; } } catch(e) {} } } /** * pouzivam pro licencni podminky v online nakupnim dialogu * stahuje to licencni podminky z registracniho dialogu at to neni dvakrat */ function parseTermsFromRegistration() { url = '/registration/terms'; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("plain"); XHR.setMode("async"); XHR.send(url, window, 'parseTermsFromRegistrationCallback'); } function parseTermsFromRegistrationCallback(response, status) { if (status == 200) { document.getElementById('vseobecnePodminkyOnline').innerHTML = response; document.getElementById('vseobecnePodminky').style.display='block'; document.getElementById('vseobecnePodminky').style.height='50px'; } } /** * slouzi pro validaci prvniho nejhorsiho kroku online kreativni objednavky * kontroluje email, cenu, promo kod,....... * nasledne vola dalsi krok objednavky pomoci metody RFOrderDialog */ function RFValidateFirstPage() { showAjaxLoader('rf-motak'); skrytRFhlasky(); //skryju vsechny upozornujici hlasky smazPredvytvoreneElementy(); //odmazou se vsechny elementy vytvorene predchozi nedokoncenou objednavkou objectID = (SZN.gEl('RFobjectID')) ? SZN.gEl('RFobjectID').value : false; //detekce zvoleneho objectID if(objectID==false) //pokud neni objektID coz by se stat nemelo tak vyhodim hlasku aby me to zdvihlo z prdele driv nez zakaznika { alert('Can\'t find objectID'); //tohle by se stat nemelo je to tu jen kdyby to nahodou volal nekdo od nekud jinud return false; } //obsluzna metoda jestli je teda nejaka potreba pro dalsi paramametry jednotlivych produktu params = false; obsluha = SZN.gEl('JSparametryCeniku1krok'); if(obsluha) { params = eval(obsluha.value+'()'); } if(document.getElementById('RFtypzakaznika')) //jestli je to guest, zobrazim kolonku s emailem a souhlasem s podminkama { email = (SZN.gEl('RFemail')) ? SZN.gEl('RFemail').value : false; if(email==false) { SZN.gEl('RFemailNotValid').style.display = 'block'; } else //pokud to neni guest tak zobrazim zadani promo kodu { var regex = new RegExp(/([^ ,()<>\*\!\"\n]+)@([^ ,()<>\*\!\"\r\n]+)\.([^ ,()<>\*\!\"\r\n\.]+[A-Za-z])/g); if ((email.search(regex) == null) || (email.search(regex) == -1)) { SZN.gEl('RFemailNotValid').style.display = 'block'; email = false; } } if(email!=false) //ulozim email do session pro dalsi pouziti { saveEmail(email); } souhlas = (SZN.gEl('agreeTAC') && SZN.gEl('agreeTAC').checked==true) ? true : false; if(souhlas==false) { SZN.gEl('RFdontAgree').style.display = 'block'; } } else //neni to guest ukazu promo kod kolonku { promoCode1 = (SZN.gEl('promoCode')) ? SZN.gEl('promoCode').value : false; if(document.getElementById('cr_promo_code')) { document.body.removeChild(document.getElementById('cr_promo_code')); } inp = document.createElement('input'); inp.setAttribute('type','hidden'); inp.setAttribute('id','cr_promo_code'); inp.value = promoCode1; document.body.appendChild(inp); if(promoCode1!=false && promoCode1!='') { fce = SZN.gEl('JSprepocitaniCeniku').value; eval(fce+"(promoCode1)");//prepocitani cen podle daneho promo kodu } } finalCustomer = (SZN.gEl('RFfinalCustomer')) ? SZN.gEl('RFfinalCustomer').value : false; if(document.getElementById('cr_final_customer')) { document.body.removeChild(document.getElementById('cr_final_customer')); } inp = document.createElement('input'); inp.setAttribute('type','hidden'); inp.setAttribute('id','cr_final_customer'); inp.value = finalCustomer; document.body.appendChild(inp); //vykresleni vyberu zeme zemeID = (SZN.gEl('world_countries_selectbox')) ? SZN.gEl('world_countries_selectbox').options[SZN.gEl('world_countries_selectbox').selectedIndex].value : false; if(zemeID != false) { saveOnlineZemeID(zemeID); //ulozeni zeme do session pro dalsi pouziti } //vykresleni kolonky pro DIC pouze u zemi ktere nejsou v EU, je to vyvolano metodou onchange na selectboxu se zemema dic = (SZN.gEl('vat_id_input') && SZN.gEl('vat_id_input').style.display!='none') ? SZN.gEl('vat_id_input').value : ""; if(dic!="" && dic.substring(0,2).toUpperCase()!=zemeID.toUpperCase()) { SZN.gEl('RFinvalidVAT').style.display = 'block'; } else { validateDic(dic); //validace DIC pomoci serveru EU } //detekce platebni metody a ulozeni do hiden inputu savePaymentMethod(); if(zadneRFhlasky() == true) //detekce upozornujicich hlasek pokud zadne nejsou pokracujem v dalsim dialogu RFOrderDialog(objectID,params,2); hideAjaxLoader('rf-motak'); } /** * pokud kupuju RF tak je zobrazen v online nakupu znovu cenik pro moznost zmeny vybrane velikosti * tato funkce detekuje konecnou vybranou velikost */ function RFdetekceVybraneVelikostiZCeniku() { velikosti = (SZN.gEl('RFobjectID')) ? SZN.gEl('ordersTable') : false; //nacteni hodnot z tabulky velikosti velikost = false; if(velikosti!=false) { checkboxy = velikosti.getElementsByTagName('input'); for(i=0; i < checkboxy.length; i++) //zjisteni zvolene velikosti { if(checkboxy[i].type == 'checkbox' && checkboxy[i].checked==true) { velikost = checkboxy[i].value; } } } return velikost; } /** * detekce platebni metody a ulozeni do docasneho inputu */ function savePaymentMethod() { inp = document.getElementsByTagName('input'); typ = "proforma"; for(i=0; i < inp.length; i++) { if(inp[i].name == 'payonline_services' && inp[i].checked==true) { typ = inp[i].value; } } if(document.getElementById('cr_payment_method')) { document.body.removeChild(document.getElementById('cr_payment_method')); } inp = document.createElement('input'); inp.setAttribute('type','hidden'); inp.setAttribute('id','cr_payment_method'); inp.value = typ; document.body.appendChild(inp); } /** * schova vsechny cervene hlaseni v popupu s RF objednavkou */ function skrytRFhlasky() { spany = document.getElementsByTagName('span'); for(i=0; i < spany.length; i++) { if(spany[i].className == 'RFskryteHlasky') spany[i].style.display = 'none'; } } /** * schova cervena hlaseni ktere nevadi validaci v popupu s RF objednavkou, zatim jen ze promo code je spravny */ function skryjHlaskyKtereNevadiValidaci() { if(SZN.gEl('RFpromoValid')) { SZN.gEl('RFpromoValid').style.display='none'; } } /** * seznam pomocnych elementu ktere se postupne vytvarej na strance pro hladky prubeh RF objednavky * ale je potreba je odstranit v pripade ze objednavka nedojede az do konce a nikdo mezi dalsi neobnovi stranku */ function smazPredvytvoreneElementy() { try{ if(document.getElementById('cr_promo_code')) document.removeChild(document.getElementById('cr_promo_code')); if(document.getElementById('vatIDcode')) document.removeChild(document.getElementById('vatIDcode')); if(document.getElementById('cr_payment_method')) document.removeChild(document.getElementById('cr_payment_method')); } catch(e) {} } /** * kontroluje jestli jsou na objednavce viditelne nejake upozornujici hlasky */ function zadneRFhlasky() { skryjHlaskyKtereNevadiValidaci(); spany = document.getElementsByTagName('span'); for(i=0; i < spany.length; i++) { if(spany[i].className == 'RFskryteHlasky' && spany[i].style.display!='none') { return false; } } return true; } /** * kontroluje spravnost promokodu a nasledne vola predanou funkci */ function validateCreativePromoCode(promoCode,callback) { url = '/image/validatePromoCode/'+promoCode+'/1'; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("plain"); XHR.setMode("async"); XHR.send(url, window, callback); } /** * kontroluje online spravnost zadaneho dic v online objednavce */ function validateDic(dic) { url = '/payonline/validateVATID/1'; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setPostData("dic="+dic); XHR.setFormat("plain"); XHR.setMode("sync"); XHR.send(url, window, 'validateDicCallback'); } /** * ulozi do session vybranou zemi z prvniho kroku online objednavky */ function saveOnlineZemeID(zemeID) { url = '/payonline/saveZemeIDToSession/'+zemeID; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("plain"); XHR.setMode("sync"); XHR.send(url, null, null, null, true); } /** * ulozi do session email zadany v online objednavce */ function saveEmail(email) { url = '/payonline/saveEmailToSession/'+email; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("plain"); XHR.setMode("sync"); XHR.send(url, window, 'saveEmailCallback'); } /** * na zaklade selectboxu world_countries_selectbox z online objednavky po zmene zjisti jestli je potreba zobrazit pole pro vyplneni dic */ function setVatDialog() { wc = document.getElementById('world_countries_selectbox'); zemeID = wc.options[wc.selectedIndex].value; url = '/payonline/ajax_vat_dialog/'+zemeID; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); if(document.getElementById('vatIDcode')) XHR.setPostData("vatIDcode="+document.getElementById('vatIDcode').value); XHR.setFormat("plain"); XHR.setMode("async"); XHR.send(url, window, 'setVatDialogCallback'); } function setVatDialogCallback(response,status) { if(status==200) { SZN.gEl('dotazNaVat').innerHTML = response; } } function validateDicCallback(response, status) { if(status==200) { if(response == 0 || response != 1) { SZN.gEl('RFinvalidVAT').style.display = 'block'; if(response != 1 && response!=0) SZN.gEl('RFinvalidVAT').innerHTML = response; } } } function validatePromoCodeCallback(response, status) { SZN.gEl('RFpromoValid').style.display = 'none'; SZN.gEl('RFpromoNotValid').style.display = 'none'; if(status == 200) { if(response == 1) { SZN.gEl('RFpromoValid').style.display = 'block'; } else { SZN.gEl('RFpromoNotValid').style.display = 'block'; } } } function saveEmailCallback(response, status) { if(status==200) { if(response==0) { alert('Cannot save email'); } else if(response!=1) //existujici uzivatel { SZN.gEl('RFemailNotValid').style.display = 'block'; SZN.gEl('RFemailNotValid').innerHTML = response; } } } function openPeaksCompetetionFromDetail() { window.opener.openPeaksCompetetion(); window.close(); } /** * zobrazi popup s detaily PDF * * prep = 0 : id = serieID * prep = 1 : id = objectID */ function openPDFLayouts(id,prep) { if(prep == 0) { var url = '/serie/showPDFLayouts/' + id; } else { var url = '/serie/showPDFLayoutsFeatures/' + id; } // otevreni noveho popup okna var left = (screen.width - 700) / 2; var top = (screen.height - 650) / 2; var parameters = 'width=740,height=500,toolbar=no,menubar=no,locationbar=no,resizable=yes,scrollbars=yes,top=' + top + ',left=' + left; window.open(url, '_blank', parameters); } function parametryKrok1() { parametry = SZN.gEl('cenikParamsB64').value; if(parametry) { return parametry; } return false; } function printsPromoPrepocitani() { paramsB64 = SZN.gEl('cenikParamsB64'); if(paramsB64) { getPrintsCenaParamsB64(paramsB64.value,SZN.gEl('RFobjectID').value); } } function getPrintsCenaParamsB64(params,objectID) { params = Base64.decode(params); eval('json = ' + params); width = json['width']; height = json['height']; type = json['type']; transport = json['transport']; var url = "/rmOrder/printsPrice/"+objectID+"/"+ width +"/"+ height +"/"+ type +"/"+ transport; var XHR = new SZN.HTTPRequest(); XHR.setMethod("post"); XHR.setFormat("txt"); XHR.setMode("async"); XHR.send(url, window, "getCenaPrints"); } function getCenaPrints(ajax, status) { if(status==200) { eval('json = ' + ajax); if(SZN.gEl('cenaPrintsOrder')) { SZN.gEl('cenaPrintsOrder').innerHTML = json['priceF']; } } } /** * funkce prevede #%# a %#% na ' a " */ function simpleDecode(text){ var text = text; text = text.replace(/#%#/g,"'"); text = text.replace(/%#%/g,"\""); text = text.replace(/%@%/g,"<"); text = text.replace(/@%@/g,">"); //text = text.replace(/%@%/g,"<"); //text = text.replace(/@%@/g,">"); return text; } /** * metoda pro logovani udalosti do GA javascriptem * string logEvent = konstanta predana metodou googleAnalytics::logOnJavascript(); */ function logOnGA(logEvent) { var logEvent = logEvent; var googleLogOnDevel = window.JSEnvContainer.retrieve("googleLogOnDevel"); //na develu nelogovat if(googleLogOnDevel != 1) { var fnc = window.JSEnvContainer.retrieve("googleLogFunction"); eval(fnc + '("' + window.JSEnvContainer.retrieve(logEvent) + '")'); } } /** * spusti objednavku pres rm kalkulacku z image detailu */ function startRMcalculator(objectID) { if(typeof startRMcalculatorImageDetail == 'function') { startRMcalculatorImageDetail(objectID); } else { startRMcalculatorMain(null, objectID, 'RM', 1); closeBuyPopUp(); } return false; }