/* *@modul topkos.js obsahuje objektovu strukturu pre javascriptovu podporu shopu *@autor : Balvon Michal 2004 *@version : 2.0.0007 **/ /*+-----------------------------------------------------------------------+*/ /*| trieda TAlerts obsahuje obsluhu textov vypisov - podpora jazmut... |*/ /*+-----------------------------------------------------------------------+*/ function TAlerts(){ this.onexit = 'V nákupním košíku se nachazí stále neobjednané zboží.'; //'V nákupním košíku se nachazí stále neobjednané zboží.'; this.emptybasket = 'Nakupny kosik je prazdny'; //'Nakupny kosik je prazdny'; this.onbuy = 'Zboží bylo přidáno do nákupního košíku.'; //'Zboží bylo přidáno do nákupního košíku.'; this.onCountChange = 'Množství zboží v nákupním košíku bylo změneno.'; //'Množství zboží v nákupním košíku bylo změneno.'; // vypisy pre kontrolu formulara o zakaznikovi je zatial priamo v kode Control metody TCustomer-a this.WrongName = 'Vyplňte: Jméno'; this.onminquanterr = 'Nebyla dodržena podmínka stanoveného minimálního množství'; // vypis, ak nie je splnena podmienka minimalneho odberu this.onmultiplequanterr = 'Nebyla dodržena podmínka stanoveného násobku množství'; // vypis, ak nie splnena podmienka nasobku odberu } /*+----------------------------------------------------------------+*/ /*| trieda TCustomer predstavuje zakaznika prihlaseneho do systemu |*/ /*+----------------------------------------------------------------+*/ function TCustomer(doc){ /*--------------------*/ /* vlastnosti objektu */ /*--------------------*/ this.NameParametre = Array('firstnameD','surnameD','streetD','cityD','pscD','stateD','firstnameF','surnameF','streetF','cityF','pscF','stateF','email','firma','ico','dic','cu','fax','tel','info','platba','odber','SMSemailInfo'); this.Parametre = Array(); for(var i=0;i"+this.Parametre[i]+"" } xml += ""; return xml; }; // koniec metody GetXml } //<- koniec triedy TCustomer /*+-----------------------------------------------------------+*/ /*| trieda TComodite - objektov jednotlivych komodit v kosiku |*/ /*+-----------------------------------------------------------+*/ function TComodite(id,com,pocet,some_value){ /*--------------------*/ /* vlastnosti objektu */ /*--------------------*/ this.cena = 0; if(com.length>0){ for(var i=0;i0) slevy[slevy.length] = this.sleva; //alert(this.sleva_akce.length); for(i=0;i parseInt(this.pocet))){ slevy[slevy.length] = this.sleva_akce[i][2]; //alert(this.sleva_akce[i][2]); } } return slevy; }; /*+-----------------------------------------------------+*/ /*| metoda vyhodnoti pole zliav podla zadaneho pravidla |*/ /*+-----------------------------------------------------+*/ this.Select_sleva_by_rule = function(slevyArr,rule){ if(rule = 'max') return this.GetMaxFromArray(slevyArr); if(rule = 'aritm') return this.GetAritmeticFromArray(slevyArr); if(rule = 'sum') return this.GetSumFromArray(slevyArr); }; /*+---------------------------------------+*/ /*| metoda najde maximalnu hodnotu v poli |*/ /*+---------------------------------------+*/ this.GetMaxFromArray = function(arr){ var max = arr[0]; for(i=0;i parseFloat(max)) max = arr[i]; } return max; }; /*+------------------------------------------+*/ /*| metoda vypocita aritmeticky priemer pola |*/ /*+------------------------------------------+*/ this.GetAritmeticFromArray = function(arr){ var sum = 0; for(i=0;i 0) return false; else return true; }; /** * metoda GetComoditByParam - vyhleda zbozi podle parametru (vyhleda prvni) * @param param_name nazev parametru * @param param_value hodnota parametru */ this.GetComoditByParam = function(param_name,param_value){ for(i in this.Basket){ comodit = this.Basket[i]; value = comodit.GetValue(param_name); if(value == param_value) return comodit; } return false; } /** * metoda GetComoditById vraci objekt TComotid polozky kosiku, pokud existuje podle daneho id * @param id identifikator zbozi */ this.GetComoditById = function(id){ var i = this.IsInBasket(id); if(i != -1) return this.Basket[i]; else return false; } /*+----------------------------------------------------------+*/ /*| metoda AddComodit - pridanie polozky do nakupneho kosika |*/ /*+----------------------------------------------------------+*/ this.AddComodit = function(f,pocet,some_value){ this.head.ReadData(this.doc.head,this.doc.headAtr); this.readHeadArr(this.doc.head); this.readHeadAtr(this.doc.headAtr); id = f.ID.value; var com = new Array(); var poc = 0; for(var i=0;i 0){ for(var i = 0; i < this.Basket.length; i++) { if(this.Basket[i].id == paID) vystup = i; } } return vystup; }; /*-------------------------------------------------*/ /* metoda RemoveComodit odstrani komoditu z kosika */ /*-------------------------------------------------*/ this.RemoveComodit = function(id,reloadPage){ //alert('Naozaj?'+id); var n = this.IsInBasket(id); //alert(id+' '+n); if(n != -1) { this.ChangeCost(id,this.Basket[n].pocet,'-'); row_name = 'row_'+n; row_obj = this.doc.getElementById(row_name); this.removed++; if(row_obj != null) row_obj.id += '_rem'+this.removed; for(var i=n+1;i 0 && this.basket_control) { if(clear != 0)this.ClearBasket(); return this.alerts.onexit; } }; /*+-------------------------------------------------------------------------------------------------------+*/ /*| metoda GetCount - vyhlada v kosi polozku so zadanym ID a ak ju najde, vrati jej pocet v kosi, inak 1 |*/ /*+-------------------------------------------------------------------------------------------------------+*/ this.GetCount = function(f,id){ var navrat = this.presetCount; var n = this.IsInBasket(id); if(n!=-1) return this.Basket[n].pocet; /* this.readHeadArr(this.doc.head); this.readHeadAtr(this.doc.headAtr); MQ = ''; MuQ = ''; for(var i=0;i= MQ)) navrat = MuQ; if((MQ!='' && MuQ != '') && (MQ % MuQ != 0) && (MuQ < MQ)) { pom = MuQ; i = 1; while (pom < MQ) {pom = MuQ*i; i++} navrat = pom; } if((MQ!='' && MuQ != '') && (MQ % MuQ == 0)) navrat = MQ; if((MQ=='' && MuQ != '')) navrat = MuQ; if((MQ!='' && MuQ == '')) navrat = MQ; */ return navrat; }; // <- koniec metody GetCount /*+-----------------------------------------------------------------------------------------------------------------+*/ /*| metoda ClearBasket - vicisti cely nakupny kosik - odstrani vsetky polozky kosika a znovu nainicializuje tributy |*/ /*+-----------------------------------------------------------------------------------------------------------------+*/ this.ClearBasket = function(){ this.CostArr.length = 0; this.DphArr.length = 0; this.Dphs.length = 0; this.Basket.length = 0; this.Acount = 0; this.Acountbezdph = 0; }; //<- koniec metody ClearBasket this.OnSendOrder = function(){ alert('Objednávka byla úspěšně odeslána'); this.ClearBasket(); }; /* zaokruhlovanie a formatovanie */ /*+-----------------------------------------------------------------------------------------+*/ /*| zaokruhli dph na 1 des miesta a oddeli tisice medzerou, doplni nuly do dvoch des. miest |*/ /*+-----------------------------------------------------------------------------------------+*/ this.SetDPH = function(value){ var pom_val = parseFloat(value); vysl = Math.round(pom_val*10)/10; var str = new String(''); str += vysl; var ind = str.indexOf("."); if (ind == -1 ) str += '.00'; if (ind == (str.length-2)) str += '0'; // doplnim vyrezanie tisicok - oddelenie medzerou ind = str.indexOf("."); if (ind>-1){ var des = str.substr(ind); var cel = str.substr(0,ind); } else { var des = new String(' '); var cel = str; } if(cel.length>3){ pom_end = cel.substr(cel.length-3); pom_begin = cel.substr(0,cel.length-3); // alert('cel='+cel+'str='+str+'beg='+pom_begin+'end='+pom_end); str = pom_begin + ' ' +pom_end + des; } return str; }; /*+-----------------------------------------------------------------------+*/ /*| metoda SetAcount formatuje vstupnu hodnotu oddelenim tisicov medzerou |*/ /*+-----------------------------------------------------------------------+*/ this.SetAcount = function(value){ value = parseFloat(value); value = Math.round(value); value = parseInt(value); //value = floor(value); str = new String(); str += value; ind = str.indexOf("."); if (ind>-1){ var des = str.substr(ind); var cel = str.substr(0,ind); } else { var des = new String(''); var cel = str; } if(cel.length>3){ pom_end = cel.substr(cel.length-3); pom_begin = cel.substr(0,cel.length-3); // alert('cel='+cel+'str='+str+'beg='+pom_begin+'end='+pom_end); str = pom_begin + ' ' +pom_end + des; } return str; }; this.SetCena = function(value){ return this.SetAcount(value); }; this.SetReducePercent = function(value){ value = Math.round(value); return value; }; this.SetReduceAbsolut = function(value){ value = Math.round(value); return value; }; this.IsGreater = function(numb){ if(this.Acount > numb) return false; else return true; }; this.CountInBasketIsGreater = function(numb){ if(this.Basket.length > numb) return true; else return false; }; /*+------------------------------------------------------+*/ /*| metoda zisti ci si uz pamatam premennu s nazvom name |*/ /*+------------------------------------------------------+*/ this.IsRemembered = function(name){ for(i in this.RemembersNames){ if(this.RemembersNames[i] == name) return i; } return -1; }; // koniec metody IsRemembered /*+----------------------------------------------------------------+*/ /*| metoda RememberValue si zapameta lubovolnu hodnotu a jej nazov |*/ /*+----------------------------------------------------------------+*/ this.RememberValue = function(name,value){ n = this.IsRemembered(name); if(n == -1) { this.RemembersNames[this.RemembersNames.length++] = name; this.RemembersValues[this.RemembersValues.length++] = value; } else { this.RemembersValues[n] = value; } }; // koniec metody remeber value /*+---------------------------------------------------------------+*/ /*| metoda GetRemebered vracia zapamatanu hodnotu podla mena pola |*/ /*+---------------------------------------------------------------+*/ this.GetRemembered = function(name){ for(i in this.RemembersNames){ if(this.RemembersNames[i] == name) return this.RemembersValues[i]; } return -1; }; // koniec metody Remembered /*+-------------------------------------------------------------------------------------------+*/ /*| metoda ShowDopravne prida dopravne do kosiku s textami definovanymi vo formulari dopravne |*/ /*+-------------------------------------------------------------------------------------------+*/ this.ShowDopravne = function(){ id = this.doc.dopravne.ID.value; maxCostToAdd = this.doc.dopravne.maxCostToAdd.value; nazev = this.doc.dopravne.NAZEV.value; dph = this.doc.dopravne.DPH.value; kod = this.doc.dopravne.KOD.value; cena = this.doc.dopravne.CENA.value; cena1 = this.doc.dopravne.CENA1.value; cena2 = this.doc.dopravne.CENA2.value; cena3 = this.doc.dopravne.CENA3.value; cena4 = this.doc.dopravne.CENA4.value; cenasdph = cena + cena*dph/100; this.dopravneID = id; platbaText = this.GetRemembered('platbaText'); // pos = platbaText.search("("); // platbaText = platbaText.substr(0,pos); odberText = this.GetRemembered('odberText'); // pos = odberText.search("("); // odberText = odberText.substr(0,pos); if(platbaText!=-1 && odberText!=-1) nazev += '
'+platbaText+', '+odberText; // 0005 - podminka na -1 var com = new Array(); com[0] = Array("ID",id); com[1] = Array("Cena",cena + cena*dph/100); // cena s dph com[2] = Array("Nazev",nazev); com[3] = Array("DPH",dph); com[4] = Array("Kod",kod); com[5] = Array("Cenabezdph",cena); // cena bez dph //<- vypocet vysky dopravneho try{ com[5][1] = this.topFrame.GetDopravne(this,cena,cena1,cena2,cena3,cena4,this.Acount,maxCostToAdd); } catch(E) { alert('Program nanasel funkci GetDopravne'); return false; } com[1][1] = com[5][1] + com[5][1]*dph/100; var max = this.Basket.length; dopravne = new TComodite(id,com,1); this.Basket[max] = dopravne; if(this.CostArr[dph] == null) this.CostArr[dph] = 0; if(this.DphArr [dph] == null) { this.DphArr [dph] = 0; this.Dphs [this.Dphs.length++] = dph; } this.ChangeCost(id,1,'+',1); } // koniec metody ShowDopravne /*+------------------------------------------------+*/ /*| metoda HideDopravne odoberia dopravne z kosiku |*/ /*+------------------------------------------------+*/ this.HideDopravne = function(){ id = this.dopravneID; this.RemoveComodit(id,'0'); this.dopravneID = -1; } // koniec metody HideDopravne /*+-----------------------------------------------------------------------------------------------------------------------------+*/ /*| metoda ChangeDopravne - meni hodnotu dopravneho na zaklade zmeny dopr. podmienok a na zaklade id buniek meni aj zobrazovane |*/ /*| hodnoty v sumary, teda okrem ceny dopravneho aj celkovu cenu a polozky dph |*/ /*+-----------------------------------------------------------------------------------------------------------------------------+*/ this.ChangeDopravne = function(){ this.ShowDopravne(); var n = this.IsInBasket(this.dopravneID); if(n != -1){ /* this.head.Reset(); do{ if(this.head.currName != null) { ida = this.head.GetAttribute('ida'); if(ida != null) {} //alert('ida = '+ida+' : '+this.head.currName); } } while(this.head.Next()); */ // vyplneni radku dopravneho this.SetCells(n); //alert('ida ='+this.GetHeadAtr('nazev','screen')); } this.HideDopravne(); } // koniec metody ChangeDopravne /*+-----------------------------------------------------------------------------------------------------+*/ /*| metoda SetCells se stara o nastaveni hodnot tabulky zobrazeneho kosiku - jedneho radku - parametr n |*/ /*+-----------------------------------------------------------------------------------------------------+*/ this.SetCells = function(n){ if(this.Basket[n] != null){ cellName = 'anch_id4'+n; cell = this.doc.getElementById(cellName); if(cell != null) cell.innerHTML = this.GetValueOfBasket(n,'Nazev'); cellName = '_id5'+n; cell = this.doc.getElementById(cellName); if(cell != null) cell.innerHTML = this.SetDPH(this.Basket[n].novacena); cellName = 'span_id9'+n; // span v order cell = this.doc.getElementById(cellName); if(cell != null) cell.innerHTML = this.SetDPH(this.Basket[n].novacena*this.Basket[n].pocet) + ' Kč'; // vyplneni dph this.SetDphTable(n); } // v pripade ze pocet v kosi je nastaven na nula - schovani radku, pripadne celeho kose if(!this.EmptyBasket()){ row_name = 'row_'+n+'_rem'+this.removed; row_obj = this.doc.getElementById(row_name); if(row_obj != null) row_obj.style.display = "none"; this.SetDphTable(n); } else { this.doc.getElementById('maindiv').style.display="none"; this.doc.getElementById('odkaz').style.display="block"; } }; // koniec metody SetCells /*+----------------------------------------------------------+*/ /*| metoda SetDphTable nastvi hodnoty v tabulce dph v kosiku |*/ /*+----------------------------------------------------------+*/ this.SetDphTable = function(n){ for(i=0;i'); this.doc.write(''); for(i in this.Basket){ this.doc.write(''); this.doc.write(''); } this.doc.write(''); this.doc.write(''); }; // konec metody WriteContentOfBasket /*+-----------------------------------------------------------------+*/ /*| metoda ReloadBasket inicializuje znovunacitani nakupniho kosiku |*/ /*+-----------------------------------------------------------------+*/ this.ReloadBasket = function(){ window.workWindow.location = "sys.php?action=shop_reload_basket&typ=&PHPSESSID="+this.GetRemembered('PHPSESSID'); }; // metoda znovu nacita nakupni kosik - da pokyn workWindow k praci /*+-----------------------------------------------------------+*/ /*| metoda WriteDphData se stara o vypis skrytych polozek dph |*/ /*+-----------------------------------------------------------+*/ this.WriteDphData = function(){ for(i in this.Dphs){ if(this.Dphs[i] == this.lowDph) j = 0; if(this.Dphs[i] == this.highDph) j = 1; this.doc.write(''); this.doc.write(''); this.doc.write(''); } } // konec metody - 0004 /*+------------------------------------------------------------------------------------+*/ /*| metoda SetDphs - nastaveni hodnot spodni a vrchni dph podle ucetniho systemu statu |*/ /*+------------------------------------------------------------------------------------+*/ this.SetDphs = function(lowDph,highDph){ this.lowDph = lowDph; this.highDph = highDph; } // konec metody SetDphs /** +----------------------------------------------------------------------------------------------------------------+ * metoda vraci celkovu hodnotu za danu uroven dph *par dphindex - index hodnoty dph v poli this.Dphs */ this.GetAcountForDph = function(dphindex){ var ground = this.CostArr[this.Dphs[dphindex]]; ground = Math.round(ground*10)/10; dphvalue = this.DphArr[this.Dphs[dphindex]]; dphvalue = Math.round(dphvalue*10)/10; acount = parseFloat(ground)+parseFloat(dphvalue); return acount; } /** +----------------------------------------------------------------------------------------------------------------+ * metoda SetPresetCount - nastaveni prednastavene hodnoty poctu */ this.SetPresetCount = function(paCount){ this.presetCount = paCount; } // konec metody SetPresetCount /** * metoda testovaciho vypisu obsahu kosiku */ this.AlertBasketContent = function(){ for(i in this.Basket) { ttext=''; for(j in this.Basket[i].com) { ttext = ttext+this.Basket[i].com[j][0]+" : "+this.Basket[i].com[j][1]+"\n"; } alert('Cisl.'+i+'. id='+this.Basket[i].id+"\n"+ttext); } } }; //<- koniec triedy TShop /* * definicia objektu hlavicka THead - ktery sa zaobera spravou hlavicky * @date: 11.10.2004 **/ function THead(){ this.headArr = new Array(); // pole poloziek hlavicky this.headAtr = new Array(); // pole vlastnosti hlavicky this.currently = 0; // ukazatel do pola headArr this.currName = ''; // aktualne meno polozky hlavicky (elementu) /*+-----------------------------+*/ /*| nacita vsetky data hlavicky |*/ /*+-----------------------------+*/ this.ReadData = function(fArr,fAtr){ this.headArr.length = 0; this.headAtr.length = 0; this.readHeadArr(fArr); this.readHeadAtr(fAtr); this.Reset(); } // koniec metody ReadData /*+---------------------------------------------------+*/ /*| metoda readHeadArr nacita pole struktury hlavicky |*/ /*+---------------------------------------------------+*/ this.readHeadArr = function(f){ for(var i=0;i