Miva, Miva Script, Miva Empresa, Miva Mia amd Miva Merchant are registered trademarks of the Miva Corporation
 
Ivo Truxa - truXoft control systems: advanced programming and custom IT solutions home / about / webdesign / Miva / automation / contact

http://mivo.truxoft.com
MIVO!
miva beyond limits

 

MIVA®  MERCHANT:  FAQ

Security / Secure Server / Secure Mode

Errors / Problems / Troubles

Packing

Look & Feel /  Customization

Email / Notifications

Server Setup and Maintenance

User Lists / General Support

This is a collection of questions I replied multiple times in the Miva Merchant User and Coder lists. On two places I completed my answers with a more accurate information posted later by a Miva Co. stuff member. The collection is just very small at the momnet, but I plan to maintain and enhance it. Please bear on mind that I am not a native English speaker and try to excuse my grammatic faults or simplified, broken English.


top

Where do I find more FAQ's?

Be sure to have researched the official collection of FAQ at  http://www.miva.com/support/faq/faq.mv. The Miva User List Archive is another excellent source of information.




top

Security / Secure Server / Secure Mode

How can I receive Credit Card numbers in the notification e-mail?

You should only send confidential data like CC numbers by e-mail if it is securely encrypted. Not using encryption for the CC# transfer violates the policies of credit institutes, laws in some states and countries and the confidence you have built at the customer when collecting his data through a secure connection. It would be paradoxal grabbibng the data securely from the customer and sending them absolutely unprotected in plain text e-mail off the server. You can use the MmPGP secure notification module for doing so securely. If you decide to pick the data manually from the batch report, be sure to access the Admin through a secure connection (https://...)! Accessing it through a non-secure http connection, exposes the data to the worl wide web. The Ultra Batch Report, unlike the Standard Batch, protects you from accidental exposure of the CC# - it shows them full only if connected via SSL. It can also export and send full batches of orders (incl. the CC#) via PGP encrypted e-mail.


top

Why am I getting 500 Internal Server Error on various pages but especailly on Secure Server?

Most probably your provider limits the use of CPU or memory in the Apache configuration file (httpd.conf). Usually it is done with the following parameters:
RLimitCPU 35 40
RLimitMEM 29000000 30000000

Note: the number may be set differently in you case, but the effect is the same - error 500, especially on long pages or in SSL mode. Ask your hosting provider to remove the limitation or move to another one.


top

When connecting to Merchant on a Secure Server, I do not see the secure symbol (lock) and my graphics is not linked through SSL. What's wrong?

First of all check if you do not use any custom graphics with absolute URLs instead of relative. So for example, if you have picture with <IMG SRC="http://mydomain.com/pic/picture.gif"..., it cannot be displayed securely. You should use <IMG SRC="/pic/picture.gif"... instead.

If your URLs are all right and you are sure you set all your secure URLs in Admin/Domain Settings/Site Configuration correctly, then most probably your server does not set properly the enironment variables. See the following instructions for the fix (from a Miva Support post to the Miva Merchant User list):

"A simple text file named 'sitevars' needs to be created which will contain the following line:
HTTPS=on
Once this is done, the configuration file for Miva Empresa will need to have a directive added to tell the engine where the sitevars file is located. This is accomplished by adding a line like the following to the conf file:
sitevars=/path/to/the/sitevars
Once this change is made and the new configuration is saved, the problem should be resolved."


top

Why I can use static documents on Secure Server, but no Miva? Why I cannot use short form Miva URLs on Secure Server?

Read the following article, you should be able to fix it on your own. If you have a miva binary in your private cgi-bin, it should be possible. You need to create own miva configuration file and setup the right directory paths for the secure VirtualHost. See details here: art0014.htm


top

I have lost the Admin password, can you help?

Sure:
  1. Download the file Merchant2/users.dbf from you Miva Data directory. The Miva Data directory may use different names depending on the setup of your host: data, mivadata, htsdata, mvdata, miva or similarly. It contains all data of your store. If you cannot find it on your server, please ask your host for assistance - some hosts make it accessible only on demand (see some examples). Use binary mode for the file transfer.
  2. Open the file in a dBase compatible editor like Access, FoxPro, dbUtils, or in this case you can use also Excel (but do not use Excel for editing most other Merchant databases - it would corrupt them).
  3. Locate the record with your login name and replace the password with this one:  11Z84oYEV4Jxk
  4. Upload the users.dbf back to the server. Use binary mode for the file transfer.
  5. Log into Admin with the temporary password  changeit  and as the very first you do in Admin, change the password to something else.



top

Errors / Problems / Troubles


top

Users get error messages saying page is not available, especially during the check out process. Why?

This problem usually appears with MSIE on SSL connection. There are some bugs in MSIE's implementation of SSL. The following link describes a work-around: ModSSL FAQ. More info about the Apache's KeepAlive configuration directive.
On heavily loaded servers, the problem could be also caused by timeouts during the connection. Moving to a more performant machine or a server with lower number of virtual domains would help, in this case.


top

How to fix missing dates in invoices and/or other places?
My graphics is broken, there are many missing pictures in Merchant. What's up?

It is caused by a buggy Merchant function that does not display any date and paths to graphic files if the system language is not specifically defined. If there is a 'language.dat' in your Merchant Data directory (typically ~/htsadata/Merchant2/language.dat, then put the following string into it:
en-US
If the file does not exist, create it.


top

Visitors report problems checking out with MSIE6.
Why MSIE6 does not accept my cookies?

By default, MSIE6 disables sending cookies to every server not having defined any privacy policy. Virtually it breaks any store not using this feature. I recommend reading the article about Privacy Policies at W3C and including the P3P call into your Merchant store's HTML header.

Either you need your host to add matching compact P3P policies into the HTTP header of your server, or you can use the MmP3P module that takes care of proper P3P policies.




top

Packing


top

How to fix a fatal error "Index 'ord_id.mvx00000001' was created with the UNIQUE flag and the key '1285' already exists in the index file"?

Delete the order XXXX as displayed in the error message (after recording or printing it) and pack the store data (Admin » Stores » store » Utilities » Pack Data Files). Repeat as long as new duplicate orders appear during packing.

When packing, do not forget to put your store into maintenance mode to avoid another database corruption!

The MmTICKER module may be used for alerting you whenever a problem of duplicate records appear, allowing you so to reduce the risk of more serious problems, data corruption, confused customers and lost orders.

You can also use MmDbDOC (truXoft Data Doctor) for the automated or manual repair of the databases through your Miva Merchant Admin interface.

Skilled administrators can download the concerned database and use an xBase compatible editor (i.e. Access) to remove the duplicate records.


top

My store will not pack. It always says Application Timed out. Will MmTicker be able to fix this problem?

MmTICKER helps to keep many databases small by regular maintenance, but if your Miva Empresa globaltimeout is too low (or server too slow), you would probably experience timeouts during the installation too. Although it may be bypassed by reloading the ticker window several times, you can do it in similar way also with packing.

You should delete all baskets (do not recover unused order numbers! It is a dangerous feature and should be avoided) and then try packing store data repeatedly. You may get several timeouts, but usually after several tries it finally passes through. At each pass it pack other databases, so it would stuck on the packing only in the case there is a single database that is so huge that it cannot be packed. This is usually not the case.

If it does not help, you should ask your host to increase your globaltimeout in miva.conf to a higher value or to move you to a faster server. You could also install Miva Mia locally and download the entire store onto your PC, where you could pack it and then upload the data back to the server.

Depending on your version, Miva Merchant usually "forgets" to pack some of the databases (i.e. basklist.dbf) and they remain huge anyway. Miva Merchant also does not trim some databases or data files (i.e. log files) and so you would either have to do it manually or use a tool like MmTICKER to do it automatically.


top

Is there any reason I need to close the store (put in maintenance mode) b4 I pack?

Yes, you should close the store before packing to assure there are no customers shopping. When packing, Merchant databases (and they are numerous) are being cleaned up and all indexes recreated. Since the process can be relatively long, a user shopping could easily cause database corruption, or could experience weird behaviour. Although normally, the packing is made as secure as possible, with file locking mechanism, file locks never worked reliably in Miva and the data could finished pretty messed up if you do not close the store before.

The importance is even higher if you have 3rd party modules installed that write to Merchant databases directly, not using native Merchant API functions, and without using file locks. If such an operation appears during the packing, it may cause very serious damage.

Another reason for closing the store is the performance - packing is a CPU intensive task and any users in the store not only represent a risk of data corruption, but also slow down the process considerably.

For these reasons the best time for packing is deep in night when there are only few customers. You can do it then quickly and reopen the store immediately. Additionally, if you delete baskets and pack data frequently, the packing is also faster. The best is doing it daily (or nightly :)

Of course, you can also automate it and let  MmTICKER  doing all these maintenance tasks in the time you quietly sleep.




top

Look & Feel /  Customization


top

How can I hide the Billing address?

In Admin » Stores » your store » Customer Fields » Billing Information select Hidden


top

How to put a link in the footer that goes back to the top of the page?

As you probably already have found, the usual #top anchor doesn not work in the standard Miva Merchant, because of the BASEREF used in the HTML source. However, you can use a simple JavaScript in the global footer to achive the same effect:

<A HREF="javascript:window.scrollTo(1,1)">top</A>

If you want to hide it to users with JavaScript disabled, use this:

<SCRIPT LANGUAGE="javascript">
  document.write('<A HREF="javascript:window.scrollTo(1,1)">top</A>')
 </SCRIPT>



top

Email / Notifications


top

No notification emails being sent

There may be several reasons for missing notification e-mail:

  1. No notification module installed / active
  2. Wrong setting in notification module (e.g. wrong TO address)
  3. Wrong mail server set in Domain Settings
  4. Overloaded or misconfigured mail server
  5. Relaying denied
  6. Miva Empresa timeout
  7. Broken fulfillment module
No notification module installed / active
Be sure to ave active either the standard, OUI, truXoft or other notfication modules in Admin » Stores » your store » Order Fulfillment Configuration. Using truXoft notification modules (MmHTML, MmHTMLc, MmVENDOR...), among numerous advanced featurs, has also the advantage of logging all outgoing e-mails. The log file including details about all successfull and erroneous e-mails (and its reasons) may be viewed in the admin screen of those modules.

 
Wrong setting in notification module
Be sure to use only valid addresses in the address fields. Some mail servers will refuse sending notification where the FROM or TO address do not originate on the same domain as the mail server (usually your own domain). Some mail servers even deny mail where the CC address does not originate on its domain if you use the "sending from customer's address" option (look also below the Relying Denied paragraph). Some mail servers require angle brackets surrounding the addresses, and others may have problem with this option set in Domain Settings (just below the mail server setting)

 
Wrong mail server set in Domain Settings
By default, the mail server is set to localhost (equivalent to 127.0.0.1) and setting it to a real mail server name may help in some cases. Use the same setting you use for your e-mail software (e.g. mail.yourDomain.com or mail.yourISPdomain.com)

 
Overloaded or misconfigured mail server
This one of the most common reasons of irregular problems with notifications. Mass hosts use to put several hundreds of domains to a sinlge box and the mail server may proccess huge number of e-mail and therefore refusing e-mail from your store when it is just too busy at the moment. This problem is very well know especially to people hosted by Valueweb. You may consider moving your store to a more reliable host or putting a 3rd party mail server to your MM Admin Domain Settings. There are commercial and free mail services available on the Internet or you can use the same mail server you use for reading / sending your e-mail through your Internet Access provider. However, you have to make sure that this mail server accepts sending e-mail from your box with Miva Merchant. Often, changing the TO / FROM / CC addresses to ones originating on the domain of the new mail server are fully sufficient, but sometimes you may need to ask the administrator of the mail server to accept SMTP relaying from the IP / domain of your Miva Merchant server.

 
Relaying denied
Mail servers are often protected against abusal by spammers and denying e-mail when the domain of the FROM address (or sometimes even the TO address) is not in a list of accepted domains. Some mail servers refuse also domains where the revere DNS lookup does not match the IP (that is the case at all CI Host servers, and possibly at many other hosts too) or where the domain is listed on ublic "Blackhole" spammer lists. Where there is rarely problem with the store admin address, Relay Denying can often cause problems at customers' addresses if you use the option "Send from customer's address" and you may need to disable this option in Merchant Notification if your mail server is too picky. Another possibility is using the MmHTML Formatted Merchant Notification module that has an option for sending the notification e-mail in a more tricky way: it sets two FROM addresses - the store owner's address (to authorize the mail for relaying) and a second FROM address (and additionally also the REPLY-TO address) so, that you see these addresses in your mail software and that you can reply to the customer with just hitting the reply button.
Check for more details also below

 
Miva Empresa timeout
The checkout process of Miva Merchant, where also the notifications are being sent, is the most critical and most resource intensive part of the store interface. Especially if you use additional 3rd part fulfillment modules and some of them are either poorly designed or need to make complicated calculations or connect to remote sites (like UPS, FedEx, USPS,...), or send multple notifications (e.g. the MmVENDOR), Miva Empresa (the engine) may time out before completing all tasks. If it is your case, you would see the timeout error on the checkout screen instead of the final invoice. On many servers of mass hosts (like CI Host), the administrators restrict the maximal CPU and memory use by your virtual server - it has similar effects like the timeout, with the difference that you get a 500 Internal Server Error instead. Both problems are aggravated on overloaded servers. If your host is not willing to increase the timeout in the Miva Empresa configuration file, resp. does not want to remove the CPU / memory restriction and you are unable to do it yourself, you should move to a better host.

 
Broken fulfillment module
If some of you 3rd party modules contains a bug preventing to continue in the fulfillment process and stopping it so before the notification are sent. If you suspect some modules, disable them temporarily in MM Admin » Modules » module checking the disable checkbox (only in MM 4.x). Under previous MM versions, you would have to disbale the module in Order Fulfillment COnfiguration, loosing so not only its settings, but also all data associated with that module.

 

For debugging the problem, it is neccesary to submit a test order and watching for run-time errors on the checkout page. With truXoft notification modules you may view log files containing details about all outgoing notification e-mail directly in the MM Admin interface. If you have access to your mail server logs, you may also check it there.


top

RELAY DENIAL:
MvSMTP: Runtime Error: Error sending recipient '': sorry, that domain isn't in my list of allowed rcpthosts
Runtime error MvSMTP: not local host hotmail.com, not a gateway

Hosts usually block 3rd party domains from sending email through your mail server (relaying) as an anti-spam measure. There are couple of things you can verify:

  • Asking your host to allow relaying from "localhost", 127.0.0.1 and from your domain is the best solution
  • Check if the domain is not completely blocked on your mail server: try sending an email to the address using the very mail account and mail server. If it passes, check for solutions below. If it bounces, you'll have to contact your host or use another mail server.
  • You have to use a From e-mail address originating on the same domain as your mail server, not a hotmail account or an address on a 3rd party domain.
  • If the problem is with the standard built-in or OUI Merchant Notification Email, you'll have to deselect the "Use Customer's address" for the From address in its settings.
  • Changing the full domain name of the mail server (often something like mail.yourdomain.com, smtp.yourdomain.com, or simply yourdomain.com) into "localhost" or vice versa, or using ISP's mail server name can sometimes help too.
  • Another solution is using modules such as MmHTML and MmHTMLc who use several techniques including a second From addresses, Reply-to address, or "POP before SMTP" authorization and therefore may be used also with mail servers strictly denying relays or even requiring authentification. These modules also allow you to use remote or 3rd party mail servers that are often more reliable and faster than the one on your web server or at you host.



top

Server Setup and Maintenance


top

I want to access my store by only typing www.mydomain.com instead of typing www.mydomain.com/Merchant2/merchant.mv

There are many possibilities, but on a Unix server, the easiest solution is adding the following line into the .htaccess file in your web root directory.

DirectoryIndex /Merchant2/merchant.mv

(Use .mvc instead of .mv at Miva Merchant v4.14 and higher)

This solution, unlike META or JavaScript redirects, does not negatively affect search engines.

If there is no .htaccess file in your web root, you can create it - there are only few servers that do not accept directives from .htaccess files, and if it should be that case, you can ask your host to allow it. Please note that some FTP clients do not show hidden files like .htaccess (or any other ones starting with a period). In WS_FTP you can type in the small command filed the following command to turn displaying of on hidden files: ls -la


top

How to avoid dead links at search engines after upgrading to a compiled Miva Merchant?

When you upgrade from a non-compiled Miva Merchant (v4.13 or lower) to a compiled one (v4.14 and above), the URL containing merchant.mv or other Miva Script documents changes to the extension .mvc. It causes visitors coming from search engines, or sites linking to the old URLs to fail or to enter the old unfunctional store (if you did not remove it).

To avoid it, you can add the following line into your .htaccess file (Unix servers only):

RedirectMatch (.*)\.mv$ $1.mvc

The same task may be done also with little bit more complicated Rewrite Rules, assuming mod_rewrite is installed in your Apache.


top

What's the best way to backup a Merchant site (running on a *nix box)?

This one is not bad:

tar -czf somepath/$(date +%Y%m%d_%H:%M:%S) mivadatapath*

It puts the data in a tarball and compresses with gzip. You can also have it parsed through PGP afterwards and mailed to you with sendamil (or other mailer) - I would not recommend doing it without the encryption.

The possibilities are unlimited. All you need is some basic Unix knowledge, or reading the man pages.

For those who are not too familiar with Telnet and crontabs, they can also use the simple "backup" command in MmTICKER scheduler to have it done periodically and automatically




top

User Lists / General Support


top

Where should I ask general Miva Merchant questions?

If you do not find an answer to your question in the  Miva Merchant User List list archive, in the  documentation,  FAQ,  How-To's, in other alternative resources (i.e. MivaHelp.com), or through a search engine (i.e. Google), then you should consider subscribing to the Miva Merchant User List and asking your question there.


top

How do I (un)subscribe to (from) the Miva Merchant User List?

First of all you have to subscribe to the proper User Group (although there is a way to post messages without a subscription too). New users often choose a wrong User Group when subscribing. If you are interested in Miva Merchant related problems, please subscribe to the Miva Merchant User Group. You can do it by sending a blank email to merchant-users-subscribe@listmgr.miva.com. Do not subscribe to the Miva Script (miva-users@miva.com) or Miva Merchant Coders (merchant-coders@miva.com) user lists unless you are interested in the Miva Script programming language (miva-script group is for non-Merchant programming topics) or in the development or hacking of Miva Merchant modules (merchant-coders). Posting general Miva Merchant questions to the programmers' lists is off topic and not welcome.

Unsubscribing instructions are written at the bottom of every list message. In spite of it the question asking how to unsubscribe is one of the most asked ones. Please avoid becoming another subject of amusements for the list member and read the footer for the instructions.

The unsubscription was a favourite topic of Crazy Tony - see  examples of Tony's unsubscription instructions

If you do not manage (un)subscribing even after carefully re-reading and following these instructions and the instructions at miva.com (resp. in the list message footer), please  contact Miva Support  for assistance.


top

How do I post to the Miva Merchant User List?

Subscribing

Please see  above

Email address

When sending messages to the user list, be sure you use exactly the same FROM address you have originally subscribed; otherwise the message will be rejected. You can change te FROM address in your mail client software. You can also create multiple mail accounts with different FROM addresses and select the proper one before sending the message out.

Avoiding Spam

After your first posting the email address will be accessible on the web through the list archives. You may expect that spammer robots will sooner or later find the address and if you'll start receiving spam (if you did not get it already before). The best way to avoid it is creating an independent mailbox dedicated only for the use on the list. You can create it either on your domain (ask your host for assistance), at your ISP or at a free email service (Yahoo, Hotmail,...). Once you created the account and set it up in your mail client software, create a sorting rule deleting ALL messages coming through this account and not containing [mru] in the subject and moving the matching message to your Merchant folder. It is a very efficient way to kill the spam.

Policy

When you subscribe, make sure you have read the official list policies at  http://www.miva.com/support/usr_grps/usr_grp_policy.html. It is also recommended lurking on the list and reading messages of others during couple of days before you start posting. Avoid flaming, rudeness, replying to such messages and participating in off-topic threads.

Archives

If you have a question, be sure you have tried to find the answer in the list archive, in the documentation, in other alternative resources and through a search engine. The volume of messages on the list is high (hundreds of messages daily), but the majority of the queries are repeated all the time. It is polite to try to find the answer before spamming the list with another FAQ.

Subject

When you post, be sure that you choose a suitable subject. Using "help" or "newbie question" won't really tell anybody what the message is about. Many regular list members (who are usually giving the most precise answers) use to read thousands of messages daily and can easily skip any messages that do not have a subject that catches their attention. Make sure the subject is short but expresses the problem exactly. For example "missing images in secure mode", "error dbt-0034 in checkout", "failed authorization with Paypal", etc.

Message

Please avoid lengthy messages. Try to explain your problem as brief and as clear as possible. The problem should be visible after reading the subject and/or couple of the very first lines. If you start explaining unimportant facts (like the way you found Merchant, or why you are a newbie, or your childhood,...) and the actual problem is not visible in the first paragraph, many experienced users will simply dump the message without reading it entire and skip to the next one. Be brief, but precise. Asking general questions like "help, my checkout does not work! What should I do?" is really worthless. Describe your problem, the way it can be reproduced and if possible post the URL to your store or to the page experiencing the problem.

Replying

When you reply to any list message, make sure you hit the "Reply All" button in your e-mail software and not just the "Reply". Using the simple "Reply" sends the answer to the author of the message only and not to the list. When a thread was started on the list it is not correct to take it off list unless there is something you really need to discuss privately. Requesting a solution or proposing one off-list violates the purpose of the public list. When a problem was opened on the list, all the thread should be kept public too - for the sake of other users who watch the list and for the purpose of archiving. Only if all the answers are being sent to the list, the solution may be found the archives.

When you hit the "Reply to All" button, the mail software sends the message to the list address and to all addresses of users who participated in the thread. Removing the personal addresses is usually a good idea. It avoids duplicate messages, however it is usually better doing it only at regular list members, because others may be reading only messages addressed directly to them.

Replying - content

When replying, be sure to attach the previous content of the thread in your message. Many list members read daily thousands of messages and they really cannot remember what the thread was about if you do not include the original text.

You should though trim all unnecessary content - especially the Miva corporate footer that the list server attaches to every message. You can also trim lenghty signatures and the remaining text so that only the important content necessary for understanding the problem remains in the text. It is a big pain opening and scrolling through a message containing a dozen copies of the footer or other redundant clutter. It is especially annoying if you are travelling and reading the messages through a slow connection like for example with a GSM device. The professional list members have to continue reading the messages even when on vacations, not to miss some important announcement or a support query concerning their products. By feeding the list with junk you reduce the chance to get the right reply quickly.

Signatures

It is a good idea to include the URL of your website in your signature. Please avoid lengthy signatures loaded with advertisement. Optimal is a signature of 2-3 lines. More than 5 lines are usually disturbing, won't be welcome and may be considered spam by many list users.

Autoreplies

Please avoid setting up an autoreply on the mailbox used for the list messages! People often set up an autoreply when leaving for vacations and do not realize that it sends back the automated reply to every single post, annoying so hundreds of subscribers daily. When you are unable to set up an independent mailbox for the list (with no autoreply ever), please unsubscribe from the list before leaving.


top

I cannot handle the volume of messages. Is there a digest mode?

The best way to handle list posts is creating a rule in your mail client. In the case of Outlook Express it would be as follows:

Create a folder for the list by right-clicking on the inbox and selecting "New Folder" and then in OE menu go to:

Tools >> Message Rules >> Mail >> 
"Where the Subject line contains specific words" >> [mru]
>> "Move it to the specified folder"

If you prefer seeing only replies to your own list queries, but do not want to see and keep all the other posts at all, simply create a rule to delete them.

There is also a way to receive daily digest - look at the footer of any list message for the instructions how to get detailed help from the list server: send a blnk message to merchant-users-help@miva.com

If all that is too complicate, simply delete the messages manually, or subscribe a mailbox you normally do not read.

Read also below the hints for posting to the list without subscribing.


top

How do I post to the list without subscribing?

The submission form on the official user list web interface is broken and messages cannot be sent in this way. If you want to post a message to the user list without subscribing, you can use Bill Gilligan's interface at  http://mvcentral.com/mivamail.mvc


top

Is there a list archive?

Yes, there are several list archives. The official Miva Merchant User List archive can be accessed at  http://www.miva.com/~archive/mru/. More comfortable and faster search function is available in Adam Denning's list archive at  http://www.mvdevelopment.com/mvlists/. There are also other list arhives - for example the one of Mr. Moon:   http://mrmoon.com/moonlist/mivalist/




top

Some Useful Links


Official Miva Co. FAQ
ModSSL FAQ
P3P (Privacy Policies) FAQ

Miva Merchant Documentation
Miva User Groups
Miva Merchant User List Archive
Adam Denning's Miva User List Archives
MivaHelp.com

top

   

Miva and some other terms used on this page are registerd trademarks of the Miva Corporation
copyright  truXoft  © 1997-2008