function printDiv(eh)
{
var divToPrint=document.getElementById(eh);
var newWin=window.open('','Print-Window');
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">'+divToPrint.innerHTML+'</body></html>');
newWin.document.close();
setTimeout(function(){newWin.close();},10);
}
(function(c, l, a, r, i, t, y) {
c[a] = c[a] || function() {
(c[a].q = c[a].q || []).push(arguments)
};
t = l.createElement(r);
t.async = 1;
t.src = "https://www.clarity.ms/tag/" + i + "?ref=wordpress";
y = l.getElementsByTagName(r)[0];
y.parentNode.insertBefore(t, y);
})(window, document, "clarity", "script", "uguy8v1u4s");
var ajaxurl = 'https://www.ampmlock.com/wp-admin/admin-ajax.php';
/*! LoadCSS. [c]2020 Filament Group, Inc. MIT License */
/* This file is meant as a standalone workflow for
- testing support for link[rel=preload]
- enabling async CSS loading in browsers that do not support rel=preload
- applying rel preload css once loaded, whether supported or not.
*/
(function(w){"use strict";var wpacuLoadCSS=function(href,before,media,attributes){var doc=w.document;var ss=doc.createElement('link');var ref;if(before){ref=before}else{var refs=(doc.body||doc.getElementsByTagName('head')[0]).childNodes;ref=refs[refs.length-1]}
var sheets=doc.styleSheets;if(attributes){for(var attributeName in attributes){if(attributes.hasOwnProperty(attributeName)){ss.setAttribute(attributeName,attributes[attributeName])}}}
ss.rel="stylesheet";ss.href=href;ss.media="only x";function ready(cb){if(doc.body){return cb()}
setTimeout(function(){ready(cb)})}
ready(function(){ref.parentNode.insertBefore(ss,(before?ref:ref.nextSibling))});var onwpaculoadcssdefined=function(cb){var resolvedHref=ss.href;var i=sheets.length;while(i--){if(sheets[i].href===resolvedHref){return cb()}}
setTimeout(function(){onwpaculoadcssdefined(cb)})};function wpacuLoadCB(){if(ss.addEventListener){ss.removeEventListener("load",wpacuLoadCB)}
ss.media=media||"all"}
if(ss.addEventListener){ss.addEventListener("load",wpacuLoadCB)}
ss.onwpaculoadcssdefined=onwpaculoadcssdefined;onwpaculoadcssdefined(wpacuLoadCB);return ss};if(typeof exports!=="undefined"){exports.wpacuLoadCSS=wpacuLoadCSS}else{w.wpacuLoadCSS=wpacuLoadCSS}}(typeof global!=="undefined"?global:this))
We offer a wide array of door lock products and services for all types of doors and levels of security. We can install any type of lock you need even if it requires editing the door/ frame itself. We also provide repair and re-key services for all locks we install.
Choosing The Right Lock Is Important
Aside from doors, locks and hardware are the first line of defense when it comes to security. Choosing the right lock for your door and security needs is very important for the safety of your family or business. With so many different types of locks, it’s not easy to come up with the best solution for your particular needs or situation.
We’ll sit down with you, answer all your questions and then install a lock of your liking that matches your security need and work with the door. We carry our locks with our trucks and can install it right away. We are a registered, high security Mul-T-Lock dealer. We also work closely with Kwikset, Medeco, Schlage, Ademco, Von Duprin, and many others.
The types of locks we carry & service include
Deadbolts
Deadlocks
Door Knobs
Lever Handles
Panic Devices
Exit Devices
High Security locks
Dead Latch
Mortise Locksets
Storm/Security Door Locks
Kwikset Brand Locks
Schlage Brand Locks
Combination Locks
Pincode Locks
Kaba Simplex Locks
Mul-T-Lock
High Security Locks
We install, repair, re-key, and service high security locks with special keyways that make them more secure than normal locks. With large influx of “Bump Keys” coming into the world of criminal activity, more and more people are switching to high security locks that are much more difficult to pick or bump. Watch the video below about bump keys, it shows how easy it is to acquire them, break into houses, and even re-lock your locks like they were never there.
Kwikset makes a line of locks that are “bump resistant” and provide middle of the line security which is usually enough for most homes. However, for extra security the best thing you can do is spend a little extra money on high security locks. Mul-T-Lock is our favorite and our go-to for high security. We trust it so much that we put it on the front of our shop.
Why We Recommend High Security Door Locks
You will be surprised to find out how fast someone can open an ordinary door lock. This video shows the simple technique used by criminals to bypass your store bought door lock.
Common Door Locks
Deadbolts
Deadbolt locks are the most common lock for doors around. A dead bolt is a locking mechanism that can only be moved to the open position except by rotating the lock cylindermaking a door more resistant to entry without the correct key.
Deadlocks
Deadlocks have a single bolt that secures into the door and offer even more strength than deadbolts. Deadlocks offer exceptional security and are specified by many insurance companies. Some nightlatches have a deadlocked function that adds extra security to the locking mechanism after the key has been rotated for a second time.
Electronic Locks
Electronic Locks take away the lost key issues of regular locks without the security flaws of normal combination locks. With a screen that provides the convenience of going keyless. The fingerprint-resistant touch screen ensures numbers won’t be detectable to intruders after repeated use.
Door Chain
A fitment that restricts the door to being partially opened in order to identify people before opening the door. Can be either an integral part of the lock mechanism or surface mounted on the inner face of the door. If the locks on the door are compromised, a door chain may cause some delay, draw more attention, or leave more evidence of force being used when gaining unauthorized access to the structure.
(function( w ){
"use strict";
// rel=preload support test
if( !w.loadCSS ){
w.loadCSS = function(){};
}
// define on the loadCSS obj
var rp = loadCSS.relpreload = {};
// rel=preload feature support test
// runs once and returns a function for compat purposes
rp.support = (function(){
var ret;
try {
ret = w.document.createElement( "link" ).relList.supports( "preload" );
} catch (e) {
ret = false;
}
return function(){
return ret;
};
})();
// if preload isn't supported, get an asynchronous load by using a non-matching media attribute
// then change that media back to its intended value on load
rp.bindMediaToggle = function( link ){
// remember existing media attr for ultimate state, or default to 'all'
var finalMedia = link.media || "all";
function enableStylesheet(){
// unbind listeners
if( link.addEventListener ){
link.removeEventListener( "load", enableStylesheet );
} else if( link.attachEvent ){
link.detachEvent( "onload", enableStylesheet );
}
link.setAttribute( "onload", null );
link.media = finalMedia;
}
// bind load handlers to enable media
if( link.addEventListener ){
link.addEventListener( "load", enableStylesheet );
} else if( link.attachEvent ){
link.attachEvent( "onload", enableStylesheet );
}
// Set rel and non-applicable media type to start an async request
// note: timeout allows this to happen async to let rendering continue in IE
setTimeout(function(){
link.rel = "stylesheet";
link.media = "only x";
});
// also enable media after 3 seconds,
// which will catch very old browsers (android 2.x, old firefox) that don't support onload on link
setTimeout( enableStylesheet, 3000 );
};
// loop through link elements in DOM
rp.poly = function(){
// double check this to prevent external calls from running
if( rp.support() ){
return;
}
var links = w.document.getElementsByTagName( "link" );
for( var i = 0; i < links.length; i++ ){
var link = links[ i ];
// qualify links to those with rel=preload and as=style attrs
if( link.rel === "preload" && link.getAttribute( "as" ) === "style" && !link.getAttribute( "data-loadcss" ) ){
// prevent rerunning on link
link.setAttribute( "data-loadcss", true );
// bind listeners to toggle media back
rp.bindMediaToggle( link );
}
}
};
// if unsupported, run the polyfill
if( !rp.support() ){
// run once at least
rp.poly();
// rerun poly on an interval until onload
var run = w.setInterval( rp.poly, 500 );
if( w.addEventListener ){
w.addEventListener( "load", function(){
rp.poly();
w.clearInterval( run );
} );
} else if( w.attachEvent ){
w.attachEvent( "onload", function(){
rp.poly();
w.clearInterval( run );
} );
}
}
// commonjs
if( typeof exports !== "undefined" ){
exports.loadCSS = loadCSS;
}
else {
w.loadCSS = loadCSS;
}
}( typeof global !== "undefined" ? global : this ) );