CINXE.COM
R-Tools Technology - developer of data recovery, undelete, drive image, mail recovery, hard drive clean and wipe software
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <meta http-equiv="content-language" content="en" /> <link rel="stylesheet" type="text/css" href="/includes/en/style.css" /> <link rel="shortcut icon" href="/images/rtt.ico" /> <link rel="icon" type="image/png" href="/images/rtt.png" sizes="64x64"> <title>R-Tools Technology - developer of data recovery, undelete, drive image, mail recovery, hard drive clean and wipe software</title> <meta name="description" content="R-TT develops and sells data recovery, undelete, drive image, mail recovery, hard drive clean and wipe software." /> <meta name="keywords" content="contact, phone, fax, company, information, address, data recovery, undelete, drive image, mail recovery, hard drive clean and wipe" /> <meta name="title" content="R-Tools Technology - developer of data recovery, undelete, drive image, mail recovery, hard drive clean and wipe software" /> </head> <body> <div id="root"> <div> <div style="overflow-x:hidden;"> <div id="hdr-wrapper" class="hdr-wrapper"> <div id="hdr-hdr" class="section hdr-hdr"> <div class="hdr-logo"> <a href="https://www.r-tt.com/" title="R-Tools Technology Inc."> <img src="/images/nav/rtt-logo.png" alt="R-Tools Technology Inc." width="225" height="85" /> </a> </div> <div class="hdr-search-container"> <form class="hdr-search-form" name="search_form" action="/scripts/search" method="post" onsubmit="return doSearch(document.search_form)"> <input type="hidden" name="config" value="../../../r-tt/private/config/ssserver.en" /> <div class="hdr-search-row"> <span class="hdr-search-icon" onclick="doSearch(document.search_form)"></span> <input type="text" name="QUERY" class="hdr-search-input" value="Search..." onfocus="onSearchFocus(document.search_form)" /> </div> </form> </div> <script type="text/javascript" charset="utf-8"> function onSearchFocus(F) { if (F.QUERY.value == "Search...") { F.QUERY.value=""; F.QUERY.style.color = "#404040"; } return true; } function doSearch(F) { if (F.QUERY.value == "Search...") {F.QUERY.value="";} if (F.QUERY.value == "") {alert("Please specify search pattern");F.QUERY.focus();return false;} return true; } </script> <div class="hdr-info"> <div> We are committed to providing fast, efficient, and affordable software solutions that set new standards in the software development industry. </div> </div> <div class="clearwoflex"></div> <div class="hdr-langs"> <div class="langs-block"> <div class="langs-btn"> <div class="langs-cur-flag"> <img width="51" height="29" alt="" src="/images/lang/en.png"/> </div> <span class="langs-sel"></span> </div> <div class="langs-list"> <a href="https://www.r-tt.com/de/UserConsole.shtml"> <img src="/images/lang/de.png" width="51" height="29" alt="" /> <span>Deutsch</span> </a> <a href="https://www.r-tt.com/fr/UserConsole.shtml"> <img src="/images/lang/fr.png" width="51" height="29" alt="" /> <span>Français</span> </a> <a href="https://www.r-tt.com/it/UserConsole.shtml"> <img src="/images/lang/it.png" width="51" height="29" alt="" /> <span>Italiano</span> </a> <a href="https://www.r-tt.com/es/UserConsole.shtml"> <img src="/images/lang/es.png" width="51" height="29" alt="" /> <span>Español</span> </a> <a href="https://www.r-tt.com/pt/UserConsole.shtml"> <img src="/images/lang/pt.png" width="51" height="29" alt="" /> <span>Português</span> </a> <a href="https://www.r-tt.com/nl/UserConsole.shtml"> <img src="/images/lang/nl.png" width="51" height="29" alt="" /> <span>Nederlands</span> </a> <a href="https://www.r-tt.com/pl/UserConsole.shtml"> <img src="/images/lang/pl.png" width="51" height="29" alt="" /> <span>Polski</span> </a> <a href="https://www.r-tt.com/ja/UserConsole.shtml"> <img src="/images/lang/ja.png" width="51" height="29" alt="" /> <span>日本語</span> </a> <a href="https://www.r-tt.com/ko/UserConsole.shtml"> <img src="/images/lang/ko.png" width="51" height="29" alt="" /> <span>한국어</span> </a> <a href="https://www.r-tt.com/zhcn/UserConsole.shtml"> <img src="/images/lang/zhcn.png" width="51" height="29" alt="" /> <span>简体中文</span> </a> <a href="https://www.r-tt.com/zhhk/UserConsole.shtml"> <img src="/images/lang/zhhk.png" width="51" height="29" alt="" /> <span>简体中文</span> </a> <a href="https://www.r-tt.com/ru/UserConsole.shtml"> <img src="/images/lang/ru.png" width="51" height="29" alt="" /> <span>Русский</span> </a> </div> </div> </div> <div class="hdr-menu"> <div class="menu-container" id="menu-container"> <span class="menu-button"> <span class="menu-button-open"></span> <span class="menu-button-close"></span> </span> <a href="https://www.r-tt.com/" class="menu-logo" title="R-Tools Technology Inc."> <img src="/images/nav/rtt-logo.png" alt="R-Tools Technology Inc." width="225" height="85" /> </a> <ul class="menu-main" id="menu-main"> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-left"></span> PRODUCTS <span class="menu-icon-right"></span> </span> <div class="menu-dd"> <div class="menu-dd-cont"> <div class="menu-dd-title"> FREEWARE </div> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-undelete.com/">R-Undelete Home</a> </li> <li> <a href="https://www.r-undelete.com/free_photo_recovery/">R-Photo</a> </li> <li> <a href="https://www.r-studio.com/free-linux-recovery/">R-Linux</a> </li> <li> <a href="https://www.r-wipe.com/#lite">R-Wipe & Clean Lite</a> </li> </ul> </div> </div> <div class="menu-dd-cont"> <div class="menu-dd-title"> FOR COMMERCIAL USE </div> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-studio.com/Data_Recovery_Technician.shtml"> R-Studio Technician for Data Recovery Services </a> </li> <li> <a href="https://www.drive-image.com/Drive_Image_Licensing.shtml#commercial"> R-Drive Image for Backup and Deployment Services </a> </li> </ul> </div> </div> <div class="menu-dd-cont"> <div class="menu-dd-title"> FOR PERSONAL AND BUSINESS USE </div> <div class="menu-dd-items"> <div class="menu-dd-cols"> <div class="menu-dd-col-title"> <a href="https://www.r-studio.com/data-recovery-software/"> PRO Data Recovery: </a> </div> <div class="menu-dd-col-ul"><ul class="menu-dd-ul"> <li> <a href="https://www.r-studio.com/">R-Studio for Windows</a> </li> <li> <a href="https://www.r-studio.com/data_recovery_macintosh/">R-Studio for Mac</a> </li> <li> <a href="https://www.r-studio.com/data_recovery_linux/">R-Studio for Linux</a> </li> </ul></div> <div class="clearthis"></div> </div> <div class="menu-dd-cols"> <div class="menu-dd-col-title"> Backup and System Restore: </div> <div class="menu-dd-col-ul"><ul class="menu-dd-ul"> <li> <a href="https://www.drive-image.com/">R-Drive Image</a> </li> <li> <a href="https://www.drive-image.com/Drive_Image_Licensing.shtml#technician">R-Drive Image Technician</a> </li> </ul></div> <div class="clearthis"></div> </div> <div class="menu-dd-cols"> <div class="menu-dd-col-title"> PC Privacy and Security: </div> <div class="menu-dd-col-ul"><ul class="menu-dd-ul"> <li> <a href="https://www.r-wipe.com/">R-Wipe & Clean</a> </li> <li> <a href="https://www.r-wipe.com/#mac">R-Wipe & Clean for Mac</a> </li> </ul></div> <div class="clearthis"></div> </div> </div> </div> </div> </div></li> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-left"></span> <span class="alt-tr-ru-1">BUY ONLINE</span> <span class="menu-icon-right"></span> </span> <div class="menu-dd"> <div class="menu-dd-cont"> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-tt.com/VolumeLicensing.shtml" class="alt-tr-ru-1">Quote</a> </li> <li> <a href="https://www.r-tt.com/GetInvoice.shtml">Get Invoice</a> </li> <li> <a href="https://www.r-tt.com/FAQ.shtml">Sales FAQ</a> </li> <li> <a href="https://www.r-tt.com/BuyOnLine.shtml">Sales Policy</a> </li> </ul> </div> </div> </div> </div></li> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-left"></span> SUPPORT <span class="menu-icon-right"></span> </span> <div class="menu-dd"> <div class="menu-dd-cont"> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-tt.com/TechnicalSupport.shtml">Technical Support</a> </li> <li> <a href="https://www.r-tt.com/PurchasingRequest.shtml">Customer Support</a> </li> <li> <a href="https://www.r-studio.com/File_Recovery_FAQ.shtml">FAQ</a> </li> <li> <a href="https://www.r-tt.com/Knowledge-Base.html">Knowledge Base</a> </li> <li> <a rel="noopener" target="_blank" href="https://forum.r-tt.com/">R-TT Forum</a> </li> </ul> </div> </div> </div> </div></li> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-left"></span> DISTRIBUTION <span class="menu-icon-right"></span> </span> <div class="menu-dd"> <div class="menu-dd-cont"> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-tt.com/Affiliate_Program.shtml">Affiliate Program</a> </li> <li> <a href="https://www.r-tt.com/Resellers.shtml">Resellers</a> </li> <li> <a href="https://www.r-tt.com/Distribution.shtml">Regional Distributors</a> </li> <li> <a target="_blank" rel="noopener" href="https://secure.r-tt.com/distributor/login/">Login</a> </li> </ul> </div> </div> </div> </div></li> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-spare"></span> <a href="https://secure.r-tt.com/UserConsole.shtml">MY ORDER</a> </span> </div></li> </ul> </div> </div> <div class="clearwoflex"></div> </div> </div> <div> <div class="row-blue row-section"><div class="section"><ul class="page-title"> <li class="page-title-img"> <img alt="" src="/images/nav/title-my-order.png" /> </li> <li> <div class="page-title-main"> My Order </div></li> </ul></div></div> <form class="stdform form-wide" name="user_console" method="post" action="/cgi-bin/UserConsole" onsubmit="return onSubmitForm(document.user_console)" novalidate> <div class="row-section"><div class="section"> <div class="bt"> Please use the following form to find your order in our database and verify your identity. If any information is missing, please leave the corresponding fields blank and your order will be searched using the remaining criteria. </div> </div></div> <div class="row-gray row-section"><div class="section"> <div class="col2-left"> <div class="fph"> <input type="text" name="PNREF" required /> <label value="Order ID"></label> </div> <div class="fph"> <textarea name="REGKEY" rows="4" required></textarea> <label value="Registration Key"></label> </div> <div class="fph"> <input type="text" name="NAME" required /> <label value="Name"></label> </div> <div class="fph"> <input type="text" name="PHONE" required /> <label value="Phone"></label> </div> <div class="fph-margin"> <div class="gs">First and last four digits of Credit Card used</div> <table class="form-table-row"><tr> <td class="ruc-card-beg"><input type="text" name="CARD_ACCT_BEG" /></td> <td class="ruc-card-sep"><div class="gh2">********</div></td> <td class="ruc-card-end"><input type="text" name="CARD_ACCT_END" /></td> </tr></table> </div> <div class="fph"> <input type="text" name="EMAIL" required /> <label value="E-Mail"></label> </div> <div class="fph"> <input type="text" name="ALTEMAIL" required /> <label value="Alternative e-mail"></label> </div> <div class="ruc-wrong"><span class="form-wrong-info"> Not enough criteria was specified. At least three criteria must be verified to access an order. </span></div> </div> <div class="col2-right"> <div class="form-title-first"></div> <ul class="orange"><li> <span class="ruc-info-hdr">Using the "My Order" console you can:</span> <ul class="std ruc-info-ul"> <li>Get a detailed invoice for your purchase;</li> <li>Change e-mail address in your profile;</li> <li>Resend registration information to your e-mail;</li> <li>Upgrade the product;</li> <li>Download the current build of the previously purchased software;</li> <li>Renew customer support service **</li> </ul> </li></ul> <p> <span class="gs"> ** </span> <span class="gs"> With the purchase of a new R-TT software product, you receive one year of support services that includes technical support, customer support and all upgrades and new releases for your product during that term. When your 1-year support service expires, you will need to renew that support at a discounted price to continue receiving support services. </span> <span class="os"> The renewal support purchase will extend your support by 1-year from the date of its expiration. </span> </p> </div> <div class="clearthis"></div> <div class="btn-center form-title"> <input class="btn-orange-big" type="submit" value="Continue"/> </div> </div></div> </form> <div class="row-blue row-section footer-articles"><div class="section"> <div class="articles-items" id="articles-cols"> <div class="bottom-title">Data Recovery Articles</div> <ul class="bottom-col-left"> <li><a href="https://www.r-studio.com/Data_Recovery_Guide.shtml">Data Recovery Guide</a></li> <li><a href="https://www.r-studio.com/Why_RStudio.shtml">Why R-Studio?</a></li> <li><a href="https://www.r-studio.com/Forensic-and-DataRecovery-Business.html">R-Studio for Forensic and Data Recovery Business</a></li> <li><a href="https://www.r-tt.com/r-studioreview_toptenreviews/">R-STUDIO Review on TopTenReviews</a></li> <li><a href="https://www.r-studio.com/SSD_Recovery.html">File Recovery Specifics for SSD devices</a></li> <li><a href="https://www.r-studio.com/How-to-recover-NVMe-device.html">How to recover data from NVMe devices</a></li> <li><a href="https://www.r-studio.com/Success-of-File-Recovery.html">Predicting Success of Common Data Recovery Cases</a></li> <li><a href="https://www.r-studio.com/Recovery_Overwritten_Data.html">Recovery of Overwritten Data</a></li> <li><a href="https://www.r-studio.com/Emergency_File_Recovery.shtml">Emergency File Recovery Using R-Studio Emergency</a></li> <li><a href="https://www.r-studio.com/RAID_Recovery_Presentation.shtml">RAID Recovery Presentation</a></li> <li><a href="https://www.r-studio.com/RStudio_BrokenComputer.shtml">R-Studio: Data recovery from a non-functional computer</a></li> <li><a href="https://www.r-studio.com/File_Recovery_from_a_Computer_that_Wont_Boot.shtml">File Recovery from a Computer that Won't Boot</a></li> <li><a href="https://www.r-studio.com/Clone_Disks_Before_File_Recovery.shtml">Clone Disks Before File Recovery</a></li> <li><a href="https://www.r-studio.com/Video_Recovery.shtml">HD Video Recovery from SD cards</a></li> <li><a href="https://www.r-studio.com/File_Recovery_from_Unbootable_Mac.shtml">File Recovery from an Unbootable Mac Computer</a></li> <li><a href="https://www.r-studio.com/best-file-recovery-mac-system-disk.shtml">The best way to recover files from a Mac system disk</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_From_Encrypted_Linux_Disk.shtml">Data Recovery from an Encrypted Linux Disk after a System Crash</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_From_DMG_Files.shtml">Data Recovery from Apple Disk Images (.DMG files)</a></li> <li><a href="https://www.r-studio.com/File_Recovery_after_Reinstalling_Windows.shtml">File Recovery after Re-installing Windows</a></li> <li><a href="https://www.r-studio.com/DataRecovery_over_Network.shtml">R-Studio: Data Recovery over Network</a></li> <li><a href="https://www.r-studio.com/RStudio_Network_Package.shtml">How To Use R-Studio Corporate Package</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_After_Reformat_NTFS.shtml">Data Recovery from a Re-Formatted NTFS Disk</a></li> <li><a href="https://www.r-studio.com/ReFS-recovery.html">Data Recovery from an ReFS disk</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_After_Reformat_exFAT.shtml">Data Recovery from a Re-Formatted exFAT/FAT Disk</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_After_Erase_HFS.shtml">Data Recovery from an Erased HFS Disk</a></li> <li><a href="https://www.r-studio.com/data-recovery-after-erase-APFS.html">Data Recovery from an Erased APFS Disk</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_After_Reformat_Ext4FS.shtml">Data Recovery from a Re-Formatted Ext2/3/4FS Disk</a></li> <li><a href="https://www.r-studio.com/XFS-recovery.html">Data Recovery from an XFS Disk</a></li> <li><a href="https://www.r-studio.com/NAS_Data_Recovery.shtml">Data Recovery from a Simple NAS</a></li> <li><a href="https://www.r-studio.com/connect-virtual-raid-to-operating-system.html">How to connect virtual RAID and LVM/LDM volumes to the operating system</a></li> </ul> <ul class="bottom-col-right"> <li><a href="https://www.r-studio.com/ntfs-recovery-after-quick-format.html">Specifics of File Recovery After a Quick Format</a></li> <li><a href="https://www.r-studio.com/data-recovery-after-partition-manager-crash.html">Data Recovery After Partition Manager Crash</a></li> <li><a href="https://www.r-studio.com/file-recovery-vs-file-repair.html">File Recovery vs. File Repair</a></li> <li><a href="https://www.r-studio.com/data-recovery-from-virtual-machines.html">Data Recovery from Virtual Machines</a></li> <li><a href="https://www.r-studio.com/Connect-Disks-to-Computer.html">How to Connect Disks to a Computer</a></li> <li><a href="https://www.r-studio.com/emergency-data-recovery-over-network.html">Emergency Data Recovery over Network</a></li> <li><a href="https://www.r-studio.com/data-recovery-over-the-internet.html">Data Recovery over the Internet</a></li> <li><a href="https://www.r-studio.com/creating-custom-file-type-r-studio.html">Creating a Custom Known File Type for R-Studio</a></li> <li><a href="https://www.r-studio.com/finding-raid-parameters.html">Finding RAID parameters</a></li> <li><a href="https://www.r-studio.com/recovering-partitions-on-damaged-disk.html">Recovering Partitions on a Damaged Disk</a></li> <li><a href="https://www.r-studio.com/remote-recovery-nat-firewall-traversal.html">NAT and Firewall Traversal for Remote Data Recovery </a></li> <li><a href="https://www.r-studio.com/external-disk-recovery.html">Data Recovery from an External Disk with a Damaged File System</a></li> <li><a href="https://www.r-studio.com/file-recovery-basics.html">File Recovery Basics</a></li> <li><a href="https://www.r-studio.com/macos-raid-recovery-parameters.html">Default Parameters of Software Stripe Sets (RAID 0) in Mac OS X</a></li> <li><a href="https://www.r-studio.com/vhd-disk-recovery.html">Data Recovery from Virtual Hard Disk (VHD/VHDX) Files</a></li> <li><a href="https://www.r-studio.com/encrypted-disks-recovery.html">Data Recovery from Various File Container Formats and Encrypted Disks</a></li> <li><a href="https://www.r-studio.com/automatic-raid-detection.html">Automatic RAID Parameter Detection</a></li> <li><a href="https://www.r-studio.com/data_recovery_technology.html">IntelligentScan Data Recovery Technology</a></li> <li><a href="https://www.r-studio.com/Multipass-imaging-damaged-drives.html">Multi-pass imaging in R-Studio</a></li> <li><a href="https://www.r-studio.com/runtime-drive-imaging.html">Runtime Imaging in R-Studio</a></li> <li><a href="https://www.r-studio.com/LinearImaging-vs-RuntimeImaging-vs-MultiPassImaging.html">Linear Imaging vs Runtime Imaging vs Multi-Pass Imaging</a></li> <li><a href="https://www.r-studio.com/USB-Stabilizer-for-unstable-drives.html">USB Stabilizer Tech for unstable USB devices</a></li> <li><a href="https://www.r-studio.com/improve-pc3000-data-analysis.html">Joint work of R-Studio and PC-3000 UDMA hardware</a></li> <li><a href="https://www.r-studio.com/HDDSuperClone-drive-imaging.html">Joint work of R-Studio and HDDSuperClone</a></li> <li><a href="https://www.r-studio.com/pro-data-recovery-and-forensic-for-small-business.html">R-Studio T80+ - A Professional Data Recovery and Forensic Solution for Small Business and Individuals Just for 1 USD/day</a></li> </ul> <div class="clearthis"></div> <ul class="bottom-col-left"> <li class="bottom-title">Backup Articles</li> <li><a href="https://www.drive-image.com/r-drive-image-license-transfer.html">R-Drive Image Standalone and Corporate license transferring</a></li> <li><a href="https://www.drive-image.com/fixing-Windows-update-error-0x80070643.html">Fixing Windows update error 0x80070643 with R-Drive Image</a></li> <li><a href="https://www.drive-image.com/backup_software.shtml">Backup with Confidence</a></li> <li><a href="https://www.drive-image.com/Free-Partition-Manager.html">R-Drive Image as a free powerful partition manager</a></li> <li><a href="https://www.drive-image.com/Computer_Recovery_and_System_Restore.shtml">Computer Recovery and System Restore</a></li> <li><a href="https://www.drive-image.com/Disk_Cloning_and_Mass_System_Deployment.shtml">Disk Cloning and Mass System Deployment</a></li> <li><a href="https://www.drive-image.com/imaged-disk-access.html">Accessing Individual Files or Folders on a Backed Up Disk Image</a></li> <li><a href="https://www.drive-image.com/How-to-use-Startup-Bootable-version.html">R-Drive Image startup / bootable version</a></li> <li><a href="https://www.drive-image.com/backup-files-personal-computers-laptops-of-home-self-employed-users.html">File Backup for Personal Computers and Laptops of Home and Self-Employed Users</a></li> <li><a href="https://www.drive-image.com/data-backup-plan.html">Creating a Data Consistent, Space Efficient Data Backup Plan for a Small Business Server</a></li> <li><a href="https://www.drive-image.com/how-move-installed-Windows-from-HDD-to-SSD.html">How to Move the Already Installed Windows from an Old HDD to a New SSD Device and Create a Hybrid Data Storage System</a></li> <li><a href="https://www.drive-image.com/Moving-Windows-to-New-SSD.html">How to Move an Installed Windows to a Larger Disk</a></li> <li><a href="https://www.drive-image.com/Moving-BitLocker-System-Disk-to-New-Device.html">How to Move a BitLocker-Encrypted System Disk to a New Storage Device</a></li> <li><a href="https://www.drive-image.com/Disk-Backup-Mac-Linux.html">How to backup and restore disks on Linux and Mac computers using R-Drive Image</a></li> </ul> <ul class="bottom-col-right"> <li class="bottom-title">Undelete Articles</li> <li><a href="https://www.r-undelete.com/Get_Deleted_Files_Back/">Get Deleted Files Back</a></li> <li><a href="https://www.r-undelete.com/free_photo_recovery/SD-card-recovery.html">Free Recovery from SD and Memory cards</a></li> <li><a href="https://www.r-undelete.com/free_photo_recovery/undelete-HD-video.html">R-Undelete: Video Recovery</a></li> <li><a href="https://www.r-undelete.com/Damaged_File_System.shtml">Recovery from an External Device with a Damaged File System</a></li> <li><a href="https://www.r-undelete.com/File_Recovery_From_Non-Functional_Computer.shtml">File recovery from a non-functional computer</a></li> <li><a href="https://www.r-undelete.com/Free_File_Recovery_from_Android_Phone_Memory_Card.html">Free File Recovery from an Android Phone Memory Card</a></li> <li><a href="https://www.r-undelete.com/free_photo_recovery/how-to-tutorial/">Free Photo and Video File Recovery Tutorial</a></li> <li><a href="https://www.r-undelete.com/easy-file-recovery-in-three-steps.html">Easy file recovery in three steps</a></li> </ul> <div class="clearthis"></div> <div class="bottom-title">PC Privacy Articles</div> <ul class="bottom-col-left"> <li><a href="https://www.r-wipe.com/computer-privacy-and-identity-theft-protection.html">Computer Privacy and Identity Theft Protection</a></li> <li><a href="https://www.r-wipe.com/disk-cleanup.html">Disk Cleanup: How to free up disk space</a></li> <li><a href="https://www.r-wipe.com/clear-browsers-cache-history.html">Clear Browser Cache, History, and Other Data</a></li> <li><a href="https://www.r-wipe.com/bulk-file-delete-registry-cleaning.html">Wipe lists in R-Wipe&Clean</a></li> <li><a href="https://www.r-wipe.com/maintain-computer-privacy-SSD-storage-device.html">SSD Storage Devices and Computer Privacy</a></li> </ul> <div class="clearthis"></div> </div> <div class="articles-more-container"><span class="articles-more" id="articles-more"></span></div> </div></div> <script type="text/javascript" charset="utf-8"> // Generic routines function strTrim(str) { return str.replace(/^\s+|\s+$/gm,''); } // Single element class manipulations function _nodeGetClassPos(Node,className) { if (!Node||!Node.className) return -1;if ((!className)||(className.length<=0)) return 0; for(var s=0;true;) { var p=Node.className.indexOf(className,s);if (p<0) return -1; s=p+className.length; if ((p>0)&&(Node.className.charCodeAt(p-1)>32)) continue; if ((s<Node.className.length)&&(Node.className.charCodeAt(s)>32)) continue; return p; } return -1; } function nodeHasClass(Node,className) { return (_nodeGetClassPos(Node,className)>=0); } function nodeAddClass(Node,className) { if ( (!Node) || (!className) || (className.length<=0) || (nodeHasClass(Node,className)) ) return false; if ( (Node.className) && (Node.className.length>0) ) Node.className+=" "; Node.className+=className; return true; } function nodeDelClass(Node,className) { if ( (!Node) || (!Node.className) || (!className) || (className.length<=0) ) return false; var pos=_nodeGetClassPos(Node,className);if (pos<0) return false; var pos2=pos+className.length; if ((pos>0)&&(Node.className.charCodeAt(pos-1)<=32)) {pos--;} else if ((pos2<Node.className.length)&&(Node.className.charCodeAt(pos2)<=32)) {pos2++;} Node.className = Node.className.slice(0,pos) + Node.className.slice(pos2); return true; } function nodeSwitchClass(Node,className) { if ((!Node)||(!className)) return; if (nodeHasClass(Node,className)) { nodeDelClass(Node,className); } else { nodeAddClass(Node,className); } } // Multiple elements class manipulations function nodesHasClass(Nodes,className) { for(var i=0;i<Nodes.length;i++) {if (nodeHasClass(Nodes[i],className)) return true;} return false; } function nodesAddClass(Nodes,className) { for(var i=0;i<Nodes.length;i++) {nodeAddClass(Nodes[i],className);} } function nodesDelClass(Nodes,className) { for(var i=0;i<Nodes.length;i++) {nodeDelClass(Nodes[i],className);} } // Supplement search functions function _findBuild(Selector) { var Search = {Elem:'',Class:'',Type:''}; if (typeof Selector === 'string') Search.Elem=Selector; var pos=Search.Elem.indexOf('[type=');if (pos>=0) { var pos2=Search.Elem.lastIndexOf(']'); if (pos2>pos) { Search.Type=Search.Elem.slice(pos+6,pos2-pos-6); Search.Elem=Search.Elem.slice(0,pos)+Search.Elem.slice(pos2+1); } } pos=Search.Elem.indexOf('.');if (pos>=0) { Search.Class=Search.Elem.slice(pos+1); Search.Elem=Search.Elem.slice(0,pos); } Search.Elem=Search.Elem.toUpperCase(); return Search; } function _findDoesNodeMatch(Search,Node) { if ((!Node)||(Node.nodeType!=1)) return false; var bMatch=true; if ( (Search.Elem!="") && ((!Node.tagName)||(Node.tagName!=Search.Elem)) ) {bMatch=false;} if ( (Search.Type!="") && ((!Node.type)||(Node.type!=Search.Elem)) ) {bMatch=false;} if ( (Search.Class!="") && (!nodeHasClass(Node,Search.Class)) ) {bMatch=false;} return bMatch; } // Search for nodes, Selector = 'element.class[type=typename]', each part can be omited, i.e. '.class' or 'element[type=typename]' for example function nodeFindChildren(Node,Selector) { // Search for matched children nodes, recursively var res = [];if (!Node) return res; var Search = (typeof Selector === 'object')?Selector:_findBuild(Selector); var Children = Node.childNodes; for(var i=0;i<Children.length;i++) { if (Children[i].nodeType!=1) continue; if (_findDoesNodeMatch(Search,Children[i])) {res.push(Children[i]);} res=res.concat(nodeFindChildren(Children[i],Search)); } return res; } function nodeFindDirectChildren(Node,Selector) { // Search for matched children nodes, only children of this node var res = [];if (!Node) return res; var Search = _findBuild(Selector); var Children = Node.childNodes; for(var i=0;i<Children.length;i++) { if (Children[i].nodeType!=1) continue; if (_findDoesNodeMatch(Search,Children[i])) {res.push(Children[i]);} } return res; } function nodeFindParent(Node,Selector) { // Search for first matched parent node if (!Node) return null; var Search = _findBuild(Selector); for(var Res=Node.parentNode;Res;Res=Res.parentNode) { if (_findDoesNodeMatch(Search,Res)) return Res; } return null; } // Check if Node have specified Child on any level function hasSpecifiedChild(Node,Child) { if (!Node) return false; var Children = Node.childNodes; for(var i=0;i<Children.length;i++) { if (Children[i].nodeType!=1) continue; if (Children[i] === Child) return true; if (hasSpecifiedChild(Children[i],Child)) return true; } return false; } </script><script type="text/javascript" charset="utf-8"> function onArticlesMore(el) { var cols=document.getElementById("articles-cols"); var more=document.getElementById("articles-more"); if (cols && more) { nodeSwitchClass(cols,"articles-full"); nodeSwitchClass(more,"articles-full"); } } function onArticlesInit() { var more=document.getElementById("articles-more"); if (more) {more.onclick = function(){onArticlesMore(this);};} } </script> </div> <div class="ftr-footer-wrapper"> <div class="section ftr-footer"> <div class="footer-wdir"> <ul class="footer-wdir-ul"> <li><a href="https://www.r-tt.com/technology-articles/">Technology articles</a></li> <li><a href="https://www.r-tt.com/Glossary.html">Glossary</a></li> <li><a href="http://directory.r-tt.com/">Web directory</a></li> </ul> </div> <div class="ftr-social-container"> <div class="social"> <a rel="nofollow noopener" target="_blank" href="https://twitter.com/RTT_Inc" class="social-item" title="Twitter"><span class="social-twitter"></span></a> <a rel="nofollow noopener" target="_blank" href="https://www.facebook.com/pages/R-Tools-Technology-Inc/236155899748769" class="social-item" title="Facebook"><span class="social-facebook"></span></a> <a rel="nofollow noopener" target="_blank" href="http://rtoolstechnology.tumblr.com/" class="social-item" title="Tumblr"><span class="social-tumblr"></span></a> <a rel="nofollow noopener" target="_blank" href="https://rtoolstechnology.wordpress.com/" class="social-item" title="Wordpress"><span class="social-wordpress"></span></a> </div> </div> <div> <ul class="footer-nav"> <li id="nfm_1"><a href="https://www.r-tt.com/Terms_Of_Use.shtml">Terms of Use</a></li> <li id="nfm_2"><a href="https://www.r-tt.com/Privacy_Policy.shtml">Privacy Policy</a></li> <li id="nfm_3"><a href="https://www.r-tt.com/RTTInfo.shtml">Contact Us</a></li> <li id="nfm_4"><a href="https://www.r-tt.com/Feedback.shtml">Feedback</a></li> <li id="nfm_5"><a href="https://www.r-tt.com/SiteMap.shtml">Site Map</a></li> <li id="nfm_6"><a target="_blank" rel="noopener" href="https://forum.r-tt.com/">R-TT Forum</a></li> </ul> </div> <div class="clearthis"></div> <div class="footer-copyright"> © Copyright 2000-2024 R-Tools Technology Inc. </div> </div> </div> </div> </div> </div> <script type="text/javascript" charset="utf-8"> function removeMediaQueries() { var minWidth=982; document.body.setAttribute("style","min-width: "+(minWidth+8).toString()+"px;"); var styleSheets = document.styleSheets;if (!styleSheets) return; for (var i = 0;i<styleSheets.length;i++) { var cssRules = styleSheets[i].cssRules;if (!cssRules) continue; for (var j = 0;j<cssRules.length;j++) { if (!(cssRules[j] instanceof CSSMediaRule)) continue; var n=cssRules[j].media.mediaText.indexOf("max-width:");if (n<=0) continue; n=parseInt(cssRules[j].media.mediaText.substring(n+10));if ((n<=0)||(n>minWidth)) continue; cssRules[j].media.mediaText = "(max-width:1px)"; } } } function onFlexDetect() { var fbd_doc = document.body || document.documentElement;var fbd_style = fbd_doc.style; if (!(fbd_style.webkitFlexWrap == '' || fbd_style.msFlexWrap == '' || fbd_style.flexWrap == '' )) { var hdr=document.getElementById("hdr-hdr"); if (hdr) { hdr.className+=" no-flex"; removeMediaQueries(); } } } onFlexDetect(); </script> <script type="text/javascript" charset="utf-8"> function onMenuInit() { if(document.getElementById('menu-main')) { var menu = document.getElementById('menu-main'), menuContainer = document.getElementById('menu-container'), menuItems = nodeFindChildren(menu,'.menu-item'), menuTitle = nodeFindChildren(menu,'.menu-title'), menuBtn = nodeFindChildren(menuContainer,'.menu-button'); // show menu function showMenu() {nodeAddClass(menuContainer,'show-menu');} // hide menu function hideMenu() {nodeDelClass(menuContainer,'show-menu');} // menu button function clickButton(_this) { if(nodeHasClass(_this,'active')) { nodeDelClass(_this,'active'); nodesDelClass(menuItems,'active'); hideMenu(); } else { nodeAddClass(_this,'active'); showMenu(); } }; for(var i=0;i<menuBtn.length;i++) {menuBtn[i].onclick = function(){clickButton(this);};} // click on menu function clickItem(_this) { if(window.innerWidth < 982) { var _par = _this.parentNode; if (nodeHasClass(_par,'menu-item-wrap')) {_par=_par.parentNode;} if(nodeHasClass(_par,'active')) { nodeDelClass(_par,'active'); } else { var Siblings = _par.parentNode.childNodes; for(var i=0;i<Siblings.length;i++) { if ((Siblings[i].nodeType!=1)||(Siblings[i]==_par)) continue; nodeDelClass(Siblings[i],'active'); } nodeAddClass(_par,'active'); } } }; for(var i=0;i<menuTitle.length;i++) {menuTitle[i].onclick = function(){clickItem(this);};} // close adaptive menu on events function closeAdaptiveMenu() { if(nodesHasClass(menuBtn,'active')) { hideMenu(); nodesDelClass(menuBtn,'active'); } if(nodesHasClass(menuItems,'active')) { nodesDelClass(menuItems,'active'); } } // click outside adaptive menu if (document.addEventListener) { document.addEventListener('mouseup', function(e) { if((window.innerWidth < 982) && !(menuContainer === e.target) && !hasSpecifiedChild(menuContainer,e.target) ) { closeAdaptiveMenu(); } }); } // process window resize, for off of open dropdown in case of mobile->desktop if (window.addEventListener) { window.addEventListener('resize', function() { if(window.innerWidth > 982) {closeAdaptiveMenu();} }); }; } } onMenuInit(); </script> <script type="text/javascript" charset="utf-8"> if (typeof onImgBigShowInit !== 'undefined') {onImgBigShowInit();} if (typeof onArticlesInit !== 'undefined') {onArticlesInit();} if (typeof onReviewsInit !== 'undefined') {onReviewsInit();} if (typeof onOsTabsInit !== 'undefined') {onOsTabsInit();} </script> <div id="pp-info"> <ul> <li> We use cookies to ensure you get the best experience on our website. <a href="https://www.r-tt.com/Privacy_Policy.shtml" target="_blank">Read more</a> </li> <li> <a id="pp-done">Got It</a> </li> </ul> <img id="pp-info-0" alt="" /> <img id="pp-info-1" alt="" /> <img id="pp-info-2" alt="" /> <img id="pp-info-3" alt="" /> <img id="pp-info-4" alt="" /> <img id="pp-info-5" alt="" /> </div> <script type="text/javascript" charset="utf-8"> function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i <ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function pingCookie(strId,aDomains,strGif) { for(i=0;i<aDomains.length;i++) { var strImgId=strId+"-"+i; document.getElementById(strImgId).src=aDomains[i]+strGif; document.getElementById(strImgId).style.display = ""; } } </script><script type="text/javascript" charset="utf-8"> var strPpCookie="r_pp_v1"; var strPpDoneGif="r_pp_v1_ji8s9nde.gif"; var aPpDomains=["https://secure.r-tt.com/","https://www.r-tt.com/","https://www.r-studio.com/","https://www.r-undelete.com/","https://www.r-wipe.com/","https://www.drive-image.com/"]; function onPpInfoDone() { document.getElementById("pp-info").style.display = "none"; setCookie(strPpCookie,"1",3650); pingCookie("pp-info",aPpDomains,strPpDoneGif); } function onPpInfoShow() { var pp_cookie = getCookie(strPpCookie); if (pp_cookie == "") {document.getElementById("pp-info").style.display = "block";} } document.getElementById("pp-done").onclick = onPpInfoDone; setTimeout(function(){onPpInfoShow();},1500); </script> <script type="text/javascript" charset="utf-8"> var strSeCookie="r_se_v1"; var strSeDoneGif="r_se_v1_ji8s9nde.gif"; var aSeDomains=["https://www.r-tt.com/","https://www.r-studio.com/","https://www.r-undelete.com/","https://www.r-wipe.com/","https://www.drive-image.com/"]; function onEventInfoDone() { nodeDelClass(document.getElementById("hdr-wrapper"),"special-event") setCookie(strSeCookie,"1",12); pingCookie("pp-info",aSeDomains,stSepDoneGif); } function onEventInfoShow() { var se_cookie = getCookie(strSeCookie); if (se_cookie == "") {nodeAddClass(document.getElementById("hdr-wrapper"),"special-event");} } if (document.getElementById("event-done")) { var iSecurePos=window.location.href.indexOf("secure."); if (iSecurePos<0) { document.getElementById("event-done").onclick = onEventInfoDone; setTimeout(function(){onEventInfoShow();},1000); } } </script> <script type="text/javascript" charset="utf-8"> function formCustomCheckForm(Form) { var iFilled=0,iCards=0;var bFormValid=false; var Elems=Form.elements; for(var p=0;p<2;p++) { if (p==1) { bFormValid=((iFilled+((iCards>=2)?1:0))>=3)?true:false; } for(var j=0;j<Elems.length;j++) { if (!fphIsInput(Elems[j])) continue; var strValue=strTrim(formGetVal(Elems[j])); var bFieldValid=(strValue!="")?true:false; var bIsCard=(Elems[j].name) && (Elems[j].name.slice(0,9)=="CARD_ACCT"); if ((bFieldValid)&&(bIsCard)&&(!isValidDigits(strValue))) bFieldValid=false; if ((bFieldValid)&&(Elems[j].name)&&(Elems[j].name.indexOf("EMAIL")>=0)&&(!isValidEmail(strValue))) bFieldValid=false; if ((p==0)&&(bFieldValid)) { if (bIsCard) {iCards++;} else {iFilled++;} } if (p==1) { if ((bFieldValid)&&(bIsCard)&&(iCards<2)) bFieldValid=false; formSetInputValidity(Elems[j],(strValue=="")||bFieldValid); } } } return bFormValid; } </script> <script type="text/javascript" charset="utf-8"> // Generic forms, aFormChecks prefixes: %:digits, #:phone, *:name, @:email, ~:optional email function isValidDigits(str) { var dig_pattern = /^\s*\d+\s*$/; return dig_pattern.test(str); } function isValidPhone(str) { var strPhone=str.replace(/\D/gm,''); return (strPhone.length>=5)?true:false; } function isLatinOnly(str) { var non_lating = /[^\u0020-\u007f]/; return !non_lating.test(str); } function isValidEmail(email) { var bAt=false, bDot=false; var e=strTrim(email); for (var pos = 0;pos<e.length;pos++) { var c=e.charAt(pos); if (c<=' ') return false; if ((c=='@')&&(bAt)) return false; if (c=='@') bAt = true; if (c=='.') bDot = true; } return bAt && bDot; } function formGetVal(E) { var strVal=E.value; if ((E.type=='checkbox')||(E.type=='radio')) { if (!E.checked) strVal=""; } else { if (strVal == E.getAttribute("js_placeholder")) return ""; } return strVal; } function formIsValidInput(E,Kind) { var strVal=formGetVal(E); if (Kind == "opt_email") {return ((strVal == "")||isValidEmail(strVal))?true:false;} if (strVal == "") return false; if ( (Kind == "email") && (!isValidEmail(strVal)) ) return false; if ( (Kind == "latin") && (!isLatinOnly(strVal)) ) return false; if ( (Kind == "phone") && (!isValidPhone(strVal)) ) return false; if ( (Kind == "digits") && (!isValidDigits(strVal)) ) return false; return true; } function formSetInputValidity(Elem,IsValid) { var E=Elem; if (E.parentNode && nodeHasClass(E.parentNode,"form-round-wrong")) { E=E.parentNode; } else { var P=E.parentNode; for(var i=0;i<4;i++) { if (!P) break; if (P.tagName.slice(0,1)!="T") break; if ((P.tagName=="TABLE") && nodeHasClass(P,"form-table-row")) {E=P;break;} P=P.parentNode } } if (IsValid) { nodeDelClass(E,"form-wrong"); } else { nodeAddClass(E,"form-wrong"); } return IsValid; } function formFillByUri() { var query = location.search.substr(1).split("&"); for(var i=0;i<query.length;i++) { var item = query[i].split("="); item[1] = decodeURIComponent(item[1]); var elem = document.getElementById(item[0]); if (elem) { if (elem.options) { for(var j=0;j<elem.options.length;j++) { var opt=elem.options[j];if (!opt) continue; if (!(item[1].toUpperCase() === opt.value.toUpperCase())) continue; elem.value=opt.value; break; } } else { elem.value=item[1]; } } } } function onSubmitForm(Form) { var bFormValid=true;bFormWrongName=false;var aSubmitBtns=[]; var Elems=Form.elements; for(var j=0;j<Elems.length;j++) { if (typeof aFormChecks !== 'undefined') { for(var i=0;i<aFormChecks.length;i++) { var strChkName=aFormChecks[i];var strChkKind=""; if (strChkName.substr(0,1)=='%') {strChkName=strChkName.slice(1);strChkKind="digits";} if (strChkName.substr(0,1)=='#') {strChkName=strChkName.slice(1);strChkKind="phone";} if (strChkName.substr(0,1)=='*') {strChkName=strChkName.slice(1);strChkKind="latin";} if (strChkName.substr(0,1)=='@') {strChkName=strChkName.slice(1);strChkKind="email";} if (strChkName.substr(0,1)=='~') {strChkName=strChkName.slice(1);strChkKind="opt_email";} if (Elems[j].name==strChkName) { if (!formSetInputValidity(Elems[j],formIsValidInput(Elems[j],strChkKind))) { bFormValid=false; if (strChkKind=="latin") bFormWrongName=true; } break; } } } if (typeof formCustomCheckInput !== 'undefined') { if (!formCustomCheckInput(Elems[j])) bFormValid=false; } if (Elems[j].name=='WordVerify') { if (Elems[j].value == "") { bFormValid=false; formSetInputValidity(Elems[j],false); } else { formSetInputValidity(Elems[j],true); } } if ((Elems[j].tagName=='INPUT')&&(Elems[j].type=='submit')) { aSubmitBtns.push(Elems[j]); } } if (typeof formCustomCheckForm !== 'undefined') { if (!formCustomCheckForm(Form)) bFormValid=false; } if (bFormValid) { nodeDelClass(Form,"form-wrong"); nodesDelClass(aSubmitBtns,"form-wrong"); var SubmitCheck=document.getElementById('#FormWasAlreadySubmited'); if (SubmitCheck) {SubmitCheck.value=new Date().getTime();} for(var j=0;j<Elems.length;j++) { if ((Elems[j].value != "")&&(Elems[j].value == Elems[j].getAttribute("js_placeholder"))) {Elems[j].value="";} } } else { nodeAddClass(Form,"form-wrong"); for(var j=0;j<aSubmitBtns.length;j++) { if (nodeHasClass(aSubmitBtns[j],"form-wrong")) { var newSubmitBtn = aSubmitBtns[j].cloneNode(true); aSubmitBtns[j]=aSubmitBtns[j].parentNode.replaceChild(newSubmitBtn,aSubmitBtns[j]); } else { nodeAddClass(aSubmitBtns[j],"form-wrong"); } } } if (bFormWrongName) { nodeAddClass(Form,"form-wrong-name"); } else { nodeDelClass(Form,"form-wrong-name"); } return bFormValid; } // Word verification function onRefreshCaptcha() { var Img=document.getElementById('WordVerifyImg');if (!Img) return; Img.setAttribute('src','/scripts/cgen?'+new Date().getTime()); } function onFormInit() { var SubmitCheck=document.getElementById('#FormWasAlreadySubmited');if (!SubmitCheck) return; if (SubmitCheck.value != "") { SubmitCheck.value=''; onRefreshCaptcha(); } } // Floating placeholders function fphIsInput(E) { if (!E) return false; return ( ((E.tagName=='INPUT')&&(E.type=='text')) || ((E.tagName=='INPUT')&&(E.type=='password')) || ((E.tagName=='INPUT')&&(E.type=='email')) || (E.tagName=='TEXTAREA') ); } function fphGetLabel(E) { while((E)&&(E.tagName!='LABEL')) E=E.nextSibling; return E; } function onFphChange(E) { var Lbl=fphGetLabel(E);if (!Lbl) return; var IsPlaceholder = (formGetVal(E) == ""); if ( (E === document.activeElement) || (!IsPlaceholder) ) { if (IsPlaceholder) {E.value="";E.setAttribute("js_placeholder","");nodeDelClass(E,"js_placeholder");} Lbl.innerText=Lbl.getAttribute("value"); Lbl.className=(E === document.activeElement)?"js_focus":""; Lbl.style.display = "block"; } else { Lbl.style.display = "none"; if (IsPlaceholder) { var strPlaceholder; if (nodeHasClass(E,"form-wrong")) {strPlaceholder=Lbl.getAttribute("alt");} if ((!strPlaceholder)||(strPlaceholder=="")) {strPlaceholder=Lbl.getAttribute("placeholder");} if ((!strPlaceholder)||(strPlaceholder=="")) {strPlaceholder=Lbl.getAttribute("value");} if (!strPlaceholder) {strPlaceholder="";} E.value=strPlaceholder; E.setAttribute("js_placeholder",strPlaceholder); nodeAddClass(E,"js_placeholder"); } else { E.setAttribute("js_placeholder",""); nodeDelClass(E,"js_placeholder"); } } } function onFphChangeThis() { onFphChange(this); } function onFphInitNode(Node) { if (!Node) return; nodeAddClass(Node,"fph-js"); var aChildren = Node.childNodes; for(var j=0;j<aChildren.length;j++) { if (fphIsInput(aChildren[j])) { onFphChange(aChildren[j]); if (aChildren[j].addEventListener) { aChildren[j].addEventListener('focus',onFphChangeThis,true); aChildren[j].addEventListener('blur',onFphChangeThis,true); aChildren[j].oninput = onFphChangeThis; } else { aChildren[j].onfocusin = onFphChangeThis; aChildren[j].onfocusout = onFphChangeThis; aChildren[j].oncut = aChildren[j].oncopy = aChildren[j].onpaste = aChildren[j].onkeyup = onFphChangeThis; } } } } function onFphInit() { var bHaveNativeFph=false; try { var aSelectors=['.fph input:invalid','.fph input:valid','.fph textarea:invalid','.fph textarea:valid']; if (document.querySelector('.fph')) for(var i=0;i<aSelectors.length;i++) { if (!document.querySelector(aSelectors[i])) continue; bHaveNativeFph=true;break; } } catch(e) {} if (!bHaveNativeFph) { //if (true) { var aFph=nodeFindChildren(document,'.fph'); for(var i=0;i<aFph.length;i++) { onFphInitNode(aFph[i]); } } } // Main execution onFphInit(); onFormInit(); </script> </body></html>